mirror of
https://hubproxy.babadafafafafa.cn/https://github.com/1Panel-dev/1Panel.git
synced 2026-09-20 08:03:55 +08:00
feat: Keep Website List Order Stable After Editing (#13424)
This commit is contained in:
@@ -165,7 +165,12 @@ func (w WebsiteService) PageWebsite(req request.WebsiteSearch) (int64, []respons
|
||||
websiteDTOs []response.WebsiteRes
|
||||
opts []repo.DBOption
|
||||
)
|
||||
opts = append(opts, repo.WithOrderRuleBy(req.OrderBy, req.Order), repo.WithOrderRuleBy("updated_at", "descending"))
|
||||
opts = append(
|
||||
opts,
|
||||
repo.WithOrderRuleBy(req.OrderBy, req.Order),
|
||||
repo.WithOrderRuleBy("created_at", "descending"),
|
||||
repo.WithOrderRuleBy("id", "descending"),
|
||||
)
|
||||
if req.Name != "" {
|
||||
domains, _ := websiteDomainRepo.GetBy(websiteDomainRepo.WithDomainLike(req.Name))
|
||||
var websiteIds []uint
|
||||
|
||||
@@ -12,7 +12,7 @@ require (
|
||||
github.com/creack/pty v1.1.24
|
||||
github.com/docker/cli v29.6.2+incompatible
|
||||
github.com/docker/docker v28.5.2+incompatible
|
||||
github.com/docker/go-connections v0.7.0
|
||||
github.com/docker/go-connections v0.8.1
|
||||
github.com/fsnotify/fsnotify v1.10.1
|
||||
github.com/gin-gonic/gin v1.12.0
|
||||
github.com/glebarez/sqlite v1.11.0
|
||||
@@ -39,7 +39,7 @@ require (
|
||||
github.com/patrickmn/go-cache v2.1.0+incompatible
|
||||
github.com/pkg/errors v0.9.1
|
||||
github.com/pkg/sftp v1.13.11
|
||||
github.com/qiniu/go-sdk/v7 v7.26.17
|
||||
github.com/qiniu/go-sdk/v7 v7.27.0
|
||||
github.com/robfig/cron/v3 v3.0.1
|
||||
github.com/shirou/gopsutil/v4 v4.26.6
|
||||
github.com/sirupsen/logrus v1.9.4
|
||||
@@ -48,7 +48,7 @@ require (
|
||||
github.com/spf13/cobra v1.10.2
|
||||
github.com/spf13/viper v1.21.0
|
||||
github.com/subosito/gotenv v1.6.0
|
||||
github.com/tencentyun/cos-go-sdk-v5 v0.7.74
|
||||
github.com/tencentyun/cos-go-sdk-v5 v0.7.75
|
||||
github.com/tomasen/fcgi_client v0.0.0-20180423082037-2bb3d819fd19
|
||||
github.com/upyun/go-sdk v2.1.0+incompatible
|
||||
go.mongodb.org/mongo-driver/v2 v2.8.0
|
||||
|
||||
12
agent/go.sum
12
agent/go.sum
@@ -234,8 +234,8 @@ github.com/docker/docker v28.5.2+incompatible h1:DBX0Y0zAjZbSrm1uzOkdr1onVghKaft
|
||||
github.com/docker/docker v28.5.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
|
||||
github.com/docker/docker-credential-helpers v0.9.5 h1:EFNN8DHvaiK8zVqFA2DT6BjXE0GzfLOZ38ggPTKePkY=
|
||||
github.com/docker/docker-credential-helpers v0.9.5/go.mod h1:v1S+hepowrQXITkEfw6o4+BMbGot02wiKpzWhGUZK6c=
|
||||
github.com/docker/go-connections v0.7.0 h1:6SsRfJddP22WMrCkj19x9WKjEDTB+ahsdiGYf0mN39c=
|
||||
github.com/docker/go-connections v0.7.0/go.mod h1:no1qkHdjq7kLMGUXYAduOhYPSJxxvgWBh7ogVvptn3Q=
|
||||
github.com/docker/go-connections v0.8.1 h1:JibmG5hULs5qXSr/cp/w3Pw5fZuStt4MOHMUExb29/M=
|
||||
github.com/docker/go-connections v0.8.1/go.mod h1:no1qkHdjq7kLMGUXYAduOhYPSJxxvgWBh7ogVvptn3Q=
|
||||
github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
|
||||
github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
|
||||
github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707 h1:2tV76y6Q9BB+NEBasnqvs7e49aEBFI8ejC89PSnWH+4=
|
||||
@@ -724,8 +724,8 @@ github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+Gx
|
||||
github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
|
||||
github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
|
||||
github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
|
||||
github.com/qiniu/go-sdk/v7 v7.26.17 h1:SMjjdKak2j1eedAHreMiS6sObDOLuUrvRqPtlV4KPQo=
|
||||
github.com/qiniu/go-sdk/v7 v7.26.17/go.mod h1:pTwVR1B+8SXcPLhDzBUasiKFTD9F7jRglRDR553BW3k=
|
||||
github.com/qiniu/go-sdk/v7 v7.27.0 h1:n+2U0S5fhbmG/lN/agO8KcYJaQDqROUVShtnp56Mkw8=
|
||||
github.com/qiniu/go-sdk/v7 v7.27.0/go.mod h1:pTwVR1B+8SXcPLhDzBUasiKFTD9F7jRglRDR553BW3k=
|
||||
github.com/quic-go/qpack v0.6.0 h1:g7W+BMYynC1LbYLSqRt8PBg5Tgwxn214ZZR34VIOjz8=
|
||||
github.com/quic-go/qpack v0.6.0/go.mod h1:lUpLKChi8njB4ty2bFLX2x4gzDqXwUpaO1DP9qMDZII=
|
||||
github.com/quic-go/quic-go v0.59.0 h1:OLJkp1Mlm/aS7dpKgTc6cnpynnD2Xg7C1pwL6vy/SAw=
|
||||
@@ -813,8 +813,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.3.133/go.mod
|
||||
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.3.131 h1:YfzhVkH30GipMEOGIx6nkaJv2E/mWN+G6Vvg+M7SqGg=
|
||||
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.3.131/go.mod h1:Eejvn572HmciFhWFMg6a+eZvkegnEzJrPSnJYKYZX2s=
|
||||
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms v1.0.563/go.mod h1:uom4Nvi9W+Qkom0exYiJ9VWJjXwyxtPYTkKkaLMlfE0=
|
||||
github.com/tencentyun/cos-go-sdk-v5 v0.7.74 h1:YCsGhIK+Q5vMcmAiQqPuMyhSQ3zN1p7U+dhlHQD++6c=
|
||||
github.com/tencentyun/cos-go-sdk-v5 v0.7.74/go.mod h1:STbTNaNKq03u+gscPEGOahKzLcGSYOj6Dzc5zNay7Pg=
|
||||
github.com/tencentyun/cos-go-sdk-v5 v0.7.75 h1:eRCGP5chujSYGFnsCPxlhQcN9wtlSO/4eXrxKtLVAIw=
|
||||
github.com/tencentyun/cos-go-sdk-v5 v0.7.75/go.mod h1:STbTNaNKq03u+gscPEGOahKzLcGSYOj6Dzc5zNay7Pg=
|
||||
github.com/tencentyun/qcloud-cos-sts-sdk v0.0.0-20250515025012-e0eec8a5d123/go.mod h1:b18KQa4IxHbxeseW1GcZox53d7J0z39VNONTxvvlkXw=
|
||||
github.com/therootcompany/xz v1.0.1 h1:CmOtsn1CbtmyYiusbfmhmkpAAETj0wBIH6kCYaX+xzw=
|
||||
github.com/therootcompany/xz v1.0.1/go.mod h1:3K3UH1yCKgBneZYhuQUvJ9HPD19UEXEI0BWbMn8qNMY=
|
||||
|
||||
@@ -1708,6 +1708,9 @@ var AddWebsiteTemplateTable = &gormigrate.Migration{
|
||||
&model.WebsiteTemplate{},
|
||||
&model.WebsiteTemplateOutput{},
|
||||
)
|
||||
},
|
||||
}
|
||||
|
||||
var AddComposePinned = &gormigrate.Migration{
|
||||
ID: "20260729-add-compose-pinned",
|
||||
Migrate: func(tx *gorm.DB) error {
|
||||
|
||||
@@ -10,7 +10,7 @@ require (
|
||||
github.com/gin-gonic/gin v1.12.0
|
||||
github.com/glebarez/sqlite v1.11.0
|
||||
github.com/go-gormigrate/gormigrate/v2 v2.1.6
|
||||
github.com/go-ldap/ldap/v3 v3.4.13
|
||||
github.com/go-ldap/ldap/v3 v3.4.14
|
||||
github.com/go-playground/validator/v10 v10.30.3
|
||||
github.com/go-resty/resty/v2 v2.17.2
|
||||
github.com/go-webauthn/webauthn v0.17.4
|
||||
@@ -44,7 +44,7 @@ require (
|
||||
)
|
||||
|
||||
require (
|
||||
github.com/Azure/go-ntlmssp v0.1.0 // indirect
|
||||
github.com/Azure/go-ntlmssp v0.1.1 // indirect
|
||||
github.com/KyleBanks/depth v1.2.1 // indirect
|
||||
github.com/boombuler/barcode v1.1.0 // indirect
|
||||
github.com/bytedance/gopkg v0.1.4 // indirect
|
||||
@@ -59,7 +59,7 @@ require (
|
||||
github.com/gabriel-vasile/mimetype v1.4.13 // indirect
|
||||
github.com/gin-contrib/sse v1.1.1 // indirect
|
||||
github.com/glebarez/go-sqlite v1.22.0 // indirect
|
||||
github.com/go-asn1-ber/asn1-ber v1.5.8-0.20250403174932-29230038a667 // indirect
|
||||
github.com/go-asn1-ber/asn1-ber v1.5.8 // indirect
|
||||
github.com/go-ole/go-ole v1.2.6 // indirect
|
||||
github.com/go-openapi/jsonpointer v0.23.0 // indirect
|
||||
github.com/go-openapi/jsonreference v0.21.5 // indirect
|
||||
|
||||
28
core/go.sum
28
core/go.sum
@@ -1,11 +1,13 @@
|
||||
github.com/1panel-dev/base64Captcha v1.3.8 h1:GbQ2IuGMp4ai4erpwf4BMjm5eLC8Efb+dATVwgpPIII=
|
||||
github.com/1panel-dev/base64Captcha v1.3.8/go.mod h1:gVpwyGm9+g4rg3pXdYnsFAouP73qMOSBfnT3bxCFzco=
|
||||
github.com/Azure/go-ntlmssp v0.1.0 h1:DjFo6YtWzNqNvQdrwEyr/e4nhU3vRiwenz5QX7sFz+A=
|
||||
github.com/Azure/go-ntlmssp v0.1.0/go.mod h1:NYqdhxd/8aAct/s4qSYZEerdPuH1liG2/X9DiVTbhpk=
|
||||
github.com/Azure/go-ntlmssp v0.1.1 h1:l+FM/EEMb0U9QZE7mKNEDw5Mu3mFiaa2GKOoTSsNDPw=
|
||||
github.com/Azure/go-ntlmssp v0.1.1/go.mod h1:NYqdhxd/8aAct/s4qSYZEerdPuH1liG2/X9DiVTbhpk=
|
||||
github.com/BurntSushi/toml v1.6.0 h1:dRaEfpa2VI55EwlIW72hMRHdWouJeRF7TPYhI+AUQjk=
|
||||
github.com/BurntSushi/toml v1.6.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
|
||||
github.com/KyleBanks/depth v1.2.1 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc=
|
||||
github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE=
|
||||
github.com/alexbrainman/sspi v0.0.0-20250919150558-7d374ff0d59e h1:4dAU9FXIyQktpoUAgOJK3OTFc/xug0PCXYCqU0FgDKI=
|
||||
github.com/alexbrainman/sspi v0.0.0-20250919150558-7d374ff0d59e/go.mod h1:cEWa1LVoE5KvSD9ONXsZrj0z6KqySlCCNKHlLzbqAt4=
|
||||
github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8=
|
||||
github.com/boombuler/barcode v1.1.0 h1:ChaYjBR63fr4LFyGn8E8nt7dBSt3MiU3zMOZqFvVkHo=
|
||||
github.com/boombuler/barcode v1.1.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8=
|
||||
@@ -49,12 +51,12 @@ github.com/glebarez/go-sqlite v1.22.0 h1:uAcMJhaA6r3LHMTFgP0SifzgXg46yJkgxqyuyec
|
||||
github.com/glebarez/go-sqlite v1.22.0/go.mod h1:PlBIdHe0+aUEFn+r2/uthrWq4FxbzugL0L8Li6yQJbc=
|
||||
github.com/glebarez/sqlite v1.11.0 h1:wSG0irqzP6VurnMEpFGer5Li19RpIRi2qvQz++w0GMw=
|
||||
github.com/glebarez/sqlite v1.11.0/go.mod h1:h8/o8j5wiAsqSPoWELDUdJXhjAhsVliSn7bWZjOhrgQ=
|
||||
github.com/go-asn1-ber/asn1-ber v1.5.8-0.20250403174932-29230038a667 h1:BP4M0CvQ4S3TGls2FvczZtj5Re/2ZzkV9VwqPHH/3Bo=
|
||||
github.com/go-asn1-ber/asn1-ber v1.5.8-0.20250403174932-29230038a667/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0=
|
||||
github.com/go-asn1-ber/asn1-ber v1.5.8 h1:H9AZkK22UOmfX8J84ubyaZxKJZ3FMHVwn8swoMML7iQ=
|
||||
github.com/go-asn1-ber/asn1-ber v1.5.8/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0=
|
||||
github.com/go-gormigrate/gormigrate/v2 v2.1.6 h1:VtX+l1Stj2v5RGubVQk0LS/8EPGXR+ldcOyCmlmKoyg=
|
||||
github.com/go-gormigrate/gormigrate/v2 v2.1.6/go.mod h1:PZpedQc4tWaxn6kvXicwhinh3L0seLpMc5ReKRX5id4=
|
||||
github.com/go-ldap/ldap/v3 v3.4.13 h1:+x1nG9h+MZN7h/lUi5Q3UZ0fJ1GyDQYbPvbuH38baDQ=
|
||||
github.com/go-ldap/ldap/v3 v3.4.13/go.mod h1:LxsGZV6vbaK0sIvYfsv47rfh4ca0JXokCoKjZxsszv0=
|
||||
github.com/go-ldap/ldap/v3 v3.4.14 h1:D6PYdEgsaVzsXyr6w/yDC06Ria4uUhWm+Rb+er8lfAs=
|
||||
github.com/go-ldap/ldap/v3 v3.4.14/go.mod h1:S4eJUMUNjDkE0ZJtIZdybwyb03sGGLW6gxXT1Hs8VKA=
|
||||
github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
|
||||
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
|
||||
github.com/go-openapi/jsonpointer v0.23.0 h1:c25HFTJ6uWGmoe5BQI6p72p4o7KnlWYsy1MeFlAumsw=
|
||||
@@ -122,6 +124,8 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
||||
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg=
|
||||
github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
||||
github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8=
|
||||
github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
|
||||
github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k=
|
||||
github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=
|
||||
github.com/hhrutter/lzw v1.0.0 h1:laL89Llp86W3rRs83LvKbwYRx6INE8gDn0XNb1oXtm0=
|
||||
@@ -132,6 +136,18 @@ github.com/hhrutter/tiff v1.0.2 h1:7H3FQQpKu/i5WaSChoD1nnJbGx4MxU5TlNqqpxw55z8=
|
||||
github.com/hhrutter/tiff v1.0.2/go.mod h1:pcOeuK5loFUE7Y/WnzGw20YxUdnqjY1P0Jlcieb/cCw=
|
||||
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
|
||||
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
|
||||
github.com/jcmturner/aescts/v2 v2.0.0 h1:9YKLH6ey7H4eDBXW8khjYslgyqG2xZikXP0EQFKrle8=
|
||||
github.com/jcmturner/aescts/v2 v2.0.0/go.mod h1:AiaICIRyfYg35RUkr8yESTqvSy7csK90qZ5xfvvsoNs=
|
||||
github.com/jcmturner/dnsutils/v2 v2.0.0 h1:lltnkeZGL0wILNvrNiVCR6Ro5PGU/SeBvVO/8c/iPbo=
|
||||
github.com/jcmturner/dnsutils/v2 v2.0.0/go.mod h1:b0TnjGOvI/n42bZa+hmXL+kFJZsFT7G4t3HTlQ184QM=
|
||||
github.com/jcmturner/gofork v1.7.6 h1:QH0l3hzAU1tfT3rZCnW5zXl+orbkNMMRGJfdJjHVETg=
|
||||
github.com/jcmturner/gofork v1.7.6/go.mod h1:1622LH6i/EZqLloHfE7IeZ0uEJwMSUyQ/nDd82IeqRo=
|
||||
github.com/jcmturner/goidentity/v6 v6.0.1 h1:VKnZd2oEIMorCTsFBnJWbExfNN7yZr3EhJAxwOkZg6o=
|
||||
github.com/jcmturner/goidentity/v6 v6.0.1/go.mod h1:X1YW3bgtvwAXju7V3LCIMpY0Gbxyjn/mY9zx4tFonSg=
|
||||
github.com/jcmturner/gokrb5/v8 v8.4.4 h1:x1Sv4HaTpepFkXbt2IkL29DXRf8sOfZXo8eRKh687T8=
|
||||
github.com/jcmturner/gokrb5/v8 v8.4.4/go.mod h1:1btQEpgT6k+unzCwX1KdWMEwPPkkgBtP+F6aCACiMrs=
|
||||
github.com/jcmturner/rpc/v2 v2.0.3 h1:7FXXj8Ti1IaVFpSAziCZWNzbNuZmnvw/i6CqLNdWfZY=
|
||||
github.com/jcmturner/rpc/v2 v2.0.3/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc=
|
||||
github.com/jinzhu/copier v0.4.0 h1:w3ciUoD19shMCRargcpm0cm91ytaBhDvuRpz1ODO/U8=
|
||||
github.com/jinzhu/copier v0.4.0/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg=
|
||||
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
|
||||
|
||||
436
frontend/package-lock.json
generated
436
frontend/package-lock.json
generated
@@ -32,7 +32,7 @@
|
||||
"jsencrypt": "^3.3.2",
|
||||
"lodash-es": "^4.18.1",
|
||||
"md-editor-v3": "^6.5.4",
|
||||
"monaco-editor": "^0.53.0",
|
||||
"monaco-editor": "^0.56.0",
|
||||
"nprogress": "^0.2.0",
|
||||
"pinia": "^3.0.4",
|
||||
"pinia-plugin-persistedstate": "^4.7.1",
|
||||
@@ -59,15 +59,15 @@
|
||||
"@vue/compiler-sfc": "^3.5.35",
|
||||
"autoprefixer": "^10.5.4",
|
||||
"esbuild": "^0.28.1",
|
||||
"eslint": "^10.6.0",
|
||||
"eslint": "^10.7.0",
|
||||
"eslint-config-prettier": "^10.1.8",
|
||||
"eslint-plugin-prettier": "^5.5.5",
|
||||
"eslint-plugin-prettier": "^5.5.6",
|
||||
"eslint-plugin-vue": "^10.10.0",
|
||||
"lint-staged": "^17.0.7",
|
||||
"postcss": "^8.5.14",
|
||||
"postcss-html": "^1.8.1",
|
||||
"prettier": "^3.9.6",
|
||||
"rollup-plugin-visualizer": "^5.5.4",
|
||||
"rollup-plugin-visualizer": "^7.0.1",
|
||||
"sass": "^1.101.3",
|
||||
"standard-version": "^9.5.0",
|
||||
"tailwindcss": "^4.3.3",
|
||||
@@ -2339,13 +2339,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@pkgr/core": {
|
||||
"version": "0.2.9",
|
||||
"resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz",
|
||||
"integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==",
|
||||
"version": "0.3.6",
|
||||
"resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.3.6.tgz",
|
||||
"integrity": "sha512-SEeaJLb3qBNF/OaXnaR1NmmBbFYk1zC0ZH/52fATcRPLFg/p791YrcyFFy44Bo9sLaGuSuLp5Q6axbb/O+v/RA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": "^12.20.0 || ^14.18.0 || >=16.0.0"
|
||||
"node": "^14.18.0 || >=16.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://opencollective.com/pkgr"
|
||||
@@ -3043,10 +3043,11 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@types/trusted-types": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-1.0.6.tgz",
|
||||
"integrity": "sha512-230RC8sFeHoT6sSUlRO6a8cAnclO06eeiq1QDfiv2FGCLWFvvERWgwIQD4FWqD9A69BN7Lzee4OXwoMVnnsWDw==",
|
||||
"license": "MIT"
|
||||
"version": "2.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
|
||||
"integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
|
||||
"license": "MIT",
|
||||
"optional": true
|
||||
},
|
||||
"node_modules/@types/uuid": {
|
||||
"version": "11.0.0",
|
||||
@@ -4259,6 +4260,22 @@
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/bundle-name": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz",
|
||||
"integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"run-applescript": "^7.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/call-bind-apply-helpers": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
|
||||
@@ -4458,18 +4475,103 @@
|
||||
}
|
||||
},
|
||||
"node_modules/cliui": {
|
||||
"version": "8.0.1",
|
||||
"resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
|
||||
"integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
|
||||
"version": "9.0.1",
|
||||
"resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz",
|
||||
"integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==",
|
||||
"dev": true,
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"string-width": "^4.2.0",
|
||||
"strip-ansi": "^6.0.1",
|
||||
"wrap-ansi": "^7.0.0"
|
||||
"string-width": "^7.2.0",
|
||||
"strip-ansi": "^7.1.0",
|
||||
"wrap-ansi": "^9.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=20"
|
||||
}
|
||||
},
|
||||
"node_modules/cliui/node_modules/ansi-regex": {
|
||||
"version": "6.2.2",
|
||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
|
||||
"integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/chalk/ansi-regex?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/cliui/node_modules/ansi-styles": {
|
||||
"version": "6.2.3",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
|
||||
"integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/cliui/node_modules/emoji-regex": {
|
||||
"version": "10.6.0",
|
||||
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",
|
||||
"integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/cliui/node_modules/string-width": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
|
||||
"integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"emoji-regex": "^10.3.0",
|
||||
"get-east-asian-width": "^1.0.0",
|
||||
"strip-ansi": "^7.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/cliui/node_modules/strip-ansi": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz",
|
||||
"integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"ansi-regex": "^6.2.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/chalk/strip-ansi?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/cliui/node_modules/wrap-ansi": {
|
||||
"version": "9.0.2",
|
||||
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz",
|
||||
"integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"ansi-styles": "^6.2.1",
|
||||
"string-width": "^7.0.0",
|
||||
"strip-ansi": "^7.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/codemirror": {
|
||||
@@ -5084,14 +5186,47 @@
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/define-lazy-prop": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
|
||||
"integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
|
||||
"node_modules/default-browser": {
|
||||
"version": "5.5.0",
|
||||
"resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz",
|
||||
"integrity": "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"bundle-name": "^4.1.0",
|
||||
"default-browser-id": "^5.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/default-browser-id": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz",
|
||||
"integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
"node": ">=18"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/define-lazy-prop": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
|
||||
"integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/defu": {
|
||||
@@ -5202,13 +5337,6 @@
|
||||
"@types/trusted-types": "^2.0.7"
|
||||
}
|
||||
},
|
||||
"node_modules/dompurify/node_modules/@types/trusted-types": {
|
||||
"version": "2.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
|
||||
"integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
|
||||
"license": "MIT",
|
||||
"optional": true
|
||||
},
|
||||
"node_modules/domutils": {
|
||||
"version": "3.2.2",
|
||||
"resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",
|
||||
@@ -5548,9 +5676,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/eslint": {
|
||||
"version": "10.6.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-10.6.0.tgz",
|
||||
"integrity": "sha512-6lVbcqSodALYo+4ELD0heG6lFiFxnLMuLkiMi2qV8LMp54N8tE8FT1GMH+ev4Ti00nFjNze2+Su6DsV5OQW3Dg==",
|
||||
"version": "10.7.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-10.7.0.tgz",
|
||||
"integrity": "sha512-GVTD7s1vdIl6UYvAfriOPeY1Df8LIZjfofLvHwde+erDHGGuHyuM6xoxRxmHiebhYuD2p1vN4wWh0XzPARSGDQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
@@ -5625,14 +5753,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/eslint-plugin-prettier": {
|
||||
"version": "5.5.5",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.5.tgz",
|
||||
"integrity": "sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==",
|
||||
"version": "5.5.6",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.6.tgz",
|
||||
"integrity": "sha512-ifetmTcxWfz+4qRW3pH/ujdTq2jQIj59AxJMIN26K5avYgU8dxycUETQonWiW+wPrYXA0j3Try0l1CnwVQtDqQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"prettier-linter-helpers": "^1.0.1",
|
||||
"synckit": "^0.11.12"
|
||||
"synckit": "^0.11.13"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^14.18.0 || >=16.0.0"
|
||||
@@ -6601,16 +6729,16 @@
|
||||
}
|
||||
},
|
||||
"node_modules/is-docker": {
|
||||
"version": "2.2.1",
|
||||
"resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
|
||||
"integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
|
||||
"integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"bin": {
|
||||
"is-docker": "cli.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
@@ -6655,6 +6783,38 @@
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/is-in-ssh": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-in-ssh/-/is-in-ssh-1.0.0.tgz",
|
||||
"integrity": "sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=20"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/is-inside-container": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
|
||||
"integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"is-docker": "^3.0.0"
|
||||
},
|
||||
"bin": {
|
||||
"is-inside-container": "cli.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.16"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/is-number": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
|
||||
@@ -6712,16 +6872,19 @@
|
||||
}
|
||||
},
|
||||
"node_modules/is-wsl": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
|
||||
"integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz",
|
||||
"integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"is-docker": "^2.0.0"
|
||||
"is-inside-container": "^1.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
"node": ">=16"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/isarray": {
|
||||
@@ -7662,6 +7825,18 @@
|
||||
"integrity": "sha512-5VgmdKlkBd8sgXuoDoxMpiU+BiEt3I49GItBzzw7Mxq9CxvnhE/k09HFli09zgfFDRixDQDfDxi0mgBCXtaTvA==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/marked": {
|
||||
"version": "14.0.0",
|
||||
"resolved": "https://registry.npmjs.org/marked/-/marked-14.0.0.tgz",
|
||||
"integrity": "sha512-uIj4+faQ+MgHgwUW1l2PsPglZLOLOT1uErt06dAPtx2kjteLAkbsd/0FiYg/MGS+i7ZKLb7w2WClxHkzOOuryQ==",
|
||||
"license": "MIT",
|
||||
"bin": {
|
||||
"marked": "bin/marked.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 18"
|
||||
}
|
||||
},
|
||||
"node_modules/math-intrinsics": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
|
||||
@@ -8033,12 +8208,22 @@
|
||||
}
|
||||
},
|
||||
"node_modules/monaco-editor": {
|
||||
"version": "0.53.0",
|
||||
"resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.53.0.tgz",
|
||||
"integrity": "sha512-0WNThgC6CMWNXXBxTbaYYcunj08iB5rnx4/G56UOPeL9UVIUGGHA1GR0EWIh9Ebabj7NpCRawQ5b0hfN1jQmYQ==",
|
||||
"version": "0.56.0",
|
||||
"resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.56.0.tgz",
|
||||
"integrity": "sha512-sXboRm3BeBeLm938eaiyLMe0OxzfXIlZvbv4ir/jVgQy1zDhWjgmny0WoN45fuDKhCCQsYMbBJrv/A6jd8aCUg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@types/trusted-types": "^1.0.6"
|
||||
"dompurify": "3.4.8",
|
||||
"marked": "14.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/monaco-editor/node_modules/dompurify": {
|
||||
"version": "3.4.8",
|
||||
"resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.8.tgz",
|
||||
"integrity": "sha512-yb1cEmaOum7wFvOCSQxyfgVlv5D47Rc30iZWoMpbDIWTnJ6grDDQyu2KFJzB2k7u0pMuJcQ1zphH//fFnw2tjQ==",
|
||||
"license": "(MPL-2.0 OR Apache-2.0)",
|
||||
"optionalDependencies": {
|
||||
"@types/trusted-types": "^2.0.7"
|
||||
}
|
||||
},
|
||||
"node_modules/ms": {
|
||||
@@ -8190,18 +8375,21 @@
|
||||
}
|
||||
},
|
||||
"node_modules/open": {
|
||||
"version": "8.4.2",
|
||||
"resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz",
|
||||
"integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==",
|
||||
"version": "11.0.0",
|
||||
"resolved": "https://registry.npmjs.org/open/-/open-11.0.0.tgz",
|
||||
"integrity": "sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"define-lazy-prop": "^2.0.0",
|
||||
"is-docker": "^2.1.1",
|
||||
"is-wsl": "^2.2.0"
|
||||
"default-browser": "^5.4.0",
|
||||
"define-lazy-prop": "^3.0.0",
|
||||
"is-in-ssh": "^1.0.0",
|
||||
"is-inside-container": "^1.0.0",
|
||||
"powershell-utils": "^0.1.0",
|
||||
"wsl-utils": "^0.3.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
"node": ">=20"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
@@ -8519,6 +8707,19 @@
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/powershell-utils": {
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/powershell-utils/-/powershell-utils-0.1.0.tgz",
|
||||
"integrity": "sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=20"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/prelude-ls": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
|
||||
@@ -8934,25 +9135,25 @@
|
||||
}
|
||||
},
|
||||
"node_modules/rollup-plugin-visualizer": {
|
||||
"version": "5.14.0",
|
||||
"resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.14.0.tgz",
|
||||
"integrity": "sha512-VlDXneTDaKsHIw8yzJAFWtrzguoJ/LnQ+lMpoVfYJ3jJF4Ihe5oYLAqLklIK/35lgUY+1yEzCkHyZ1j4A5w5fA==",
|
||||
"version": "7.0.1",
|
||||
"resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-7.0.1.tgz",
|
||||
"integrity": "sha512-UJUT4+1Ho4OcWmPYU3sYXgUqI8B8Ayfe06MX7y0qCJ1K8aGoKtR/NDd/2nZqM7ADkrzny+I99Ul7GgyoiVNAgg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"open": "^8.4.0",
|
||||
"open": "^11.0.0",
|
||||
"picomatch": "^4.0.2",
|
||||
"source-map": "^0.7.4",
|
||||
"yargs": "^17.5.1"
|
||||
"yargs": "^18.0.0"
|
||||
},
|
||||
"bin": {
|
||||
"rollup-plugin-visualizer": "dist/bin/cli.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
"node": ">=22"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"rolldown": "1.x",
|
||||
"rolldown": "1.x || ^1.0.0-beta || ^1.0.0-rc",
|
||||
"rollup": "2.x || 3.x || 4.x"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
@@ -8977,6 +9178,19 @@
|
||||
"url": "https://github.com/sponsors/jonschlinkert"
|
||||
}
|
||||
},
|
||||
"node_modules/run-applescript": {
|
||||
"version": "7.1.0",
|
||||
"resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz",
|
||||
"integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/safe-buffer": {
|
||||
"version": "5.2.1",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
|
||||
@@ -9561,13 +9775,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/synckit": {
|
||||
"version": "0.11.12",
|
||||
"resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz",
|
||||
"integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==",
|
||||
"version": "0.11.13",
|
||||
"resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.13.tgz",
|
||||
"integrity": "sha512-eNRKgb3z66Yp3D2CixVujOUvXLFUTij/zVnV8KRyvFdQwpz7I5DS8UfRkTeLzb64u+dkzDSdelE24izu+zSSUg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@pkgr/core": "^0.2.9"
|
||||
"@pkgr/core": "^0.3.6"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^14.18.0 || >=16.0.0"
|
||||
@@ -10873,6 +11087,23 @@
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/wsl-utils": {
|
||||
"version": "0.3.1",
|
||||
"resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.3.1.tgz",
|
||||
"integrity": "sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"is-wsl": "^3.1.0",
|
||||
"powershell-utils": "^0.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=20"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/xml-name-validator": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz",
|
||||
@@ -10948,22 +11179,21 @@
|
||||
}
|
||||
},
|
||||
"node_modules/yargs": {
|
||||
"version": "17.7.2",
|
||||
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
|
||||
"integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
|
||||
"version": "18.1.0",
|
||||
"resolved": "https://registry.npmjs.org/yargs/-/yargs-18.1.0.tgz",
|
||||
"integrity": "sha512-2rAgRKu54VsHkqI0/tYkmluGXHD4KW7yZoycuqDQ15QOTnc2VVfy0nN/1eMhnQLO00A+dwtK20xuCnc1YGeUyg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"cliui": "^8.0.1",
|
||||
"cliui": "^9.0.1",
|
||||
"escalade": "^3.1.1",
|
||||
"get-caller-file": "^2.0.5",
|
||||
"require-directory": "^2.1.1",
|
||||
"string-width": "^4.2.3",
|
||||
"string-width": "^8.2.1",
|
||||
"y18n": "^5.0.5",
|
||||
"yargs-parser": "^21.1.1"
|
||||
"yargs-parser": "^22.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
"node": "^20.19.0 || ^22.12.0 || >=23"
|
||||
}
|
||||
},
|
||||
"node_modules/yargs-parser": {
|
||||
@@ -10976,14 +11206,60 @@
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/yargs/node_modules/ansi-regex": {
|
||||
"version": "6.2.2",
|
||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
|
||||
"integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/chalk/ansi-regex?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/yargs/node_modules/string-width": {
|
||||
"version": "8.2.2",
|
||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.2.tgz",
|
||||
"integrity": "sha512-GaPUh5gfdrYzqeVNZvUfT23vYYxXzKYidUcnMtJg/3rxRV63EFZy3k6xfKlmfeJD0176lnUV/Usr3XcwSvFzpg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"get-east-asian-width": "^1.5.0",
|
||||
"strip-ansi": "^7.1.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=20"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/yargs/node_modules/strip-ansi": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz",
|
||||
"integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"ansi-regex": "^6.2.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/chalk/strip-ansi?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/yargs/node_modules/yargs-parser": {
|
||||
"version": "21.1.1",
|
||||
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
|
||||
"integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
|
||||
"version": "22.0.0",
|
||||
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz",
|
||||
"integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==",
|
||||
"dev": true,
|
||||
"license": "ISC",
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
"node": "^20.19.0 || ^22.12.0 || >=23"
|
||||
}
|
||||
},
|
||||
"node_modules/yocto-queue": {
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
"jsencrypt": "^3.3.2",
|
||||
"lodash-es": "^4.18.1",
|
||||
"md-editor-v3": "^6.5.4",
|
||||
"monaco-editor": "^0.53.0",
|
||||
"monaco-editor": "^0.56.0",
|
||||
"nprogress": "^0.2.0",
|
||||
"pinia": "^3.0.4",
|
||||
"pinia-plugin-persistedstate": "^4.7.1",
|
||||
@@ -70,15 +70,15 @@
|
||||
"@vue/compiler-sfc": "^3.5.35",
|
||||
"autoprefixer": "^10.5.4",
|
||||
"esbuild": "^0.28.1",
|
||||
"eslint": "^10.6.0",
|
||||
"eslint": "^10.7.0",
|
||||
"eslint-config-prettier": "^10.1.8",
|
||||
"eslint-plugin-prettier": "^5.5.5",
|
||||
"eslint-plugin-prettier": "^5.5.6",
|
||||
"eslint-plugin-vue": "^10.10.0",
|
||||
"lint-staged": "^17.0.7",
|
||||
"postcss": "^8.5.14",
|
||||
"postcss-html": "^1.8.1",
|
||||
"prettier": "^3.9.6",
|
||||
"rollup-plugin-visualizer": "^5.5.4",
|
||||
"rollup-plugin-visualizer": "^7.0.1",
|
||||
"sass": "^1.101.3",
|
||||
"standard-version": "^9.5.0",
|
||||
"tailwindcss": "^4.3.3",
|
||||
|
||||
@@ -425,7 +425,11 @@ export const getTemplate = (id: number) => {
|
||||
export const uploadTemplateZip = (file: globalThis.File) => {
|
||||
const formData = new FormData();
|
||||
formData.append('file', file);
|
||||
return http.post<{ filePath: string; variables: string[] }>(`/websites/templates/upload`, formData, TimeoutEnum.T_5M);
|
||||
return http.post<{ filePath: string; variables: string[] }>(
|
||||
`/websites/templates/upload`,
|
||||
formData,
|
||||
TimeoutEnum.T_5M,
|
||||
);
|
||||
};
|
||||
|
||||
export const previewTemplate = (req: Website.PreviewReq) => {
|
||||
|
||||
@@ -254,11 +254,13 @@ function initChart() {
|
||||
...itemSelect,
|
||||
right: grid.right || 10,
|
||||
itemWidth: 8,
|
||||
icon: 'circle',
|
||||
...props.option.legend,
|
||||
textStyle: {
|
||||
...itemSelect?.textStyle,
|
||||
...props.option.legend?.textStyle,
|
||||
color: regularTextColor,
|
||||
},
|
||||
icon: 'circle',
|
||||
},
|
||||
xAxis: {
|
||||
...props.option.xAxis,
|
||||
|
||||
@@ -1011,6 +1011,17 @@ const message = {
|
||||
unlimitedWithAuto: 'Unlimited, includes auto',
|
||||
apiKeyCount: 'API Keys',
|
||||
lastUsedAt: 'Last Used',
|
||||
validityPeriod: 'Validity Period',
|
||||
keepCurrentValidity: 'Keep current validity',
|
||||
neverExpires: 'Never expires',
|
||||
validForDays: 'Valid for {0} days',
|
||||
customDays: 'Custom days',
|
||||
enterValidityDays: 'Enter the validity period in days',
|
||||
currentExpiresAt: 'Current expiration: {0}',
|
||||
currentNeverExpires: 'Currently never expires',
|
||||
expiresAt: 'Expiration Time',
|
||||
expired: 'Expired',
|
||||
reactivate: 'Reactivate',
|
||||
settingTitle: 'AI Gateway Settings',
|
||||
basicSetting: 'Basic Settings',
|
||||
performanceSetting: 'Performance Settings',
|
||||
@@ -1019,6 +1030,8 @@ const message = {
|
||||
protocolConversion: 'Protocol Conversion',
|
||||
protocolConversionDesc:
|
||||
'Allow supported direct conversion between Chat Completions, Responses, and Anthropic Messages. Native protocols always take priority.',
|
||||
protocolConversionRisk:
|
||||
'Protocol conversion is not lossless. Protocol-specific fields, tool calls, reasoning, or multimodal content may be degraded or lost. Use it after weighing the trade-offs.',
|
||||
lbPolicyRoundRobin: 'Round Robin',
|
||||
lbPolicyRoundRobinDesc:
|
||||
'Select available model accounts in order. Use this when backends have similar capacity.',
|
||||
@@ -1072,6 +1085,7 @@ const message = {
|
||||
userFallback: 'Deleted user (ID: {0})',
|
||||
requestModel: 'Request Model',
|
||||
upstreamModel: 'Upstream Model',
|
||||
upstreamDuration: 'Upstream Time',
|
||||
requestModelPlaceholder: 'e.g. qwen2.5-coder',
|
||||
upstreamModelPlaceholder: 'e.g. Qwen/Qwen2.5-Coder-32B-Instruct',
|
||||
addMapping: 'Add Mapping',
|
||||
|
||||
@@ -1021,6 +1021,17 @@ const message = {
|
||||
unlimited: 'Ilimitado',
|
||||
unlimitedWithAuto: 'Ilimitado, incluye auto',
|
||||
lastUsedAt: 'Último uso',
|
||||
validityPeriod: 'Periodo de validez',
|
||||
keepCurrentValidity: 'Mantener la validez actual',
|
||||
neverExpires: 'Nunca caduca',
|
||||
validForDays: 'Válido durante {0} días',
|
||||
customDays: 'Días personalizados',
|
||||
enterValidityDays: 'Introduzca el periodo de validez en días',
|
||||
currentExpiresAt: 'Caducidad actual: {0}',
|
||||
currentNeverExpires: 'Actualmente no caduca',
|
||||
expiresAt: 'Fecha de caducidad',
|
||||
expired: 'Caducado',
|
||||
reactivate: 'Reactivar',
|
||||
settingTitle: 'Configuración del gateway de IA',
|
||||
basicSetting: 'Configuración básica',
|
||||
performanceSetting: 'Configuración de rendimiento',
|
||||
@@ -1029,6 +1040,8 @@ const message = {
|
||||
protocolConversion: 'Conversión de protocolo',
|
||||
protocolConversionDesc:
|
||||
'Permite la conversión directa compatible entre Chat Completions, Responses y Anthropic Messages. Los protocolos nativos siempre tienen prioridad.',
|
||||
protocolConversionRisk:
|
||||
'La conversión de protocolos no es sin pérdidas. Los campos específicos, las llamadas a herramientas, el razonamiento o el contenido multimodal pueden degradarse o perderse. Úsela después de evaluar los riesgos.',
|
||||
lbPolicyRoundRobin: 'Round Robin',
|
||||
lbPolicyRoundRobinDesc:
|
||||
'Selecciona las cuentas de modelo disponibles en orden. Úselo cuando los backends tengan capacidad similar.',
|
||||
@@ -1082,6 +1095,7 @@ const message = {
|
||||
userFallback: 'Usuario eliminado (ID: {0})',
|
||||
requestModel: 'Modelo solicitado',
|
||||
upstreamModel: 'Modelo upstream',
|
||||
upstreamDuration: 'Tiempo upstream',
|
||||
requestModelPlaceholder: 'p. ej. qwen2.5-coder',
|
||||
upstreamModelPlaceholder: 'p. ej. Qwen/Qwen2.5-Coder-32B-Instruct',
|
||||
addMapping: 'Agregar mapeo',
|
||||
|
||||
@@ -995,6 +995,17 @@ const message = {
|
||||
unlimitedWithAuto: 'نامحدود، شامل auto',
|
||||
apiKeyCount: 'کلیدهای API',
|
||||
lastUsedAt: 'آخرین استفاده',
|
||||
validityPeriod: 'دوره اعتبار',
|
||||
keepCurrentValidity: 'حفظ اعتبار فعلی',
|
||||
neverExpires: 'بدون انقضا',
|
||||
validForDays: 'معتبر برای {0} روز',
|
||||
customDays: 'تعداد روز سفارشی',
|
||||
enterValidityDays: 'مدت اعتبار را به روز وارد کنید',
|
||||
currentExpiresAt: 'زمان انقضای فعلی: {0}',
|
||||
currentNeverExpires: 'در حال حاضر بدون انقضا',
|
||||
expiresAt: 'زمان انقضا',
|
||||
expired: 'منقضی شده',
|
||||
reactivate: 'فعالسازی مجدد',
|
||||
settingTitle: 'تنظیمات دروازه AI',
|
||||
basicSetting: 'تنظیمات پایه',
|
||||
performanceSetting: 'تنظیمات عملکرد',
|
||||
@@ -1003,6 +1014,8 @@ const message = {
|
||||
protocolConversion: 'تبدیل پروتکل',
|
||||
protocolConversionDesc:
|
||||
'تبدیل مستقیم پشتیبانیشده بین Chat Completions، Responses و Anthropic Messages را فعال میکند. پروتکل بومی همیشه اولویت دارد.',
|
||||
protocolConversionRisk:
|
||||
'تبدیل پروتکل بدون اتلاف تضمین نمیشود. فیلدهای اختصاصی، فراخوانی ابزارها، استدلال یا محتوای چندوجهی ممکن است سادهسازی یا حذف شوند. پس از سنجیدن ریسکها استفاده کنید.',
|
||||
lbPolicyRoundRobin: 'چرخهای',
|
||||
lbPolicyRoundRobinDesc:
|
||||
'حسابهای مدل موجود را به ترتیب انتخاب کنید. زمانی استفاده شود که بکاندها ظرفیت مشابهی دارند.',
|
||||
@@ -1056,6 +1069,7 @@ const message = {
|
||||
userFallback: 'کاربر حذف شده (شناسه: {0})',
|
||||
requestModel: 'مدل درخواست',
|
||||
upstreamModel: 'مدل بالادست',
|
||||
upstreamDuration: 'زمان بالادست',
|
||||
requestModelPlaceholder: 'مثلاً qwen2.5-coder',
|
||||
upstreamModelPlaceholder: 'مثلاً Qwen/Qwen2.5-Coder-32B-Instruct',
|
||||
addMapping: 'افزودن نگاشت',
|
||||
|
||||
@@ -1008,6 +1008,17 @@ const message = {
|
||||
unlimited: '無制限',
|
||||
unlimitedWithAuto: '無制限、auto を含む',
|
||||
lastUsedAt: '最終使用日時',
|
||||
validityPeriod: '有効期間',
|
||||
keepCurrentValidity: '現在の有効期間を維持',
|
||||
neverExpires: '無期限',
|
||||
validForDays: '{0} 日間有効',
|
||||
customDays: '日数を指定',
|
||||
enterValidityDays: '有効日数を入力してください',
|
||||
currentExpiresAt: '現在の有効期限:{0}',
|
||||
currentNeverExpires: '現在は無期限です',
|
||||
expiresAt: '有効期限',
|
||||
expired: '期限切れ',
|
||||
reactivate: '再有効化',
|
||||
settingTitle: 'AI ゲートウェイ設定',
|
||||
basicSetting: '基本設定',
|
||||
performanceSetting: 'パフォーマンス設定',
|
||||
@@ -1016,6 +1027,8 @@ const message = {
|
||||
protocolConversion: 'プロトコル変換',
|
||||
protocolConversionDesc:
|
||||
'Chat Completions、Responses、Anthropic Messages 間でサポートされる直接変換を有効にします。ネイティブプロトコルが常に優先されます。',
|
||||
protocolConversionRisk:
|
||||
'プロトコル変換は完全に可逆ではありません。プロトコル固有のフィールド、ツール呼び出し、推論、マルチモーダルコンテンツが劣化または失われる可能性があります。リスクを考慮したうえで使用してください。',
|
||||
lbPolicyRoundRobin: 'ラウンドロビン',
|
||||
lbPolicyRoundRobinDesc:
|
||||
'利用可能なモデルアカウントを順番に選択します。バックエンドの性能が近い場合に適しています。',
|
||||
@@ -1069,6 +1082,7 @@ const message = {
|
||||
userFallback: '削除済みユーザー (ID: {0})',
|
||||
requestModel: 'リクエストモデル',
|
||||
upstreamModel: '上流モデル',
|
||||
upstreamDuration: 'アップストリーム時間',
|
||||
requestModelPlaceholder: '例: qwen2.5-coder',
|
||||
upstreamModelPlaceholder: '例: Qwen/Qwen2.5-Coder-32B-Instruct',
|
||||
addMapping: 'マッピングを追加',
|
||||
|
||||
@@ -992,6 +992,17 @@ const message = {
|
||||
unlimited: '무제한',
|
||||
unlimitedWithAuto: '무제한, auto 포함',
|
||||
lastUsedAt: '최근 사용 시간',
|
||||
validityPeriod: '유효 기간',
|
||||
keepCurrentValidity: '현재 유효 기간 유지',
|
||||
neverExpires: '만료 없음',
|
||||
validForDays: '{0}일 동안 유효',
|
||||
customDays: '사용자 지정 일수',
|
||||
enterValidityDays: '유효 일수를 입력하세요',
|
||||
currentExpiresAt: '현재 만료 시간: {0}',
|
||||
currentNeverExpires: '현재 만료되지 않음',
|
||||
expiresAt: '만료 시간',
|
||||
expired: '만료됨',
|
||||
reactivate: '다시 활성화',
|
||||
settingTitle: 'AI 게이트웨이 설정',
|
||||
basicSetting: '기본 설정',
|
||||
performanceSetting: '성능 설정',
|
||||
@@ -1000,6 +1011,8 @@ const message = {
|
||||
protocolConversion: '프로토콜 변환',
|
||||
protocolConversionDesc:
|
||||
'Chat Completions, Responses 및 Anthropic Messages 간에 지원되는 직접 변환을 허용합니다. 네이티브 프로토콜이 항상 우선합니다.',
|
||||
protocolConversionRisk:
|
||||
'프로토콜 변환은 무손실을 보장하지 않습니다. 프로토콜 전용 필드, 도구 호출, 추론 또는 멀티모달 콘텐츠가 축소되거나 손실될 수 있으므로 위험을 고려한 후 사용하세요.',
|
||||
lbPolicyRoundRobin: '라운드 로빈',
|
||||
lbPolicyRoundRobinDesc:
|
||||
'사용 가능한 모델 계정을 순서대로 선택합니다. 백엔드 성능이 비슷한 경우에 적합합니다.',
|
||||
@@ -1053,6 +1066,7 @@ const message = {
|
||||
userFallback: '삭제된 사용자 (ID: {0})',
|
||||
requestModel: '요청 모델',
|
||||
upstreamModel: '업스트림 모델',
|
||||
upstreamDuration: '업스트림 시간',
|
||||
requestModelPlaceholder: '예: qwen2.5-coder',
|
||||
upstreamModelPlaceholder: '예: Qwen/Qwen2.5-Coder-32B-Instruct',
|
||||
addMapping: '매핑 추가',
|
||||
|
||||
@@ -1002,6 +1002,17 @@ const message = {
|
||||
unlimitedWithAuto: 'ບໍ່ຈຳກັດ, ລວມ auto',
|
||||
apiKeyCount: 'API Keys',
|
||||
lastUsedAt: 'ໃຊ້ງານລ່າສຸດ',
|
||||
validityPeriod: 'ໄລຍະເວລາໃຊ້ງານ',
|
||||
keepCurrentValidity: 'ຮັກສາໄລຍະເວລາປັດຈຸບັນ',
|
||||
neverExpires: 'ບໍ່ມີວັນໝົດອາຍຸ',
|
||||
validForDays: 'ໃຊ້ໄດ້ {0} ມື້',
|
||||
customDays: 'ກຳນົດຈຳນວນມື້',
|
||||
enterValidityDays: 'ກະລຸນາປ້ອນຈຳນວນມື້',
|
||||
currentExpiresAt: 'ເວລາໝົດອາຍຸປັດຈຸບັນ: {0}',
|
||||
currentNeverExpires: 'ປັດຈຸບັນບໍ່ມີວັນໝົດອາຍຸ',
|
||||
expiresAt: 'ເວລາໝົດອາຍຸ',
|
||||
expired: 'ໝົດອາຍຸແລ້ວ',
|
||||
reactivate: 'ເປີດໃຊ້ຄືນໃໝ່',
|
||||
settingTitle: 'ຕັ້ງຄ່າ AI Gateway',
|
||||
basicSetting: 'ຕັ້ງຄ່າພື້ນຖານ',
|
||||
performanceSetting: 'ຕັ້ງຄ່າປະສິດທິພາບ',
|
||||
@@ -1010,6 +1021,8 @@ const message = {
|
||||
protocolConversion: 'ການປ່ຽນໂປຣໂຕຄອນ',
|
||||
protocolConversionDesc:
|
||||
'ອະນຸຍາດການປ່ຽນໂດຍກົງທີ່ຮອງຮັບລະຫວ່າງ Chat Completions, Responses ແລະ Anthropic Messages. ໂປຣໂຕຄອນເດີມຈະຖືກໃຫ້ສິດກ່ອນສະເໝີ.',
|
||||
protocolConversionRisk:
|
||||
'ການປ່ຽນໂປຣໂຕຄອນບໍ່ຮັບປະກັນວ່າຈະບໍ່ສູນເສຍຂໍ້ມູນ. ຟິວສະເພາະ, ການເອີ້ນໃຊ້ເຄື່ອງມື, ການໃຫ້ເຫດຜົນ ຫຼືເນື້ອຫາຫຼາຍຮູບແບບອາດຖືກຫຼຸດຄຸນນະພາບ ຫຼືສູນເສຍ. ກະລຸນາພິຈາລະນາຄວາມສ່ຽງກ່ອນນຳໃຊ້.',
|
||||
lbPolicyRoundRobin: 'Round Robin',
|
||||
lbPolicyRoundRobinDesc: 'ເລືອກບັນຊີໂມເດວຕາມລຳດັບ. ໃຊ້ເມື່ອລະບົບຫຼັງບ້ານມີຄວາມສາມາດໃກ້ຄຽງກັນ.',
|
||||
lbPolicyWeightedRoundRobin: 'Weighted Round Robin',
|
||||
@@ -1062,6 +1075,7 @@ const message = {
|
||||
userFallback: 'ຜູ້ໃຊ້ທີ່ຖືກລຶບ (ID: {0})',
|
||||
requestModel: 'ໂມເດວທີ່ຮ້ອງຂໍ',
|
||||
upstreamModel: 'ໂມເດວຕົ້ນທາງ (Upstream)',
|
||||
upstreamDuration: 'ເວລາຕົ້ນທາງ',
|
||||
requestModelPlaceholder: 'ຕົວຢ່າງ: qwen2.5-coder',
|
||||
upstreamModelPlaceholder: 'ຕົວຢ່າງ: Qwen/Qwen2.5-Coder-32B-Instruct',
|
||||
addMapping: 'ເພີ່ມການຈັບຄູ່',
|
||||
|
||||
@@ -1018,6 +1018,17 @@ const message = {
|
||||
unlimited: 'Tanpa had',
|
||||
unlimitedWithAuto: 'Tanpa had, termasuk auto',
|
||||
lastUsedAt: 'Terakhir digunakan',
|
||||
validityPeriod: 'Tempoh sah',
|
||||
keepCurrentValidity: 'Kekalkan tempoh sah semasa',
|
||||
neverExpires: 'Tidak luput',
|
||||
validForDays: 'Sah selama {0} hari',
|
||||
customDays: 'Hari tersuai',
|
||||
enterValidityDays: 'Masukkan tempoh sah dalam hari',
|
||||
currentExpiresAt: 'Tarikh luput semasa: {0}',
|
||||
currentNeverExpires: 'Pada masa ini tidak luput',
|
||||
expiresAt: 'Tarikh luput',
|
||||
expired: 'Telah luput',
|
||||
reactivate: 'Aktifkan semula',
|
||||
settingTitle: 'Tetapan gateway AI',
|
||||
basicSetting: 'Tetapan Asas',
|
||||
performanceSetting: 'Tetapan Prestasi',
|
||||
@@ -1026,6 +1037,8 @@ const message = {
|
||||
protocolConversion: 'Penukaran protokol',
|
||||
protocolConversionDesc:
|
||||
'Benarkan penukaran terus yang disokong antara Chat Completions, Responses dan Anthropic Messages. Protokol asli sentiasa diutamakan.',
|
||||
protocolConversionRisk:
|
||||
'Penukaran protokol tidak menjamin tanpa kehilangan. Medan khusus protokol, panggilan alat, penaakulan atau kandungan multimodal mungkin diturunkan atau hilang. Gunakan selepas mempertimbangkan risikonya.',
|
||||
lbPolicyRoundRobin: 'Round Robin',
|
||||
lbPolicyRoundRobinDesc:
|
||||
'Pilih akaun model tersedia mengikut turutan. Sesuai apabila kapasiti backend hampir sama.',
|
||||
@@ -1079,6 +1092,7 @@ const message = {
|
||||
userFallback: 'Pengguna dipadam (ID: {0})',
|
||||
requestModel: 'Model permintaan',
|
||||
upstreamModel: 'Model upstream',
|
||||
upstreamDuration: 'Masa upstream',
|
||||
requestModelPlaceholder: 'cth. qwen2.5-coder',
|
||||
upstreamModelPlaceholder: 'cth. Qwen/Qwen2.5-Coder-32B-Instruct',
|
||||
addMapping: 'Tambah pemetaan',
|
||||
|
||||
@@ -1014,6 +1014,17 @@ const message = {
|
||||
unlimited: 'Ilimitado',
|
||||
unlimitedWithAuto: 'Ilimitado, inclui auto',
|
||||
lastUsedAt: 'Último uso',
|
||||
validityPeriod: 'Período de validade',
|
||||
keepCurrentValidity: 'Manter validade atual',
|
||||
neverExpires: 'Nunca expira',
|
||||
validForDays: 'Válido por {0} dias',
|
||||
customDays: 'Dias personalizados',
|
||||
enterValidityDays: 'Informe o período de validade em dias',
|
||||
currentExpiresAt: 'Expiração atual: {0}',
|
||||
currentNeverExpires: 'Atualmente não expira',
|
||||
expiresAt: 'Data de expiração',
|
||||
expired: 'Expirado',
|
||||
reactivate: 'Reativar',
|
||||
settingTitle: 'Configurações do gateway de IA',
|
||||
basicSetting: 'Configurações básicas',
|
||||
performanceSetting: 'Configurações de desempenho',
|
||||
@@ -1022,6 +1033,8 @@ const message = {
|
||||
protocolConversion: 'Conversão de protocolo',
|
||||
protocolConversionDesc:
|
||||
'Permite conversão direta compatível entre Chat Completions, Responses e Anthropic Messages. Protocolos nativos sempre têm prioridade.',
|
||||
protocolConversionRisk:
|
||||
'A conversão de protocolo não é sem perdas. Campos específicos, chamadas de ferramentas, raciocínio ou conteúdo multimodal podem ser degradados ou perdidos. Use após avaliar os riscos.',
|
||||
lbPolicyRoundRobin: 'Round Robin',
|
||||
lbPolicyRoundRobinDesc:
|
||||
'Seleciona contas de modelo disponíveis em ordem. Use quando os backends tiverem capacidade semelhante.',
|
||||
@@ -1075,6 +1088,7 @@ const message = {
|
||||
userFallback: 'Usuário excluído (ID: {0})',
|
||||
requestModel: 'Modelo solicitado',
|
||||
upstreamModel: 'Modelo upstream',
|
||||
upstreamDuration: 'Tempo do upstream',
|
||||
requestModelPlaceholder: 'ex.: qwen2.5-coder',
|
||||
upstreamModelPlaceholder: 'ex.: Qwen/Qwen2.5-Coder-32B-Instruct',
|
||||
addMapping: 'Adicionar mapeamento',
|
||||
|
||||
@@ -1007,6 +1007,17 @@ const message = {
|
||||
unlimited: 'Без ограничений',
|
||||
unlimitedWithAuto: 'Без ограничений, включая auto',
|
||||
lastUsedAt: 'Последнее использование',
|
||||
validityPeriod: 'Срок действия',
|
||||
keepCurrentValidity: 'Сохранить текущий срок',
|
||||
neverExpires: 'Без срока действия',
|
||||
validForDays: 'Действителен {0} дней',
|
||||
customDays: 'Указать дни',
|
||||
enterValidityDays: 'Введите срок действия в днях',
|
||||
currentExpiresAt: 'Текущий срок действия: {0}',
|
||||
currentNeverExpires: 'Срок действия не ограничен',
|
||||
expiresAt: 'Истекает',
|
||||
expired: 'Истёк',
|
||||
reactivate: 'Повторно активировать',
|
||||
settingTitle: 'Настройки AI-шлюза',
|
||||
basicSetting: 'Основные настройки',
|
||||
performanceSetting: 'Настройки производительности',
|
||||
@@ -1015,6 +1026,8 @@ const message = {
|
||||
protocolConversion: 'Преобразование протокола',
|
||||
protocolConversionDesc:
|
||||
'Разрешает поддерживаемое прямое преобразование между Chat Completions, Responses и Anthropic Messages. Нативный протокол всегда имеет приоритет.',
|
||||
protocolConversionRisk:
|
||||
'Преобразование протоколов не гарантирует отсутствие потерь. Специфичные поля, вызовы инструментов, рассуждения или мультимодальные данные могут быть упрощены или потеряны. Используйте после оценки рисков.',
|
||||
lbPolicyRoundRobin: 'Round Robin',
|
||||
lbPolicyRoundRobinDesc:
|
||||
'Выбирает доступные аккаунты моделей по очереди. Подходит, когда бэкенды имеют схожую производительность.',
|
||||
@@ -1068,6 +1081,7 @@ const message = {
|
||||
userFallback: 'Удаленный пользователь (ID: {0})',
|
||||
requestModel: 'Запрошенная модель',
|
||||
upstreamModel: 'Upstream-модель',
|
||||
upstreamDuration: 'Время upstream',
|
||||
requestModelPlaceholder: 'например: qwen2.5-coder',
|
||||
upstreamModelPlaceholder: 'например: Qwen/Qwen2.5-Coder-32B-Instruct',
|
||||
addMapping: 'Добавить сопоставление',
|
||||
|
||||
@@ -1017,6 +1017,17 @@ const message = {
|
||||
unlimited: 'Sınırsız',
|
||||
unlimitedWithAuto: 'Sınırsız, auto dahil',
|
||||
lastUsedAt: 'Son kullanım',
|
||||
validityPeriod: 'Geçerlilik süresi',
|
||||
keepCurrentValidity: 'Mevcut süreyi koru',
|
||||
neverExpires: 'Süresiz',
|
||||
validForDays: '{0} gün geçerli',
|
||||
customDays: 'Özel gün sayısı',
|
||||
enterValidityDays: 'Geçerlilik süresini gün olarak girin',
|
||||
currentExpiresAt: 'Mevcut sona erme: {0}',
|
||||
currentNeverExpires: 'Şu anda süresiz',
|
||||
expiresAt: 'Sona erme zamanı',
|
||||
expired: 'Süresi doldu',
|
||||
reactivate: 'Yeniden etkinleştir',
|
||||
settingTitle: 'AI Ağ Geçidi ayarları',
|
||||
basicSetting: 'Temel Ayarlar',
|
||||
performanceSetting: 'Performans Ayarları',
|
||||
@@ -1025,6 +1036,8 @@ const message = {
|
||||
protocolConversion: 'Protokol dönüştürme',
|
||||
protocolConversionDesc:
|
||||
'Chat Completions, Responses ve Anthropic Messages arasında desteklenen doğrudan dönüşüme izin verir. Yerel protokol her zaman önceliklidir.',
|
||||
protocolConversionRisk:
|
||||
'Protokol dönüşümü kayıpsız değildir. Protokole özgü alanlar, araç çağrıları, akıl yürütme veya çok modlu içerik azaltılabilir ya da kaybolabilir. Riskleri değerlendirdikten sonra kullanın.',
|
||||
lbPolicyRoundRobin: 'Round Robin',
|
||||
lbPolicyRoundRobinDesc:
|
||||
'Kullanılabilir model hesaplarını sırayla seçer. Backend kapasiteleri benzer olduğunda kullanın.',
|
||||
@@ -1078,6 +1091,7 @@ const message = {
|
||||
userFallback: 'Silinen kullanıcı (ID: {0})',
|
||||
requestModel: 'İstek modeli',
|
||||
upstreamModel: 'Upstream model',
|
||||
upstreamDuration: 'Upstream süresi',
|
||||
requestModelPlaceholder: 'örn. qwen2.5-coder',
|
||||
upstreamModelPlaceholder: 'örn. Qwen/Qwen2.5-Coder-32B-Instruct',
|
||||
addMapping: 'Eşleme ekle',
|
||||
|
||||
@@ -953,6 +953,17 @@ const message = {
|
||||
unlimited: '不限',
|
||||
unlimitedWithAuto: '不限,包含 auto',
|
||||
lastUsedAt: '最近使用時間',
|
||||
validityPeriod: '有效期',
|
||||
keepCurrentValidity: '保留目前有效期',
|
||||
neverExpires: '永不過期',
|
||||
validForDays: '有效 {0} 天',
|
||||
customDays: '自訂天數',
|
||||
enterValidityDays: '請輸入有效天數',
|
||||
currentExpiresAt: '目前到期時間:{0}',
|
||||
currentNeverExpires: '目前為永不過期',
|
||||
expiresAt: '到期時間',
|
||||
expired: '已過期',
|
||||
reactivate: '重新啟用',
|
||||
settingTitle: 'AI 閘道設定',
|
||||
basicSetting: '基礎設定',
|
||||
performanceSetting: '效能設定',
|
||||
@@ -961,6 +972,8 @@ const message = {
|
||||
protocolConversion: '協議轉換',
|
||||
protocolConversionDesc:
|
||||
'啟用後,文字請求可在 Chat Completions、Responses 和 Anthropic Messages 的支援協議間直接轉換,原生協議始終優先。',
|
||||
protocolConversionRisk:
|
||||
'協議轉換無法保證無損,協議專屬欄位、工具呼叫、思考內容或多模態內容可能被降級或遺失,請權衡後使用。',
|
||||
lbPolicyRoundRobin: '輪詢',
|
||||
lbPolicyRoundRobinDesc: '按順序依次選擇可用模型帳號,適合後端能力接近的場景。',
|
||||
lbPolicyWeightedRoundRobin: '加權輪詢',
|
||||
@@ -1010,6 +1023,7 @@ const message = {
|
||||
userFallback: '已刪除使用者 (ID: {0})',
|
||||
requestModel: '請求模型',
|
||||
upstreamModel: '上游模型',
|
||||
upstreamDuration: '上游耗時',
|
||||
requestModelPlaceholder: '如 qwen2.5-coder',
|
||||
upstreamModelPlaceholder: '如 Qwen/Qwen2.5-Coder-32B-Instruct',
|
||||
addMapping: '新增映射',
|
||||
|
||||
@@ -950,6 +950,17 @@ const message = {
|
||||
unlimitedWithAuto: '不限,包含 auto',
|
||||
apiKeyCount: 'API Key 数',
|
||||
lastUsedAt: '最近使用时间',
|
||||
validityPeriod: '有效期',
|
||||
keepCurrentValidity: '保持当前有效期',
|
||||
neverExpires: '永不过期',
|
||||
validForDays: '有效 {0} 天',
|
||||
customDays: '自定义天数',
|
||||
enterValidityDays: '请输入有效天数',
|
||||
currentExpiresAt: '当前到期时间:{0}',
|
||||
currentNeverExpires: '当前为永不过期',
|
||||
expiresAt: '到期时间',
|
||||
expired: '已过期',
|
||||
reactivate: '重新激活',
|
||||
settingTitle: 'AI 网关设置',
|
||||
basicSetting: '基础设置',
|
||||
performanceSetting: '性能设置',
|
||||
@@ -958,6 +969,8 @@ const message = {
|
||||
protocolConversion: '协议转换',
|
||||
protocolConversionDesc:
|
||||
'开启后,文本请求可在 Chat Completions、Responses 和 Anthropic Messages 的受支持协议间直接转换,原生协议始终优先。',
|
||||
protocolConversionRisk:
|
||||
'协议转换无法保证无损,协议专属字段、工具调用、思考内容或多模态内容可能被降级或丢失,请权衡之后使用。',
|
||||
lbPolicyRoundRobin: '轮询',
|
||||
lbPolicyRoundRobinDesc: '按顺序依次选择可用模型账号,适合后端能力接近的场景。',
|
||||
lbPolicyWeightedRoundRobin: '加权轮询',
|
||||
@@ -1007,6 +1020,7 @@ const message = {
|
||||
userFallback: '已删除用户 (ID: {0})',
|
||||
requestModel: '请求模型',
|
||||
upstreamModel: '上游模型',
|
||||
upstreamDuration: '上游耗时',
|
||||
requestModelPlaceholder: '如 qwen2.5-coder',
|
||||
upstreamModelPlaceholder: '如 Qwen/Qwen2.5-Coder-32B-Instruct',
|
||||
addMapping: '添加映射',
|
||||
|
||||
@@ -1,16 +1,20 @@
|
||||
import jsonWorker from 'monaco-editor/esm/vs/language/json/json.worker?worker';
|
||||
import cssWorker from 'monaco-editor/esm/vs/language/css/css.worker?worker';
|
||||
import htmlWorker from 'monaco-editor/esm/vs/language/html/html.worker?worker';
|
||||
import tsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker?worker';
|
||||
import EditorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker';
|
||||
import type { languages } from 'monaco-editor/editor';
|
||||
import jsonWorker from 'monaco-editor/languages/features/json/json.worker?worker';
|
||||
import cssWorker from 'monaco-editor/languages/features/css/css.worker?worker';
|
||||
import htmlWorker from 'monaco-editor/languages/features/html/html.worker?worker';
|
||||
import tsWorker from 'monaco-editor/languages/features/typescript/ts.worker?worker';
|
||||
import EditorWorker from 'monaco-editor/editor/editor.worker?worker';
|
||||
|
||||
let initialized = false;
|
||||
let languageSupportPromise: Promise<void> | null = null;
|
||||
|
||||
type MonacoEditorApi = typeof import('monaco-editor/esm/vs/editor/editor.api');
|
||||
type PythonLanguageModule = typeof import('monaco-editor/esm/vs/basic-languages/python/python.js');
|
||||
type MonacoEditorApi = typeof import('monaco-editor/editor');
|
||||
type PythonLanguageModule = {
|
||||
conf: languages.LanguageConfiguration;
|
||||
language: languages.IMonarchLanguage;
|
||||
};
|
||||
|
||||
export const buildPatchedPythonLanguage = (language: PythonLanguageModule['language']) => ({
|
||||
export const buildPatchedPythonLanguage = (language: PythonLanguageModule['language']): languages.IMonarchLanguage => ({
|
||||
...language,
|
||||
tokenizer: {
|
||||
...language.tokenizer,
|
||||
@@ -40,8 +44,8 @@ export const buildPatchedPythonLanguage = (language: PythonLanguageModule['langu
|
||||
|
||||
const patchPythonLanguageSupport = async () => {
|
||||
const [monaco, python] = await Promise.all([
|
||||
import('monaco-editor/esm/vs/editor/editor.api'),
|
||||
import('monaco-editor/esm/vs/basic-languages/python/python.js'),
|
||||
import('monaco-editor/editor'),
|
||||
import('monaco-editor/languages/definitions/python/python.js'),
|
||||
]);
|
||||
const monacoApi = monaco as MonacoEditorApi;
|
||||
const pythonModule = python as PythonLanguageModule;
|
||||
@@ -88,20 +92,20 @@ export function setupMonacoEnvironment() {
|
||||
export async function loadMonacoLanguageSupport() {
|
||||
if (!languageSupportPromise) {
|
||||
languageSupportPromise = Promise.all([
|
||||
import('monaco-editor/esm/vs/base/browser/ui/codicons/codiconStyles.js'),
|
||||
import('monaco-editor/esm/vs/editor/contrib/folding/browser/folding.js'),
|
||||
import('monaco-editor/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js'),
|
||||
import('monaco-editor/esm/vs/editor/contrib/clipboard/browser/clipboard.js'),
|
||||
import('monaco-editor/esm/vs/editor/contrib/comment/browser/comment.js'),
|
||||
import('monaco-editor/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution.js'),
|
||||
import('monaco-editor/esm/vs/editor/contrib/find/browser/findController.js'),
|
||||
import('monaco-editor/esm/vs/editor/contrib/multicursor/browser/multicursor.js'),
|
||||
import('monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneCommandsQuickAccess.js'),
|
||||
import('monaco-editor/esm/vs/basic-languages/monaco.contribution'),
|
||||
import('monaco-editor/esm/vs/language/json/monaco.contribution'),
|
||||
import('monaco-editor/esm/vs/language/css/monaco.contribution'),
|
||||
import('monaco-editor/esm/vs/language/html/monaco.contribution'),
|
||||
import('monaco-editor/esm/vs/language/typescript/monaco.contribution'),
|
||||
import('monaco-editor/features/codicon/register'),
|
||||
import('monaco-editor/features/folding/register'),
|
||||
import('monaco-editor/features/contextmenu/register'),
|
||||
import('monaco-editor/features/clipboard/register'),
|
||||
import('monaco-editor/features/comment/register'),
|
||||
import('monaco-editor/features/dropOrPasteInto/register'),
|
||||
import('monaco-editor/features/find/register'),
|
||||
import('monaco-editor/features/multicursor/register'),
|
||||
import('monaco-editor/features/quickCommand/register'),
|
||||
import('monaco-editor/languages/definitions/register.all'),
|
||||
import('monaco-editor/languages/features/json/register'),
|
||||
import('monaco-editor/languages/features/css/register'),
|
||||
import('monaco-editor/languages/features/html/register'),
|
||||
import('monaco-editor/languages/features/typescript/register'),
|
||||
])
|
||||
.then(() => patchPythonLanguageSupportSafely())
|
||||
.then(() => undefined);
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
import { nextTick, ref } from 'vue';
|
||||
import { loadMonacoLanguageSupport, setupMonacoEnvironment } from '@/utils/monaco';
|
||||
|
||||
type MonacoEditorApi = typeof import('monaco-editor/esm/vs/editor/editor.api');
|
||||
type MonacoEditorApi = typeof import('monaco-editor/editor');
|
||||
|
||||
const open = ref(false);
|
||||
const newContent = ref('');
|
||||
@@ -30,9 +30,9 @@ const oldContent = ref('');
|
||||
const em = defineEmits(['confirm']);
|
||||
|
||||
let monaco: MonacoEditorApi | null = null;
|
||||
let originalModel: MonacoEditorApi['editor']['ITextModel'] | null = null;
|
||||
let modifiedModel: MonacoEditorApi['editor']['ITextModel'] | null = null;
|
||||
let editor: MonacoEditorApi['editor']['IStandaloneDiffEditor'] | null = null;
|
||||
let originalModel: ReturnType<MonacoEditorApi['editor']['createModel']> | null = null;
|
||||
let modifiedModel: ReturnType<MonacoEditorApi['editor']['createModel']> | null = null;
|
||||
let editor: ReturnType<MonacoEditorApi['editor']['createDiffEditor']> | null = null;
|
||||
|
||||
const container = ref();
|
||||
|
||||
@@ -41,10 +41,7 @@ const ensureMonaco = async () => {
|
||||
return monaco;
|
||||
}
|
||||
setupMonacoEnvironment();
|
||||
const [monacoModule] = await Promise.all([
|
||||
import('monaco-editor/esm/vs/editor/editor.api'),
|
||||
loadMonacoLanguageSupport(),
|
||||
]);
|
||||
const [monacoModule] = await Promise.all([import('monaco-editor/editor'), loadMonacoLanguageSupport()]);
|
||||
monaco = monacoModule;
|
||||
return monaco;
|
||||
};
|
||||
|
||||
@@ -237,7 +237,7 @@ import { Languages } from '@/global/mimetype';
|
||||
import i18n from '@/lang';
|
||||
import ComplexTable from '@/components/table/complex/ComplexTable.vue';
|
||||
|
||||
type MonacoEditorApi = typeof import('monaco-editor/esm/vs/editor/editor.api');
|
||||
type MonacoEditorApi = typeof import('monaco-editor/editor');
|
||||
|
||||
interface HistoryDrawerProps {
|
||||
path: string;
|
||||
@@ -414,10 +414,7 @@ const ensureMonaco = async () => {
|
||||
return monacoApi;
|
||||
}
|
||||
setupMonacoEnvironment();
|
||||
const [monacoModule] = await Promise.all([
|
||||
import('monaco-editor/esm/vs/editor/editor.api'),
|
||||
loadMonacoLanguageSupport(),
|
||||
]);
|
||||
const [monacoModule] = await Promise.all([import('monaco-editor/editor'), loadMonacoLanguageSupport()]);
|
||||
monacoApi = monacoModule;
|
||||
return monacoApi;
|
||||
};
|
||||
|
||||
@@ -481,7 +481,7 @@ import {
|
||||
|
||||
const { isDarkTheme, isMobile } = useGlobalStore();
|
||||
|
||||
type MonacoEditorApi = typeof import('monaco-editor/esm/vs/editor/editor.api');
|
||||
type MonacoEditorApi = typeof import('monaco-editor/editor');
|
||||
|
||||
let monacoApi: MonacoEditorApi | null = null;
|
||||
let monacoThemeInitialized = false;
|
||||
@@ -496,10 +496,7 @@ const ensureMonaco = async () => {
|
||||
}
|
||||
|
||||
setupMonacoEnvironment();
|
||||
const [monacoModule] = await Promise.all([
|
||||
import('monaco-editor/esm/vs/editor/editor.api'),
|
||||
loadMonacoLanguageSupport(),
|
||||
]);
|
||||
const [monacoModule] = await Promise.all([import('monaco-editor/editor'), loadMonacoLanguageSupport()]);
|
||||
monacoApi = monacoModule;
|
||||
eolLf.value = monacoApi.editor.EndOfLineSequence.LF;
|
||||
eolCrlf.value = monacoApi.editor.EndOfLineSequence.CRLF;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<template>
|
||||
<div>
|
||||
<RouterButton :buttons="routerButton" />
|
||||
<LayoutContent :title="$t('menu.template')">
|
||||
<template #leftToolBar>
|
||||
<el-button v-permission type="primary" @click="openCreate()">
|
||||
@@ -14,12 +15,7 @@
|
||||
<TableRefresh @search="search()" />
|
||||
</template>
|
||||
<template #main>
|
||||
<ComplexTable
|
||||
:data="data"
|
||||
:pagination-config="paginationConfig"
|
||||
@search="search()"
|
||||
v-loading="loading"
|
||||
>
|
||||
<ComplexTable :data="data" :pagination-config="paginationConfig" @search="search()" v-loading="loading">
|
||||
<el-table-column :label="$t('template.name')" prop="name" min-width="120px" show-overflow-tooltip />
|
||||
<el-table-column :label="$t('template.type')" prop="type" width="150px">
|
||||
<template #default="{ row }">
|
||||
@@ -80,6 +76,13 @@ const operateRef = ref();
|
||||
const outputCreateRef = ref();
|
||||
const outputListRef = ref();
|
||||
|
||||
const routerButton = [
|
||||
{
|
||||
label: i18n.global.t('menu.template'),
|
||||
path: '/websites/templates',
|
||||
},
|
||||
];
|
||||
|
||||
const paginationConfig = reactive({
|
||||
cacheSizeKey: 'website-template-page-size',
|
||||
currentPage: 1,
|
||||
|
||||
@@ -16,7 +16,13 @@
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="form.type === 'single'" :label="$t('template.content')" prop="content">
|
||||
<el-input v-model="form.content" type="textarea" :rows="12" :placeholder="contentPlaceholder" />
|
||||
<el-input
|
||||
v-model="form.content"
|
||||
type="textarea"
|
||||
:rows="12"
|
||||
:placeholder="contentPlaceholder"
|
||||
@change="detectContentVariables"
|
||||
/>
|
||||
<span class="input-help">{{ $t('template.autoDetectHelper') }}</span>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="form.type === 'multi'" :label="$t('template.upload')">
|
||||
@@ -104,7 +110,7 @@ import { Website } from '@/api/interface/website';
|
||||
import { createTemplate, getTemplate, updateTemplate, uploadTemplateZip } from '@/api/modules/website';
|
||||
import i18n from '@/lang';
|
||||
import { MsgSuccess } from '@/utils/message';
|
||||
import { reactive, ref, watch } from 'vue';
|
||||
import { reactive, ref } from 'vue';
|
||||
|
||||
const open = ref(false);
|
||||
const loading = ref(false);
|
||||
@@ -157,19 +163,16 @@ const mergeDetectedKeys = (keys: string[]) => {
|
||||
}
|
||||
};
|
||||
|
||||
watch(
|
||||
() => form.content,
|
||||
(content) => {
|
||||
if (form.type !== 'single' || !content) return;
|
||||
const keys: string[] = [];
|
||||
for (const match of content.matchAll(/\{\{(\w+)\}\}/g)) {
|
||||
if (!keys.includes(match[1])) {
|
||||
keys.push(match[1]);
|
||||
}
|
||||
const detectContentVariables = () => {
|
||||
if (form.type !== 'single' || !form.content) return;
|
||||
const keys: string[] = [];
|
||||
for (const match of form.content.matchAll(/\{\{(\w+)\}\}/g)) {
|
||||
if (!keys.includes(match[1])) {
|
||||
keys.push(match[1]);
|
||||
}
|
||||
mergeDetectedKeys(keys);
|
||||
},
|
||||
);
|
||||
}
|
||||
mergeDetectedKeys(keys);
|
||||
};
|
||||
|
||||
const handleUpload = async (file: globalThis.File) => {
|
||||
try {
|
||||
@@ -182,6 +185,7 @@ const handleUpload = async (file: globalThis.File) => {
|
||||
};
|
||||
|
||||
const onSubmit = async () => {
|
||||
detectContentVariables();
|
||||
await formRef.value.validate();
|
||||
form.variables = JSON.stringify(variables.value.filter((v) => v.key));
|
||||
loading.value = true;
|
||||
|
||||
@@ -39,10 +39,7 @@
|
||||
>
|
||||
<el-option v-for="opt in getOptions(variable)" :key="opt" :value="opt" :label="opt" />
|
||||
</el-select>
|
||||
<el-color-picker
|
||||
v-else-if="variable.type === 'color'"
|
||||
v-model="variableValues[variable.key]"
|
||||
/>
|
||||
<el-color-picker v-else-if="variable.type === 'color'" v-model="variableValues[variable.key]" />
|
||||
<el-input v-else v-model="variableValues[variable.key]" />
|
||||
</el-form-item>
|
||||
<el-divider content-position="left">
|
||||
|
||||
@@ -22,7 +22,13 @@
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column prop="createdAt" :label="$t('commons.table.date')" :formatter="dateFormat" width="165px" />
|
||||
<fu-table-operations :ellipsis="1" :buttons="buttons" :label="$t('commons.table.operate')" fixed="right" fix />
|
||||
<fu-table-operations
|
||||
:ellipsis="1"
|
||||
:buttons="buttons"
|
||||
:label="$t('commons.table.operate')"
|
||||
fixed="right"
|
||||
fix
|
||||
/>
|
||||
</ComplexTable>
|
||||
<OpDialog ref="opRef" @search="search" />
|
||||
<OutputCreate ref="outputCreateRef" @search="search" />
|
||||
|
||||
Reference in New Issue
Block a user