diff --git a/api/certificate/certificate.go b/api/certificate/certificate.go index f256b55a..ac8110bf 100644 --- a/api/certificate/certificate.go +++ b/api/certificate/certificate.go @@ -4,6 +4,8 @@ import ( "github.com/0xJacky/Nginx-UI/api" "github.com/0xJacky/Nginx-UI/internal/cert" "github.com/0xJacky/Nginx-UI/internal/cosy" + "github.com/0xJacky/Nginx-UI/internal/nginx" + "github.com/0xJacky/Nginx-UI/internal/notification" "github.com/0xJacky/Nginx-UI/model" "github.com/0xJacky/Nginx-UI/query" "github.com/gin-gonic/gin" @@ -86,6 +88,7 @@ type certJson struct { ChallengeMethod string `json:"challenge_method"` DnsCredentialID int `json:"dns_credential_id"` ACMEUserID int `json:"acme_user_id"` + SyncNodeIds []int `json:"sync_node_ids"` } func AddCert(c *gin.Context) { @@ -103,6 +106,7 @@ func AddCert(c *gin.Context) { ChallengeMethod: json.ChallengeMethod, DnsCredentialID: json.DnsCredentialID, ACMEUserID: json.ACMEUserID, + SyncNodeIds: json.SyncNodeIds, } err := certModel.Insert() @@ -126,6 +130,12 @@ func AddCert(c *gin.Context) { return } + err = cert.SyncToRemoteServer(certModel) + if err != nil { + notification.Error("Sync Certificate Error", err.Error()) + return + } + c.JSON(http.StatusOK, Transformer(certModel)) } @@ -154,6 +164,7 @@ func ModifyCert(c *gin.Context) { KeyType: json.KeyType, DnsCredentialID: json.DnsCredentialID, ACMEUserID: json.ACMEUserID, + SyncNodeIds: json.SyncNodeIds, }) if err != nil { @@ -175,9 +186,58 @@ func ModifyCert(c *gin.Context) { return } + err = cert.SyncToRemoteServer(certModel) + if err != nil { + notification.Error("Sync Certificate Error", err.Error()) + return + } + GetCert(c) } func RemoveCert(c *gin.Context) { cosy.Core[model.Cert](c).Destroy() } + +func SyncCertificate(c *gin.Context) { + var json cert.SyncCertificatePayload + + if !api.BindAndValid(c, &json) { + return + } + + certModel := &model.Cert{ + Name: json.Name, + SSLCertificatePath: json.SSLCertificatePath, + SSLCertificateKeyPath: json.SSLCertificateKeyPath, + KeyType: json.KeyType, + AutoCert: model.AutoCertSync, + } + + db := model.UseDB() + + err := db.Where(certModel).FirstOrCreate(certModel).Error + if err != nil { + api.ErrHandler(c, err) + return + } + + content := &cert.Content{ + SSLCertificatePath: json.SSLCertificatePath, + SSLCertificateKeyPath: json.SSLCertificateKeyPath, + SSLCertificate: json.SSLCertificate, + SSLCertificateKey: json.SSLCertificateKey, + } + + err = content.WriteFile() + if err != nil { + api.ErrHandler(c, err) + return + } + + nginx.Reload() + + c.JSON(http.StatusOK, gin.H{ + "message": "ok", + }) +} diff --git a/api/certificate/router.go b/api/certificate/router.go index 071de493..1549db4f 100644 --- a/api/certificate/router.go +++ b/api/certificate/router.go @@ -16,6 +16,7 @@ func InitCertificateRouter(r *gin.RouterGroup) { r.POST("cert", AddCert) r.POST("cert/:id", ModifyCert) r.DELETE("cert/:id", RemoveCert) + r.PUT("cert_sync", SyncCertificate) r.GET("certificate/dns_providers", GetDNSProvidersList) r.GET("certificate/dns_provider/:code", GetDNSProvider) } diff --git a/api/notification/notification.go b/api/notification/notification.go index f54348b9..1a3998d2 100644 --- a/api/notification/notification.go +++ b/api/notification/notification.go @@ -30,8 +30,7 @@ func GetList(c *gin.Context) { } func Destroy(c *gin.Context) { - cosy.Core[model.Notification](c). - PermanentlyDelete() + cosy.Core[model.Notification](c).Destroy() } func DestroyAll(c *gin.Context) { diff --git a/api/sites/domain.go b/api/sites/domain.go index 580fc420..f65c6487 100644 --- a/api/sites/domain.go +++ b/api/sites/domain.go @@ -22,14 +22,12 @@ func GetDomains(c *gin.Context) { sort := c.DefaultQuery("sort", "desc") configFiles, err := os.ReadDir(nginx.GetConfPath("sites-available")) - if err != nil { api.ErrHandler(c, err) return } enabledConfig, err := os.ReadDir(nginx.GetConfPath("sites-enabled")) - if err != nil { api.ErrHandler(c, err) return diff --git a/app/package.json b/app/package.json index eff91f2a..f574a1dd 100644 --- a/app/package.json +++ b/app/package.json @@ -13,15 +13,15 @@ "dependencies": { "@ant-design/icons-vue": "^7.0.1", "@formkit/auto-animate": "^0.8.2", - "@vue/reactivity": "^3.4.27", - "@vue/shared": "^3.4.27", - "@vueuse/core": "^10.9.0", + "@vue/reactivity": "^3.4.29", + "@vue/shared": "^3.4.29", + "@vueuse/core": "^10.11.0", "@xterm/addon-attach": "^0.11.0", "@xterm/addon-fit": "^0.10.0", "@xterm/xterm": "^5.5.0", - "ant-design-vue": "^4.2.1", - "apexcharts": "^3.49.0", - "axios": "^1.6.8", + "ant-design-vue": "^4.2.3", + "apexcharts": "^3.49.1", + "axios": "^1.7.2", "dayjs": "^1.11.11", "highlight.js": "^11.9.0", "lodash": "^4.17.21", @@ -32,9 +32,9 @@ "reconnecting-websocket": "^4.4.0", "sortablejs": "^1.15.2", "vite-plugin-build-id": "^0.2.9", - "vue": "^3.4.27", + "vue": "^3.4.29", "vue-github-button": "github:0xJacky/vue-github-button", - "vue-router": "^4.3.2", + "vue-router": "^4.3.3", "vue3-ace-editor": "2.2.4", "vue3-apexcharts": "1.4.4", "vue3-gettext": "3.0.0-beta.4", @@ -42,16 +42,16 @@ }, "devDependencies": { "@antfu/eslint-config-vue": "^0.43.1", - "@types/lodash": "^4.17.1", + "@types/lodash": "^4.17.5", "@types/nprogress": "^0.2.3", "@types/sortablejs": "^1.15.8", "@typescript-eslint/eslint-plugin": "^6.21.0", "@typescript-eslint/parser": "^6.21.0", - "@vitejs/plugin-vue": "^5.0.4", + "@vitejs/plugin-vue": "^5.0.5", "@vitejs/plugin-vue-jsx": "^3.1.0", - "@vue/compiler-sfc": "^3.4.27", + "@vue/compiler-sfc": "^3.4.29", "@vue/tsconfig": "^0.5.1", - "ace-builds": "^1.33.1", + "ace-builds": "^1.35.0", "autoprefixer": "^10.4.19", "eslint": "^8.57.0", "eslint-import-resolver-alias": "^1.1.2", @@ -59,17 +59,17 @@ "eslint-plugin-import": "^2.29.1", "eslint-plugin-regex": "^1.10.0", "eslint-plugin-sonarjs": "^0.23.0", - "eslint-plugin-vue": "^9.25.0", + "eslint-plugin-vue": "^9.26.0", "less": "^4.2.0", "postcss": "^8.4.38", - "tailwindcss": "^3.4.3", + "tailwindcss": "^3.4.4", "typescript": "5.3.3", - "unplugin-auto-import": "^0.17.5", + "unplugin-auto-import": "^0.17.6", "unplugin-vue-components": "^0.26.0", - "unplugin-vue-define-options": "^1.4.4", - "vite": "^5.2.11", + "unplugin-vue-define-options": "^1.4.5", + "vite": "^5.3.1", "vite-svg-loader": "^5.1.0", "vue-tsc": "^1.8.27" }, - "packageManager": "pnpm@9.0.6+sha256.0624e30eff866cdeb363b15061bdb7fd9425b17bc1bb42c22f5f4efdea21f6b3" + "packageManager": "pnpm@9.3.0+sha512.ee7b93e0c2bd11409c6424f92b866f31d3ea1bef5fbe47d3c7500cdc3c9668833d2e55681ad66df5b640c61fa9dc25d546efa54d76d7f8bf54b13614ac293631" } diff --git a/app/pnpm-lock.yaml b/app/pnpm-lock.yaml index 9801ce90..fdae1b9b 100644 --- a/app/pnpm-lock.yaml +++ b/app/pnpm-lock.yaml @@ -10,19 +10,19 @@ importers: dependencies: '@ant-design/icons-vue': specifier: ^7.0.1 - version: 7.0.1(vue@3.4.27(typescript@5.3.3)) + version: 7.0.1(vue@3.4.29(typescript@5.3.3)) '@formkit/auto-animate': specifier: ^0.8.2 version: 0.8.2 '@vue/reactivity': - specifier: ^3.4.27 - version: 3.4.27 + specifier: ^3.4.29 + version: 3.4.29 '@vue/shared': - specifier: ^3.4.27 - version: 3.4.27 + specifier: ^3.4.29 + version: 3.4.29 '@vueuse/core': - specifier: ^10.9.0 - version: 10.9.0(vue@3.4.27(typescript@5.3.3)) + specifier: ^10.11.0 + version: 10.11.0(vue@3.4.29(typescript@5.3.3)) '@xterm/addon-attach': specifier: ^0.11.0 version: 0.11.0(@xterm/xterm@5.5.0) @@ -33,14 +33,14 @@ importers: specifier: ^5.5.0 version: 5.5.0 ant-design-vue: - specifier: ^4.2.1 - version: 4.2.1(vue@3.4.27(typescript@5.3.3)) + specifier: ^4.2.3 + version: 4.2.3(vue@3.4.29(typescript@5.3.3)) apexcharts: - specifier: ^3.49.0 - version: 3.49.0 + specifier: ^3.49.1 + version: 3.49.1 axios: - specifier: ^1.6.8 - version: 1.6.8 + specifier: ^1.7.2 + version: 1.7.2 dayjs: specifier: ^1.11.11 version: 1.11.11 @@ -58,10 +58,10 @@ importers: version: 0.2.0 pinia: specifier: ^2.1.7 - version: 2.1.7(typescript@5.3.3)(vue@3.4.27(typescript@5.3.3)) + version: 2.1.7(typescript@5.3.3)(vue@3.4.29(typescript@5.3.3)) pinia-plugin-persistedstate: specifier: ^3.2.1 - version: 3.2.1(pinia@2.1.7(typescript@5.3.3)(vue@3.4.27(typescript@5.3.3))) + version: 3.2.1(pinia@2.1.7(typescript@5.3.3)(vue@3.4.29(typescript@5.3.3))) reconnecting-websocket: specifier: ^4.4.0 version: 4.4.0 @@ -72,33 +72,33 @@ importers: specifier: ^0.2.9 version: 0.2.9(less@4.2.0) vue: - specifier: ^3.4.27 - version: 3.4.27(typescript@5.3.3) + specifier: ^3.4.29 + version: 3.4.29(typescript@5.3.3) vue-github-button: specifier: github:0xJacky/vue-github-button version: https://codeload.github.com/0xJacky/vue-github-button/tar.gz/fc3c93355a790d3249de6610de3ebe35949ee314 vue-router: - specifier: ^4.3.2 - version: 4.3.2(vue@3.4.27(typescript@5.3.3)) + specifier: ^4.3.3 + version: 4.3.3(vue@3.4.29(typescript@5.3.3)) vue3-ace-editor: specifier: 2.2.4 - version: 2.2.4(ace-builds@1.33.1)(vue@3.4.27(typescript@5.3.3)) + version: 2.2.4(ace-builds@1.35.0)(vue@3.4.29(typescript@5.3.3)) vue3-apexcharts: specifier: 1.4.4 - version: 1.4.4(apexcharts@3.49.0)(vue@3.4.27(typescript@5.3.3)) + version: 1.4.4(apexcharts@3.49.1)(vue@3.4.29(typescript@5.3.3)) vue3-gettext: specifier: 3.0.0-beta.4 - version: 3.0.0-beta.4(@vue/compiler-sfc@3.4.27)(typescript@5.3.3)(vue@3.4.27(typescript@5.3.3)) + version: 3.0.0-beta.4(@vue/compiler-sfc@3.4.29)(typescript@5.3.3)(vue@3.4.29(typescript@5.3.3)) vuedraggable: specifier: ^4.1.0 - version: 4.1.0(vue@3.4.27(typescript@5.3.3)) + version: 4.1.0(vue@3.4.29(typescript@5.3.3)) devDependencies: '@antfu/eslint-config-vue': specifier: ^0.43.1 version: 0.43.1(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3))(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0)(typescript@5.3.3) '@types/lodash': - specifier: ^4.17.1 - version: 4.17.1 + specifier: ^4.17.5 + version: 4.17.5 '@types/nprogress': specifier: ^0.2.3 version: 0.2.3 @@ -112,20 +112,20 @@ importers: specifier: ^6.21.0 version: 6.21.0(eslint@8.57.0)(typescript@5.3.3) '@vitejs/plugin-vue': - specifier: ^5.0.4 - version: 5.0.4(vite@5.2.11(@types/node@20.12.10)(less@4.2.0))(vue@3.4.27(typescript@5.3.3)) + specifier: ^5.0.5 + version: 5.0.5(vite@5.3.1(@types/node@20.14.2)(less@4.2.0))(vue@3.4.29(typescript@5.3.3)) '@vitejs/plugin-vue-jsx': specifier: ^3.1.0 - version: 3.1.0(vite@5.2.11(@types/node@20.12.10)(less@4.2.0))(vue@3.4.27(typescript@5.3.3)) + version: 3.1.0(vite@5.3.1(@types/node@20.14.2)(less@4.2.0))(vue@3.4.29(typescript@5.3.3)) '@vue/compiler-sfc': - specifier: ^3.4.27 - version: 3.4.27 + specifier: ^3.4.29 + version: 3.4.29 '@vue/tsconfig': specifier: ^0.5.1 version: 0.5.1 ace-builds: - specifier: ^1.33.1 - version: 1.33.1 + specifier: ^1.35.0 + version: 1.35.0 autoprefixer: specifier: ^10.4.19 version: 10.4.19(postcss@8.4.38) @@ -148,8 +148,8 @@ importers: specifier: ^0.23.0 version: 0.23.0(eslint@8.57.0) eslint-plugin-vue: - specifier: ^9.25.0 - version: 9.25.0(eslint@8.57.0) + specifier: ^9.26.0 + version: 9.26.0(eslint@8.57.0) less: specifier: ^4.2.0 version: 4.2.0 @@ -157,26 +157,26 @@ importers: specifier: ^8.4.38 version: 8.4.38 tailwindcss: - specifier: ^3.4.3 - version: 3.4.3 + specifier: ^3.4.4 + version: 3.4.4 typescript: specifier: 5.3.3 version: 5.3.3 unplugin-auto-import: - specifier: ^0.17.5 - version: 0.17.5(@vueuse/core@10.9.0(vue@3.4.27(typescript@5.3.3)))(rollup@4.17.2) + specifier: ^0.17.6 + version: 0.17.6(@vueuse/core@10.11.0(vue@3.4.29(typescript@5.3.3)))(rollup@4.18.0) unplugin-vue-components: specifier: ^0.26.0 - version: 0.26.0(@babel/parser@7.24.5)(rollup@4.17.2)(vue@3.4.27(typescript@5.3.3)) + version: 0.26.0(@babel/parser@7.24.7)(rollup@4.18.0)(vue@3.4.29(typescript@5.3.3)) unplugin-vue-define-options: - specifier: ^1.4.4 - version: 1.4.4(rollup@4.17.2)(vue@3.4.27(typescript@5.3.3)) + specifier: ^1.4.5 + version: 1.4.5(rollup@4.18.0)(vue@3.4.29(typescript@5.3.3)) vite: - specifier: ^5.2.11 - version: 5.2.11(@types/node@20.12.10)(less@4.2.0) + specifier: ^5.3.1 + version: 5.3.1(@types/node@20.14.2)(less@4.2.0) vite-svg-loader: specifier: ^5.1.0 - version: 5.1.0(vue@3.4.27(typescript@5.3.3)) + version: 5.1.0(vue@3.4.29(typescript@5.3.3)) vue-tsc: specifier: ^1.8.27 version: 1.8.27(typescript@5.3.3) @@ -218,152 +218,152 @@ packages: peerDependencies: eslint: '>=7.4.0' - '@antfu/utils@0.7.7': - resolution: {integrity: sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg==} + '@antfu/utils@0.7.8': + resolution: {integrity: sha512-rWQkqXRESdjXtc+7NRfK9lASQjpXJu1ayp7qi1d23zZorY+wBHVLHHoVcMsEnkqEBWTFqbztO7/QdJFzyEcLTg==} - '@babel/code-frame@7.24.2': - resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} + '@babel/code-frame@7.24.7': + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.24.4': - resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==} + '@babel/compat-data@7.24.7': + resolution: {integrity: sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==} engines: {node: '>=6.9.0'} - '@babel/core@7.24.5': - resolution: {integrity: sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==} + '@babel/core@7.24.7': + resolution: {integrity: sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==} engines: {node: '>=6.9.0'} - '@babel/generator@7.24.5': - resolution: {integrity: sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==} + '@babel/generator@7.24.7': + resolution: {integrity: sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==} engines: {node: '>=6.9.0'} - '@babel/helper-annotate-as-pure@7.22.5': - resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} + '@babel/helper-annotate-as-pure@7.24.7': + resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.23.6': - resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} + '@babel/helper-compilation-targets@7.24.7': + resolution: {integrity: sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==} engines: {node: '>=6.9.0'} - '@babel/helper-create-class-features-plugin@7.24.5': - resolution: {integrity: sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g==} + '@babel/helper-create-class-features-plugin@7.24.7': + resolution: {integrity: sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-environment-visitor@7.22.20': - resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + '@babel/helper-environment-visitor@7.24.7': + resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} engines: {node: '>=6.9.0'} - '@babel/helper-function-name@7.23.0': - resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + '@babel/helper-function-name@7.24.7': + resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==} engines: {node: '>=6.9.0'} - '@babel/helper-hoist-variables@7.22.5': - resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + '@babel/helper-hoist-variables@7.24.7': + resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==} engines: {node: '>=6.9.0'} - '@babel/helper-member-expression-to-functions@7.24.5': - resolution: {integrity: sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA==} + '@babel/helper-member-expression-to-functions@7.24.7': + resolution: {integrity: sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==} engines: {node: '>=6.9.0'} '@babel/helper-module-imports@7.22.15': resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.24.3': - resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==} + '@babel/helper-module-imports@7.24.7': + resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} engines: {node: '>=6.9.0'} - '@babel/helper-module-transforms@7.24.5': - resolution: {integrity: sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==} + '@babel/helper-module-transforms@7.24.7': + resolution: {integrity: sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-optimise-call-expression@7.22.5': - resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} + '@babel/helper-optimise-call-expression@7.24.7': + resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} engines: {node: '>=6.9.0'} - '@babel/helper-plugin-utils@7.24.5': - resolution: {integrity: sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==} + '@babel/helper-plugin-utils@7.24.7': + resolution: {integrity: sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==} engines: {node: '>=6.9.0'} - '@babel/helper-replace-supers@7.24.1': - resolution: {integrity: sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==} + '@babel/helper-replace-supers@7.24.7': + resolution: {integrity: sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-simple-access@7.24.5': - resolution: {integrity: sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==} + '@babel/helper-simple-access@7.24.7': + resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} engines: {node: '>=6.9.0'} - '@babel/helper-skip-transparent-expression-wrappers@7.22.5': - resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} + '@babel/helper-skip-transparent-expression-wrappers@7.24.7': + resolution: {integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==} engines: {node: '>=6.9.0'} - '@babel/helper-split-export-declaration@7.24.5': - resolution: {integrity: sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==} + '@babel/helper-split-export-declaration@7.24.7': + resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.24.1': - resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} + '@babel/helper-string-parser@7.24.7': + resolution: {integrity: sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.24.5': - resolution: {integrity: sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==} + '@babel/helper-validator-identifier@7.24.7': + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.23.5': - resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} + '@babel/helper-validator-option@7.24.7': + resolution: {integrity: sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.24.5': - resolution: {integrity: sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==} + '@babel/helpers@7.24.7': + resolution: {integrity: sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==} engines: {node: '>=6.9.0'} - '@babel/highlight@7.24.5': - resolution: {integrity: sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==} + '@babel/highlight@7.24.7': + resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.24.5': - resolution: {integrity: sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==} + '@babel/parser@7.24.7': + resolution: {integrity: sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/plugin-syntax-jsx@7.24.1': - resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==} + '@babel/plugin-syntax-jsx@7.24.7': + resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-typescript@7.24.1': - resolution: {integrity: sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==} + '@babel/plugin-syntax-typescript@7.24.7': + resolution: {integrity: sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-typescript@7.24.5': - resolution: {integrity: sha512-E0VWu/hk83BIFUWnsKZ4D81KXjN5L3MobvevOHErASk9IPwKHOkTgvqzvNo1yP/ePJWqqK2SpUR5z+KQbl6NVw==} + '@babel/plugin-transform-typescript@7.24.7': + resolution: {integrity: sha512-iLD3UNkgx2n/HrjBesVbYX6j0yqn/sJktvbtKKgcaLIQ4bTTQ8obAypc1VpyHPD2y4Phh9zHOaAt8e/L14wCpw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/runtime@7.24.5': - resolution: {integrity: sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==} + '@babel/runtime@7.24.7': + resolution: {integrity: sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==} engines: {node: '>=6.9.0'} - '@babel/template@7.24.0': - resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} + '@babel/template@7.24.7': + resolution: {integrity: sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.24.5': - resolution: {integrity: sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==} + '@babel/traverse@7.24.7': + resolution: {integrity: sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==} engines: {node: '>=6.9.0'} - '@babel/types@7.24.5': - resolution: {integrity: sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==} + '@babel/types@7.24.7': + resolution: {integrity: sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==} engines: {node: '>=6.9.0'} '@ctrl/tinycolor@3.6.1': @@ -380,140 +380,140 @@ packages: resolution: {integrity: sha512-aKUhyn1QI5Ksbqcr3fFJj16p99QdjUxXAEuFst1Z47DRyoiMwivIH9MV/ARcJOCXVjPfjITciej8ZD2O/6qUmw==} engines: {node: '>=16'} - '@esbuild/aix-ppc64@0.20.2': - resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} engines: {node: '>=12'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.20.2': - resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} + '@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.20.2': - resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} engines: {node: '>=12'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.20.2': - resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} engines: {node: '>=12'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.20.2': - resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.20.2': - resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} engines: {node: '>=12'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.20.2': - resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.20.2': - resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} + '@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.20.2': - resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} engines: {node: '>=12'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.20.2': - resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} engines: {node: '>=12'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.20.2': - resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} engines: {node: '>=12'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.20.2': - resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} + '@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.20.2': - resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.20.2': - resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} + '@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.20.2': - resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.20.2': - resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} engines: {node: '>=12'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.20.2': - resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} engines: {node: '>=12'} cpu: [x64] os: [linux] - '@esbuild/netbsd-x64@0.20.2': - resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-x64@0.20.2': - resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.20.2': - resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} + '@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.20.2': - resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} engines: {node: '>=12'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.20.2': - resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} + '@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.20.2': - resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -524,8 +524,8 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.10.0': - resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + '@eslint-community/regexpp@4.10.1': + resolution: {integrity: sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} '@eslint/eslintrc@2.1.4': @@ -542,6 +542,7 @@ packages: '@humanwhocodes/config-array@0.11.14': resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} @@ -549,6 +550,7 @@ packages: '@humanwhocodes/object-schema@2.0.3': resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} @@ -597,83 +599,83 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.17.2': - resolution: {integrity: sha512-NM0jFxY8bB8QLkoKxIQeObCaDlJKewVlIEkuyYKm5An1tdVZ966w2+MPQ2l8LBZLjR+SgyV+nRkTIunzOYBMLQ==} + '@rollup/rollup-android-arm-eabi@4.18.0': + resolution: {integrity: sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.17.2': - resolution: {integrity: sha512-yeX/Usk7daNIVwkq2uGoq2BYJKZY1JfyLTaHO/jaiSwi/lsf8fTFoQW/n6IdAsx5tx+iotu2zCJwz8MxI6D/Bw==} + '@rollup/rollup-android-arm64@4.18.0': + resolution: {integrity: sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.17.2': - resolution: {integrity: sha512-kcMLpE6uCwls023+kknm71ug7MZOrtXo+y5p/tsg6jltpDtgQY1Eq5sGfHcQfb+lfuKwhBmEURDga9N0ol4YPw==} + '@rollup/rollup-darwin-arm64@4.18.0': + resolution: {integrity: sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.17.2': - resolution: {integrity: sha512-AtKwD0VEx0zWkL0ZjixEkp5tbNLzX+FCqGG1SvOu993HnSz4qDI6S4kGzubrEJAljpVkhRSlg5bzpV//E6ysTQ==} + '@rollup/rollup-darwin-x64@4.18.0': + resolution: {integrity: sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==} cpu: [x64] os: [darwin] - '@rollup/rollup-linux-arm-gnueabihf@4.17.2': - resolution: {integrity: sha512-3reX2fUHqN7sffBNqmEyMQVj/CKhIHZd4y631duy0hZqI8Qoqf6lTtmAKvJFYa6bhU95B1D0WgzHkmTg33In0A==} + '@rollup/rollup-linux-arm-gnueabihf@4.18.0': + resolution: {integrity: sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.17.2': - resolution: {integrity: sha512-uSqpsp91mheRgw96xtyAGP9FW5ChctTFEoXP0r5FAzj/3ZRv3Uxjtc7taRQSaQM/q85KEKjKsZuiZM3GyUivRg==} + '@rollup/rollup-linux-arm-musleabihf@4.18.0': + resolution: {integrity: sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.17.2': - resolution: {integrity: sha512-EMMPHkiCRtE8Wdk3Qhtciq6BndLtstqZIroHiiGzB3C5LDJmIZcSzVtLRbwuXuUft1Cnv+9fxuDtDxz3k3EW2A==} + '@rollup/rollup-linux-arm64-gnu@4.18.0': + resolution: {integrity: sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.17.2': - resolution: {integrity: sha512-NMPylUUZ1i0z/xJUIx6VUhISZDRT+uTWpBcjdv0/zkp7b/bQDF+NfnfdzuTiB1G6HTodgoFa93hp0O1xl+/UbA==} + '@rollup/rollup-linux-arm64-musl@4.18.0': + resolution: {integrity: sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.17.2': - resolution: {integrity: sha512-T19My13y8uYXPw/L/k0JYaX1fJKFT/PWdXiHr8mTbXWxjVF1t+8Xl31DgBBvEKclw+1b00Chg0hxE2O7bTG7GQ==} + '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': + resolution: {integrity: sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.17.2': - resolution: {integrity: sha512-BOaNfthf3X3fOWAB+IJ9kxTgPmMqPPH5f5k2DcCsRrBIbWnaJCgX2ll77dV1TdSy9SaXTR5iDXRL8n7AnoP5cg==} + '@rollup/rollup-linux-riscv64-gnu@4.18.0': + resolution: {integrity: sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.17.2': - resolution: {integrity: sha512-W0UP/x7bnn3xN2eYMql2T/+wpASLE5SjObXILTMPUBDB/Fg/FxC+gX4nvCfPBCbNhz51C+HcqQp2qQ4u25ok6g==} + '@rollup/rollup-linux-s390x-gnu@4.18.0': + resolution: {integrity: sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.17.2': - resolution: {integrity: sha512-Hy7pLwByUOuyaFC6mAr7m+oMC+V7qyifzs/nW2OJfC8H4hbCzOX07Ov0VFk/zP3kBsELWNFi7rJtgbKYsav9QQ==} + '@rollup/rollup-linux-x64-gnu@4.18.0': + resolution: {integrity: sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.17.2': - resolution: {integrity: sha512-h1+yTWeYbRdAyJ/jMiVw0l6fOOm/0D1vNLui9iPuqgRGnXA0u21gAqOyB5iHjlM9MMfNOm9RHCQ7zLIzT0x11Q==} + '@rollup/rollup-linux-x64-musl@4.18.0': + resolution: {integrity: sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.17.2': - resolution: {integrity: sha512-tmdtXMfKAjy5+IQsVtDiCfqbynAQE/TQRpWdVataHmhMb9DCoJxp9vLcCBjEQWMiUYxO1QprH/HbY9ragCEFLA==} + '@rollup/rollup-win32-arm64-msvc@4.18.0': + resolution: {integrity: sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.17.2': - resolution: {integrity: sha512-7II/QCSTAHuE5vdZaQEwJq2ZACkBpQDOmQsE6D6XUbnBHW8IAhm4eTufL6msLJorzrHDFv3CF8oCA/hSIRuZeQ==} + '@rollup/rollup-win32-ia32-msvc@4.18.0': + resolution: {integrity: sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.17.2': - resolution: {integrity: sha512-TGGO7v7qOq4CYmSBVEYpI1Y5xDuCEnbVC5Vth8mOsW0gDSzxNrVERPc790IGHsrT2dQSimgMr9Ub3Y1Jci5/8w==} + '@rollup/rollup-win32-x64-msvc@4.18.0': + resolution: {integrity: sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==} cpu: [x64] os: [win32] @@ -705,8 +707,8 @@ packages: '@types/json5@0.0.29': resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - '@types/lodash@4.17.1': - resolution: {integrity: sha512-X+2qazGS3jxLAIz5JDXDzglAF3KpijdhFxlf/V1+hEsOUc+HnWi81L/uv/EvGuV90WY+7mPGFCUDGfQC3Gj95Q==} + '@types/lodash@4.17.5': + resolution: {integrity: sha512-MBIOHVZqVqgfro1euRDWX7OO0fBVUUMrN6Pwm8LQsz8cWhEpihlvR70ENj3f40j58TNxZaWv2ndSkInykNBBJw==} '@types/mdast@3.0.15': resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} @@ -714,8 +716,8 @@ packages: '@types/minimatch@5.1.2': resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} - '@types/node@20.12.10': - resolution: {integrity: sha512-Eem5pH9pmWBHoGAT8Dr5fdc5rYA+4NAovdM4EktRPVAAiJhmWWfQrA0cFhAbOsQdSfIHjAud6YdkbL69+zSKjw==} + '@types/node@20.14.2': + resolution: {integrity: sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -833,8 +835,8 @@ packages: vite: ^4.0.0 || ^5.0.0 vue: ^3.0.0 - '@vitejs/plugin-vue@5.0.4': - resolution: {integrity: sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==} + '@vitejs/plugin-vue@5.0.5': + resolution: {integrity: sha512-LOjm7XeIimLBZyzinBQ6OSm3UBCNVCpLkxGC0oWmm2YPzVZoxMsdvNVimLTBzpAnR9hl/yn1SHGuRfe6/Td9rQ==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: vite: ^5.0.0 @@ -849,8 +851,8 @@ packages: '@volar/typescript@1.11.1': resolution: {integrity: sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==} - '@vue-macros/common@1.10.3': - resolution: {integrity: sha512-YSgzcbXrRo8a/TF/YIguqEmTld1KA60VETKJG8iFuaAfj7j+Tbdin3cj7/cYbcCHORSq1v9IThgq7r8keH7LXQ==} + '@vue-macros/common@1.10.4': + resolution: {integrity: sha512-akO6Bd6U4jP0+ZKbHq6mbYkw1coOrJpLeVmkuMlUsT5wZRi11BjauGcZHusBSzUjgCBsa1kZTyipxrxrWB54Hw==} engines: {node: '>=16.14.0'} peerDependencies: vue: ^2.7.0 || ^3.2.25 @@ -874,20 +876,20 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@vue/compiler-core@3.4.27': - resolution: {integrity: sha512-E+RyqY24KnyDXsCuQrI+mlcdW3ALND6U7Gqa/+bVwbcpcR3BRRIckFoz7Qyd4TTlnugtwuI7YgjbvsLmxb+yvg==} + '@vue/compiler-core@3.4.29': + resolution: {integrity: sha512-TFKiRkKKsRCKvg/jTSSKK7mYLJEQdUiUfykbG49rubC9SfDyvT2JrzTReopWlz2MxqeLyxh9UZhvxEIBgAhtrg==} - '@vue/compiler-dom@3.4.27': - resolution: {integrity: sha512-kUTvochG/oVgE1w5ViSr3KUBh9X7CWirebA3bezTbB5ZKBQZwR2Mwj9uoSKRMFcz4gSMzzLXBPD6KpCLb9nvWw==} + '@vue/compiler-dom@3.4.29': + resolution: {integrity: sha512-A6+iZ2fKIEGnfPJejdB7b1FlJzgiD+Y/sxxKwJWg1EbJu6ZPgzaPQQ51ESGNv0CP6jm6Z7/pO6Ia8Ze6IKrX7w==} - '@vue/compiler-sfc@3.4.27': - resolution: {integrity: sha512-nDwntUEADssW8e0rrmE0+OrONwmRlegDA1pD6QhVeXxjIytV03yDqTey9SBDiALsvAd5U4ZrEKbMyVXhX6mCGA==} + '@vue/compiler-sfc@3.4.29': + resolution: {integrity: sha512-zygDcEtn8ZimDlrEQyLUovoWgKQic6aEQqRXce2WXBvSeHbEbcAsXyCk9oG33ZkyWH4sl9D3tkYc1idoOkdqZQ==} - '@vue/compiler-ssr@3.4.27': - resolution: {integrity: sha512-CVRzSJIltzMG5FcidsW0jKNQnNRYC8bT21VegyMMtHmhW3UOI7knmUehzswXLrExDLE6lQCZdrhD4ogI7c+vuw==} + '@vue/compiler-ssr@3.4.29': + resolution: {integrity: sha512-rFbwCmxJ16tDp3N8XCx5xSQzjhidYjXllvEcqX/lopkoznlNPz3jyy0WGJCyhAaVQK677WWFt3YO/WUEkMMUFQ==} - '@vue/devtools-api@6.6.1': - resolution: {integrity: sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==} + '@vue/devtools-api@6.6.3': + resolution: {integrity: sha512-0MiMsFma/HqA6g3KLKn+AGpL1kgKhFWszC9U29NfpWK5LE7bjeXxySWJrOJ77hBz+TBrBQ7o4QJqbPbqbs8rJw==} '@vue/language-core@1.8.27': resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==} @@ -897,34 +899,34 @@ packages: typescript: optional: true - '@vue/reactivity@3.4.27': - resolution: {integrity: sha512-kK0g4NknW6JX2yySLpsm2jlunZJl2/RJGZ0H9ddHdfBVHcNzxmQ0sS0b09ipmBoQpY8JM2KmUw+a6sO8Zo+zIA==} + '@vue/reactivity@3.4.29': + resolution: {integrity: sha512-w8+KV+mb1a8ornnGQitnMdLfE0kXmteaxLdccm2XwdFxXst4q/Z7SEboCV5SqJNpZbKFeaRBBJBhW24aJyGINg==} - '@vue/runtime-core@3.4.27': - resolution: {integrity: sha512-7aYA9GEbOOdviqVvcuweTLe5Za4qBZkUY7SvET6vE8kyypxVgaT1ixHLg4urtOlrApdgcdgHoTZCUuTGap/5WA==} + '@vue/runtime-core@3.4.29': + resolution: {integrity: sha512-s8fmX3YVR/Rk5ig0ic0NuzTNjK2M7iLuVSZyMmCzN/+Mjuqqif1JasCtEtmtoJWF32pAtUjyuT2ljNKNLeOmnQ==} - '@vue/runtime-dom@3.4.27': - resolution: {integrity: sha512-ScOmP70/3NPM+TW9hvVAz6VWWtZJqkbdf7w6ySsws+EsqtHvkhxaWLecrTorFxsawelM5Ys9FnDEMt6BPBDS0Q==} + '@vue/runtime-dom@3.4.29': + resolution: {integrity: sha512-gI10atCrtOLf/2MPPMM+dpz3NGulo9ZZR9d1dWo4fYvm+xkfvRrw1ZmJ7mkWtiJVXSsdmPbcK1p5dZzOCKDN0g==} - '@vue/server-renderer@3.4.27': - resolution: {integrity: sha512-dlAMEuvmeA3rJsOMJ2J1kXU7o7pOxgsNHVr9K8hB3ImIkSuBrIdy0vF66h8gf8Tuinf1TK3mPAz2+2sqyf3KzA==} + '@vue/server-renderer@3.4.29': + resolution: {integrity: sha512-HMLCmPI2j/k8PVkSBysrA2RxcxC5DgBiCdj7n7H2QtR8bQQPqKAe8qoaxLcInzouBmzwJ+J0x20ygN/B5mYBng==} peerDependencies: - vue: 3.4.27 + vue: 3.4.29 - '@vue/shared@3.4.27': - resolution: {integrity: sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA==} + '@vue/shared@3.4.29': + resolution: {integrity: sha512-hQ2gAQcBO/CDpC82DCrinJNgOHI2v+FA7BDW4lMSPeBpQ7sRe2OLHWe5cph1s7D8DUQAwRt18dBDfJJ220APEA==} '@vue/tsconfig@0.5.1': resolution: {integrity: sha512-VcZK7MvpjuTPx2w6blwnwZAu5/LgBUtejFOi3pPGQFXQN5Ela03FUtd2Qtg4yWGGissVL0dr6Ro1LfOFh+PCuQ==} - '@vueuse/core@10.9.0': - resolution: {integrity: sha512-/1vjTol8SXnx6xewDEKfS0Ra//ncg4Hb0DaZiwKf7drgfMsKFExQ+FnnENcN6efPen+1kIzhLQoGSy0eDUVOMg==} + '@vueuse/core@10.11.0': + resolution: {integrity: sha512-x3sD4Mkm7PJ+pcq3HX8PLPBadXCAlSDR/waK87dz0gQE+qJnaaFhc/dZVfJz+IUYzTMVGum2QlR7ImiJQN4s6g==} - '@vueuse/metadata@10.9.0': - resolution: {integrity: sha512-iddNbg3yZM0X7qFY2sAotomgdHK7YJ6sKUvQqbvwnf7TmaVPxS4EJydcNsVejNdS8iWCtDk+fYXr7E32nyTnGA==} + '@vueuse/metadata@10.11.0': + resolution: {integrity: sha512-kQX7l6l8dVWNqlqyN3ePW3KmjCQO3ZMgXuBMddIu83CmucrsBfXlH+JoviYyRBws/yLTQO8g3Pbw+bdIoVm4oQ==} - '@vueuse/shared@10.9.0': - resolution: {integrity: sha512-Uud2IWncmAfJvRaFYzv5OHDli+FbOzxiVEQdLCKQKLyhz94PIyFC3CHcH7EDMwIn8NPtD06+PNbC/PiO0LGLtw==} + '@vueuse/shared@10.11.0': + resolution: {integrity: sha512-fyNoIXEq3PfX1L3NkNhtVQUSRtqYwJtJg+Bp9rIzculIZWHTkKSysujrOk2J+NrRulLTQH9+3gGSfYLWSEWU1A==} '@xterm/addon-attach@0.11.0': resolution: {integrity: sha512-JboCN0QAY6ZLY/SSB/Zl2cQ5zW1Eh4X3fH7BnuR1NB7xGRhzbqU2Npmpiw/3zFlxDaU88vtKzok44JKi2L2V2Q==} @@ -942,16 +944,16 @@ packages: '@yr/monotone-cubic-spline@1.0.3': resolution: {integrity: sha512-FQXkOta0XBSUPHndIKON2Y9JeQz5ZeMqLYZVVK93FliNBFm7LNMIZmY6FrMEB9XPcDbE2bekMbZD6kzDkxwYjA==} - ace-builds@1.33.1: - resolution: {integrity: sha512-pj5mcXV1n3s86UI4SWUt8X0ltN8cTaYcvF76cSmvy5i2ZDtXX9KkjVcYTGkCV7ox6VUrzqHByeqH0xRsMjXi4g==} + ace-builds@1.35.0: + resolution: {integrity: sha512-bwDKqjqNccC/MSujqnYTeAS5dIR8UmGLP0R90mvsJY0FRC8NUWBSTfj34+EIzo2NWc/gV8IZTqv4fXaiZJpCtA==} acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + acorn@8.12.0: + resolution: {integrity: sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==} engines: {node: '>=0.4.0'} hasBin: true @@ -978,8 +980,8 @@ packages: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} - ant-design-vue@4.2.1: - resolution: {integrity: sha512-3u6fmfCEJ5AFTsYhogP8lJ/vcqiAJO16o+gGQkWYRGLl0NxmY4hje4cPyv+pcxpeJgcG0vNEmkb1vVHKcnxd+g==} + ant-design-vue@4.2.3: + resolution: {integrity: sha512-kqGyWvZtFlSInFP93Ow6wS8LzEsxxUgpI+ZY5jQQkuX8WAcqdwXCA7IcHMpECW6JB89DZMo2Bw85jUg2SjlgQA==} engines: {node: '>=12.22.0'} peerDependencies: vue: '>=3.2.0' @@ -991,8 +993,8 @@ packages: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} - apexcharts@3.49.0: - resolution: {integrity: sha512-2T9HnbQFLCuYRPndQLmh+bEQFoz0meUbvASaGgiSKDuYhWcLBodJtIpKql2aOtMx4B/sHrWW0dm90HsW4+h2PQ==} + apexcharts@3.49.1: + resolution: {integrity: sha512-MqGtlq/KQuO8j0BBsUJYlRG8VBctKwYdwuBtajHgHTmSgUU3Oai+8oYN/rKCXwXzrUlYA+GiMgotAIbXY2BCGw==} are-docs-informative@0.0.2: resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==} @@ -1039,8 +1041,8 @@ packages: resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} engines: {node: '>= 0.4'} - ast-kit@0.12.1: - resolution: {integrity: sha512-O+33g7x6irsESUcd47KdfWUrS2F6aGp9KeVJFGj0YjIznfXpBxVGjA0w+y/1OKqX4mFOfmZ9Xpf1ixPT4n9xxw==} + ast-kit@0.12.2: + resolution: {integrity: sha512-es1zHFsnZ4Y4efz412nnrU3KvVAhgqy90a7Yt9Wpi5vQ3l4aYMOX0Qx4FD0elKr5ITEhiUGCSFcgGYf4YTuACg==} engines: {node: '>=16.14.0'} ast-walker-scope@0.6.1: @@ -1064,8 +1066,8 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - axios@1.6.8: - resolution: {integrity: sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==} + axios@1.7.2: + resolution: {integrity: sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==} balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -1083,12 +1085,12 @@ packages: brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.23.0: - resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} + browserslist@4.23.1: + resolution: {integrity: sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -1115,8 +1117,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001616: - resolution: {integrity: sha512-RHVYKov7IcdNjVHJFNY/78RdG4oGVjbayxv8u5IO74Wv7Hlq4PnJE6mo/OjFijjVFNy5ijnCt6H3IIo4t+wfEw==} + caniuse-lite@1.0.30001634: + resolution: {integrity: sha512-fbBYXQ9q3+yp1q1gBk86tOFs4pyn/yxFm5ZNP18OXJDfA3txImOY9PhfxVggZ4vRHDqoU8NrKU81eN0OtzOgRA==} chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -1198,8 +1200,8 @@ packages: copy-anything@2.0.6: resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} - core-js@3.37.0: - resolution: {integrity: sha512-fu5vHevQ8ZG4og+LXug8ulUtVxjOcEYvifJr7L5Bfq9GOztVqsKd9/59hUk2ZSbCrS3BqUr3EpaYGIYzq7g3Ug==} + core-js@3.37.1: + resolution: {integrity: sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==} cosmiconfig@9.0.0: resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} @@ -1270,8 +1272,8 @@ packages: supports-color: optional: true - debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + debug@4.3.5: + resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -1334,8 +1336,8 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - electron-to-chromium@1.4.757: - resolution: {integrity: sha512-jftDaCknYSSt/+KKeXzH3LX5E2CvRLm75P3Hj+J/dv3CL0qUYcOt13d5FN1NiL5IJbbhzHrb3BomeG2tkSlZmw==} + electron-to-chromium@1.4.803: + resolution: {integrity: sha512-61H9mLzGOCLLVsnLiRzCbc63uldP0AniRYPV3hbGVtONA1pI7qSGILdbofR7A8TMbOypDocEAjH/e+9k1QIe3g==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -1343,8 +1345,8 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - enhanced-resolve@5.16.0: - resolution: {integrity: sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==} + enhanced-resolve@5.17.0: + resolution: {integrity: sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==} engines: {node: '>=10.13.0'} entities@4.5.0: @@ -1389,8 +1391,8 @@ packages: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} - esbuild@0.20.2: - resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} engines: {node: '>=12'} hasBin: true @@ -1410,8 +1412,8 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} - eslint-compat-utils@0.5.0: - resolution: {integrity: sha512-dc6Y8tzEcSYZMHa+CMPLi/hyo1FzNeonbhJL7Ol0ccuKQkwopJcJBA9YL/xmMTLU1eKigXo9vj9nALElWYSowg==} + eslint-compat-utils@0.5.1: + resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} engines: {node: '>=12'} peerDependencies: eslint: '>=6.0.0' @@ -1456,8 +1458,8 @@ packages: eslint-plugin-antfu@0.43.1: resolution: {integrity: sha512-Nak+Qpy5qEK10dCXtVaabPTUmLBPLhsVKAFXAtxYGYRlY/SuuZUBhW2YIsLsixNROiICGuov8sN+eNOCC7Wb5g==} - eslint-plugin-es-x@7.6.0: - resolution: {integrity: sha512-I0AmeNgevgaTR7y2lrVCJmGYF0rjoznpDvqV/kIkZSZbZ8Rw3eu4cGlvBBULScfkSOCzqKbff5LR4CNrV7mZHA==} + eslint-plugin-es-x@7.7.0: + resolution: {integrity: sha512-aP3qj8BwiEDPttxQkZdI221DLKq9sI/qHolE2YSQL1/9+xk7dTV+tB1Fz8/IaCA+lnLA1bDEnvaS2LKs0k2Uig==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '>=8' @@ -1506,8 +1508,8 @@ packages: peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 - eslint-plugin-jsonc@2.15.1: - resolution: {integrity: sha512-PVFrqIJa8BbM/e828RSn0SwB/Z5ye+2LDuy2XqG6AymNgPsfApRRcznsbxP7VrjdLEU4Nb+g9n/d6opyp0jp9A==} + eslint-plugin-jsonc@2.16.0: + resolution: {integrity: sha512-Af/ZL5mgfb8FFNleH6KlO4/VdmDuTqmM+SPnWcdoWywTetv7kq+vQe99UyQb9XO3b0OWLVuTH7H0d/PXYCMdSg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' @@ -1528,11 +1530,11 @@ packages: resolution: {integrity: sha512-Lf4YW/bL6Un1R6A76pRZyE1dl1vr31G/ev8UzIc/geCgFWyrKil8hVjYqWVKGB/UIGmb6Slzs9T0wNezdSVegw==} engines: {node: '>=5.0.0'} - eslint-plugin-promise@6.1.1: - resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==} + eslint-plugin-promise@6.2.0: + resolution: {integrity: sha512-QmAqwizauvnKOlifxyDj2ObfULpHQawlg/zQdgEixur9vl0CvZGv/LCJV2rtj3210QCoeGBzVMfMXqGAOr/4fA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 eslint-plugin-regex@1.10.0: resolution: {integrity: sha512-C8/qYKkkbIb0epxKzaz4aw7oVAOmm19fJpR/moUrUToq/vc4xW4sEKMlTQqH6EtNGpvLjYsbbZRlWNWwQGeTSA==} @@ -1562,8 +1564,8 @@ packages: '@typescript-eslint/eslint-plugin': optional: true - eslint-plugin-vue@9.25.0: - resolution: {integrity: sha512-tDWlx14bVe6Bs+Nnh3IGrD+hb11kf2nukfm6jLsmJIhmiRQ1SUaksvwY9U5MvPB0pcrg0QK0xapQkfITs3RKOA==} + eslint-plugin-vue@9.26.0: + resolution: {integrity: sha512-eTvlxXgd4ijE1cdur850G6KalZqk65k1JKoOI2d1kT3hr8sPD07j1q98FRFdNnpxBELGPWxZmInxeHGF/GxtqQ==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 @@ -1645,8 +1647,8 @@ packages: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} - fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} find-replace@3.0.0: @@ -1680,8 +1682,8 @@ packages: for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - foreground-child@3.1.1: - resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + foreground-child@3.2.1: + resolution: {integrity: sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==} engines: {node: '>=14'} form-data@4.0.0: @@ -1721,8 +1723,8 @@ packages: resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} engines: {node: '>= 0.4'} - get-tsconfig@4.7.4: - resolution: {integrity: sha512-ofbkKj+0pjXjhejr007J/fLf+sW+8H7K5GCm+msC8q3IpvgjobpyPqSRFemNyIMxklC0zeJpi7VDFna19FacvQ==} + get-tsconfig@4.7.5: + resolution: {integrity: sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==} gettext-extractor@3.8.0: resolution: {integrity: sha512-i/3mDQufQoJd2/EKm/B+VlaYrt3yGjVfLZu8DQpESKH29klNiW6z2S89FVCIEB85bDNgtGCeM/3A/yR1njr/Lw==} @@ -1739,13 +1741,14 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - glob@10.3.12: - resolution: {integrity: sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==} - engines: {node: '>=16 || 14 >=14.17'} + glob@10.4.1: + resolution: {integrity: sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==} + engines: {node: '>=16 || 14 >=14.18'} hasBin: true glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} @@ -1847,6 +1850,7 @@ packages: inflight@1.0.6: resolution: {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. inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -1968,17 +1972,20 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - jackspeak@2.3.6: - resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + jackspeak@3.4.0: + resolution: {integrity: sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==} engines: {node: '>=14'} - jiti@1.21.0: - resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} + jiti@1.21.6: + resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} hasBin: true js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + js-tokens@9.0.0: + resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} + js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true @@ -2042,8 +2049,8 @@ packages: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} - lilconfig@3.1.1: - resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==} + lilconfig@3.1.2: + resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} engines: {node: '>=14'} lines-and-columns@1.2.4: @@ -2088,12 +2095,8 @@ packages: lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - - magic-string-ast@0.5.0: - resolution: {integrity: sha512-mxjxZ5zoR4+ybulZ7Z5qdZUTdAfiKJ1Il80kN/I4jWsHTTqNKZ9KsBa3Jepo+3U09I04qiyC2+7MZD8v4rJOoA==} + magic-string-ast@0.6.1: + resolution: {integrity: sha512-eczKQUDaBpB/mcEqZZNGEUG1FQNsXCuk3uOrCpu6y7qTygIy6jnpqDa62j9MGKSoqlXhM1lCFQv1THuGDQtvUA==} engines: {node: '>=16.14.0'} magic-string@0.30.10: @@ -2127,8 +2130,8 @@ packages: micromark@2.11.4: resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} - micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + micromatch@4.0.7: + resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} engines: {node: '>=8.6'} mime-db@1.52.0: @@ -2162,12 +2165,12 @@ packages: minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minipass@7.1.0: - resolution: {integrity: sha512-oGZRv2OT1lO2UF1zUcwdTb3wqUwI0kBGTgt/T7OdSj6M6N5m3o5uPf0AIW6lVxGGoiWUR7e2AwTE+xiwK8WQig==} + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} - mlly@1.7.0: - resolution: {integrity: sha512-U9SDaXGEREBYQgfejV97coK0UL1r+qnF2SyO9A3qcI8MzKnsIFKHNVEkrDyNncQTKQQumsasmeq84eNMdBfsNQ==} + mlly@1.7.1: + resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} @@ -2314,9 +2317,9 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-scurry@1.10.2: - resolution: {integrity: sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==} - engines: {node: '>=16 || 14 >=14.17'} + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} @@ -2325,8 +2328,8 @@ packages: pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} @@ -2361,8 +2364,8 @@ packages: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} - pkg-types@1.1.0: - resolution: {integrity: sha512-/RpmvKdxKf8uILTtoOhAgf30wYbP2Qw+L9p3Rvshx1JZVX+XQNZQFjlbmGHEGIm4CkVPlSn+NXmIM8+9oWQaSA==} + pkg-types@1.1.1: + resolution: {integrity: sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ==} pluralize@8.0.0: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} @@ -2408,8 +2411,8 @@ packages: peerDependencies: postcss: ^8.2.14 - postcss-selector-parser@6.0.16: - resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} + postcss-selector-parser@6.1.0: + resolution: {integrity: sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==} engines: {node: '>=4'} postcss-value-parser@4.2.0: @@ -2489,6 +2492,7 @@ packages: rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true rimraf@5.0.7: @@ -2496,8 +2500,8 @@ packages: engines: {node: '>=14.18'} hasBin: true - rollup@4.17.2: - resolution: {integrity: sha512-/9ClTJPByC0U4zNLowV1tMBe8yMEAxewtR3cUNX5BoEpGH3dQEWpJLr6CLp0fPdYRF/fzVOgvDb1zXuakwF5kQ==} + rollup@4.18.0: + resolution: {integrity: sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -2515,8 +2519,8 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sax@1.3.0: - resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} + sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} scroll-into-view-if-needed@2.2.31: resolution: {integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==} @@ -2532,8 +2536,8 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.6.0: - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + semver@7.6.2: + resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} engines: {node: '>=10'} hasBin: true @@ -2594,8 +2598,8 @@ packages: spdx-expression-parse@4.0.0: resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==} - spdx-license-ids@3.0.17: - resolution: {integrity: sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==} + spdx-license-ids@3.0.18: + resolution: {integrity: sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==} string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} @@ -2636,8 +2640,8 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - strip-literal@1.3.0: - resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} + strip-literal@2.1.0: + resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} stylis@4.3.2: resolution: {integrity: sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==} @@ -2693,8 +2697,8 @@ packages: resolution: {integrity: sha512-h5IS/hKkuVCbKSieR9uQCj9w+zLHoPh+ce19bBYyqF53g6mnPB8sAtIbe1s9dh2S2fCmYX2xel1Ln3PJBbK4kw==} engines: {node: '>= 0.8.0'} - svgo@3.2.0: - resolution: {integrity: sha512-4PP6CMW/V7l/GmKRKzsLR8xxjdHTV4IMvhTnpuHwwBazSIlw5W/5SmPjN8Dwyt7lKbSJrRDgp4t9ph0HgChFBQ==} + svgo@3.3.2: + resolution: {integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==} engines: {node: '>=14.0.0'} hasBin: true @@ -2702,8 +2706,8 @@ packages: resolution: {integrity: sha512-Vhf+bUa//YSTYKseDiiEuQmhGCoIF3CVBhunm3r/DQnYiGT4JssmnKQc44BIyOZRK2pKjXXAgbhfmbeoC9CJpA==} engines: {node: '>=12.20'} - tailwindcss@3.4.3: - resolution: {integrity: sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==} + tailwindcss@3.4.4: + resolution: {integrity: sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==} engines: {node: '>=14.0.0'} hasBin: true @@ -2748,8 +2752,8 @@ packages: tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + tslib@2.6.3: + resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} tsutils@3.21.0: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} @@ -2812,14 +2816,14 @@ packages: undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - unimport@3.7.1: - resolution: {integrity: sha512-V9HpXYfsZye5bPPYUgs0Otn3ODS1mDUciaBlXljI4C2fTwfFpvFZRywmlOu943puN9sncxROMZhsZCjNXEpzEQ==} + unimport@3.7.2: + resolution: {integrity: sha512-91mxcZTadgXyj3lFWmrGT8GyoRHWuE5fqPOjg5RVtF6vj+OfM5G6WCzXjuYtSgELE5ggB34RY4oiCSEP8I3AHw==} unist-util-stringify-position@2.0.3: resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} - unplugin-auto-import@0.17.5: - resolution: {integrity: sha512-fHNDkDSxv3PGagX1wmKBYBkgaM4AKAgZmdJw/bxjhNljx9KSXSgHpGfX0MwUrq9qw6q1bhHIZVWyOwoY2koo4w==} + unplugin-auto-import@0.17.6: + resolution: {integrity: sha512-dmX0Pex5DzMzVuALkexboOZvh51fL/BD6aoPO7qHoTYGlQp0GRKsREv2KMF1lzYI9SXKQiRxAjwzbQnrFFNydQ==} engines: {node: '>=14'} peerDependencies: '@nuxt/kit': ^3.2.2 @@ -2843,16 +2847,16 @@ packages: '@nuxt/kit': optional: true - unplugin-vue-define-options@1.4.4: - resolution: {integrity: sha512-YMFXe8kIyM6WLnEDCiShp3w6y8quAA37QLO5oSLb5nvwWQzqURi/u8icaAi+hdgCg2CCVs9DrqeiqEL3ptNuSg==} + unplugin-vue-define-options@1.4.5: + resolution: {integrity: sha512-7c5HvC6OgE4H7uWGJnHUQ0ShdIYSH/qZuIBflDi3zfOTYSFZQ6FElQ6f+uA9gSdZiNFjF095JJ/aRwbrTrB98g==} engines: {node: '>=16.14.0'} unplugin@1.10.1: resolution: {integrity: sha512-d6Mhq8RJeGA8UfKCu54Um4lFA0eSaRa3XxdAJg8tIdxbu1ubW0hBCZUL7yI2uGyYCRndvbK8FLHzqy2XKfeMsg==} engines: {node: '>=14.0.0'} - update-browserslist-db@1.0.15: - resolution: {integrity: sha512-K9HWH62x3/EalU1U6sjSZiylm9C8tgq2mSvshZpqc7QE69RaA2qjhkW2HlNA0tFpEbtyFz7HTqbSdN4MSwUodA==} + update-browserslist-db@1.0.16: + resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -2874,8 +2878,8 @@ packages: peerDependencies: vue: '>=3.2.13' - vite@5.2.11: - resolution: {integrity: sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==} + vite@5.3.1: + resolution: {integrity: sha512-XBmSKRLXLxiaPYamLv3/hnP/KXDai1NDexN0FpkTaZXTfycHvkRHoenpgl/fvuK/kPbB6xAgoyiryAhQNxYmAQ==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -2902,8 +2906,8 @@ packages: terser: optional: true - vue-demi@0.14.7: - resolution: {integrity: sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==} + vue-demi@0.14.8: + resolution: {integrity: sha512-Uuqnk9YE9SsWeReYqK2alDI5YzciATE0r2SkA6iMAtuXvNTMNACJLJEXNXaEy94ECuBe4Sk6RzRU80kjdbIo1Q==} engines: {node: '>=12'} hasBin: true peerDependencies: @@ -2913,8 +2917,8 @@ packages: '@vue/composition-api': optional: true - vue-eslint-parser@9.4.2: - resolution: {integrity: sha512-Ry9oiGmCAK91HrKMtCrKFWmSFWvYkpGglCeFAIqDdr9zdXmMMpJOmUJS7WWsW7fX81h6mwHmUZCQQ1E0PkSwYQ==} + vue-eslint-parser@9.4.3: + resolution: {integrity: sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' @@ -2923,8 +2927,8 @@ packages: resolution: {tarball: https://codeload.github.com/0xJacky/vue-github-button/tar.gz/fc3c93355a790d3249de6610de3ebe35949ee314} version: 3.1.0 - vue-router@4.3.2: - resolution: {integrity: sha512-hKQJ1vDAZ5LVkKEnHhmm1f9pMiWIBNGF5AwU67PdH7TyXCj/a4hTccuUuYCAMgJK6rO/NVYtQIEN3yL8CECa7Q==} + vue-router@4.3.3: + resolution: {integrity: sha512-8Q+u+WP4N2SXY38FDcF2H1dUEbYVHVPtPCPZj/GTZx8RCbiB8AtJP9+YIxn4Vs0svMTNQcLIzka4GH7Utkx9xQ==} peerDependencies: vue: ^3.2.0 @@ -2963,8 +2967,8 @@ packages: '@vue/compiler-sfc': '>=3.0.0' vue: '>=3.0.0' - vue@3.4.27: - resolution: {integrity: sha512-8s/56uK6r01r1icG/aEOHqyMVxd1bkYcSe9j8HcKtr/xTOFWvnzIVTehNW+5Yt89f+DLBe4A569pnZLS5HzAMA==} + vue@3.4.29: + resolution: {integrity: sha512-8QUYfRcYzNlYuzKPfge1UWC6nF9ym0lx7mpGVPJYNhddxEf3DD0+kU07NTL0sXuiT2HuJuKr/iEO8WvXvT0RSQ==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -2983,8 +2987,8 @@ packages: resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} engines: {node: '>=10.13.0'} - webpack-virtual-modules@0.6.1: - resolution: {integrity: sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==} + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} @@ -3020,15 +3024,12 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - - yaml-eslint-parser@1.2.2: - resolution: {integrity: sha512-pEwzfsKbTrB8G3xc/sN7aw1v6A6c/pKxLAkjclnAyo5g5qOh6eL9WGu0o3cSDQZKrTNk4KL4lQSwZW+nBkANEg==} + yaml-eslint-parser@1.2.3: + resolution: {integrity: sha512-4wZWvE398hCP7O8n3nXKu/vdq1HcH01ixYlCREaJL5NUMwQ0g3MaGFUBNSlmBtKmhbtVG/Cm6lyYmSVTEVil8A==} engines: {node: ^14.17.0 || >=16.0.0} - yaml@2.4.2: - resolution: {integrity: sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==} + yaml@2.4.5: + resolution: {integrity: sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==} engines: {node: '>= 14'} hasBin: true @@ -3051,11 +3052,11 @@ snapshots: '@ant-design/icons-svg@4.4.2': {} - '@ant-design/icons-vue@7.0.1(vue@3.4.27(typescript@5.3.3))': + '@ant-design/icons-vue@7.0.1(vue@3.4.29(typescript@5.3.3))': dependencies: '@ant-design/colors': 6.0.0 '@ant-design/icons-svg': 4.4.2 - vue: 3.4.27(typescript@5.3.3) + vue: 3.4.29(typescript@5.3.3) '@antfu/eslint-config-basic@0.43.1(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3))(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0)(typescript@5.3.3)': dependencies: @@ -3066,16 +3067,16 @@ snapshots: eslint-plugin-html: 7.1.0 eslint-plugin-import: eslint-plugin-i@2.28.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) eslint-plugin-jsdoc: 46.10.1(eslint@8.57.0) - eslint-plugin-jsonc: 2.15.1(eslint@8.57.0) + eslint-plugin-jsonc: 2.16.0(eslint@8.57.0) eslint-plugin-markdown: 3.0.1(eslint@8.57.0) eslint-plugin-n: 16.6.2(eslint@8.57.0) eslint-plugin-no-only-tests: 3.1.0 - eslint-plugin-promise: 6.1.1(eslint@8.57.0) + eslint-plugin-promise: 6.2.0(eslint@8.57.0) eslint-plugin-unicorn: 48.0.1(eslint@8.57.0) eslint-plugin-unused-imports: 3.2.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0) eslint-plugin-yml: 1.14.0(eslint@8.57.0) jsonc-eslint-parser: 2.4.0 - yaml-eslint-parser: 1.2.2 + yaml-eslint-parser: 1.2.3 transitivePeerDependencies: - '@typescript-eslint/eslint-plugin' - '@typescript-eslint/parser' @@ -3104,7 +3105,7 @@ snapshots: '@antfu/eslint-config-basic': 0.43.1(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3))(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0)(typescript@5.3.3) '@antfu/eslint-config-ts': 0.43.1(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0)(typescript@5.3.3) eslint: 8.57.0 - eslint-plugin-vue: 9.25.0(eslint@8.57.0) + eslint-plugin-vue: 9.26.0(eslint@8.57.0) local-pkg: 0.4.3 transitivePeerDependencies: - '@typescript-eslint/eslint-plugin' @@ -3115,196 +3116,215 @@ snapshots: - supports-color - typescript - '@antfu/utils@0.7.7': {} + '@antfu/utils@0.7.8': {} - '@babel/code-frame@7.24.2': + '@babel/code-frame@7.24.7': dependencies: - '@babel/highlight': 7.24.5 - picocolors: 1.0.0 + '@babel/highlight': 7.24.7 + picocolors: 1.0.1 - '@babel/compat-data@7.24.4': {} + '@babel/compat-data@7.24.7': {} - '@babel/core@7.24.5': + '@babel/core@7.24.7': dependencies: '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.24.2 - '@babel/generator': 7.24.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) - '@babel/helpers': 7.24.5 - '@babel/parser': 7.24.5 - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.5 - '@babel/types': 7.24.5 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.24.7 + '@babel/helper-compilation-targets': 7.24.7 + '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7) + '@babel/helpers': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/template': 7.24.7 + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 convert-source-map: 2.0.0 - debug: 4.3.4 + debug: 4.3.5 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/generator@7.24.5': + '@babel/generator@7.24.7': dependencies: - '@babel/types': 7.24.5 + '@babel/types': 7.24.7 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 - '@babel/helper-annotate-as-pure@7.22.5': + '@babel/helper-annotate-as-pure@7.24.7': dependencies: - '@babel/types': 7.24.5 + '@babel/types': 7.24.7 - '@babel/helper-compilation-targets@7.23.6': + '@babel/helper-compilation-targets@7.24.7': dependencies: - '@babel/compat-data': 7.24.4 - '@babel/helper-validator-option': 7.23.5 - browserslist: 4.23.0 + '@babel/compat-data': 7.24.7 + '@babel/helper-validator-option': 7.24.7 + browserslist: 4.23.1 lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.24.5(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-member-expression-to-functions': 7.24.5 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.5) - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/helper-split-export-declaration': 7.24.5 + '@babel/helper-create-class-features-plugin@7.24.7(@babel/core@7.24.7)': + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-function-name': 7.24.7 + '@babel/helper-member-expression-to-functions': 7.24.7 + '@babel/helper-optimise-call-expression': 7.24.7 + '@babel/helper-replace-supers': 7.24.7(@babel/core@7.24.7) + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 semver: 6.3.1 + transitivePeerDependencies: + - supports-color - '@babel/helper-environment-visitor@7.22.20': {} + '@babel/helper-environment-visitor@7.24.7': + dependencies: + '@babel/types': 7.24.7 - '@babel/helper-function-name@7.23.0': + '@babel/helper-function-name@7.24.7': dependencies: - '@babel/template': 7.24.0 - '@babel/types': 7.24.5 + '@babel/template': 7.24.7 + '@babel/types': 7.24.7 - '@babel/helper-hoist-variables@7.22.5': + '@babel/helper-hoist-variables@7.24.7': dependencies: - '@babel/types': 7.24.5 + '@babel/types': 7.24.7 - '@babel/helper-member-expression-to-functions@7.24.5': + '@babel/helper-member-expression-to-functions@7.24.7': dependencies: - '@babel/types': 7.24.5 + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color '@babel/helper-module-imports@7.22.15': dependencies: - '@babel/types': 7.24.5 + '@babel/types': 7.24.7 - '@babel/helper-module-imports@7.24.3': + '@babel/helper-module-imports@7.24.7': dependencies: - '@babel/types': 7.24.5 + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color - '@babel/helper-module-transforms@7.24.5(@babel/core@7.24.5)': + '@babel/helper-module-transforms@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-simple-access': 7.24.5 - '@babel/helper-split-export-declaration': 7.24.5 - '@babel/helper-validator-identifier': 7.24.5 + '@babel/core': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + transitivePeerDependencies: + - supports-color - '@babel/helper-optimise-call-expression@7.22.5': + '@babel/helper-optimise-call-expression@7.24.7': dependencies: - '@babel/types': 7.24.5 + '@babel/types': 7.24.7 - '@babel/helper-plugin-utils@7.24.5': {} + '@babel/helper-plugin-utils@7.24.7': {} - '@babel/helper-replace-supers@7.24.1(@babel/core@7.24.5)': + '@babel/helper-replace-supers@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-member-expression-to-functions': 7.24.5 - '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/core': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-member-expression-to-functions': 7.24.7 + '@babel/helper-optimise-call-expression': 7.24.7 + transitivePeerDependencies: + - supports-color - '@babel/helper-simple-access@7.24.5': + '@babel/helper-simple-access@7.24.7': dependencies: - '@babel/types': 7.24.5 + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color - '@babel/helper-skip-transparent-expression-wrappers@7.22.5': + '@babel/helper-skip-transparent-expression-wrappers@7.24.7': dependencies: - '@babel/types': 7.24.5 + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color - '@babel/helper-split-export-declaration@7.24.5': + '@babel/helper-split-export-declaration@7.24.7': dependencies: - '@babel/types': 7.24.5 + '@babel/types': 7.24.7 - '@babel/helper-string-parser@7.24.1': {} + '@babel/helper-string-parser@7.24.7': {} - '@babel/helper-validator-identifier@7.24.5': {} + '@babel/helper-validator-identifier@7.24.7': {} - '@babel/helper-validator-option@7.23.5': {} + '@babel/helper-validator-option@7.24.7': {} - '@babel/helpers@7.24.5': + '@babel/helpers@7.24.7': dependencies: - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.5 - '@babel/types': 7.24.5 - transitivePeerDependencies: - - supports-color + '@babel/template': 7.24.7 + '@babel/types': 7.24.7 - '@babel/highlight@7.24.5': + '@babel/highlight@7.24.7': dependencies: - '@babel/helper-validator-identifier': 7.24.5 + '@babel/helper-validator-identifier': 7.24.7 chalk: 2.4.2 js-tokens: 4.0.0 - picocolors: 1.0.0 + picocolors: 1.0.1 - '@babel/parser@7.24.5': + '@babel/parser@7.24.7': dependencies: - '@babel/types': 7.24.5 + '@babel/types': 7.24.7 - '@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.5)': + '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.5)': + '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-transform-typescript@7.24.5(@babel/core@7.24.5)': + '@babel/plugin-transform-typescript@7.24.7(@babel/core@7.24.7)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.5) + '@babel/core': 7.24.7 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.24.7) + transitivePeerDependencies: + - supports-color - '@babel/runtime@7.24.5': + '@babel/runtime@7.24.7': dependencies: regenerator-runtime: 0.14.1 - '@babel/template@7.24.0': + '@babel/template@7.24.7': dependencies: - '@babel/code-frame': 7.24.2 - '@babel/parser': 7.24.5 - '@babel/types': 7.24.5 + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 - '@babel/traverse@7.24.5': + '@babel/traverse@7.24.7': dependencies: - '@babel/code-frame': 7.24.2 - '@babel/generator': 7.24.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.24.5 - '@babel/parser': 7.24.5 - '@babel/types': 7.24.5 - debug: 4.3.4 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-function-name': 7.24.7 + '@babel/helper-hoist-variables': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 + debug: 4.3.5 globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/types@7.24.5': + '@babel/types@7.24.7': dependencies: - '@babel/helper-string-parser': 7.24.1 - '@babel/helper-validator-identifier': 7.24.5 + '@babel/helper-string-parser': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 '@ctrl/tinycolor@3.6.1': {} @@ -3319,73 +3339,73 @@ snapshots: esquery: 1.5.0 jsdoc-type-pratt-parser: 4.0.0 - '@esbuild/aix-ppc64@0.20.2': + '@esbuild/aix-ppc64@0.21.5': optional: true - '@esbuild/android-arm64@0.20.2': + '@esbuild/android-arm64@0.21.5': optional: true - '@esbuild/android-arm@0.20.2': + '@esbuild/android-arm@0.21.5': optional: true - '@esbuild/android-x64@0.20.2': + '@esbuild/android-x64@0.21.5': optional: true - '@esbuild/darwin-arm64@0.20.2': + '@esbuild/darwin-arm64@0.21.5': optional: true - '@esbuild/darwin-x64@0.20.2': + '@esbuild/darwin-x64@0.21.5': optional: true - '@esbuild/freebsd-arm64@0.20.2': + '@esbuild/freebsd-arm64@0.21.5': optional: true - '@esbuild/freebsd-x64@0.20.2': + '@esbuild/freebsd-x64@0.21.5': optional: true - '@esbuild/linux-arm64@0.20.2': + '@esbuild/linux-arm64@0.21.5': optional: true - '@esbuild/linux-arm@0.20.2': + '@esbuild/linux-arm@0.21.5': optional: true - '@esbuild/linux-ia32@0.20.2': + '@esbuild/linux-ia32@0.21.5': optional: true - '@esbuild/linux-loong64@0.20.2': + '@esbuild/linux-loong64@0.21.5': optional: true - '@esbuild/linux-mips64el@0.20.2': + '@esbuild/linux-mips64el@0.21.5': optional: true - '@esbuild/linux-ppc64@0.20.2': + '@esbuild/linux-ppc64@0.21.5': optional: true - '@esbuild/linux-riscv64@0.20.2': + '@esbuild/linux-riscv64@0.21.5': optional: true - '@esbuild/linux-s390x@0.20.2': + '@esbuild/linux-s390x@0.21.5': optional: true - '@esbuild/linux-x64@0.20.2': + '@esbuild/linux-x64@0.21.5': optional: true - '@esbuild/netbsd-x64@0.20.2': + '@esbuild/netbsd-x64@0.21.5': optional: true - '@esbuild/openbsd-x64@0.20.2': + '@esbuild/openbsd-x64@0.21.5': optional: true - '@esbuild/sunos-x64@0.20.2': + '@esbuild/sunos-x64@0.21.5': optional: true - '@esbuild/win32-arm64@0.20.2': + '@esbuild/win32-arm64@0.21.5': optional: true - '@esbuild/win32-ia32@0.20.2': + '@esbuild/win32-ia32@0.21.5': optional: true - '@esbuild/win32-x64@0.20.2': + '@esbuild/win32-x64@0.21.5': optional: true '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': @@ -3393,12 +3413,12 @@ snapshots: eslint: 8.57.0 eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.10.0': {} + '@eslint-community/regexpp@4.10.1': {} '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 - debug: 4.3.4 + debug: 4.3.5 espree: 9.6.1 globals: 13.24.0 ignore: 5.3.1 @@ -3416,7 +3436,7 @@ snapshots: '@humanwhocodes/config-array@0.11.14': dependencies: '@humanwhocodes/object-schema': 2.0.3 - debug: 4.3.4 + debug: 4.3.5 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -3466,70 +3486,70 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@rollup/pluginutils@5.1.0(rollup@4.17.2)': + '@rollup/pluginutils@5.1.0(rollup@4.18.0)': dependencies: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 optionalDependencies: - rollup: 4.17.2 + rollup: 4.18.0 - '@rollup/rollup-android-arm-eabi@4.17.2': + '@rollup/rollup-android-arm-eabi@4.18.0': optional: true - '@rollup/rollup-android-arm64@4.17.2': + '@rollup/rollup-android-arm64@4.18.0': optional: true - '@rollup/rollup-darwin-arm64@4.17.2': + '@rollup/rollup-darwin-arm64@4.18.0': optional: true - '@rollup/rollup-darwin-x64@4.17.2': + '@rollup/rollup-darwin-x64@4.18.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.17.2': + '@rollup/rollup-linux-arm-gnueabihf@4.18.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.17.2': + '@rollup/rollup-linux-arm-musleabihf@4.18.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.17.2': + '@rollup/rollup-linux-arm64-gnu@4.18.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.17.2': + '@rollup/rollup-linux-arm64-musl@4.18.0': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.17.2': + '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.17.2': + '@rollup/rollup-linux-riscv64-gnu@4.18.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.17.2': + '@rollup/rollup-linux-s390x-gnu@4.18.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.17.2': + '@rollup/rollup-linux-x64-gnu@4.18.0': optional: true - '@rollup/rollup-linux-x64-musl@4.17.2': + '@rollup/rollup-linux-x64-musl@4.18.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.17.2': + '@rollup/rollup-win32-arm64-msvc@4.18.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.17.2': + '@rollup/rollup-win32-ia32-msvc@4.18.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.17.2': + '@rollup/rollup-win32-x64-msvc@4.18.0': optional: true '@simonwep/pickr@1.8.2': dependencies: - core-js: 3.37.0 + core-js: 3.37.1 nanopop: 2.4.2 '@stylistic/eslint-plugin-js@0.0.4': dependencies: - acorn: 8.11.3 + acorn: 8.12.0 escape-string-regexp: 4.0.0 eslint-visitor-keys: 3.4.3 espree: 9.6.1 @@ -3555,13 +3575,13 @@ snapshots: '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.12.10 + '@types/node': 20.14.2 '@types/json-schema@7.0.15': {} '@types/json5@0.0.29': {} - '@types/lodash@4.17.1': {} + '@types/lodash@4.17.5': {} '@types/mdast@3.0.15': dependencies: @@ -3569,7 +3589,7 @@ snapshots: '@types/minimatch@5.1.2': {} - '@types/node@20.12.10': + '@types/node@20.14.2': dependencies: undici-types: 5.26.5 @@ -3589,18 +3609,18 @@ snapshots: '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3)': dependencies: - '@eslint-community/regexpp': 4.10.0 + '@eslint-community/regexpp': 4.10.1 '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.3.3) '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.0)(typescript@5.3.3) '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.3.3) '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.4 + debug: 4.3.5 eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 - semver: 7.6.0 + semver: 7.6.2 ts-api-utils: 1.3.0(typescript@5.3.3) optionalDependencies: typescript: 5.3.3 @@ -3613,7 +3633,7 @@ snapshots: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.4 + debug: 4.3.5 eslint: 8.57.0 optionalDependencies: typescript: 5.3.3 @@ -3634,7 +3654,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.3.3) - debug: 4.3.4 + debug: 4.3.5 eslint: 8.57.0 ts-api-utils: 1.3.0(typescript@5.3.3) optionalDependencies: @@ -3650,10 +3670,10 @@ snapshots: dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.4 + debug: 4.3.5 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.6.0 + semver: 7.6.2 tsutils: 3.21.0(typescript@5.3.3) optionalDependencies: typescript: 5.3.3 @@ -3664,11 +3684,11 @@ snapshots: dependencies: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.4 + debug: 4.3.5 globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 - semver: 7.6.0 + semver: 7.6.2 ts-api-utils: 1.3.0(typescript@5.3.3) optionalDependencies: typescript: 5.3.3 @@ -3685,7 +3705,7 @@ snapshots: '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.3) eslint: 8.57.0 eslint-scope: 5.1.1 - semver: 7.6.0 + semver: 7.6.2 transitivePeerDependencies: - supports-color - typescript @@ -3699,7 +3719,7 @@ snapshots: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) eslint: 8.57.0 - semver: 7.6.0 + semver: 7.6.2 transitivePeerDependencies: - supports-color - typescript @@ -3716,20 +3736,20 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@vitejs/plugin-vue-jsx@3.1.0(vite@5.2.11(@types/node@20.12.10)(less@4.2.0))(vue@3.4.27(typescript@5.3.3))': + '@vitejs/plugin-vue-jsx@3.1.0(vite@5.3.1(@types/node@20.14.2)(less@4.2.0))(vue@3.4.29(typescript@5.3.3))': dependencies: - '@babel/core': 7.24.5 - '@babel/plugin-transform-typescript': 7.24.5(@babel/core@7.24.5) - '@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.24.5) - vite: 5.2.11(@types/node@20.12.10)(less@4.2.0) - vue: 3.4.27(typescript@5.3.3) + '@babel/core': 7.24.7 + '@babel/plugin-transform-typescript': 7.24.7(@babel/core@7.24.7) + '@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.24.7) + vite: 5.3.1(@types/node@20.14.2)(less@4.2.0) + vue: 3.4.29(typescript@5.3.3) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@5.0.4(vite@5.2.11(@types/node@20.12.10)(less@4.2.0))(vue@3.4.27(typescript@5.3.3))': + '@vitejs/plugin-vue@5.0.5(vite@5.3.1(@types/node@20.14.2)(less@4.2.0))(vue@3.4.29(typescript@5.3.3))': dependencies: - vite: 5.2.11(@types/node@20.12.10)(less@4.2.0) - vue: 3.4.27(typescript@5.3.3) + vite: 5.3.1(@types/node@20.14.2)(less@4.2.0) + vue: 3.4.29(typescript@5.3.3) '@volar/language-core@1.11.1': dependencies: @@ -3744,86 +3764,86 @@ snapshots: '@volar/language-core': 1.11.1 path-browserify: 1.0.1 - '@vue-macros/common@1.10.3(rollup@4.17.2)(vue@3.4.27(typescript@5.3.3))': + '@vue-macros/common@1.10.4(rollup@4.18.0)(vue@3.4.29(typescript@5.3.3))': dependencies: - '@babel/types': 7.24.5 - '@rollup/pluginutils': 5.1.0(rollup@4.17.2) - '@vue/compiler-sfc': 3.4.27 - ast-kit: 0.12.1 + '@babel/types': 7.24.7 + '@rollup/pluginutils': 5.1.0(rollup@4.18.0) + '@vue/compiler-sfc': 3.4.29 + ast-kit: 0.12.2 local-pkg: 0.5.0 - magic-string-ast: 0.5.0 + magic-string-ast: 0.6.1 optionalDependencies: - vue: 3.4.27(typescript@5.3.3) + vue: 3.4.29(typescript@5.3.3) transitivePeerDependencies: - rollup '@vue/babel-helper-vue-transform-on@1.2.2': {} - '@vue/babel-plugin-jsx@1.2.2(@babel/core@7.24.5)': + '@vue/babel-plugin-jsx@1.2.2(@babel/core@7.24.7)': dependencies: '@babel/helper-module-imports': 7.22.15 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.5) - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.5 - '@babel/types': 7.24.5 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.7) + '@babel/template': 7.24.7 + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 '@vue/babel-helper-vue-transform-on': 1.2.2 - '@vue/babel-plugin-resolve-type': 1.2.2(@babel/core@7.24.5) + '@vue/babel-plugin-resolve-type': 1.2.2(@babel/core@7.24.7) camelcase: 6.3.0 html-tags: 3.3.1 svg-tags: 1.0.0 optionalDependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.24.7 transitivePeerDependencies: - supports-color - '@vue/babel-plugin-resolve-type@1.2.2(@babel/core@7.24.5)': + '@vue/babel-plugin-resolve-type@1.2.2(@babel/core@7.24.7)': dependencies: - '@babel/code-frame': 7.24.2 - '@babel/core': 7.24.5 + '@babel/code-frame': 7.24.7 + '@babel/core': 7.24.7 '@babel/helper-module-imports': 7.22.15 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/parser': 7.24.5 - '@vue/compiler-sfc': 3.4.27 + '@babel/helper-plugin-utils': 7.24.7 + '@babel/parser': 7.24.7 + '@vue/compiler-sfc': 3.4.29 - '@vue/compiler-core@3.4.27': + '@vue/compiler-core@3.4.29': dependencies: - '@babel/parser': 7.24.5 - '@vue/shared': 3.4.27 + '@babel/parser': 7.24.7 + '@vue/shared': 3.4.29 entities: 4.5.0 estree-walker: 2.0.2 source-map-js: 1.2.0 - '@vue/compiler-dom@3.4.27': + '@vue/compiler-dom@3.4.29': dependencies: - '@vue/compiler-core': 3.4.27 - '@vue/shared': 3.4.27 + '@vue/compiler-core': 3.4.29 + '@vue/shared': 3.4.29 - '@vue/compiler-sfc@3.4.27': + '@vue/compiler-sfc@3.4.29': dependencies: - '@babel/parser': 7.24.5 - '@vue/compiler-core': 3.4.27 - '@vue/compiler-dom': 3.4.27 - '@vue/compiler-ssr': 3.4.27 - '@vue/shared': 3.4.27 + '@babel/parser': 7.24.7 + '@vue/compiler-core': 3.4.29 + '@vue/compiler-dom': 3.4.29 + '@vue/compiler-ssr': 3.4.29 + '@vue/shared': 3.4.29 estree-walker: 2.0.2 magic-string: 0.30.10 postcss: 8.4.38 source-map-js: 1.2.0 - '@vue/compiler-ssr@3.4.27': + '@vue/compiler-ssr@3.4.29': dependencies: - '@vue/compiler-dom': 3.4.27 - '@vue/shared': 3.4.27 + '@vue/compiler-dom': 3.4.29 + '@vue/shared': 3.4.29 - '@vue/devtools-api@6.6.1': {} + '@vue/devtools-api@6.6.3': {} '@vue/language-core@1.8.27(typescript@5.3.3)': dependencies: '@volar/language-core': 1.11.1 '@volar/source-map': 1.11.1 - '@vue/compiler-dom': 3.4.27 - '@vue/shared': 3.4.27 + '@vue/compiler-dom': 3.4.29 + '@vue/shared': 3.4.29 computeds: 0.0.1 minimatch: 9.0.4 muggle-string: 0.3.1 @@ -3832,46 +3852,47 @@ snapshots: optionalDependencies: typescript: 5.3.3 - '@vue/reactivity@3.4.27': + '@vue/reactivity@3.4.29': dependencies: - '@vue/shared': 3.4.27 + '@vue/shared': 3.4.29 - '@vue/runtime-core@3.4.27': + '@vue/runtime-core@3.4.29': dependencies: - '@vue/reactivity': 3.4.27 - '@vue/shared': 3.4.27 + '@vue/reactivity': 3.4.29 + '@vue/shared': 3.4.29 - '@vue/runtime-dom@3.4.27': + '@vue/runtime-dom@3.4.29': dependencies: - '@vue/runtime-core': 3.4.27 - '@vue/shared': 3.4.27 + '@vue/reactivity': 3.4.29 + '@vue/runtime-core': 3.4.29 + '@vue/shared': 3.4.29 csstype: 3.1.3 - '@vue/server-renderer@3.4.27(vue@3.4.27(typescript@5.3.3))': + '@vue/server-renderer@3.4.29(vue@3.4.29(typescript@5.3.3))': dependencies: - '@vue/compiler-ssr': 3.4.27 - '@vue/shared': 3.4.27 - vue: 3.4.27(typescript@5.3.3) + '@vue/compiler-ssr': 3.4.29 + '@vue/shared': 3.4.29 + vue: 3.4.29(typescript@5.3.3) - '@vue/shared@3.4.27': {} + '@vue/shared@3.4.29': {} '@vue/tsconfig@0.5.1': {} - '@vueuse/core@10.9.0(vue@3.4.27(typescript@5.3.3))': + '@vueuse/core@10.11.0(vue@3.4.29(typescript@5.3.3))': dependencies: '@types/web-bluetooth': 0.0.20 - '@vueuse/metadata': 10.9.0 - '@vueuse/shared': 10.9.0(vue@3.4.27(typescript@5.3.3)) - vue-demi: 0.14.7(vue@3.4.27(typescript@5.3.3)) + '@vueuse/metadata': 10.11.0 + '@vueuse/shared': 10.11.0(vue@3.4.29(typescript@5.3.3)) + vue-demi: 0.14.8(vue@3.4.29(typescript@5.3.3)) transitivePeerDependencies: - '@vue/composition-api' - vue - '@vueuse/metadata@10.9.0': {} + '@vueuse/metadata@10.11.0': {} - '@vueuse/shared@10.9.0(vue@3.4.27(typescript@5.3.3))': + '@vueuse/shared@10.11.0(vue@3.4.29(typescript@5.3.3))': dependencies: - vue-demi: 0.14.7(vue@3.4.27(typescript@5.3.3)) + vue-demi: 0.14.8(vue@3.4.29(typescript@5.3.3)) transitivePeerDependencies: - '@vue/composition-api' - vue @@ -3888,13 +3909,13 @@ snapshots: '@yr/monotone-cubic-spline@1.0.3': {} - ace-builds@1.33.1: {} + ace-builds@1.35.0: {} - acorn-jsx@5.3.2(acorn@8.11.3): + acorn-jsx@5.3.2(acorn@8.12.0): dependencies: - acorn: 8.11.3 + acorn: 8.12.0 - acorn@8.11.3: {} + acorn@8.12.0: {} ajv@6.12.6: dependencies: @@ -3917,11 +3938,11 @@ snapshots: ansi-styles@6.2.1: {} - ant-design-vue@4.2.1(vue@3.4.27(typescript@5.3.3)): + ant-design-vue@4.2.3(vue@3.4.29(typescript@5.3.3)): dependencies: '@ant-design/colors': 6.0.0 - '@ant-design/icons-vue': 7.0.1(vue@3.4.27(typescript@5.3.3)) - '@babel/runtime': 7.24.5 + '@ant-design/icons-vue': 7.0.1(vue@3.4.29(typescript@5.3.3)) + '@babel/runtime': 7.24.7 '@ctrl/tinycolor': 3.6.1 '@emotion/hash': 0.9.1 '@emotion/unitless': 0.8.1 @@ -3939,8 +3960,8 @@ snapshots: shallow-equal: 1.2.1 stylis: 4.3.2 throttle-debounce: 5.0.0 - vue: 3.4.27(typescript@5.3.3) - vue-types: 3.0.2(vue@3.4.27(typescript@5.3.3)) + vue: 3.4.29(typescript@5.3.3) + vue-types: 3.0.2(vue@3.4.29(typescript@5.3.3)) warning: 4.0.3 any-promise@1.3.0: {} @@ -3950,7 +3971,7 @@ snapshots: normalize-path: 3.0.0 picomatch: 2.3.1 - apexcharts@3.49.0: + apexcharts@3.49.1: dependencies: '@yr/monotone-cubic-spline': 1.0.3 svg.draggable.js: 2.2.2 @@ -4020,15 +4041,15 @@ snapshots: is-array-buffer: 3.0.4 is-shared-array-buffer: 1.0.3 - ast-kit@0.12.1: + ast-kit@0.12.2: dependencies: - '@babel/parser': 7.24.5 + '@babel/parser': 7.24.7 pathe: 1.1.2 ast-walker-scope@0.6.1: dependencies: - '@babel/parser': 7.24.5 - ast-kit: 0.12.1 + '@babel/parser': 7.24.7 + ast-kit: 0.12.2 async-validator@4.2.5: {} @@ -4036,11 +4057,11 @@ snapshots: autoprefixer@10.4.19(postcss@8.4.38): dependencies: - browserslist: 4.23.0 - caniuse-lite: 1.0.30001616 + browserslist: 4.23.1 + caniuse-lite: 1.0.30001634 fraction.js: 4.3.7 normalize-range: 0.1.2 - picocolors: 1.0.0 + picocolors: 1.0.1 postcss: 8.4.38 postcss-value-parser: 4.2.0 @@ -4048,7 +4069,7 @@ snapshots: dependencies: possible-typed-array-names: 1.0.0 - axios@1.6.8: + axios@1.7.2: dependencies: follow-redirects: 1.15.6 form-data: 4.0.0 @@ -4071,22 +4092,22 @@ snapshots: dependencies: balanced-match: 1.0.2 - braces@3.0.2: + braces@3.0.3: dependencies: - fill-range: 7.0.1 + fill-range: 7.1.1 - browserslist@4.23.0: + browserslist@4.23.1: dependencies: - caniuse-lite: 1.0.30001616 - electron-to-chromium: 1.4.757 + caniuse-lite: 1.0.30001634 + electron-to-chromium: 1.4.803 node-releases: 2.0.14 - update-browserslist-db: 1.0.15(browserslist@4.23.0) + update-browserslist-db: 1.0.16(browserslist@4.23.1) builtin-modules@3.3.0: {} builtins@5.1.0: dependencies: - semver: 7.6.0 + semver: 7.6.2 call-bind@1.0.7: dependencies: @@ -4102,7 +4123,7 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001616: {} + caniuse-lite@1.0.30001634: {} chalk@2.4.2: dependencies: @@ -4124,7 +4145,7 @@ snapshots: chokidar@3.6.0: dependencies: anymatch: 3.1.3 - braces: 3.0.2 + braces: 3.0.3 glob-parent: 5.1.2 is-binary-path: 2.1.0 is-glob: 4.0.3 @@ -4182,7 +4203,7 @@ snapshots: dependencies: is-what: 3.14.1 - core-js@3.37.0: {} + core-js@3.37.1: {} cosmiconfig@9.0.0(typescript@5.3.3): dependencies: @@ -4255,7 +4276,7 @@ snapshots: dependencies: ms: 2.1.3 - debug@4.3.4: + debug@4.3.5: dependencies: ms: 2.1.2 @@ -4315,13 +4336,13 @@ snapshots: eastasianwidth@0.2.0: {} - electron-to-chromium@1.4.757: {} + electron-to-chromium@1.4.803: {} emoji-regex@8.0.0: {} emoji-regex@9.2.2: {} - enhanced-resolve@5.16.0: + enhanced-resolve@5.17.0: dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 @@ -4414,31 +4435,31 @@ snapshots: is-date-object: 1.0.5 is-symbol: 1.0.4 - esbuild@0.20.2: + esbuild@0.21.5: optionalDependencies: - '@esbuild/aix-ppc64': 0.20.2 - '@esbuild/android-arm': 0.20.2 - '@esbuild/android-arm64': 0.20.2 - '@esbuild/android-x64': 0.20.2 - '@esbuild/darwin-arm64': 0.20.2 - '@esbuild/darwin-x64': 0.20.2 - '@esbuild/freebsd-arm64': 0.20.2 - '@esbuild/freebsd-x64': 0.20.2 - '@esbuild/linux-arm': 0.20.2 - '@esbuild/linux-arm64': 0.20.2 - '@esbuild/linux-ia32': 0.20.2 - '@esbuild/linux-loong64': 0.20.2 - '@esbuild/linux-mips64el': 0.20.2 - '@esbuild/linux-ppc64': 0.20.2 - '@esbuild/linux-riscv64': 0.20.2 - '@esbuild/linux-s390x': 0.20.2 - '@esbuild/linux-x64': 0.20.2 - '@esbuild/netbsd-x64': 0.20.2 - '@esbuild/openbsd-x64': 0.20.2 - '@esbuild/sunos-x64': 0.20.2 - '@esbuild/win32-arm64': 0.20.2 - '@esbuild/win32-ia32': 0.20.2 - '@esbuild/win32-x64': 0.20.2 + '@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.1.2: {} @@ -4448,10 +4469,10 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-compat-utils@0.5.0(eslint@8.57.0): + eslint-compat-utils@0.5.1(eslint@8.57.0): dependencies: eslint: 8.57.0 - semver: 7.6.0 + semver: 7.6.2 eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0)): dependencies: @@ -4467,13 +4488,13 @@ snapshots: eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0): dependencies: - debug: 4.3.4 - enhanced-resolve: 5.16.0 + debug: 4.3.5 + enhanced-resolve: 5.17.0 eslint: 8.57.0 eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) fast-glob: 3.3.2 - get-tsconfig: 4.7.4 + get-tsconfig: 4.7.5 is-core-module: 2.13.1 is-glob: 4.0.3 transitivePeerDependencies: @@ -4501,12 +4522,12 @@ snapshots: - supports-color - typescript - eslint-plugin-es-x@7.6.0(eslint@8.57.0): + eslint-plugin-es-x@7.7.0(eslint@8.57.0): dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@eslint-community/regexpp': 4.10.0 + '@eslint-community/regexpp': 4.10.1 eslint: 8.57.0 - eslint-compat-utils: 0.5.0(eslint@8.57.0) + eslint-compat-utils: 0.5.1(eslint@8.57.0) eslint-plugin-eslint-comments@3.2.0(eslint@8.57.0): dependencies: @@ -4525,11 +4546,11 @@ snapshots: eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) - get-tsconfig: 4.7.4 + get-tsconfig: 4.7.5 is-glob: 4.0.3 minimatch: 3.1.2 resolve: 1.22.8 - semver: 7.6.0 + semver: 7.6.2 transitivePeerDependencies: - '@typescript-eslint/parser' - eslint-import-resolver-typescript @@ -4578,21 +4599,21 @@ snapshots: '@es-joy/jsdoccomment': 0.41.0 are-docs-informative: 0.0.2 comment-parser: 1.4.1 - debug: 4.3.4 + debug: 4.3.5 escape-string-regexp: 4.0.0 eslint: 8.57.0 esquery: 1.5.0 is-builtin-module: 3.2.1 - semver: 7.6.0 + semver: 7.6.2 spdx-expression-parse: 4.0.0 transitivePeerDependencies: - supports-color - eslint-plugin-jsonc@2.15.1(eslint@8.57.0): + eslint-plugin-jsonc@2.16.0(eslint@8.57.0): dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) eslint: 8.57.0 - eslint-compat-utils: 0.5.0(eslint@8.57.0) + eslint-compat-utils: 0.5.1(eslint@8.57.0) espree: 9.6.1 graphemer: 1.4.0 jsonc-eslint-parser: 2.4.0 @@ -4611,19 +4632,19 @@ snapshots: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) builtins: 5.1.0 eslint: 8.57.0 - eslint-plugin-es-x: 7.6.0(eslint@8.57.0) - get-tsconfig: 4.7.4 + eslint-plugin-es-x: 7.7.0(eslint@8.57.0) + get-tsconfig: 4.7.5 globals: 13.24.0 ignore: 5.3.1 is-builtin-module: 3.2.1 is-core-module: 2.13.1 minimatch: 3.1.2 resolve: 1.22.8 - semver: 7.6.0 + semver: 7.6.2 eslint-plugin-no-only-tests@3.1.0: {} - eslint-plugin-promise@6.1.1(eslint@8.57.0): + eslint-plugin-promise@6.2.0(eslint@8.57.0): dependencies: eslint: 8.57.0 @@ -4637,7 +4658,7 @@ snapshots: eslint-plugin-unicorn@48.0.1(eslint@8.57.0): dependencies: - '@babel/helper-validator-identifier': 7.24.5 + '@babel/helper-validator-identifier': 7.24.7 '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) ci-info: 3.9.0 clean-regexp: 1.0.0 @@ -4651,7 +4672,7 @@ snapshots: read-pkg-up: 7.0.1 regexp-tree: 0.1.27 regjsparser: 0.10.0 - semver: 7.6.0 + semver: 7.6.2 strip-indent: 3.0.0 eslint-plugin-unused-imports@3.2.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0): @@ -4661,28 +4682,28 @@ snapshots: optionalDependencies: '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3) - eslint-plugin-vue@9.25.0(eslint@8.57.0): + eslint-plugin-vue@9.26.0(eslint@8.57.0): dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) eslint: 8.57.0 globals: 13.24.0 natural-compare: 1.4.0 nth-check: 2.1.1 - postcss-selector-parser: 6.0.16 - semver: 7.6.0 - vue-eslint-parser: 9.4.2(eslint@8.57.0) + postcss-selector-parser: 6.1.0 + semver: 7.6.2 + vue-eslint-parser: 9.4.3(eslint@8.57.0) xml-name-validator: 4.0.0 transitivePeerDependencies: - supports-color eslint-plugin-yml@1.14.0(eslint@8.57.0): dependencies: - debug: 4.3.4 + debug: 4.3.5 eslint: 8.57.0 - eslint-compat-utils: 0.5.0(eslint@8.57.0) + eslint-compat-utils: 0.5.1(eslint@8.57.0) lodash: 4.17.21 natural-compare: 1.4.0 - yaml-eslint-parser: 1.2.2 + yaml-eslint-parser: 1.2.3 transitivePeerDependencies: - supports-color @@ -4703,7 +4724,7 @@ snapshots: eslint@8.57.0: dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@eslint-community/regexpp': 4.10.0 + '@eslint-community/regexpp': 4.10.1 '@eslint/eslintrc': 2.1.4 '@eslint/js': 8.57.0 '@humanwhocodes/config-array': 0.11.14 @@ -4713,7 +4734,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4 + debug: 4.3.5 doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -4745,8 +4766,8 @@ snapshots: espree@9.6.1: dependencies: - acorn: 8.11.3 - acorn-jsx: 5.3.2(acorn@8.11.3) + acorn: 8.12.0 + acorn-jsx: 5.3.2(acorn@8.12.0) eslint-visitor-keys: 3.4.3 esquery@1.5.0: @@ -4777,7 +4798,7 @@ snapshots: '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.5 + micromatch: 4.0.7 fast-json-stable-stringify@2.1.0: {} @@ -4791,7 +4812,7 @@ snapshots: dependencies: flat-cache: 3.2.0 - fill-range@7.0.1: + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -4823,7 +4844,7 @@ snapshots: dependencies: is-callable: 1.2.7 - foreground-child@3.1.1: + foreground-child@3.2.1: dependencies: cross-spawn: 7.0.3 signal-exit: 4.1.0 @@ -4868,7 +4889,7 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.2.4 - get-tsconfig@4.7.4: + get-tsconfig@4.7.5: dependencies: resolve-pkg-maps: 1.0.0 @@ -4892,13 +4913,13 @@ snapshots: dependencies: is-glob: 4.0.3 - glob@10.3.12: + glob@10.4.1: dependencies: - foreground-child: 3.1.1 - jackspeak: 2.3.6 + foreground-child: 3.2.1 + jackspeak: 3.4.0 minimatch: 9.0.4 - minipass: 7.1.0 - path-scurry: 1.10.2 + minipass: 7.1.2 + path-scurry: 1.11.1 glob@7.2.3: dependencies: @@ -5106,16 +5127,18 @@ snapshots: isexe@2.0.0: {} - jackspeak@2.3.6: + jackspeak@3.4.0: dependencies: '@isaacs/cliui': 8.0.2 optionalDependencies: '@pkgjs/parseargs': 0.11.0 - jiti@1.21.0: {} + jiti@1.21.6: {} js-tokens@4.0.0: {} + js-tokens@9.0.0: {} + js-yaml@4.1.0: dependencies: argparse: 2.0.1 @@ -5144,10 +5167,10 @@ snapshots: jsonc-eslint-parser@2.4.0: dependencies: - acorn: 8.11.3 + acorn: 8.12.0 eslint-visitor-keys: 3.4.3 espree: 9.6.1 - semver: 7.6.0 + semver: 7.6.2 keyv@4.5.4: dependencies: @@ -5157,7 +5180,7 @@ snapshots: dependencies: copy-anything: 2.0.6 parse-node-version: 1.0.1 - tslib: 2.6.2 + tslib: 2.6.3 optionalDependencies: errno: 0.1.8 graceful-fs: 4.2.11 @@ -5174,7 +5197,7 @@ snapshots: lilconfig@2.1.0: {} - lilconfig@3.1.1: {} + lilconfig@3.1.2: {} lines-and-columns@1.2.4: {} @@ -5182,8 +5205,8 @@ snapshots: local-pkg@0.5.0: dependencies: - mlly: 1.7.0 - pkg-types: 1.1.0 + mlly: 1.7.1 + pkg-types: 1.1.1 locate-path@5.0.0: dependencies: @@ -5211,11 +5234,7 @@ snapshots: dependencies: yallist: 3.1.1 - lru-cache@6.0.0: - dependencies: - yallist: 4.0.0 - - magic-string-ast@0.5.0: + magic-string-ast@0.6.1: dependencies: magic-string: 0.30.10 @@ -5251,14 +5270,14 @@ snapshots: micromark@2.11.4: dependencies: - debug: 4.3.4 + debug: 4.3.5 parse-entities: 2.0.0 transitivePeerDependencies: - supports-color - micromatch@4.0.5: + micromatch@4.0.7: dependencies: - braces: 3.0.2 + braces: 3.0.3 picomatch: 2.3.1 mime-db@1.52.0: {} @@ -5286,13 +5305,13 @@ snapshots: minimist@1.2.8: {} - minipass@7.1.0: {} + minipass@7.1.2: {} - mlly@1.7.0: + mlly@1.7.1: dependencies: - acorn: 8.11.3 + acorn: 8.12.0 pathe: 1.1.2 - pkg-types: 1.1.0 + pkg-types: 1.1.1 ufo: 1.5.3 ms@2.1.2: {} @@ -5316,7 +5335,7 @@ snapshots: needle@3.3.1: dependencies: iconv-lite: 0.6.3 - sax: 1.3.0 + sax: 1.4.1 optional: true node-releases@2.0.14: {} @@ -5418,7 +5437,7 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.24.2 + '@babel/code-frame': 7.24.7 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -5441,16 +5460,16 @@ snapshots: path-parse@1.0.7: {} - path-scurry@1.10.2: + path-scurry@1.11.1: dependencies: lru-cache: 10.2.2 - minipass: 7.1.0 + minipass: 7.1.2 path-type@4.0.0: {} pathe@1.1.2: {} - picocolors@1.0.0: {} + picocolors@1.0.1: {} picomatch@2.3.1: {} @@ -5459,24 +5478,24 @@ snapshots: pify@4.0.1: optional: true - pinia-plugin-persistedstate@3.2.1(pinia@2.1.7(typescript@5.3.3)(vue@3.4.27(typescript@5.3.3))): + pinia-plugin-persistedstate@3.2.1(pinia@2.1.7(typescript@5.3.3)(vue@3.4.29(typescript@5.3.3))): dependencies: - pinia: 2.1.7(typescript@5.3.3)(vue@3.4.27(typescript@5.3.3)) + pinia: 2.1.7(typescript@5.3.3)(vue@3.4.29(typescript@5.3.3)) - pinia@2.1.7(typescript@5.3.3)(vue@3.4.27(typescript@5.3.3)): + pinia@2.1.7(typescript@5.3.3)(vue@3.4.29(typescript@5.3.3)): dependencies: - '@vue/devtools-api': 6.6.1 - vue: 3.4.27(typescript@5.3.3) - vue-demi: 0.14.7(vue@3.4.27(typescript@5.3.3)) + '@vue/devtools-api': 6.6.3 + vue: 3.4.29(typescript@5.3.3) + vue-demi: 0.14.8(vue@3.4.29(typescript@5.3.3)) optionalDependencies: typescript: 5.3.3 pirates@4.0.6: {} - pkg-types@1.1.0: + pkg-types@1.1.1: dependencies: confbox: 0.1.7 - mlly: 1.7.0 + mlly: 1.7.1 pathe: 1.1.2 pluralize@8.0.0: {} @@ -5501,17 +5520,17 @@ snapshots: postcss-load-config@4.0.2(postcss@8.4.38): dependencies: - lilconfig: 3.1.1 - yaml: 2.4.2 + lilconfig: 3.1.2 + yaml: 2.4.5 optionalDependencies: postcss: 8.4.38 postcss-nested@6.0.1(postcss@8.4.38): dependencies: postcss: 8.4.38 - postcss-selector-parser: 6.0.16 + postcss-selector-parser: 6.1.0 - postcss-selector-parser@6.0.16: + postcss-selector-parser@6.1.0: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 @@ -5521,7 +5540,7 @@ snapshots: postcss@8.4.38: dependencies: nanoid: 3.3.7 - picocolors: 1.0.0 + picocolors: 1.0.1 source-map-js: 1.2.0 prelude-ls@1.2.1: {} @@ -5593,28 +5612,28 @@ snapshots: rimraf@5.0.7: dependencies: - glob: 10.3.12 + glob: 10.4.1 - rollup@4.17.2: + rollup@4.18.0: dependencies: '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.17.2 - '@rollup/rollup-android-arm64': 4.17.2 - '@rollup/rollup-darwin-arm64': 4.17.2 - '@rollup/rollup-darwin-x64': 4.17.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.17.2 - '@rollup/rollup-linux-arm-musleabihf': 4.17.2 - '@rollup/rollup-linux-arm64-gnu': 4.17.2 - '@rollup/rollup-linux-arm64-musl': 4.17.2 - '@rollup/rollup-linux-powerpc64le-gnu': 4.17.2 - '@rollup/rollup-linux-riscv64-gnu': 4.17.2 - '@rollup/rollup-linux-s390x-gnu': 4.17.2 - '@rollup/rollup-linux-x64-gnu': 4.17.2 - '@rollup/rollup-linux-x64-musl': 4.17.2 - '@rollup/rollup-win32-arm64-msvc': 4.17.2 - '@rollup/rollup-win32-ia32-msvc': 4.17.2 - '@rollup/rollup-win32-x64-msvc': 4.17.2 + '@rollup/rollup-android-arm-eabi': 4.18.0 + '@rollup/rollup-android-arm64': 4.18.0 + '@rollup/rollup-darwin-arm64': 4.18.0 + '@rollup/rollup-darwin-x64': 4.18.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.18.0 + '@rollup/rollup-linux-arm-musleabihf': 4.18.0 + '@rollup/rollup-linux-arm64-gnu': 4.18.0 + '@rollup/rollup-linux-arm64-musl': 4.18.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.18.0 + '@rollup/rollup-linux-riscv64-gnu': 4.18.0 + '@rollup/rollup-linux-s390x-gnu': 4.18.0 + '@rollup/rollup-linux-x64-gnu': 4.18.0 + '@rollup/rollup-linux-x64-musl': 4.18.0 + '@rollup/rollup-win32-arm64-msvc': 4.18.0 + '@rollup/rollup-win32-ia32-msvc': 4.18.0 + '@rollup/rollup-win32-x64-msvc': 4.18.0 fsevents: 2.3.3 run-parallel@1.2.0: @@ -5637,7 +5656,7 @@ snapshots: safer-buffer@2.1.2: optional: true - sax@1.3.0: + sax@1.4.1: optional: true scroll-into-view-if-needed@2.2.31: @@ -5650,9 +5669,7 @@ snapshots: semver@6.3.1: {} - semver@7.6.0: - dependencies: - lru-cache: 6.0.0 + semver@7.6.2: {} set-function-length@1.2.2: dependencies: @@ -5701,21 +5718,21 @@ snapshots: spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.17 + spdx-license-ids: 3.0.18 spdx-exceptions@2.5.0: {} spdx-expression-parse@3.0.1: dependencies: spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.17 + spdx-license-ids: 3.0.18 spdx-expression-parse@4.0.0: dependencies: spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.17 + spdx-license-ids: 3.0.18 - spdx-license-ids@3.0.17: {} + spdx-license-ids@3.0.18: {} string-width@4.2.3: dependencies: @@ -5764,9 +5781,9 @@ snapshots: strip-json-comments@3.1.1: {} - strip-literal@1.3.0: + strip-literal@2.1.0: dependencies: - acorn: 8.11.3 + js-tokens: 9.0.0 stylis@4.3.2: {} @@ -5774,7 +5791,7 @@ snapshots: dependencies: '@jridgewell/gen-mapping': 0.3.5 commander: 4.1.1 - glob: 10.3.12 + glob: 10.4.1 lines-and-columns: 1.2.4 mz: 2.7.0 pirates: 4.0.6 @@ -5823,7 +5840,7 @@ snapshots: dependencies: svg.js: 2.7.1 - svgo@3.2.0: + svgo@3.3.2: dependencies: '@trysound/sax': 0.2.0 commander: 7.2.0 @@ -5831,13 +5848,13 @@ snapshots: css-tree: 2.3.1 css-what: 6.1.0 csso: 5.0.5 - picocolors: 1.0.0 + picocolors: 1.0.1 synckit@0.6.2: dependencies: - tslib: 2.6.2 + tslib: 2.6.3 - tailwindcss@3.4.3: + tailwindcss@3.4.4: dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -5847,18 +5864,18 @@ snapshots: fast-glob: 3.3.2 glob-parent: 6.0.2 is-glob: 4.0.3 - jiti: 1.21.0 + jiti: 1.21.6 lilconfig: 2.1.0 - micromatch: 4.0.5 + micromatch: 4.0.7 normalize-path: 3.0.0 object-hash: 3.0.0 - picocolors: 1.0.0 + picocolors: 1.0.1 postcss: 8.4.38 postcss-import: 15.1.0(postcss@8.4.38) postcss-js: 4.0.1(postcss@8.4.38) postcss-load-config: 4.0.2(postcss@8.4.38) postcss-nested: 6.0.1(postcss@8.4.38) - postcss-selector-parser: 6.0.16 + postcss-selector-parser: 6.1.0 resolve: 1.22.8 sucrase: 3.35.0 transitivePeerDependencies: @@ -5899,7 +5916,7 @@ snapshots: tslib@1.14.1: {} - tslib@2.6.2: {} + tslib@2.6.3: {} tsutils@3.21.0(typescript@5.3.3): dependencies: @@ -5965,20 +5982,20 @@ snapshots: undici-types@5.26.5: {} - unimport@3.7.1(rollup@4.17.2): + unimport@3.7.2(rollup@4.18.0): dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.17.2) - acorn: 8.11.3 + '@rollup/pluginutils': 5.1.0(rollup@4.18.0) + acorn: 8.12.0 escape-string-regexp: 5.0.0 estree-walker: 3.0.3 fast-glob: 3.3.2 local-pkg: 0.5.0 magic-string: 0.30.10 - mlly: 1.7.0 + mlly: 1.7.1 pathe: 1.1.2 - pkg-types: 1.1.0 + pkg-types: 1.1.1 scule: 1.3.0 - strip-literal: 1.3.0 + strip-literal: 2.1.0 unplugin: 1.10.1 transitivePeerDependencies: - rollup @@ -5987,43 +6004,43 @@ snapshots: dependencies: '@types/unist': 2.0.10 - unplugin-auto-import@0.17.5(@vueuse/core@10.9.0(vue@3.4.27(typescript@5.3.3)))(rollup@4.17.2): + unplugin-auto-import@0.17.6(@vueuse/core@10.11.0(vue@3.4.29(typescript@5.3.3)))(rollup@4.18.0): dependencies: - '@antfu/utils': 0.7.7 - '@rollup/pluginutils': 5.1.0(rollup@4.17.2) + '@antfu/utils': 0.7.8 + '@rollup/pluginutils': 5.1.0(rollup@4.18.0) fast-glob: 3.3.2 local-pkg: 0.5.0 magic-string: 0.30.10 minimatch: 9.0.4 - unimport: 3.7.1(rollup@4.17.2) + unimport: 3.7.2(rollup@4.18.0) unplugin: 1.10.1 optionalDependencies: - '@vueuse/core': 10.9.0(vue@3.4.27(typescript@5.3.3)) + '@vueuse/core': 10.11.0(vue@3.4.29(typescript@5.3.3)) transitivePeerDependencies: - rollup - unplugin-vue-components@0.26.0(@babel/parser@7.24.5)(rollup@4.17.2)(vue@3.4.27(typescript@5.3.3)): + unplugin-vue-components@0.26.0(@babel/parser@7.24.7)(rollup@4.18.0)(vue@3.4.29(typescript@5.3.3)): dependencies: - '@antfu/utils': 0.7.7 - '@rollup/pluginutils': 5.1.0(rollup@4.17.2) + '@antfu/utils': 0.7.8 + '@rollup/pluginutils': 5.1.0(rollup@4.18.0) chokidar: 3.6.0 - debug: 4.3.4 + debug: 4.3.5 fast-glob: 3.3.2 local-pkg: 0.4.3 magic-string: 0.30.10 minimatch: 9.0.4 resolve: 1.22.8 unplugin: 1.10.1 - vue: 3.4.27(typescript@5.3.3) + vue: 3.4.29(typescript@5.3.3) optionalDependencies: - '@babel/parser': 7.24.5 + '@babel/parser': 7.24.7 transitivePeerDependencies: - rollup - supports-color - unplugin-vue-define-options@1.4.4(rollup@4.17.2)(vue@3.4.27(typescript@5.3.3)): + unplugin-vue-define-options@1.4.5(rollup@4.18.0)(vue@3.4.29(typescript@5.3.3)): dependencies: - '@vue-macros/common': 1.10.3(rollup@4.17.2)(vue@3.4.27(typescript@5.3.3)) + '@vue-macros/common': 1.10.4(rollup@4.18.0)(vue@3.4.29(typescript@5.3.3)) ast-walker-scope: 0.6.1 unplugin: 1.10.1 transitivePeerDependencies: @@ -6032,16 +6049,16 @@ snapshots: unplugin@1.10.1: dependencies: - acorn: 8.11.3 + acorn: 8.12.0 chokidar: 3.6.0 webpack-sources: 3.2.3 - webpack-virtual-modules: 0.6.1 + webpack-virtual-modules: 0.6.2 - update-browserslist-db@1.0.15(browserslist@4.23.0): + update-browserslist-db@1.0.16(browserslist@4.23.1): dependencies: - browserslist: 4.23.0 + browserslist: 4.23.1 escalade: 3.1.2 - picocolors: 1.0.0 + picocolors: 1.0.1 uri-js@4.4.1: dependencies: @@ -6056,10 +6073,10 @@ snapshots: vite-plugin-build-id@0.2.9(less@4.2.0): dependencies: - '@types/node': 20.12.10 + '@types/node': 20.14.2 rimraf: 5.0.7 typescript: 5.4.5 - vite: 5.2.11(@types/node@20.12.10)(less@4.2.0) + vite: 5.3.1(@types/node@20.14.2)(less@4.2.0) transitivePeerDependencies: - less - lightningcss @@ -6068,35 +6085,35 @@ snapshots: - sugarss - terser - vite-svg-loader@5.1.0(vue@3.4.27(typescript@5.3.3)): + vite-svg-loader@5.1.0(vue@3.4.29(typescript@5.3.3)): dependencies: - svgo: 3.2.0 - vue: 3.4.27(typescript@5.3.3) + svgo: 3.3.2 + vue: 3.4.29(typescript@5.3.3) - vite@5.2.11(@types/node@20.12.10)(less@4.2.0): + vite@5.3.1(@types/node@20.14.2)(less@4.2.0): dependencies: - esbuild: 0.20.2 + esbuild: 0.21.5 postcss: 8.4.38 - rollup: 4.17.2 + rollup: 4.18.0 optionalDependencies: - '@types/node': 20.12.10 + '@types/node': 20.14.2 fsevents: 2.3.3 less: 4.2.0 - vue-demi@0.14.7(vue@3.4.27(typescript@5.3.3)): + vue-demi@0.14.8(vue@3.4.29(typescript@5.3.3)): dependencies: - vue: 3.4.27(typescript@5.3.3) + vue: 3.4.29(typescript@5.3.3) - vue-eslint-parser@9.4.2(eslint@8.57.0): + vue-eslint-parser@9.4.3(eslint@8.57.0): dependencies: - debug: 4.3.4 + debug: 4.3.5 eslint: 8.57.0 eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 esquery: 1.5.0 lodash: 4.17.21 - semver: 7.6.0 + semver: 7.6.2 transitivePeerDependencies: - supports-color @@ -6104,10 +6121,10 @@ snapshots: dependencies: github-buttons: 2.28.0 - vue-router@4.3.2(vue@3.4.27(typescript@5.3.3)): + vue-router@4.3.3(vue@3.4.29(typescript@5.3.3)): dependencies: - '@vue/devtools-api': 6.6.1 - vue: 3.4.27(typescript@5.3.3) + '@vue/devtools-api': 6.6.3 + vue: 3.4.29(typescript@5.3.3) vue-template-compiler@2.7.16: dependencies: @@ -6118,28 +6135,28 @@ snapshots: dependencies: '@volar/typescript': 1.11.1 '@vue/language-core': 1.8.27(typescript@5.3.3) - semver: 7.6.0 + semver: 7.6.2 typescript: 5.3.3 - vue-types@3.0.2(vue@3.4.27(typescript@5.3.3)): + vue-types@3.0.2(vue@3.4.29(typescript@5.3.3)): dependencies: is-plain-object: 3.0.1 - vue: 3.4.27(typescript@5.3.3) + vue: 3.4.29(typescript@5.3.3) - vue3-ace-editor@2.2.4(ace-builds@1.33.1)(vue@3.4.27(typescript@5.3.3)): + vue3-ace-editor@2.2.4(ace-builds@1.35.0)(vue@3.4.29(typescript@5.3.3)): dependencies: - ace-builds: 1.33.1 + ace-builds: 1.35.0 resize-observer-polyfill: 1.5.1 - vue: 3.4.27(typescript@5.3.3) + vue: 3.4.29(typescript@5.3.3) - vue3-apexcharts@1.4.4(apexcharts@3.49.0)(vue@3.4.27(typescript@5.3.3)): + vue3-apexcharts@1.4.4(apexcharts@3.49.1)(vue@3.4.29(typescript@5.3.3)): dependencies: - apexcharts: 3.49.0 - vue: 3.4.27(typescript@5.3.3) + apexcharts: 3.49.1 + vue: 3.4.29(typescript@5.3.3) - vue3-gettext@3.0.0-beta.4(@vue/compiler-sfc@3.4.27)(typescript@5.3.3)(vue@3.4.27(typescript@5.3.3)): + vue3-gettext@3.0.0-beta.4(@vue/compiler-sfc@3.4.29)(typescript@5.3.3)(vue@3.4.29(typescript@5.3.3)): dependencies: - '@vue/compiler-sfc': 3.4.27 + '@vue/compiler-sfc': 3.4.29 chalk: 4.1.2 command-line-args: 5.2.1 cosmiconfig: 9.0.0(typescript@5.3.3) @@ -6148,25 +6165,25 @@ snapshots: parse5: 6.0.1 parse5-htmlparser2-tree-adapter: 6.0.1 pofile: 1.1.4 - tslib: 2.6.2 - vue: 3.4.27(typescript@5.3.3) + tslib: 2.6.3 + vue: 3.4.29(typescript@5.3.3) transitivePeerDependencies: - typescript - vue@3.4.27(typescript@5.3.3): + vue@3.4.29(typescript@5.3.3): dependencies: - '@vue/compiler-dom': 3.4.27 - '@vue/compiler-sfc': 3.4.27 - '@vue/runtime-dom': 3.4.27 - '@vue/server-renderer': 3.4.27(vue@3.4.27(typescript@5.3.3)) - '@vue/shared': 3.4.27 + '@vue/compiler-dom': 3.4.29 + '@vue/compiler-sfc': 3.4.29 + '@vue/runtime-dom': 3.4.29 + '@vue/server-renderer': 3.4.29(vue@3.4.29(typescript@5.3.3)) + '@vue/shared': 3.4.29 optionalDependencies: typescript: 5.3.3 - vuedraggable@4.1.0(vue@3.4.27(typescript@5.3.3)): + vuedraggable@4.1.0(vue@3.4.29(typescript@5.3.3)): dependencies: sortablejs: 1.14.0 - vue: 3.4.27(typescript@5.3.3) + vue: 3.4.29(typescript@5.3.3) warning@4.0.3: dependencies: @@ -6174,7 +6191,7 @@ snapshots: webpack-sources@3.2.3: {} - webpack-virtual-modules@0.6.1: {} + webpack-virtual-modules@0.6.2: {} which-boxed-primitive@1.0.2: dependencies: @@ -6216,14 +6233,12 @@ snapshots: yallist@3.1.1: {} - yallist@4.0.0: {} - - yaml-eslint-parser@1.2.2: + yaml-eslint-parser@1.2.3: dependencies: eslint-visitor-keys: 3.4.3 lodash: 4.17.21 - yaml: 2.4.2 + yaml: 2.4.5 - yaml@2.4.2: {} + yaml@2.4.5: {} yocto-queue@0.1.0: {} diff --git a/app/src/api/cert.ts b/app/src/api/cert.ts index 448d41dd..8f77b500 100644 --- a/app/src/api/cert.ts +++ b/app/src/api/cert.ts @@ -21,6 +21,7 @@ export interface Cert extends ModelBase { key_type: string log: string certificate_info: CertificateInfo + sync_node_ids: number[] } export interface CertificateInfo { diff --git a/app/src/api/curd.ts b/app/src/api/curd.ts index a8c529db..acecee05 100644 --- a/app/src/api/curd.ts +++ b/app/src/api/curd.ts @@ -50,8 +50,8 @@ class Curd { } // eslint-disable-next-line @typescript-eslint/no-explicit-any - _destroy(id: any = null) { - return http.delete(`${this.baseUrl}/${id}`) + _destroy(id: any = null, params: any = {}) { + return http.delete(`${this.baseUrl}/${id}`, { params }) } // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/app/src/components/Notification/Notification.vue b/app/src/components/Notification/Notification.vue index dc2cb26d..b031d13e 100644 --- a/app/src/components/Notification/Notification.vue +++ b/app/src/components/Notification/Notification.vue @@ -6,6 +6,8 @@ import notification from '@/api/notification' import type { Notification } from '@/api/notification' import { NotificationTypeT } from '@/constants' import { useUserStore } from '@/pinia' +import { detailRender } from '@/components/Notification/detailRender' +import type { customRender } from '@/components/StdDesign/StdDataDisplay/StdTableTransformer' const loading = ref(false) @@ -109,8 +111,8 @@ function viewAll() { diff --git a/app/src/language/LINGUAS b/app/src/language/LINGUAS index 052f2613..1dc98da2 100644 --- a/app/src/language/LINGUAS +++ b/app/src/language/LINGUAS @@ -1 +1 @@ -es fr_FR ko_KR ru_RU vi_VN zh_CN zh_TW +en zh_CN zh_TW fr_FR es ru_RU vi_VN ko_KR \ No newline at end of file diff --git a/app/src/language/constants.ts b/app/src/language/constants.ts index 1e21e891..43b9b8d9 100644 --- a/app/src/language/constants.ts +++ b/app/src/language/constants.ts @@ -18,6 +18,7 @@ export const msg = [ $gettext('Reloading nginx'), $gettext('Finished'), $gettext('Issued certificate successfully'), + $gettext('Environment variables cleaned'), $gettext('Initialing core upgrader'), $gettext('Initial core upgrader error'), @@ -32,4 +33,7 @@ export const msg = [ $gettext('Renew Certificate Success'), $gettext('Renew Certificate Error'), + + $gettext('Sync Certificate Success'), + $gettext('Sync Certificate Error'), ] diff --git a/app/src/language/en/app.po b/app/src/language/en/app.po index f7d343c8..900a4a52 100644 --- a/app/src/language/en/app.po +++ b/app/src/language/en/app.po @@ -24,10 +24,10 @@ msgid "ACME User" msgstr "Username" #: src/views/certificate/ACMEUser.vue:59 -#: src/views/certificate/Certificate.vue:108 -#: src/views/certificate/DNSCredential.vue:29 src/views/config/config.ts:34 +#: src/views/certificate/Certificate.vue:113 +#: src/views/certificate/DNSCredential.vue:33 src/views/config/config.ts:34 #: src/views/domain/DomainList.vue:47 src/views/environment/Environment.vue:129 -#: src/views/notification/Notification.vue:35 +#: src/views/notification/Notification.vue:37 #: src/views/stream/StreamList.vue:47 src/views/user/User.vue:43 msgid "Action" msgstr "Action" @@ -95,7 +95,7 @@ msgid "Arch" msgstr "" #: src/components/Notification/Notification.vue:84 -#: src/views/notification/Notification.vue:70 +#: src/views/notification/Notification.vue:72 #, fuzzy msgid "Are you sure you want to clear all notifications?" msgstr "Are you sure you want to remove this directive?" @@ -105,7 +105,12 @@ msgstr "Are you sure you want to remove this directive?" msgid "Are you sure you want to clear the record of chat?" msgstr "Are you sure you want to remove this directive?" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:509 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:551 +#, fuzzy +msgid "Are you sure you want to delete this item permanently?" +msgstr "Are you sure you want to remove this directive?" + +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:523 #, fuzzy msgid "Are you sure you want to delete this item?" msgstr "Are you sure you want to remove this directive?" @@ -115,7 +120,7 @@ msgstr "Are you sure you want to remove this directive?" msgid "Are you sure you want to delete?" msgstr "Are you sure you want to remove this directive?" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:523 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:537 #, fuzzy msgid "Are you sure you want to recover this item?" msgstr "Are you sure you want to remove this directive?" @@ -163,7 +168,7 @@ msgstr "Auto-renewal disabled for %{name}" msgid "Auto-renewal enabled for %{name}" msgstr "Auto-renewal enabled for %{name}" -#: src/views/certificate/CertificateEditor.vue:235 +#: src/views/certificate/CertificateEditor.vue:242 #: src/views/config/Config.vue:73 src/views/config/ConfigEdit.vue:87 #: src/views/domain/DomainEdit.vue:256 src/views/nginx_log/NginxLog.vue:168 #: src/views/stream/StreamEdit.vue:247 @@ -192,7 +197,7 @@ msgid "Basic Mode" msgstr "Basic Mode" #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:54 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:445 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:459 #, fuzzy msgid "Batch Modify" msgstr "Modify Config" @@ -237,12 +242,12 @@ msgstr "Certificate is valid" msgid "Certificate Renewal Interval" msgstr "Certificate is valid" -#: src/views/certificate/CertificateEditor.vue:127 +#: src/views/certificate/CertificateEditor.vue:128 #: src/views/domain/cert/Cert.vue:33 msgid "Certificate Status" msgstr "Certificate Status" -#: src/routes/index.ts:119 src/views/certificate/Certificate.vue:124 +#: src/routes/index.ts:119 src/views/certificate/Certificate.vue:129 #, fuzzy msgid "Certificates" msgstr "Certificate Status" @@ -276,12 +281,12 @@ msgstr "" #: src/components/ChatGPT/ChatGPT.vue:276 #: src/components/Notification/Notification.vue:89 -#: src/views/notification/Notification.vue:75 +#: src/views/notification/Notification.vue:77 msgid "Clear" msgstr "" #: src/components/Notification/Notification.vue:40 -#: src/views/notification/Notification.vue:44 +#: src/views/notification/Notification.vue:46 #, fuzzy msgid "Cleared successfully" msgstr "Disabled successfully" @@ -350,7 +355,7 @@ msgstr "Created at" msgid "Create Another" msgstr "Create Another" -#: src/views/notification/Notification.vue:29 src/views/user/User.vue:31 +#: src/views/notification/Notification.vue:31 src/views/user/User.vue:31 msgid "Created at" msgstr "Created at" @@ -393,7 +398,7 @@ msgstr "Database (Optional, default: database)" msgid "Days" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:516 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:530 #: src/views/domain/DomainList.vue:155 #: src/views/domain/ngx_conf/NgxServer.vue:114 #: src/views/domain/ngx_conf/NgxUpstream.vue:126 @@ -401,6 +406,10 @@ msgstr "" msgid "Delete" msgstr "" +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:558 +msgid "Delete Permanently" +msgstr "" + #: src/views/domain/DomainList.vue:78 msgid "Delete site: %{site_name}" msgstr "" @@ -409,7 +418,7 @@ msgstr "" msgid "Delete stream: %{stream_name}" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:171 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:185 #, fuzzy msgid "Deleted successfully" msgstr "Disabled successfully" @@ -442,7 +451,7 @@ msgstr "Saved successfully" msgid "Description" msgstr "" -#: src/views/notification/Notification.vue:25 +#: src/views/notification/Notification.vue:26 msgid "Details" msgstr "" @@ -489,7 +498,7 @@ msgstr "Disabled successfully" msgid "Disk IO" msgstr "Disk IO" -#: src/routes/index.ts:162 src/views/certificate/DNSCredential.vue:36 +#: src/routes/index.ts:162 src/views/certificate/DNSCredential.vue:40 msgid "DNS Credentials" msgstr "" @@ -557,15 +566,15 @@ msgstr "" msgid "Domain Config Created Successfully" msgstr "Domain Config Created Successfully" -#: src/views/certificate/CertificateEditor.vue:111 +#: src/views/certificate/CertificateEditor.vue:112 msgid "Domains list is empty, try to reopen Auto Cert for %{config}" msgstr "" -#: src/language/constants.ts:25 +#: src/language/constants.ts:26 msgid "Download latest release error" msgstr "" -#: src/language/constants.ts:24 +#: src/language/constants.ts:25 msgid "Downloading latest release" msgstr "" @@ -693,6 +702,10 @@ msgstr "Encrypt website with Let's Encrypt" msgid "Environment" msgstr "" +#: src/language/constants.ts:21 +msgid "Environment variables cleaned" +msgstr "" + #: src/views/dashboard/Environments.vue:82 #, fuzzy msgid "Environments" @@ -710,7 +723,7 @@ msgstr "" msgid "Executable Path" msgstr "" -#: src/views/certificate/Certificate.vue:96 +#: src/views/certificate/Certificate.vue:101 msgid "Expired" msgstr "" @@ -754,7 +767,7 @@ msgstr "" msgid "File" msgstr "" -#: src/language/constants.ts:30 +#: src/language/constants.ts:31 msgid "File exists" msgstr "" @@ -794,7 +807,7 @@ msgstr "Save error %{msg}" msgid "Format successfully" msgstr "Saved successfully" -#: src/views/certificate/Certificate.vue:43 +#: src/views/certificate/Certificate.vue:44 #, fuzzy msgid "General Certificate" msgstr "Certificate is valid" @@ -844,11 +857,11 @@ msgstr "" msgid "If left blank, the default CA Dir will be used." msgstr "" -#: src/views/certificate/Certificate.vue:131 +#: src/views/certificate/Certificate.vue:136 msgid "Import" msgstr "" -#: src/routes/index.ts:153 src/views/certificate/CertificateEditor.vue:84 +#: src/routes/index.ts:153 src/views/certificate/CertificateEditor.vue:85 #, fuzzy msgid "Import Certificate" msgstr "Certificate Status" @@ -857,11 +870,11 @@ msgstr "Certificate Status" msgid "Info" msgstr "" -#: src/language/constants.ts:23 +#: src/language/constants.ts:24 msgid "Initial core upgrader error" msgstr "" -#: src/language/constants.ts:22 +#: src/language/constants.ts:23 msgid "Initialing core upgrader" msgstr "" @@ -887,7 +900,7 @@ msgstr "" msgid "Invalid" msgstr "Invalid E-mail!" -#: src/views/certificate/Certificate.vue:139 +#: src/views/certificate/Certificate.vue:144 #, fuzzy msgid "Issue wildcard certificate" msgstr "Certificate is valid" @@ -906,7 +919,7 @@ msgstr "Enabled successfully" msgid "Jwt Secret" msgstr "" -#: src/views/certificate/Certificate.vue:61 +#: src/views/certificate/Certificate.vue:66 #: src/views/certificate/WildcardCertificate.vue:79 #: src/views/domain/cert/components/AutoCertStepOne.vue:80 msgid "Key Type" @@ -924,8 +937,8 @@ msgstr "Leave blank for no change" msgid "Leave blank for the default: https://api.openai.com/" msgstr "" -#: src/views/certificate/CertificateEditor.vue:200 -#: src/views/certificate/CertificateEditor.vue:213 +#: src/views/certificate/CertificateEditor.vue:207 +#: src/views/certificate/CertificateEditor.vue:220 #, fuzzy msgid "Leave blank will not change anything" msgstr "Leave blank for no change" @@ -972,7 +985,7 @@ msgstr "Location" msgid "Locations" msgstr "Locations" -#: src/views/certificate/CertificateEditor.vue:223 +#: src/views/certificate/CertificateEditor.vue:230 #, fuzzy msgid "Log" msgstr "Login" @@ -1029,7 +1042,7 @@ msgstr "Manage Sites" msgid "Manage Users" msgstr "Manage Users" -#: src/views/certificate/Certificate.vue:42 +#: src/views/certificate/Certificate.vue:43 #, fuzzy msgid "Managed Certificate" msgstr "Certificate is valid" @@ -1054,12 +1067,12 @@ msgstr "Advance Mode" #: src/components/ChatGPT/ChatGPT.vue:249 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:194 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:491 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:505 #, fuzzy msgid "Modify" msgstr "Modify Config" -#: src/routes/index.ts:144 src/views/certificate/CertificateEditor.vue:84 +#: src/routes/index.ts:144 src/views/certificate/CertificateEditor.vue:85 #, fuzzy msgid "Modify Certificate" msgstr "Certificate Status" @@ -1080,8 +1093,8 @@ msgstr "Single Directive" #: src/views/certificate/ACMEUser.vue:13 #: src/views/certificate/Certificate.vue:20 -#: src/views/certificate/CertificateEditor.vue:146 -#: src/views/certificate/DNSCredential.vue:10 src/views/config/config.ts:7 +#: src/views/certificate/CertificateEditor.vue:147 +#: src/views/certificate/DNSCredential.vue:11 src/views/config/config.ts:7 #: src/views/domain/cert/ChangeCert.vue:17 #: src/views/domain/components/RightSettings.vue:83 #: src/views/domain/components/SiteDuplicate.vue:133 @@ -1157,12 +1170,13 @@ msgstr "Saved successfully" #: src/components/ChatGPT/ChatGPT.vue:270 #: src/components/Notification/Notification.vue:82 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:507 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:521 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:535 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:549 #: src/views/domain/DomainList.vue:144 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:90 #: src/views/domain/ngx_conf/LocationEditor.vue:71 -#: src/views/notification/Notification.vue:68 +#: src/views/notification/Notification.vue:70 #: src/views/preference/BasicSettings.vue:101 #: src/views/stream/StreamList.vue:165 msgid "No" @@ -1172,7 +1186,7 @@ msgstr "No" msgid "Node Secret" msgstr "" -#: src/views/certificate/Certificate.vue:102 +#: src/views/certificate/Certificate.vue:107 msgid "Not After" msgstr "" @@ -1184,12 +1198,12 @@ msgstr "Not Found" msgid "Not Valid Before: %{date}" msgstr "Not Valid Before: %{date}" -#: src/views/certificate/DNSCredential.vue:45 +#: src/views/certificate/DNSCredential.vue:49 #: src/views/domain/cert/components/AutoCertStepOne.vue:45 msgid "Note" msgstr "" -#: src/views/notification/Notification.vue:60 +#: src/views/notification/Notification.vue:62 #, fuzzy msgid "Notification" msgstr "Certificate is valid" @@ -1222,8 +1236,9 @@ msgstr "" #: src/components/ChatGPT/ChatGPT.vue:271 #: src/components/Notification/Notification.vue:83 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:56 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:508 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:522 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:536 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:550 #: src/views/domain/cert/components/ObtainCert.vue:136 #: src/views/domain/components/Deploy.vue:20 #: src/views/domain/components/RightSettings.vue:50 @@ -1231,14 +1246,14 @@ msgstr "" #: src/views/domain/ngx_conf/NgxConfigEditor.vue:49 #: src/views/domain/ngx_conf/NgxServer.vue:83 #: src/views/domain/ngx_conf/NgxUpstream.vue:32 -#: src/views/notification/Notification.vue:69 +#: src/views/notification/Notification.vue:71 #: src/views/stream/components/Deploy.vue:20 #: src/views/stream/components/RightSettings.vue:50 #: src/views/stream/StreamList.vue:166 msgid "OK" msgstr "" -#: src/views/certificate/DNSCredential.vue:55 +#: src/views/certificate/DNSCredential.vue:59 msgid "Once the verification is complete, the records will be removed." msgstr "" @@ -1290,15 +1305,15 @@ msgstr "Password (*)" msgid "Path" msgstr "Path" -#: src/language/constants.ts:27 +#: src/language/constants.ts:28 msgid "Perform core upgrade error" msgstr "" -#: src/language/constants.ts:26 +#: src/language/constants.ts:27 msgid "Performing core upgrade" msgstr "" -#: src/views/certificate/DNSCredential.vue:49 +#: src/views/certificate/DNSCredential.vue:53 msgid "" "Please fill in the API authentication credentials provided by your DNS " "provider." @@ -1329,7 +1344,7 @@ msgstr "Please input your password!" msgid "Please input your username!" msgstr "Please input your username!" -#: src/views/certificate/DNSCredential.vue:58 +#: src/views/certificate/DNSCredential.vue:62 msgid "" "Please note that the unit of time configurations below are all in seconds." msgstr "" @@ -1364,7 +1379,7 @@ msgstr "" msgid "Project Team" msgstr "Project Team" -#: src/views/certificate/DNSCredential.vue:18 +#: src/views/certificate/DNSCredential.vue:19 msgid "Provider" msgstr "" @@ -1378,11 +1393,11 @@ msgstr "Reads" msgid "Receive" msgstr "Receive" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:530 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:544 msgid "Recover" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:179 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:193 #, fuzzy msgid "Recovered Successfully" msgstr "Saved successfully" @@ -1455,12 +1470,12 @@ msgstr "Username" msgid "Renew Certificate" msgstr "Certificate is valid" -#: src/language/constants.ts:34 +#: src/language/constants.ts:35 #, fuzzy msgid "Renew Certificate Error" msgstr "Certificate is valid" -#: src/language/constants.ts:33 +#: src/language/constants.ts:34 #, fuzzy msgid "Renew Certificate Success" msgstr "Certificate is valid" @@ -1471,11 +1486,11 @@ msgstr "Certificate is valid" msgid "Renew successfully" msgstr "Enabled successfully" -#: src/language/constants.ts:31 +#: src/language/constants.ts:32 msgid "Requested with wrong parameters" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:439 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:453 msgid "Reset" msgstr "" @@ -1497,7 +1512,7 @@ msgid "Running" msgstr "" #: src/components/ChatGPT/ChatGPT.vue:252 -#: src/views/certificate/CertificateEditor.vue:242 +#: src/views/certificate/CertificateEditor.vue:249 #: src/views/config/ConfigEdit.vue:96 src/views/domain/DomainEdit.vue:263 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:120 #: src/views/preference/Preference.vue:130 src/views/stream/StreamEdit.vue:254 @@ -1515,7 +1530,7 @@ msgstr "Save error %{msg}" #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:39 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:104 -#: src/views/certificate/CertificateEditor.vue:45 +#: src/views/certificate/CertificateEditor.vue:46 #: src/views/preference/Preference.vue:66 #, fuzzy msgid "Save successfully" @@ -1546,8 +1561,8 @@ msgstr "Send" #: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:46 #: src/components/StdDesign/StdDataDisplay/methods/sortable.ts:126 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:182 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:221 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:196 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:235 #: src/views/config/ConfigEdit.vue:40 src/views/domain/DomainList.vue:81 #: src/views/environment/Environment.vue:139 src/views/other/Install.vue:70 #: src/views/preference/Preference.vue:70 src/views/stream/StreamList.vue:113 @@ -1604,24 +1619,24 @@ msgstr "Sites List" msgid "Sites List" msgstr "Sites List" -#: src/views/certificate/CertificateEditor.vue:191 +#: src/views/certificate/CertificateEditor.vue:198 #, fuzzy msgid "SSL Certificate Content" msgstr "Certificate Status" -#: src/views/certificate/CertificateEditor.vue:204 +#: src/views/certificate/CertificateEditor.vue:211 #, fuzzy msgid "SSL Certificate Key Content" msgstr "Certificate Status" -#: src/views/certificate/Certificate.vue:75 -#: src/views/certificate/CertificateEditor.vue:176 +#: src/views/certificate/Certificate.vue:80 +#: src/views/certificate/CertificateEditor.vue:177 #, fuzzy msgid "SSL Certificate Key Path" msgstr "Certificate Status" -#: src/views/certificate/Certificate.vue:67 -#: src/views/certificate/CertificateEditor.vue:161 +#: src/views/certificate/Certificate.vue:72 +#: src/views/certificate/CertificateEditor.vue:162 #, fuzzy msgid "SSL Certificate Path" msgstr "Certificate Status" @@ -1637,7 +1652,7 @@ msgid "Stable" msgstr "Enabled" #: src/views/certificate/ACMEUser.vue:42 -#: src/views/certificate/Certificate.vue:83 src/views/domain/DomainList.vue:22 +#: src/views/certificate/Certificate.vue:88 src/views/domain/DomainList.vue:22 #: src/views/environment/Environment.vue:76 src/views/stream/StreamList.vue:22 msgid "Status" msgstr "Status" @@ -1673,6 +1688,42 @@ msgstr "" msgid "Switch to light theme" msgstr "" +#: src/views/certificate/Certificate.vue:42 +#, fuzzy +msgid "Sync Certificate" +msgstr "Certificate is valid" + +#: src/components/Notification/detailRender.ts:25 +#, fuzzy +msgid "" +"Sync Certificate %{cert_name} to %{env_name} failed, please upgrade the " +"remote Nginx UI to the latest version" +msgstr "Saved successfully" + +#: src/components/Notification/detailRender.ts:29 +#, fuzzy +msgid "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}" +msgstr "Saved successfully" + +#: src/components/Notification/detailRender.ts:17 +#, fuzzy +msgid "Sync Certificate %{cert_name} to %{env_name} successfully" +msgstr "Saved successfully" + +#: src/language/constants.ts:38 +#, fuzzy +msgid "Sync Certificate Error" +msgstr "Certificate is valid" + +#: src/language/constants.ts:37 +#, fuzzy +msgid "Sync Certificate Success" +msgstr "Certificate is valid" + +#: src/views/certificate/CertificateEditor.vue:191 +msgid "Sync to" +msgstr "" + #: src/routes/index.ts:248 msgid "System" msgstr "" @@ -1703,11 +1754,11 @@ msgstr "" msgid "The filename cannot contain the following characters: %{c}" msgstr "The filename cannot contain the following characters: %{c}" -#: src/views/certificate/CertificateEditor.vue:194 +#: src/views/certificate/CertificateEditor.vue:201 msgid "The input is not a SSL Certificate" msgstr "" -#: src/views/certificate/CertificateEditor.vue:207 +#: src/views/certificate/CertificateEditor.vue:214 #, fuzzy msgid "The input is not a SSL Certificate Key" msgstr "Certificate Status" @@ -1718,12 +1769,12 @@ msgid "" "dashes, and dots." msgstr "" -#: src/views/certificate/CertificateEditor.vue:165 +#: src/views/certificate/CertificateEditor.vue:166 #, fuzzy msgid "The path exists, but the file is not a certificate" msgstr "Certificate Status" -#: src/views/certificate/CertificateEditor.vue:180 +#: src/views/certificate/CertificateEditor.vue:181 msgid "The path exists, but the file is not a private key" msgstr "" @@ -1756,17 +1807,17 @@ msgstr "" msgid "The username or password is incorrect" msgstr "" -#: src/views/certificate/CertificateEditor.vue:101 +#: src/views/certificate/CertificateEditor.vue:102 msgid "This Auto Cert item is invalid, please remove it." msgstr "" -#: src/views/certificate/CertificateEditor.vue:91 +#: src/views/certificate/CertificateEditor.vue:92 msgid "This certificate is managed by Nginx UI" msgstr "" -#: src/views/certificate/CertificateEditor.vue:149 -#: src/views/certificate/CertificateEditor.vue:163 -#: src/views/certificate/CertificateEditor.vue:178 +#: src/views/certificate/CertificateEditor.vue:150 +#: src/views/certificate/CertificateEditor.vue:164 +#: src/views/certificate/CertificateEditor.vue:179 msgid "This field is required" msgstr "" @@ -1778,7 +1829,7 @@ msgstr "" msgid "Tips" msgstr "" -#: src/views/notification/Notification.vue:18 +#: src/views/notification/Notification.vue:19 msgid "Title" msgstr "" @@ -1799,12 +1850,12 @@ msgid "Trash" msgstr "" #: src/views/certificate/Certificate.vue:37 src/views/config/config.ts:12 -#: src/views/notification/Notification.vue:12 +#: src/views/notification/Notification.vue:13 msgid "Type" msgstr "" #: src/views/certificate/ACMEUser.vue:53 -#: src/views/certificate/DNSCredential.vue:23 src/views/config/config.ts:27 +#: src/views/certificate/DNSCredential.vue:27 src/views/config/config.ts:27 #: src/views/config/ConfigEdit.vue:121 #: src/views/domain/components/RightSettings.vue:86 #: src/views/domain/DomainList.vue:41 src/views/environment/Environment.vue:122 @@ -1823,7 +1874,7 @@ msgstr "Saved successfully" msgid "Upgrade" msgstr "" -#: src/language/constants.ts:28 +#: src/language/constants.ts:29 #, fuzzy msgid "Upgraded successfully" msgstr "Saved successfully" @@ -1858,11 +1909,11 @@ msgid "Username (*)" msgstr "Username (*)" #: src/views/certificate/ACMEUser.vue:87 -#: src/views/certificate/Certificate.vue:92 +#: src/views/certificate/Certificate.vue:97 msgid "Valid" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:477 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:491 #: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:103 msgid "View" msgstr "" @@ -1887,7 +1938,7 @@ msgstr "Basic Mode" msgid "Warning" msgstr "Warning" -#: src/views/certificate/DNSCredential.vue:52 +#: src/views/certificate/DNSCredential.vue:56 msgid "" "We will add one or more TXT records to the DNS records of your domain for " "ownership verification." diff --git a/app/src/language/es/app.po b/app/src/language/es/app.po index f3a5c7e2..4676fa38 100644 --- a/app/src/language/es/app.po +++ b/app/src/language/es/app.po @@ -29,10 +29,10 @@ msgid "ACME User" msgstr "Usuario" #: src/views/certificate/ACMEUser.vue:59 -#: src/views/certificate/Certificate.vue:108 -#: src/views/certificate/DNSCredential.vue:29 src/views/config/config.ts:34 +#: src/views/certificate/Certificate.vue:113 +#: src/views/certificate/DNSCredential.vue:33 src/views/config/config.ts:34 #: src/views/domain/DomainList.vue:47 src/views/environment/Environment.vue:129 -#: src/views/notification/Notification.vue:35 +#: src/views/notification/Notification.vue:37 #: src/views/stream/StreamList.vue:47 src/views/user/User.vue:43 msgid "Action" msgstr "Acción" @@ -98,7 +98,7 @@ msgid "Arch" msgstr "Arquitectura" #: src/components/Notification/Notification.vue:84 -#: src/views/notification/Notification.vue:70 +#: src/views/notification/Notification.vue:72 msgid "Are you sure you want to clear all notifications?" msgstr "¿Está seguro de que desea borrar todas las notificaciones?" @@ -106,7 +106,12 @@ msgstr "¿Está seguro de que desea borrar todas las notificaciones?" msgid "Are you sure you want to clear the record of chat?" msgstr "¿Está seguro de que desea borrar el registro del chat?" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:509 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:551 +#, fuzzy +msgid "Are you sure you want to delete this item permanently?" +msgstr "¿Está seguro de que quiere borrar?" + +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:523 #, fuzzy msgid "Are you sure you want to delete this item?" msgstr "¿Está seguro de que quiere borrar?" @@ -115,7 +120,7 @@ msgstr "¿Está seguro de que quiere borrar?" msgid "Are you sure you want to delete?" msgstr "¿Está seguro de que quiere borrar?" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:523 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:537 #, fuzzy msgid "Are you sure you want to recover this item?" msgstr "¿Está seguro de que quiere borrar esta directiva?" @@ -162,7 +167,7 @@ msgstr "Renovación automática deshabilitada por %{name}" msgid "Auto-renewal enabled for %{name}" msgstr "Renovación automática habilitada por %{name}" -#: src/views/certificate/CertificateEditor.vue:235 +#: src/views/certificate/CertificateEditor.vue:242 #: src/views/config/Config.vue:73 src/views/config/ConfigEdit.vue:87 #: src/views/domain/DomainEdit.vue:256 src/views/nginx_log/NginxLog.vue:168 #: src/views/stream/StreamEdit.vue:247 @@ -189,7 +194,7 @@ msgid "Basic Mode" msgstr "Modo Básico" #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:54 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:445 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:459 msgid "Batch Modify" msgstr "Modificar por lotes" @@ -233,12 +238,12 @@ msgstr "El certificado es válido" msgid "Certificate Renewal Interval" msgstr "El certificado es válido" -#: src/views/certificate/CertificateEditor.vue:127 +#: src/views/certificate/CertificateEditor.vue:128 #: src/views/domain/cert/Cert.vue:33 msgid "Certificate Status" msgstr "Estado del Certificado" -#: src/routes/index.ts:119 src/views/certificate/Certificate.vue:124 +#: src/routes/index.ts:119 src/views/certificate/Certificate.vue:129 msgid "Certificates" msgstr "Certificados" @@ -269,12 +274,12 @@ msgstr "Borrar las variables de entorno" #: src/components/ChatGPT/ChatGPT.vue:276 #: src/components/Notification/Notification.vue:89 -#: src/views/notification/Notification.vue:75 +#: src/views/notification/Notification.vue:77 msgid "Clear" msgstr "Borrar" #: src/components/Notification/Notification.vue:40 -#: src/views/notification/Notification.vue:44 +#: src/views/notification/Notification.vue:46 msgid "Cleared successfully" msgstr "Limpiado exitoso" @@ -340,7 +345,7 @@ msgstr "Crear" msgid "Create Another" msgstr "Crear otro" -#: src/views/notification/Notification.vue:29 src/views/user/User.vue:31 +#: src/views/notification/Notification.vue:31 src/views/user/User.vue:31 msgid "Created at" msgstr "Creado el" @@ -383,7 +388,7 @@ msgstr "Base de datos (Opcional, default: database)" msgid "Days" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:516 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:530 #: src/views/domain/DomainList.vue:155 #: src/views/domain/ngx_conf/NgxServer.vue:114 #: src/views/domain/ngx_conf/NgxUpstream.vue:126 @@ -391,6 +396,10 @@ msgstr "" msgid "Delete" msgstr "Eliminar" +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:558 +msgid "Delete Permanently" +msgstr "" + #: src/views/domain/DomainList.vue:78 msgid "Delete site: %{site_name}" msgstr "Eliminar sitio: %{site_name}" @@ -399,7 +408,7 @@ msgstr "Eliminar sitio: %{site_name}" msgid "Delete stream: %{stream_name}" msgstr "Eliminar stream: %{site_name}" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:171 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:185 msgid "Deleted successfully" msgstr "Borrado exitoso" @@ -430,7 +439,7 @@ msgstr "Desplegado con éxito" msgid "Description" msgstr "Descripción" -#: src/views/notification/Notification.vue:25 +#: src/views/notification/Notification.vue:26 msgid "Details" msgstr "Detalles" @@ -475,7 +484,7 @@ msgstr "Desactivado con éxito" msgid "Disk IO" msgstr "I/O del disco" -#: src/routes/index.ts:162 src/views/certificate/DNSCredential.vue:36 +#: src/routes/index.ts:162 src/views/certificate/DNSCredential.vue:40 msgid "DNS Credentials" msgstr "Credenciales de DNS" @@ -535,17 +544,17 @@ msgstr "Dominio" msgid "Domain Config Created Successfully" msgstr "Configuración de dominio creada con éxito" -#: src/views/certificate/CertificateEditor.vue:111 +#: src/views/certificate/CertificateEditor.vue:112 msgid "Domains list is empty, try to reopen Auto Cert for %{config}" msgstr "" "La lista de dominios está vacía, intente reabrir la certificación automática " "para %{config}" -#: src/language/constants.ts:25 +#: src/language/constants.ts:26 msgid "Download latest release error" msgstr "Error al descargar la última versión" -#: src/language/constants.ts:24 +#: src/language/constants.ts:25 msgid "Downloading latest release" msgstr "Descargando la última versión" @@ -666,6 +675,11 @@ msgstr "Encriptar sitio web con Let's Encrypt" msgid "Environment" msgstr "Entorno" +#: src/language/constants.ts:21 +#, fuzzy +msgid "Environment variables cleaned" +msgstr "Configuración de variables de entorno" + #: src/views/dashboard/Environments.vue:82 msgid "Environments" msgstr "Entornos" @@ -682,7 +696,7 @@ msgstr "Registros de acceso" msgid "Executable Path" msgstr "Ruta ejecutable" -#: src/views/certificate/Certificate.vue:96 +#: src/views/certificate/Certificate.vue:101 msgid "Expired" msgstr "Vencido" @@ -726,7 +740,7 @@ msgstr "" msgid "File" msgstr "Archivo" -#: src/language/constants.ts:30 +#: src/language/constants.ts:31 msgid "File exists" msgstr "El archivo existe" @@ -763,7 +777,7 @@ msgstr "Error de formato %{msg}" msgid "Format successfully" msgstr "Formateado correctamente" -#: src/views/certificate/Certificate.vue:43 +#: src/views/certificate/Certificate.vue:44 msgid "General Certificate" msgstr "Certificado General" @@ -811,11 +825,11 @@ msgstr "HTTP01" msgid "If left blank, the default CA Dir will be used." msgstr "" -#: src/views/certificate/Certificate.vue:131 +#: src/views/certificate/Certificate.vue:136 msgid "Import" msgstr "Importar" -#: src/routes/index.ts:153 src/views/certificate/CertificateEditor.vue:84 +#: src/routes/index.ts:153 src/views/certificate/CertificateEditor.vue:85 msgid "Import Certificate" msgstr "Importar Certificado" @@ -823,11 +837,11 @@ msgstr "Importar Certificado" msgid "Info" msgstr "Información" -#: src/language/constants.ts:23 +#: src/language/constants.ts:24 msgid "Initial core upgrader error" msgstr "Error de actualización de kernel inicial" -#: src/language/constants.ts:22 +#: src/language/constants.ts:23 msgid "Initialing core upgrader" msgstr "Inicializando la actualización del kernel" @@ -852,7 +866,7 @@ msgstr "" msgid "Invalid" msgstr "Válido" -#: src/views/certificate/Certificate.vue:139 +#: src/views/certificate/Certificate.vue:144 msgid "Issue wildcard certificate" msgstr "Obtener certificado comodín" @@ -868,7 +882,7 @@ msgstr "Certificado emitido con éxito" msgid "Jwt Secret" msgstr "Secreto Jwt" -#: src/views/certificate/Certificate.vue:61 +#: src/views/certificate/Certificate.vue:66 #: src/views/certificate/WildcardCertificate.vue:79 #: src/views/domain/cert/components/AutoCertStepOne.vue:80 #, fuzzy @@ -887,8 +901,8 @@ msgstr "Para no modificar dejar en blanco" msgid "Leave blank for the default: https://api.openai.com/" msgstr "Dejar en blanco para el valor predeterminado: https://api.openai.com/" -#: src/views/certificate/CertificateEditor.vue:200 -#: src/views/certificate/CertificateEditor.vue:213 +#: src/views/certificate/CertificateEditor.vue:207 +#: src/views/certificate/CertificateEditor.vue:220 msgid "Leave blank will not change anything" msgstr "Dejarlo en blanco no cambiará nada" @@ -931,7 +945,7 @@ msgstr "Ubicación" msgid "Locations" msgstr "Ubicaciones" -#: src/views/certificate/CertificateEditor.vue:223 +#: src/views/certificate/CertificateEditor.vue:230 msgid "Log" msgstr "Registro" @@ -985,7 +999,7 @@ msgstr "Administrar Transmisiones" msgid "Manage Users" msgstr "Administrar usuarios" -#: src/views/certificate/Certificate.vue:42 +#: src/views/certificate/Certificate.vue:43 msgid "Managed Certificate" msgstr "Certificado Administrado" @@ -1009,11 +1023,11 @@ msgstr "Modo de ejecución" #: src/components/ChatGPT/ChatGPT.vue:249 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:194 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:491 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:505 msgid "Modify" msgstr "Modificar" -#: src/routes/index.ts:144 src/views/certificate/CertificateEditor.vue:84 +#: src/routes/index.ts:144 src/views/certificate/CertificateEditor.vue:85 msgid "Modify Certificate" msgstr "Modificar Certificado" @@ -1032,8 +1046,8 @@ msgstr "Directiva multilínea" #: src/views/certificate/ACMEUser.vue:13 #: src/views/certificate/Certificate.vue:20 -#: src/views/certificate/CertificateEditor.vue:146 -#: src/views/certificate/DNSCredential.vue:10 src/views/config/config.ts:7 +#: src/views/certificate/CertificateEditor.vue:147 +#: src/views/certificate/DNSCredential.vue:11 src/views/config/config.ts:7 #: src/views/domain/cert/ChangeCert.vue:17 #: src/views/domain/components/RightSettings.vue:83 #: src/views/domain/components/SiteDuplicate.vue:133 @@ -1106,12 +1120,13 @@ msgstr "Nginx reiniciado con éxito" #: src/components/ChatGPT/ChatGPT.vue:270 #: src/components/Notification/Notification.vue:82 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:507 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:521 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:535 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:549 #: src/views/domain/DomainList.vue:144 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:90 #: src/views/domain/ngx_conf/LocationEditor.vue:71 -#: src/views/notification/Notification.vue:68 +#: src/views/notification/Notification.vue:70 #: src/views/preference/BasicSettings.vue:101 #: src/views/stream/StreamList.vue:165 msgid "No" @@ -1121,7 +1136,7 @@ msgstr "No" msgid "Node Secret" msgstr "Secreto del nodo" -#: src/views/certificate/Certificate.vue:102 +#: src/views/certificate/Certificate.vue:107 msgid "Not After" msgstr "No después de" @@ -1133,12 +1148,12 @@ msgstr "No encontrado" msgid "Not Valid Before: %{date}" msgstr "No válido antes: %{date}" -#: src/views/certificate/DNSCredential.vue:45 +#: src/views/certificate/DNSCredential.vue:49 #: src/views/domain/cert/components/AutoCertStepOne.vue:45 msgid "Note" msgstr "Nota" -#: src/views/notification/Notification.vue:60 +#: src/views/notification/Notification.vue:62 msgid "Notification" msgstr "Notificación" @@ -1168,8 +1183,9 @@ msgstr "" #: src/components/ChatGPT/ChatGPT.vue:271 #: src/components/Notification/Notification.vue:83 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:56 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:508 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:522 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:536 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:550 #: src/views/domain/cert/components/ObtainCert.vue:136 #: src/views/domain/components/Deploy.vue:20 #: src/views/domain/components/RightSettings.vue:50 @@ -1177,14 +1193,14 @@ msgstr "" #: src/views/domain/ngx_conf/NgxConfigEditor.vue:49 #: src/views/domain/ngx_conf/NgxServer.vue:83 #: src/views/domain/ngx_conf/NgxUpstream.vue:32 -#: src/views/notification/Notification.vue:69 +#: src/views/notification/Notification.vue:71 #: src/views/stream/components/Deploy.vue:20 #: src/views/stream/components/RightSettings.vue:50 #: src/views/stream/StreamList.vue:166 msgid "OK" msgstr "OK" -#: src/views/certificate/DNSCredential.vue:55 +#: src/views/certificate/DNSCredential.vue:59 msgid "Once the verification is complete, the records will be removed." msgstr "Una vez que se complete la verificación, los registros se eliminarán." @@ -1235,15 +1251,15 @@ msgstr "Contraseña (*)" msgid "Path" msgstr "Ruta" -#: src/language/constants.ts:27 +#: src/language/constants.ts:28 msgid "Perform core upgrade error" msgstr "Error al ejecutar la actualización del kernel" -#: src/language/constants.ts:26 +#: src/language/constants.ts:27 msgid "Performing core upgrade" msgstr "Realizando la actualizaciónd el kernel" -#: src/views/certificate/DNSCredential.vue:49 +#: src/views/certificate/DNSCredential.vue:53 msgid "" "Please fill in the API authentication credentials provided by your DNS " "provider." @@ -1281,7 +1297,7 @@ msgstr "¡Por favor ingrese su contraseña!" msgid "Please input your username!" msgstr "¡Por favor ingrese su nombre de usuario!" -#: src/views/certificate/DNSCredential.vue:58 +#: src/views/certificate/DNSCredential.vue:62 msgid "" "Please note that the unit of time configurations below are all in seconds." msgstr "" @@ -1317,7 +1333,7 @@ msgstr "Prohibir la eliminación del usuario predeterminado" msgid "Project Team" msgstr "Grupo del proyecto" -#: src/views/certificate/DNSCredential.vue:18 +#: src/views/certificate/DNSCredential.vue:19 msgid "Provider" msgstr "Proveedor" @@ -1331,11 +1347,11 @@ msgstr "Lecturas" msgid "Receive" msgstr "Recibido" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:530 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:544 msgid "Recover" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:179 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:193 #, fuzzy msgid "Recovered Successfully" msgstr "Eliminado con éxito" @@ -1406,11 +1422,11 @@ msgstr "Renombrar" msgid "Renew Certificate" msgstr "Renovar Certificado" -#: src/language/constants.ts:34 +#: src/language/constants.ts:35 msgid "Renew Certificate Error" msgstr "Error al renovar el Certificado" -#: src/language/constants.ts:33 +#: src/language/constants.ts:34 msgid "Renew Certificate Success" msgstr "Renovado de Certificado exitoso" @@ -1419,11 +1435,11 @@ msgstr "Renovado de Certificado exitoso" msgid "Renew successfully" msgstr "Renovado con éxito" -#: src/language/constants.ts:31 +#: src/language/constants.ts:32 msgid "Requested with wrong parameters" msgstr "Pedido con parámetros incorrectos" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:439 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:453 msgid "Reset" msgstr "Limpiar" @@ -1444,7 +1460,7 @@ msgid "Running" msgstr "Corriendo" #: src/components/ChatGPT/ChatGPT.vue:252 -#: src/views/certificate/CertificateEditor.vue:242 +#: src/views/certificate/CertificateEditor.vue:249 #: src/views/config/ConfigEdit.vue:96 src/views/domain/DomainEdit.vue:263 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:120 #: src/views/preference/Preference.vue:130 src/views/stream/StreamEdit.vue:254 @@ -1462,7 +1478,7 @@ msgstr "Error al guardar %{msg}" #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:39 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:104 -#: src/views/certificate/CertificateEditor.vue:45 +#: src/views/certificate/CertificateEditor.vue:46 #: src/views/preference/Preference.vue:66 msgid "Save successfully" msgstr "Guardado con éxito" @@ -1492,8 +1508,8 @@ msgstr "Enviado" #: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:46 #: src/components/StdDesign/StdDataDisplay/methods/sortable.ts:126 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:182 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:221 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:196 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:235 #: src/views/config/ConfigEdit.vue:40 src/views/domain/DomainList.vue:81 #: src/views/environment/Environment.vue:139 src/views/other/Install.vue:70 #: src/views/preference/Preference.vue:70 src/views/stream/StreamList.vue:113 @@ -1549,21 +1565,21 @@ msgstr "Registros del sitio" msgid "Sites List" msgstr "Lista de sitios" -#: src/views/certificate/CertificateEditor.vue:191 +#: src/views/certificate/CertificateEditor.vue:198 msgid "SSL Certificate Content" msgstr "Contenido de certificado SSL" -#: src/views/certificate/CertificateEditor.vue:204 +#: src/views/certificate/CertificateEditor.vue:211 msgid "SSL Certificate Key Content" msgstr "Contenido de la llave del certificado SSL" -#: src/views/certificate/Certificate.vue:75 -#: src/views/certificate/CertificateEditor.vue:176 +#: src/views/certificate/Certificate.vue:80 +#: src/views/certificate/CertificateEditor.vue:177 msgid "SSL Certificate Key Path" msgstr "Ruta de la llave del certificado SSL" -#: src/views/certificate/Certificate.vue:67 -#: src/views/certificate/CertificateEditor.vue:161 +#: src/views/certificate/Certificate.vue:72 +#: src/views/certificate/CertificateEditor.vue:162 msgid "SSL Certificate Path" msgstr "Ruta del certificado SSL" @@ -1576,7 +1592,7 @@ msgid "Stable" msgstr "Estable" #: src/views/certificate/ACMEUser.vue:42 -#: src/views/certificate/Certificate.vue:83 src/views/domain/DomainList.vue:22 +#: src/views/certificate/Certificate.vue:88 src/views/domain/DomainList.vue:22 #: src/views/environment/Environment.vue:76 src/views/stream/StreamList.vue:22 msgid "Status" msgstr "Estado" @@ -1611,6 +1627,42 @@ msgstr "Cambiar al tema oscuro" msgid "Switch to light theme" msgstr "Cambiar al tema claro" +#: src/views/certificate/Certificate.vue:42 +#, fuzzy +msgid "Sync Certificate" +msgstr "Renovar Certificado" + +#: src/components/Notification/detailRender.ts:25 +#, fuzzy +msgid "" +"Sync Certificate %{cert_name} to %{env_name} failed, please upgrade the " +"remote Nginx UI to the latest version" +msgstr "Duplicado con éxito de %{conf_name} a %{node_name}" + +#: src/components/Notification/detailRender.ts:29 +#, fuzzy +msgid "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}" +msgstr "Duplicado con éxito de %{conf_name} a %{node_name}" + +#: src/components/Notification/detailRender.ts:17 +#, fuzzy +msgid "Sync Certificate %{cert_name} to %{env_name} successfully" +msgstr "Duplicado con éxito de %{conf_name} a %{node_name}" + +#: src/language/constants.ts:38 +#, fuzzy +msgid "Sync Certificate Error" +msgstr "Error al renovar el Certificado" + +#: src/language/constants.ts:37 +#, fuzzy +msgid "Sync Certificate Success" +msgstr "Renovado de Certificado exitoso" + +#: src/views/certificate/CertificateEditor.vue:191 +msgid "Sync to" +msgstr "" + #: src/routes/index.ts:248 msgid "System" msgstr "Sistema" @@ -1641,11 +1693,11 @@ msgid "The filename cannot contain the following characters: %{c}" msgstr "" "El nombre del archivo no puede contener los siguientes caracteres: %{c}" -#: src/views/certificate/CertificateEditor.vue:194 +#: src/views/certificate/CertificateEditor.vue:201 msgid "The input is not a SSL Certificate" msgstr "La entrada no es un Certificado SSL" -#: src/views/certificate/CertificateEditor.vue:207 +#: src/views/certificate/CertificateEditor.vue:214 msgid "The input is not a SSL Certificate Key" msgstr "La entrada no es una clave de certificado SSL" @@ -1655,12 +1707,12 @@ msgid "" "dashes, and dots." msgstr "" -#: src/views/certificate/CertificateEditor.vue:165 +#: src/views/certificate/CertificateEditor.vue:166 #, fuzzy msgid "The path exists, but the file is not a certificate" msgstr "La ruta existe, pero el archivo no es una clave privada" -#: src/views/certificate/CertificateEditor.vue:180 +#: src/views/certificate/CertificateEditor.vue:181 msgid "The path exists, but the file is not a private key" msgstr "La ruta existe, pero el archivo no es una clave privada" @@ -1694,17 +1746,17 @@ msgstr "La URL no es válida" msgid "The username or password is incorrect" msgstr "El nombre de usuario o contraseña son incorrectos" -#: src/views/certificate/CertificateEditor.vue:101 +#: src/views/certificate/CertificateEditor.vue:102 msgid "This Auto Cert item is invalid, please remove it." msgstr "Este elemento de Auto Cert es inválido, elimínelo por favor." -#: src/views/certificate/CertificateEditor.vue:91 +#: src/views/certificate/CertificateEditor.vue:92 msgid "This certificate is managed by Nginx UI" msgstr "Este certificado es administrado por Nginx UI" -#: src/views/certificate/CertificateEditor.vue:149 -#: src/views/certificate/CertificateEditor.vue:163 -#: src/views/certificate/CertificateEditor.vue:178 +#: src/views/certificate/CertificateEditor.vue:150 +#: src/views/certificate/CertificateEditor.vue:164 +#: src/views/certificate/CertificateEditor.vue:179 msgid "This field is required" msgstr "Este campo es obligatorio" @@ -1716,7 +1768,7 @@ msgstr "Este campo no debe estar vacío" msgid "Tips" msgstr "" -#: src/views/notification/Notification.vue:18 +#: src/views/notification/Notification.vue:19 msgid "Title" msgstr "Título" @@ -1741,12 +1793,12 @@ msgid "Trash" msgstr "" #: src/views/certificate/Certificate.vue:37 src/views/config/config.ts:12 -#: src/views/notification/Notification.vue:12 +#: src/views/notification/Notification.vue:13 msgid "Type" msgstr "Tipo" #: src/views/certificate/ACMEUser.vue:53 -#: src/views/certificate/DNSCredential.vue:23 src/views/config/config.ts:27 +#: src/views/certificate/DNSCredential.vue:27 src/views/config/config.ts:27 #: src/views/config/ConfigEdit.vue:121 #: src/views/domain/components/RightSettings.vue:86 #: src/views/domain/DomainList.vue:41 src/views/environment/Environment.vue:122 @@ -1764,7 +1816,7 @@ msgstr "Actualización exitosa" msgid "Upgrade" msgstr "Actualizar" -#: src/language/constants.ts:28 +#: src/language/constants.ts:29 msgid "Upgraded successfully" msgstr "Actualización exitosa" @@ -1797,11 +1849,11 @@ msgid "Username (*)" msgstr "Nombre de usuario (*)" #: src/views/certificate/ACMEUser.vue:87 -#: src/views/certificate/Certificate.vue:92 +#: src/views/certificate/Certificate.vue:97 msgid "Valid" msgstr "Válido" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:477 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:491 #: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:103 msgid "View" msgstr "Ver" @@ -1826,7 +1878,7 @@ msgstr "Modo Básico" msgid "Warning" msgstr "Advertencia" -#: src/views/certificate/DNSCredential.vue:52 +#: src/views/certificate/DNSCredential.vue:56 msgid "" "We will add one or more TXT records to the DNS records of your domain for " "ownership verification." diff --git a/app/src/language/fr_FR/app.po b/app/src/language/fr_FR/app.po index ce187ea0..659300a8 100644 --- a/app/src/language/fr_FR/app.po +++ b/app/src/language/fr_FR/app.po @@ -26,10 +26,10 @@ msgid "ACME User" msgstr "Nom d'utilisateur" #: src/views/certificate/ACMEUser.vue:59 -#: src/views/certificate/Certificate.vue:108 -#: src/views/certificate/DNSCredential.vue:29 src/views/config/config.ts:34 +#: src/views/certificate/Certificate.vue:113 +#: src/views/certificate/DNSCredential.vue:33 src/views/config/config.ts:34 #: src/views/domain/DomainList.vue:47 src/views/environment/Environment.vue:129 -#: src/views/notification/Notification.vue:35 +#: src/views/notification/Notification.vue:37 #: src/views/stream/StreamList.vue:47 src/views/user/User.vue:43 msgid "Action" msgstr "Action" @@ -99,7 +99,7 @@ msgid "Arch" msgstr "Arch" #: src/components/Notification/Notification.vue:84 -#: src/views/notification/Notification.vue:70 +#: src/views/notification/Notification.vue:72 #, fuzzy msgid "Are you sure you want to clear all notifications?" msgstr "Voulez-vous vraiment effacer l'historique du chat ?" @@ -108,7 +108,12 @@ msgstr "Voulez-vous vraiment effacer l'historique du chat ?" msgid "Are you sure you want to clear the record of chat?" msgstr "Voulez-vous vraiment effacer l'historique du chat ?" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:509 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:551 +#, fuzzy +msgid "Are you sure you want to delete this item permanently?" +msgstr "Etes-vous sûr que vous voulez supprimer ?" + +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:523 #, fuzzy msgid "Are you sure you want to delete this item?" msgstr "Etes-vous sûr que vous voulez supprimer ?" @@ -117,7 +122,7 @@ msgstr "Etes-vous sûr que vous voulez supprimer ?" msgid "Are you sure you want to delete?" msgstr "Etes-vous sûr que vous voulez supprimer ?" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:523 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:537 #, fuzzy msgid "Are you sure you want to recover this item?" msgstr "Voulez-vous vraiment supprimer cette directive ?" @@ -165,7 +170,7 @@ msgstr "Renouvellement automatique désactivé pour %{name}" msgid "Auto-renewal enabled for %{name}" msgstr "Renouvellement automatique activé pour %{name}" -#: src/views/certificate/CertificateEditor.vue:235 +#: src/views/certificate/CertificateEditor.vue:242 #: src/views/config/Config.vue:73 src/views/config/ConfigEdit.vue:87 #: src/views/domain/DomainEdit.vue:256 src/views/nginx_log/NginxLog.vue:168 #: src/views/stream/StreamEdit.vue:247 @@ -192,7 +197,7 @@ msgid "Basic Mode" msgstr "Mode simple" #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:54 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:445 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:459 #, fuzzy msgid "Batch Modify" msgstr "Batch Modify" @@ -237,12 +242,12 @@ msgstr "Le certificat est valide" msgid "Certificate Renewal Interval" msgstr "Le certificat est valide" -#: src/views/certificate/CertificateEditor.vue:127 +#: src/views/certificate/CertificateEditor.vue:128 #: src/views/domain/cert/Cert.vue:33 msgid "Certificate Status" msgstr "État du certificat" -#: src/routes/index.ts:119 src/views/certificate/Certificate.vue:124 +#: src/routes/index.ts:119 src/views/certificate/Certificate.vue:129 #, fuzzy msgid "Certificates" msgstr "État du certificat" @@ -275,12 +280,12 @@ msgstr "Nettoyage des variables d'environnement" #: src/components/ChatGPT/ChatGPT.vue:276 #: src/components/Notification/Notification.vue:89 -#: src/views/notification/Notification.vue:75 +#: src/views/notification/Notification.vue:77 msgid "Clear" msgstr "Effacer" #: src/components/Notification/Notification.vue:40 -#: src/views/notification/Notification.vue:44 +#: src/views/notification/Notification.vue:46 #, fuzzy msgid "Cleared successfully" msgstr "Désactivé avec succès" @@ -348,7 +353,7 @@ msgstr "Créé le" msgid "Create Another" msgstr "Créer un autre" -#: src/views/notification/Notification.vue:29 src/views/user/User.vue:31 +#: src/views/notification/Notification.vue:31 src/views/user/User.vue:31 msgid "Created at" msgstr "Créé le" @@ -391,7 +396,7 @@ msgstr "Base de données (Facultatif, par défaut : database)" msgid "Days" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:516 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:530 #: src/views/domain/DomainList.vue:155 #: src/views/domain/ngx_conf/NgxServer.vue:114 #: src/views/domain/ngx_conf/NgxUpstream.vue:126 @@ -399,6 +404,10 @@ msgstr "" msgid "Delete" msgstr "Supprimer" +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:558 +msgid "Delete Permanently" +msgstr "" + #: src/views/domain/DomainList.vue:78 msgid "Delete site: %{site_name}" msgstr "Supprimer le site : %{site_name}" @@ -408,7 +417,7 @@ msgstr "Supprimer le site : %{site_name}" msgid "Delete stream: %{stream_name}" msgstr "Supprimer le site : %{site_name}" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:171 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:185 #, fuzzy msgid "Deleted successfully" msgstr "Désactivé avec succès" @@ -441,7 +450,7 @@ msgstr "Sauvegarde réussie" msgid "Description" msgstr "Description" -#: src/views/notification/Notification.vue:25 +#: src/views/notification/Notification.vue:26 msgid "Details" msgstr "" @@ -488,7 +497,7 @@ msgstr "Désactivé avec succès" msgid "Disk IO" msgstr "E/S disque" -#: src/routes/index.ts:162 src/views/certificate/DNSCredential.vue:36 +#: src/routes/index.ts:162 src/views/certificate/DNSCredential.vue:40 msgid "DNS Credentials" msgstr "Identifiants DNS" @@ -552,18 +561,18 @@ msgstr "" msgid "Domain Config Created Successfully" msgstr "La configuration du domaine a été créée avec succès" -#: src/views/certificate/CertificateEditor.vue:111 +#: src/views/certificate/CertificateEditor.vue:112 #, fuzzy msgid "Domains list is empty, try to reopen Auto Cert for %{config}" msgstr "" "La liste des domaines est vide, essayez de rouvrir la certification " "automatique pour %{config}" -#: src/language/constants.ts:25 +#: src/language/constants.ts:26 msgid "Download latest release error" msgstr "Erreur de téléchargement de la dernière version" -#: src/language/constants.ts:24 +#: src/language/constants.ts:25 msgid "Downloading latest release" msgstr "Téléchargement de la dernière version" @@ -691,6 +700,11 @@ msgstr "Crypter le site Web avec Let's Encrypt" msgid "Environment" msgstr "" +#: src/language/constants.ts:21 +#, fuzzy +msgid "Environment variables cleaned" +msgstr "Définition des variables d'environnement" + #: src/views/dashboard/Environments.vue:82 #, fuzzy msgid "Environments" @@ -708,7 +722,7 @@ msgstr "Journaux d'erreurs" msgid "Executable Path" msgstr "Chemin exécutable" -#: src/views/certificate/Certificate.vue:96 +#: src/views/certificate/Certificate.vue:101 msgid "Expired" msgstr "" @@ -754,7 +768,7 @@ msgstr "" msgid "File" msgstr "Fichier" -#: src/language/constants.ts:30 +#: src/language/constants.ts:31 msgid "File exists" msgstr "Le fichier existe" @@ -793,7 +807,7 @@ msgstr "Erreur de format %{msg}" msgid "Format successfully" msgstr "Formaté avec succès" -#: src/views/certificate/Certificate.vue:43 +#: src/views/certificate/Certificate.vue:44 #, fuzzy msgid "General Certificate" msgstr "Changer de certificat" @@ -842,12 +856,12 @@ msgstr "HTTP01" msgid "If left blank, the default CA Dir will be used." msgstr "" -#: src/views/certificate/Certificate.vue:131 +#: src/views/certificate/Certificate.vue:136 #, fuzzy msgid "Import" msgstr "Exporter" -#: src/routes/index.ts:153 src/views/certificate/CertificateEditor.vue:84 +#: src/routes/index.ts:153 src/views/certificate/CertificateEditor.vue:85 #, fuzzy msgid "Import Certificate" msgstr "État du certificat" @@ -856,11 +870,11 @@ msgstr "État du certificat" msgid "Info" msgstr "" -#: src/language/constants.ts:23 +#: src/language/constants.ts:24 msgid "Initial core upgrader error" msgstr "Erreur du programme de mise à niveau initial du core" -#: src/language/constants.ts:22 +#: src/language/constants.ts:23 msgid "Initialing core upgrader" msgstr "Initialisation du programme de mise à niveau du core" @@ -884,7 +898,7 @@ msgstr "" msgid "Invalid" msgstr "" -#: src/views/certificate/Certificate.vue:139 +#: src/views/certificate/Certificate.vue:144 #, fuzzy msgid "Issue wildcard certificate" msgstr "Obtenir un certificat" @@ -902,7 +916,7 @@ msgstr "Certificat délivré avec succès" msgid "Jwt Secret" msgstr "Secret Jwt" -#: src/views/certificate/Certificate.vue:61 +#: src/views/certificate/Certificate.vue:66 #: src/views/certificate/WildcardCertificate.vue:79 #: src/views/domain/cert/components/AutoCertStepOne.vue:80 #, fuzzy @@ -921,8 +935,8 @@ msgstr "Laisser vide pour aucun changement" msgid "Leave blank for the default: https://api.openai.com/" msgstr "Laissez vide pour la valeur par défaut : https://api.openai.com/" -#: src/views/certificate/CertificateEditor.vue:200 -#: src/views/certificate/CertificateEditor.vue:213 +#: src/views/certificate/CertificateEditor.vue:207 +#: src/views/certificate/CertificateEditor.vue:220 #, fuzzy msgid "Leave blank will not change anything" msgstr "Laisser vide pour aucun changement" @@ -971,7 +985,7 @@ msgstr "Localisation" msgid "Locations" msgstr "Localisations" -#: src/views/certificate/CertificateEditor.vue:223 +#: src/views/certificate/CertificateEditor.vue:230 #, fuzzy msgid "Log" msgstr "Connexion" @@ -1028,7 +1042,7 @@ msgstr "Gérer les sites" msgid "Manage Users" msgstr "Gérer les utilisateurs" -#: src/views/certificate/Certificate.vue:42 +#: src/views/certificate/Certificate.vue:43 #, fuzzy msgid "Managed Certificate" msgstr "Changer de certificat" @@ -1053,11 +1067,11 @@ msgstr "Mode d'exécution" #: src/components/ChatGPT/ChatGPT.vue:249 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:194 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:491 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:505 msgid "Modify" msgstr "Modifier" -#: src/routes/index.ts:144 src/views/certificate/CertificateEditor.vue:84 +#: src/routes/index.ts:144 src/views/certificate/CertificateEditor.vue:85 #, fuzzy msgid "Modify Certificate" msgstr "État du certificat" @@ -1077,8 +1091,8 @@ msgstr "Directive multiligne" #: src/views/certificate/ACMEUser.vue:13 #: src/views/certificate/Certificate.vue:20 -#: src/views/certificate/CertificateEditor.vue:146 -#: src/views/certificate/DNSCredential.vue:10 src/views/config/config.ts:7 +#: src/views/certificate/CertificateEditor.vue:147 +#: src/views/certificate/DNSCredential.vue:11 src/views/config/config.ts:7 #: src/views/domain/cert/ChangeCert.vue:17 #: src/views/domain/components/RightSettings.vue:83 #: src/views/domain/components/SiteDuplicate.vue:133 @@ -1152,12 +1166,13 @@ msgstr "Nginx a redémarré avec succès" #: src/components/ChatGPT/ChatGPT.vue:270 #: src/components/Notification/Notification.vue:82 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:507 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:521 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:535 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:549 #: src/views/domain/DomainList.vue:144 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:90 #: src/views/domain/ngx_conf/LocationEditor.vue:71 -#: src/views/notification/Notification.vue:68 +#: src/views/notification/Notification.vue:70 #: src/views/preference/BasicSettings.vue:101 #: src/views/stream/StreamList.vue:165 msgid "No" @@ -1168,7 +1183,7 @@ msgstr "Non" msgid "Node Secret" msgstr "Secret Jwt" -#: src/views/certificate/Certificate.vue:102 +#: src/views/certificate/Certificate.vue:107 msgid "Not After" msgstr "" @@ -1180,12 +1195,12 @@ msgstr "Introuvable" msgid "Not Valid Before: %{date}" msgstr "Non valide avant : %{date}" -#: src/views/certificate/DNSCredential.vue:45 +#: src/views/certificate/DNSCredential.vue:49 #: src/views/domain/cert/components/AutoCertStepOne.vue:45 msgid "Note" msgstr "Note" -#: src/views/notification/Notification.vue:60 +#: src/views/notification/Notification.vue:62 #, fuzzy msgid "Notification" msgstr "Certification" @@ -1217,8 +1232,9 @@ msgstr "" #: src/components/ChatGPT/ChatGPT.vue:271 #: src/components/Notification/Notification.vue:83 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:56 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:508 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:522 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:536 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:550 #: src/views/domain/cert/components/ObtainCert.vue:136 #: src/views/domain/components/Deploy.vue:20 #: src/views/domain/components/RightSettings.vue:50 @@ -1226,14 +1242,14 @@ msgstr "" #: src/views/domain/ngx_conf/NgxConfigEditor.vue:49 #: src/views/domain/ngx_conf/NgxServer.vue:83 #: src/views/domain/ngx_conf/NgxUpstream.vue:32 -#: src/views/notification/Notification.vue:69 +#: src/views/notification/Notification.vue:71 #: src/views/stream/components/Deploy.vue:20 #: src/views/stream/components/RightSettings.vue:50 #: src/views/stream/StreamList.vue:166 msgid "OK" msgstr "OK" -#: src/views/certificate/DNSCredential.vue:55 +#: src/views/certificate/DNSCredential.vue:59 msgid "Once the verification is complete, the records will be removed." msgstr "" @@ -1284,15 +1300,15 @@ msgstr "Mot de passe (*)" msgid "Path" msgstr "Chemin" -#: src/language/constants.ts:27 +#: src/language/constants.ts:28 msgid "Perform core upgrade error" msgstr "Erreur lors de la mise a niveau du core" -#: src/language/constants.ts:26 +#: src/language/constants.ts:27 msgid "Performing core upgrade" msgstr "Exécution de la mise à niveau du core" -#: src/views/certificate/DNSCredential.vue:49 +#: src/views/certificate/DNSCredential.vue:53 msgid "" "Please fill in the API authentication credentials provided by your DNS " "provider." @@ -1330,7 +1346,7 @@ msgstr "Veuillez saisir votre mot de passe !" msgid "Please input your username!" msgstr "Veuillez saisir votre nom d'utilisateur !" -#: src/views/certificate/DNSCredential.vue:58 +#: src/views/certificate/DNSCredential.vue:62 msgid "" "Please note that the unit of time configurations below are all in seconds." msgstr "" @@ -1365,7 +1381,7 @@ msgstr "Interdire la suppression de l'utilisateur par défaut" msgid "Project Team" msgstr "Groupe de projet" -#: src/views/certificate/DNSCredential.vue:18 +#: src/views/certificate/DNSCredential.vue:19 msgid "Provider" msgstr "Fournisseur" @@ -1381,11 +1397,11 @@ msgstr "Lectures" msgid "Receive" msgstr "Recevoir" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:530 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:544 msgid "Recover" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:179 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:193 #, fuzzy msgid "Recovered Successfully" msgstr "Enregistré avec succès" @@ -1459,12 +1475,12 @@ msgstr "Nom d'utilisateur" msgid "Renew Certificate" msgstr "Changer de certificat" -#: src/language/constants.ts:34 +#: src/language/constants.ts:35 #, fuzzy msgid "Renew Certificate Error" msgstr "Changer de certificat" -#: src/language/constants.ts:33 +#: src/language/constants.ts:34 #, fuzzy msgid "Renew Certificate Success" msgstr "Changer de certificat" @@ -1475,11 +1491,11 @@ msgstr "Changer de certificat" msgid "Renew successfully" msgstr "Activé avec succès" -#: src/language/constants.ts:31 +#: src/language/constants.ts:32 msgid "Requested with wrong parameters" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:439 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:453 msgid "Reset" msgstr "Réinitialiser" @@ -1500,7 +1516,7 @@ msgid "Running" msgstr "En cours d'éxécution" #: src/components/ChatGPT/ChatGPT.vue:252 -#: src/views/certificate/CertificateEditor.vue:242 +#: src/views/certificate/CertificateEditor.vue:249 #: src/views/config/ConfigEdit.vue:96 src/views/domain/DomainEdit.vue:263 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:120 #: src/views/preference/Preference.vue:130 src/views/stream/StreamEdit.vue:254 @@ -1518,7 +1534,7 @@ msgstr "Enregistrer l'erreur %{msg}" #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:39 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:104 -#: src/views/certificate/CertificateEditor.vue:45 +#: src/views/certificate/CertificateEditor.vue:46 #: src/views/preference/Preference.vue:66 msgid "Save successfully" msgstr "Sauvegarde réussie" @@ -1548,8 +1564,8 @@ msgstr "Envoyer" #: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:46 #: src/components/StdDesign/StdDataDisplay/methods/sortable.ts:126 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:182 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:221 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:196 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:235 #: src/views/config/ConfigEdit.vue:40 src/views/domain/DomainList.vue:81 #: src/views/environment/Environment.vue:139 src/views/other/Install.vue:70 #: src/views/preference/Preference.vue:70 src/views/stream/StreamList.vue:113 @@ -1607,23 +1623,23 @@ msgstr "Journaux du site" msgid "Sites List" msgstr "Liste des sites" -#: src/views/certificate/CertificateEditor.vue:191 +#: src/views/certificate/CertificateEditor.vue:198 #, fuzzy msgid "SSL Certificate Content" msgstr "Contenu de la certification SSL" -#: src/views/certificate/CertificateEditor.vue:204 +#: src/views/certificate/CertificateEditor.vue:211 #, fuzzy msgid "SSL Certificate Key Content" msgstr "Contenu de la clé de certification SSL" -#: src/views/certificate/Certificate.vue:75 -#: src/views/certificate/CertificateEditor.vue:176 +#: src/views/certificate/Certificate.vue:80 +#: src/views/certificate/CertificateEditor.vue:177 msgid "SSL Certificate Key Path" msgstr "Chemin de la clé du certificat SSL" -#: src/views/certificate/Certificate.vue:67 -#: src/views/certificate/CertificateEditor.vue:161 +#: src/views/certificate/Certificate.vue:72 +#: src/views/certificate/CertificateEditor.vue:162 msgid "SSL Certificate Path" msgstr "Chemin du certificat SSL" @@ -1638,7 +1654,7 @@ msgid "Stable" msgstr "Tableau" #: src/views/certificate/ACMEUser.vue:42 -#: src/views/certificate/Certificate.vue:83 src/views/domain/DomainList.vue:22 +#: src/views/certificate/Certificate.vue:88 src/views/domain/DomainList.vue:22 #: src/views/environment/Environment.vue:76 src/views/stream/StreamList.vue:22 msgid "Status" msgstr "Statut" @@ -1675,6 +1691,42 @@ msgstr "" msgid "Switch to light theme" msgstr "" +#: src/views/certificate/Certificate.vue:42 +#, fuzzy +msgid "Sync Certificate" +msgstr "Changer de certificat" + +#: src/components/Notification/detailRender.ts:25 +#, fuzzy +msgid "" +"Sync Certificate %{cert_name} to %{env_name} failed, please upgrade the " +"remote Nginx UI to the latest version" +msgstr "Dupliqué avec succès" + +#: src/components/Notification/detailRender.ts:29 +#, fuzzy +msgid "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}" +msgstr "Dupliqué avec succès" + +#: src/components/Notification/detailRender.ts:17 +#, fuzzy +msgid "Sync Certificate %{cert_name} to %{env_name} successfully" +msgstr "Dupliqué avec succès" + +#: src/language/constants.ts:38 +#, fuzzy +msgid "Sync Certificate Error" +msgstr "Changer de certificat" + +#: src/language/constants.ts:37 +#, fuzzy +msgid "Sync Certificate Success" +msgstr "Changer de certificat" + +#: src/views/certificate/CertificateEditor.vue:191 +msgid "Sync to" +msgstr "" + #: src/routes/index.ts:248 msgid "System" msgstr "Système" @@ -1705,11 +1757,11 @@ msgstr "" msgid "The filename cannot contain the following characters: %{c}" msgstr "Le nom de fichier ne peut pas contenir les caractères suivants : %{c}" -#: src/views/certificate/CertificateEditor.vue:194 +#: src/views/certificate/CertificateEditor.vue:201 msgid "The input is not a SSL Certificate" msgstr "" -#: src/views/certificate/CertificateEditor.vue:207 +#: src/views/certificate/CertificateEditor.vue:214 #, fuzzy msgid "The input is not a SSL Certificate Key" msgstr "Chemin de la clé du certificat SSL" @@ -1720,12 +1772,12 @@ msgid "" "dashes, and dots." msgstr "" -#: src/views/certificate/CertificateEditor.vue:165 +#: src/views/certificate/CertificateEditor.vue:166 #, fuzzy msgid "The path exists, but the file is not a certificate" msgstr "Chemin de la clé du certificat SSL" -#: src/views/certificate/CertificateEditor.vue:180 +#: src/views/certificate/CertificateEditor.vue:181 msgid "The path exists, but the file is not a private key" msgstr "" @@ -1759,20 +1811,20 @@ msgstr "" msgid "The username or password is incorrect" msgstr "Le pseudo ou mot de passe est incorect" -#: src/views/certificate/CertificateEditor.vue:101 +#: src/views/certificate/CertificateEditor.vue:102 #, fuzzy msgid "This Auto Cert item is invalid, please remove it." msgstr "" "Cet élément de certification automatique n'est pas valide, veuillez le " "supprimer." -#: src/views/certificate/CertificateEditor.vue:91 +#: src/views/certificate/CertificateEditor.vue:92 msgid "This certificate is managed by Nginx UI" msgstr "" -#: src/views/certificate/CertificateEditor.vue:149 -#: src/views/certificate/CertificateEditor.vue:163 -#: src/views/certificate/CertificateEditor.vue:178 +#: src/views/certificate/CertificateEditor.vue:150 +#: src/views/certificate/CertificateEditor.vue:164 +#: src/views/certificate/CertificateEditor.vue:179 msgid "This field is required" msgstr "" @@ -1784,7 +1836,7 @@ msgstr "" msgid "Tips" msgstr "" -#: src/views/notification/Notification.vue:18 +#: src/views/notification/Notification.vue:19 msgid "Title" msgstr "" @@ -1809,12 +1861,12 @@ msgid "Trash" msgstr "" #: src/views/certificate/Certificate.vue:37 src/views/config/config.ts:12 -#: src/views/notification/Notification.vue:12 +#: src/views/notification/Notification.vue:13 msgid "Type" msgstr "Type" #: src/views/certificate/ACMEUser.vue:53 -#: src/views/certificate/DNSCredential.vue:23 src/views/config/config.ts:27 +#: src/views/certificate/DNSCredential.vue:27 src/views/config/config.ts:27 #: src/views/config/ConfigEdit.vue:121 #: src/views/domain/components/RightSettings.vue:86 #: src/views/domain/DomainList.vue:41 src/views/environment/Environment.vue:122 @@ -1832,7 +1884,7 @@ msgstr "Mis à jour avec succés" msgid "Upgrade" msgstr "Mettre à niveau" -#: src/language/constants.ts:28 +#: src/language/constants.ts:29 msgid "Upgraded successfully" msgstr "Mise à niveau réussie" @@ -1866,11 +1918,11 @@ msgid "Username (*)" msgstr "Nom d'utilisateur (*)" #: src/views/certificate/ACMEUser.vue:87 -#: src/views/certificate/Certificate.vue:92 +#: src/views/certificate/Certificate.vue:97 msgid "Valid" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:477 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:491 #: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:103 msgid "View" msgstr "Voir" @@ -1895,7 +1947,7 @@ msgstr "Mode simple" msgid "Warning" msgstr "Avertissement" -#: src/views/certificate/DNSCredential.vue:52 +#: src/views/certificate/DNSCredential.vue:56 msgid "" "We will add one or more TXT records to the DNS records of your domain for " "ownership verification." diff --git a/app/src/language/ko_KR/app.po b/app/src/language/ko_KR/app.po index 0bbe3169..748dcf61 100644 --- a/app/src/language/ko_KR/app.po +++ b/app/src/language/ko_KR/app.po @@ -28,10 +28,10 @@ msgid "ACME User" msgstr "사용자 이름" #: src/views/certificate/ACMEUser.vue:59 -#: src/views/certificate/Certificate.vue:108 -#: src/views/certificate/DNSCredential.vue:29 src/views/config/config.ts:34 +#: src/views/certificate/Certificate.vue:113 +#: src/views/certificate/DNSCredential.vue:33 src/views/config/config.ts:34 #: src/views/domain/DomainList.vue:47 src/views/environment/Environment.vue:129 -#: src/views/notification/Notification.vue:35 +#: src/views/notification/Notification.vue:37 #: src/views/stream/StreamList.vue:47 src/views/user/User.vue:43 msgid "Action" msgstr "작업" @@ -97,7 +97,7 @@ msgid "Arch" msgstr "아키텍처" #: src/components/Notification/Notification.vue:84 -#: src/views/notification/Notification.vue:70 +#: src/views/notification/Notification.vue:72 msgid "Are you sure you want to clear all notifications?" msgstr "모든 알림을 지우시겠습니까?" @@ -105,7 +105,12 @@ msgstr "모든 알림을 지우시겠습니까?" msgid "Are you sure you want to clear the record of chat?" msgstr "기록을 지우시겠습니까?" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:509 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:551 +#, fuzzy +msgid "Are you sure you want to delete this item permanently?" +msgstr "정말 삭제하시겠습니까?" + +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:523 #, fuzzy msgid "Are you sure you want to delete this item?" msgstr "정말 삭제하시겠습니까?" @@ -114,7 +119,7 @@ msgstr "정말 삭제하시겠습니까?" msgid "Are you sure you want to delete?" msgstr "정말 삭제하시겠습니까?" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:523 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:537 #, fuzzy msgid "Are you sure you want to recover this item?" msgstr "이 지시문을 정말로 제거하시겠습니까?" @@ -161,7 +166,7 @@ msgstr "%{name}에 대한 자동 갱신 비활성화됨" msgid "Auto-renewal enabled for %{name}" msgstr "%{name}에 대한 자동 갱신 활성화됨" -#: src/views/certificate/CertificateEditor.vue:235 +#: src/views/certificate/CertificateEditor.vue:242 #: src/views/config/Config.vue:73 src/views/config/ConfigEdit.vue:87 #: src/views/domain/DomainEdit.vue:256 src/views/nginx_log/NginxLog.vue:168 #: src/views/stream/StreamEdit.vue:247 @@ -188,7 +193,7 @@ msgid "Basic Mode" msgstr "기본 모드" #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:54 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:445 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:459 msgid "Batch Modify" msgstr "일괄 수정" @@ -232,12 +237,12 @@ msgstr "인증서가 유효합니다" msgid "Certificate Renewal Interval" msgstr "인증서가 유효합니다" -#: src/views/certificate/CertificateEditor.vue:127 +#: src/views/certificate/CertificateEditor.vue:128 #: src/views/domain/cert/Cert.vue:33 msgid "Certificate Status" msgstr "인증서 상태" -#: src/routes/index.ts:119 src/views/certificate/Certificate.vue:124 +#: src/routes/index.ts:119 src/views/certificate/Certificate.vue:129 msgid "Certificates" msgstr "인증서" @@ -268,12 +273,12 @@ msgstr "환경 변수 정리" #: src/components/ChatGPT/ChatGPT.vue:276 #: src/components/Notification/Notification.vue:89 -#: src/views/notification/Notification.vue:75 +#: src/views/notification/Notification.vue:77 msgid "Clear" msgstr "클리어" #: src/components/Notification/Notification.vue:40 -#: src/views/notification/Notification.vue:44 +#: src/views/notification/Notification.vue:46 msgid "Cleared successfully" msgstr "성공적으로 제거됨" @@ -338,7 +343,7 @@ msgstr "생성" msgid "Create Another" msgstr "다른 것 생성하기" -#: src/views/notification/Notification.vue:29 src/views/user/User.vue:31 +#: src/views/notification/Notification.vue:31 src/views/user/User.vue:31 msgid "Created at" msgstr "생성 시간" @@ -381,7 +386,7 @@ msgstr "데이터베이스 (선택사항, 기본값: database)" msgid "Days" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:516 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:530 #: src/views/domain/DomainList.vue:155 #: src/views/domain/ngx_conf/NgxServer.vue:114 #: src/views/domain/ngx_conf/NgxUpstream.vue:126 @@ -389,6 +394,10 @@ msgstr "" msgid "Delete" msgstr "삭제" +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:558 +msgid "Delete Permanently" +msgstr "" + #: src/views/domain/DomainList.vue:78 msgid "Delete site: %{site_name}" msgstr "사이트 삭제: %{site_name}" @@ -397,7 +406,7 @@ msgstr "사이트 삭제: %{site_name}" msgid "Delete stream: %{stream_name}" msgstr "스트림 삭제: %{stream_name}" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:171 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:185 msgid "Deleted successfully" msgstr "성공적으로 삭제됨" @@ -428,7 +437,7 @@ msgstr "성공적으로 배포됨" msgid "Description" msgstr "설명" -#: src/views/notification/Notification.vue:25 +#: src/views/notification/Notification.vue:26 msgid "Details" msgstr "세부 사항" @@ -473,7 +482,7 @@ msgstr "성공적으로 비활성화됨" msgid "Disk IO" msgstr "디스크 IO" -#: src/routes/index.ts:162 src/views/certificate/DNSCredential.vue:36 +#: src/routes/index.ts:162 src/views/certificate/DNSCredential.vue:40 msgid "DNS Credentials" msgstr "DNS 인증 정보" @@ -533,16 +542,16 @@ msgstr "도메인" msgid "Domain Config Created Successfully" msgstr "도메인 구성이 성공적으로 생성되었습니다" -#: src/views/certificate/CertificateEditor.vue:111 +#: src/views/certificate/CertificateEditor.vue:112 msgid "Domains list is empty, try to reopen Auto Cert for %{config}" msgstr "" "도메인 목록이 비어 있습니다. %{config}에 대한 자동 인증서를 다시 열어보세요" -#: src/language/constants.ts:25 +#: src/language/constants.ts:26 msgid "Download latest release error" msgstr "최신 릴리스 다운로드 오류" -#: src/language/constants.ts:24 +#: src/language/constants.ts:25 msgid "Downloading latest release" msgstr "최신 릴리스 다운로드 중" @@ -664,6 +673,11 @@ msgstr "Let's Encrypt로 웹사이트 암호화" msgid "Environment" msgstr "환경" +#: src/language/constants.ts:21 +#, fuzzy +msgid "Environment variables cleaned" +msgstr "환경 변수 설정" + #: src/views/dashboard/Environments.vue:82 msgid "Environments" msgstr "환경" @@ -680,7 +694,7 @@ msgstr "오류 로그" msgid "Executable Path" msgstr "실행 가능 경로" -#: src/views/certificate/Certificate.vue:96 +#: src/views/certificate/Certificate.vue:101 msgid "Expired" msgstr "만료됨" @@ -724,7 +738,7 @@ msgstr "저장 실패, 구성에서 구문 오류가 감지되었습니다." msgid "File" msgstr "파일" -#: src/language/constants.ts:30 +#: src/language/constants.ts:31 msgid "File exists" msgstr "파일이 존재함" @@ -764,7 +778,7 @@ msgstr "형식 오류 %{msg}" msgid "Format successfully" msgstr "성공적으로 형식 지정됨" -#: src/views/certificate/Certificate.vue:43 +#: src/views/certificate/Certificate.vue:44 #, fuzzy msgid "General Certificate" msgstr "일반 인증서" @@ -814,11 +828,11 @@ msgstr "HTTP01" msgid "If left blank, the default CA Dir will be used." msgstr "" -#: src/views/certificate/Certificate.vue:131 +#: src/views/certificate/Certificate.vue:136 msgid "Import" msgstr "가져오기" -#: src/routes/index.ts:153 src/views/certificate/CertificateEditor.vue:84 +#: src/routes/index.ts:153 src/views/certificate/CertificateEditor.vue:85 #, fuzzy msgid "Import Certificate" msgstr "인증서 상태" @@ -827,11 +841,11 @@ msgstr "인증서 상태" msgid "Info" msgstr "정보" -#: src/language/constants.ts:23 +#: src/language/constants.ts:24 msgid "Initial core upgrader error" msgstr "초기 코어 업그레이더 오류" -#: src/language/constants.ts:22 +#: src/language/constants.ts:23 msgid "Initialing core upgrader" msgstr "코어 업그레이더 초기화" @@ -857,7 +871,7 @@ msgstr "간격" msgid "Invalid" msgstr "유효함" -#: src/views/certificate/Certificate.vue:139 +#: src/views/certificate/Certificate.vue:144 #, fuzzy msgid "Issue wildcard certificate" msgstr "인증서 유효" @@ -876,7 +890,7 @@ msgstr "성공적으로 활성화됨" msgid "Jwt Secret" msgstr "Jwt 토큰" -#: src/views/certificate/Certificate.vue:61 +#: src/views/certificate/Certificate.vue:66 #: src/views/certificate/WildcardCertificate.vue:79 #: src/views/domain/cert/components/AutoCertStepOne.vue:80 msgid "Key Type" @@ -894,8 +908,8 @@ msgstr "변경사항이 없으면 비워두세요" msgid "Leave blank for the default: https://api.openai.com/" msgstr "기본값을 사용하려면 비워 두세요: https://api.openai.com/" -#: src/views/certificate/CertificateEditor.vue:200 -#: src/views/certificate/CertificateEditor.vue:213 +#: src/views/certificate/CertificateEditor.vue:207 +#: src/views/certificate/CertificateEditor.vue:220 #, fuzzy msgid "Leave blank will not change anything" msgstr "변경사항이 없으면 비워두세요" @@ -942,7 +956,7 @@ msgstr "위치" msgid "Locations" msgstr "위치들" -#: src/views/certificate/CertificateEditor.vue:223 +#: src/views/certificate/CertificateEditor.vue:230 #, fuzzy msgid "Log" msgstr "로그인" @@ -1004,7 +1018,7 @@ msgstr "스트림 관리" msgid "Manage Users" msgstr "사용자 관리" -#: src/views/certificate/Certificate.vue:42 +#: src/views/certificate/Certificate.vue:43 #, fuzzy msgid "Managed Certificate" msgstr "인증서 유효" @@ -1029,12 +1043,12 @@ msgstr "실행 모드" #: src/components/ChatGPT/ChatGPT.vue:249 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:194 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:491 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:505 #, fuzzy msgid "Modify" msgstr "설정 수정" -#: src/routes/index.ts:144 src/views/certificate/CertificateEditor.vue:84 +#: src/routes/index.ts:144 src/views/certificate/CertificateEditor.vue:85 #, fuzzy msgid "Modify Certificate" msgstr "인증서 상태" @@ -1055,8 +1069,8 @@ msgstr "단일 지시문" #: src/views/certificate/ACMEUser.vue:13 #: src/views/certificate/Certificate.vue:20 -#: src/views/certificate/CertificateEditor.vue:146 -#: src/views/certificate/DNSCredential.vue:10 src/views/config/config.ts:7 +#: src/views/certificate/CertificateEditor.vue:147 +#: src/views/certificate/DNSCredential.vue:11 src/views/config/config.ts:7 #: src/views/domain/cert/ChangeCert.vue:17 #: src/views/domain/components/RightSettings.vue:83 #: src/views/domain/components/SiteDuplicate.vue:133 @@ -1132,12 +1146,13 @@ msgstr "Nginx가 성공적으로 재시작됨" #: src/components/ChatGPT/ChatGPT.vue:270 #: src/components/Notification/Notification.vue:82 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:507 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:521 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:535 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:549 #: src/views/domain/DomainList.vue:144 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:90 #: src/views/domain/ngx_conf/LocationEditor.vue:71 -#: src/views/notification/Notification.vue:68 +#: src/views/notification/Notification.vue:70 #: src/views/preference/BasicSettings.vue:101 #: src/views/stream/StreamList.vue:165 msgid "No" @@ -1147,7 +1162,7 @@ msgstr "아니요" msgid "Node Secret" msgstr "노드 시크릿" -#: src/views/certificate/Certificate.vue:102 +#: src/views/certificate/Certificate.vue:107 msgid "Not After" msgstr "만료일" @@ -1159,12 +1174,12 @@ msgstr "찾을 수 없음" msgid "Not Valid Before: %{date}" msgstr "유효 시작일: %{date}" -#: src/views/certificate/DNSCredential.vue:45 +#: src/views/certificate/DNSCredential.vue:49 #: src/views/domain/cert/components/AutoCertStepOne.vue:45 msgid "Note" msgstr "참고" -#: src/views/notification/Notification.vue:60 +#: src/views/notification/Notification.vue:62 #, fuzzy msgid "Notification" msgstr "알림" @@ -1197,8 +1212,9 @@ msgstr "" #: src/components/ChatGPT/ChatGPT.vue:271 #: src/components/Notification/Notification.vue:83 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:56 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:508 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:522 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:536 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:550 #: src/views/domain/cert/components/ObtainCert.vue:136 #: src/views/domain/components/Deploy.vue:20 #: src/views/domain/components/RightSettings.vue:50 @@ -1206,14 +1222,14 @@ msgstr "" #: src/views/domain/ngx_conf/NgxConfigEditor.vue:49 #: src/views/domain/ngx_conf/NgxServer.vue:83 #: src/views/domain/ngx_conf/NgxUpstream.vue:32 -#: src/views/notification/Notification.vue:69 +#: src/views/notification/Notification.vue:71 #: src/views/stream/components/Deploy.vue:20 #: src/views/stream/components/RightSettings.vue:50 #: src/views/stream/StreamList.vue:166 msgid "OK" msgstr "확인" -#: src/views/certificate/DNSCredential.vue:55 +#: src/views/certificate/DNSCredential.vue:59 msgid "Once the verification is complete, the records will be removed." msgstr "검증이 완료되면, 레코드는 제거됩니다." @@ -1265,15 +1281,15 @@ msgstr "비밀번호 (*)" msgid "Path" msgstr "경로" -#: src/language/constants.ts:27 +#: src/language/constants.ts:28 msgid "Perform core upgrade error" msgstr "핵심 업그레이드 오류 수행" -#: src/language/constants.ts:26 +#: src/language/constants.ts:27 msgid "Performing core upgrade" msgstr "핵심 업그레이드 수행 중" -#: src/views/certificate/DNSCredential.vue:49 +#: src/views/certificate/DNSCredential.vue:53 msgid "" "Please fill in the API authentication credentials provided by your DNS " "provider." @@ -1306,7 +1322,7 @@ msgstr "비밀번호를 입력해주세요!" msgid "Please input your username!" msgstr "사용자 이름을 입력해주세요!" -#: src/views/certificate/DNSCredential.vue:58 +#: src/views/certificate/DNSCredential.vue:62 msgid "" "Please note that the unit of time configurations below are all in seconds." msgstr "아래의 시간 설정 단위는 모두 초 단위임을 유의해주세요." @@ -1341,7 +1357,7 @@ msgstr "기본 사용자 삭제 금지" msgid "Project Team" msgstr "프로젝트 팀" -#: src/views/certificate/DNSCredential.vue:18 +#: src/views/certificate/DNSCredential.vue:19 msgid "Provider" msgstr "제공자" @@ -1355,11 +1371,11 @@ msgstr "읽기" msgid "Receive" msgstr "수신" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:530 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:544 msgid "Recover" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:179 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:193 #, fuzzy msgid "Recovered Successfully" msgstr "성공적으로 제거됨" @@ -1434,12 +1450,12 @@ msgstr "이름 변경" msgid "Renew Certificate" msgstr "인증서 갱신" -#: src/language/constants.ts:34 +#: src/language/constants.ts:35 #, fuzzy msgid "Renew Certificate Error" msgstr "인증서 갱신 오류" -#: src/language/constants.ts:33 +#: src/language/constants.ts:34 #, fuzzy msgid "Renew Certificate Success" msgstr "인증서 갱신 성공" @@ -1450,11 +1466,11 @@ msgstr "인증서 갱신 성공" msgid "Renew successfully" msgstr "성공적으로 갱신됨" -#: src/language/constants.ts:31 +#: src/language/constants.ts:32 msgid "Requested with wrong parameters" msgstr "잘못된 매개변수로 요청됨" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:439 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:453 msgid "Reset" msgstr "재설정" @@ -1476,7 +1492,7 @@ msgid "Running" msgstr "실행 중" #: src/components/ChatGPT/ChatGPT.vue:252 -#: src/views/certificate/CertificateEditor.vue:242 +#: src/views/certificate/CertificateEditor.vue:249 #: src/views/config/ConfigEdit.vue:96 src/views/domain/DomainEdit.vue:263 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:120 #: src/views/preference/Preference.vue:130 src/views/stream/StreamEdit.vue:254 @@ -1494,7 +1510,7 @@ msgstr "저장 오류 %{msg}" #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:39 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:104 -#: src/views/certificate/CertificateEditor.vue:45 +#: src/views/certificate/CertificateEditor.vue:46 #: src/views/preference/Preference.vue:66 #, fuzzy msgid "Save successfully" @@ -1525,8 +1541,8 @@ msgstr "보내기" #: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:46 #: src/components/StdDesign/StdDataDisplay/methods/sortable.ts:126 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:182 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:221 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:196 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:235 #: src/views/config/ConfigEdit.vue:40 src/views/domain/DomainList.vue:81 #: src/views/environment/Environment.vue:139 src/views/other/Install.vue:70 #: src/views/preference/Preference.vue:70 src/views/stream/StreamList.vue:113 @@ -1583,23 +1599,23 @@ msgstr "사이트 로그" msgid "Sites List" msgstr "사이트 목록" -#: src/views/certificate/CertificateEditor.vue:191 +#: src/views/certificate/CertificateEditor.vue:198 #, fuzzy msgid "SSL Certificate Content" msgstr "인증서 상태" -#: src/views/certificate/CertificateEditor.vue:204 +#: src/views/certificate/CertificateEditor.vue:211 msgid "SSL Certificate Key Content" msgstr "SSL 인증서키 콘텐츠" -#: src/views/certificate/Certificate.vue:75 -#: src/views/certificate/CertificateEditor.vue:176 +#: src/views/certificate/Certificate.vue:80 +#: src/views/certificate/CertificateEditor.vue:177 #, fuzzy msgid "SSL Certificate Key Path" msgstr "SSL 인증서 키 경로" -#: src/views/certificate/Certificate.vue:67 -#: src/views/certificate/CertificateEditor.vue:161 +#: src/views/certificate/Certificate.vue:72 +#: src/views/certificate/CertificateEditor.vue:162 #, fuzzy msgid "SSL Certificate Path" msgstr "SSL 인증서 경로" @@ -1615,7 +1631,7 @@ msgid "Stable" msgstr "활성화됨" #: src/views/certificate/ACMEUser.vue:42 -#: src/views/certificate/Certificate.vue:83 src/views/domain/DomainList.vue:22 +#: src/views/certificate/Certificate.vue:88 src/views/domain/DomainList.vue:22 #: src/views/environment/Environment.vue:76 src/views/stream/StreamList.vue:22 msgid "Status" msgstr "상태" @@ -1651,6 +1667,42 @@ msgstr "다크 테마로 변경" msgid "Switch to light theme" msgstr "라이트 테마로 변경" +#: src/views/certificate/Certificate.vue:42 +#, fuzzy +msgid "Sync Certificate" +msgstr "인증서 갱신" + +#: src/components/Notification/detailRender.ts:25 +#, fuzzy +msgid "" +"Sync Certificate %{cert_name} to %{env_name} failed, please upgrade the " +"remote Nginx UI to the latest version" +msgstr "%{conf_name}을(를) %{node_name}(으)로 성공적으로 복제함" + +#: src/components/Notification/detailRender.ts:29 +#, fuzzy +msgid "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}" +msgstr "%{conf_name}을(를) %{node_name}(으)로 성공적으로 복제함" + +#: src/components/Notification/detailRender.ts:17 +#, fuzzy +msgid "Sync Certificate %{cert_name} to %{env_name} successfully" +msgstr "%{conf_name}을(를) %{node_name}(으)로 성공적으로 복제함" + +#: src/language/constants.ts:38 +#, fuzzy +msgid "Sync Certificate Error" +msgstr "인증서 갱신 오류" + +#: src/language/constants.ts:37 +#, fuzzy +msgid "Sync Certificate Success" +msgstr "인증서 갱신 성공" + +#: src/views/certificate/CertificateEditor.vue:191 +msgid "Sync to" +msgstr "" + #: src/routes/index.ts:248 msgid "System" msgstr "시스템" @@ -1681,11 +1733,11 @@ msgstr "" msgid "The filename cannot contain the following characters: %{c}" msgstr "파일 이름은 다음 문자를 포함할 수 없습니다: %{c}" -#: src/views/certificate/CertificateEditor.vue:194 +#: src/views/certificate/CertificateEditor.vue:201 msgid "The input is not a SSL Certificate" msgstr "입력이 SSL 인증서가 아닙니다" -#: src/views/certificate/CertificateEditor.vue:207 +#: src/views/certificate/CertificateEditor.vue:214 #, fuzzy msgid "The input is not a SSL Certificate Key" msgstr "Certificate Status" @@ -1696,12 +1748,12 @@ msgid "" "dashes, and dots." msgstr "" -#: src/views/certificate/CertificateEditor.vue:165 +#: src/views/certificate/CertificateEditor.vue:166 #, fuzzy msgid "The path exists, but the file is not a certificate" msgstr "Certificate Status" -#: src/views/certificate/CertificateEditor.vue:180 +#: src/views/certificate/CertificateEditor.vue:181 msgid "The path exists, but the file is not a private key" msgstr "경로는 존재하지만 파일은 개인 키가 아닙니다" @@ -1736,17 +1788,17 @@ msgstr "유효한 URL이 아닙니다" msgid "The username or password is incorrect" msgstr "사용자 이름 또는 비밀번호가 올바르지 않습니다" -#: src/views/certificate/CertificateEditor.vue:101 +#: src/views/certificate/CertificateEditor.vue:102 msgid "This Auto Cert item is invalid, please remove it." msgstr "이 자동 인증 항목이 유효하지 않습니다. 제거해주세요." -#: src/views/certificate/CertificateEditor.vue:91 +#: src/views/certificate/CertificateEditor.vue:92 msgid "This certificate is managed by Nginx UI" msgstr "이 인증서는 Nginx UI에서 관리됩니다" -#: src/views/certificate/CertificateEditor.vue:149 -#: src/views/certificate/CertificateEditor.vue:163 -#: src/views/certificate/CertificateEditor.vue:178 +#: src/views/certificate/CertificateEditor.vue:150 +#: src/views/certificate/CertificateEditor.vue:164 +#: src/views/certificate/CertificateEditor.vue:179 msgid "This field is required" msgstr "이 필드는 필수입니다" @@ -1758,7 +1810,7 @@ msgstr "이 필드는 비워둘 수 없습니다" msgid "Tips" msgstr "팁" -#: src/views/notification/Notification.vue:18 +#: src/views/notification/Notification.vue:19 msgid "Title" msgstr "제목" @@ -1782,12 +1834,12 @@ msgid "Trash" msgstr "" #: src/views/certificate/Certificate.vue:37 src/views/config/config.ts:12 -#: src/views/notification/Notification.vue:12 +#: src/views/notification/Notification.vue:13 msgid "Type" msgstr "유형" #: src/views/certificate/ACMEUser.vue:53 -#: src/views/certificate/DNSCredential.vue:23 src/views/config/config.ts:27 +#: src/views/certificate/DNSCredential.vue:27 src/views/config/config.ts:27 #: src/views/config/ConfigEdit.vue:121 #: src/views/domain/components/RightSettings.vue:86 #: src/views/domain/DomainList.vue:41 src/views/environment/Environment.vue:122 @@ -1806,7 +1858,7 @@ msgstr "성공적으로 저장되었습니다" msgid "Upgrade" msgstr "업그레이드" -#: src/language/constants.ts:28 +#: src/language/constants.ts:29 #, fuzzy msgid "Upgraded successfully" msgstr "성공적으로 저장되었습니다" @@ -1841,11 +1893,11 @@ msgid "Username (*)" msgstr "사용자 이름 (*)" #: src/views/certificate/ACMEUser.vue:87 -#: src/views/certificate/Certificate.vue:92 +#: src/views/certificate/Certificate.vue:97 msgid "Valid" msgstr "유효함" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:477 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:491 #: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:103 msgid "View" msgstr "보기" @@ -1871,7 +1923,7 @@ msgstr "기본 모드" msgid "Warning" msgstr "경고" -#: src/views/certificate/DNSCredential.vue:52 +#: src/views/certificate/DNSCredential.vue:56 msgid "" "We will add one or more TXT records to the DNS records of your domain for " "ownership verification." diff --git a/app/src/language/messages.pot b/app/src/language/messages.pot index ae3a626f..a2c396ca 100644 --- a/app/src/language/messages.pot +++ b/app/src/language/messages.pot @@ -18,12 +18,12 @@ msgid "ACME User" msgstr "" #: src/views/certificate/ACMEUser.vue:59 -#: src/views/certificate/Certificate.vue:108 -#: src/views/certificate/DNSCredential.vue:29 +#: src/views/certificate/Certificate.vue:113 +#: src/views/certificate/DNSCredential.vue:33 #: src/views/config/config.ts:34 #: src/views/domain/DomainList.vue:47 #: src/views/environment/Environment.vue:129 -#: src/views/notification/Notification.vue:35 +#: src/views/notification/Notification.vue:37 #: src/views/stream/StreamList.vue:47 #: src/views/user/User.vue:43 msgid "Action" @@ -91,7 +91,7 @@ msgid "Arch" msgstr "" #: src/components/Notification/Notification.vue:84 -#: src/views/notification/Notification.vue:70 +#: src/views/notification/Notification.vue:72 msgid "Are you sure you want to clear all notifications?" msgstr "" @@ -99,7 +99,11 @@ msgstr "" msgid "Are you sure you want to clear the record of chat?" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:509 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:551 +msgid "Are you sure you want to delete this item permanently?" +msgstr "" + +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:523 msgid "Are you sure you want to delete this item?" msgstr "" @@ -108,7 +112,7 @@ msgstr "" msgid "Are you sure you want to delete?" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:523 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:537 msgid "Are you sure you want to recover this item?" msgstr "" @@ -153,7 +157,7 @@ msgstr "" msgid "Auto-renewal enabled for %{name}" msgstr "" -#: src/views/certificate/CertificateEditor.vue:235 +#: src/views/certificate/CertificateEditor.vue:242 #: src/views/config/Config.vue:73 #: src/views/config/ConfigEdit.vue:87 #: src/views/domain/DomainEdit.vue:256 @@ -183,7 +187,7 @@ msgid "Basic Mode" msgstr "" #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:54 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:445 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:459 msgid "Batch Modify" msgstr "" @@ -226,13 +230,13 @@ msgstr "" msgid "Certificate Renewal Interval" msgstr "" -#: src/views/certificate/CertificateEditor.vue:127 +#: src/views/certificate/CertificateEditor.vue:128 #: src/views/domain/cert/Cert.vue:33 msgid "Certificate Status" msgstr "" #: src/routes/index.ts:119 -#: src/views/certificate/Certificate.vue:124 +#: src/views/certificate/Certificate.vue:129 msgid "Certificates" msgstr "" @@ -263,12 +267,12 @@ msgstr "" #: src/components/ChatGPT/ChatGPT.vue:276 #: src/components/Notification/Notification.vue:89 -#: src/views/notification/Notification.vue:75 +#: src/views/notification/Notification.vue:77 msgid "Clear" msgstr "" #: src/components/Notification/Notification.vue:40 -#: src/views/notification/Notification.vue:44 +#: src/views/notification/Notification.vue:46 msgid "Cleared successfully" msgstr "" @@ -333,7 +337,7 @@ msgstr "" msgid "Create Another" msgstr "" -#: src/views/notification/Notification.vue:29 +#: src/views/notification/Notification.vue:31 #: src/views/user/User.vue:31 msgid "Created at" msgstr "" @@ -375,7 +379,7 @@ msgstr "" msgid "Days" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:516 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:530 #: src/views/domain/DomainList.vue:155 #: src/views/domain/ngx_conf/NgxServer.vue:114 #: src/views/domain/ngx_conf/NgxUpstream.vue:126 @@ -383,6 +387,10 @@ msgstr "" msgid "Delete" msgstr "" +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:558 +msgid "Delete Permanently" +msgstr "" + #: src/views/domain/DomainList.vue:78 msgid "Delete site: %{site_name}" msgstr "" @@ -391,7 +399,7 @@ msgstr "" msgid "Delete stream: %{stream_name}" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:171 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:185 msgid "Deleted successfully" msgstr "" @@ -422,7 +430,7 @@ msgstr "" msgid "Description" msgstr "" -#: src/views/notification/Notification.vue:25 +#: src/views/notification/Notification.vue:26 msgid "Details" msgstr "" @@ -472,7 +480,7 @@ msgid "Disk IO" msgstr "" #: src/routes/index.ts:162 -#: src/views/certificate/DNSCredential.vue:36 +#: src/views/certificate/DNSCredential.vue:40 msgid "DNS Credentials" msgstr "" @@ -532,15 +540,15 @@ msgstr "" msgid "Domain Config Created Successfully" msgstr "" -#: src/views/certificate/CertificateEditor.vue:111 +#: src/views/certificate/CertificateEditor.vue:112 msgid "Domains list is empty, try to reopen Auto Cert for %{config}" msgstr "" -#: src/language/constants.ts:25 +#: src/language/constants.ts:26 msgid "Download latest release error" msgstr "" -#: src/language/constants.ts:24 +#: src/language/constants.ts:25 msgid "Downloading latest release" msgstr "" @@ -666,6 +674,10 @@ msgstr "" msgid "Environment" msgstr "" +#: src/language/constants.ts:21 +msgid "Environment variables cleaned" +msgstr "" + #: src/views/dashboard/Environments.vue:82 msgid "Environments" msgstr "" @@ -684,7 +696,7 @@ msgstr "" msgid "Executable Path" msgstr "" -#: src/views/certificate/Certificate.vue:96 +#: src/views/certificate/Certificate.vue:101 msgid "Expired" msgstr "" @@ -727,7 +739,7 @@ msgstr "" msgid "File" msgstr "" -#: src/language/constants.ts:30 +#: src/language/constants.ts:31 msgid "File exists" msgstr "" @@ -765,7 +777,7 @@ msgstr "" msgid "Format successfully" msgstr "" -#: src/views/certificate/Certificate.vue:43 +#: src/views/certificate/Certificate.vue:44 msgid "General Certificate" msgstr "" @@ -813,12 +825,12 @@ msgstr "" msgid "If left blank, the default CA Dir will be used." msgstr "" -#: src/views/certificate/Certificate.vue:131 +#: src/views/certificate/Certificate.vue:136 msgid "Import" msgstr "" #: src/routes/index.ts:153 -#: src/views/certificate/CertificateEditor.vue:84 +#: src/views/certificate/CertificateEditor.vue:85 msgid "Import Certificate" msgstr "" @@ -826,11 +838,11 @@ msgstr "" msgid "Info" msgstr "" -#: src/language/constants.ts:23 +#: src/language/constants.ts:24 msgid "Initial core upgrader error" msgstr "" -#: src/language/constants.ts:22 +#: src/language/constants.ts:23 msgid "Initialing core upgrader" msgstr "" @@ -855,7 +867,7 @@ msgstr "" msgid "Invalid" msgstr "" -#: src/views/certificate/Certificate.vue:139 +#: src/views/certificate/Certificate.vue:144 msgid "Issue wildcard certificate" msgstr "" @@ -871,7 +883,7 @@ msgstr "" msgid "Jwt Secret" msgstr "" -#: src/views/certificate/Certificate.vue:61 +#: src/views/certificate/Certificate.vue:66 #: src/views/certificate/WildcardCertificate.vue:79 #: src/views/domain/cert/components/AutoCertStepOne.vue:80 msgid "Key Type" @@ -889,8 +901,8 @@ msgstr "" msgid "Leave blank for the default: https://api.openai.com/" msgstr "" -#: src/views/certificate/CertificateEditor.vue:200 -#: src/views/certificate/CertificateEditor.vue:213 +#: src/views/certificate/CertificateEditor.vue:207 +#: src/views/certificate/CertificateEditor.vue:220 msgid "Leave blank will not change anything" msgstr "" @@ -932,7 +944,7 @@ msgstr "" msgid "Locations" msgstr "" -#: src/views/certificate/CertificateEditor.vue:223 +#: src/views/certificate/CertificateEditor.vue:230 msgid "Log" msgstr "" @@ -981,7 +993,7 @@ msgstr "" msgid "Manage Users" msgstr "" -#: src/views/certificate/Certificate.vue:42 +#: src/views/certificate/Certificate.vue:43 msgid "Managed Certificate" msgstr "" @@ -1004,12 +1016,12 @@ msgstr "" #: src/components/ChatGPT/ChatGPT.vue:249 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:194 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:491 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:505 msgid "Modify" msgstr "" #: src/routes/index.ts:144 -#: src/views/certificate/CertificateEditor.vue:84 +#: src/views/certificate/CertificateEditor.vue:85 msgid "Modify Certificate" msgstr "" @@ -1027,8 +1039,8 @@ msgstr "" #: src/views/certificate/ACMEUser.vue:13 #: src/views/certificate/Certificate.vue:20 -#: src/views/certificate/CertificateEditor.vue:146 -#: src/views/certificate/DNSCredential.vue:10 +#: src/views/certificate/CertificateEditor.vue:147 +#: src/views/certificate/DNSCredential.vue:11 #: src/views/config/config.ts:7 #: src/views/domain/cert/ChangeCert.vue:17 #: src/views/domain/components/RightSettings.vue:83 @@ -1105,12 +1117,13 @@ msgstr "" #: src/components/ChatGPT/ChatGPT.vue:270 #: src/components/Notification/Notification.vue:82 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:507 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:521 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:535 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:549 #: src/views/domain/DomainList.vue:144 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:90 #: src/views/domain/ngx_conf/LocationEditor.vue:71 -#: src/views/notification/Notification.vue:68 +#: src/views/notification/Notification.vue:70 #: src/views/preference/BasicSettings.vue:101 #: src/views/stream/StreamList.vue:165 msgid "No" @@ -1120,7 +1133,7 @@ msgstr "" msgid "Node Secret" msgstr "" -#: src/views/certificate/Certificate.vue:102 +#: src/views/certificate/Certificate.vue:107 msgid "Not After" msgstr "" @@ -1132,12 +1145,12 @@ msgstr "" msgid "Not Valid Before: %{date}" msgstr "" -#: src/views/certificate/DNSCredential.vue:45 +#: src/views/certificate/DNSCredential.vue:49 #: src/views/domain/cert/components/AutoCertStepOne.vue:45 msgid "Note" msgstr "" -#: src/views/notification/Notification.vue:60 +#: src/views/notification/Notification.vue:62 msgid "Notification" msgstr "" @@ -1168,8 +1181,9 @@ msgstr "" #: src/components/ChatGPT/ChatGPT.vue:271 #: src/components/Notification/Notification.vue:83 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:56 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:508 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:522 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:536 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:550 #: src/views/domain/cert/components/ObtainCert.vue:136 #: src/views/domain/components/Deploy.vue:20 #: src/views/domain/components/RightSettings.vue:50 @@ -1177,14 +1191,14 @@ msgstr "" #: src/views/domain/ngx_conf/NgxConfigEditor.vue:49 #: src/views/domain/ngx_conf/NgxServer.vue:83 #: src/views/domain/ngx_conf/NgxUpstream.vue:32 -#: src/views/notification/Notification.vue:69 +#: src/views/notification/Notification.vue:71 #: src/views/stream/components/Deploy.vue:20 #: src/views/stream/components/RightSettings.vue:50 #: src/views/stream/StreamList.vue:166 msgid "OK" msgstr "" -#: src/views/certificate/DNSCredential.vue:55 +#: src/views/certificate/DNSCredential.vue:59 msgid "Once the verification is complete, the records will be removed." msgstr "" @@ -1236,15 +1250,15 @@ msgstr "" msgid "Path" msgstr "" -#: src/language/constants.ts:27 +#: src/language/constants.ts:28 msgid "Perform core upgrade error" msgstr "" -#: src/language/constants.ts:26 +#: src/language/constants.ts:27 msgid "Performing core upgrade" msgstr "" -#: src/views/certificate/DNSCredential.vue:49 +#: src/views/certificate/DNSCredential.vue:53 msgid "Please fill in the API authentication credentials provided by your DNS provider." msgstr "" @@ -1271,7 +1285,7 @@ msgstr "" msgid "Please input your username!" msgstr "" -#: src/views/certificate/DNSCredential.vue:58 +#: src/views/certificate/DNSCredential.vue:62 msgid "Please note that the unit of time configurations below are all in seconds." msgstr "" @@ -1306,7 +1320,7 @@ msgstr "" msgid "Project Team" msgstr "" -#: src/views/certificate/DNSCredential.vue:18 +#: src/views/certificate/DNSCredential.vue:19 msgid "Provider" msgstr "" @@ -1320,11 +1334,11 @@ msgstr "" msgid "Receive" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:530 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:544 msgid "Recover" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:179 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:193 msgid "Recovered Successfully" msgstr "" @@ -1390,11 +1404,11 @@ msgstr "" msgid "Renew Certificate" msgstr "" -#: src/language/constants.ts:34 +#: src/language/constants.ts:35 msgid "Renew Certificate Error" msgstr "" -#: src/language/constants.ts:33 +#: src/language/constants.ts:34 msgid "Renew Certificate Success" msgstr "" @@ -1403,11 +1417,11 @@ msgstr "" msgid "Renew successfully" msgstr "" -#: src/language/constants.ts:31 +#: src/language/constants.ts:32 msgid "Requested with wrong parameters" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:439 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:453 msgid "Reset" msgstr "" @@ -1428,7 +1442,7 @@ msgid "Running" msgstr "" #: src/components/ChatGPT/ChatGPT.vue:252 -#: src/views/certificate/CertificateEditor.vue:242 +#: src/views/certificate/CertificateEditor.vue:249 #: src/views/config/ConfigEdit.vue:96 #: src/views/domain/DomainEdit.vue:263 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:120 @@ -1449,7 +1463,7 @@ msgstr "" #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:39 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:104 -#: src/views/certificate/CertificateEditor.vue:45 +#: src/views/certificate/CertificateEditor.vue:46 #: src/views/preference/Preference.vue:66 msgid "Save successfully" msgstr "" @@ -1480,8 +1494,8 @@ msgstr "" #: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:46 #: src/components/StdDesign/StdDataDisplay/methods/sortable.ts:126 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:182 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:221 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:196 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:235 #: src/views/config/ConfigEdit.vue:40 #: src/views/domain/DomainList.vue:81 #: src/views/environment/Environment.vue:139 @@ -1538,21 +1552,21 @@ msgstr "" msgid "Sites List" msgstr "" -#: src/views/certificate/CertificateEditor.vue:191 +#: src/views/certificate/CertificateEditor.vue:198 msgid "SSL Certificate Content" msgstr "" -#: src/views/certificate/CertificateEditor.vue:204 +#: src/views/certificate/CertificateEditor.vue:211 msgid "SSL Certificate Key Content" msgstr "" -#: src/views/certificate/Certificate.vue:75 -#: src/views/certificate/CertificateEditor.vue:176 +#: src/views/certificate/Certificate.vue:80 +#: src/views/certificate/CertificateEditor.vue:177 msgid "SSL Certificate Key Path" msgstr "" -#: src/views/certificate/Certificate.vue:67 -#: src/views/certificate/CertificateEditor.vue:161 +#: src/views/certificate/Certificate.vue:72 +#: src/views/certificate/CertificateEditor.vue:162 msgid "SSL Certificate Path" msgstr "" @@ -1566,7 +1580,7 @@ msgid "Stable" msgstr "" #: src/views/certificate/ACMEUser.vue:42 -#: src/views/certificate/Certificate.vue:83 +#: src/views/certificate/Certificate.vue:88 #: src/views/domain/DomainList.vue:22 #: src/views/environment/Environment.vue:76 #: src/views/stream/StreamList.vue:22 @@ -1603,6 +1617,34 @@ msgstr "" msgid "Switch to light theme" msgstr "" +#: src/views/certificate/Certificate.vue:42 +msgid "Sync Certificate" +msgstr "" + +#: src/components/Notification/detailRender.ts:25 +msgid "Sync Certificate %{cert_name} to %{env_name} failed, please upgrade the remote Nginx UI to the latest version" +msgstr "" + +#: src/components/Notification/detailRender.ts:29 +msgid "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}" +msgstr "" + +#: src/components/Notification/detailRender.ts:17 +msgid "Sync Certificate %{cert_name} to %{env_name} successfully" +msgstr "" + +#: src/language/constants.ts:38 +msgid "Sync Certificate Error" +msgstr "" + +#: src/language/constants.ts:37 +msgid "Sync Certificate Success" +msgstr "" + +#: src/views/certificate/CertificateEditor.vue:191 +msgid "Sync to" +msgstr "" + #: src/routes/index.ts:248 msgid "System" msgstr "" @@ -1629,11 +1671,11 @@ msgstr "" msgid "The filename cannot contain the following characters: %{c}" msgstr "" -#: src/views/certificate/CertificateEditor.vue:194 +#: src/views/certificate/CertificateEditor.vue:201 msgid "The input is not a SSL Certificate" msgstr "" -#: src/views/certificate/CertificateEditor.vue:207 +#: src/views/certificate/CertificateEditor.vue:214 msgid "The input is not a SSL Certificate Key" msgstr "" @@ -1641,11 +1683,11 @@ msgstr "" msgid "The model name should only contain letters, unicode, numbers, hyphens, dashes, and dots." msgstr "" -#: src/views/certificate/CertificateEditor.vue:165 +#: src/views/certificate/CertificateEditor.vue:166 msgid "The path exists, but the file is not a certificate" msgstr "" -#: src/views/certificate/CertificateEditor.vue:180 +#: src/views/certificate/CertificateEditor.vue:181 msgid "The path exists, but the file is not a private key" msgstr "" @@ -1671,17 +1713,17 @@ msgstr "" msgid "The username or password is incorrect" msgstr "" -#: src/views/certificate/CertificateEditor.vue:101 +#: src/views/certificate/CertificateEditor.vue:102 msgid "This Auto Cert item is invalid, please remove it." msgstr "" -#: src/views/certificate/CertificateEditor.vue:91 +#: src/views/certificate/CertificateEditor.vue:92 msgid "This certificate is managed by Nginx UI" msgstr "" -#: src/views/certificate/CertificateEditor.vue:149 -#: src/views/certificate/CertificateEditor.vue:163 -#: src/views/certificate/CertificateEditor.vue:178 +#: src/views/certificate/CertificateEditor.vue:150 +#: src/views/certificate/CertificateEditor.vue:164 +#: src/views/certificate/CertificateEditor.vue:179 msgid "This field is required" msgstr "" @@ -1693,7 +1735,7 @@ msgstr "" msgid "Tips" msgstr "" -#: src/views/notification/Notification.vue:18 +#: src/views/notification/Notification.vue:19 msgid "Title" msgstr "" @@ -1711,12 +1753,12 @@ msgstr "" #: src/views/certificate/Certificate.vue:37 #: src/views/config/config.ts:12 -#: src/views/notification/Notification.vue:12 +#: src/views/notification/Notification.vue:13 msgid "Type" msgstr "" #: src/views/certificate/ACMEUser.vue:53 -#: src/views/certificate/DNSCredential.vue:23 +#: src/views/certificate/DNSCredential.vue:27 #: src/views/config/config.ts:27 #: src/views/config/ConfigEdit.vue:121 #: src/views/domain/components/RightSettings.vue:86 @@ -1738,7 +1780,7 @@ msgstr "" msgid "Upgrade" msgstr "" -#: src/language/constants.ts:28 +#: src/language/constants.ts:29 msgid "Upgraded successfully" msgstr "" @@ -1772,11 +1814,11 @@ msgid "Username (*)" msgstr "" #: src/views/certificate/ACMEUser.vue:87 -#: src/views/certificate/Certificate.vue:92 +#: src/views/certificate/Certificate.vue:97 msgid "Valid" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:477 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:491 #: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:103 msgid "View" msgstr "" @@ -1800,7 +1842,7 @@ msgstr "" msgid "Warning" msgstr "" -#: src/views/certificate/DNSCredential.vue:52 +#: src/views/certificate/DNSCredential.vue:56 msgid "We will add one or more TXT records to the DNS records of your domain for ownership verification." msgstr "" diff --git a/app/src/language/ru_RU/app.po b/app/src/language/ru_RU/app.po index decaa718..3fc4e063 100644 --- a/app/src/language/ru_RU/app.po +++ b/app/src/language/ru_RU/app.po @@ -24,10 +24,10 @@ msgid "ACME User" msgstr "Пользователь" #: src/views/certificate/ACMEUser.vue:59 -#: src/views/certificate/Certificate.vue:108 -#: src/views/certificate/DNSCredential.vue:29 src/views/config/config.ts:34 +#: src/views/certificate/Certificate.vue:113 +#: src/views/certificate/DNSCredential.vue:33 src/views/config/config.ts:34 #: src/views/domain/DomainList.vue:47 src/views/environment/Environment.vue:129 -#: src/views/notification/Notification.vue:35 +#: src/views/notification/Notification.vue:37 #: src/views/stream/StreamList.vue:47 src/views/user/User.vue:43 msgid "Action" msgstr "Действие" @@ -95,7 +95,7 @@ msgid "Arch" msgstr "" #: src/components/Notification/Notification.vue:84 -#: src/views/notification/Notification.vue:70 +#: src/views/notification/Notification.vue:72 #, fuzzy msgid "Are you sure you want to clear all notifications?" msgstr "Вы уверены, что хотите удалить все уведомления?" @@ -105,7 +105,12 @@ msgstr "Вы уверены, что хотите удалить все увед msgid "Are you sure you want to clear the record of chat?" msgstr "Вы уверены, что хотите очистить сообщения чата?" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:509 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:551 +#, fuzzy +msgid "Are you sure you want to delete this item permanently?" +msgstr "Вы уверены, что хотите удалить?" + +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:523 #, fuzzy msgid "Are you sure you want to delete this item?" msgstr "Вы уверены, что хотите удалить?" @@ -115,7 +120,7 @@ msgstr "Вы уверены, что хотите удалить?" msgid "Are you sure you want to delete?" msgstr "Вы уверены, что хотите удалить?" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:523 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:537 #, fuzzy msgid "Are you sure you want to recover this item?" msgstr "Вы уверены, что хотите удалить эту директиву?" @@ -163,7 +168,7 @@ msgstr "Автообновление отключено для %{name}" msgid "Auto-renewal enabled for %{name}" msgstr "Автообновление включено для %{name}" -#: src/views/certificate/CertificateEditor.vue:235 +#: src/views/certificate/CertificateEditor.vue:242 #: src/views/config/Config.vue:73 src/views/config/ConfigEdit.vue:87 #: src/views/domain/DomainEdit.vue:256 src/views/nginx_log/NginxLog.vue:168 #: src/views/stream/StreamEdit.vue:247 @@ -192,7 +197,7 @@ msgid "Basic Mode" msgstr "Простой режим" #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:54 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:445 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:459 #, fuzzy msgid "Batch Modify" msgstr "Изменение конфигурации" @@ -237,12 +242,12 @@ msgstr "Сертификат действителен" msgid "Certificate Renewal Interval" msgstr "Сертификат действителен" -#: src/views/certificate/CertificateEditor.vue:127 +#: src/views/certificate/CertificateEditor.vue:128 #: src/views/domain/cert/Cert.vue:33 msgid "Certificate Status" msgstr "Статус сертификата" -#: src/routes/index.ts:119 src/views/certificate/Certificate.vue:124 +#: src/routes/index.ts:119 src/views/certificate/Certificate.vue:129 #, fuzzy msgid "Certificates" msgstr "Статус сертификата" @@ -276,12 +281,12 @@ msgstr "Очистка переменных среды" #: src/components/ChatGPT/ChatGPT.vue:276 #: src/components/Notification/Notification.vue:89 -#: src/views/notification/Notification.vue:75 +#: src/views/notification/Notification.vue:77 msgid "Clear" msgstr "Очистить" #: src/components/Notification/Notification.vue:40 -#: src/views/notification/Notification.vue:44 +#: src/views/notification/Notification.vue:46 #, fuzzy msgid "Cleared successfully" msgstr "Отключено успешно" @@ -350,7 +355,7 @@ msgstr "Создан в" msgid "Create Another" msgstr "Создать еще" -#: src/views/notification/Notification.vue:29 src/views/user/User.vue:31 +#: src/views/notification/Notification.vue:31 src/views/user/User.vue:31 msgid "Created at" msgstr "Создан в" @@ -393,7 +398,7 @@ msgstr "База данных (Опционально, по умолчанию: msgid "Days" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:516 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:530 #: src/views/domain/DomainList.vue:155 #: src/views/domain/ngx_conf/NgxServer.vue:114 #: src/views/domain/ngx_conf/NgxUpstream.vue:126 @@ -401,6 +406,10 @@ msgstr "" msgid "Delete" msgstr "Удалить" +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:558 +msgid "Delete Permanently" +msgstr "" + #: src/views/domain/DomainList.vue:78 msgid "Delete site: %{site_name}" msgstr "" @@ -409,7 +418,7 @@ msgstr "" msgid "Delete stream: %{stream_name}" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:171 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:185 #, fuzzy msgid "Deleted successfully" msgstr "Отключено успешно" @@ -442,7 +451,7 @@ msgstr "Saved successfully" msgid "Description" msgstr "Описание" -#: src/views/notification/Notification.vue:25 +#: src/views/notification/Notification.vue:26 msgid "Details" msgstr "" @@ -489,7 +498,7 @@ msgstr "Отключено успешно" msgid "Disk IO" msgstr "Нагрузка на Диск IO" -#: src/routes/index.ts:162 src/views/certificate/DNSCredential.vue:36 +#: src/routes/index.ts:162 src/views/certificate/DNSCredential.vue:40 msgid "DNS Credentials" msgstr "" @@ -557,17 +566,17 @@ msgstr "" msgid "Domain Config Created Successfully" msgstr "Конфигурация домена успешно создана" -#: src/views/certificate/CertificateEditor.vue:111 +#: src/views/certificate/CertificateEditor.vue:112 #, fuzzy msgid "Domains list is empty, try to reopen Auto Cert for %{config}" msgstr "" "Список доменов пуст, попробуйте заново открыть авто-сертификат для %{config}" -#: src/language/constants.ts:25 +#: src/language/constants.ts:26 msgid "Download latest release error" msgstr "Ошибка загрузки последней версии" -#: src/language/constants.ts:24 +#: src/language/constants.ts:25 msgid "Downloading latest release" msgstr "Загрузка последней версии" @@ -695,6 +704,11 @@ msgstr "Использовать для сайта Let's Encrypt" msgid "Environment" msgstr "Окружение" +#: src/language/constants.ts:21 +#, fuzzy +msgid "Environment variables cleaned" +msgstr "Настройка переменных сред" + #: src/views/dashboard/Environments.vue:82 #, fuzzy msgid "Environments" @@ -712,7 +726,7 @@ msgstr "Ошибка логирования" msgid "Executable Path" msgstr "Исполняемый путь" -#: src/views/certificate/Certificate.vue:96 +#: src/views/certificate/Certificate.vue:101 msgid "Expired" msgstr "" @@ -756,7 +770,7 @@ msgstr "Не удалось сохранить, обнаружены синта msgid "File" msgstr "Файл" -#: src/language/constants.ts:30 +#: src/language/constants.ts:31 msgid "File exists" msgstr "Файл существует" @@ -796,7 +810,7 @@ msgstr "Ошибка форматирования %{msg}" msgid "Format successfully" msgstr "Форматирование успешно" -#: src/views/certificate/Certificate.vue:43 +#: src/views/certificate/Certificate.vue:44 #, fuzzy msgid "General Certificate" msgstr "Сертификат действителен" @@ -846,12 +860,12 @@ msgstr "" msgid "If left blank, the default CA Dir will be used." msgstr "" -#: src/views/certificate/Certificate.vue:131 +#: src/views/certificate/Certificate.vue:136 #, fuzzy msgid "Import" msgstr "Экспорт" -#: src/routes/index.ts:153 src/views/certificate/CertificateEditor.vue:84 +#: src/routes/index.ts:153 src/views/certificate/CertificateEditor.vue:85 #, fuzzy msgid "Import Certificate" msgstr "Статус сертификата" @@ -860,11 +874,11 @@ msgstr "Статус сертификата" msgid "Info" msgstr "" -#: src/language/constants.ts:23 +#: src/language/constants.ts:24 msgid "Initial core upgrader error" msgstr "Ошибка первоначального обновления ядра" -#: src/language/constants.ts:22 +#: src/language/constants.ts:23 msgid "Initialing core upgrader" msgstr "Инициализация программы обновления ядра" @@ -890,7 +904,7 @@ msgstr "" msgid "Invalid" msgstr "Действительный" -#: src/views/certificate/Certificate.vue:139 +#: src/views/certificate/Certificate.vue:144 #, fuzzy msgid "Issue wildcard certificate" msgstr "Получить сертификат" @@ -909,7 +923,7 @@ msgstr "Сертификат успешно выдан" msgid "Jwt Secret" msgstr "" -#: src/views/certificate/Certificate.vue:61 +#: src/views/certificate/Certificate.vue:66 #: src/views/certificate/WildcardCertificate.vue:79 #: src/views/domain/cert/components/AutoCertStepOne.vue:80 #, fuzzy @@ -928,8 +942,8 @@ msgstr "Оставьте пустым без изменений" msgid "Leave blank for the default: https://api.openai.com/" msgstr "Оставьте пустым для значения по умолчанию: https://api.openai.com/" -#: src/views/certificate/CertificateEditor.vue:200 -#: src/views/certificate/CertificateEditor.vue:213 +#: src/views/certificate/CertificateEditor.vue:207 +#: src/views/certificate/CertificateEditor.vue:220 #, fuzzy msgid "Leave blank will not change anything" msgstr "Оставьте пустым без изменений" @@ -976,7 +990,7 @@ msgstr "Location" msgid "Locations" msgstr "Locations" -#: src/views/certificate/CertificateEditor.vue:223 +#: src/views/certificate/CertificateEditor.vue:230 #, fuzzy msgid "Log" msgstr "Логин" @@ -1033,7 +1047,7 @@ msgstr "Управление потоками" msgid "Manage Users" msgstr "Пользователи" -#: src/views/certificate/Certificate.vue:42 +#: src/views/certificate/Certificate.vue:43 #, fuzzy msgid "Managed Certificate" msgstr "Управление сертификатами" @@ -1058,12 +1072,12 @@ msgstr "Расширенный режим" #: src/components/ChatGPT/ChatGPT.vue:249 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:194 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:491 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:505 #, fuzzy msgid "Modify" msgstr "Изменить" -#: src/routes/index.ts:144 src/views/certificate/CertificateEditor.vue:84 +#: src/routes/index.ts:144 src/views/certificate/CertificateEditor.vue:85 #, fuzzy msgid "Modify Certificate" msgstr "Статус сертификата" @@ -1084,8 +1098,8 @@ msgstr "Одиночная директива" #: src/views/certificate/ACMEUser.vue:13 #: src/views/certificate/Certificate.vue:20 -#: src/views/certificate/CertificateEditor.vue:146 -#: src/views/certificate/DNSCredential.vue:10 src/views/config/config.ts:7 +#: src/views/certificate/CertificateEditor.vue:147 +#: src/views/certificate/DNSCredential.vue:11 src/views/config/config.ts:7 #: src/views/domain/cert/ChangeCert.vue:17 #: src/views/domain/components/RightSettings.vue:83 #: src/views/domain/components/SiteDuplicate.vue:133 @@ -1162,12 +1176,13 @@ msgstr "Nginx успешно перезапущен" #: src/components/ChatGPT/ChatGPT.vue:270 #: src/components/Notification/Notification.vue:82 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:507 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:521 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:535 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:549 #: src/views/domain/DomainList.vue:144 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:90 #: src/views/domain/ngx_conf/LocationEditor.vue:71 -#: src/views/notification/Notification.vue:68 +#: src/views/notification/Notification.vue:70 #: src/views/preference/BasicSettings.vue:101 #: src/views/stream/StreamList.vue:165 msgid "No" @@ -1177,7 +1192,7 @@ msgstr "Нет" msgid "Node Secret" msgstr "" -#: src/views/certificate/Certificate.vue:102 +#: src/views/certificate/Certificate.vue:107 msgid "Not After" msgstr "" @@ -1189,12 +1204,12 @@ msgstr "Не найден" msgid "Not Valid Before: %{date}" msgstr "Недействительно до: %{date}" -#: src/views/certificate/DNSCredential.vue:45 +#: src/views/certificate/DNSCredential.vue:49 #: src/views/domain/cert/components/AutoCertStepOne.vue:45 msgid "Note" msgstr "Заметка" -#: src/views/notification/Notification.vue:60 +#: src/views/notification/Notification.vue:62 #, fuzzy msgid "Notification" msgstr "Сертификат" @@ -1227,8 +1242,9 @@ msgstr "" #: src/components/ChatGPT/ChatGPT.vue:271 #: src/components/Notification/Notification.vue:83 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:56 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:508 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:522 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:536 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:550 #: src/views/domain/cert/components/ObtainCert.vue:136 #: src/views/domain/components/Deploy.vue:20 #: src/views/domain/components/RightSettings.vue:50 @@ -1236,14 +1252,14 @@ msgstr "" #: src/views/domain/ngx_conf/NgxConfigEditor.vue:49 #: src/views/domain/ngx_conf/NgxServer.vue:83 #: src/views/domain/ngx_conf/NgxUpstream.vue:32 -#: src/views/notification/Notification.vue:69 +#: src/views/notification/Notification.vue:71 #: src/views/stream/components/Deploy.vue:20 #: src/views/stream/components/RightSettings.vue:50 #: src/views/stream/StreamList.vue:166 msgid "OK" msgstr "" -#: src/views/certificate/DNSCredential.vue:55 +#: src/views/certificate/DNSCredential.vue:59 msgid "Once the verification is complete, the records will be removed." msgstr "" @@ -1295,15 +1311,15 @@ msgstr "Пароль (*)" msgid "Path" msgstr "Путь" -#: src/language/constants.ts:27 +#: src/language/constants.ts:28 msgid "Perform core upgrade error" msgstr "" -#: src/language/constants.ts:26 +#: src/language/constants.ts:27 msgid "Performing core upgrade" msgstr "" -#: src/views/certificate/DNSCredential.vue:49 +#: src/views/certificate/DNSCredential.vue:53 msgid "" "Please fill in the API authentication credentials provided by your DNS " "provider." @@ -1336,7 +1352,7 @@ msgstr "Введите ваш пароль!" msgid "Please input your username!" msgstr "Введите ваше имя пользователя!" -#: src/views/certificate/DNSCredential.vue:58 +#: src/views/certificate/DNSCredential.vue:62 msgid "" "Please note that the unit of time configurations below are all in seconds." msgstr "" @@ -1371,7 +1387,7 @@ msgstr "Запретить удаление пользователя по умо msgid "Project Team" msgstr "Команда проекта" -#: src/views/certificate/DNSCredential.vue:18 +#: src/views/certificate/DNSCredential.vue:19 msgid "Provider" msgstr "Провайдер" @@ -1385,11 +1401,11 @@ msgstr "Чтение" msgid "Receive" msgstr "Принято" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:530 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:544 msgid "Recover" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:179 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:193 #, fuzzy msgid "Recovered Successfully" msgstr "Успешно сохранено" @@ -1464,12 +1480,12 @@ msgstr "Имя пользователя" msgid "Renew Certificate" msgstr "Сертификат действителен" -#: src/language/constants.ts:34 +#: src/language/constants.ts:35 #, fuzzy msgid "Renew Certificate Error" msgstr "Сертификат действителен" -#: src/language/constants.ts:33 +#: src/language/constants.ts:34 #, fuzzy msgid "Renew Certificate Success" msgstr "Сертификат действителен" @@ -1480,11 +1496,11 @@ msgstr "Сертификат действителен" msgid "Renew successfully" msgstr "Активировано успешно" -#: src/language/constants.ts:31 +#: src/language/constants.ts:32 msgid "Requested with wrong parameters" msgstr "Запрос с неправильными параметрами" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:439 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:453 msgid "Reset" msgstr "Сброс" @@ -1506,7 +1522,7 @@ msgid "Running" msgstr "Выполняется" #: src/components/ChatGPT/ChatGPT.vue:252 -#: src/views/certificate/CertificateEditor.vue:242 +#: src/views/certificate/CertificateEditor.vue:249 #: src/views/config/ConfigEdit.vue:96 src/views/domain/DomainEdit.vue:263 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:120 #: src/views/preference/Preference.vue:130 src/views/stream/StreamEdit.vue:254 @@ -1524,7 +1540,7 @@ msgstr "Ошибка сохранения %{msg}" #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:39 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:104 -#: src/views/certificate/CertificateEditor.vue:45 +#: src/views/certificate/CertificateEditor.vue:46 #: src/views/preference/Preference.vue:66 #, fuzzy msgid "Save successfully" @@ -1555,8 +1571,8 @@ msgstr "Отправлено" #: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:46 #: src/components/StdDesign/StdDataDisplay/methods/sortable.ts:126 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:182 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:221 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:196 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:235 #: src/views/config/ConfigEdit.vue:40 src/views/domain/DomainList.vue:81 #: src/views/environment/Environment.vue:139 src/views/other/Install.vue:70 #: src/views/preference/Preference.vue:70 src/views/stream/StreamList.vue:113 @@ -1613,24 +1629,24 @@ msgstr "Логи сайтов" msgid "Sites List" msgstr "Список сайтов" -#: src/views/certificate/CertificateEditor.vue:191 +#: src/views/certificate/CertificateEditor.vue:198 #, fuzzy msgid "SSL Certificate Content" msgstr "Содержание сертификата SSL" -#: src/views/certificate/CertificateEditor.vue:204 +#: src/views/certificate/CertificateEditor.vue:211 #, fuzzy msgid "SSL Certificate Key Content" msgstr "Содержание ключа сертификата SSL" -#: src/views/certificate/Certificate.vue:75 -#: src/views/certificate/CertificateEditor.vue:176 +#: src/views/certificate/Certificate.vue:80 +#: src/views/certificate/CertificateEditor.vue:177 #, fuzzy msgid "SSL Certificate Key Path" msgstr "Путь к ключу сертификата SSL" -#: src/views/certificate/Certificate.vue:67 -#: src/views/certificate/CertificateEditor.vue:161 +#: src/views/certificate/Certificate.vue:72 +#: src/views/certificate/CertificateEditor.vue:162 #, fuzzy msgid "SSL Certificate Path" msgstr "Путь к сертификату SSL" @@ -1646,7 +1662,7 @@ msgid "Stable" msgstr "Таблица" #: src/views/certificate/ACMEUser.vue:42 -#: src/views/certificate/Certificate.vue:83 src/views/domain/DomainList.vue:22 +#: src/views/certificate/Certificate.vue:88 src/views/domain/DomainList.vue:22 #: src/views/environment/Environment.vue:76 src/views/stream/StreamList.vue:22 msgid "Status" msgstr "Статус" @@ -1682,6 +1698,42 @@ msgstr "" msgid "Switch to light theme" msgstr "" +#: src/views/certificate/Certificate.vue:42 +#, fuzzy +msgid "Sync Certificate" +msgstr "Сертификат действителен" + +#: src/components/Notification/detailRender.ts:25 +#, fuzzy +msgid "" +"Sync Certificate %{cert_name} to %{env_name} failed, please upgrade the " +"remote Nginx UI to the latest version" +msgstr "Продублированно %{conf_name} в %{node_name}" + +#: src/components/Notification/detailRender.ts:29 +#, fuzzy +msgid "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}" +msgstr "Продублированно %{conf_name} в %{node_name}" + +#: src/components/Notification/detailRender.ts:17 +#, fuzzy +msgid "Sync Certificate %{cert_name} to %{env_name} successfully" +msgstr "Продублированно %{conf_name} в %{node_name}" + +#: src/language/constants.ts:38 +#, fuzzy +msgid "Sync Certificate Error" +msgstr "Сертификат действителен" + +#: src/language/constants.ts:37 +#, fuzzy +msgid "Sync Certificate Success" +msgstr "Сертификат действителен" + +#: src/views/certificate/CertificateEditor.vue:191 +msgid "Sync to" +msgstr "" + #: src/routes/index.ts:248 msgid "System" msgstr "Система" @@ -1712,11 +1764,11 @@ msgstr "" msgid "The filename cannot contain the following characters: %{c}" msgstr "The filename cannot contain the following characters: %{c}" -#: src/views/certificate/CertificateEditor.vue:194 +#: src/views/certificate/CertificateEditor.vue:201 msgid "The input is not a SSL Certificate" msgstr "" -#: src/views/certificate/CertificateEditor.vue:207 +#: src/views/certificate/CertificateEditor.vue:214 #, fuzzy msgid "The input is not a SSL Certificate Key" msgstr "Путь к ключу сертификата SSL" @@ -1727,12 +1779,12 @@ msgid "" "dashes, and dots." msgstr "" -#: src/views/certificate/CertificateEditor.vue:165 +#: src/views/certificate/CertificateEditor.vue:166 #, fuzzy msgid "The path exists, but the file is not a certificate" msgstr "Путь к ключу сертификата SSL" -#: src/views/certificate/CertificateEditor.vue:180 +#: src/views/certificate/CertificateEditor.vue:181 msgid "The path exists, but the file is not a private key" msgstr "Путь существует, но файл не является приватным ключом" @@ -1767,18 +1819,18 @@ msgstr "URL-адрес неверный" msgid "The username or password is incorrect" msgstr "Имя пользователя или пароль неверны" -#: src/views/certificate/CertificateEditor.vue:101 +#: src/views/certificate/CertificateEditor.vue:102 #, fuzzy msgid "This Auto Cert item is invalid, please remove it." msgstr "Этот элемент автосертификата недействителен, удалите его.." -#: src/views/certificate/CertificateEditor.vue:91 +#: src/views/certificate/CertificateEditor.vue:92 msgid "This certificate is managed by Nginx UI" msgstr "Этот сертификат находится под управлением Nginx UI" -#: src/views/certificate/CertificateEditor.vue:149 -#: src/views/certificate/CertificateEditor.vue:163 -#: src/views/certificate/CertificateEditor.vue:178 +#: src/views/certificate/CertificateEditor.vue:150 +#: src/views/certificate/CertificateEditor.vue:164 +#: src/views/certificate/CertificateEditor.vue:179 msgid "This field is required" msgstr "" @@ -1790,7 +1842,7 @@ msgstr "Это поле обязательно к заполнению" msgid "Tips" msgstr "" -#: src/views/notification/Notification.vue:18 +#: src/views/notification/Notification.vue:19 msgid "Title" msgstr "Заголовок" @@ -1811,12 +1863,12 @@ msgid "Trash" msgstr "" #: src/views/certificate/Certificate.vue:37 src/views/config/config.ts:12 -#: src/views/notification/Notification.vue:12 +#: src/views/notification/Notification.vue:13 msgid "Type" msgstr "Тип" #: src/views/certificate/ACMEUser.vue:53 -#: src/views/certificate/DNSCredential.vue:23 src/views/config/config.ts:27 +#: src/views/certificate/DNSCredential.vue:27 src/views/config/config.ts:27 #: src/views/config/ConfigEdit.vue:121 #: src/views/domain/components/RightSettings.vue:86 #: src/views/domain/DomainList.vue:41 src/views/environment/Environment.vue:122 @@ -1835,7 +1887,7 @@ msgstr "Обновлено успешно" msgid "Upgrade" msgstr "Обновление" -#: src/language/constants.ts:28 +#: src/language/constants.ts:29 #, fuzzy msgid "Upgraded successfully" msgstr "Обновление успешно выполнено" @@ -1870,11 +1922,11 @@ msgid "Username (*)" msgstr "Имя пользователя (*)" #: src/views/certificate/ACMEUser.vue:87 -#: src/views/certificate/Certificate.vue:92 +#: src/views/certificate/Certificate.vue:97 msgid "Valid" msgstr "Действительный" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:477 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:491 #: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:103 msgid "View" msgstr "Просмотр" @@ -1899,7 +1951,7 @@ msgstr "Простой режим" msgid "Warning" msgstr "Внимание" -#: src/views/certificate/DNSCredential.vue:52 +#: src/views/certificate/DNSCredential.vue:56 msgid "" "We will add one or more TXT records to the DNS records of your domain for " "ownership verification." diff --git a/app/src/language/vi_VN/app.po b/app/src/language/vi_VN/app.po index 98cc4cea..bff87896 100644 --- a/app/src/language/vi_VN/app.po +++ b/app/src/language/vi_VN/app.po @@ -24,10 +24,10 @@ msgid "ACME User" msgstr "Người dùng" #: src/views/certificate/ACMEUser.vue:59 -#: src/views/certificate/Certificate.vue:108 -#: src/views/certificate/DNSCredential.vue:29 src/views/config/config.ts:34 +#: src/views/certificate/Certificate.vue:113 +#: src/views/certificate/DNSCredential.vue:33 src/views/config/config.ts:34 #: src/views/domain/DomainList.vue:47 src/views/environment/Environment.vue:129 -#: src/views/notification/Notification.vue:35 +#: src/views/notification/Notification.vue:37 #: src/views/stream/StreamList.vue:47 src/views/user/User.vue:43 msgid "Action" msgstr "Hành động" @@ -95,7 +95,7 @@ msgid "Arch" msgstr "" #: src/components/Notification/Notification.vue:84 -#: src/views/notification/Notification.vue:70 +#: src/views/notification/Notification.vue:72 #, fuzzy msgid "Are you sure you want to clear all notifications?" msgstr "Bạn có chắc chắn muốn xóa tất cả thông báo không ?" @@ -105,7 +105,12 @@ msgstr "Bạn có chắc chắn muốn xóa tất cả thông báo không ?" msgid "Are you sure you want to clear the record of chat?" msgstr "Bạn có chắc chắn muốn xóa lịch sử trò chuyện không ?" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:509 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:551 +#, fuzzy +msgid "Are you sure you want to delete this item permanently?" +msgstr "Bạn chắc chắn muốn xóa nó " + +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:523 #, fuzzy msgid "Are you sure you want to delete this item?" msgstr "Bạn chắc chắn muốn xóa nó " @@ -115,7 +120,7 @@ msgstr "Bạn chắc chắn muốn xóa nó " msgid "Are you sure you want to delete?" msgstr "Bạn chắc chắn muốn xóa nó " -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:523 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:537 #, fuzzy msgid "Are you sure you want to recover this item?" msgstr "Bạn chắc chắn muốn xoá directive này ?" @@ -163,7 +168,7 @@ msgstr "Đã tắt tự động gia hạn SSL cho %{name}" msgid "Auto-renewal enabled for %{name}" msgstr "Đã bật tự động gia hạn SSL cho %{name}" -#: src/views/certificate/CertificateEditor.vue:235 +#: src/views/certificate/CertificateEditor.vue:242 #: src/views/config/Config.vue:73 src/views/config/ConfigEdit.vue:87 #: src/views/domain/DomainEdit.vue:256 src/views/nginx_log/NginxLog.vue:168 #: src/views/stream/StreamEdit.vue:247 @@ -192,7 +197,7 @@ msgid "Basic Mode" msgstr "Cơ bản" #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:54 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:445 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:459 #, fuzzy msgid "Batch Modify" msgstr "Sửa đổi cấu hình" @@ -237,12 +242,12 @@ msgstr "Chứng chỉ SSL hợp lệ" msgid "Certificate Renewal Interval" msgstr "Chứng chỉ SSL hợp lệ" -#: src/views/certificate/CertificateEditor.vue:127 +#: src/views/certificate/CertificateEditor.vue:128 #: src/views/domain/cert/Cert.vue:33 msgid "Certificate Status" msgstr "Trạng thái chứng chỉ" -#: src/routes/index.ts:119 src/views/certificate/Certificate.vue:124 +#: src/routes/index.ts:119 src/views/certificate/Certificate.vue:129 #, fuzzy msgid "Certificates" msgstr "Chứng chỉ" @@ -276,12 +281,12 @@ msgstr "Xoá các biến môi trường" #: src/components/ChatGPT/ChatGPT.vue:276 #: src/components/Notification/Notification.vue:89 -#: src/views/notification/Notification.vue:75 +#: src/views/notification/Notification.vue:77 msgid "Clear" msgstr "Xoá" #: src/components/Notification/Notification.vue:40 -#: src/views/notification/Notification.vue:44 +#: src/views/notification/Notification.vue:46 #, fuzzy msgid "Cleared successfully" msgstr "Đã xóa thành công" @@ -350,7 +355,7 @@ msgstr "Ngày tạo" msgid "Create Another" msgstr "Tạo thêm" -#: src/views/notification/Notification.vue:29 src/views/user/User.vue:31 +#: src/views/notification/Notification.vue:31 src/views/user/User.vue:31 msgid "Created at" msgstr "Ngày tạo" @@ -393,7 +398,7 @@ msgstr "Tên cơ sở dữ liệu (Tuỳ chọn, Mặc định là: database)" msgid "Days" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:516 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:530 #: src/views/domain/DomainList.vue:155 #: src/views/domain/ngx_conf/NgxServer.vue:114 #: src/views/domain/ngx_conf/NgxUpstream.vue:126 @@ -401,6 +406,10 @@ msgstr "" msgid "Delete" msgstr "Xoá" +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:558 +msgid "Delete Permanently" +msgstr "" + #: src/views/domain/DomainList.vue:78 msgid "Delete site: %{site_name}" msgstr "Xoá trang web: %{site_name}" @@ -410,7 +419,7 @@ msgstr "Xoá trang web: %{site_name}" msgid "Delete stream: %{stream_name}" msgstr "Xoá trang web: %{site_name}" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:171 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:185 #, fuzzy msgid "Deleted successfully" msgstr "Đã xoá thành công" @@ -443,7 +452,7 @@ msgstr "Triển khai thành công" msgid "Description" msgstr "Mô tả" -#: src/views/notification/Notification.vue:25 +#: src/views/notification/Notification.vue:26 msgid "Details" msgstr "Chi tiết" @@ -490,7 +499,7 @@ msgstr "Đã tắt thành công" msgid "Disk IO" msgstr "Disk IO" -#: src/routes/index.ts:162 src/views/certificate/DNSCredential.vue:36 +#: src/routes/index.ts:162 src/views/certificate/DNSCredential.vue:40 msgid "DNS Credentials" msgstr "Xác thực DNS" @@ -558,17 +567,17 @@ msgstr "" msgid "Domain Config Created Successfully" msgstr "Tên miền đã được tạo" -#: src/views/certificate/CertificateEditor.vue:111 +#: src/views/certificate/CertificateEditor.vue:112 msgid "Domains list is empty, try to reopen Auto Cert for %{config}" msgstr "" "Danh sách tên miền rỗng, hãy thử mở lại chức năng Tạo chứng chỉ tự động cho " "%{config}" -#: src/language/constants.ts:25 +#: src/language/constants.ts:26 msgid "Download latest release error" msgstr "Đã có lỗi xảy ra khi tải về phiên bản mới nhất" -#: src/language/constants.ts:24 +#: src/language/constants.ts:25 msgid "Downloading latest release" msgstr "Đang tải phiên bản mới nhất" @@ -696,6 +705,11 @@ msgstr "Bảo mật trang web với Let's Encrypt" msgid "Environment" msgstr "Environment" +#: src/language/constants.ts:21 +#, fuzzy +msgid "Environment variables cleaned" +msgstr "Đặt biến môi trường" + #: src/views/dashboard/Environments.vue:82 #, fuzzy msgid "Environments" @@ -713,7 +727,7 @@ msgstr "Log lỗi" msgid "Executable Path" msgstr "Đường dẫn thực thi" -#: src/views/certificate/Certificate.vue:96 +#: src/views/certificate/Certificate.vue:101 msgid "Expired" msgstr "Đã hết hạn" @@ -757,7 +771,7 @@ msgstr "Không lưu được, đã phát hiện thấy (các) lỗi cú pháp tr msgid "File" msgstr "Tệp tin" -#: src/language/constants.ts:30 +#: src/language/constants.ts:31 msgid "File exists" msgstr "Tệp tin đã tồn tại" @@ -798,7 +812,7 @@ msgstr "Lưu lỗi %{msg}" msgid "Format successfully" msgstr "Định dạng thành công" -#: src/views/certificate/Certificate.vue:43 +#: src/views/certificate/Certificate.vue:44 #, fuzzy msgid "General Certificate" msgstr "Chứng chỉ chung" @@ -848,12 +862,12 @@ msgstr "" msgid "If left blank, the default CA Dir will be used." msgstr "" -#: src/views/certificate/Certificate.vue:131 +#: src/views/certificate/Certificate.vue:136 #, fuzzy msgid "Import" msgstr "Xuất" -#: src/routes/index.ts:153 src/views/certificate/CertificateEditor.vue:84 +#: src/routes/index.ts:153 src/views/certificate/CertificateEditor.vue:85 #, fuzzy msgid "Import Certificate" msgstr "Chứng chỉ" @@ -862,11 +876,11 @@ msgstr "Chứng chỉ" msgid "Info" msgstr "Thông tin" -#: src/language/constants.ts:23 +#: src/language/constants.ts:24 msgid "Initial core upgrader error" msgstr "Không thể khởi tạo trình nâng cấp" -#: src/language/constants.ts:22 +#: src/language/constants.ts:23 msgid "Initialing core upgrader" msgstr "Đang khởi tạo trình nâng cấp" @@ -892,7 +906,7 @@ msgstr "" msgid "Invalid" msgstr "Hợp lệ" -#: src/views/certificate/Certificate.vue:139 +#: src/views/certificate/Certificate.vue:144 #, fuzzy msgid "Issue wildcard certificate" msgstr "Gia hạn SSL" @@ -911,7 +925,7 @@ msgstr "Cấp chứng chỉ thành công" msgid "Jwt Secret" msgstr "" -#: src/views/certificate/Certificate.vue:61 +#: src/views/certificate/Certificate.vue:66 #: src/views/certificate/WildcardCertificate.vue:79 #: src/views/domain/cert/components/AutoCertStepOne.vue:80 #, fuzzy @@ -930,8 +944,8 @@ msgstr "Bỏ trống nếu không thay đổi" msgid "Leave blank for the default: https://api.openai.com/" msgstr "Bỏ trống để sử dụng địa chỉ mặc định: https://api.openai.com/" -#: src/views/certificate/CertificateEditor.vue:200 -#: src/views/certificate/CertificateEditor.vue:213 +#: src/views/certificate/CertificateEditor.vue:207 +#: src/views/certificate/CertificateEditor.vue:220 #, fuzzy msgid "Leave blank will not change anything" msgstr "Bỏ trống nếu không thay đổi" @@ -978,7 +992,7 @@ msgstr "Location" msgid "Locations" msgstr "Locations" -#: src/views/certificate/CertificateEditor.vue:223 +#: src/views/certificate/CertificateEditor.vue:230 #, fuzzy msgid "Log" msgstr "Log" @@ -1035,7 +1049,7 @@ msgstr "Quản lý Website" msgid "Manage Users" msgstr "Người dùng" -#: src/views/certificate/Certificate.vue:42 +#: src/views/certificate/Certificate.vue:43 msgid "Managed Certificate" msgstr "" @@ -1059,12 +1073,12 @@ msgstr "Run Mode" #: src/components/ChatGPT/ChatGPT.vue:249 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:194 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:491 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:505 #, fuzzy msgid "Modify" msgstr "Sửa" -#: src/routes/index.ts:144 src/views/certificate/CertificateEditor.vue:84 +#: src/routes/index.ts:144 src/views/certificate/CertificateEditor.vue:85 #, fuzzy msgid "Modify Certificate" msgstr "Sửa chứng chỉ" @@ -1085,8 +1099,8 @@ msgstr "Single Directive" #: src/views/certificate/ACMEUser.vue:13 #: src/views/certificate/Certificate.vue:20 -#: src/views/certificate/CertificateEditor.vue:146 -#: src/views/certificate/DNSCredential.vue:10 src/views/config/config.ts:7 +#: src/views/certificate/CertificateEditor.vue:147 +#: src/views/certificate/DNSCredential.vue:11 src/views/config/config.ts:7 #: src/views/domain/cert/ChangeCert.vue:17 #: src/views/domain/components/RightSettings.vue:83 #: src/views/domain/components/SiteDuplicate.vue:133 @@ -1162,12 +1176,13 @@ msgstr "Restart Nginx thành công" #: src/components/ChatGPT/ChatGPT.vue:270 #: src/components/Notification/Notification.vue:82 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:507 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:521 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:535 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:549 #: src/views/domain/DomainList.vue:144 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:90 #: src/views/domain/ngx_conf/LocationEditor.vue:71 -#: src/views/notification/Notification.vue:68 +#: src/views/notification/Notification.vue:70 #: src/views/preference/BasicSettings.vue:101 #: src/views/stream/StreamList.vue:165 msgid "No" @@ -1177,7 +1192,7 @@ msgstr "Không" msgid "Node Secret" msgstr "" -#: src/views/certificate/Certificate.vue:102 +#: src/views/certificate/Certificate.vue:107 msgid "Not After" msgstr "Không phải sau khi" @@ -1189,12 +1204,12 @@ msgstr "Không tìm thấy" msgid "Not Valid Before: %{date}" msgstr "Không hợp lệ trước: %{date}" -#: src/views/certificate/DNSCredential.vue:45 +#: src/views/certificate/DNSCredential.vue:49 #: src/views/domain/cert/components/AutoCertStepOne.vue:45 msgid "Note" msgstr "Ghi chú" -#: src/views/notification/Notification.vue:60 +#: src/views/notification/Notification.vue:62 #, fuzzy msgid "Notification" msgstr "Thông báo" @@ -1227,8 +1242,9 @@ msgstr "" #: src/components/ChatGPT/ChatGPT.vue:271 #: src/components/Notification/Notification.vue:83 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:56 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:508 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:522 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:536 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:550 #: src/views/domain/cert/components/ObtainCert.vue:136 #: src/views/domain/components/Deploy.vue:20 #: src/views/domain/components/RightSettings.vue:50 @@ -1236,14 +1252,14 @@ msgstr "" #: src/views/domain/ngx_conf/NgxConfigEditor.vue:49 #: src/views/domain/ngx_conf/NgxServer.vue:83 #: src/views/domain/ngx_conf/NgxUpstream.vue:32 -#: src/views/notification/Notification.vue:69 +#: src/views/notification/Notification.vue:71 #: src/views/stream/components/Deploy.vue:20 #: src/views/stream/components/RightSettings.vue:50 #: src/views/stream/StreamList.vue:166 msgid "OK" msgstr "" -#: src/views/certificate/DNSCredential.vue:55 +#: src/views/certificate/DNSCredential.vue:59 msgid "Once the verification is complete, the records will be removed." msgstr "Sau khi quá trình xác minh hoàn tất, bản ghi sẽ bị xóa." @@ -1295,15 +1311,15 @@ msgstr "Mật khẩu (*)" msgid "Path" msgstr "Đường dẫn" -#: src/language/constants.ts:27 +#: src/language/constants.ts:28 msgid "Perform core upgrade error" msgstr "Nâng cấp core không thành công" -#: src/language/constants.ts:26 +#: src/language/constants.ts:27 msgid "Performing core upgrade" msgstr "Nâng cấp core" -#: src/views/certificate/DNSCredential.vue:49 +#: src/views/certificate/DNSCredential.vue:53 msgid "" "Please fill in the API authentication credentials provided by your DNS " "provider." @@ -1338,7 +1354,7 @@ msgstr "Vui lòng nhập mật khẩu!" msgid "Please input your username!" msgstr "Vui lòng nhập username!" -#: src/views/certificate/DNSCredential.vue:58 +#: src/views/certificate/DNSCredential.vue:62 msgid "" "Please note that the unit of time configurations below are all in seconds." msgstr "Lưu ý đơn vị cấu hình thời gian bên dưới được tính bằng giây." @@ -1373,7 +1389,7 @@ msgstr "Cấm xóa người dùng mặc định" msgid "Project Team" msgstr "Đội ngũ phát triển" -#: src/views/certificate/DNSCredential.vue:18 +#: src/views/certificate/DNSCredential.vue:19 msgid "Provider" msgstr "Nhà cung cấp" @@ -1387,11 +1403,11 @@ msgstr "Đọc" msgid "Receive" msgstr "Nhận" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:530 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:544 msgid "Recover" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:179 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:193 #, fuzzy msgid "Recovered Successfully" msgstr "Xoá thành công" @@ -1466,12 +1482,12 @@ msgstr "Username" msgid "Renew Certificate" msgstr "Gia hạn chứng chỉ SSL" -#: src/language/constants.ts:34 +#: src/language/constants.ts:35 #, fuzzy msgid "Renew Certificate Error" msgstr "Gia hạn chứng chỉ SSL thất bại" -#: src/language/constants.ts:33 +#: src/language/constants.ts:34 #, fuzzy msgid "Renew Certificate Success" msgstr "Gia hạn chứng chỉ SSL thành công" @@ -1482,11 +1498,11 @@ msgstr "Gia hạn chứng chỉ SSL thành công" msgid "Renew successfully" msgstr "Gia hạn chứng chỉ SSL" -#: src/language/constants.ts:31 +#: src/language/constants.ts:32 msgid "Requested with wrong parameters" msgstr "Yêu cầu có chứa tham số sai" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:439 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:453 msgid "Reset" msgstr "Đặt lại" @@ -1508,7 +1524,7 @@ msgid "Running" msgstr "Running" #: src/components/ChatGPT/ChatGPT.vue:252 -#: src/views/certificate/CertificateEditor.vue:242 +#: src/views/certificate/CertificateEditor.vue:249 #: src/views/config/ConfigEdit.vue:96 src/views/domain/DomainEdit.vue:263 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:120 #: src/views/preference/Preference.vue:130 src/views/stream/StreamEdit.vue:254 @@ -1526,7 +1542,7 @@ msgstr "Đã xảy ra lỗi khi lưu %{msg}" #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:39 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:104 -#: src/views/certificate/CertificateEditor.vue:45 +#: src/views/certificate/CertificateEditor.vue:46 #: src/views/preference/Preference.vue:66 #, fuzzy msgid "Save successfully" @@ -1557,8 +1573,8 @@ msgstr "Gửi" #: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:46 #: src/components/StdDesign/StdDataDisplay/methods/sortable.ts:126 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:182 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:221 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:196 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:235 #: src/views/config/ConfigEdit.vue:40 src/views/domain/DomainList.vue:81 #: src/views/environment/Environment.vue:139 src/views/other/Install.vue:70 #: src/views/preference/Preference.vue:70 src/views/stream/StreamList.vue:113 @@ -1616,21 +1632,21 @@ msgstr "Logs" msgid "Sites List" msgstr "Danh sách Website" -#: src/views/certificate/CertificateEditor.vue:191 +#: src/views/certificate/CertificateEditor.vue:198 msgid "SSL Certificate Content" msgstr "" -#: src/views/certificate/CertificateEditor.vue:204 +#: src/views/certificate/CertificateEditor.vue:211 msgid "SSL Certificate Key Content" msgstr "" -#: src/views/certificate/Certificate.vue:75 -#: src/views/certificate/CertificateEditor.vue:176 +#: src/views/certificate/Certificate.vue:80 +#: src/views/certificate/CertificateEditor.vue:177 msgid "SSL Certificate Key Path" msgstr "" -#: src/views/certificate/Certificate.vue:67 -#: src/views/certificate/CertificateEditor.vue:161 +#: src/views/certificate/Certificate.vue:72 +#: src/views/certificate/CertificateEditor.vue:162 msgid "SSL Certificate Path" msgstr "" @@ -1644,7 +1660,7 @@ msgid "Stable" msgstr "Ổn định" #: src/views/certificate/ACMEUser.vue:42 -#: src/views/certificate/Certificate.vue:83 src/views/domain/DomainList.vue:22 +#: src/views/certificate/Certificate.vue:88 src/views/domain/DomainList.vue:22 #: src/views/environment/Environment.vue:76 src/views/stream/StreamList.vue:22 msgid "Status" msgstr "Trạng thái" @@ -1680,6 +1696,42 @@ msgstr "Sử dụng Dark theme" msgid "Switch to light theme" msgstr "Sử dụng Light theme" +#: src/views/certificate/Certificate.vue:42 +#, fuzzy +msgid "Sync Certificate" +msgstr "Gia hạn chứng chỉ SSL" + +#: src/components/Notification/detailRender.ts:25 +#, fuzzy +msgid "" +"Sync Certificate %{cert_name} to %{env_name} failed, please upgrade the " +"remote Nginx UI to the latest version" +msgstr "Nhân bản %{conf_name} thành %{node_name} thành công" + +#: src/components/Notification/detailRender.ts:29 +#, fuzzy +msgid "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}" +msgstr "Nhân bản %{conf_name} thành %{node_name} thành công" + +#: src/components/Notification/detailRender.ts:17 +#, fuzzy +msgid "Sync Certificate %{cert_name} to %{env_name} successfully" +msgstr "Nhân bản %{conf_name} thành %{node_name} thành công" + +#: src/language/constants.ts:38 +#, fuzzy +msgid "Sync Certificate Error" +msgstr "Gia hạn chứng chỉ SSL thất bại" + +#: src/language/constants.ts:37 +#, fuzzy +msgid "Sync Certificate Success" +msgstr "Gia hạn chứng chỉ SSL thành công" + +#: src/views/certificate/CertificateEditor.vue:191 +msgid "Sync to" +msgstr "" + #: src/routes/index.ts:248 msgid "System" msgstr "Thông tin" @@ -1710,11 +1762,11 @@ msgstr "" msgid "The filename cannot contain the following characters: %{c}" msgstr "Tên tệp không thể chứa các ký tự sau: %{c}" -#: src/views/certificate/CertificateEditor.vue:194 +#: src/views/certificate/CertificateEditor.vue:201 msgid "The input is not a SSL Certificate" msgstr "" -#: src/views/certificate/CertificateEditor.vue:207 +#: src/views/certificate/CertificateEditor.vue:214 msgid "The input is not a SSL Certificate Key" msgstr "" @@ -1724,11 +1776,11 @@ msgid "" "dashes, and dots." msgstr "" -#: src/views/certificate/CertificateEditor.vue:165 +#: src/views/certificate/CertificateEditor.vue:166 msgid "The path exists, but the file is not a certificate" msgstr "" -#: src/views/certificate/CertificateEditor.vue:180 +#: src/views/certificate/CertificateEditor.vue:181 msgid "The path exists, but the file is not a private key" msgstr "" @@ -1760,17 +1812,17 @@ msgstr "" msgid "The username or password is incorrect" msgstr "Tên người dùng hoặc mật khẩu không chính xác" -#: src/views/certificate/CertificateEditor.vue:101 +#: src/views/certificate/CertificateEditor.vue:102 msgid "This Auto Cert item is invalid, please remove it." msgstr "Mục Chứng chỉ tự động này không hợp lệ, vui lòng xóa nó" -#: src/views/certificate/CertificateEditor.vue:91 +#: src/views/certificate/CertificateEditor.vue:92 msgid "This certificate is managed by Nginx UI" msgstr "Chứng chỉ này được quản lý bởi Nginx UI" -#: src/views/certificate/CertificateEditor.vue:149 -#: src/views/certificate/CertificateEditor.vue:163 -#: src/views/certificate/CertificateEditor.vue:178 +#: src/views/certificate/CertificateEditor.vue:150 +#: src/views/certificate/CertificateEditor.vue:164 +#: src/views/certificate/CertificateEditor.vue:179 msgid "This field is required" msgstr "" @@ -1782,7 +1834,7 @@ msgstr "Trường này không được để trống" msgid "Tips" msgstr "" -#: src/views/notification/Notification.vue:18 +#: src/views/notification/Notification.vue:19 msgid "Title" msgstr "Tiêu đề" @@ -1807,12 +1859,12 @@ msgid "Trash" msgstr "" #: src/views/certificate/Certificate.vue:37 src/views/config/config.ts:12 -#: src/views/notification/Notification.vue:12 +#: src/views/notification/Notification.vue:13 msgid "Type" msgstr "Loại" #: src/views/certificate/ACMEUser.vue:53 -#: src/views/certificate/DNSCredential.vue:23 src/views/config/config.ts:27 +#: src/views/certificate/DNSCredential.vue:27 src/views/config/config.ts:27 #: src/views/config/ConfigEdit.vue:121 #: src/views/domain/components/RightSettings.vue:86 #: src/views/domain/DomainList.vue:41 src/views/environment/Environment.vue:122 @@ -1831,7 +1883,7 @@ msgstr "Cập nhật thành công" msgid "Upgrade" msgstr "Cập nhật" -#: src/language/constants.ts:28 +#: src/language/constants.ts:29 #, fuzzy msgid "Upgraded successfully" msgstr "Cập nhật thành công" @@ -1866,11 +1918,11 @@ msgid "Username (*)" msgstr "Username (*)" #: src/views/certificate/ACMEUser.vue:87 -#: src/views/certificate/Certificate.vue:92 +#: src/views/certificate/Certificate.vue:97 msgid "Valid" msgstr "Hợp lệ" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:477 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:491 #: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:103 msgid "View" msgstr "Xem" @@ -1896,7 +1948,7 @@ msgstr "Cơ bản" msgid "Warning" msgstr "Lưu ý" -#: src/views/certificate/DNSCredential.vue:52 +#: src/views/certificate/DNSCredential.vue:56 msgid "" "We will add one or more TXT records to the DNS records of your domain for " "ownership verification." diff --git a/app/src/language/zh_CN/app.mo b/app/src/language/zh_CN/app.mo index c6263a1c..0b8fd386 100644 Binary files a/app/src/language/zh_CN/app.mo and b/app/src/language/zh_CN/app.mo differ diff --git a/app/src/language/zh_CN/app.po b/app/src/language/zh_CN/app.po index b53507f5..fc9fed57 100644 --- a/app/src/language/zh_CN/app.po +++ b/app/src/language/zh_CN/app.po @@ -27,10 +27,10 @@ msgid "ACME User" msgstr "ACME 用户" #: src/views/certificate/ACMEUser.vue:59 -#: src/views/certificate/Certificate.vue:108 -#: src/views/certificate/DNSCredential.vue:29 src/views/config/config.ts:34 +#: src/views/certificate/Certificate.vue:113 +#: src/views/certificate/DNSCredential.vue:33 src/views/config/config.ts:34 #: src/views/domain/DomainList.vue:47 src/views/environment/Environment.vue:129 -#: src/views/notification/Notification.vue:35 +#: src/views/notification/Notification.vue:37 #: src/views/stream/StreamList.vue:47 src/views/user/User.vue:43 msgid "Action" msgstr "操作" @@ -95,7 +95,7 @@ msgid "Arch" msgstr "架构" #: src/components/Notification/Notification.vue:84 -#: src/views/notification/Notification.vue:70 +#: src/views/notification/Notification.vue:72 msgid "Are you sure you want to clear all notifications?" msgstr "您确定要清除所有通知吗?" @@ -103,7 +103,11 @@ msgstr "您确定要清除所有通知吗?" msgid "Are you sure you want to clear the record of chat?" msgstr "你确定你要清除聊天记录吗?" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:509 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:551 +msgid "Are you sure you want to delete this item permanently?" +msgstr "您确定要永久删除此项目吗?" + +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:523 msgid "Are you sure you want to delete this item?" msgstr "你确定要删除这个项目吗?" @@ -111,7 +115,7 @@ msgstr "你确定要删除这个项目吗?" msgid "Are you sure you want to delete?" msgstr "您确定要删除吗?" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:523 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:537 msgid "Are you sure you want to recover this item?" msgstr "您确定要恢复这个项目吗?" @@ -156,7 +160,7 @@ msgstr "成功关闭 %{name} 自动续签" msgid "Auto-renewal enabled for %{name}" msgstr "成功启用 %{name} 自动续签" -#: src/views/certificate/CertificateEditor.vue:235 +#: src/views/certificate/CertificateEditor.vue:242 #: src/views/config/Config.vue:73 src/views/config/ConfigEdit.vue:87 #: src/views/domain/DomainEdit.vue:256 src/views/nginx_log/NginxLog.vue:168 #: src/views/stream/StreamEdit.vue:247 @@ -183,7 +187,7 @@ msgid "Basic Mode" msgstr "基本模式" #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:54 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:445 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:459 msgid "Batch Modify" msgstr "批量修改" @@ -226,12 +230,12 @@ msgstr "此证书有效" msgid "Certificate Renewal Interval" msgstr "证书续期间隔" -#: src/views/certificate/CertificateEditor.vue:127 +#: src/views/certificate/CertificateEditor.vue:128 #: src/views/domain/cert/Cert.vue:33 msgid "Certificate Status" msgstr "证书状态" -#: src/routes/index.ts:119 src/views/certificate/Certificate.vue:124 +#: src/routes/index.ts:119 src/views/certificate/Certificate.vue:129 msgid "Certificates" msgstr "证书" @@ -262,12 +266,12 @@ msgstr "正在清理环境变量" #: src/components/ChatGPT/ChatGPT.vue:276 #: src/components/Notification/Notification.vue:89 -#: src/views/notification/Notification.vue:75 +#: src/views/notification/Notification.vue:77 msgid "Clear" msgstr "清空" #: src/components/Notification/Notification.vue:40 -#: src/views/notification/Notification.vue:44 +#: src/views/notification/Notification.vue:46 msgid "Cleared successfully" msgstr "清除成功" @@ -332,7 +336,7 @@ msgstr "创建" msgid "Create Another" msgstr "再创建一个" -#: src/views/notification/Notification.vue:29 src/views/user/User.vue:31 +#: src/views/notification/Notification.vue:31 src/views/user/User.vue:31 msgid "Created at" msgstr "创建时间" @@ -375,7 +379,7 @@ msgstr "数据库 (可选,默认: database)" msgid "Days" msgstr "天" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:516 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:530 #: src/views/domain/DomainList.vue:155 #: src/views/domain/ngx_conf/NgxServer.vue:114 #: src/views/domain/ngx_conf/NgxUpstream.vue:126 @@ -383,6 +387,10 @@ msgstr "天" msgid "Delete" msgstr "删除" +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:558 +msgid "Delete Permanently" +msgstr "彻底删除" + #: src/views/domain/DomainList.vue:78 msgid "Delete site: %{site_name}" msgstr "删除站点: %{site_name}" @@ -391,7 +399,7 @@ msgstr "删除站点: %{site_name}" msgid "Delete stream: %{stream_name}" msgstr "删除 Stream: %{stream_name}" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:171 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:185 msgid "Deleted successfully" msgstr "删除成功" @@ -422,7 +430,7 @@ msgstr "部署成功" msgid "Description" msgstr "描述" -#: src/views/notification/Notification.vue:25 +#: src/views/notification/Notification.vue:26 msgid "Details" msgstr "详情" @@ -467,7 +475,7 @@ msgstr "禁用成功" msgid "Disk IO" msgstr "磁盘 IO" -#: src/routes/index.ts:162 src/views/certificate/DNSCredential.vue:36 +#: src/routes/index.ts:162 src/views/certificate/DNSCredential.vue:40 msgid "DNS Credentials" msgstr "DNS 凭证" @@ -526,15 +534,15 @@ msgstr "域名" msgid "Domain Config Created Successfully" msgstr "域名配置文件创建成功" -#: src/views/certificate/CertificateEditor.vue:111 +#: src/views/certificate/CertificateEditor.vue:112 msgid "Domains list is empty, try to reopen Auto Cert for %{config}" msgstr "域名列表为空,请尝试为 %{config} 重新打开证书自动续期。" -#: src/language/constants.ts:25 +#: src/language/constants.ts:26 msgid "Download latest release error" msgstr "下载最新版本错误" -#: src/language/constants.ts:24 +#: src/language/constants.ts:25 msgid "Downloading latest release" msgstr "下载最新版本" @@ -654,6 +662,10 @@ msgstr "用 Let's Encrypt 对网站进行加密" msgid "Environment" msgstr "环境" +#: src/language/constants.ts:21 +msgid "Environment variables cleaned" +msgstr "环境变量已清理" + #: src/views/dashboard/Environments.vue:82 msgid "Environments" msgstr "环境" @@ -670,7 +682,7 @@ msgstr "错误日志" msgid "Executable Path" msgstr "可执行文件路径" -#: src/views/certificate/Certificate.vue:96 +#: src/views/certificate/Certificate.vue:101 msgid "Expired" msgstr "已过期" @@ -712,7 +724,7 @@ msgstr "保存失败,在配置中检测到语法错误。" msgid "File" msgstr "文件" -#: src/language/constants.ts:30 +#: src/language/constants.ts:31 msgid "File exists" msgstr "文件已存在" @@ -749,7 +761,7 @@ msgstr "保存错误 %{msg}" msgid "Format successfully" msgstr "格式化成功" -#: src/views/certificate/Certificate.vue:43 +#: src/views/certificate/Certificate.vue:44 msgid "General Certificate" msgstr "普通证书" @@ -797,11 +809,11 @@ msgstr "HTTP01" msgid "If left blank, the default CA Dir will be used." msgstr "如果留空,则使用默认 CA Dir。" -#: src/views/certificate/Certificate.vue:131 +#: src/views/certificate/Certificate.vue:136 msgid "Import" msgstr "导入" -#: src/routes/index.ts:153 src/views/certificate/CertificateEditor.vue:84 +#: src/routes/index.ts:153 src/views/certificate/CertificateEditor.vue:85 msgid "Import Certificate" msgstr "导入证书" @@ -809,11 +821,11 @@ msgstr "导入证书" msgid "Info" msgstr "信息" -#: src/language/constants.ts:23 +#: src/language/constants.ts:24 msgid "Initial core upgrader error" msgstr "初始化核心升级程序错误" -#: src/language/constants.ts:22 +#: src/language/constants.ts:23 msgid "Initialing core upgrader" msgstr "初始化核心升级器" @@ -837,7 +849,7 @@ msgstr "间隔" msgid "Invalid" msgstr "无效的" -#: src/views/certificate/Certificate.vue:139 +#: src/views/certificate/Certificate.vue:144 msgid "Issue wildcard certificate" msgstr "签发通配符证书" @@ -853,7 +865,7 @@ msgstr "证书申请成功" msgid "Jwt Secret" msgstr "Jwt 密钥" -#: src/views/certificate/Certificate.vue:61 +#: src/views/certificate/Certificate.vue:66 #: src/views/certificate/WildcardCertificate.vue:79 #: src/views/domain/cert/components/AutoCertStepOne.vue:80 msgid "Key Type" @@ -871,8 +883,8 @@ msgstr "留空表示不修改" msgid "Leave blank for the default: https://api.openai.com/" msgstr "留空为默认:https://api.openai.com/" -#: src/views/certificate/CertificateEditor.vue:200 -#: src/views/certificate/CertificateEditor.vue:213 +#: src/views/certificate/CertificateEditor.vue:207 +#: src/views/certificate/CertificateEditor.vue:220 msgid "Leave blank will not change anything" msgstr "留空不做任何更改" @@ -914,7 +926,7 @@ msgstr "Location" msgid "Locations" msgstr "Locations" -#: src/views/certificate/CertificateEditor.vue:223 +#: src/views/certificate/CertificateEditor.vue:230 msgid "Log" msgstr "日志" @@ -972,7 +984,7 @@ msgstr "管理 Stream" msgid "Manage Users" msgstr "用户管理" -#: src/views/certificate/Certificate.vue:42 +#: src/views/certificate/Certificate.vue:43 msgid "Managed Certificate" msgstr "托管证书" @@ -995,11 +1007,11 @@ msgstr "模型" #: src/components/ChatGPT/ChatGPT.vue:249 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:194 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:491 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:505 msgid "Modify" msgstr "修改" -#: src/routes/index.ts:144 src/views/certificate/CertificateEditor.vue:84 +#: src/routes/index.ts:144 src/views/certificate/CertificateEditor.vue:85 msgid "Modify Certificate" msgstr "修改证书" @@ -1017,8 +1029,8 @@ msgstr "多行指令" #: src/views/certificate/ACMEUser.vue:13 #: src/views/certificate/Certificate.vue:20 -#: src/views/certificate/CertificateEditor.vue:146 -#: src/views/certificate/DNSCredential.vue:10 src/views/config/config.ts:7 +#: src/views/certificate/CertificateEditor.vue:147 +#: src/views/certificate/DNSCredential.vue:11 src/views/config/config.ts:7 #: src/views/domain/cert/ChangeCert.vue:17 #: src/views/domain/components/RightSettings.vue:83 #: src/views/domain/components/SiteDuplicate.vue:133 @@ -1091,12 +1103,13 @@ msgstr "Nginx 重启成功" #: src/components/ChatGPT/ChatGPT.vue:270 #: src/components/Notification/Notification.vue:82 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:507 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:521 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:535 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:549 #: src/views/domain/DomainList.vue:144 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:90 #: src/views/domain/ngx_conf/LocationEditor.vue:71 -#: src/views/notification/Notification.vue:68 +#: src/views/notification/Notification.vue:70 #: src/views/preference/BasicSettings.vue:101 #: src/views/stream/StreamList.vue:165 msgid "No" @@ -1106,7 +1119,7 @@ msgstr "取消" msgid "Node Secret" msgstr "节点密钥" -#: src/views/certificate/Certificate.vue:102 +#: src/views/certificate/Certificate.vue:107 msgid "Not After" msgstr "有效期" @@ -1118,12 +1131,12 @@ msgstr "找不到页面" msgid "Not Valid Before: %{date}" msgstr "此前无效: %{date}" -#: src/views/certificate/DNSCredential.vue:45 +#: src/views/certificate/DNSCredential.vue:49 #: src/views/domain/cert/components/AutoCertStepOne.vue:45 msgid "Note" msgstr "注意" -#: src/views/notification/Notification.vue:60 +#: src/views/notification/Notification.vue:62 msgid "Notification" msgstr "通知" @@ -1153,8 +1166,9 @@ msgstr "确定" #: src/components/ChatGPT/ChatGPT.vue:271 #: src/components/Notification/Notification.vue:83 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:56 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:508 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:522 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:536 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:550 #: src/views/domain/cert/components/ObtainCert.vue:136 #: src/views/domain/components/Deploy.vue:20 #: src/views/domain/components/RightSettings.vue:50 @@ -1162,14 +1176,14 @@ msgstr "确定" #: src/views/domain/ngx_conf/NgxConfigEditor.vue:49 #: src/views/domain/ngx_conf/NgxServer.vue:83 #: src/views/domain/ngx_conf/NgxUpstream.vue:32 -#: src/views/notification/Notification.vue:69 +#: src/views/notification/Notification.vue:71 #: src/views/stream/components/Deploy.vue:20 #: src/views/stream/components/RightSettings.vue:50 #: src/views/stream/StreamList.vue:166 msgid "OK" msgstr "确定" -#: src/views/certificate/DNSCredential.vue:55 +#: src/views/certificate/DNSCredential.vue:59 msgid "Once the verification is complete, the records will be removed." msgstr "一旦验证完成,这些记录将被删除。" @@ -1220,15 +1234,15 @@ msgstr "密码 (*)" msgid "Path" msgstr "路径" -#: src/language/constants.ts:27 +#: src/language/constants.ts:28 msgid "Perform core upgrade error" msgstr "执行核心升级错误" -#: src/language/constants.ts:26 +#: src/language/constants.ts:27 msgid "Performing core upgrade" msgstr "正在进行核心升级" -#: src/views/certificate/DNSCredential.vue:49 +#: src/views/certificate/DNSCredential.vue:53 msgid "" "Please fill in the API authentication credentials provided by your DNS " "provider." @@ -1261,7 +1275,7 @@ msgstr "请输入您的密码!" msgid "Please input your username!" msgstr "请输入您的用户名!" -#: src/views/certificate/DNSCredential.vue:58 +#: src/views/certificate/DNSCredential.vue:62 msgid "" "Please note that the unit of time configurations below are all in seconds." msgstr "请注意,下面的时间单位配置均以秒为单位。" @@ -1295,7 +1309,7 @@ msgstr "禁止删除默认用户" msgid "Project Team" msgstr "项目团队" -#: src/views/certificate/DNSCredential.vue:18 +#: src/views/certificate/DNSCredential.vue:19 msgid "Provider" msgstr "提供商" @@ -1309,11 +1323,11 @@ msgstr "读" msgid "Receive" msgstr "下载" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:530 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:544 msgid "Recover" msgstr "恢复" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:179 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:193 msgid "Recovered Successfully" msgstr "恢复成功" @@ -1379,11 +1393,11 @@ msgstr "重命名" msgid "Renew Certificate" msgstr "更新证书" -#: src/language/constants.ts:34 +#: src/language/constants.ts:35 msgid "Renew Certificate Error" msgstr "证书续期错误" -#: src/language/constants.ts:33 +#: src/language/constants.ts:34 msgid "Renew Certificate Success" msgstr "证书续期成功" @@ -1392,11 +1406,11 @@ msgstr "证书续期成功" msgid "Renew successfully" msgstr "更新成功" -#: src/language/constants.ts:31 +#: src/language/constants.ts:32 msgid "Requested with wrong parameters" msgstr "请求参数错误" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:439 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:453 msgid "Reset" msgstr "重置" @@ -1417,7 +1431,7 @@ msgid "Running" msgstr "运行中" #: src/components/ChatGPT/ChatGPT.vue:252 -#: src/views/certificate/CertificateEditor.vue:242 +#: src/views/certificate/CertificateEditor.vue:249 #: src/views/config/ConfigEdit.vue:96 src/views/domain/DomainEdit.vue:263 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:120 #: src/views/preference/Preference.vue:130 src/views/stream/StreamEdit.vue:254 @@ -1435,7 +1449,7 @@ msgstr "保存错误 %{msg}" #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:39 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:104 -#: src/views/certificate/CertificateEditor.vue:45 +#: src/views/certificate/CertificateEditor.vue:46 #: src/views/preference/Preference.vue:66 msgid "Save successfully" msgstr "保存成功" @@ -1465,8 +1479,8 @@ msgstr "上传" #: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:46 #: src/components/StdDesign/StdDataDisplay/methods/sortable.ts:126 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:182 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:221 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:196 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:235 #: src/views/config/ConfigEdit.vue:40 src/views/domain/DomainList.vue:81 #: src/views/environment/Environment.vue:139 src/views/other/Install.vue:70 #: src/views/preference/Preference.vue:70 src/views/stream/StreamList.vue:113 @@ -1521,21 +1535,21 @@ msgstr "站点列表" msgid "Sites List" msgstr "站点列表" -#: src/views/certificate/CertificateEditor.vue:191 +#: src/views/certificate/CertificateEditor.vue:198 msgid "SSL Certificate Content" msgstr "SSL 证书内容" -#: src/views/certificate/CertificateEditor.vue:204 +#: src/views/certificate/CertificateEditor.vue:211 msgid "SSL Certificate Key Content" msgstr "SSL 证书密钥内容" -#: src/views/certificate/Certificate.vue:75 -#: src/views/certificate/CertificateEditor.vue:176 +#: src/views/certificate/Certificate.vue:80 +#: src/views/certificate/CertificateEditor.vue:177 msgid "SSL Certificate Key Path" msgstr "SSL证书密钥路径" -#: src/views/certificate/Certificate.vue:67 -#: src/views/certificate/CertificateEditor.vue:161 +#: src/views/certificate/Certificate.vue:72 +#: src/views/certificate/CertificateEditor.vue:162 msgid "SSL Certificate Path" msgstr "SSL证书路径" @@ -1548,7 +1562,7 @@ msgid "Stable" msgstr "稳定" #: src/views/certificate/ACMEUser.vue:42 -#: src/views/certificate/Certificate.vue:83 src/views/domain/DomainList.vue:22 +#: src/views/certificate/Certificate.vue:88 src/views/domain/DomainList.vue:22 #: src/views/environment/Environment.vue:76 src/views/stream/StreamList.vue:22 msgid "Status" msgstr "状态" @@ -1583,6 +1597,38 @@ msgstr "切换到深色主题" msgid "Switch to light theme" msgstr "切换到浅色" +#: src/views/certificate/Certificate.vue:42 +msgid "Sync Certificate" +msgstr "同步证书" + +#: src/components/Notification/detailRender.ts:25 +msgid "" +"Sync Certificate %{cert_name} to %{env_name} failed, please upgrade the " +"remote Nginx UI to the latest version" +msgstr "" +"同步证书 %{cert_name} 到 %{env_name} 失败,请先将远程的 Nginx UI 升级到最新版" +"本" + +#: src/components/Notification/detailRender.ts:29 +msgid "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}" +msgstr "同步证书 %{cert_name} 到 %{env_name} 失败,响应:%{resp}" + +#: src/components/Notification/detailRender.ts:17 +msgid "Sync Certificate %{cert_name} to %{env_name} successfully" +msgstr "证书 %{cert_name} 已成功同步到 %{env_name}" + +#: src/language/constants.ts:38 +msgid "Sync Certificate Error" +msgstr "同步证书错误" + +#: src/language/constants.ts:37 +msgid "Sync Certificate Success" +msgstr "同步证书成功" + +#: src/views/certificate/CertificateEditor.vue:191 +msgid "Sync to" +msgstr "同步到" + #: src/routes/index.ts:248 msgid "System" msgstr "系统" @@ -1612,11 +1658,11 @@ msgstr "" msgid "The filename cannot contain the following characters: %{c}" msgstr "文件名不能包含以下字符: %{c}" -#: src/views/certificate/CertificateEditor.vue:194 +#: src/views/certificate/CertificateEditor.vue:201 msgid "The input is not a SSL Certificate" msgstr "输入的内容不是 SSL 证书" -#: src/views/certificate/CertificateEditor.vue:207 +#: src/views/certificate/CertificateEditor.vue:214 msgid "The input is not a SSL Certificate Key" msgstr "输入的内容不是 SSL 证书密钥" @@ -1626,11 +1672,11 @@ msgid "" "dashes, and dots." msgstr "模型只能包含字母、Unicode、数字、连词符、破折号和点。" -#: src/views/certificate/CertificateEditor.vue:165 +#: src/views/certificate/CertificateEditor.vue:166 msgid "The path exists, but the file is not a certificate" msgstr "路径存在,但文件不是证书" -#: src/views/certificate/CertificateEditor.vue:180 +#: src/views/certificate/CertificateEditor.vue:181 msgid "The path exists, but the file is not a private key" msgstr "路径存在,但文件不是私钥" @@ -1660,17 +1706,17 @@ msgstr "URL 无效." msgid "The username or password is incorrect" msgstr "用户名或密码错误" -#: src/views/certificate/CertificateEditor.vue:101 +#: src/views/certificate/CertificateEditor.vue:102 msgid "This Auto Cert item is invalid, please remove it." msgstr "这个证书自动续期项目是无效的,请删除。" -#: src/views/certificate/CertificateEditor.vue:91 +#: src/views/certificate/CertificateEditor.vue:92 msgid "This certificate is managed by Nginx UI" msgstr "该证书由 Nginx UI 托管" -#: src/views/certificate/CertificateEditor.vue:149 -#: src/views/certificate/CertificateEditor.vue:163 -#: src/views/certificate/CertificateEditor.vue:178 +#: src/views/certificate/CertificateEditor.vue:150 +#: src/views/certificate/CertificateEditor.vue:164 +#: src/views/certificate/CertificateEditor.vue:179 msgid "This field is required" msgstr "此字段必填" @@ -1682,7 +1728,7 @@ msgstr "该字段不能为空" msgid "Tips" msgstr "提示" -#: src/views/notification/Notification.vue:18 +#: src/views/notification/Notification.vue:19 msgid "Title" msgstr "标题" @@ -1705,12 +1751,12 @@ msgid "Trash" msgstr "回收站" #: src/views/certificate/Certificate.vue:37 src/views/config/config.ts:12 -#: src/views/notification/Notification.vue:12 +#: src/views/notification/Notification.vue:13 msgid "Type" msgstr "类型" #: src/views/certificate/ACMEUser.vue:53 -#: src/views/certificate/DNSCredential.vue:23 src/views/config/config.ts:27 +#: src/views/certificate/DNSCredential.vue:27 src/views/config/config.ts:27 #: src/views/config/ConfigEdit.vue:121 #: src/views/domain/components/RightSettings.vue:86 #: src/views/domain/DomainList.vue:41 src/views/environment/Environment.vue:122 @@ -1728,7 +1774,7 @@ msgstr "更新成功" msgid "Upgrade" msgstr "升级" -#: src/language/constants.ts:28 +#: src/language/constants.ts:29 msgid "Upgraded successfully" msgstr "升级成功" @@ -1761,11 +1807,11 @@ msgid "Username (*)" msgstr "用户名 (*)" #: src/views/certificate/ACMEUser.vue:87 -#: src/views/certificate/Certificate.vue:92 +#: src/views/certificate/Certificate.vue:97 msgid "Valid" msgstr "有效的" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:477 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:491 #: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:103 msgid "View" msgstr "查看" @@ -1788,7 +1834,7 @@ msgstr "预览模式" msgid "Warning" msgstr "警告" -#: src/views/certificate/DNSCredential.vue:52 +#: src/views/certificate/DNSCredential.vue:56 msgid "" "We will add one or more TXT records to the DNS records of your domain for " "ownership verification." diff --git a/app/src/language/zh_TW/app.po b/app/src/language/zh_TW/app.po index 5e438cc0..d7bbfbb1 100644 --- a/app/src/language/zh_TW/app.po +++ b/app/src/language/zh_TW/app.po @@ -29,10 +29,10 @@ msgid "ACME User" msgstr "使用者名稱" #: src/views/certificate/ACMEUser.vue:59 -#: src/views/certificate/Certificate.vue:108 -#: src/views/certificate/DNSCredential.vue:29 src/views/config/config.ts:34 +#: src/views/certificate/Certificate.vue:113 +#: src/views/certificate/DNSCredential.vue:33 src/views/config/config.ts:34 #: src/views/domain/DomainList.vue:47 src/views/environment/Environment.vue:129 -#: src/views/notification/Notification.vue:35 +#: src/views/notification/Notification.vue:37 #: src/views/stream/StreamList.vue:47 src/views/user/User.vue:43 msgid "Action" msgstr "操作" @@ -100,7 +100,7 @@ msgid "Arch" msgstr "架構" #: src/components/Notification/Notification.vue:84 -#: src/views/notification/Notification.vue:70 +#: src/views/notification/Notification.vue:72 #, fuzzy msgid "Are you sure you want to clear all notifications?" msgstr "您確定要清除聊天記錄嗎?" @@ -109,7 +109,12 @@ msgstr "您確定要清除聊天記錄嗎?" msgid "Are you sure you want to clear the record of chat?" msgstr "您確定要清除聊天記錄嗎?" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:509 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:551 +#, fuzzy +msgid "Are you sure you want to delete this item permanently?" +msgstr "您確定要刪除嗎?" + +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:523 #, fuzzy msgid "Are you sure you want to delete this item?" msgstr "您確定要刪除嗎?" @@ -118,7 +123,7 @@ msgstr "您確定要刪除嗎?" msgid "Are you sure you want to delete?" msgstr "您確定要刪除嗎?" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:523 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:537 #, fuzzy msgid "Are you sure you want to recover this item?" msgstr "您確定要刪除這條指令嗎?" @@ -165,7 +170,7 @@ msgstr "已關閉 %{name} 的自動續簽" msgid "Auto-renewal enabled for %{name}" msgstr "已啟用 %{name} 的自動續簽" -#: src/views/certificate/CertificateEditor.vue:235 +#: src/views/certificate/CertificateEditor.vue:242 #: src/views/config/Config.vue:73 src/views/config/ConfigEdit.vue:87 #: src/views/domain/DomainEdit.vue:256 src/views/nginx_log/NginxLog.vue:168 #: src/views/stream/StreamEdit.vue:247 @@ -192,7 +197,7 @@ msgid "Basic Mode" msgstr "基本模式" #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:54 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:445 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:459 msgid "Batch Modify" msgstr "批次修改" @@ -236,12 +241,12 @@ msgstr "此憑證有效" msgid "Certificate Renewal Interval" msgstr "憑證自動續簽" -#: src/views/certificate/CertificateEditor.vue:127 +#: src/views/certificate/CertificateEditor.vue:128 #: src/views/domain/cert/Cert.vue:33 msgid "Certificate Status" msgstr "憑證狀態" -#: src/routes/index.ts:119 src/views/certificate/Certificate.vue:124 +#: src/routes/index.ts:119 src/views/certificate/Certificate.vue:129 #, fuzzy msgid "Certificates" msgstr "憑證狀態" @@ -274,12 +279,12 @@ msgstr "清理環境變數" #: src/components/ChatGPT/ChatGPT.vue:276 #: src/components/Notification/Notification.vue:89 -#: src/views/notification/Notification.vue:75 +#: src/views/notification/Notification.vue:77 msgid "Clear" msgstr "清除" #: src/components/Notification/Notification.vue:40 -#: src/views/notification/Notification.vue:44 +#: src/views/notification/Notification.vue:46 #, fuzzy msgid "Cleared successfully" msgstr "成功停用" @@ -347,7 +352,7 @@ msgstr "建立時間" msgid "Create Another" msgstr "再建立一個" -#: src/views/notification/Notification.vue:29 src/views/user/User.vue:31 +#: src/views/notification/Notification.vue:31 src/views/user/User.vue:31 msgid "Created at" msgstr "建立時間" @@ -390,7 +395,7 @@ msgstr "資料庫 (可選,預設: database)" msgid "Days" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:516 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:530 #: src/views/domain/DomainList.vue:155 #: src/views/domain/ngx_conf/NgxServer.vue:114 #: src/views/domain/ngx_conf/NgxUpstream.vue:126 @@ -398,6 +403,10 @@ msgstr "" msgid "Delete" msgstr "刪除" +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:558 +msgid "Delete Permanently" +msgstr "" + #: src/views/domain/DomainList.vue:78 msgid "Delete site: %{site_name}" msgstr "刪除網站:%{site_name}" @@ -407,7 +416,7 @@ msgstr "刪除網站:%{site_name}" msgid "Delete stream: %{stream_name}" msgstr "刪除網站:%{site_name}" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:171 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:185 #, fuzzy msgid "Deleted successfully" msgstr "成功停用" @@ -439,7 +448,7 @@ msgstr "部署成功" msgid "Description" msgstr "描述" -#: src/views/notification/Notification.vue:25 +#: src/views/notification/Notification.vue:26 msgid "Details" msgstr "" @@ -485,7 +494,7 @@ msgstr "成功停用" msgid "Disk IO" msgstr "磁碟 IO" -#: src/routes/index.ts:162 src/views/certificate/DNSCredential.vue:36 +#: src/routes/index.ts:162 src/views/certificate/DNSCredential.vue:40 msgid "DNS Credentials" msgstr "DNS 認證" @@ -547,16 +556,16 @@ msgstr "網域" msgid "Domain Config Created Successfully" msgstr "網域設定檔成功建立" -#: src/views/certificate/CertificateEditor.vue:111 +#: src/views/certificate/CertificateEditor.vue:112 #, fuzzy msgid "Domains list is empty, try to reopen Auto Cert for %{config}" msgstr "網域列表為空,請嘗試重新開啟 %{config} 的自動憑證" -#: src/language/constants.ts:25 +#: src/language/constants.ts:26 msgid "Download latest release error" msgstr "下載最新版本錯誤" -#: src/language/constants.ts:24 +#: src/language/constants.ts:25 msgid "Downloading latest release" msgstr "正在下載最新版本" @@ -678,6 +687,11 @@ msgstr "用 Let's Encrypt 對網站進行加密" msgid "Environment" msgstr "環境" +#: src/language/constants.ts:21 +#, fuzzy +msgid "Environment variables cleaned" +msgstr "設定環境變數中" + #: src/views/dashboard/Environments.vue:82 msgid "Environments" msgstr "環境" @@ -694,7 +708,7 @@ msgstr "錯誤日誌" msgid "Executable Path" msgstr "可執行檔路徑" -#: src/views/certificate/Certificate.vue:96 +#: src/views/certificate/Certificate.vue:101 msgid "Expired" msgstr "" @@ -738,7 +752,7 @@ msgstr "儲存失敗,在設定中檢測到語法錯誤。" msgid "File" msgstr "檔案" -#: src/language/constants.ts:30 +#: src/language/constants.ts:31 msgid "File exists" msgstr "檔案已存在" @@ -777,7 +791,7 @@ msgstr "格式錯誤 %{msg}" msgid "Format successfully" msgstr "成功格式化" -#: src/views/certificate/Certificate.vue:43 +#: src/views/certificate/Certificate.vue:44 #, fuzzy msgid "General Certificate" msgstr "更換憑證" @@ -826,12 +840,12 @@ msgstr "HTTP01" msgid "If left blank, the default CA Dir will be used." msgstr "" -#: src/views/certificate/Certificate.vue:131 +#: src/views/certificate/Certificate.vue:136 #, fuzzy msgid "Import" msgstr "匯出" -#: src/routes/index.ts:153 src/views/certificate/CertificateEditor.vue:84 +#: src/routes/index.ts:153 src/views/certificate/CertificateEditor.vue:85 #, fuzzy msgid "Import Certificate" msgstr "憑證狀態" @@ -840,11 +854,11 @@ msgstr "憑證狀態" msgid "Info" msgstr "" -#: src/language/constants.ts:23 +#: src/language/constants.ts:24 msgid "Initial core upgrader error" msgstr "初始化核心升級程式錯誤" -#: src/language/constants.ts:22 +#: src/language/constants.ts:23 msgid "Initialing core upgrader" msgstr "正在初始化核心升級程式" @@ -869,7 +883,7 @@ msgstr "" msgid "Invalid" msgstr "無效的郵箱!" -#: src/views/certificate/Certificate.vue:139 +#: src/views/certificate/Certificate.vue:144 #, fuzzy msgid "Issue wildcard certificate" msgstr "取得憑證" @@ -887,7 +901,7 @@ msgstr "成功頒發憑證" msgid "Jwt Secret" msgstr "Jwt Secret" -#: src/views/certificate/Certificate.vue:61 +#: src/views/certificate/Certificate.vue:66 #: src/views/certificate/WildcardCertificate.vue:79 #: src/views/domain/cert/components/AutoCertStepOne.vue:80 #, fuzzy @@ -906,8 +920,8 @@ msgstr "留空表示不修改" msgid "Leave blank for the default: https://api.openai.com/" msgstr "預設留空:https://api.openai.com/" -#: src/views/certificate/CertificateEditor.vue:200 -#: src/views/certificate/CertificateEditor.vue:213 +#: src/views/certificate/CertificateEditor.vue:207 +#: src/views/certificate/CertificateEditor.vue:220 #, fuzzy msgid "Leave blank will not change anything" msgstr "留空表示不修改" @@ -953,7 +967,7 @@ msgstr "Location" msgid "Locations" msgstr "Locations" -#: src/views/certificate/CertificateEditor.vue:223 +#: src/views/certificate/CertificateEditor.vue:230 #, fuzzy msgid "Log" msgstr "登入" @@ -1008,7 +1022,7 @@ msgstr "管理網站" msgid "Manage Users" msgstr "管理使用者" -#: src/views/certificate/Certificate.vue:42 +#: src/views/certificate/Certificate.vue:43 #, fuzzy msgid "Managed Certificate" msgstr "更換憑證" @@ -1033,11 +1047,11 @@ msgstr "執行模式" #: src/components/ChatGPT/ChatGPT.vue:249 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:194 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:491 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:505 msgid "Modify" msgstr "修改" -#: src/routes/index.ts:144 src/views/certificate/CertificateEditor.vue:84 +#: src/routes/index.ts:144 src/views/certificate/CertificateEditor.vue:85 #, fuzzy msgid "Modify Certificate" msgstr "憑證狀態" @@ -1057,8 +1071,8 @@ msgstr "多行指令" #: src/views/certificate/ACMEUser.vue:13 #: src/views/certificate/Certificate.vue:20 -#: src/views/certificate/CertificateEditor.vue:146 -#: src/views/certificate/DNSCredential.vue:10 src/views/config/config.ts:7 +#: src/views/certificate/CertificateEditor.vue:147 +#: src/views/certificate/DNSCredential.vue:11 src/views/config/config.ts:7 #: src/views/domain/cert/ChangeCert.vue:17 #: src/views/domain/components/RightSettings.vue:83 #: src/views/domain/components/SiteDuplicate.vue:133 @@ -1131,12 +1145,13 @@ msgstr "Nginx 重啟成功" #: src/components/ChatGPT/ChatGPT.vue:270 #: src/components/Notification/Notification.vue:82 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:507 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:521 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:535 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:549 #: src/views/domain/DomainList.vue:144 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:90 #: src/views/domain/ngx_conf/LocationEditor.vue:71 -#: src/views/notification/Notification.vue:68 +#: src/views/notification/Notification.vue:70 #: src/views/preference/BasicSettings.vue:101 #: src/views/stream/StreamList.vue:165 msgid "No" @@ -1146,7 +1161,7 @@ msgstr "取消" msgid "Node Secret" msgstr "Node Secret" -#: src/views/certificate/Certificate.vue:102 +#: src/views/certificate/Certificate.vue:107 msgid "Not After" msgstr "" @@ -1158,12 +1173,12 @@ msgstr "找不到頁面" msgid "Not Valid Before: %{date}" msgstr "此前無效: %{date}" -#: src/views/certificate/DNSCredential.vue:45 +#: src/views/certificate/DNSCredential.vue:49 #: src/views/domain/cert/components/AutoCertStepOne.vue:45 msgid "Note" msgstr "備註" -#: src/views/notification/Notification.vue:60 +#: src/views/notification/Notification.vue:62 #, fuzzy msgid "Notification" msgstr "憑證" @@ -1195,8 +1210,9 @@ msgstr "" #: src/components/ChatGPT/ChatGPT.vue:271 #: src/components/Notification/Notification.vue:83 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:56 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:508 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:522 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:536 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:550 #: src/views/domain/cert/components/ObtainCert.vue:136 #: src/views/domain/components/Deploy.vue:20 #: src/views/domain/components/RightSettings.vue:50 @@ -1204,14 +1220,14 @@ msgstr "" #: src/views/domain/ngx_conf/NgxConfigEditor.vue:49 #: src/views/domain/ngx_conf/NgxServer.vue:83 #: src/views/domain/ngx_conf/NgxUpstream.vue:32 -#: src/views/notification/Notification.vue:69 +#: src/views/notification/Notification.vue:71 #: src/views/stream/components/Deploy.vue:20 #: src/views/stream/components/RightSettings.vue:50 #: src/views/stream/StreamList.vue:166 msgid "OK" msgstr "確定" -#: src/views/certificate/DNSCredential.vue:55 +#: src/views/certificate/DNSCredential.vue:59 msgid "Once the verification is complete, the records will be removed." msgstr "" @@ -1262,15 +1278,15 @@ msgstr "密碼 (*)" msgid "Path" msgstr "路徑" -#: src/language/constants.ts:27 +#: src/language/constants.ts:28 msgid "Perform core upgrade error" msgstr "執行核心升級錯誤" -#: src/language/constants.ts:26 +#: src/language/constants.ts:27 msgid "Performing core upgrade" msgstr "正在執行核心升級" -#: src/views/certificate/DNSCredential.vue:49 +#: src/views/certificate/DNSCredential.vue:53 msgid "" "Please fill in the API authentication credentials provided by your DNS " "provider." @@ -1304,7 +1320,7 @@ msgstr "請輸入您的密碼!" msgid "Please input your username!" msgstr "請輸入您的使用者名稱!" -#: src/views/certificate/DNSCredential.vue:58 +#: src/views/certificate/DNSCredential.vue:62 msgid "" "Please note that the unit of time configurations below are all in seconds." msgstr "" @@ -1338,7 +1354,7 @@ msgstr "禁止刪除預設使用者" msgid "Project Team" msgstr "專案團隊" -#: src/views/certificate/DNSCredential.vue:18 +#: src/views/certificate/DNSCredential.vue:19 msgid "Provider" msgstr "供應商" @@ -1352,11 +1368,11 @@ msgstr "讀取" msgid "Receive" msgstr "接收" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:530 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:544 msgid "Recover" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:179 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:193 #, fuzzy msgid "Recovered Successfully" msgstr "儲存成功" @@ -1431,12 +1447,12 @@ msgstr "使用者名稱" msgid "Renew Certificate" msgstr "更換憑證" -#: src/language/constants.ts:34 +#: src/language/constants.ts:35 #, fuzzy msgid "Renew Certificate Error" msgstr "更換憑證" -#: src/language/constants.ts:33 +#: src/language/constants.ts:34 #, fuzzy msgid "Renew Certificate Success" msgstr "更換憑證" @@ -1447,11 +1463,11 @@ msgstr "更換憑證" msgid "Renew successfully" msgstr "啟用成功" -#: src/language/constants.ts:31 +#: src/language/constants.ts:32 msgid "Requested with wrong parameters" msgstr "請求參數錯誤" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:439 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:453 msgid "Reset" msgstr "重設" @@ -1472,7 +1488,7 @@ msgid "Running" msgstr "執行中" #: src/components/ChatGPT/ChatGPT.vue:252 -#: src/views/certificate/CertificateEditor.vue:242 +#: src/views/certificate/CertificateEditor.vue:249 #: src/views/config/ConfigEdit.vue:96 src/views/domain/DomainEdit.vue:263 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:120 #: src/views/preference/Preference.vue:130 src/views/stream/StreamEdit.vue:254 @@ -1490,7 +1506,7 @@ msgstr "儲存錯誤 %{msg}" #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:39 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:104 -#: src/views/certificate/CertificateEditor.vue:45 +#: src/views/certificate/CertificateEditor.vue:46 #: src/views/preference/Preference.vue:66 msgid "Save successfully" msgstr "儲存成功" @@ -1520,8 +1536,8 @@ msgstr "傳送" #: src/components/StdDesign/StdDataDisplay/methods/exportCsv.ts:46 #: src/components/StdDesign/StdDataDisplay/methods/sortable.ts:126 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:42 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:182 -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:221 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:196 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:235 #: src/views/config/ConfigEdit.vue:40 src/views/domain/DomainList.vue:81 #: src/views/environment/Environment.vue:139 src/views/other/Install.vue:70 #: src/views/preference/Preference.vue:70 src/views/stream/StreamList.vue:113 @@ -1579,23 +1595,23 @@ msgstr "網站日誌" msgid "Sites List" msgstr "網站列表" -#: src/views/certificate/CertificateEditor.vue:191 +#: src/views/certificate/CertificateEditor.vue:198 #, fuzzy msgid "SSL Certificate Content" msgstr "SSL 認證內容" -#: src/views/certificate/CertificateEditor.vue:204 +#: src/views/certificate/CertificateEditor.vue:211 #, fuzzy msgid "SSL Certificate Key Content" msgstr "SSL 憑證金鑰內容" -#: src/views/certificate/Certificate.vue:75 -#: src/views/certificate/CertificateEditor.vue:176 +#: src/views/certificate/Certificate.vue:80 +#: src/views/certificate/CertificateEditor.vue:177 msgid "SSL Certificate Key Path" msgstr "SSL 憑證金鑰路徑" -#: src/views/certificate/Certificate.vue:67 -#: src/views/certificate/CertificateEditor.vue:161 +#: src/views/certificate/Certificate.vue:72 +#: src/views/certificate/CertificateEditor.vue:162 msgid "SSL Certificate Path" msgstr "SSL 憑證路徑" @@ -1609,7 +1625,7 @@ msgid "Stable" msgstr "穩定" #: src/views/certificate/ACMEUser.vue:42 -#: src/views/certificate/Certificate.vue:83 src/views/domain/DomainList.vue:22 +#: src/views/certificate/Certificate.vue:88 src/views/domain/DomainList.vue:22 #: src/views/environment/Environment.vue:76 src/views/stream/StreamList.vue:22 msgid "Status" msgstr "狀態" @@ -1645,6 +1661,42 @@ msgstr "" msgid "Switch to light theme" msgstr "" +#: src/views/certificate/Certificate.vue:42 +#, fuzzy +msgid "Sync Certificate" +msgstr "更換憑證" + +#: src/components/Notification/detailRender.ts:25 +#, fuzzy +msgid "" +"Sync Certificate %{cert_name} to %{env_name} failed, please upgrade the " +"remote Nginx UI to the latest version" +msgstr "成功複製 %{conf_name} 到 %{node_name}" + +#: src/components/Notification/detailRender.ts:29 +#, fuzzy +msgid "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}" +msgstr "成功複製 %{conf_name} 到 %{node_name}" + +#: src/components/Notification/detailRender.ts:17 +#, fuzzy +msgid "Sync Certificate %{cert_name} to %{env_name} successfully" +msgstr "成功複製 %{conf_name} 到 %{node_name}" + +#: src/language/constants.ts:38 +#, fuzzy +msgid "Sync Certificate Error" +msgstr "更換憑證" + +#: src/language/constants.ts:37 +#, fuzzy +msgid "Sync Certificate Success" +msgstr "更換憑證" + +#: src/views/certificate/CertificateEditor.vue:191 +msgid "Sync to" +msgstr "" + #: src/routes/index.ts:248 msgid "System" msgstr "系統" @@ -1675,11 +1727,11 @@ msgstr "" msgid "The filename cannot contain the following characters: %{c}" msgstr "檔名不能包含以下字元: %{c}" -#: src/views/certificate/CertificateEditor.vue:194 +#: src/views/certificate/CertificateEditor.vue:201 msgid "The input is not a SSL Certificate" msgstr "" -#: src/views/certificate/CertificateEditor.vue:207 +#: src/views/certificate/CertificateEditor.vue:214 #, fuzzy msgid "The input is not a SSL Certificate Key" msgstr "SSL 憑證金鑰路徑" @@ -1690,12 +1742,12 @@ msgid "" "dashes, and dots." msgstr "" -#: src/views/certificate/CertificateEditor.vue:165 +#: src/views/certificate/CertificateEditor.vue:166 #, fuzzy msgid "The path exists, but the file is not a certificate" msgstr "SSL 憑證金鑰路徑" -#: src/views/certificate/CertificateEditor.vue:180 +#: src/views/certificate/CertificateEditor.vue:181 msgid "The path exists, but the file is not a private key" msgstr "" @@ -1728,18 +1780,18 @@ msgstr "此功能在演示中不可用。" msgid "The username or password is incorrect" msgstr "使用者名稱或密碼不正確" -#: src/views/certificate/CertificateEditor.vue:101 +#: src/views/certificate/CertificateEditor.vue:102 #, fuzzy msgid "This Auto Cert item is invalid, please remove it." msgstr "此自動憑證項目無效,請將其移除。" -#: src/views/certificate/CertificateEditor.vue:91 +#: src/views/certificate/CertificateEditor.vue:92 msgid "This certificate is managed by Nginx UI" msgstr "" -#: src/views/certificate/CertificateEditor.vue:149 -#: src/views/certificate/CertificateEditor.vue:163 -#: src/views/certificate/CertificateEditor.vue:178 +#: src/views/certificate/CertificateEditor.vue:150 +#: src/views/certificate/CertificateEditor.vue:164 +#: src/views/certificate/CertificateEditor.vue:179 msgid "This field is required" msgstr "" @@ -1751,7 +1803,7 @@ msgstr "此欄位不應為空" msgid "Tips" msgstr "" -#: src/views/notification/Notification.vue:18 +#: src/views/notification/Notification.vue:19 msgid "Title" msgstr "" @@ -1774,12 +1826,12 @@ msgid "Trash" msgstr "" #: src/views/certificate/Certificate.vue:37 src/views/config/config.ts:12 -#: src/views/notification/Notification.vue:12 +#: src/views/notification/Notification.vue:13 msgid "Type" msgstr "類型" #: src/views/certificate/ACMEUser.vue:53 -#: src/views/certificate/DNSCredential.vue:23 src/views/config/config.ts:27 +#: src/views/certificate/DNSCredential.vue:27 src/views/config/config.ts:27 #: src/views/config/ConfigEdit.vue:121 #: src/views/domain/components/RightSettings.vue:86 #: src/views/domain/DomainList.vue:41 src/views/environment/Environment.vue:122 @@ -1797,7 +1849,7 @@ msgstr "更新成功" msgid "Upgrade" msgstr "升級" -#: src/language/constants.ts:28 +#: src/language/constants.ts:29 msgid "Upgraded successfully" msgstr "升級成功" @@ -1830,11 +1882,11 @@ msgid "Username (*)" msgstr "使用者名稱 (*)" #: src/views/certificate/ACMEUser.vue:87 -#: src/views/certificate/Certificate.vue:92 +#: src/views/certificate/Certificate.vue:97 msgid "Valid" msgstr "" -#: src/components/StdDesign/StdDataDisplay/StdTable.vue:477 +#: src/components/StdDesign/StdDataDisplay/StdTable.vue:491 #: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:103 msgid "View" msgstr "檢視" @@ -1859,7 +1911,7 @@ msgstr "基本模式" msgid "Warning" msgstr "警告" -#: src/views/certificate/DNSCredential.vue:52 +#: src/views/certificate/DNSCredential.vue:56 msgid "" "We will add one or more TXT records to the DNS records of your domain for " "ownership verification." diff --git a/app/src/version.json b/app/src/version.json index 3ae86276..ea2bad91 100644 --- a/app/src/version.json +++ b/app/src/version.json @@ -1 +1 @@ -{"version":"2.0.0-beta.24","build_id":135,"total_build":339} \ No newline at end of file +{"version":"2.0.0-beta.24","build_id":136,"total_build":340} \ No newline at end of file diff --git a/app/src/views/certificate/Certificate.vue b/app/src/views/certificate/Certificate.vue index ad096e61..f383724e 100644 --- a/app/src/views/certificate/Certificate.vue +++ b/app/src/views/certificate/Certificate.vue @@ -39,14 +39,19 @@ const columns: Column[] = [{ customRender: (args: customRender) => { const template: JSXElements = [] const { text } = args + const sync = $gettext('Sync Certificate') const managed = $gettext('Managed Certificate') const general = $gettext('General Certificate') - if (text === true || text > 0) { + if (text === true || text === 1) { template.push( { managed } ) } - + else if (text === 2) { + template.push( + { sync } + ) + } else { template.push({ general } diff --git a/app/src/views/certificate/CertificateEditor.vue b/app/src/views/certificate/CertificateEditor.vue index c484aff2..a0cb188c 100644 --- a/app/src/views/certificate/CertificateEditor.vue +++ b/app/src/views/certificate/CertificateEditor.vue @@ -9,6 +9,7 @@ import type { Cert } from '@/api/cert' import cert from '@/api/cert' import FooterToolBar from '@/components/FooterToolbar/FooterToolBar.vue' import RenewCert from '@/views/certificate/RenewCert.vue' +import NodeSelector from '@/components/NodeSelector/NodeSelector.vue' const route = useRoute() @@ -187,6 +188,12 @@ const isManaged = computed(() => { v-model:value="data.ssl_certificate_key_path" /> + + + $gettext('Type'), @@ -24,6 +25,7 @@ const columns: Column[] = [{ }, { title: () => $gettext('Details'), dataIndex: 'details', + customRender: detailRender, pithy: true, }, { title: () => $gettext('Created at'), diff --git a/app/version.json b/app/version.json index 3ae86276..ea2bad91 100644 --- a/app/version.json +++ b/app/version.json @@ -1 +1 @@ -{"version":"2.0.0-beta.24","build_id":135,"total_build":339} \ No newline at end of file +{"version":"2.0.0-beta.24","build_id":136,"total_build":340} \ No newline at end of file diff --git a/gen.sh b/gen.sh new file mode 100755 index 00000000..8460aeab --- /dev/null +++ b/gen.sh @@ -0,0 +1,3 @@ +pushd ./cmd/generate || exit +go run generate.go -config ../../app.ini +popd || exit diff --git a/internal/analytic/node_record.go b/internal/analytic/node_record.go index 3a7f15e5..65da0c64 100644 --- a/internal/analytic/node_record.go +++ b/internal/analytic/node_record.go @@ -29,8 +29,7 @@ func RetrieveNodesStatus() { env := query.Environment - envs, err := env.Find() - + envs, err := env.Where(env.Enabled.Is(true)).Find() if err != nil { logger.Error(err) return diff --git a/internal/cert/auto_cert.go b/internal/cert/auto_cert.go index 4d623275..12b07dcc 100644 --- a/internal/cert/auto_cert.go +++ b/internal/cert/auto_cert.go @@ -53,14 +53,14 @@ func autoCert(certModel *model.Cert) { return } - cert, err := GetCertInfo(certModel.SSLCertificatePath) + certInfo, err := GetCertInfo(certModel.SSLCertificatePath) if err != nil { // Get certificate info error, ignore this certificate log.Error(errors.Wrap(err, "get certificate info error")) notification.Error("Renew Certificate Error", strings.Join(certModel.Domains, ", ")) return } - if int(time.Now().Sub(cert.NotBefore).Hours()/24) < settings.ServerSettings.GetCertRenewalInterval() { + if int(time.Now().Sub(certInfo.NotBefore).Hours()/24) < settings.ServerSettings.GetCertRenewalInterval() { // not after settings.ServerSettings.CertRenewalInterval, ignore return } @@ -76,7 +76,7 @@ func autoCert(certModel *model.Cert) { ChallengeMethod: certModel.ChallengeMethod, DNSCredentialID: certModel.DnsCredentialID, KeyType: certModel.GetKeyType(), - NotBefore: cert.NotBefore, + NotBefore: certInfo.NotBefore, } if certModel.Resource != nil { @@ -106,4 +106,9 @@ func autoCert(certModel *model.Cert) { } notification.Success("Renew Certificate Success", strings.Join(payload.ServerName, ", ")) + err = SyncToRemoteServer(certModel) + if err != nil { + notification.Error("Sync Certificate Error", err.Error()) + return + } } diff --git a/internal/cert/cert.go b/internal/cert/cert.go index 17d1ba16..e1a6c6fe 100644 --- a/internal/cert/cert.go +++ b/internal/cert/cert.go @@ -111,7 +111,7 @@ func IssueCert(payload *ConfigPayload, logChan chan string, errChan chan error) } defer func() { pConfig.CleanEnv() - l.Println("[INFO] [Nginx UI] Cleaned environment variables") + l.Println("[INFO] [Nginx UI] Environment variables cleaned") }() provider, err := dnsproviders.NewDNSChallengeProviderByName(code) if err != nil { diff --git a/internal/cert/sync.go b/internal/cert/sync.go new file mode 100644 index 00000000..55a6b82c --- /dev/null +++ b/internal/cert/sync.go @@ -0,0 +1,135 @@ +package cert + +import ( + "bytes" + "crypto/tls" + "encoding/json" + "fmt" + "github.com/0xJacky/Nginx-UI/internal/helper" + "github.com/0xJacky/Nginx-UI/internal/logger" + "github.com/0xJacky/Nginx-UI/internal/nginx" + "github.com/0xJacky/Nginx-UI/internal/notification" + "github.com/0xJacky/Nginx-UI/model" + "github.com/0xJacky/Nginx-UI/query" + "github.com/go-acme/lego/v4/certcrypto" + "io" + "net/http" + "os" +) + +type SyncCertificatePayload struct { + Name string `json:"name"` + SSLCertificatePath string `json:"ssl_certificate_path"` + SSLCertificateKeyPath string `json:"ssl_certificate_key_path"` + SSLCertificate string `json:"ssl_certificate"` + SSLCertificateKey string `json:"ssl_certificate_key"` + KeyType certcrypto.KeyType `json:"key_type"` +} + +func SyncToRemoteServer(c *model.Cert) (err error) { + if c.SSLCertificatePath == "" || c.SSLCertificateKeyPath == "" || len(c.SyncNodeIds) == 0 { + return + } + + nginxConfPath := nginx.GetConfPath() + if !helper.IsUnderDirectory(c.SSLCertificatePath, nginxConfPath) { + return fmt.Errorf("ssl_certificate_path: %s is not under the nginx conf path: %s", + c.SSLCertificatePath, nginxConfPath) + } + + if !helper.IsUnderDirectory(c.SSLCertificateKeyPath, nginxConfPath) { + return fmt.Errorf("ssl_certificate_key_path: %s is not under the nginx conf path: %s", + c.SSLCertificateKeyPath, nginxConfPath) + } + + certBytes, err := os.ReadFile(c.SSLCertificatePath) + if err != nil { + return + } + keyBytes, err := os.ReadFile(c.SSLCertificateKeyPath) + if err != nil { + return + } + + payload := &SyncCertificatePayload{ + Name: c.Name, + SSLCertificatePath: c.SSLCertificatePath, + SSLCertificateKeyPath: c.SSLCertificateKeyPath, + SSLCertificate: string(certBytes), + SSLCertificateKey: string(keyBytes), + KeyType: c.KeyType, + } + + payloadBytes, err := json.Marshal(payload) + if err != nil { + return + } + + q := query.Environment + envs, _ := q.Where(q.ID.In(c.SyncNodeIds...)).Find() + for _, env := range envs { + go func() { + err := deploy(env, c, payloadBytes) + if err != nil { + logger.Error(err) + } + }() + } + + return +} + +type SyncNotificationPayload struct { + StatusCode int `json:"status_code"` + CertName string `json:"cert_name"` + EnvName string `json:"env_name"` + RespBody string `json:"resp_body"` +} + +func deploy(env *model.Environment, c *model.Cert, payloadBytes []byte) (err error) { + client := http.Client{ + Transport: &http.Transport{ + TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, + }, + } + url, err := env.GetUrl("/api/cert_sync") + if err != nil { + return + } + req, err := http.NewRequest(http.MethodPut, url, bytes.NewBuffer(payloadBytes)) + if err != nil { + return + } + req.Header.Set("X-Node-Secret", env.Token) + resp, err := client.Do(req) + if err != nil { + return + } + defer resp.Body.Close() + + respBody, err := io.ReadAll(resp.Body) + if err != nil { + return + } + + notificationPayload := &SyncNotificationPayload{ + StatusCode: resp.StatusCode, + CertName: c.Name, + EnvName: env.Name, + RespBody: string(respBody), + } + + notificationPayloadBytes, err := json.Marshal(notificationPayload) + if err != nil { + return + } + + if resp.StatusCode != http.StatusOK { + notification.Error("Sync Certificate Error", string(notificationPayloadBytes)) + return + } + + notification.Success("Sync Certificate Success", string(notificationPayloadBytes)) + + return +} diff --git a/internal/cert/write_file.go b/internal/cert/write_file.go index c0168855..9f114f46 100644 --- a/internal/cert/write_file.go +++ b/internal/cert/write_file.go @@ -1,6 +1,9 @@ package cert import ( + "fmt" + "github.com/0xJacky/Nginx-UI/internal/helper" + "github.com/0xJacky/Nginx-UI/internal/nginx" "os" "path/filepath" ) @@ -13,6 +16,21 @@ type Content struct { } func (c *Content) WriteFile() (err error) { + if c.SSLCertificatePath == "" || c.SSLCertificateKeyPath == "" { + return + } + + nginxConfPath := nginx.GetConfPath() + if !helper.IsUnderDirectory(c.SSLCertificatePath, nginxConfPath) { + return fmt.Errorf("ssl_certificate_path: %s is not under the nginx conf path: %s", + c.SSLCertificatePath, nginxConfPath) + } + + if !helper.IsUnderDirectory(c.SSLCertificateKeyPath, nginxConfPath) { + return fmt.Errorf("ssl_certificate_key_path: %s is not under the nginx conf path: %s", + c.SSLCertificateKeyPath, nginxConfPath) + } + // MkdirAll creates a directory named path, along with any necessary parents, // and returns nil, or else returns an error. // The permission bits perm (before umask) are used for all directories that MkdirAll creates. diff --git a/internal/helper/directory.go b/internal/helper/directory.go index 07d9f854..fef5b90a 100644 --- a/internal/helper/directory.go +++ b/internal/helper/directory.go @@ -6,6 +6,7 @@ import ( "strings" ) +// IsUnderDirectory checks if the path is under the directory func IsUnderDirectory(path, directory string) bool { absPath, err := filepath.Abs(path) if err != nil { diff --git a/internal/kernal/boot.go b/internal/kernal/boot.go index 7867fbee..83f81ff0 100644 --- a/internal/kernal/boot.go +++ b/internal/kernal/boot.go @@ -97,7 +97,7 @@ func InitJsExtensionType() { func InitCronJobs() { s := gocron.NewScheduler(time.UTC) - job, err := s.Every(30).Minute().SingletonMode().Do(cert.AutoCert) + job, err := s.Every(6).Hours().SingletonMode().Do(cert.AutoCert) if err != nil { logger.Fatalf("AutoCert Job: %v, Err: %v\n", job, err) diff --git a/model/cert.go b/model/cert.go index 3088462d..d081ebc5 100644 --- a/model/cert.go +++ b/model/cert.go @@ -10,6 +10,7 @@ import ( ) const ( + AutoCertSync = 2 AutoCertEnabled = 1 AutoCertDisabled = -1 CertChallengeMethodHTTP01 = "http01" @@ -42,6 +43,7 @@ type Cert struct { KeyType certcrypto.KeyType `json:"key_type"` Log string `json:"log"` Resource *CertificateResource `json:"-" gorm:"serializer:json"` + SyncNodeIds []int `json:"sync_node_ids" gorm:"serializer:json"` } func FirstCert(confName string) (c Cert, err error) { @@ -94,10 +96,6 @@ func (c *Cert) Updates(n *Cert) error { return db.Model(&Cert{}).Where("id", c.ID).Updates(n).Error } -func (c *Cert) ClearLog() { - db.Model(&Cert{}).Where("id", c.ID).Update("log", "") -} - func (c *Cert) Remove() error { if c.Filename == "" { return db.Delete(c).Error diff --git a/model/environment.go b/model/environment.go index a33dbb49..1f9b1bc0 100644 --- a/model/environment.go +++ b/model/environment.go @@ -15,6 +15,25 @@ type Environment struct { SyncApiRegex string `json:"sync_api_regex"` } +func (e *Environment) GetUrl(uri string) (decodedUri string, err error) { + baseUrl, err := url.Parse(e.URL) + if err != nil { + return + } + + u, err := url.JoinPath(baseUrl.String(), uri) + if err != nil { + return + } + + decodedUri, err = url.QueryUnescape(u) + if err != nil { + return + } + + return +} + func (e *Environment) GetWebSocketURL(uri string) (decodedUri string, err error) { baseUrl, err := url.Parse(e.URL) if err != nil { diff --git a/query/certs.gen.go b/query/certs.gen.go index 494071b7..7ee236de 100644 --- a/query/certs.gen.go +++ b/query/certs.gen.go @@ -43,6 +43,8 @@ func newCert(db *gorm.DB, opts ...gen.DOOption) cert { _cert.ACMEUserID = field.NewInt(tableName, "acme_user_id") _cert.KeyType = field.NewString(tableName, "key_type") _cert.Log = field.NewString(tableName, "log") + _cert.Resource = field.NewField(tableName, "resource") + _cert.SyncNodeIds = field.NewField(tableName, "sync_node_ids") _cert.DnsCredential = certBelongsToDnsCredential{ db: db.Session(&gorm.Session{}), @@ -79,6 +81,8 @@ type cert struct { ACMEUserID field.Int KeyType field.String Log field.String + Resource field.Field + SyncNodeIds field.Field DnsCredential certBelongsToDnsCredential ACMEUser certBelongsToACMEUser @@ -113,6 +117,8 @@ func (c *cert) updateTableName(table string) *cert { c.ACMEUserID = field.NewInt(table, "acme_user_id") c.KeyType = field.NewString(table, "key_type") c.Log = field.NewString(table, "log") + c.Resource = field.NewField(table, "resource") + c.SyncNodeIds = field.NewField(table, "sync_node_ids") c.fillFieldMap() @@ -129,7 +135,7 @@ func (c *cert) GetFieldByName(fieldName string) (field.OrderExpr, bool) { } func (c *cert) fillFieldMap() { - c.fieldMap = make(map[string]field.Expr, 17) + c.fieldMap = make(map[string]field.Expr, 19) c.fieldMap["id"] = c.ID c.fieldMap["created_at"] = c.CreatedAt c.fieldMap["updated_at"] = c.UpdatedAt @@ -145,6 +151,8 @@ func (c *cert) fillFieldMap() { c.fieldMap["acme_user_id"] = c.ACMEUserID c.fieldMap["key_type"] = c.KeyType c.fieldMap["log"] = c.Log + c.fieldMap["resource"] = c.Resource + c.fieldMap["sync_node_ids"] = c.SyncNodeIds } diff --git a/query/config_backups.gen.go b/query/config_backups.gen.go index 12271d9e..2c870c6a 100644 --- a/query/config_backups.gen.go +++ b/query/config_backups.gen.go @@ -33,7 +33,7 @@ func newConfigBackup(db *gorm.DB, opts ...gen.DOOption) configBackup { _configBackup.UpdatedAt = field.NewTime(tableName, "updated_at") _configBackup.DeletedAt = field.NewField(tableName, "deleted_at") _configBackup.Name = field.NewString(tableName, "name") - _configBackup.FilePath = field.NewString(tableName, "filepath") + _configBackup.FilePath = field.NewString(tableName, "file_path") _configBackup.Content = field.NewString(tableName, "content") _configBackup.fillFieldMap() @@ -73,7 +73,7 @@ func (c *configBackup) updateTableName(table string) *configBackup { c.UpdatedAt = field.NewTime(table, "updated_at") c.DeletedAt = field.NewField(table, "deleted_at") c.Name = field.NewString(table, "name") - c.FilePath = field.NewString(table, "filepath") + c.FilePath = field.NewString(table, "file_path") c.Content = field.NewString(table, "content") c.fillFieldMap() @@ -97,7 +97,7 @@ func (c *configBackup) fillFieldMap() { c.fieldMap["updated_at"] = c.UpdatedAt c.fieldMap["deleted_at"] = c.DeletedAt c.fieldMap["name"] = c.Name - c.fieldMap["filepath"] = c.FilePath + c.fieldMap["file_path"] = c.FilePath c.fieldMap["content"] = c.Content } diff --git a/query/environments.gen.go b/query/environments.gen.go index a82cdcec..fcb3824d 100644 --- a/query/environments.gen.go +++ b/query/environments.gen.go @@ -35,6 +35,7 @@ func newEnvironment(db *gorm.DB, opts ...gen.DOOption) environment { _environment.Name = field.NewString(tableName, "name") _environment.URL = field.NewString(tableName, "url") _environment.Token = field.NewString(tableName, "token") + _environment.Enabled = field.NewBool(tableName, "enabled") _environment.OperationSync = field.NewBool(tableName, "operation_sync") _environment.SyncApiRegex = field.NewString(tableName, "sync_api_regex") @@ -54,6 +55,7 @@ type environment struct { Name field.String URL field.String Token field.String + Enabled field.Bool OperationSync field.Bool SyncApiRegex field.String @@ -79,6 +81,7 @@ func (e *environment) updateTableName(table string) *environment { e.Name = field.NewString(table, "name") e.URL = field.NewString(table, "url") e.Token = field.NewString(table, "token") + e.Enabled = field.NewBool(table, "enabled") e.OperationSync = field.NewBool(table, "operation_sync") e.SyncApiRegex = field.NewString(table, "sync_api_regex") @@ -97,7 +100,7 @@ func (e *environment) GetFieldByName(fieldName string) (field.OrderExpr, bool) { } func (e *environment) fillFieldMap() { - e.fieldMap = make(map[string]field.Expr, 9) + e.fieldMap = make(map[string]field.Expr, 10) e.fieldMap["id"] = e.ID e.fieldMap["created_at"] = e.CreatedAt e.fieldMap["updated_at"] = e.UpdatedAt @@ -105,6 +108,7 @@ func (e *environment) fillFieldMap() { e.fieldMap["name"] = e.Name e.fieldMap["url"] = e.URL e.fieldMap["token"] = e.Token + e.fieldMap["enabled"] = e.Enabled e.fieldMap["operation_sync"] = e.OperationSync e.fieldMap["sync_api_regex"] = e.SyncApiRegex }