Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
陈曦
sub2api
Commits
942c3e15
Commit
942c3e15
authored
Dec 29, 2025
by
song
Browse files
Merge branch 'main' into feature/antigravity_auth_image
parents
caa8c47b
c328b741
Changes
39
Show whitespace changes
Inline
Side-by-side
backend/.golangci.yml
View file @
942c3e15
...
...
@@ -600,8 +600,3 @@ formatters:
replacement
:
'
any'
-
pattern
:
'
a[b:len(a)]'
replacement
:
'
a[b:]'
exclusions
:
paths
:
-
internal/pkg/antigravity/claude_types.go
-
internal/pkg/antigravity/gemini_types.go
-
internal/pkg/antigravity/stream_transformer.go
\ No newline at end of file
backend/internal/pkg/antigravity/claude_types.go
View file @
942c3e15
backend/internal/pkg/antigravity/gemini_types.go
View file @
942c3e15
backend/internal/pkg/antigravity/stream_transformer.go
View file @
942c3e15
...
...
@@ -135,18 +135,18 @@ func (p *StreamingProcessor) emitMessageStart(v1Resp *V1InternalResponse) []byte
responseID
=
"msg_"
+
generateRandomID
()
}
message
:=
map
[
string
]
interface
{}
{
message
:=
map
[
string
]
any
{
"id"
:
responseID
,
"type"
:
"message"
,
"role"
:
"assistant"
,
"content"
:
[]
interface
{}
{},
"content"
:
[]
any
{},
"model"
:
p
.
originalModel
,
"stop_reason"
:
nil
,
"stop_sequence"
:
nil
,
"usage"
:
usage
,
}
event
:=
map
[
string
]
interface
{}
{
event
:=
map
[
string
]
any
{
"type"
:
"message_start"
,
"message"
:
message
,
}
...
...
@@ -205,14 +205,14 @@ func (p *StreamingProcessor) processThinking(text, signature string) []byte {
// 开始或继续 thinking 块
if
p
.
blockType
!=
BlockTypeThinking
{
_
,
_
=
result
.
Write
(
p
.
startBlock
(
BlockTypeThinking
,
map
[
string
]
interface
{}
{
_
,
_
=
result
.
Write
(
p
.
startBlock
(
BlockTypeThinking
,
map
[
string
]
any
{
"type"
:
"thinking"
,
"thinking"
:
""
,
}))
}
if
text
!=
""
{
_
,
_
=
result
.
Write
(
p
.
emitDelta
(
"thinking_delta"
,
map
[
string
]
interface
{}
{
_
,
_
=
result
.
Write
(
p
.
emitDelta
(
"thinking_delta"
,
map
[
string
]
any
{
"thinking"
:
text
,
}))
}
...
...
@@ -246,11 +246,11 @@ func (p *StreamingProcessor) processText(text, signature string) []byte {
// 非空 text 带签名 - 特殊处理
if
signature
!=
""
{
_
,
_
=
result
.
Write
(
p
.
startBlock
(
BlockTypeText
,
map
[
string
]
interface
{}
{
_
,
_
=
result
.
Write
(
p
.
startBlock
(
BlockTypeText
,
map
[
string
]
any
{
"type"
:
"text"
,
"text"
:
""
,
}))
_
,
_
=
result
.
Write
(
p
.
emitDelta
(
"text_delta"
,
map
[
string
]
interface
{}
{
_
,
_
=
result
.
Write
(
p
.
emitDelta
(
"text_delta"
,
map
[
string
]
any
{
"text"
:
text
,
}))
_
,
_
=
result
.
Write
(
p
.
endBlock
())
...
...
@@ -260,13 +260,13 @@ func (p *StreamingProcessor) processText(text, signature string) []byte {
// 普通 text (无签名)
if
p
.
blockType
!=
BlockTypeText
{
_
,
_
=
result
.
Write
(
p
.
startBlock
(
BlockTypeText
,
map
[
string
]
interface
{}
{
_
,
_
=
result
.
Write
(
p
.
startBlock
(
BlockTypeText
,
map
[
string
]
any
{
"type"
:
"text"
,
"text"
:
""
,
}))
}
_
,
_
=
result
.
Write
(
p
.
emitDelta
(
"text_delta"
,
map
[
string
]
interface
{}
{
_
,
_
=
result
.
Write
(
p
.
emitDelta
(
"text_delta"
,
map
[
string
]
any
{
"text"
:
text
,
}))
...
...
@@ -284,11 +284,11 @@ func (p *StreamingProcessor) processFunctionCall(fc *GeminiFunctionCall, signatu
toolID
=
fmt
.
Sprintf
(
"%s-%s"
,
fc
.
Name
,
generateRandomID
())
}
toolUse
:=
map
[
string
]
interface
{}
{
toolUse
:=
map
[
string
]
any
{
"type"
:
"tool_use"
,
"id"
:
toolID
,
"name"
:
fc
.
Name
,
"input"
:
map
[
string
]
interface
{}{},
// 必须为空,参数通过 delta 发送
"input"
:
map
[
string
]
any
{},
}
if
signature
!=
""
{
...
...
@@ -300,7 +300,7 @@ func (p *StreamingProcessor) processFunctionCall(fc *GeminiFunctionCall, signatu
// 发送 input_json_delta
if
fc
.
Args
!=
nil
{
argsJSON
,
_
:=
json
.
Marshal
(
fc
.
Args
)
_
,
_
=
result
.
Write
(
p
.
emitDelta
(
"input_json_delta"
,
map
[
string
]
interface
{}
{
_
,
_
=
result
.
Write
(
p
.
emitDelta
(
"input_json_delta"
,
map
[
string
]
any
{
"partial_json"
:
string
(
argsJSON
),
}))
}
...
...
@@ -311,14 +311,14 @@ func (p *StreamingProcessor) processFunctionCall(fc *GeminiFunctionCall, signatu
}
// startBlock 开始新的内容块
func
(
p
*
StreamingProcessor
)
startBlock
(
blockType
BlockType
,
contentBlock
map
[
string
]
interface
{}
)
[]
byte
{
func
(
p
*
StreamingProcessor
)
startBlock
(
blockType
BlockType
,
contentBlock
map
[
string
]
any
)
[]
byte
{
var
result
bytes
.
Buffer
if
p
.
blockType
!=
BlockTypeNone
{
_
,
_
=
result
.
Write
(
p
.
endBlock
())
}
event
:=
map
[
string
]
interface
{}
{
event
:=
map
[
string
]
any
{
"type"
:
"content_block_start"
,
"index"
:
p
.
blockIndex
,
"content_block"
:
contentBlock
,
...
...
@@ -340,13 +340,13 @@ func (p *StreamingProcessor) endBlock() []byte {
// Thinking 块结束时发送暂存的签名
if
p
.
blockType
==
BlockTypeThinking
&&
p
.
pendingSignature
!=
""
{
_
,
_
=
result
.
Write
(
p
.
emitDelta
(
"signature_delta"
,
map
[
string
]
interface
{}
{
_
,
_
=
result
.
Write
(
p
.
emitDelta
(
"signature_delta"
,
map
[
string
]
any
{
"signature"
:
p
.
pendingSignature
,
}))
p
.
pendingSignature
=
""
}
event
:=
map
[
string
]
interface
{}
{
event
:=
map
[
string
]
any
{
"type"
:
"content_block_stop"
,
"index"
:
p
.
blockIndex
,
}
...
...
@@ -360,15 +360,15 @@ func (p *StreamingProcessor) endBlock() []byte {
}
// emitDelta 发送 delta 事件
func
(
p
*
StreamingProcessor
)
emitDelta
(
deltaType
string
,
deltaContent
map
[
string
]
interface
{}
)
[]
byte
{
delta
:=
map
[
string
]
interface
{}
{
func
(
p
*
StreamingProcessor
)
emitDelta
(
deltaType
string
,
deltaContent
map
[
string
]
any
)
[]
byte
{
delta
:=
map
[
string
]
any
{
"type"
:
deltaType
,
}
for
k
,
v
:=
range
deltaContent
{
delta
[
k
]
=
v
}
event
:=
map
[
string
]
interface
{}
{
event
:=
map
[
string
]
any
{
"type"
:
"content_block_delta"
,
"index"
:
p
.
blockIndex
,
"delta"
:
delta
,
...
...
@@ -381,14 +381,14 @@ func (p *StreamingProcessor) emitDelta(deltaType string, deltaContent map[string
func
(
p
*
StreamingProcessor
)
emitEmptyThinkingWithSignature
(
signature
string
)
[]
byte
{
var
result
bytes
.
Buffer
_
,
_
=
result
.
Write
(
p
.
startBlock
(
BlockTypeThinking
,
map
[
string
]
interface
{}
{
_
,
_
=
result
.
Write
(
p
.
startBlock
(
BlockTypeThinking
,
map
[
string
]
any
{
"type"
:
"thinking"
,
"thinking"
:
""
,
}))
_
,
_
=
result
.
Write
(
p
.
emitDelta
(
"thinking_delta"
,
map
[
string
]
interface
{}
{
_
,
_
=
result
.
Write
(
p
.
emitDelta
(
"thinking_delta"
,
map
[
string
]
any
{
"thinking"
:
""
,
}))
_
,
_
=
result
.
Write
(
p
.
emitDelta
(
"signature_delta"
,
map
[
string
]
interface
{}
{
_
,
_
=
result
.
Write
(
p
.
emitDelta
(
"signature_delta"
,
map
[
string
]
any
{
"signature"
:
signature
,
}))
_
,
_
=
result
.
Write
(
p
.
endBlock
())
...
...
@@ -422,9 +422,9 @@ func (p *StreamingProcessor) emitFinish(finishReason string) []byte {
OutputTokens
:
p
.
outputTokens
,
}
deltaEvent
:=
map
[
string
]
interface
{}
{
deltaEvent
:=
map
[
string
]
any
{
"type"
:
"message_delta"
,
"delta"
:
map
[
string
]
interface
{}
{
"delta"
:
map
[
string
]
any
{
"stop_reason"
:
stopReason
,
"stop_sequence"
:
nil
,
},
...
...
@@ -434,7 +434,7 @@ func (p *StreamingProcessor) emitFinish(finishReason string) []byte {
_
,
_
=
result
.
Write
(
p
.
formatSSE
(
"message_delta"
,
deltaEvent
))
if
!
p
.
messageStopSent
{
stopEvent
:=
map
[
string
]
interface
{}
{
stopEvent
:=
map
[
string
]
any
{
"type"
:
"message_stop"
,
}
_
,
_
=
result
.
Write
(
p
.
formatSSE
(
"message_stop"
,
stopEvent
))
...
...
@@ -445,7 +445,7 @@ func (p *StreamingProcessor) emitFinish(finishReason string) []byte {
}
// formatSSE 格式化 SSE 事件
func
(
p
*
StreamingProcessor
)
formatSSE
(
eventType
string
,
data
interface
{}
)
[]
byte
{
func
(
p
*
StreamingProcessor
)
formatSSE
(
eventType
string
,
data
any
)
[]
byte
{
jsonData
,
err
:=
json
.
Marshal
(
data
)
if
err
!=
nil
{
return
nil
...
...
backend/internal/repository/account_repo.go
View file @
942c3e15
...
...
@@ -186,7 +186,7 @@ func (r *accountRepository) BatchUpdateLastUsed(ctx context.Context, updates map
ids
=
append
(
ids
,
id
)
}
caseSql
+=
" END WHERE id IN ?"
caseSql
+=
" END WHERE id IN ?
AND deleted_at IS NULL
"
args
=
append
(
args
,
ids
)
return
r
.
db
.
WithContext
(
ctx
)
.
Exec
(
caseSql
,
args
...
)
.
Error
...
...
backend/internal/repository/proxy_repo.go
View file @
942c3e15
...
...
@@ -119,6 +119,7 @@ func (r *proxyRepository) CountAccountsByProxyID(ctx context.Context, proxyID in
var
count
int64
err
:=
r
.
db
.
WithContext
(
ctx
)
.
Table
(
"accounts"
)
.
Where
(
"proxy_id = ?"
,
proxyID
)
.
Where
(
"deleted_at IS NULL"
)
.
Count
(
&
count
)
.
Error
return
count
,
err
}
...
...
@@ -134,6 +135,7 @@ func (r *proxyRepository) GetAccountCountsForProxies(ctx context.Context) (map[i
Table
(
"accounts"
)
.
Select
(
"proxy_id, COUNT(*) as count"
)
.
Where
(
"proxy_id IS NOT NULL"
)
.
Where
(
"deleted_at IS NULL"
)
.
Group
(
"proxy_id"
)
.
Scan
(
&
results
)
.
Error
if
err
!=
nil
{
...
...
backend/internal/repository/usage_log_repo.go
View file @
942c3e15
...
...
@@ -182,6 +182,7 @@ func (r *usageLogRepository) GetDashboardStats(ctx context.Context) (*DashboardS
COUNT(CASE WHEN rate_limited_at IS NOT NULL AND rate_limit_reset_at > ? THEN 1 END) as ratelimit_accounts,
COUNT(CASE WHEN overload_until IS NOT NULL AND overload_until > ? THEN 1 END) as overload_accounts
FROM accounts
WHERE deleted_at IS NULL
`
,
service
.
StatusActive
,
service
.
StatusError
,
now
,
now
)
.
Scan
(
&
accountStats
)
.
Error
;
err
!=
nil
{
return
nil
,
err
}
...
...
backend/internal/service/gateway_multiplatform_test.go
View file @
942c3e15
backend/internal/service/gemini_multiplatform_test.go
View file @
942c3e15
...
...
@@ -56,7 +56,9 @@ func (m *mockAccountRepoForGemini) ListWithFilters(ctx context.Context, params p
func
(
m
*
mockAccountRepoForGemini
)
ListByGroup
(
ctx
context
.
Context
,
groupID
int64
)
([]
Account
,
error
)
{
return
nil
,
nil
}
func
(
m
*
mockAccountRepoForGemini
)
ListActive
(
ctx
context
.
Context
)
([]
Account
,
error
)
{
return
nil
,
nil
}
func
(
m
*
mockAccountRepoForGemini
)
ListActive
(
ctx
context
.
Context
)
([]
Account
,
error
)
{
return
nil
,
nil
}
func
(
m
*
mockAccountRepoForGemini
)
ListByPlatform
(
ctx
context
.
Context
,
platform
string
)
([]
Account
,
error
)
{
return
nil
,
nil
}
...
...
frontend/package-lock.json
View file @
942c3e15
...
...
@@ -11,13 +11,17 @@
"@vueuse/core"
:
"^10.7.0"
,
"axios"
:
"^1.6.2"
,
"chart.js"
:
"^4.4.1"
,
"driver.js"
:
"^1.4.0"
,
"file-saver"
:
"^2.0.5"
,
"pinia"
:
"^2.1.7"
,
"vue"
:
"^3.4.0"
,
"vue-chartjs"
:
"^5.3.0"
,
"vue-i18n"
:
"^9.14.5"
,
"vue-router"
:
"^4.2.5"
"vue-router"
:
"^4.2.5"
,
"xlsx"
:
"^0.18.5"
},
"devDependencies"
:
{
"@types/file-saver"
:
"^2.0.7"
,
"@types/node"
:
"^20.10.5"
,
"@vitejs/plugin-vue"
:
"^5.2.3"
,
"autoprefixer"
:
"^10.4.16"
,
...
...
@@ -494,180 +498,6 @@
"node"
:
">=12"
}
},
"node_modules/@eslint-community/eslint-utils"
:
{
"version"
:
"4.9.0"
,
"resolved"
:
"https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz"
,
"integrity"
:
"sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"dependencies"
:
{
"eslint-visitor-keys"
:
"^3.4.3"
},
"engines"
:
{
"node"
:
"^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding"
:
{
"url"
:
"https://opencollective.com/eslint"
},
"peerDependencies"
:
{
"eslint"
:
"^6.0.0 || ^7.0.0 || >=8.0.0"
}
},
"node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys"
:
{
"version"
:
"3.4.3"
,
"resolved"
:
"https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz"
,
"integrity"
:
"sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="
,
"dev"
:
true
,
"license"
:
"Apache-2.0"
,
"optional"
:
true
,
"engines"
:
{
"node"
:
"^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding"
:
{
"url"
:
"https://opencollective.com/eslint"
}
},
"node_modules/@eslint-community/regexpp"
:
{
"version"
:
"4.12.2"
,
"resolved"
:
"https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz"
,
"integrity"
:
"sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"engines"
:
{
"node"
:
"^12.0.0 || ^14.0.0 || >=16.0.0"
}
},
"node_modules/@eslint/eslintrc"
:
{
"version"
:
"2.1.4"
,
"resolved"
:
"https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz"
,
"integrity"
:
"sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"dependencies"
:
{
"ajv"
:
"^6.12.4"
,
"debug"
:
"^4.3.2"
,
"espree"
:
"^9.6.0"
,
"globals"
:
"^13.19.0"
,
"ignore"
:
"^5.2.0"
,
"import-fresh"
:
"^3.2.1"
,
"js-yaml"
:
"^4.1.0"
,
"minimatch"
:
"^3.1.2"
,
"strip-json-comments"
:
"^3.1.1"
},
"engines"
:
{
"node"
:
"^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding"
:
{
"url"
:
"https://opencollective.com/eslint"
}
},
"node_modules/@eslint/eslintrc/node_modules/brace-expansion"
:
{
"version"
:
"1.1.12"
,
"resolved"
:
"https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz"
,
"integrity"
:
"sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"dependencies"
:
{
"balanced-match"
:
"^1.0.0"
,
"concat-map"
:
"0.0.1"
}
},
"node_modules/@eslint/eslintrc/node_modules/minimatch"
:
{
"version"
:
"3.1.2"
,
"resolved"
:
"https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"
,
"integrity"
:
"sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="
,
"dev"
:
true
,
"license"
:
"ISC"
,
"optional"
:
true
,
"dependencies"
:
{
"brace-expansion"
:
"^1.1.7"
},
"engines"
:
{
"node"
:
"*"
}
},
"node_modules/@eslint/js"
:
{
"version"
:
"8.57.1"
,
"resolved"
:
"https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz"
,
"integrity"
:
"sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"engines"
:
{
"node"
:
"^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
"node_modules/@humanwhocodes/config-array"
:
{
"version"
:
"0.13.0"
,
"resolved"
:
"https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz"
,
"integrity"
:
"sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw=="
,
"deprecated"
:
"Use @eslint/config-array instead"
,
"dev"
:
true
,
"license"
:
"Apache-2.0"
,
"optional"
:
true
,
"dependencies"
:
{
"@humanwhocodes/object-schema"
:
"^2.0.3"
,
"debug"
:
"^4.3.1"
,
"minimatch"
:
"^3.0.5"
},
"engines"
:
{
"node"
:
">=10.10.0"
}
},
"node_modules/@humanwhocodes/config-array/node_modules/brace-expansion"
:
{
"version"
:
"1.1.12"
,
"resolved"
:
"https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz"
,
"integrity"
:
"sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"dependencies"
:
{
"balanced-match"
:
"^1.0.0"
,
"concat-map"
:
"0.0.1"
}
},
"node_modules/@humanwhocodes/config-array/node_modules/minimatch"
:
{
"version"
:
"3.1.2"
,
"resolved"
:
"https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"
,
"integrity"
:
"sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="
,
"dev"
:
true
,
"license"
:
"ISC"
,
"optional"
:
true
,
"dependencies"
:
{
"brace-expansion"
:
"^1.1.7"
},
"engines"
:
{
"node"
:
"*"
}
},
"node_modules/@humanwhocodes/module-importer"
:
{
"version"
:
"1.0.1"
,
"resolved"
:
"https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz"
,
"integrity"
:
"sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA=="
,
"dev"
:
true
,
"license"
:
"Apache-2.0"
,
"optional"
:
true
,
"engines"
:
{
"node"
:
">=12.22"
},
"funding"
:
{
"type"
:
"github"
,
"url"
:
"https://github.com/sponsors/nzakas"
}
},
"node_modules/@humanwhocodes/object-schema"
:
{
"version"
:
"2.0.3"
,
"resolved"
:
"https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz"
,
"integrity"
:
"sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA=="
,
"deprecated"
:
"Use @eslint/object-schema instead"
,
"dev"
:
true
,
"license"
:
"BSD-3-Clause"
,
"optional"
:
true
},
"node_modules/@intlify/core-base"
:
{
"version"
:
"9.14.5"
,
"resolved"
:
"https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.14.5.tgz"
,
...
...
@@ -1109,13 +939,19 @@
"dev"
:
true
,
"license"
:
"MIT"
},
"node_modules/@types/file-saver"
:
{
"version"
:
"2.0.7"
,
"resolved"
:
"https://registry.npmmirror.com/@types/file-saver/-/file-saver-2.0.7.tgz"
,
"integrity"
:
"sha512-dNKVfHd/jk0SkR/exKGj2ggkB45MAkzvWCaqLUUgkyjITkGNzH8H+yUwr+BLJUBjZOe9w8X3wgmXhZDRg1ED6A=="
,
"dev"
:
true
,
"license"
:
"MIT"
},
"node_modules/@types/node"
:
{
"version"
:
"20.19.27"
,
"resolved"
:
"https://registry.npmmirror.com/@types/node/-/node-20.19.27.tgz"
,
"integrity"
:
"sha512-N2clP5pJhB2YnZJ3PIHFk5RkygRX5WO/5f0WC08tp0wd+sv0rsJk3MqWn3CbNmT2J505a5336jaQj4ph1AdMug=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"peer"
:
true
,
"dependencies"
:
{
"undici-types"
:
"~6.21.0"
}
...
...
@@ -1126,14 +962,6 @@
"integrity"
:
"sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow=="
,
"license"
:
"MIT"
},
"node_modules/@ungap/structured-clone"
:
{
"version"
:
"1.3.0"
,
"resolved"
:
"https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz"
,
"integrity"
:
"sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g=="
,
"dev"
:
true
,
"license"
:
"ISC"
,
"optional"
:
true
},
"node_modules/@vitejs/plugin-vue"
:
{
"version"
:
"5.2.4"
,
"resolved"
:
"https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-5.2.4.tgz"
,
...
...
@@ -1355,33 +1183,13 @@
"url"
:
"https://github.com/sponsors/antfu"
}
},
"node_modules/acorn-jsx"
:
{
"version"
:
"5.3.2"
,
"resolved"
:
"https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz"
,
"integrity"
:
"sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"peerDependencies"
:
{
"acorn"
:
"^6.0.0 || ^7.0.0 || ^8.0.0"
}
},
"node_modules/ajv"
:
{
"version"
:
"6.12.6"
,
"resolved"
:
"https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz"
,
"integrity"
:
"sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"dependencies"
:
{
"fast-deep-equal"
:
"^3.1.1"
,
"fast-json-stable-stringify"
:
"^2.0.0"
,
"json-schema-traverse"
:
"^0.4.1"
,
"uri-js"
:
"^4.2.2"
},
"funding"
:
{
"type"
:
"github"
,
"url"
:
"https://github.com/sponsors/epoberezkin"
"node_modules/adler-32"
:
{
"version"
:
"1.3.1"
,
"resolved"
:
"https://registry.npmmirror.com/adler-32/-/adler-32-1.3.1.tgz"
,
"integrity"
:
"sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A=="
,
"license"
:
"Apache-2.0"
,
"engines"
:
{
"node"
:
">=0.8"
}
},
"node_modules/alien-signals"
:
{
...
...
@@ -1404,23 +1212,6 @@
"url"
:
"https://github.com/chalk/ansi-regex?sponsor=1"
}
},
"node_modules/ansi-styles"
:
{
"version"
:
"4.3.0"
,
"resolved"
:
"https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz"
,
"integrity"
:
"sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"dependencies"
:
{
"color-convert"
:
"^2.0.1"
},
"engines"
:
{
"node"
:
">=8"
},
"funding"
:
{
"url"
:
"https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/any-promise"
:
{
"version"
:
"1.3.0"
,
"resolved"
:
"https://registry.npmmirror.com/any-promise/-/any-promise-1.3.0.tgz"
,
...
...
@@ -1449,14 +1240,6 @@
"dev"
:
true
,
"license"
:
"MIT"
},
"node_modules/argparse"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz"
,
"integrity"
:
"sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
,
"dev"
:
true
,
"license"
:
"Python-2.0"
,
"optional"
:
true
},
"node_modules/asynckit"
:
{
"version"
:
"0.4.0"
,
"resolved"
:
"https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz"
,
...
...
@@ -1584,7 +1367,6 @@
}
],
"license"
:
"MIT"
,
"peer"
:
true
,
"dependencies"
:
{
"baseline-browser-mapping"
:
"^2.9.0"
,
"caniuse-lite"
:
"^1.0.30001759"
,
...
...
@@ -1612,17 +1394,6 @@
"node"
:
">= 0.4"
}
},
"node_modules/callsites"
:
{
"version"
:
"3.1.0"
,
"resolved"
:
"https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz"
,
"integrity"
:
"sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"engines"
:
{
"node"
:
">=6"
}
},
"node_modules/camelcase-css"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmmirror.com/camelcase-css/-/camelcase-css-2.0.1.tgz"
,
...
...
@@ -1654,22 +1425,17 @@
],
"license"
:
"CC-BY-4.0"
},
"node_modules/chalk"
:
{
"version"
:
"4.1.2"
,
"resolved"
:
"https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
,
"integrity"
:
"sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"node_modules/cfb"
:
{
"version"
:
"1.2.2"
,
"resolved"
:
"https://registry.npmmirror.com/cfb/-/cfb-1.2.2.tgz"
,
"integrity"
:
"sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA=="
,
"license"
:
"Apache-2.0"
,
"dependencies"
:
{
"a
nsi-styles"
:
"^4.1
.0"
,
"
supports-color"
:
"^7.1
.0"
"a
dler-32"
:
"~1.3
.0"
,
"
crc-32"
:
"~1.2
.0"
},
"engines"
:
{
"node"
:
">=10"
},
"funding"
:
{
"url"
:
"https://github.com/chalk/chalk?sponsor=1"
"node"
:
">=0.8"
}
},
"node_modules/chart.js"
:
{
...
...
@@ -1677,7 +1443,6 @@
"resolved"
:
"https://registry.npmmirror.com/chart.js/-/chart.js-4.5.1.tgz"
,
"integrity"
:
"sha512-GIjfiT9dbmHRiYi6Nl2yFCq7kkwdkp1W/lp2J99rX0yo9tgJGn3lKQATztIjb5tVtevcBtIdICNWqlq5+E8/Pw=="
,
"license"
:
"MIT"
,
"peer"
:
true
,
"dependencies"
:
{
"@kurkle/color"
:
"^0.3.0"
},
...
...
@@ -1723,28 +1488,15 @@
"node"
:
">= 6"
}
},
"node_modules/color-convert"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz"
,
"integrity"
:
"sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"dependencies"
:
{
"color-name"
:
"~1.1.4"
},
"node_modules/codepage"
:
{
"version"
:
"1.15.0"
,
"resolved"
:
"https://registry.npmmirror.com/codepage/-/codepage-1.15.0.tgz"
,
"integrity"
:
"sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA=="
,
"license"
:
"Apache-2.0"
,
"engines"
:
{
"node"
:
">=
7.
0.
0
"
"node"
:
">=0.
8
"
}
},
"node_modules/color-name"
:
{
"version"
:
"1.1.4"
,
"resolved"
:
"https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
,
"integrity"
:
"sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
},
"node_modules/combined-stream"
:
{
"version"
:
"1.0.8"
,
"resolved"
:
"https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz"
,
...
...
@@ -1767,39 +1519,16 @@
"node"
:
">= 6"
}
},
"node_modules/concat-map"
:
{
"version"
:
"0.0.1"
,
"resolved"
:
"https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
,
"integrity"
:
"sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
},
"node_modules/cross-spawn"
:
{
"version"
:
"7.0.6"
,
"resolved"
:
"https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz"
,
"integrity"
:
"sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"dependencies"
:
{
"path-key"
:
"^3.1.0"
,
"shebang-command"
:
"^2.0.0"
,
"which"
:
"^2.0.1"
},
"engines"
:
{
"node"
:
">= 8"
}
"node_modules/crc-32"
:
{
"version"
:
"1.2.2"
,
"resolved"
:
"https://registry.npmmirror.com/crc-32/-/crc-32-1.2.2.tgz"
,
"integrity"
:
"sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ=="
,
"license"
:
"Apache-2.0"
,
"bin"
:
{
"crc32"
:
"bin/crc32.njs"
},
"node_modules/cross-spawn/node_modules/path-key"
:
{
"version"
:
"3.1.1"
,
"resolved"
:
"https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz"
,
"integrity"
:
"sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"engines"
:
{
"node"
:
">=8"
"node"
:
">=
0.
8"
}
},
"node_modules/cssesc"
:
{
...
...
@@ -1828,33 +1557,6 @@
"dev"
:
true
,
"license"
:
"MIT"
},
"node_modules/debug"
:
{
"version"
:
"4.4.3"
,
"resolved"
:
"https://registry.npmjs.org/debug/-/debug-4.4.3.tgz"
,
"integrity"
:
"sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"dependencies"
:
{
"ms"
:
"^2.1.3"
},
"engines"
:
{
"node"
:
">=6.0"
},
"peerDependenciesMeta"
:
{
"supports-color"
:
{
"optional"
:
true
}
}
},
"node_modules/deep-is"
:
{
"version"
:
"0.1.4"
,
"resolved"
:
"https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz"
,
"integrity"
:
"sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
},
"node_modules/delayed-stream"
:
{
"version"
:
"1.0.0"
,
"resolved"
:
"https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz"
,
...
...
@@ -1878,19 +1580,11 @@
"dev"
:
true
,
"license"
:
"MIT"
},
"node_modules/doctrine"
:
{
"version"
:
"3.0.0"
,
"resolved"
:
"https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz"
,
"integrity"
:
"sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w=="
,
"dev"
:
true
,
"license"
:
"Apache-2.0"
,
"optional"
:
true
,
"dependencies"
:
{
"esutils"
:
"^2.0.2"
},
"engines"
:
{
"node"
:
">=6.0.0"
}
"node_modules/driver.js"
:
{
"version"
:
"1.4.0"
,
"resolved"
:
"https://registry.npmmirror.com/driver.js/-/driver.js-1.4.0.tgz"
,
"integrity"
:
"sha512-Gm64jm6PmcU+si21sQhBrTAM1JvUrR0QhNmjkprNLxohOBzul9+pNHXgQaT9lW84gwg9GMLB3NZGuGolsz5uew=="
,
"license"
:
"MIT"
},
"node_modules/dunder-proto"
:
{
"version"
:
"1.0.1"
,
...
...
@@ -2019,205 +1713,58 @@
"node"
:
">=6"
}
},
"node_modules/escape-string-regexp"
:
{
"version"
:
"4.0.0"
,
"resolved"
:
"https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz"
,
"integrity"
:
"sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="
,
"node_modules/estree-walker"
:
{
"version"
:
"2.0.2"
,
"resolved"
:
"https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz"
,
"integrity"
:
"sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
,
"license"
:
"MIT"
},
"node_modules/fast-glob"
:
{
"version"
:
"3.3.3"
,
"resolved"
:
"https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.3.tgz"
,
"integrity"
:
"sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"engines"
:
{
"node"
:
">=10"
"dependencies"
:
{
"@nodelib/fs.stat"
:
"^2.0.2"
,
"@nodelib/fs.walk"
:
"^1.2.3"
,
"glob-parent"
:
"^5.1.2"
,
"merge2"
:
"^1.3.0"
,
"micromatch"
:
"^4.0.8"
},
"
funding
"
:
{
"
url"
:
"https://github.com/sponsors/sindresorhus
"
"
engines
"
:
{
"
node"
:
">=8.6.0
"
}
},
"node_modules/
eslint-scope
"
:
{
"version"
:
"
7.2
.2"
,
"resolved"
:
"https://registry.npm
js.org/eslint-scope/-/eslint-scope-7.2
.2.tgz"
,
"integrity"
:
"sha512-
dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg
=="
,
"node_modules/
fast-glob/node_modules/glob-parent
"
:
{
"version"
:
"
5.1
.2"
,
"resolved"
:
"https://registry.npm
mirror.com/glob-parent/-/glob-parent-5.1
.2.tgz"
,
"integrity"
:
"sha512-
AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow
=="
,
"dev"
:
true
,
"license"
:
"BSD-2-Clause"
,
"optional"
:
true
,
"license"
:
"ISC"
,
"dependencies"
:
{
"esrecurse"
:
"^4.3.0"
,
"estraverse"
:
"^5.2.0"
"is-glob"
:
"^4.0.1"
},
"engines"
:
{
"node"
:
"^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding"
:
{
"url"
:
"https://opencollective.com/eslint"
"node"
:
">= 6"
}
},
"node_modules/
espree
"
:
{
"version"
:
"
9.6
.1"
,
"resolved"
:
"https://registry.npm
js.org/espree/-/espree-9.6
.1.tgz"
,
"integrity"
:
"sha512-
oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdw
Q=="
,
"node_modules/
fastq
"
:
{
"version"
:
"
1.19
.1"
,
"resolved"
:
"https://registry.npm
mirror.com/fastq/-/fastq-1.19
.1.tgz"
,
"integrity"
:
"sha512-
GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vv
Q=="
,
"dev"
:
true
,
"license"
:
"BSD-2-Clause"
,
"optional"
:
true
,
"license"
:
"ISC"
,
"dependencies"
:
{
"acorn"
:
"^8.9.0"
,
"acorn-jsx"
:
"^5.3.2"
,
"eslint-visitor-keys"
:
"^3.4.1"
"reusify"
:
"^1.0.4"
}
},
"engines"
:
{
"node"
:
"^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding"
:
{
"url"
:
"https://opencollective.com/eslint"
}
},
"node_modules/espree/node_modules/eslint-visitor-keys"
:
{
"version"
:
"3.4.3"
,
"resolved"
:
"https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz"
,
"integrity"
:
"sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="
,
"dev"
:
true
,
"license"
:
"Apache-2.0"
,
"optional"
:
true
,
"engines"
:
{
"node"
:
"^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding"
:
{
"url"
:
"https://opencollective.com/eslint"
}
},
"node_modules/esquery"
:
{
"version"
:
"1.6.0"
,
"resolved"
:
"https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz"
,
"integrity"
:
"sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg=="
,
"dev"
:
true
,
"license"
:
"BSD-3-Clause"
,
"optional"
:
true
,
"dependencies"
:
{
"estraverse"
:
"^5.1.0"
},
"engines"
:
{
"node"
:
">=0.10"
}
},
"node_modules/esrecurse"
:
{
"version"
:
"4.3.0"
,
"resolved"
:
"https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz"
,
"integrity"
:
"sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag=="
,
"dev"
:
true
,
"license"
:
"BSD-2-Clause"
,
"optional"
:
true
,
"dependencies"
:
{
"estraverse"
:
"^5.2.0"
},
"engines"
:
{
"node"
:
">=4.0"
}
},
"node_modules/estraverse"
:
{
"version"
:
"5.3.0"
,
"resolved"
:
"https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz"
,
"integrity"
:
"sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="
,
"dev"
:
true
,
"license"
:
"BSD-2-Clause"
,
"optional"
:
true
,
"engines"
:
{
"node"
:
">=4.0"
}
},
"node_modules/estree-walker"
:
{
"version"
:
"2.0.2"
,
"resolved"
:
"https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz"
,
"integrity"
:
"sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
,
"node_modules/file-saver"
:
{
"version"
:
"2.0.5"
,
"resolved"
:
"https://registry.npmmirror.com/file-saver/-/file-saver-2.0.5.tgz"
,
"integrity"
:
"sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA=="
,
"license"
:
"MIT"
},
"node_modules/esutils"
:
{
"version"
:
"2.0.3"
,
"resolved"
:
"https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz"
,
"integrity"
:
"sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="
,
"dev"
:
true
,
"license"
:
"BSD-2-Clause"
,
"optional"
:
true
,
"engines"
:
{
"node"
:
">=0.10.0"
}
},
"node_modules/fast-deep-equal"
:
{
"version"
:
"3.1.3"
,
"resolved"
:
"https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz"
,
"integrity"
:
"sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
},
"node_modules/fast-glob"
:
{
"version"
:
"3.3.3"
,
"resolved"
:
"https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.3.tgz"
,
"integrity"
:
"sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@nodelib/fs.stat"
:
"^2.0.2"
,
"@nodelib/fs.walk"
:
"^1.2.3"
,
"glob-parent"
:
"^5.1.2"
,
"merge2"
:
"^1.3.0"
,
"micromatch"
:
"^4.0.8"
},
"engines"
:
{
"node"
:
">=8.6.0"
}
},
"node_modules/fast-glob/node_modules/glob-parent"
:
{
"version"
:
"5.1.2"
,
"resolved"
:
"https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz"
,
"integrity"
:
"sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="
,
"dev"
:
true
,
"license"
:
"ISC"
,
"dependencies"
:
{
"is-glob"
:
"^4.0.1"
},
"engines"
:
{
"node"
:
">= 6"
}
},
"node_modules/fast-json-stable-stringify"
:
{
"version"
:
"2.1.0"
,
"resolved"
:
"https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz"
,
"integrity"
:
"sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
},
"node_modules/fast-levenshtein"
:
{
"version"
:
"2.0.6"
,
"resolved"
:
"https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz"
,
"integrity"
:
"sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
},
"node_modules/fastq"
:
{
"version"
:
"1.19.1"
,
"resolved"
:
"https://registry.npmmirror.com/fastq/-/fastq-1.19.1.tgz"
,
"integrity"
:
"sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ=="
,
"dev"
:
true
,
"license"
:
"ISC"
,
"dependencies"
:
{
"reusify"
:
"^1.0.4"
}
},
"node_modules/file-entry-cache"
:
{
"version"
:
"6.0.1"
,
"resolved"
:
"https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz"
,
"integrity"
:
"sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"dependencies"
:
{
"flat-cache"
:
"^3.0.4"
},
"engines"
:
{
"node"
:
"^10.12.0 || >=12.0.0"
}
},
"node_modules/fill-range"
:
{
"version"
:
"7.1.1"
,
"resolved"
:
"https://registry.npmmirror.com/fill-range/-/fill-range-7.1.1.tgz"
,
...
...
@@ -2231,48 +1778,6 @@
"node"
:
">=8"
}
},
"node_modules/find-up"
:
{
"version"
:
"5.0.0"
,
"resolved"
:
"https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz"
,
"integrity"
:
"sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"dependencies"
:
{
"locate-path"
:
"^6.0.0"
,
"path-exists"
:
"^4.0.0"
},
"engines"
:
{
"node"
:
">=10"
},
"funding"
:
{
"url"
:
"https://github.com/sponsors/sindresorhus"
}
},
"node_modules/flat-cache"
:
{
"version"
:
"3.2.0"
,
"resolved"
:
"https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz"
,
"integrity"
:
"sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"dependencies"
:
{
"flatted"
:
"^3.2.9"
,
"keyv"
:
"^4.5.3"
,
"rimraf"
:
"^3.0.2"
},
"engines"
:
{
"node"
:
"^10.12.0 || >=12.0.0"
}
},
"node_modules/flatted"
:
{
"version"
:
"3.3.3"
,
"resolved"
:
"https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz"
,
"integrity"
:
"sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg=="
,
"dev"
:
true
,
"license"
:
"ISC"
,
"optional"
:
true
},
"node_modules/follow-redirects"
:
{
"version"
:
"1.15.11"
,
"resolved"
:
"https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.11.tgz"
,
...
...
@@ -2309,6 +1814,15 @@
"node"
:
">= 6"
}
},
"node_modules/frac"
:
{
"version"
:
"1.1.2"
,
"resolved"
:
"https://registry.npmmirror.com/frac/-/frac-1.1.2.tgz"
,
"integrity"
:
"sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA=="
,
"license"
:
"Apache-2.0"
,
"engines"
:
{
"node"
:
">=0.8"
}
},
"node_modules/fraction.js"
:
{
"version"
:
"5.3.4"
,
"resolved"
:
"https://registry.npmmirror.com/fraction.js/-/fraction.js-5.3.4.tgz"
,
...
...
@@ -2323,14 +1837,6 @@
"url"
:
"https://github.com/sponsors/rawify"
}
},
"node_modules/fs.realpath"
:
{
"version"
:
"1.0.0"
,
"resolved"
:
"https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
,
"integrity"
:
"sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
,
"dev"
:
true
,
"license"
:
"ISC"
,
"optional"
:
true
},
"node_modules/fsevents"
:
{
"version"
:
"2.3.3"
,
"resolved"
:
"https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz"
,
...
...
@@ -2392,29 +1898,6 @@
"node"
:
">= 0.4"
}
},
"node_modules/glob"
:
{
"version"
:
"7.2.3"
,
"resolved"
:
"https://registry.npmjs.org/glob/-/glob-7.2.3.tgz"
,
"integrity"
:
"sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q=="
,
"deprecated"
:
"Glob versions prior to v9 are no longer supported"
,
"dev"
:
true
,
"license"
:
"ISC"
,
"optional"
:
true
,
"dependencies"
:
{
"fs.realpath"
:
"^1.0.0"
,
"inflight"
:
"^1.0.4"
,
"inherits"
:
"2"
,
"minimatch"
:
"^3.1.1"
,
"once"
:
"^1.3.0"
,
"path-is-absolute"
:
"^1.0.0"
},
"engines"
:
{
"node"
:
"*"
},
"funding"
:
{
"url"
:
"https://github.com/sponsors/isaacs"
}
},
"node_modules/glob-parent"
:
{
"version"
:
"6.0.2"
,
"resolved"
:
"https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz"
,
...
...
@@ -2428,49 +1911,6 @@
"node"
:
">=10.13.0"
}
},
"node_modules/glob/node_modules/brace-expansion"
:
{
"version"
:
"1.1.12"
,
"resolved"
:
"https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz"
,
"integrity"
:
"sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"dependencies"
:
{
"balanced-match"
:
"^1.0.0"
,
"concat-map"
:
"0.0.1"
}
},
"node_modules/glob/node_modules/minimatch"
:
{
"version"
:
"3.1.2"
,
"resolved"
:
"https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"
,
"integrity"
:
"sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="
,
"dev"
:
true
,
"license"
:
"ISC"
,
"optional"
:
true
,
"dependencies"
:
{
"brace-expansion"
:
"^1.1.7"
},
"engines"
:
{
"node"
:
"*"
}
},
"node_modules/globals"
:
{
"version"
:
"13.24.0"
,
"resolved"
:
"https://registry.npmjs.org/globals/-/globals-13.24.0.tgz"
,
"integrity"
:
"sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"dependencies"
:
{
"type-fest"
:
"^0.20.2"
},
"engines"
:
{
"node"
:
">=8"
},
"funding"
:
{
"url"
:
"https://github.com/sponsors/sindresorhus"
}
},
"node_modules/gopd"
:
{
"version"
:
"1.2.0"
,
"resolved"
:
"https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz"
,
...
...
@@ -2483,25 +1923,6 @@
"url"
:
"https://github.com/sponsors/ljharb"
}
},
"node_modules/graphemer"
:
{
"version"
:
"1.4.0"
,
"resolved"
:
"https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz"
,
"integrity"
:
"sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
},
"node_modules/has-flag"
:
{
"version"
:
"4.0.0"
,
"resolved"
:
"https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz"
,
"integrity"
:
"sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"engines"
:
{
"node"
:
">=8"
}
},
"node_modules/has-symbols"
:
{
"version"
:
"1.1.0"
,
"resolved"
:
"https://registry.npmmirror.com/has-symbols/-/has-symbols-1.1.0.tgz"
,
...
...
@@ -2551,67 +1972,6 @@
"he"
:
"bin/he"
}
},
"node_modules/ignore"
:
{
"version"
:
"5.3.2"
,
"resolved"
:
"https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz"
,
"integrity"
:
"sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"engines"
:
{
"node"
:
">= 4"
}
},
"node_modules/import-fresh"
:
{
"version"
:
"3.3.1"
,
"resolved"
:
"https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz"
,
"integrity"
:
"sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"dependencies"
:
{
"parent-module"
:
"^1.0.0"
,
"resolve-from"
:
"^4.0.0"
},
"engines"
:
{
"node"
:
">=6"
},
"funding"
:
{
"url"
:
"https://github.com/sponsors/sindresorhus"
}
},
"node_modules/imurmurhash"
:
{
"version"
:
"0.1.4"
,
"resolved"
:
"https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz"
,
"integrity"
:
"sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"engines"
:
{
"node"
:
">=0.8.19"
}
},
"node_modules/inflight"
:
{
"version"
:
"1.0.6"
,
"resolved"
:
"https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"
,
"integrity"
:
"sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA=="
,
"deprecated"
:
"This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful."
,
"dev"
:
true
,
"license"
:
"ISC"
,
"optional"
:
true
,
"dependencies"
:
{
"once"
:
"^1.3.0"
,
"wrappy"
:
"1"
}
},
"node_modules/inherits"
:
{
"version"
:
"2.0.4"
,
"resolved"
:
"https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
,
"integrity"
:
"sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
,
"dev"
:
true
,
"license"
:
"ISC"
,
"optional"
:
true
},
"node_modules/is-binary-path"
:
{
"version"
:
"2.1.0"
,
"resolved"
:
"https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz"
,
...
...
@@ -2670,110 +2030,26 @@
"integrity"
:
"sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"engines"
:
{
"node"
:
">=0.12.0"
}
},
"node_modules/is-path-inside"
:
{
"version"
:
"3.0.3"
,
"resolved"
:
"https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz"
,
"integrity"
:
"sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"engines"
:
{
"node"
:
">=8"
}
},
"node_modules/isexe"
:
{
"version"
:
"2.0.0"
,
"resolved"
:
"https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"
,
"integrity"
:
"sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
,
"dev"
:
true
,
"license"
:
"ISC"
,
"optional"
:
true
},
"node_modules/jiti"
:
{
"version"
:
"1.21.7"
,
"resolved"
:
"https://registry.npmmirror.com/jiti/-/jiti-1.21.7.tgz"
,
"integrity"
:
"sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"peer"
:
true
,
"bin"
:
{
"jiti"
:
"bin/jiti.js"
}
},
"node_modules/js-tokens"
:
{
"version"
:
"4.0.0"
,
"resolved"
:
"https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz"
,
"integrity"
:
"sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
,
"dev"
:
true
,
"license"
:
"MIT"
},
"node_modules/js-yaml"
:
{
"version"
:
"4.1.1"
,
"resolved"
:
"https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz"
,
"integrity"
:
"sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"dependencies"
:
{
"argparse"
:
"^2.0.1"
},
"bin"
:
{
"js-yaml"
:
"bin/js-yaml.js"
}
},
"node_modules/json-buffer"
:
{
"version"
:
"3.0.1"
,
"resolved"
:
"https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz"
,
"integrity"
:
"sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
},
"node_modules/json-schema-traverse"
:
{
"version"
:
"0.4.1"
,
"resolved"
:
"https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz"
,
"integrity"
:
"sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
},
"node_modules/json-stable-stringify-without-jsonify"
:
{
"version"
:
"1.0.1"
,
"resolved"
:
"https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz"
,
"integrity"
:
"sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
"engines"
:
{
"node"
:
">=0.12.0"
}
},
"node_modules/
keyv
"
:
{
"version"
:
"
4.5.4
"
,
"resolved"
:
"https://registry.npm
js.org/keyv/-/keyv-4.5.4
.tgz"
,
"integrity"
:
"sha512-
oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw
=="
,
"node_modules/
jiti
"
:
{
"version"
:
"
1.21.7
"
,
"resolved"
:
"https://registry.npm
mirror.com/jiti/-/jiti-1.21.7
.tgz"
,
"integrity"
:
"sha512-
/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A
=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"dependencies"
:
{
"json-buffer"
:
"3.0.1"
"bin"
:
{
"jiti"
:
"bin/jiti.js"
}
},
"node_modules/
levn
"
:
{
"version"
:
"
0.4.1
"
,
"resolved"
:
"https://registry.npm
js.org/levn/-/levn-0.4.1
.tgz"
,
"integrity"
:
"sha512-
+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQ
KQ=="
,
"node_modules/
js-tokens
"
:
{
"version"
:
"
4.0.0
"
,
"resolved"
:
"https://registry.npm
mirror.com/js-tokens/-/js-tokens-4.0.0
.tgz"
,
"integrity"
:
"sha512-
RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/P
KQ=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"dependencies"
:
{
"prelude-ls"
:
"^1.2.1"
,
"type-check"
:
"~0.4.0"
},
"engines"
:
{
"node"
:
">= 0.8.0"
}
"license"
:
"MIT"
},
"node_modules/lilconfig"
:
{
"version"
:
"3.1.3"
,
...
...
@@ -2795,31 +2071,6 @@
"dev"
:
true
,
"license"
:
"MIT"
},
"node_modules/locate-path"
:
{
"version"
:
"6.0.0"
,
"resolved"
:
"https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz"
,
"integrity"
:
"sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"dependencies"
:
{
"p-locate"
:
"^5.0.0"
},
"engines"
:
{
"node"
:
">=10"
},
"funding"
:
{
"url"
:
"https://github.com/sponsors/sindresorhus"
}
},
"node_modules/lodash.merge"
:
{
"version"
:
"4.6.2"
,
"resolved"
:
"https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz"
,
"integrity"
:
"sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
},
"node_modules/magic-string"
:
{
"version"
:
"0.30.21"
,
"resolved"
:
"https://registry.npmmirror.com/magic-string/-/magic-string-0.30.21.tgz"
,
...
...
@@ -2899,14 +2150,6 @@
"url"
:
"https://github.com/sponsors/isaacs"
}
},
"node_modules/ms"
:
{
"version"
:
"2.1.3"
,
"resolved"
:
"https://registry.npmjs.org/ms/-/ms-2.1.3.tgz"
,
"integrity"
:
"sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
},
"node_modules/muggle-string"
:
{
"version"
:
"0.4.1"
,
"resolved"
:
"https://registry.npmmirror.com/muggle-string/-/muggle-string-0.4.1.tgz"
,
...
...
@@ -2944,14 +2187,6 @@
"node"
:
"^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
"node_modules/natural-compare"
:
{
"version"
:
"1.4.0"
,
"resolved"
:
"https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz"
,
"integrity"
:
"sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
},
"node_modules/node-releases"
:
{
"version"
:
"2.0.27"
,
"resolved"
:
"https://registry.npmmirror.com/node-releases/-/node-releases-2.0.27.tgz"
,
...
...
@@ -3006,84 +2241,6 @@
"node"
:
">= 6"
}
},
"node_modules/once"
:
{
"version"
:
"1.4.0"
,
"resolved"
:
"https://registry.npmjs.org/once/-/once-1.4.0.tgz"
,
"integrity"
:
"sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="
,
"dev"
:
true
,
"license"
:
"ISC"
,
"optional"
:
true
,
"dependencies"
:
{
"wrappy"
:
"1"
}
},
"node_modules/optionator"
:
{
"version"
:
"0.9.4"
,
"resolved"
:
"https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz"
,
"integrity"
:
"sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"dependencies"
:
{
"deep-is"
:
"^0.1.3"
,
"fast-levenshtein"
:
"^2.0.6"
,
"levn"
:
"^0.4.1"
,
"prelude-ls"
:
"^1.2.1"
,
"type-check"
:
"^0.4.0"
,
"word-wrap"
:
"^1.2.5"
},
"engines"
:
{
"node"
:
">= 0.8.0"
}
},
"node_modules/p-limit"
:
{
"version"
:
"3.1.0"
,
"resolved"
:
"https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz"
,
"integrity"
:
"sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"dependencies"
:
{
"yocto-queue"
:
"^0.1.0"
},
"engines"
:
{
"node"
:
">=10"
},
"funding"
:
{
"url"
:
"https://github.com/sponsors/sindresorhus"
}
},
"node_modules/p-locate"
:
{
"version"
:
"5.0.0"
,
"resolved"
:
"https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz"
,
"integrity"
:
"sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"dependencies"
:
{
"p-limit"
:
"^3.0.2"
},
"engines"
:
{
"node"
:
">=10"
},
"funding"
:
{
"url"
:
"https://github.com/sponsors/sindresorhus"
}
},
"node_modules/parent-module"
:
{
"version"
:
"1.0.1"
,
"resolved"
:
"https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz"
,
"integrity"
:
"sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"dependencies"
:
{
"callsites"
:
"^3.0.0"
},
"engines"
:
{
"node"
:
">=6"
}
},
"node_modules/path-browserify"
:
{
"version"
:
"1.0.1"
,
"resolved"
:
"https://registry.npmmirror.com/path-browserify/-/path-browserify-1.0.1.tgz"
,
...
...
@@ -3091,28 +2248,6 @@
"dev"
:
true
,
"license"
:
"MIT"
},
"node_modules/path-exists"
:
{
"version"
:
"4.0.0"
,
"resolved"
:
"https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz"
,
"integrity"
:
"sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"engines"
:
{
"node"
:
">=8"
}
},
"node_modules/path-is-absolute"
:
{
"version"
:
"1.0.1"
,
"resolved"
:
"https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
,
"integrity"
:
"sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"engines"
:
{
"node"
:
">=0.10.0"
}
},
"node_modules/path-key"
:
{
"version"
:
"4.0.0"
,
"resolved"
:
"https://registry.npmmirror.com/path-key/-/path-key-4.0.0.tgz"
,
...
...
@@ -3213,7 +2348,6 @@
}
],
"license"
:
"MIT"
,
"peer"
:
true
,
"dependencies"
:
{
"nanoid"
:
"^3.3.11"
,
"picocolors"
:
"^1.1.1"
,
...
...
@@ -3357,34 +2491,12 @@
"dev"
:
true
,
"license"
:
"MIT"
},
"node_modules/prelude-ls"
:
{
"version"
:
"1.2.1"
,
"resolved"
:
"https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz"
,
"integrity"
:
"sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"engines"
:
{
"node"
:
">= 0.8.0"
}
},
"node_modules/proxy-from-env"
:
{
"version"
:
"1.1.0"
,
"resolved"
:
"https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz"
,
"integrity"
:
"sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
,
"license"
:
"MIT"
},
"node_modules/punycode"
:
{
"version"
:
"2.3.1"
,
"resolved"
:
"https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz"
,
"integrity"
:
"sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"engines"
:
{
"node"
:
">=6"
}
},
"node_modules/queue-microtask"
:
{
"version"
:
"1.2.3"
,
"resolved"
:
"https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz"
,
...
...
@@ -3450,17 +2562,6 @@
"url"
:
"https://github.com/sponsors/ljharb"
}
},
"node_modules/resolve-from"
:
{
"version"
:
"4.0.0"
,
"resolved"
:
"https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz"
,
"integrity"
:
"sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"engines"
:
{
"node"
:
">=4"
}
},
"node_modules/reusify"
:
{
"version"
:
"1.1.0"
,
"resolved"
:
"https://registry.npmmirror.com/reusify/-/reusify-1.1.0.tgz"
,
...
...
@@ -3472,24 +2573,6 @@
"node"
:
">=0.10.0"
}
},
"node_modules/rimraf"
:
{
"version"
:
"3.0.2"
,
"resolved"
:
"https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz"
,
"integrity"
:
"sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA=="
,
"deprecated"
:
"Rimraf versions prior to v4 are no longer supported"
,
"dev"
:
true
,
"license"
:
"ISC"
,
"optional"
:
true
,
"dependencies"
:
{
"glob"
:
"^7.1.3"
},
"bin"
:
{
"rimraf"
:
"bin.js"
},
"funding"
:
{
"url"
:
"https://github.com/sponsors/isaacs"
}
},
"node_modules/rollup"
:
{
"version"
:
"4.53.5"
,
"resolved"
:
"https://registry.npmmirror.com/rollup/-/rollup-4.53.5.tgz"
,
...
...
@@ -3556,31 +2639,6 @@
"queue-microtask"
:
"^1.2.2"
}
},
"node_modules/shebang-command"
:
{
"version"
:
"2.0.0"
,
"resolved"
:
"https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz"
,
"integrity"
:
"sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"dependencies"
:
{
"shebang-regex"
:
"^3.0.0"
},
"engines"
:
{
"node"
:
">=8"
}
},
"node_modules/shebang-regex"
:
{
"version"
:
"3.0.0"
,
"resolved"
:
"https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz"
,
"integrity"
:
"sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"engines"
:
{
"node"
:
">=8"
}
},
"node_modules/source-map-js"
:
{
"version"
:
"1.2.1"
,
"resolved"
:
"https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz"
,
...
...
@@ -3590,6 +2648,18 @@
"node"
:
">=0.10.0"
}
},
"node_modules/ssf"
:
{
"version"
:
"0.11.2"
,
"resolved"
:
"https://registry.npmmirror.com/ssf/-/ssf-0.11.2.tgz"
,
"integrity"
:
"sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g=="
,
"license"
:
"Apache-2.0"
,
"dependencies"
:
{
"frac"
:
"~1.1.2"
},
"engines"
:
{
"node"
:
">=0.8"
}
},
"node_modules/strip-ansi"
:
{
"version"
:
"7.1.2"
,
"resolved"
:
"https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.2.tgz"
,
...
...
@@ -3606,20 +2676,6 @@
"url"
:
"https://github.com/chalk/strip-ansi?sponsor=1"
}
},
"node_modules/strip-json-comments"
:
{
"version"
:
"3.1.1"
,
"resolved"
:
"https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz"
,
"integrity"
:
"sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"engines"
:
{
"node"
:
">=8"
},
"funding"
:
{
"url"
:
"https://github.com/sponsors/sindresorhus"
}
},
"node_modules/sucrase"
:
{
"version"
:
"3.35.1"
,
"resolved"
:
"https://registry.npmmirror.com/sucrase/-/sucrase-3.35.1.tgz"
,
...
...
@@ -3643,20 +2699,6 @@
"node"
:
">=16 || 14 >=14.17"
}
},
"node_modules/supports-color"
:
{
"version"
:
"7.2.0"
,
"resolved"
:
"https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz"
,
"integrity"
:
"sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"dependencies"
:
{
"has-flag"
:
"^4.0.0"
},
"engines"
:
{
"node"
:
">=8"
}
},
"node_modules/supports-preserve-symlinks-flag"
:
{
"version"
:
"1.0.0"
,
"resolved"
:
"https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz"
,
...
...
@@ -3708,14 +2750,6 @@
"node"
:
">=14.0.0"
}
},
"node_modules/text-table"
:
{
"version"
:
"0.2.0"
,
"resolved"
:
"https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz"
,
"integrity"
:
"sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
},
"node_modules/thenify"
:
{
"version"
:
"3.3.1"
,
"resolved"
:
"https://registry.npmmirror.com/thenify/-/thenify-3.3.1.tgz"
,
...
...
@@ -3787,7 +2821,6 @@
"integrity"
:
"sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"peer"
:
true
,
"engines"
:
{
"node"
:
">=12"
},
...
...
@@ -3815,41 +2848,12 @@
"dev"
:
true
,
"license"
:
"Apache-2.0"
},
"node_modules/type-check"
:
{
"version"
:
"0.4.0"
,
"resolved"
:
"https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz"
,
"integrity"
:
"sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"dependencies"
:
{
"prelude-ls"
:
"^1.2.1"
},
"engines"
:
{
"node"
:
">= 0.8.0"
}
},
"node_modules/type-fest"
:
{
"version"
:
"0.20.2"
,
"resolved"
:
"https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz"
,
"integrity"
:
"sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ=="
,
"dev"
:
true
,
"license"
:
"(MIT OR CC0-1.0)"
,
"optional"
:
true
,
"engines"
:
{
"node"
:
">=10"
},
"funding"
:
{
"url"
:
"https://github.com/sponsors/sindresorhus"
}
},
"node_modules/typescript"
:
{
"version"
:
"5.6.3"
,
"resolved"
:
"https://registry.npmmirror.com/typescript/-/typescript-5.6.3.tgz"
,
"integrity"
:
"sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw=="
,
"devOptional"
:
true
,
"license"
:
"Apache-2.0"
,
"peer"
:
true
,
"bin"
:
{
"tsc"
:
"bin/tsc"
,
"tsserver"
:
"bin/tsserver"
...
...
@@ -3909,17 +2913,6 @@
"browserslist"
:
">= 4.21.0"
}
},
"node_modules/uri-js"
:
{
"version"
:
"4.4.1"
,
"resolved"
:
"https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz"
,
"integrity"
:
"sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="
,
"dev"
:
true
,
"license"
:
"BSD-2-Clause"
,
"optional"
:
true
,
"dependencies"
:
{
"punycode"
:
"^2.1.0"
}
},
"node_modules/util-deprecate"
:
{
"version"
:
"1.0.2"
,
"resolved"
:
"https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz"
,
...
...
@@ -3933,7 +2926,6 @@
"integrity"
:
"sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"peer"
:
true
,
"dependencies"
:
{
"esbuild"
:
"^0.21.3"
,
"postcss"
:
"^8.4.43"
,
...
...
@@ -4105,7 +3097,6 @@
"resolved"
:
"https://registry.npmmirror.com/vue/-/vue-3.5.25.tgz"
,
"integrity"
:
"sha512-YLVdgv2K13WJ6n+kD5owehKtEXwdwXuj2TTyJMsO7pSeKw2bfRNZGjhB7YzrpbMYj5b5QsUebHpOqR3R3ziy/g=="
,
"license"
:
"MIT"
,
"peer"
:
true
,
"dependencies"
:
{
"@vue/compiler-dom"
:
"3.5.25"
,
"@vue/compiler-sfc"
:
"3.5.25"
,
...
...
@@ -4199,7 +3190,6 @@
"integrity"
:
"sha512-P7OP77b2h/Pmk+lZdJ0YWs+5tJ6J2+uOQPo7tlBnY44QqQSPYvS0qVT4wqDJgwrZaLe47etJLLQRFia71GYITw=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"peer"
:
true
,
"dependencies"
:
{
"@volar/typescript"
:
"2.4.15"
,
"@vue/language-core"
:
"2.2.12"
...
...
@@ -4211,54 +3201,43 @@
"typescript"
:
">=5.0.0"
}
},
"node_modules/which"
:
{
"version"
:
"2.0.2"
,
"resolved"
:
"https://registry.npmjs.org/which/-/which-2.0.2.tgz"
,
"integrity"
:
"sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="
,
"dev"
:
true
,
"license"
:
"ISC"
,
"optional"
:
true
,
"dependencies"
:
{
"isexe"
:
"^2.0.0"
},
"bin"
:
{
"node-which"
:
"bin/node-which"
},
"node_modules/wmf"
:
{
"version"
:
"1.0.2"
,
"resolved"
:
"https://registry.npmmirror.com/wmf/-/wmf-1.0.2.tgz"
,
"integrity"
:
"sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw=="
,
"license"
:
"Apache-2.0"
,
"engines"
:
{
"node"
:
">=
8"
"node"
:
">=
0.
8"
}
},
"node_modules/word-wrap"
:
{
"version"
:
"1.2.5"
,
"resolved"
:
"https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz"
,
"integrity"
:
"sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"node_modules/word"
:
{
"version"
:
"0.3.0"
,
"resolved"
:
"https://registry.npmmirror.com/word/-/word-0.3.0.tgz"
,
"integrity"
:
"sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA=="
,
"license"
:
"Apache-2.0"
,
"engines"
:
{
"node"
:
">=0.
10.0
"
"node"
:
">=0.
8
"
}
},
"node_modules/wrappy"
:
{
"version"
:
"1.0.2"
,
"resolved"
:
"https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
,
"integrity"
:
"sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
,
"dev"
:
true
,
"license"
:
"ISC"
,
"optional"
:
true
"node_modules/xlsx"
:
{
"version"
:
"0.18.5"
,
"resolved"
:
"https://registry.npmmirror.com/xlsx/-/xlsx-0.18.5.tgz"
,
"integrity"
:
"sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ=="
,
"license"
:
"Apache-2.0"
,
"dependencies"
:
{
"adler-32"
:
"~1.3.0"
,
"cfb"
:
"~1.2.1"
,
"codepage"
:
"~1.15.0"
,
"crc-32"
:
"~1.2.1"
,
"ssf"
:
"~0.11.2"
,
"wmf"
:
"~1.0.1"
,
"word"
:
"~0.3.0"
},
"node_modules/yocto-queue"
:
{
"version"
:
"0.1.0"
,
"resolved"
:
"https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz"
,
"integrity"
:
"sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"optional"
:
true
,
"engines"
:
{
"node"
:
">=10"
"bin"
:
{
"xlsx"
:
"bin/xlsx.njs"
},
"
funding
"
:
{
"
url"
:
"https://github.com/sponsors/sindresorhus
"
"
engines
"
:
{
"
node"
:
">=0.8
"
}
}
}
...
...
frontend/package.json
View file @
942c3e15
...
...
@@ -14,13 +14,17 @@
"@vueuse/core"
:
"^10.7.0"
,
"axios"
:
"^1.6.2"
,
"chart.js"
:
"^4.4.1"
,
"driver.js"
:
"^1.4.0"
,
"file-saver"
:
"^2.0.5"
,
"pinia"
:
"^2.1.7"
,
"vue"
:
"^3.4.0"
,
"vue-chartjs"
:
"^5.3.0"
,
"vue-i18n"
:
"^9.14.5"
,
"vue-router"
:
"^4.2.5"
"vue-router"
:
"^4.2.5"
,
"xlsx"
:
"^0.18.5"
},
"devDependencies"
:
{
"@types/file-saver"
:
"^2.0.7"
,
"@types/node"
:
"^20.10.5"
,
"@vitejs/plugin-vue"
:
"^5.2.3"
,
"autoprefixer"
:
"^10.4.16"
,
...
...
frontend/pnpm-lock.yaml
0 → 100644
View file @
942c3e15
lockfileVersion
:
'
9.0'
settings
:
autoInstallPeers
:
true
excludeLinksFromLockfile
:
false
importers
:
.
:
dependencies
:
'
@vueuse/core'
:
specifier
:
^10.7.0
version
:
10.11.1(vue@3.5.26(typescript@5.6.3))
axios
:
specifier
:
^1.6.2
version
:
1.13.2
chart.js
:
specifier
:
^4.4.1
version
:
4.5.1
driver.js
:
specifier
:
^1.4.0
version
:
1.4.0
pinia
:
specifier
:
^2.1.7
version
:
2.3.1(typescript@5.6.3)(vue@3.5.26(typescript@5.6.3))
vue
:
specifier
:
^3.4.0
version
:
3.5.26(typescript@5.6.3)
vue-chartjs
:
specifier
:
^5.3.0
version
:
5.3.3(chart.js@4.5.1)(vue@3.5.26(typescript@5.6.3))
vue-i18n
:
specifier
:
^9.14.5
version
:
9.14.5(vue@3.5.26(typescript@5.6.3))
vue-router
:
specifier
:
^4.2.5
version
:
4.6.4(vue@3.5.26(typescript@5.6.3))
devDependencies
:
'
@types/node'
:
specifier
:
^20.10.5
version
:
20.19.27
'
@vitejs/plugin-vue'
:
specifier
:
^5.2.3
version
:
5.2.4(vite@5.4.21(@types/node@20.19.27))(vue@3.5.26(typescript@5.6.3))
autoprefixer
:
specifier
:
^10.4.16
version
:
10.4.23(postcss@8.5.6)
postcss
:
specifier
:
^8.4.32
version
:
8.5.6
tailwindcss
:
specifier
:
^3.4.0
version
:
3.4.19
typescript
:
specifier
:
~5.6.0
version
:
5.6.3
vite
:
specifier
:
^5.0.10
version
:
5.4.21(@types/node@20.19.27)
vite-plugin-checker
:
specifier
:
^0.9.1
version
:
0.9.3(typescript@5.6.3)(vite@5.4.21(@types/node@20.19.27))(vue-tsc@2.2.12(typescript@5.6.3))
vue-tsc
:
specifier
:
^2.2.0
version
:
2.2.12(typescript@5.6.3)
packages
:
'
@alloc/quick-lru@5.2.0'
:
resolution
:
{
integrity
:
sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==
}
engines
:
{
node
:
'
>=10'
}
'
@babel/code-frame@7.27.1'
:
resolution
:
{
integrity
:
sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==
}
engines
:
{
node
:
'
>=6.9.0'
}
'
@babel/helper-string-parser@7.27.1'
:
resolution
:
{
integrity
:
sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==
}
engines
:
{
node
:
'
>=6.9.0'
}
'
@babel/helper-validator-identifier@7.28.5'
:
resolution
:
{
integrity
:
sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==
}
engines
:
{
node
:
'
>=6.9.0'
}
'
@babel/parser@7.28.5'
:
resolution
:
{
integrity
:
sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==
}
engines
:
{
node
:
'
>=6.0.0'
}
hasBin
:
true
'
@babel/types@7.28.5'
:
resolution
:
{
integrity
:
sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==
}
engines
:
{
node
:
'
>=6.9.0'
}
'
@esbuild/aix-ppc64@0.21.5'
:
resolution
:
{
integrity
:
sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==
}
engines
:
{
node
:
'
>=12'
}
cpu
:
[
ppc64
]
os
:
[
aix
]
'
@esbuild/android-arm64@0.21.5'
:
resolution
:
{
integrity
:
sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==
}
engines
:
{
node
:
'
>=12'
}
cpu
:
[
arm64
]
os
:
[
android
]
'
@esbuild/android-arm@0.21.5'
:
resolution
:
{
integrity
:
sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==
}
engines
:
{
node
:
'
>=12'
}
cpu
:
[
arm
]
os
:
[
android
]
'
@esbuild/android-x64@0.21.5'
:
resolution
:
{
integrity
:
sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==
}
engines
:
{
node
:
'
>=12'
}
cpu
:
[
x64
]
os
:
[
android
]
'
@esbuild/darwin-arm64@0.21.5'
:
resolution
:
{
integrity
:
sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==
}
engines
:
{
node
:
'
>=12'
}
cpu
:
[
arm64
]
os
:
[
darwin
]
'
@esbuild/darwin-x64@0.21.5'
:
resolution
:
{
integrity
:
sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==
}
engines
:
{
node
:
'
>=12'
}
cpu
:
[
x64
]
os
:
[
darwin
]
'
@esbuild/freebsd-arm64@0.21.5'
:
resolution
:
{
integrity
:
sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==
}
engines
:
{
node
:
'
>=12'
}
cpu
:
[
arm64
]
os
:
[
freebsd
]
'
@esbuild/freebsd-x64@0.21.5'
:
resolution
:
{
integrity
:
sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==
}
engines
:
{
node
:
'
>=12'
}
cpu
:
[
x64
]
os
:
[
freebsd
]
'
@esbuild/linux-arm64@0.21.5'
:
resolution
:
{
integrity
:
sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==
}
engines
:
{
node
:
'
>=12'
}
cpu
:
[
arm64
]
os
:
[
linux
]
'
@esbuild/linux-arm@0.21.5'
:
resolution
:
{
integrity
:
sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==
}
engines
:
{
node
:
'
>=12'
}
cpu
:
[
arm
]
os
:
[
linux
]
'
@esbuild/linux-ia32@0.21.5'
:
resolution
:
{
integrity
:
sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==
}
engines
:
{
node
:
'
>=12'
}
cpu
:
[
ia32
]
os
:
[
linux
]
'
@esbuild/linux-loong64@0.21.5'
:
resolution
:
{
integrity
:
sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==
}
engines
:
{
node
:
'
>=12'
}
cpu
:
[
loong64
]
os
:
[
linux
]
'
@esbuild/linux-mips64el@0.21.5'
:
resolution
:
{
integrity
:
sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==
}
engines
:
{
node
:
'
>=12'
}
cpu
:
[
mips64el
]
os
:
[
linux
]
'
@esbuild/linux-ppc64@0.21.5'
:
resolution
:
{
integrity
:
sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==
}
engines
:
{
node
:
'
>=12'
}
cpu
:
[
ppc64
]
os
:
[
linux
]
'
@esbuild/linux-riscv64@0.21.5'
:
resolution
:
{
integrity
:
sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==
}
engines
:
{
node
:
'
>=12'
}
cpu
:
[
riscv64
]
os
:
[
linux
]
'
@esbuild/linux-s390x@0.21.5'
:
resolution
:
{
integrity
:
sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==
}
engines
:
{
node
:
'
>=12'
}
cpu
:
[
s390x
]
os
:
[
linux
]
'
@esbuild/linux-x64@0.21.5'
:
resolution
:
{
integrity
:
sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==
}
engines
:
{
node
:
'
>=12'
}
cpu
:
[
x64
]
os
:
[
linux
]
'
@esbuild/netbsd-x64@0.21.5'
:
resolution
:
{
integrity
:
sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==
}
engines
:
{
node
:
'
>=12'
}
cpu
:
[
x64
]
os
:
[
netbsd
]
'
@esbuild/openbsd-x64@0.21.5'
:
resolution
:
{
integrity
:
sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==
}
engines
:
{
node
:
'
>=12'
}
cpu
:
[
x64
]
os
:
[
openbsd
]
'
@esbuild/sunos-x64@0.21.5'
:
resolution
:
{
integrity
:
sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==
}
engines
:
{
node
:
'
>=12'
}
cpu
:
[
x64
]
os
:
[
sunos
]
'
@esbuild/win32-arm64@0.21.5'
:
resolution
:
{
integrity
:
sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==
}
engines
:
{
node
:
'
>=12'
}
cpu
:
[
arm64
]
os
:
[
win32
]
'
@esbuild/win32-ia32@0.21.5'
:
resolution
:
{
integrity
:
sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==
}
engines
:
{
node
:
'
>=12'
}
cpu
:
[
ia32
]
os
:
[
win32
]
'
@esbuild/win32-x64@0.21.5'
:
resolution
:
{
integrity
:
sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==
}
engines
:
{
node
:
'
>=12'
}
cpu
:
[
x64
]
os
:
[
win32
]
'
@intlify/core-base@9.14.5'
:
resolution
:
{
integrity
:
sha512-5ah5FqZG4pOoHjkvs8mjtv+gPKYU0zCISaYNjBNNqYiaITxW8ZtVih3GS/oTOqN8d9/mDLyrjD46GBApNxmlsA==
}
engines
:
{
node
:
'
>=
16'
}
'
@intlify/message-compiler@9.14.5'
:
resolution
:
{
integrity
:
sha512-IHzgEu61/YIpQV5Pc3aRWScDcnFKWvQA9kigcINcCBXN8mbW+vk9SK+lDxA6STzKQsVJxUPg9ACC52pKKo3SVQ==
}
engines
:
{
node
:
'
>=
16'
}
'
@intlify/shared@9.14.5'
:
resolution
:
{
integrity
:
sha512-9gB+E53BYuAEMhbCAxVgG38EZrk59sxBtv3jSizNL2hEWlgjBjAw1AwpLHtNaeda12pe6W20OGEa0TwuMSRbyQ==
}
engines
:
{
node
:
'
>=
16'
}
'
@jridgewell/gen-mapping@0.3.13'
:
resolution
:
{
integrity
:
sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==
}
'
@jridgewell/resolve-uri@3.1.2'
:
resolution
:
{
integrity
:
sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==
}
engines
:
{
node
:
'
>=6.0.0'
}
'
@jridgewell/sourcemap-codec@1.5.5'
:
resolution
:
{
integrity
:
sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==
}
'
@jridgewell/trace-mapping@0.3.31'
:
resolution
:
{
integrity
:
sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==
}
'
@kurkle/color@0.3.4'
:
resolution
:
{
integrity
:
sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==
}
'
@nodelib/fs.scandir@2.1.5'
:
resolution
:
{
integrity
:
sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
}
engines
:
{
node
:
'
>=
8'
}
'
@nodelib/fs.stat@2.0.5'
:
resolution
:
{
integrity
:
sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
}
engines
:
{
node
:
'
>=
8'
}
'
@nodelib/fs.walk@1.2.8'
:
resolution
:
{
integrity
:
sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
}
engines
:
{
node
:
'
>=
8'
}
'
@rollup/rollup-android-arm-eabi@4.54.0'
:
resolution
:
{
integrity
:
sha512-OywsdRHrFvCdvsewAInDKCNyR3laPA2mc9bRYJ6LBp5IyvF3fvXbbNR0bSzHlZVFtn6E0xw2oZlyjg4rKCVcng==
}
cpu
:
[
arm
]
os
:
[
android
]
'
@rollup/rollup-android-arm64@4.54.0'
:
resolution
:
{
integrity
:
sha512-Skx39Uv+u7H224Af+bDgNinitlmHyQX1K/atIA32JP3JQw6hVODX5tkbi2zof/E69M1qH2UoN3Xdxgs90mmNYw==
}
cpu
:
[
arm64
]
os
:
[
android
]
'
@rollup/rollup-darwin-arm64@4.54.0'
:
resolution
:
{
integrity
:
sha512-k43D4qta/+6Fq+nCDhhv9yP2HdeKeP56QrUUTW7E6PhZP1US6NDqpJj4MY0jBHlJivVJD5P8NxrjuobZBJTCRw==
}
cpu
:
[
arm64
]
os
:
[
darwin
]
'
@rollup/rollup-darwin-x64@4.54.0'
:
resolution
:
{
integrity
:
sha512-cOo7biqwkpawslEfox5Vs8/qj83M/aZCSSNIWpVzfU2CYHa2G3P1UN5WF01RdTHSgCkri7XOlTdtk17BezlV3A==
}
cpu
:
[
x64
]
os
:
[
darwin
]
'
@rollup/rollup-freebsd-arm64@4.54.0'
:
resolution
:
{
integrity
:
sha512-miSvuFkmvFbgJ1BevMa4CPCFt5MPGw094knM64W9I0giUIMMmRYcGW/JWZDriaw/k1kOBtsWh1z6nIFV1vPNtA==
}
cpu
:
[
arm64
]
os
:
[
freebsd
]
'
@rollup/rollup-freebsd-x64@4.54.0'
:
resolution
:
{
integrity
:
sha512-KGXIs55+b/ZfZsq9aR026tmr/+7tq6VG6MsnrvF4H8VhwflTIuYh+LFUlIsRdQSgrgmtM3fVATzEAj4hBQlaqQ==
}
cpu
:
[
x64
]
os
:
[
freebsd
]
'
@rollup/rollup-linux-arm-gnueabihf@4.54.0'
:
resolution
:
{
integrity
:
sha512-EHMUcDwhtdRGlXZsGSIuXSYwD5kOT9NVnx9sqzYiwAc91wfYOE1g1djOEDseZJKKqtHAHGwnGPQu3kytmfaXLQ==
}
cpu
:
[
arm
]
os
:
[
linux
]
libc
:
[
glibc
]
'
@rollup/rollup-linux-arm-musleabihf@4.54.0'
:
resolution
:
{
integrity
:
sha512-+pBrqEjaakN2ySv5RVrj/qLytYhPKEUwk+e3SFU5jTLHIcAtqh2rLrd/OkbNuHJpsBgxsD8ccJt5ga/SeG0JmA==
}
cpu
:
[
arm
]
os
:
[
linux
]
libc
:
[
musl
]
'
@rollup/rollup-linux-arm64-gnu@4.54.0'
:
resolution
:
{
integrity
:
sha512-NSqc7rE9wuUaRBsBp5ckQ5CVz5aIRKCwsoa6WMF7G01sX3/qHUw/z4pv+D+ahL1EIKy6Enpcnz1RY8pf7bjwng==
}
cpu
:
[
arm64
]
os
:
[
linux
]
libc
:
[
glibc
]
'
@rollup/rollup-linux-arm64-musl@4.54.0'
:
resolution
:
{
integrity
:
sha512-gr5vDbg3Bakga5kbdpqx81m2n9IX8M6gIMlQQIXiLTNeQW6CucvuInJ91EuCJ/JYvc+rcLLsDFcfAD1K7fMofg==
}
cpu
:
[
arm64
]
os
:
[
linux
]
libc
:
[
musl
]
'
@rollup/rollup-linux-loong64-gnu@4.54.0'
:
resolution
:
{
integrity
:
sha512-gsrtB1NA3ZYj2vq0Rzkylo9ylCtW/PhpLEivlgWe0bpgtX5+9j9EZa0wtZiCjgu6zmSeZWyI/e2YRX1URozpIw==
}
cpu
:
[
loong64
]
os
:
[
linux
]
libc
:
[
glibc
]
'
@rollup/rollup-linux-ppc64-gnu@4.54.0'
:
resolution
:
{
integrity
:
sha512-y3qNOfTBStmFNq+t4s7Tmc9hW2ENtPg8FeUD/VShI7rKxNW7O4fFeaYbMsd3tpFlIg1Q8IapFgy7Q9i2BqeBvA==
}
cpu
:
[
ppc64
]
os
:
[
linux
]
libc
:
[
glibc
]
'
@rollup/rollup-linux-riscv64-gnu@4.54.0'
:
resolution
:
{
integrity
:
sha512-89sepv7h2lIVPsFma8iwmccN7Yjjtgz0Rj/Ou6fEqg3HDhpCa+Et+YSufy27i6b0Wav69Qv4WBNl3Rs6pwhebQ==
}
cpu
:
[
riscv64
]
os
:
[
linux
]
libc
:
[
glibc
]
'
@rollup/rollup-linux-riscv64-musl@4.54.0'
:
resolution
:
{
integrity
:
sha512-ZcU77ieh0M2Q8Ur7D5X7KvK+UxbXeDHwiOt/CPSBTI1fBmeDMivW0dPkdqkT4rOgDjrDDBUed9x4EgraIKoR2A==
}
cpu
:
[
riscv64
]
os
:
[
linux
]
libc
:
[
musl
]
'
@rollup/rollup-linux-s390x-gnu@4.54.0'
:
resolution
:
{
integrity
:
sha512-2AdWy5RdDF5+4YfG/YesGDDtbyJlC9LHmL6rZw6FurBJ5n4vFGupsOBGfwMRjBYH7qRQowT8D/U4LoSvVwOhSQ==
}
cpu
:
[
s390x
]
os
:
[
linux
]
libc
:
[
glibc
]
'
@rollup/rollup-linux-x64-gnu@4.54.0'
:
resolution
:
{
integrity
:
sha512-WGt5J8Ij/rvyqpFexxk3ffKqqbLf9AqrTBbWDk7ApGUzaIs6V+s2s84kAxklFwmMF/vBNGrVdYgbblCOFFezMQ==
}
cpu
:
[
x64
]
os
:
[
linux
]
libc
:
[
glibc
]
'
@rollup/rollup-linux-x64-musl@4.54.0'
:
resolution
:
{
integrity
:
sha512-JzQmb38ATzHjxlPHuTH6tE7ojnMKM2kYNzt44LO/jJi8BpceEC8QuXYA908n8r3CNuG/B3BV8VR3Hi1rYtmPiw==
}
cpu
:
[
x64
]
os
:
[
linux
]
libc
:
[
musl
]
'
@rollup/rollup-openharmony-arm64@4.54.0'
:
resolution
:
{
integrity
:
sha512-huT3fd0iC7jigGh7n3q/+lfPcXxBi+om/Rs3yiFxjvSxbSB6aohDFXbWvlspaqjeOh+hx7DDHS+5Es5qRkWkZg==
}
cpu
:
[
arm64
]
os
:
[
openharmony
]
'
@rollup/rollup-win32-arm64-msvc@4.54.0'
:
resolution
:
{
integrity
:
sha512-c2V0W1bsKIKfbLMBu/WGBz6Yci8nJ/ZJdheE0EwB73N3MvHYKiKGs3mVilX4Gs70eGeDaMqEob25Tw2Gb9Nqyw==
}
cpu
:
[
arm64
]
os
:
[
win32
]
'
@rollup/rollup-win32-ia32-msvc@4.54.0'
:
resolution
:
{
integrity
:
sha512-woEHgqQqDCkAzrDhvDipnSirm5vxUXtSKDYTVpZG3nUdW/VVB5VdCYA2iReSj/u3yCZzXID4kuKG7OynPnB3WQ==
}
cpu
:
[
ia32
]
os
:
[
win32
]
'
@rollup/rollup-win32-x64-gnu@4.54.0'
:
resolution
:
{
integrity
:
sha512-dzAc53LOuFvHwbCEOS0rPbXp6SIhAf2txMP5p6mGyOXXw5mWY8NGGbPMPrs4P1WItkfApDathBj/NzMLUZ9rtQ==
}
cpu
:
[
x64
]
os
:
[
win32
]
'
@rollup/rollup-win32-x64-msvc@4.54.0'
:
resolution
:
{
integrity
:
sha512-hYT5d3YNdSh3mbCU1gwQyPgQd3T2ne0A3KG8KSBdav5TiBg6eInVmV+TeR5uHufiIgSFg0XsOWGW5/RhNcSvPg==
}
cpu
:
[
x64
]
os
:
[
win32
]
'
@types/estree@1.0.8'
:
resolution
:
{
integrity
:
sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==
}
'
@types/node@20.19.27'
:
resolution
:
{
integrity
:
sha512-N2clP5pJhB2YnZJ3PIHFk5RkygRX5WO/5f0WC08tp0wd+sv0rsJk3MqWn3CbNmT2J505a5336jaQj4ph1AdMug==
}
'
@types/web-bluetooth@0.0.20'
:
resolution
:
{
integrity
:
sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==
}
'
@vitejs/plugin-vue@5.2.4'
:
resolution
:
{
integrity
:
sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==
}
engines
:
{
node
:
^18.0.0 || >=20.0.0
}
peerDependencies
:
vite
:
^5.0.0 || ^6.0.0
vue
:
^3.2.25
'
@volar/language-core@2.4.15'
:
resolution
:
{
integrity
:
sha512-3VHw+QZU0ZG9IuQmzT68IyN4hZNd9GchGPhbD9+pa8CVv7rnoOZwo7T8weIbrRmihqy3ATpdfXFnqRrfPVK6CA==
}
'
@volar/source-map@2.4.15'
:
resolution
:
{
integrity
:
sha512-CPbMWlUN6hVZJYGcU/GSoHu4EnCHiLaXI9n8c9la6RaI9W5JHX+NqG+GSQcB0JdC2FIBLdZJwGsfKyBB71VlTg==
}
'
@volar/typescript@2.4.15'
:
resolution
:
{
integrity
:
sha512-2aZ8i0cqPGjXb4BhkMsPYDkkuc2ZQ6yOpqwAuNwUoncELqoy5fRgOQtLR9gB0g902iS0NAkvpIzs27geVyVdPg==
}
'
@vue/compiler-core@3.5.26'
:
resolution
:
{
integrity
:
sha512-vXyI5GMfuoBCnv5ucIT7jhHKl55Y477yxP6fc4eUswjP8FG3FFVFd41eNDArR+Uk3QKn2Z85NavjaxLxOC19/w==
}
'
@vue/compiler-dom@3.5.26'
:
resolution
:
{
integrity
:
sha512-y1Tcd3eXs834QjswshSilCBnKGeQjQXB6PqFn/1nxcQw4pmG42G8lwz+FZPAZAby6gZeHSt/8LMPfZ4Rb+Bd/A==
}
'
@vue/compiler-sfc@3.5.26'
:
resolution
:
{
integrity
:
sha512-egp69qDTSEZcf4bGOSsprUr4xI73wfrY5oRs6GSgXFTiHrWj4Y3X5Ydtip9QMqiCMCPVwLglB9GBxXtTadJ3mA==
}
'
@vue/compiler-ssr@3.5.26'
:
resolution
:
{
integrity
:
sha512-lZT9/Y0nSIRUPVvapFJEVDbEXruZh2IYHMk2zTtEgJSlP5gVOqeWXH54xDKAaFS4rTnDeDBQUYDtxKyoW9FwDw==
}
'
@vue/compiler-vue2@2.7.16'
:
resolution
:
{
integrity
:
sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==
}
'
@vue/devtools-api@6.6.4'
:
resolution
:
{
integrity
:
sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==
}
'
@vue/language-core@2.2.12'
:
resolution
:
{
integrity
:
sha512-IsGljWbKGU1MZpBPN+BvPAdr55YPkj2nB/TBNGNC32Vy2qLG25DYu/NBN2vNtZqdRbTRjaoYrahLrToim2NanA==
}
peerDependencies
:
typescript
:
'
*'
peerDependenciesMeta
:
typescript
:
optional
:
true
'
@vue/reactivity@3.5.26'
:
resolution
:
{
integrity
:
sha512-9EnYB1/DIiUYYnzlnUBgwU32NNvLp/nhxLXeWRhHUEeWNTn1ECxX8aGO7RTXeX6PPcxe3LLuNBFoJbV4QZ+CFQ==
}
'
@vue/runtime-core@3.5.26'
:
resolution
:
{
integrity
:
sha512-xJWM9KH1kd201w5DvMDOwDHYhrdPTrAatn56oB/LRG4plEQeZRQLw0Bpwih9KYoqmzaxF0OKSn6swzYi84e1/Q==
}
'
@vue/runtime-dom@3.5.26'
:
resolution
:
{
integrity
:
sha512-XLLd/+4sPC2ZkN/6+V4O4gjJu6kSDbHAChvsyWgm1oGbdSO3efvGYnm25yCjtFm/K7rrSDvSfPDgN1pHgS4VNQ==
}
'
@vue/server-renderer@3.5.26'
:
resolution
:
{
integrity
:
sha512-TYKLXmrwWKSodyVuO1WAubucd+1XlLg4set0YoV+Hu8Lo79mp/YMwWV5mC5FgtsDxX3qo1ONrxFaTP1OQgy1uA==
}
peerDependencies
:
vue
:
3.5.26
'
@vue/shared@3.5.26'
:
resolution
:
{
integrity
:
sha512-7Z6/y3uFI5PRoKeorTOSXKcDj0MSasfNNltcslbFrPpcw6aXRUALq4IfJlaTRspiWIUOEZbrpM+iQGmCOiWe4A==
}
'
@vueuse/core@10.11.1'
:
resolution
:
{
integrity
:
sha512-guoy26JQktXPcz+0n3GukWIy/JDNKti9v6VEMu6kV2sYBsWuGiTU8OWdg+ADfUbHg3/3DlqySDe7JmdHrktiww==
}
'
@vueuse/metadata@10.11.1'
:
resolution
:
{
integrity
:
sha512-IGa5FXd003Ug1qAZmyE8wF3sJ81xGLSqTqtQ6jaVfkeZ4i5kS2mwQF61yhVqojRnenVew5PldLyRgvdl4YYuSw==
}
'
@vueuse/shared@10.11.1'
:
resolution
:
{
integrity
:
sha512-LHpC8711VFZlDaYUXEBbFBCQ7GS3dVU9mjOhhMhXP6txTV4EhYQg/KGnQuvt/sPAtoUKq7VVUnL6mVtFoL42sA==
}
alien-signals@1.0.13
:
resolution
:
{
integrity
:
sha512-OGj9yyTnJEttvzhTUWuscOvtqxq5vrhF7vL9oS0xJ2mK0ItPYP1/y+vCFebfxoEyAz0++1AIwJ5CMr+Fk3nDmg==
}
ansi-regex@6.2.2
:
resolution
:
{
integrity
:
sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==
}
engines
:
{
node
:
'
>=12'
}
any-promise@1.3.0
:
resolution
:
{
integrity
:
sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==
}
anymatch@3.1.3
:
resolution
:
{
integrity
:
sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
}
engines
:
{
node
:
'
>=
8'
}
arg@5.0.2
:
resolution
:
{
integrity
:
sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==
}
asynckit@0.4.0
:
resolution
:
{
integrity
:
sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
}
autoprefixer@10.4.23
:
resolution
:
{
integrity
:
sha512-YYTXSFulfwytnjAPlw8QHncHJmlvFKtczb8InXaAx9Q0LbfDnfEYDE55omerIJKihhmU61Ft+cAOSzQVaBUmeA==
}
engines
:
{
node
:
^10 || ^12 || >=14
}
hasBin
:
true
peerDependencies
:
postcss
:
^8.1.0
axios@1.13.2
:
resolution
:
{
integrity
:
sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==
}
balanced-match@1.0.2
:
resolution
:
{
integrity
:
sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
}
baseline-browser-mapping@2.9.11
:
resolution
:
{
integrity
:
sha512-Sg0xJUNDU1sJNGdfGWhVHX0kkZ+HWcvmVymJbj6NSgZZmW/8S9Y2HQ5euytnIgakgxN6papOAWiwDo1ctFDcoQ==
}
hasBin
:
true
binary-extensions@2.3.0
:
resolution
:
{
integrity
:
sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==
}
engines
:
{
node
:
'
>=8'
}
brace-expansion@2.0.2
:
resolution
:
{
integrity
:
sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==
}
braces@3.0.3
:
resolution
:
{
integrity
:
sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==
}
engines
:
{
node
:
'
>=8'
}
browserslist@4.28.1
:
resolution
:
{
integrity
:
sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==
}
engines
:
{
node
:
^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7
}
hasBin
:
true
call-bind-apply-helpers@1.0.2
:
resolution
:
{
integrity
:
sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==
}
engines
:
{
node
:
'
>=
0.4'
}
camelcase-css@2.0.1
:
resolution
:
{
integrity
:
sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==
}
engines
:
{
node
:
'
>=
6'
}
caniuse-lite@1.0.30001761
:
resolution
:
{
integrity
:
sha512-JF9ptu1vP2coz98+5051jZ4PwQgd2ni8A+gYSN7EA7dPKIMf0pDlSUxhdmVOaV3/fYK5uWBkgSXJaRLr4+3A6g==
}
chart.js@4.5.1
:
resolution
:
{
integrity
:
sha512-GIjfiT9dbmHRiYi6Nl2yFCq7kkwdkp1W/lp2J99rX0yo9tgJGn3lKQATztIjb5tVtevcBtIdICNWqlq5+E8/Pw==
}
engines
:
{
pnpm
:
'
>=8'
}
chokidar@3.6.0
:
resolution
:
{
integrity
:
sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==
}
engines
:
{
node
:
'
>=
8.10.0'
}
chokidar@4.0.3
:
resolution
:
{
integrity
:
sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==
}
engines
:
{
node
:
'
>=
14.16.0'
}
combined-stream@1.0.8
:
resolution
:
{
integrity
:
sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
}
engines
:
{
node
:
'
>=
0.8'
}
commander@4.1.1
:
resolution
:
{
integrity
:
sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==
}
engines
:
{
node
:
'
>=
6'
}
cssesc@3.0.0
:
resolution
:
{
integrity
:
sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
}
engines
:
{
node
:
'
>=4'
}
hasBin
:
true
csstype@3.2.3
:
resolution
:
{
integrity
:
sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==
}
de-indent@1.0.2
:
resolution
:
{
integrity
:
sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==
}
delayed-stream@1.0.0
:
resolution
:
{
integrity
:
sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
}
engines
:
{
node
:
'
>=0.4.0'
}
didyoumean@1.2.2
:
resolution
:
{
integrity
:
sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==
}
dlv@1.1.3
:
resolution
:
{
integrity
:
sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==
}
driver.js@1.4.0
:
resolution
:
{
integrity
:
sha512-Gm64jm6PmcU+si21sQhBrTAM1JvUrR0QhNmjkprNLxohOBzul9+pNHXgQaT9lW84gwg9GMLB3NZGuGolsz5uew==
}
dunder-proto@1.0.1
:
resolution
:
{
integrity
:
sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==
}
engines
:
{
node
:
'
>=
0.4'
}
electron-to-chromium@1.5.267
:
resolution
:
{
integrity
:
sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==
}
entities@7.0.0
:
resolution
:
{
integrity
:
sha512-FDWG5cmEYf2Z00IkYRhbFrwIwvdFKH07uV8dvNy0omp/Qb1xcyCWp2UDtcwJF4QZZvk0sLudP6/hAu42TaqVhQ==
}
engines
:
{
node
:
'
>=0.12'
}
es-define-property@1.0.1
:
resolution
:
{
integrity
:
sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==
}
engines
:
{
node
:
'
>=
0.4'
}
es-errors@1.3.0
:
resolution
:
{
integrity
:
sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
}
engines
:
{
node
:
'
>=
0.4'
}
es-object-atoms@1.1.1
:
resolution
:
{
integrity
:
sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==
}
engines
:
{
node
:
'
>=
0.4'
}
es-set-tostringtag@2.1.0
:
resolution
:
{
integrity
:
sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==
}
engines
:
{
node
:
'
>=
0.4'
}
esbuild@0.21.5
:
resolution
:
{
integrity
:
sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==
}
engines
:
{
node
:
'
>=12'
}
hasBin
:
true
escalade@3.2.0
:
resolution
:
{
integrity
:
sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==
}
engines
:
{
node
:
'
>=6'
}
estree-walker@2.0.2
:
resolution
:
{
integrity
:
sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
}
fast-glob@3.3.3
:
resolution
:
{
integrity
:
sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==
}
engines
:
{
node
:
'
>=8.6.0'
}
fastq@1.20.1
:
resolution
:
{
integrity
:
sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==
}
fdir@6.5.0
:
resolution
:
{
integrity
:
sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==
}
engines
:
{
node
:
'
>=12.0.0'
}
peerDependencies
:
picomatch
:
^3 || ^4
peerDependenciesMeta
:
picomatch
:
optional
:
true
fill-range@7.1.1
:
resolution
:
{
integrity
:
sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==
}
engines
:
{
node
:
'
>=8'
}
follow-redirects@1.15.11
:
resolution
:
{
integrity
:
sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==
}
engines
:
{
node
:
'
>=4.0'
}
peerDependencies
:
debug
:
'
*'
peerDependenciesMeta
:
debug
:
optional
:
true
form-data@4.0.5
:
resolution
:
{
integrity
:
sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==
}
engines
:
{
node
:
'
>=
6'
}
fraction.js@5.3.4
:
resolution
:
{
integrity
:
sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==
}
fsevents@2.3.3
:
resolution
:
{
integrity
:
sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
}
engines
:
{
node
:
^8.16.0 || ^10.6.0 || >=11.0.0
}
os
:
[
darwin
]
function-bind@1.1.2
:
resolution
:
{
integrity
:
sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
}
get-intrinsic@1.3.0
:
resolution
:
{
integrity
:
sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==
}
engines
:
{
node
:
'
>=
0.4'
}
get-proto@1.0.1
:
resolution
:
{
integrity
:
sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==
}
engines
:
{
node
:
'
>=
0.4'
}
glob-parent@5.1.2
:
resolution
:
{
integrity
:
sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
}
engines
:
{
node
:
'
>=
6'
}
glob-parent@6.0.2
:
resolution
:
{
integrity
:
sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
}
engines
:
{
node
:
'
>=10.13.0'
}
gopd@1.2.0
:
resolution
:
{
integrity
:
sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==
}
engines
:
{
node
:
'
>=
0.4'
}
has-symbols@1.1.0
:
resolution
:
{
integrity
:
sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==
}
engines
:
{
node
:
'
>=
0.4'
}
has-tostringtag@1.0.2
:
resolution
:
{
integrity
:
sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==
}
engines
:
{
node
:
'
>=
0.4'
}
hasown@2.0.2
:
resolution
:
{
integrity
:
sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
}
engines
:
{
node
:
'
>=
0.4'
}
he@1.2.0
:
resolution
:
{
integrity
:
sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
}
hasBin
:
true
is-binary-path@2.1.0
:
resolution
:
{
integrity
:
sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
}
engines
:
{
node
:
'
>=8'
}
is-core-module@2.16.1
:
resolution
:
{
integrity
:
sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==
}
engines
:
{
node
:
'
>=
0.4'
}
is-extglob@2.1.1
:
resolution
:
{
integrity
:
sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
}
engines
:
{
node
:
'
>=0.10.0'
}
is-glob@4.0.3
:
resolution
:
{
integrity
:
sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
}
engines
:
{
node
:
'
>=0.10.0'
}
is-number@7.0.0
:
resolution
:
{
integrity
:
sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
}
engines
:
{
node
:
'
>=0.12.0'
}
jiti@1.21.7
:
resolution
:
{
integrity
:
sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==
}
hasBin
:
true
js-tokens@4.0.0
:
resolution
:
{
integrity
:
sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
}
lilconfig@3.1.3
:
resolution
:
{
integrity
:
sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==
}
engines
:
{
node
:
'
>=14'
}
lines-and-columns@1.2.4
:
resolution
:
{
integrity
:
sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
}
magic-string@0.30.21
:
resolution
:
{
integrity
:
sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==
}
math-intrinsics@1.1.0
:
resolution
:
{
integrity
:
sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==
}
engines
:
{
node
:
'
>=
0.4'
}
merge2@1.4.1
:
resolution
:
{
integrity
:
sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
}
engines
:
{
node
:
'
>=
8'
}
micromatch@4.0.8
:
resolution
:
{
integrity
:
sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==
}
engines
:
{
node
:
'
>=8.6'
}
mime-db@1.52.0
:
resolution
:
{
integrity
:
sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
}
engines
:
{
node
:
'
>=
0.6'
}
mime-types@2.1.35
:
resolution
:
{
integrity
:
sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
}
engines
:
{
node
:
'
>=
0.6'
}
minimatch@9.0.5
:
resolution
:
{
integrity
:
sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==
}
engines
:
{
node
:
'
>=16
||
14
>=14.17'
}
muggle-string@0.4.1
:
resolution
:
{
integrity
:
sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==
}
mz@2.7.0
:
resolution
:
{
integrity
:
sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==
}
nanoid@3.3.11
:
resolution
:
{
integrity
:
sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==
}
engines
:
{
node
:
^10 || ^12 || ^13.7 || ^14 || >=15.0.1
}
hasBin
:
true
node-releases@2.0.27
:
resolution
:
{
integrity
:
sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==
}
normalize-path@3.0.0
:
resolution
:
{
integrity
:
sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
}
engines
:
{
node
:
'
>=0.10.0'
}
npm-run-path@6.0.0
:
resolution
:
{
integrity
:
sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==
}
engines
:
{
node
:
'
>=18'
}
object-assign@4.1.1
:
resolution
:
{
integrity
:
sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
}
engines
:
{
node
:
'
>=0.10.0'
}
object-hash@3.0.0
:
resolution
:
{
integrity
:
sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==
}
engines
:
{
node
:
'
>=
6'
}
path-browserify@1.0.1
:
resolution
:
{
integrity
:
sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==
}
path-key@4.0.0
:
resolution
:
{
integrity
:
sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==
}
engines
:
{
node
:
'
>=12'
}
path-parse@1.0.7
:
resolution
:
{
integrity
:
sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
}
picocolors@1.1.1
:
resolution
:
{
integrity
:
sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
}
picomatch@2.3.1
:
resolution
:
{
integrity
:
sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
}
engines
:
{
node
:
'
>=8.6'
}
picomatch@4.0.3
:
resolution
:
{
integrity
:
sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==
}
engines
:
{
node
:
'
>=12'
}
pify@2.3.0
:
resolution
:
{
integrity
:
sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==
}
engines
:
{
node
:
'
>=0.10.0'
}
pinia@2.3.1
:
resolution
:
{
integrity
:
sha512-khUlZSwt9xXCaTbbxFYBKDc/bWAGWJjOgvxETwkTN7KRm66EeT1ZdZj6i2ceh9sP2Pzqsbc704r2yngBrxBVug==
}
peerDependencies
:
typescript
:
'
>=4.4.4'
vue
:
^2.7.0 || ^3.5.11
peerDependenciesMeta
:
typescript
:
optional
:
true
pirates@4.0.7
:
resolution
:
{
integrity
:
sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==
}
engines
:
{
node
:
'
>=
6'
}
postcss-import@15.1.0
:
resolution
:
{
integrity
:
sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==
}
engines
:
{
node
:
'
>=14.0.0'
}
peerDependencies
:
postcss
:
^8.0.0
postcss-js@4.1.0
:
resolution
:
{
integrity
:
sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==
}
engines
:
{
node
:
^12 || ^14 || >= 16
}
peerDependencies
:
postcss
:
^8.4.21
postcss-load-config@6.0.1
:
resolution
:
{
integrity
:
sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==
}
engines
:
{
node
:
'
>=
18'
}
peerDependencies
:
jiti
:
'
>=1.21.0'
postcss
:
'
>=8.0.9'
tsx
:
^4.8.1
yaml
:
^2.4.2
peerDependenciesMeta
:
jiti
:
optional
:
true
postcss
:
optional
:
true
tsx
:
optional
:
true
yaml
:
optional
:
true
postcss-nested@6.2.0
:
resolution
:
{
integrity
:
sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==
}
engines
:
{
node
:
'
>=12.0'
}
peerDependencies
:
postcss
:
^8.2.14
postcss-selector-parser@6.1.2
:
resolution
:
{
integrity
:
sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==
}
engines
:
{
node
:
'
>=4'
}
postcss-value-parser@4.2.0
:
resolution
:
{
integrity
:
sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
}
postcss@8.5.6
:
resolution
:
{
integrity
:
sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==
}
engines
:
{
node
:
^10 || ^12 || >=14
}
proxy-from-env@1.1.0
:
resolution
:
{
integrity
:
sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
}
queue-microtask@1.2.3
:
resolution
:
{
integrity
:
sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
}
read-cache@1.0.0
:
resolution
:
{
integrity
:
sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==
}
readdirp@3.6.0
:
resolution
:
{
integrity
:
sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
}
engines
:
{
node
:
'
>=8.10.0'
}
readdirp@4.1.2
:
resolution
:
{
integrity
:
sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==
}
engines
:
{
node
:
'
>=
14.18.0'
}
resolve@1.22.11
:
resolution
:
{
integrity
:
sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==
}
engines
:
{
node
:
'
>=
0.4'
}
hasBin
:
true
reusify@1.1.0
:
resolution
:
{
integrity
:
sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==
}
engines
:
{
iojs
:
'
>=1.0.0'
,
node
:
'
>=0.10.0'
}
rollup@4.54.0
:
resolution
:
{
integrity
:
sha512-3nk8Y3a9Ea8szgKhinMlGMhGMw89mqule3KWczxhIzqudyHdCIOHw8WJlj/r329fACjKLEh13ZSk7oE22kyeIw==
}
engines
:
{
node
:
'
>=18.0.0'
,
npm
:
'
>=8.0.0'
}
hasBin
:
true
run-parallel@1.2.0
:
resolution
:
{
integrity
:
sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
}
source-map-js@1.2.1
:
resolution
:
{
integrity
:
sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==
}
engines
:
{
node
:
'
>=0.10.0'
}
strip-ansi@7.1.2
:
resolution
:
{
integrity
:
sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==
}
engines
:
{
node
:
'
>=12'
}
sucrase@3.35.1
:
resolution
:
{
integrity
:
sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==
}
engines
:
{
node
:
'
>=16
||
14
>=14.17'
}
hasBin
:
true
supports-preserve-symlinks-flag@1.0.0
:
resolution
:
{
integrity
:
sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
}
engines
:
{
node
:
'
>=
0.4'
}
tailwindcss@3.4.19
:
resolution
:
{
integrity
:
sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==
}
engines
:
{
node
:
'
>=14.0.0'
}
hasBin
:
true
thenify-all@1.6.0
:
resolution
:
{
integrity
:
sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==
}
engines
:
{
node
:
'
>=0.8'
}
thenify@3.3.1
:
resolution
:
{
integrity
:
sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==
}
tiny-invariant@1.3.3
:
resolution
:
{
integrity
:
sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==
}
tinyglobby@0.2.15
:
resolution
:
{
integrity
:
sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==
}
engines
:
{
node
:
'
>=12.0.0'
}
to-regex-range@5.0.1
:
resolution
:
{
integrity
:
sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
}
engines
:
{
node
:
'
>=8.0'
}
ts-interface-checker@0.1.13
:
resolution
:
{
integrity
:
sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==
}
typescript@5.6.3
:
resolution
:
{
integrity
:
sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==
}
engines
:
{
node
:
'
>=14.17'
}
hasBin
:
true
undici-types@6.21.0
:
resolution
:
{
integrity
:
sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==
}
unicorn-magic@0.3.0
:
resolution
:
{
integrity
:
sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==
}
engines
:
{
node
:
'
>=18'
}
update-browserslist-db@1.2.3
:
resolution
:
{
integrity
:
sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==
}
hasBin
:
true
peerDependencies
:
browserslist
:
'
>=
4.21.0'
util-deprecate@1.0.2
:
resolution
:
{
integrity
:
sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
}
vite-plugin-checker@0.9.3
:
resolution
:
{
integrity
:
sha512-Tf7QBjeBtG7q11zG0lvoF38/2AVUzzhMNu+Wk+mcsJ00Rk/FpJ4rmUviVJpzWkagbU13cGXvKpt7CMiqtxVTbQ==
}
engines
:
{
node
:
'
>=14.16'
}
peerDependencies
:
'
@biomejs/biome'
:
'
>=1.7'
eslint
:
'
>=7'
meow
:
^13.2.0
optionator
:
^0.9.4
stylelint
:
'
>=16'
typescript
:
'
*'
vite
:
'
>=2.0.0'
vls
:
'
*'
vti
:
'
*'
vue-tsc
:
~2.2.10
peerDependenciesMeta
:
'
@biomejs/biome'
:
optional
:
true
eslint
:
optional
:
true
meow
:
optional
:
true
optionator
:
optional
:
true
stylelint
:
optional
:
true
typescript
:
optional
:
true
vls
:
optional
:
true
vti
:
optional
:
true
vue-tsc
:
optional
:
true
vite@5.4.21
:
resolution
:
{
integrity
:
sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==
}
engines
:
{
node
:
^18.0.0 || >=20.0.0
}
hasBin
:
true
peerDependencies
:
'
@types/node'
:
^18.0.0 || >=20.0.0
less
:
'
*'
lightningcss
:
^1.21.0
sass
:
'
*'
sass-embedded
:
'
*'
stylus
:
'
*'
sugarss
:
'
*'
terser
:
^5.4.0
peerDependenciesMeta
:
'
@types/node'
:
optional
:
true
less
:
optional
:
true
lightningcss
:
optional
:
true
sass
:
optional
:
true
sass-embedded
:
optional
:
true
stylus
:
optional
:
true
sugarss
:
optional
:
true
terser
:
optional
:
true
vscode-uri@3.1.0
:
resolution
:
{
integrity
:
sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==
}
vue-chartjs@5.3.3
:
resolution
:
{
integrity
:
sha512-jqxtL8KZ6YJ5NTv6XzrzLS7osyegOi28UGNZW0h9OkDL7Sh1396ht4Dorh04aKrl2LiSalQ84WtqiG0RIJb0tA==
}
peerDependencies
:
chart.js
:
^4.1.1
vue
:
^3.0.0-0 || ^2.7.0
vue-demi@0.14.10
:
resolution
:
{
integrity
:
sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==
}
engines
:
{
node
:
'
>=12'
}
hasBin
:
true
peerDependencies
:
'
@vue/composition-api'
:
^1.0.0-rc.1
vue
:
^3.0.0-0 || ^2.6.0
peerDependenciesMeta
:
'
@vue/composition-api'
:
optional
:
true
vue-i18n@9.14.5
:
resolution
:
{
integrity
:
sha512-0jQ9Em3ymWngyiIkj0+c/k7WgaPO+TNzjKSNq9BvBQaKJECqn9cd9fL4tkDhB5G1QBskGl9YxxbDAhgbFtpe2g==
}
engines
:
{
node
:
'
>=
16'
}
peerDependencies
:
vue
:
^3.0.0
vue-router@4.6.4
:
resolution
:
{
integrity
:
sha512-Hz9q5sa33Yhduglwz6g9skT8OBPii+4bFn88w6J+J4MfEo4KRRpmiNG/hHHkdbRFlLBOqxN8y8gf2Fb0MTUgVg==
}
peerDependencies
:
vue
:
^3.5.0
vue-tsc@2.2.12
:
resolution
:
{
integrity
:
sha512-P7OP77b2h/Pmk+lZdJ0YWs+5tJ6J2+uOQPo7tlBnY44QqQSPYvS0qVT4wqDJgwrZaLe47etJLLQRFia71GYITw==
}
hasBin
:
true
peerDependencies
:
typescript
:
'
>=5.0.0'
vue@3.5.26
:
resolution
:
{
integrity
:
sha512-SJ/NTccVyAoNUJmkM9KUqPcYlY+u8OVL1X5EW9RIs3ch5H2uERxyyIUI4MRxVCSOiEcupX9xNGde1tL9ZKpimA==
}
peerDependencies
:
typescript
:
'
*'
peerDependenciesMeta
:
typescript
:
optional
:
true
snapshots
:
'
@alloc/quick-lru@5.2.0'
:
{}
'
@babel/code-frame@7.27.1'
:
dependencies
:
'
@babel/helper-validator-identifier'
:
7.28.5
js-tokens
:
4.0.0
picocolors
:
1.1.1
'
@babel/helper-string-parser@7.27.1'
:
{}
'
@babel/helper-validator-identifier@7.28.5'
:
{}
'
@babel/parser@7.28.5'
:
dependencies
:
'
@babel/types'
:
7.28.5
'
@babel/types@7.28.5'
:
dependencies
:
'
@babel/helper-string-parser'
:
7.27.1
'@babel/helper-validator-identifier'
:
7.28.5
'
@esbuild/aix-ppc64@0.21.5'
:
optional
:
true
'
@esbuild/android-arm64@0.21.5'
:
optional
:
true
'
@esbuild/android-arm@0.21.5'
:
optional
:
true
'
@esbuild/android-x64@0.21.5'
:
optional
:
true
'
@esbuild/darwin-arm64@0.21.5'
:
optional
:
true
'
@esbuild/darwin-x64@0.21.5'
:
optional
:
true
'
@esbuild/freebsd-arm64@0.21.5'
:
optional
:
true
'
@esbuild/freebsd-x64@0.21.5'
:
optional
:
true
'
@esbuild/linux-arm64@0.21.5'
:
optional
:
true
'
@esbuild/linux-arm@0.21.5'
:
optional
:
true
'
@esbuild/linux-ia32@0.21.5'
:
optional
:
true
'
@esbuild/linux-loong64@0.21.5'
:
optional
:
true
'
@esbuild/linux-mips64el@0.21.5'
:
optional
:
true
'
@esbuild/linux-ppc64@0.21.5'
:
optional
:
true
'
@esbuild/linux-riscv64@0.21.5'
:
optional
:
true
'
@esbuild/linux-s390x@0.21.5'
:
optional
:
true
'
@esbuild/linux-x64@0.21.5'
:
optional
:
true
'
@esbuild/netbsd-x64@0.21.5'
:
optional
:
true
'
@esbuild/openbsd-x64@0.21.5'
:
optional
:
true
'
@esbuild/sunos-x64@0.21.5'
:
optional
:
true
'
@esbuild/win32-arm64@0.21.5'
:
optional
:
true
'
@esbuild/win32-ia32@0.21.5'
:
optional
:
true
'
@esbuild/win32-x64@0.21.5'
:
optional
:
true
'
@intlify/core-base@9.14.5'
:
dependencies
:
'
@intlify/message-compiler'
:
9.14.5
'@intlify/shared'
:
9.14.5
'
@intlify/message-compiler@9.14.5'
:
dependencies
:
'
@intlify/shared'
:
9.14.5
source-map-js
:
1.2.1
'
@intlify/shared@9.14.5'
:
{}
'
@jridgewell/gen-mapping@0.3.13'
:
dependencies
:
'
@jridgewell/sourcemap-codec'
:
1.5.5
'@jridgewell/trace-mapping'
:
0.3.31
'
@jridgewell/resolve-uri@3.1.2'
:
{}
'
@jridgewell/sourcemap-codec@1.5.5'
:
{}
'
@jridgewell/trace-mapping@0.3.31'
:
dependencies
:
'
@jridgewell/resolve-uri'
:
3.1.2
'@jridgewell/sourcemap-codec'
:
1.5.5
'
@kurkle/color@0.3.4'
:
{}
'
@nodelib/fs.scandir@2.1.5'
:
dependencies
:
'
@nodelib/fs.stat'
:
2.0.5
run-parallel
:
1.2.0
'
@nodelib/fs.stat@2.0.5'
:
{}
'
@nodelib/fs.walk@1.2.8'
:
dependencies
:
'
@nodelib/fs.scandir'
:
2.1.5
fastq
:
1.20.1
'
@rollup/rollup-android-arm-eabi@4.54.0'
:
optional
:
true
'
@rollup/rollup-android-arm64@4.54.0'
:
optional
:
true
'
@rollup/rollup-darwin-arm64@4.54.0'
:
optional
:
true
'
@rollup/rollup-darwin-x64@4.54.0'
:
optional
:
true
'
@rollup/rollup-freebsd-arm64@4.54.0'
:
optional
:
true
'
@rollup/rollup-freebsd-x64@4.54.0'
:
optional
:
true
'
@rollup/rollup-linux-arm-gnueabihf@4.54.0'
:
optional
:
true
'
@rollup/rollup-linux-arm-musleabihf@4.54.0'
:
optional
:
true
'
@rollup/rollup-linux-arm64-gnu@4.54.0'
:
optional
:
true
'
@rollup/rollup-linux-arm64-musl@4.54.0'
:
optional
:
true
'
@rollup/rollup-linux-loong64-gnu@4.54.0'
:
optional
:
true
'
@rollup/rollup-linux-ppc64-gnu@4.54.0'
:
optional
:
true
'
@rollup/rollup-linux-riscv64-gnu@4.54.0'
:
optional
:
true
'
@rollup/rollup-linux-riscv64-musl@4.54.0'
:
optional
:
true
'
@rollup/rollup-linux-s390x-gnu@4.54.0'
:
optional
:
true
'
@rollup/rollup-linux-x64-gnu@4.54.0'
:
optional
:
true
'
@rollup/rollup-linux-x64-musl@4.54.0'
:
optional
:
true
'
@rollup/rollup-openharmony-arm64@4.54.0'
:
optional
:
true
'
@rollup/rollup-win32-arm64-msvc@4.54.0'
:
optional
:
true
'
@rollup/rollup-win32-ia32-msvc@4.54.0'
:
optional
:
true
'
@rollup/rollup-win32-x64-gnu@4.54.0'
:
optional
:
true
'
@rollup/rollup-win32-x64-msvc@4.54.0'
:
optional
:
true
'
@types/estree@1.0.8'
:
{}
'
@types/node@20.19.27'
:
dependencies
:
undici-types
:
6.21.0
'
@types/web-bluetooth@0.0.20'
:
{}
'
@vitejs/plugin-vue@5.2.4(vite@5.4.21(@types/node@20.19.27))(vue@3.5.26(typescript@5.6.3))'
:
dependencies
:
vite
:
5.4.21(@types/node@20.19.27)
vue
:
3.5.26(typescript@5.6.3)
'
@volar/language-core@2.4.15'
:
dependencies
:
'
@volar/source-map'
:
2.4.15
'
@volar/source-map@2.4.15'
:
{}
'
@volar/typescript@2.4.15'
:
dependencies
:
'
@volar/language-core'
:
2.4.15
path-browserify
:
1.0.1
vscode-uri
:
3.1.0
'
@vue/compiler-core@3.5.26'
:
dependencies
:
'
@babel/parser'
:
7.28.5
'@vue/shared'
:
3.5.26
entities
:
7.0.0
estree-walker
:
2.0.2
source-map-js
:
1.2.1
'
@vue/compiler-dom@3.5.26'
:
dependencies
:
'
@vue/compiler-core'
:
3.5.26
'@vue/shared'
:
3.5.26
'
@vue/compiler-sfc@3.5.26'
:
dependencies
:
'
@babel/parser'
:
7.28.5
'@vue/compiler-core'
:
3.5.26
'@vue/compiler-dom'
:
3.5.26
'@vue/compiler-ssr'
:
3.5.26
'@vue/shared'
:
3.5.26
estree-walker
:
2.0.2
magic-string
:
0.30.21
postcss
:
8.5.6
source-map-js
:
1.2.1
'
@vue/compiler-ssr@3.5.26'
:
dependencies
:
'
@vue/compiler-dom'
:
3.5.26
'@vue/shared'
:
3.5.26
'
@vue/compiler-vue2@2.7.16'
:
dependencies
:
de-indent
:
1.0.2
he
:
1.2.0
'
@vue/devtools-api@6.6.4'
:
{}
'
@vue/language-core@2.2.12(typescript@5.6.3)'
:
dependencies
:
'
@volar/language-core'
:
2.4.15
'@vue/compiler-dom'
:
3.5.26
'@vue/compiler-vue2'
:
2.7.16
'@vue/shared'
:
3.5.26
alien-signals
:
1.0.13
minimatch
:
9.0.5
muggle-string
:
0.4.1
path-browserify
:
1.0.1
optionalDependencies
:
typescript
:
5.6.3
'
@vue/reactivity@3.5.26'
:
dependencies
:
'
@vue/shared'
:
3.5.26
'
@vue/runtime-core@3.5.26'
:
dependencies
:
'
@vue/reactivity'
:
3.5.26
'@vue/shared'
:
3.5.26
'
@vue/runtime-dom@3.5.26'
:
dependencies
:
'
@vue/reactivity'
:
3.5.26
'@vue/runtime-core'
:
3.5.26
'@vue/shared'
:
3.5.26
csstype
:
3.2.3
'
@vue/server-renderer@3.5.26(vue@3.5.26(typescript@5.6.3))'
:
dependencies
:
'
@vue/compiler-ssr'
:
3.5.26
'@vue/shared'
:
3.5.26
vue
:
3.5.26(typescript@5.6.3)
'
@vue/shared@3.5.26'
:
{}
'
@vueuse/core@10.11.1(vue@3.5.26(typescript@5.6.3))'
:
dependencies
:
'
@types/web-bluetooth'
:
0.0.20
'@vueuse/metadata'
:
10.11.1
'@vueuse/shared'
:
10.11.1(vue@3.5.26(typescript@5.6.3))
vue-demi
:
0.14.10(vue@3.5.26(typescript@5.6.3))
transitivePeerDependencies
:
-
'
@vue/composition-api'
-
vue
'
@vueuse/metadata@10.11.1'
:
{}
'
@vueuse/shared@10.11.1(vue@3.5.26(typescript@5.6.3))'
:
dependencies
:
vue-demi
:
0.14.10(vue@3.5.26(typescript@5.6.3))
transitivePeerDependencies
:
-
'
@vue/composition-api'
-
vue
alien-signals@1.0.13
:
{}
ansi-regex@6.2.2
:
{}
any-promise@1.3.0
:
{}
anymatch@3.1.3
:
dependencies
:
normalize-path
:
3.0.0
picomatch
:
2.3.1
arg@5.0.2
:
{}
asynckit@0.4.0
:
{}
autoprefixer@10.4.23(postcss@8.5.6)
:
dependencies
:
browserslist
:
4.28.1
caniuse-lite
:
1.0.30001761
fraction.js
:
5.3.4
picocolors
:
1.1.1
postcss
:
8.5.6
postcss-value-parser
:
4.2.0
axios@1.13.2
:
dependencies
:
follow-redirects
:
1.15.11
form-data
:
4.0.5
proxy-from-env
:
1.1.0
transitivePeerDependencies
:
-
debug
balanced-match@1.0.2
:
{}
baseline-browser-mapping@2.9.11
:
{}
binary-extensions@2.3.0
:
{}
brace-expansion@2.0.2
:
dependencies
:
balanced-match
:
1.0.2
braces@3.0.3
:
dependencies
:
fill-range
:
7.1.1
browserslist@4.28.1
:
dependencies
:
baseline-browser-mapping
:
2.9.11
caniuse-lite
:
1.0.30001761
electron-to-chromium
:
1.5.267
node-releases
:
2.0.27
update-browserslist-db
:
1.2.3(browserslist@4.28.1)
call-bind-apply-helpers@1.0.2
:
dependencies
:
es-errors
:
1.3.0
function-bind
:
1.1.2
camelcase-css@2.0.1
:
{}
caniuse-lite@1.0.30001761
:
{}
chart.js@4.5.1
:
dependencies
:
'
@kurkle/color'
:
0.3.4
chokidar@3.6.0
:
dependencies
:
anymatch
:
3.1.3
braces
:
3.0.3
glob-parent
:
5.1.2
is-binary-path
:
2.1.0
is-glob
:
4.0.3
normalize-path
:
3.0.0
readdirp
:
3.6.0
optionalDependencies
:
fsevents
:
2.3.3
chokidar@4.0.3
:
dependencies
:
readdirp
:
4.1.2
combined-stream@1.0.8
:
dependencies
:
delayed-stream
:
1.0.0
commander@4.1.1
:
{}
cssesc@3.0.0
:
{}
csstype@3.2.3
:
{}
de-indent@1.0.2
:
{}
delayed-stream@1.0.0
:
{}
didyoumean@1.2.2
:
{}
dlv@1.1.3
:
{}
driver.js@1.4.0
:
{}
dunder-proto@1.0.1
:
dependencies
:
call-bind-apply-helpers
:
1.0.2
es-errors
:
1.3.0
gopd
:
1.2.0
electron-to-chromium@1.5.267
:
{}
entities@7.0.0
:
{}
es-define-property@1.0.1
:
{}
es-errors@1.3.0
:
{}
es-object-atoms@1.1.1
:
dependencies
:
es-errors
:
1.3.0
es-set-tostringtag@2.1.0
:
dependencies
:
es-errors
:
1.3.0
get-intrinsic
:
1.3.0
has-tostringtag
:
1.0.2
hasown
:
2.0.2
esbuild@0.21.5
:
optionalDependencies
:
'
@esbuild/aix-ppc64'
:
0.21.5
'@esbuild/android-arm'
:
0.21.5
'@esbuild/android-arm64'
:
0.21.5
'@esbuild/android-x64'
:
0.21.5
'@esbuild/darwin-arm64'
:
0.21.5
'@esbuild/darwin-x64'
:
0.21.5
'@esbuild/freebsd-arm64'
:
0.21.5
'@esbuild/freebsd-x64'
:
0.21.5
'@esbuild/linux-arm'
:
0.21.5
'@esbuild/linux-arm64'
:
0.21.5
'@esbuild/linux-ia32'
:
0.21.5
'@esbuild/linux-loong64'
:
0.21.5
'@esbuild/linux-mips64el'
:
0.21.5
'@esbuild/linux-ppc64'
:
0.21.5
'@esbuild/linux-riscv64'
:
0.21.5
'@esbuild/linux-s390x'
:
0.21.5
'@esbuild/linux-x64'
:
0.21.5
'@esbuild/netbsd-x64'
:
0.21.5
'@esbuild/openbsd-x64'
:
0.21.5
'@esbuild/sunos-x64'
:
0.21.5
'@esbuild/win32-arm64'
:
0.21.5
'@esbuild/win32-ia32'
:
0.21.5
'@esbuild/win32-x64'
:
0.21.5
escalade@3.2.0
:
{}
estree-walker@2.0.2
:
{}
fast-glob@3.3.3
:
dependencies
:
'
@nodelib/fs.stat'
:
2.0.5
'@nodelib/fs.walk'
:
1.2.8
glob-parent
:
5.1.2
merge2
:
1.4.1
micromatch
:
4.0.8
fastq@1.20.1
:
dependencies
:
reusify
:
1.1.0
fdir@6.5.0(picomatch@4.0.3)
:
optionalDependencies
:
picomatch
:
4.0.3
fill-range@7.1.1
:
dependencies
:
to-regex-range
:
5.0.1
follow-redirects@1.15.11
:
{}
form-data@4.0.5
:
dependencies
:
asynckit
:
0.4.0
combined-stream
:
1.0.8
es-set-tostringtag
:
2.1.0
hasown
:
2.0.2
mime-types
:
2.1.35
fraction.js@5.3.4
:
{}
fsevents@2.3.3
:
optional
:
true
function-bind@1.1.2
:
{}
get-intrinsic@1.3.0
:
dependencies
:
call-bind-apply-helpers
:
1.0.2
es-define-property
:
1.0.1
es-errors
:
1.3.0
es-object-atoms
:
1.1.1
function-bind
:
1.1.2
get-proto
:
1.0.1
gopd
:
1.2.0
has-symbols
:
1.1.0
hasown
:
2.0.2
math-intrinsics
:
1.1.0
get-proto@1.0.1
:
dependencies
:
dunder-proto
:
1.0.1
es-object-atoms
:
1.1.1
glob-parent@5.1.2
:
dependencies
:
is-glob
:
4.0.3
glob-parent@6.0.2
:
dependencies
:
is-glob
:
4.0.3
gopd@1.2.0
:
{}
has-symbols@1.1.0
:
{}
has-tostringtag@1.0.2
:
dependencies
:
has-symbols
:
1.1.0
hasown@2.0.2
:
dependencies
:
function-bind
:
1.1.2
he@1.2.0
:
{}
is-binary-path@2.1.0
:
dependencies
:
binary-extensions
:
2.3.0
is-core-module@2.16.1
:
dependencies
:
hasown
:
2.0.2
is-extglob@2.1.1
:
{}
is-glob@4.0.3
:
dependencies
:
is-extglob
:
2.1.1
is-number@7.0.0
:
{}
jiti@1.21.7
:
{}
js-tokens@4.0.0
:
{}
lilconfig@3.1.3
:
{}
lines-and-columns@1.2.4
:
{}
magic-string@0.30.21
:
dependencies
:
'
@jridgewell/sourcemap-codec'
:
1.5.5
math-intrinsics@1.1.0
:
{}
merge2@1.4.1
:
{}
micromatch@4.0.8
:
dependencies
:
braces
:
3.0.3
picomatch
:
2.3.1
mime-db@1.52.0
:
{}
mime-types@2.1.35
:
dependencies
:
mime-db
:
1.52.0
minimatch@9.0.5
:
dependencies
:
brace-expansion
:
2.0.2
muggle-string@0.4.1
:
{}
mz@2.7.0
:
dependencies
:
any-promise
:
1.3.0
object-assign
:
4.1.1
thenify-all
:
1.6.0
nanoid@3.3.11
:
{}
node-releases@2.0.27
:
{}
normalize-path@3.0.0
:
{}
npm-run-path@6.0.0
:
dependencies
:
path-key
:
4.0.0
unicorn-magic
:
0.3.0
object-assign@4.1.1
:
{}
object-hash@3.0.0
:
{}
path-browserify@1.0.1
:
{}
path-key@4.0.0
:
{}
path-parse@1.0.7
:
{}
picocolors@1.1.1
:
{}
picomatch@2.3.1
:
{}
picomatch@4.0.3
:
{}
pify@2.3.0
:
{}
pinia@2.3.1(typescript@5.6.3)(vue@3.5.26(typescript@5.6.3))
:
dependencies
:
'
@vue/devtools-api'
:
6.6.4
vue
:
3.5.26(typescript@5.6.3)
vue-demi
:
0.14.10(vue@3.5.26(typescript@5.6.3))
optionalDependencies
:
typescript
:
5.6.3
transitivePeerDependencies
:
-
'
@vue/composition-api'
pirates@4.0.7
:
{}
postcss-import@15.1.0(postcss@8.5.6)
:
dependencies
:
postcss
:
8.5.6
postcss-value-parser
:
4.2.0
read-cache
:
1.0.0
resolve
:
1.22.11
postcss-js@4.1.0(postcss@8.5.6)
:
dependencies
:
camelcase-css
:
2.0.1
postcss
:
8.5.6
postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.6)
:
dependencies
:
lilconfig
:
3.1.3
optionalDependencies
:
jiti
:
1.21.7
postcss
:
8.5.6
postcss-nested@6.2.0(postcss@8.5.6)
:
dependencies
:
postcss
:
8.5.6
postcss-selector-parser
:
6.1.2
postcss-selector-parser@6.1.2
:
dependencies
:
cssesc
:
3.0.0
util-deprecate
:
1.0.2
postcss-value-parser@4.2.0
:
{}
postcss@8.5.6
:
dependencies
:
nanoid
:
3.3.11
picocolors
:
1.1.1
source-map-js
:
1.2.1
proxy-from-env@1.1.0
:
{}
queue-microtask@1.2.3
:
{}
read-cache@1.0.0
:
dependencies
:
pify
:
2.3.0
readdirp@3.6.0
:
dependencies
:
picomatch
:
2.3.1
readdirp@4.1.2
:
{}
resolve@1.22.11
:
dependencies
:
is-core-module
:
2.16.1
path-parse
:
1.0.7
supports-preserve-symlinks-flag
:
1.0.0
reusify@1.1.0
:
{}
rollup@4.54.0
:
dependencies
:
'
@types/estree'
:
1.0.8
optionalDependencies
:
'
@rollup/rollup-android-arm-eabi'
:
4.54.0
'@rollup/rollup-android-arm64'
:
4.54.0
'@rollup/rollup-darwin-arm64'
:
4.54.0
'@rollup/rollup-darwin-x64'
:
4.54.0
'@rollup/rollup-freebsd-arm64'
:
4.54.0
'@rollup/rollup-freebsd-x64'
:
4.54.0
'@rollup/rollup-linux-arm-gnueabihf'
:
4.54.0
'@rollup/rollup-linux-arm-musleabihf'
:
4.54.0
'@rollup/rollup-linux-arm64-gnu'
:
4.54.0
'@rollup/rollup-linux-arm64-musl'
:
4.54.0
'@rollup/rollup-linux-loong64-gnu'
:
4.54.0
'@rollup/rollup-linux-ppc64-gnu'
:
4.54.0
'@rollup/rollup-linux-riscv64-gnu'
:
4.54.0
'@rollup/rollup-linux-riscv64-musl'
:
4.54.0
'@rollup/rollup-linux-s390x-gnu'
:
4.54.0
'@rollup/rollup-linux-x64-gnu'
:
4.54.0
'@rollup/rollup-linux-x64-musl'
:
4.54.0
'@rollup/rollup-openharmony-arm64'
:
4.54.0
'@rollup/rollup-win32-arm64-msvc'
:
4.54.0
'@rollup/rollup-win32-ia32-msvc'
:
4.54.0
'@rollup/rollup-win32-x64-gnu'
:
4.54.0
'@rollup/rollup-win32-x64-msvc'
:
4.54.0
fsevents
:
2.3.3
run-parallel@1.2.0
:
dependencies
:
queue-microtask
:
1.2.3
source-map-js@1.2.1
:
{}
strip-ansi@7.1.2
:
dependencies
:
ansi-regex
:
6.2.2
sucrase@3.35.1
:
dependencies
:
'
@jridgewell/gen-mapping'
:
0.3.13
commander
:
4.1.1
lines-and-columns
:
1.2.4
mz
:
2.7.0
pirates
:
4.0.7
tinyglobby
:
0.2.15
ts-interface-checker
:
0.1.13
supports-preserve-symlinks-flag@1.0.0
:
{}
tailwindcss@3.4.19
:
dependencies
:
'
@alloc/quick-lru'
:
5.2.0
arg
:
5.0.2
chokidar
:
3.6.0
didyoumean
:
1.2.2
dlv
:
1.1.3
fast-glob
:
3.3.3
glob-parent
:
6.0.2
is-glob
:
4.0.3
jiti
:
1.21.7
lilconfig
:
3.1.3
micromatch
:
4.0.8
normalize-path
:
3.0.0
object-hash
:
3.0.0
picocolors
:
1.1.1
postcss
:
8.5.6
postcss-import
:
15.1.0(postcss@8.5.6)
postcss-js
:
4.1.0(postcss@8.5.6)
postcss-load-config
:
6.0.1(jiti@1.21.7)(postcss@8.5.6)
postcss-nested
:
6.2.0(postcss@8.5.6)
postcss-selector-parser
:
6.1.2
resolve
:
1.22.11
sucrase
:
3.35.1
transitivePeerDependencies
:
-
tsx
-
yaml
thenify-all@1.6.0
:
dependencies
:
thenify
:
3.3.1
thenify@3.3.1
:
dependencies
:
any-promise
:
1.3.0
tiny-invariant@1.3.3
:
{}
tinyglobby@0.2.15
:
dependencies
:
fdir
:
6.5.0(picomatch@4.0.3)
picomatch
:
4.0.3
to-regex-range@5.0.1
:
dependencies
:
is-number
:
7.0.0
ts-interface-checker@0.1.13
:
{}
typescript@5.6.3
:
{}
undici-types@6.21.0
:
{}
unicorn-magic@0.3.0
:
{}
update-browserslist-db@1.2.3(browserslist@4.28.1)
:
dependencies
:
browserslist
:
4.28.1
escalade
:
3.2.0
picocolors
:
1.1.1
util-deprecate@1.0.2
:
{}
vite-plugin-checker@0.9.3(typescript@5.6.3)(vite@5.4.21(@types/node@20.19.27))(vue-tsc@2.2.12(typescript@5.6.3))
:
dependencies
:
'
@babel/code-frame'
:
7.27.1
chokidar
:
4.0.3
npm-run-path
:
6.0.0
picocolors
:
1.1.1
picomatch
:
4.0.3
strip-ansi
:
7.1.2
tiny-invariant
:
1.3.3
tinyglobby
:
0.2.15
vite
:
5.4.21(@types/node@20.19.27)
vscode-uri
:
3.1.0
optionalDependencies
:
typescript
:
5.6.3
vue-tsc
:
2.2.12(typescript@5.6.3)
vite@5.4.21(@types/node@20.19.27)
:
dependencies
:
esbuild
:
0.21.5
postcss
:
8.5.6
rollup
:
4.54.0
optionalDependencies
:
'
@types/node'
:
20.19.27
fsevents
:
2.3.3
vscode-uri@3.1.0
:
{}
vue-chartjs@5.3.3(chart.js@4.5.1)(vue@3.5.26(typescript@5.6.3))
:
dependencies
:
chart.js
:
4.5.1
vue
:
3.5.26(typescript@5.6.3)
vue-demi@0.14.10(vue@3.5.26(typescript@5.6.3))
:
dependencies
:
vue
:
3.5.26(typescript@5.6.3)
vue-i18n@9.14.5(vue@3.5.26(typescript@5.6.3))
:
dependencies
:
'
@intlify/core-base'
:
9.14.5
'@intlify/shared'
:
9.14.5
'@vue/devtools-api'
:
6.6.4
vue
:
3.5.26(typescript@5.6.3)
vue-router@4.6.4(vue@3.5.26(typescript@5.6.3))
:
dependencies
:
'
@vue/devtools-api'
:
6.6.4
vue
:
3.5.26(typescript@5.6.3)
vue-tsc@2.2.12(typescript@5.6.3)
:
dependencies
:
'
@volar/typescript'
:
2.4.15
'@vue/language-core'
:
2.2.12(typescript@5.6.3)
typescript
:
5.6.3
vue@3.5.26(typescript@5.6.3)
:
dependencies
:
'
@vue/compiler-dom'
:
3.5.26
'@vue/compiler-sfc'
:
3.5.26
'@vue/runtime-dom'
:
3.5.26
'@vue/server-renderer'
:
3.5.26(vue@3.5.26(typescript@5.6.3))
'@vue/shared'
:
3.5.26
optionalDependencies
:
typescript
:
5.6.3
frontend/src/components/Guide/steps.ts
0 → 100644
View file @
942c3e15
import
{
DriveStep
}
from
'
driver.js
'
/**
* 管理员完整引导流程
* 交互式引导:指引用户实际操作
* @param t 国际化函数
* @param isSimpleMode 是否为简易模式(简易模式下会过滤分组相关步骤)
*/
export
const
getAdminSteps
=
(
t
:
(
key
:
string
)
=>
string
,
isSimpleMode
=
false
):
DriveStep
[]
=>
{
const
allSteps
:
DriveStep
[]
=
[
// ========== 欢迎介绍 ==========
{
popover
:
{
title
:
t
(
'
onboarding.admin.welcome.title
'
),
description
:
t
(
'
onboarding.admin.welcome.description
'
),
align
:
'
center
'
,
nextBtnText
:
t
(
'
onboarding.admin.welcome.nextBtn
'
),
prevBtnText
:
t
(
'
onboarding.admin.welcome.prevBtn
'
)
}
},
// ========== 第一部分:创建分组 ==========
{
element
:
'
#sidebar-group-manage
'
,
popover
:
{
title
:
t
(
'
onboarding.admin.groupManage.title
'
),
description
:
t
(
'
onboarding.admin.groupManage.description
'
),
side
:
'
right
'
,
align
:
'
center
'
,
showButtons
:
[
'
close
'
],
}
},
{
element
:
'
[data-tour="groups-create-btn"]
'
,
popover
:
{
title
:
t
(
'
onboarding.admin.createGroup.title
'
),
description
:
t
(
'
onboarding.admin.createGroup.description
'
),
side
:
'
bottom
'
,
align
:
'
end
'
,
showButtons
:
[
'
close
'
]
}
},
{
element
:
'
[data-tour="group-form-name"]
'
,
popover
:
{
title
:
t
(
'
onboarding.admin.groupName.title
'
),
description
:
t
(
'
onboarding.admin.groupName.description
'
),
side
:
'
right
'
,
align
:
'
start
'
,
showButtons
:
[
'
next
'
,
'
previous
'
]
}
},
{
element
:
'
[data-tour="group-form-platform"]
'
,
popover
:
{
title
:
t
(
'
onboarding.admin.groupPlatform.title
'
),
description
:
t
(
'
onboarding.admin.groupPlatform.description
'
),
side
:
'
right
'
,
align
:
'
start
'
,
showButtons
:
[
'
next
'
,
'
previous
'
]
}
},
{
element
:
'
[data-tour="group-form-multiplier"]
'
,
popover
:
{
title
:
t
(
'
onboarding.admin.groupMultiplier.title
'
),
description
:
t
(
'
onboarding.admin.groupMultiplier.description
'
),
side
:
'
right
'
,
align
:
'
start
'
,
showButtons
:
[
'
next
'
,
'
previous
'
]
}
},
{
element
:
'
[data-tour="group-form-exclusive"]
'
,
popover
:
{
title
:
t
(
'
onboarding.admin.groupExclusive.title
'
),
description
:
t
(
'
onboarding.admin.groupExclusive.description
'
),
side
:
'
top
'
,
align
:
'
start
'
,
showButtons
:
[
'
next
'
,
'
previous
'
]
}
},
{
element
:
'
[data-tour="group-form-submit"]
'
,
popover
:
{
title
:
t
(
'
onboarding.admin.groupSubmit.title
'
),
description
:
t
(
'
onboarding.admin.groupSubmit.description
'
),
side
:
'
left
'
,
align
:
'
center
'
,
showButtons
:
[
'
close
'
]
}
},
// ========== 第二部分:创建账号授权 ==========
{
element
:
'
#sidebar-channel-manage
'
,
popover
:
{
title
:
t
(
'
onboarding.admin.accountManage.title
'
),
description
:
t
(
'
onboarding.admin.accountManage.description
'
),
side
:
'
right
'
,
align
:
'
center
'
,
showButtons
:
[
'
close
'
]
}
},
{
element
:
'
[data-tour="accounts-create-btn"]
'
,
popover
:
{
title
:
t
(
'
onboarding.admin.createAccount.title
'
),
description
:
t
(
'
onboarding.admin.createAccount.description
'
),
side
:
'
bottom
'
,
align
:
'
end
'
,
showButtons
:
[
'
close
'
]
}
},
{
element
:
'
[data-tour="account-form-name"]
'
,
popover
:
{
title
:
t
(
'
onboarding.admin.accountName.title
'
),
description
:
t
(
'
onboarding.admin.accountName.description
'
),
side
:
'
right
'
,
align
:
'
start
'
,
showButtons
:
[
'
next
'
,
'
previous
'
]
}
},
{
element
:
'
[data-tour="account-form-platform"]
'
,
popover
:
{
title
:
t
(
'
onboarding.admin.accountPlatform.title
'
),
description
:
t
(
'
onboarding.admin.accountPlatform.description
'
),
side
:
'
right
'
,
align
:
'
start
'
,
showButtons
:
[
'
next
'
,
'
previous
'
]
}
},
{
element
:
'
[data-tour="account-form-type"]
'
,
popover
:
{
title
:
t
(
'
onboarding.admin.accountType.title
'
),
description
:
t
(
'
onboarding.admin.accountType.description
'
),
side
:
'
right
'
,
align
:
'
start
'
,
showButtons
:
[
'
next
'
,
'
previous
'
]
}
},
{
element
:
'
[data-tour="account-form-priority"]
'
,
popover
:
{
title
:
t
(
'
onboarding.admin.accountPriority.title
'
),
description
:
t
(
'
onboarding.admin.accountPriority.description
'
),
side
:
'
top
'
,
align
:
'
start
'
,
showButtons
:
[
'
next
'
,
'
previous
'
]
}
},
{
element
:
'
[data-tour="account-form-groups"]
'
,
popover
:
{
title
:
t
(
'
onboarding.admin.accountGroups.title
'
),
description
:
t
(
'
onboarding.admin.accountGroups.description
'
),
side
:
'
top
'
,
align
:
'
center
'
,
showButtons
:
[
'
next
'
,
'
previous
'
]
}
},
{
element
:
'
[data-tour="account-form-submit"]
'
,
popover
:
{
title
:
t
(
'
onboarding.admin.accountSubmit.title
'
),
description
:
t
(
'
onboarding.admin.accountSubmit.description
'
),
side
:
'
left
'
,
align
:
'
center
'
,
showButtons
:
[
'
close
'
]
}
},
// ========== 第三部分:创建API密钥 ==========
{
element
:
'
[data-tour="sidebar-my-keys"]
'
,
popover
:
{
title
:
t
(
'
onboarding.admin.keyManage.title
'
),
description
:
t
(
'
onboarding.admin.keyManage.description
'
),
side
:
'
right
'
,
align
:
'
center
'
,
showButtons
:
[
'
close
'
]
}
},
{
element
:
'
[data-tour="keys-create-btn"]
'
,
popover
:
{
title
:
t
(
'
onboarding.admin.createKey.title
'
),
description
:
t
(
'
onboarding.admin.createKey.description
'
),
side
:
'
bottom
'
,
align
:
'
end
'
,
showButtons
:
[
'
close
'
]
}
},
{
element
:
'
[data-tour="key-form-name"]
'
,
popover
:
{
title
:
t
(
'
onboarding.admin.keyName.title
'
),
description
:
t
(
'
onboarding.admin.keyName.description
'
),
side
:
'
right
'
,
align
:
'
start
'
,
showButtons
:
[
'
next
'
,
'
previous
'
]
}
},
{
element
:
'
[data-tour="key-form-group"]
'
,
popover
:
{
title
:
t
(
'
onboarding.admin.keyGroup.title
'
),
description
:
t
(
'
onboarding.admin.keyGroup.description
'
),
side
:
'
right
'
,
align
:
'
start
'
,
showButtons
:
[
'
next
'
,
'
previous
'
]
}
},
{
element
:
'
[data-tour="key-form-submit"]
'
,
popover
:
{
title
:
t
(
'
onboarding.admin.keySubmit.title
'
),
description
:
t
(
'
onboarding.admin.keySubmit.description
'
),
side
:
'
left
'
,
align
:
'
center
'
,
showButtons
:
[
'
close
'
]
}
}
]
// 简易模式下过滤分组相关步骤
if
(
isSimpleMode
)
{
return
allSteps
.
filter
(
step
=>
{
const
element
=
step
.
element
as
string
|
undefined
// 过滤掉分组管理和账号分组选择相关步骤
return
!
element
||
(
!
element
.
includes
(
'
sidebar-group-manage
'
)
&&
!
element
.
includes
(
'
groups-create-btn
'
)
&&
!
element
.
includes
(
'
group-form-
'
)
&&
!
element
.
includes
(
'
account-form-groups
'
)
)
})
}
return
allSteps
}
/**
* 普通用户引导流程
*/
export
const
getUserSteps
=
(
t
:
(
key
:
string
)
=>
string
):
DriveStep
[]
=>
[
{
popover
:
{
title
:
t
(
'
onboarding.user.welcome.title
'
),
description
:
t
(
'
onboarding.user.welcome.description
'
),
align
:
'
center
'
,
nextBtnText
:
t
(
'
onboarding.user.welcome.nextBtn
'
),
prevBtnText
:
t
(
'
onboarding.user.welcome.prevBtn
'
)
}
},
{
element
:
'
[data-tour="sidebar-my-keys"]
'
,
popover
:
{
title
:
t
(
'
onboarding.user.keyManage.title
'
),
description
:
t
(
'
onboarding.user.keyManage.description
'
),
side
:
'
right
'
,
align
:
'
center
'
,
showButtons
:
[
'
close
'
]
}
},
{
element
:
'
[data-tour="keys-create-btn"]
'
,
popover
:
{
title
:
t
(
'
onboarding.user.createKey.title
'
),
description
:
t
(
'
onboarding.user.createKey.description
'
),
side
:
'
bottom
'
,
align
:
'
end
'
,
showButtons
:
[
'
close
'
]
}
},
{
element
:
'
[data-tour="key-form-name"]
'
,
popover
:
{
title
:
t
(
'
onboarding.user.keyName.title
'
),
description
:
t
(
'
onboarding.user.keyName.description
'
),
side
:
'
right
'
,
align
:
'
start
'
,
showButtons
:
[
'
next
'
,
'
previous
'
]
}
},
{
element
:
'
[data-tour="key-form-group"]
'
,
popover
:
{
title
:
t
(
'
onboarding.user.keyGroup.title
'
),
description
:
t
(
'
onboarding.user.keyGroup.description
'
),
side
:
'
right
'
,
align
:
'
start
'
,
showButtons
:
[
'
next
'
,
'
previous
'
]
}
},
{
element
:
'
[data-tour="key-form-submit"]
'
,
popover
:
{
title
:
t
(
'
onboarding.user.keySubmit.title
'
),
description
:
t
(
'
onboarding.user.keySubmit.description
'
),
side
:
'
left
'
,
align
:
'
center
'
,
showButtons
:
[
'
close
'
]
}
}
]
frontend/src/components/account/AccountTestModal.vue
View file @
942c3e15
...
...
@@ -362,6 +362,10 @@ const resetState = () => {
}
const
handleClose
=
()
=>
{
// 防止在连接测试进行中关闭对话框
if
(
status
.
value
===
'
connecting
'
)
{
return
}
closeEventSource
()
emit
(
'
close
'
)
}
...
...
frontend/src/components/account/CreateAccountModal.vue
View file @
942c3e15
...
...
@@ -2,7 +2,7 @@
<BaseDialog
:show=
"show"
:title=
"t('admin.accounts.createAccount')"
width=
"
wide
"
width=
"
normal
"
@
close=
"handleClose"
>
<!-- Step Indicator for OAuth accounts -->
...
...
@@ -53,13 +53,14 @@
required
class=
"input"
:placeholder=
"t('admin.accounts.enterAccountName')"
data-tour=
"account-form-name"
/>
</div>
<!-- Platform Selection - Segmented Control Style -->
<div>
<label
class=
"input-label"
>
{{
t
(
'
admin.accounts.platform
'
)
}}
</label>
<div
class=
"mt-2 flex rounded-lg bg-gray-100 p-1 dark:bg-dark-700"
>
<div
class=
"mt-2 flex rounded-lg bg-gray-100 p-1 dark:bg-dark-700"
data-tour=
"account-form-platform"
>
<button
type=
"button"
@
click=
"form.platform = 'anthropic'"
...
...
@@ -166,7 +167,7 @@
<!-- Account Type Selection (Anthropic) -->
<div
v-if=
"form.platform === 'anthropic'"
>
<label
class=
"input-label"
>
{{
t
(
'
admin.accounts.accountType
'
)
}}
</label>
<div
class=
"mt-2 grid grid-cols-2 gap-3"
>
<div
class=
"mt-2 grid grid-cols-2 gap-3"
data-tour=
"account-form-type"
>
<button
type=
"button"
@
click=
"accountCategory = 'oauth-based'"
...
...
@@ -256,7 +257,7 @@
<!-- Account Type Selection (OpenAI) -->
<div
v-if=
"form.platform === 'openai'"
>
<label
class=
"input-label"
>
{{
t
(
'
admin.accounts.accountType
'
)
}}
</label>
<div
class=
"mt-2 grid grid-cols-2 gap-3"
>
<div
class=
"mt-2 grid grid-cols-2 gap-3"
data-tour=
"account-form-type"
>
<button
type=
"button"
@
click=
"accountCategory = 'oauth-based'"
...
...
@@ -338,7 +339,7 @@
<!-- Account Type Selection (Gemini) -->
<div
v-if=
"form.platform === 'gemini'"
>
<label
class=
"input-label"
>
{{
t
(
'
admin.accounts.accountType
'
)
}}
</label>
<div
class=
"mt-2 grid grid-cols-2 gap-3"
>
<div
class=
"mt-2 grid grid-cols-2 gap-3"
data-tour=
"account-form-type"
>
<button
type=
"button"
@
click=
"accountCategory = 'oauth-based'"
...
...
@@ -1014,7 +1015,13 @@
<
/div
>
<
div
>
<
label
class
=
"
input-label
"
>
{{
t
(
'
admin.accounts.priority
'
)
}}
<
/label
>
<
input
v
-
model
.
number
=
"
form.priority
"
type
=
"
number
"
min
=
"
1
"
class
=
"
input
"
/>
<
input
v
-
model
.
number
=
"
form.priority
"
type
=
"
number
"
min
=
"
1
"
class
=
"
input
"
data
-
tour
=
"
account-form-priority
"
/>
<
p
class
=
"
input-hint
"
>
{{
t
(
'
admin.accounts.priorityHint
'
)
}}
<
/p
>
<
/div
>
<
/div
>
...
...
@@ -1056,6 +1063,7 @@
:
groups
=
"
groups
"
:
platform
=
"
form.platform
"
:
mixed
-
scheduling
=
"
mixedScheduling
"
data
-
tour
=
"
account-form-groups
"
/>
<
/form
>
...
...
@@ -1091,6 +1099,7 @@
form
=
"
create-account-form
"
:
disabled
=
"
submitting
"
class
=
"
btn btn-primary
"
data
-
tour
=
"
account-form-submit
"
>
<
svg
v
-
if
=
"
submitting
"
...
...
frontend/src/components/account/EditAccountModal.vue
View file @
942c3e15
...
...
@@ -2,7 +2,7 @@
<BaseDialog
:show=
"show"
:title=
"t('admin.accounts.editAccount')"
width=
"
wide
"
width=
"
normal
"
@
close=
"handleClose"
>
<form
...
...
@@ -13,7 +13,7 @@
>
<div>
<label
class=
"input-label"
>
{{
t
(
'
common.name
'
)
}}
</label>
<input
v-model=
"form.name"
type=
"text"
required
class=
"input"
/>
<input
v-model=
"form.name"
type=
"text"
required
class=
"input"
data-tour=
"edit-account-form-name"
/>
</div>
<!-- API Key fields (only for apikey type) -->
...
...
@@ -457,7 +457,13 @@
<
/div
>
<
div
>
<
label
class
=
"
input-label
"
>
{{
t
(
'
admin.accounts.priority
'
)
}}
<
/label
>
<
input
v
-
model
.
number
=
"
form.priority
"
type
=
"
number
"
min
=
"
1
"
class
=
"
input
"
/>
<
input
v
-
model
.
number
=
"
form.priority
"
type
=
"
number
"
min
=
"
1
"
class
=
"
input
"
data
-
tour
=
"
account-form-priority
"
/>
<
/div
>
<
/div
>
...
...
@@ -504,6 +510,7 @@
:
groups
=
"
groups
"
:
platform
=
"
account?.platform
"
:
mixed
-
scheduling
=
"
mixedScheduling
"
data
-
tour
=
"
account-form-groups
"
/>
<
/form
>
...
...
@@ -518,6 +525,7 @@
form
=
"
edit-account-form
"
:
disabled
=
"
submitting
"
class
=
"
btn btn-primary
"
data
-
tour
=
"
account-form-submit
"
>
<
svg
v
-
if
=
"
submitting
"
...
...
frontend/src/components/account/ReAuthAccountModal.vue
View file @
942c3e15
...
...
@@ -2,7 +2,7 @@
<BaseDialog
:show=
"show"
:title=
"t('admin.accounts.reAuthorizeAccount')"
width=
"
wide
"
width=
"
normal
"
@
close=
"handleClose"
>
<div
v-if=
"account"
class=
"space-y-4"
>
...
...
frontend/src/components/account/SyncFromCrsModal.vue
View file @
942c3e15
...
...
@@ -151,6 +151,10 @@ watch(
)
const
handleClose
=
()
=>
{
// 防止在同步进行中关闭对话框
if
(
syncing
.
value
)
{
return
}
emit
(
'
close
'
)
}
...
...
frontend/src/components/common/BaseDialog.vue
View file @
942c3e15
<
template
>
<Teleport
to=
"body"
>
<Transition
name=
"modal"
>
<div
v-if=
"show"
class=
"modal-overlay"
aria-labelledby=
"
modal-title
"
:
aria-labelledby=
"
dialogId
"
role=
"dialog"
aria-modal=
"true"
@
click.self=
"handleClose"
>
<!-- Modal panel -->
<div
:class=
"['modal-content', widthClasses]"
@
click.stop
>
<div
ref=
"dialogRef"
:class=
"['modal-content', widthClasses]"
@
click.stop
>
<!-- Header -->
<div
class=
"modal-header"
>
<h3
id=
"
modal-title
"
class=
"modal-title"
>
<h3
:
id=
"
dialogId
"
class=
"modal-title"
>
{{
title
}}
</h3>
<button
...
...
@@ -43,11 +44,20 @@
</div>
</div>
</div>
</Transition>
</Teleport>
</
template
>
<
script
setup
lang=
"ts"
>
import
{
computed
,
watch
,
onMounted
,
onUnmounted
}
from
'
vue
'
import
{
computed
,
watch
,
onMounted
,
onUnmounted
,
ref
,
nextTick
}
from
'
vue
'
// 生成唯一ID以避免多个对话框时ID冲突
let
dialogIdCounter
=
0
const
dialogId
=
`modal-title-
${
++
dialogIdCounter
}
`
// 焦点管理
const
dialogRef
=
ref
<
HTMLElement
|
null
>
(
null
)
let
previousActiveElement
:
HTMLElement
|
null
=
null
type
DialogWidth
=
'
narrow
'
|
'
normal
'
|
'
wide
'
|
'
extra-wide
'
|
'
full
'
...
...
@@ -72,12 +82,15 @@ const props = withDefaults(defineProps<Props>(), {
const
emit
=
defineEmits
<
Emits
>
()
const
widthClasses
=
computed
(()
=>
{
// Width guidance: narrow=confirm/short prompts, normal=standard forms,
// wide=multi-section forms or rich content, extra-wide=analytics/tables,
// full=full-screen or very dense layouts.
const
widths
:
Record
<
DialogWidth
,
string
>
=
{
narrow
:
'
max-w-md
'
,
normal
:
'
max-w-lg
'
,
wide
:
'
max-w-4xl
'
,
'
extra-wide
'
:
'
max-w-6xl
'
,
full
:
'
max-w-7xl
'
wide
:
'
w-full sm:max-w-2xl md:max-w-3xl lg:
max-w-4xl
'
,
'
extra-wide
'
:
'
w-full sm:max-w-3xl md:max-w-4xl lg:max-w-5xl xl:
max-w-6xl
'
,
full
:
'
w-full sm:max-w-4xl md:max-w-5xl lg:max-w-6xl xl:
max-w-7xl
'
}
return
widths
[
props
.
width
]
})
...
...
@@ -94,14 +107,31 @@ const handleEscape = (event: KeyboardEvent) => {
}
}
// Prevent body scroll when modal is open
// Prevent body scroll when modal is open
and manage focus
watch
(
()
=>
props
.
show
,
(
isOpen
)
=>
{
async
(
isOpen
)
=>
{
if
(
isOpen
)
{
document
.
body
.
style
.
overflow
=
'
hidden
'
// 保存当前焦点元素
previousActiveElement
=
document
.
activeElement
as
HTMLElement
// 使用CSS类而不是直接操作style,更易于管理多个对话框
document
.
body
.
classList
.
add
(
'
modal-open
'
)
// 等待DOM更新后设置焦点到对话框
await
nextTick
()
if
(
dialogRef
.
value
)
{
const
firstFocusable
=
dialogRef
.
value
.
querySelector
<
HTMLElement
>
(
'
button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])
'
)
firstFocusable
?.
focus
()
}
}
else
{
document
.
body
.
style
.
overflow
=
''
document
.
body
.
classList
.
remove
(
'
modal-open
'
)
// 恢复之前的焦点
if
(
previousActiveElement
&&
typeof
previousActiveElement
.
focus
===
'
function
'
)
{
previousActiveElement
.
focus
()
}
previousActiveElement
=
null
}
},
{
immediate
:
true
}
...
...
@@ -113,6 +143,7 @@ onMounted(() => {
onUnmounted
(()
=>
{
document
.
removeEventListener
(
'
keydown
'
,
handleEscape
)
document
.
body
.
style
.
overflow
=
''
// 确保组件卸载时移除滚动锁定
document
.
body
.
classList
.
remove
(
'
modal-open
'
)
})
</
script
>
frontend/src/components/common/ExportProgressDialog.vue
0 → 100644
View file @
942c3e15
<
template
>
<BaseDialog
:show=
"show"
:title=
"t('usage.exporting')"
width=
"narrow"
@
close=
"handleCancel"
>
<div
class=
"space-y-4"
>
<div
class=
"text-sm text-gray-600 dark:text-gray-400"
>
{{
t
(
'
usage.exportingProgress
'
)
}}
</div>
<div
class=
"flex items-center justify-between text-sm text-gray-700 dark:text-gray-300"
>
<span>
{{
t
(
'
usage.exportedCount
'
,
{
current
,
total
}
)
}}
<
/span
>
<
span
class
=
"
font-medium text-gray-900 dark:text-white
"
>
{{
normalizedProgress
}}
%<
/span
>
<
/div
>
<
div
class
=
"
h-2 w-full rounded-full bg-gray-200 dark:bg-dark-700
"
>
<
div
role
=
"
progressbar
"
:
aria
-
valuenow
=
"
normalizedProgress
"
aria
-
valuemin
=
"
0
"
aria
-
valuemax
=
"
100
"
:
aria
-
label
=
"
`${t('usage.exportingProgress')
}
: ${normalizedProgress
}
%`
"
class
=
"
h-2 rounded-full bg-primary-600 transition-all
"
:
style
=
"
{ width: `${normalizedProgress
}
%`
}
"
><
/div
>
<
/div
>
<
div
v
-
if
=
"
estimatedTime
"
class
=
"
text-xs text-gray-500 dark:text-gray-400
"
aria
-
live
=
"
polite
"
aria
-
atomic
=
"
true
"
>
{{
t
(
'
usage.estimatedTime
'
,
{
time
:
estimatedTime
}
)
}}
<
/div
>
<
/div
>
<
template
#
footer
>
<
button
@
click
=
"
handleCancel
"
type
=
"
button
"
class
=
"
rounded-md border border-gray-300 bg-white px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-2 dark:border-dark-600 dark:bg-dark-700 dark:text-gray-200 dark:hover:bg-dark-600 dark:focus:ring-offset-dark-800
"
>
{{
t
(
'
usage.cancelExport
'
)
}}
<
/button
>
<
/template
>
<
/BaseDialog
>
<
/template
>
<
script
setup
lang
=
"
ts
"
>
import
{
computed
}
from
'
vue
'
import
{
useI18n
}
from
'
vue-i18n
'
import
BaseDialog
from
'
./BaseDialog.vue
'
interface
Props
{
show
:
boolean
progress
:
number
current
:
number
total
:
number
estimatedTime
:
string
}
interface
Emits
{
(
e
:
'
cancel
'
):
void
}
const
props
=
defineProps
<
Props
>
()
const
emit
=
defineEmits
<
Emits
>
()
const
{
t
}
=
useI18n
()
const
normalizedProgress
=
computed
(()
=>
{
const
value
=
Number
.
isFinite
(
props
.
progress
)
?
props
.
progress
:
0
return
Math
.
min
(
100
,
Math
.
max
(
0
,
Math
.
round
(
value
)))
}
)
const
handleCancel
=
()
=>
{
emit
(
'
cancel
'
)
}
<
/script
>
Prev
1
2
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment