Compare commits
3 Commits
44fd0633d6
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
85ad369cf9 | ||
|
|
98a3d0b68e | ||
|
|
33d887d252 |
@@ -7,7 +7,23 @@ const allowedDevOrigins = parseAllowedDevOrigins(process.env.ALLOWED_DEV_ORIGINS
|
|||||||
const nextConfig: NextConfig = {
|
const nextConfig: NextConfig = {
|
||||||
output: "standalone",
|
output: "standalone",
|
||||||
...(allowedDevOrigins.length > 0 ? { allowedDevOrigins } : {}),
|
...(allowedDevOrigins.length > 0 ? { allowedDevOrigins } : {}),
|
||||||
reactCompiler: true,
|
reactCompiler: process.env.NODE_ENV !== "development",
|
||||||
|
turbopack: {},
|
||||||
|
experimental: {
|
||||||
|
preloadEntriesOnStart: false,
|
||||||
|
webpackMemoryOptimizations: true,
|
||||||
|
},
|
||||||
|
onDemandEntries: {
|
||||||
|
maxInactiveAge: 10_000,
|
||||||
|
pagesBufferLength: 1,
|
||||||
|
},
|
||||||
|
webpack(config, { dev }) {
|
||||||
|
if (dev) {
|
||||||
|
config.cache = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return config;
|
||||||
|
},
|
||||||
images: {
|
images: {
|
||||||
unoptimized: true,
|
unoptimized: true,
|
||||||
},
|
},
|
||||||
|
|||||||
1017
package-lock.json
generated
1017
package-lock.json
generated
@@ -9,27 +9,27 @@
|
|||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@base-ui/react": "^1.4.1",
|
"@base-ui/react": "^1.4.1",
|
||||||
"axios": "^1.16.0",
|
"axios": "^1.18.1",
|
||||||
"class-variance-authority": "^0.7.1",
|
"class-variance-authority": "^0.7.1",
|
||||||
"clsx": "^2.1.1",
|
"clsx": "^2.1.1",
|
||||||
"date-fns": "^4.1.0",
|
"date-fns": "^4.1.0",
|
||||||
|
"geist": "^1.7.2",
|
||||||
"i18next": "^26.2.0",
|
"i18next": "^26.2.0",
|
||||||
"i18next-browser-languagedetector": "^8.2.1",
|
"i18next-browser-languagedetector": "^8.2.1",
|
||||||
"lucide-react": "^1.14.0",
|
"lucide-react": "^1.14.0",
|
||||||
"next": "16.2.6",
|
"next": "16.2.10",
|
||||||
"next-themes": "^0.4.6",
|
"next-themes": "^0.4.6",
|
||||||
"react": "19.2.4",
|
"react": "19.2.4",
|
||||||
"react-day-picker": "^10.0.0",
|
"react-day-picker": "^10.0.0",
|
||||||
"react-dom": "19.2.4",
|
"react-dom": "19.2.4",
|
||||||
"react-i18next": "^17.0.8",
|
"react-i18next": "^17.0.8",
|
||||||
"recharts": "^3.8.0",
|
"recharts": "^3.8.0",
|
||||||
"shadcn": "^4.7.0",
|
|
||||||
"shiki": "^4.2.0",
|
"shiki": "^4.2.0",
|
||||||
"sonner": "^2.0.7",
|
"sonner": "^2.0.7",
|
||||||
"swr": "^2.4.1",
|
"swr": "^2.4.1",
|
||||||
"tailwind-merge": "^3.5.0",
|
"tailwind-merge": "^3.5.0",
|
||||||
"tw-animate-css": "^1.4.0",
|
"tw-animate-css": "^1.4.0",
|
||||||
"xlsx": "^0.18.5",
|
"write-excel-file": "^4.1.1",
|
||||||
"zustand": "^5.0.13"
|
"zustand": "^5.0.13"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
@@ -39,7 +39,8 @@
|
|||||||
"@types/react-dom": "^19",
|
"@types/react-dom": "^19",
|
||||||
"babel-plugin-react-compiler": "1.0.0",
|
"babel-plugin-react-compiler": "1.0.0",
|
||||||
"eslint": "^9",
|
"eslint": "^9",
|
||||||
"eslint-config-next": "16.2.6",
|
"eslint-config-next": "16.2.10",
|
||||||
|
"shadcn": "^4.7.0",
|
||||||
"tailwindcss": "^4",
|
"tailwindcss": "^4",
|
||||||
"typescript": "^5"
|
"typescript": "^5"
|
||||||
}
|
}
|
||||||
@@ -58,12 +59,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/code-frame": {
|
"node_modules/@babel/code-frame": {
|
||||||
"version": "7.29.0",
|
"version": "7.29.7",
|
||||||
"resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.29.0.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz",
|
||||||
"integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==",
|
"integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-validator-identifier": "^7.28.5",
|
"@babel/helper-validator-identifier": "^7.29.7",
|
||||||
"js-tokens": "^4.0.0",
|
"js-tokens": "^4.0.0",
|
||||||
"picocolors": "^1.1.1"
|
"picocolors": "^1.1.1"
|
||||||
},
|
},
|
||||||
@@ -72,29 +74,31 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/compat-data": {
|
"node_modules/@babel/compat-data": {
|
||||||
"version": "7.29.3",
|
"version": "7.29.7",
|
||||||
"resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.29.3.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz",
|
||||||
"integrity": "sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg==",
|
"integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/core": {
|
"node_modules/@babel/core": {
|
||||||
"version": "7.29.0",
|
"version": "7.29.7",
|
||||||
"resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.29.0.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz",
|
||||||
"integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==",
|
"integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/code-frame": "^7.29.0",
|
"@babel/code-frame": "^7.29.7",
|
||||||
"@babel/generator": "^7.29.0",
|
"@babel/generator": "^7.29.7",
|
||||||
"@babel/helper-compilation-targets": "^7.28.6",
|
"@babel/helper-compilation-targets": "^7.29.7",
|
||||||
"@babel/helper-module-transforms": "^7.28.6",
|
"@babel/helper-module-transforms": "^7.29.7",
|
||||||
"@babel/helpers": "^7.28.6",
|
"@babel/helpers": "^7.29.7",
|
||||||
"@babel/parser": "^7.29.0",
|
"@babel/parser": "^7.29.7",
|
||||||
"@babel/template": "^7.28.6",
|
"@babel/template": "^7.29.7",
|
||||||
"@babel/traverse": "^7.29.0",
|
"@babel/traverse": "^7.29.7",
|
||||||
"@babel/types": "^7.29.0",
|
"@babel/types": "^7.29.7",
|
||||||
"@jridgewell/remapping": "^2.3.5",
|
"@jridgewell/remapping": "^2.3.5",
|
||||||
"convert-source-map": "^2.0.0",
|
"convert-source-map": "^2.0.0",
|
||||||
"debug": "^4.1.0",
|
"debug": "^4.1.0",
|
||||||
@@ -111,13 +115,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/generator": {
|
"node_modules/@babel/generator": {
|
||||||
"version": "7.29.1",
|
"version": "7.29.7",
|
||||||
"resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.29.1.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.7.tgz",
|
||||||
"integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==",
|
"integrity": "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/parser": "^7.29.0",
|
"@babel/parser": "^7.29.7",
|
||||||
"@babel/types": "^7.29.0",
|
"@babel/types": "^7.29.7",
|
||||||
"@jridgewell/gen-mapping": "^0.3.12",
|
"@jridgewell/gen-mapping": "^0.3.12",
|
||||||
"@jridgewell/trace-mapping": "^0.3.28",
|
"@jridgewell/trace-mapping": "^0.3.28",
|
||||||
"jsesc": "^3.0.2"
|
"jsesc": "^3.0.2"
|
||||||
@@ -130,6 +135,7 @@
|
|||||||
"version": "7.27.3",
|
"version": "7.27.3",
|
||||||
"resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz",
|
"resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz",
|
||||||
"integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==",
|
"integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/types": "^7.27.3"
|
"@babel/types": "^7.27.3"
|
||||||
@@ -139,13 +145,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/helper-compilation-targets": {
|
"node_modules/@babel/helper-compilation-targets": {
|
||||||
"version": "7.28.6",
|
"version": "7.29.7",
|
||||||
"resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz",
|
||||||
"integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==",
|
"integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/compat-data": "^7.28.6",
|
"@babel/compat-data": "^7.29.7",
|
||||||
"@babel/helper-validator-option": "^7.27.1",
|
"@babel/helper-validator-option": "^7.29.7",
|
||||||
"browserslist": "^4.24.0",
|
"browserslist": "^4.24.0",
|
||||||
"lru-cache": "^5.1.1",
|
"lru-cache": "^5.1.1",
|
||||||
"semver": "^6.3.1"
|
"semver": "^6.3.1"
|
||||||
@@ -158,6 +165,7 @@
|
|||||||
"version": "7.29.3",
|
"version": "7.29.3",
|
||||||
"resolved": "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.29.3.tgz",
|
"resolved": "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.29.3.tgz",
|
||||||
"integrity": "sha512-RpLYy2sb51oNLjuu1iD3bwBqCBWUzjO0ocp+iaCP/lJtb2CPLcnC2Fftw+4sAzaMELGeWTgExSKADbdo0GFVzA==",
|
"integrity": "sha512-RpLYy2sb51oNLjuu1iD3bwBqCBWUzjO0ocp+iaCP/lJtb2CPLcnC2Fftw+4sAzaMELGeWTgExSKADbdo0GFVzA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-annotate-as-pure": "^7.27.3",
|
"@babel/helper-annotate-as-pure": "^7.27.3",
|
||||||
@@ -176,9 +184,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/helper-globals": {
|
"node_modules/@babel/helper-globals": {
|
||||||
"version": "7.28.0",
|
"version": "7.29.7",
|
||||||
"resolved": "https://registry.npmmirror.com/@babel/helper-globals/-/helper-globals-7.28.0.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz",
|
||||||
"integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==",
|
"integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
@@ -188,6 +197,7 @@
|
|||||||
"version": "7.28.5",
|
"version": "7.28.5",
|
||||||
"resolved": "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz",
|
"resolved": "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz",
|
||||||
"integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==",
|
"integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/traverse": "^7.28.5",
|
"@babel/traverse": "^7.28.5",
|
||||||
@@ -198,27 +208,29 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/helper-module-imports": {
|
"node_modules/@babel/helper-module-imports": {
|
||||||
"version": "7.28.6",
|
"version": "7.29.7",
|
||||||
"resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz",
|
||||||
"integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==",
|
"integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/traverse": "^7.28.6",
|
"@babel/traverse": "^7.29.7",
|
||||||
"@babel/types": "^7.28.6"
|
"@babel/types": "^7.29.7"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/helper-module-transforms": {
|
"node_modules/@babel/helper-module-transforms": {
|
||||||
"version": "7.28.6",
|
"version": "7.29.7",
|
||||||
"resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz",
|
||||||
"integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==",
|
"integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-module-imports": "^7.28.6",
|
"@babel/helper-module-imports": "^7.29.7",
|
||||||
"@babel/helper-validator-identifier": "^7.28.5",
|
"@babel/helper-validator-identifier": "^7.29.7",
|
||||||
"@babel/traverse": "^7.28.6"
|
"@babel/traverse": "^7.29.7"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
@@ -231,6 +243,7 @@
|
|||||||
"version": "7.27.1",
|
"version": "7.27.1",
|
||||||
"resolved": "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz",
|
"resolved": "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz",
|
||||||
"integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==",
|
"integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/types": "^7.27.1"
|
"@babel/types": "^7.27.1"
|
||||||
@@ -243,6 +256,7 @@
|
|||||||
"version": "7.28.6",
|
"version": "7.28.6",
|
||||||
"resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz",
|
"resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz",
|
||||||
"integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==",
|
"integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
@@ -252,6 +266,7 @@
|
|||||||
"version": "7.28.6",
|
"version": "7.28.6",
|
||||||
"resolved": "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz",
|
"resolved": "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz",
|
||||||
"integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==",
|
"integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-member-expression-to-functions": "^7.28.5",
|
"@babel/helper-member-expression-to-functions": "^7.28.5",
|
||||||
@@ -269,6 +284,7 @@
|
|||||||
"version": "7.27.1",
|
"version": "7.27.1",
|
||||||
"resolved": "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz",
|
"resolved": "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz",
|
||||||
"integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==",
|
"integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/traverse": "^7.27.1",
|
"@babel/traverse": "^7.27.1",
|
||||||
@@ -279,52 +295,57 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/helper-string-parser": {
|
"node_modules/@babel/helper-string-parser": {
|
||||||
"version": "7.27.1",
|
"version": "7.29.7",
|
||||||
"resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz",
|
||||||
"integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
|
"integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==",
|
||||||
|
"devOptional": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/helper-validator-identifier": {
|
"node_modules/@babel/helper-validator-identifier": {
|
||||||
"version": "7.28.5",
|
"version": "7.29.7",
|
||||||
"resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz",
|
||||||
"integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
|
"integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==",
|
||||||
|
"devOptional": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/helper-validator-option": {
|
"node_modules/@babel/helper-validator-option": {
|
||||||
"version": "7.27.1",
|
"version": "7.29.7",
|
||||||
"resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz",
|
||||||
"integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==",
|
"integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/helpers": {
|
"node_modules/@babel/helpers": {
|
||||||
"version": "7.29.2",
|
"version": "7.29.7",
|
||||||
"resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.29.2.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz",
|
||||||
"integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==",
|
"integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/template": "^7.28.6",
|
"@babel/template": "^7.29.7",
|
||||||
"@babel/types": "^7.29.0"
|
"@babel/types": "^7.29.7"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/parser": {
|
"node_modules/@babel/parser": {
|
||||||
"version": "7.29.3",
|
"version": "7.29.7",
|
||||||
"resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.29.3.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz",
|
||||||
"integrity": "sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==",
|
"integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/types": "^7.29.0"
|
"@babel/types": "^7.29.7"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"parser": "bin/babel-parser.js"
|
"parser": "bin/babel-parser.js"
|
||||||
@@ -337,6 +358,7 @@
|
|||||||
"version": "7.28.6",
|
"version": "7.28.6",
|
||||||
"resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz",
|
"resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz",
|
||||||
"integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==",
|
"integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-plugin-utils": "^7.28.6"
|
"@babel/helper-plugin-utils": "^7.28.6"
|
||||||
@@ -352,6 +374,7 @@
|
|||||||
"version": "7.28.6",
|
"version": "7.28.6",
|
||||||
"resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz",
|
"resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz",
|
||||||
"integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==",
|
"integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-plugin-utils": "^7.28.6"
|
"@babel/helper-plugin-utils": "^7.28.6"
|
||||||
@@ -367,6 +390,7 @@
|
|||||||
"version": "7.28.6",
|
"version": "7.28.6",
|
||||||
"resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz",
|
"resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz",
|
||||||
"integrity": "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==",
|
"integrity": "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-module-transforms": "^7.28.6",
|
"@babel/helper-module-transforms": "^7.28.6",
|
||||||
@@ -383,6 +407,7 @@
|
|||||||
"version": "7.28.6",
|
"version": "7.28.6",
|
||||||
"resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.6.tgz",
|
"resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.6.tgz",
|
||||||
"integrity": "sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==",
|
"integrity": "sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-annotate-as-pure": "^7.27.3",
|
"@babel/helper-annotate-as-pure": "^7.27.3",
|
||||||
@@ -402,6 +427,7 @@
|
|||||||
"version": "7.28.5",
|
"version": "7.28.5",
|
||||||
"resolved": "https://registry.npmmirror.com/@babel/preset-typescript/-/preset-typescript-7.28.5.tgz",
|
"resolved": "https://registry.npmmirror.com/@babel/preset-typescript/-/preset-typescript-7.28.5.tgz",
|
||||||
"integrity": "sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==",
|
"integrity": "sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-plugin-utils": "^7.27.1",
|
"@babel/helper-plugin-utils": "^7.27.1",
|
||||||
@@ -427,31 +453,33 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/template": {
|
"node_modules/@babel/template": {
|
||||||
"version": "7.28.6",
|
"version": "7.29.7",
|
||||||
"resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.28.6.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz",
|
||||||
"integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==",
|
"integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/code-frame": "^7.28.6",
|
"@babel/code-frame": "^7.29.7",
|
||||||
"@babel/parser": "^7.28.6",
|
"@babel/parser": "^7.29.7",
|
||||||
"@babel/types": "^7.28.6"
|
"@babel/types": "^7.29.7"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/traverse": {
|
"node_modules/@babel/traverse": {
|
||||||
"version": "7.29.0",
|
"version": "7.29.7",
|
||||||
"resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.29.0.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.7.tgz",
|
||||||
"integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==",
|
"integrity": "sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/code-frame": "^7.29.0",
|
"@babel/code-frame": "^7.29.7",
|
||||||
"@babel/generator": "^7.29.0",
|
"@babel/generator": "^7.29.7",
|
||||||
"@babel/helper-globals": "^7.28.0",
|
"@babel/helper-globals": "^7.29.7",
|
||||||
"@babel/parser": "^7.29.0",
|
"@babel/parser": "^7.29.7",
|
||||||
"@babel/template": "^7.28.6",
|
"@babel/template": "^7.29.7",
|
||||||
"@babel/types": "^7.29.0",
|
"@babel/types": "^7.29.7",
|
||||||
"debug": "^4.3.1"
|
"debug": "^4.3.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -459,13 +487,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/types": {
|
"node_modules/@babel/types": {
|
||||||
"version": "7.29.0",
|
"version": "7.29.7",
|
||||||
"resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.29.0.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz",
|
||||||
"integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==",
|
"integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==",
|
||||||
|
"devOptional": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-string-parser": "^7.27.1",
|
"@babel/helper-string-parser": "^7.29.7",
|
||||||
"@babel/helper-validator-identifier": "^7.28.5"
|
"@babel/helper-validator-identifier": "^7.29.7"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
@@ -541,6 +570,7 @@
|
|||||||
"version": "1.65.0",
|
"version": "1.65.0",
|
||||||
"resolved": "https://registry.npmmirror.com/@dotenvx/dotenvx/-/dotenvx-1.65.0.tgz",
|
"resolved": "https://registry.npmmirror.com/@dotenvx/dotenvx/-/dotenvx-1.65.0.tgz",
|
||||||
"integrity": "sha512-v4FA/Lw3pTEloLxBqTOaYDX6MNo0Jo7lGBsPZhwnJBqRJp0AzQg1ZZNxrFsh6HVC6QWeWrfIKLn0y2eyIXaVDg==",
|
"integrity": "sha512-v4FA/Lw3pTEloLxBqTOaYDX6MNo0Jo7lGBsPZhwnJBqRJp0AzQg1ZZNxrFsh6HVC6QWeWrfIKLn0y2eyIXaVDg==",
|
||||||
|
"dev": true,
|
||||||
"license": "BSD-3-Clause",
|
"license": "BSD-3-Clause",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"commander": "^11.1.0",
|
"commander": "^11.1.0",
|
||||||
@@ -565,6 +595,7 @@
|
|||||||
"version": "11.1.0",
|
"version": "11.1.0",
|
||||||
"resolved": "https://registry.npmmirror.com/commander/-/commander-11.1.0.tgz",
|
"resolved": "https://registry.npmmirror.com/commander/-/commander-11.1.0.tgz",
|
||||||
"integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==",
|
"integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=16"
|
"node": ">=16"
|
||||||
@@ -574,6 +605,7 @@
|
|||||||
"version": "5.1.1",
|
"version": "5.1.1",
|
||||||
"resolved": "https://registry.npmmirror.com/execa/-/execa-5.1.1.tgz",
|
"resolved": "https://registry.npmmirror.com/execa/-/execa-5.1.1.tgz",
|
||||||
"integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
|
"integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"cross-spawn": "^7.0.3",
|
"cross-spawn": "^7.0.3",
|
||||||
@@ -597,6 +629,7 @@
|
|||||||
"version": "6.5.0",
|
"version": "6.5.0",
|
||||||
"resolved": "https://registry.npmmirror.com/fdir/-/fdir-6.5.0.tgz",
|
"resolved": "https://registry.npmmirror.com/fdir/-/fdir-6.5.0.tgz",
|
||||||
"integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
|
"integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12.0.0"
|
"node": ">=12.0.0"
|
||||||
@@ -614,6 +647,7 @@
|
|||||||
"version": "6.0.1",
|
"version": "6.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz",
|
||||||
"integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
|
"integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=10"
|
"node": ">=10"
|
||||||
@@ -626,6 +660,7 @@
|
|||||||
"version": "2.1.0",
|
"version": "2.1.0",
|
||||||
"resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-2.1.0.tgz",
|
"resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-2.1.0.tgz",
|
||||||
"integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
|
"integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
|
||||||
|
"dev": true,
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=10.17.0"
|
"node": ">=10.17.0"
|
||||||
@@ -635,6 +670,7 @@
|
|||||||
"version": "2.0.1",
|
"version": "2.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz",
|
||||||
"integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
|
"integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
@@ -647,6 +683,7 @@
|
|||||||
"version": "3.1.5",
|
"version": "3.1.5",
|
||||||
"resolved": "https://registry.npmmirror.com/isexe/-/isexe-3.1.5.tgz",
|
"resolved": "https://registry.npmmirror.com/isexe/-/isexe-3.1.5.tgz",
|
||||||
"integrity": "sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==",
|
"integrity": "sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==",
|
||||||
|
"dev": true,
|
||||||
"license": "BlueOak-1.0.0",
|
"license": "BlueOak-1.0.0",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
@@ -656,6 +693,7 @@
|
|||||||
"version": "4.0.1",
|
"version": "4.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-4.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-4.0.1.tgz",
|
||||||
"integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
|
"integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"path-key": "^3.0.0"
|
"path-key": "^3.0.0"
|
||||||
@@ -668,6 +706,7 @@
|
|||||||
"version": "5.1.2",
|
"version": "5.1.2",
|
||||||
"resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz",
|
"resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz",
|
||||||
"integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
|
"integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"mimic-fn": "^2.1.0"
|
"mimic-fn": "^2.1.0"
|
||||||
@@ -683,6 +722,7 @@
|
|||||||
"version": "4.0.4",
|
"version": "4.0.4",
|
||||||
"resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.4.tgz",
|
"resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.4.tgz",
|
||||||
"integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
|
"integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12"
|
"node": ">=12"
|
||||||
@@ -695,12 +735,14 @@
|
|||||||
"version": "3.0.7",
|
"version": "3.0.7",
|
||||||
"resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz",
|
"resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz",
|
||||||
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
|
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "ISC"
|
"license": "ISC"
|
||||||
},
|
},
|
||||||
"node_modules/@dotenvx/dotenvx/node_modules/strip-final-newline": {
|
"node_modules/@dotenvx/dotenvx/node_modules/strip-final-newline": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
|
||||||
"integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
|
"integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6"
|
"node": ">=6"
|
||||||
@@ -710,6 +752,7 @@
|
|||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/which/-/which-4.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/which/-/which-4.0.0.tgz",
|
||||||
"integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==",
|
"integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==",
|
||||||
|
"dev": true,
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"isexe": "^3.1.1"
|
"isexe": "^3.1.1"
|
||||||
@@ -725,6 +768,7 @@
|
|||||||
"version": "0.2.6",
|
"version": "0.2.6",
|
||||||
"resolved": "https://registry.npmmirror.com/@ecies/ciphers/-/ciphers-0.2.6.tgz",
|
"resolved": "https://registry.npmmirror.com/@ecies/ciphers/-/ciphers-0.2.6.tgz",
|
||||||
"integrity": "sha512-patgsRPKGkhhoBjETV4XxD0En4ui5fbX0hzayqI3M8tvNMGUoUvmyYAIWwlxBc1KX5cturfqByYdj5bYGRpN9g==",
|
"integrity": "sha512-patgsRPKGkhhoBjETV4XxD0En4ui5fbX0hzayqI3M8tvNMGUoUvmyYAIWwlxBc1KX5cturfqByYdj5bYGRpN9g==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"bun": ">=1",
|
"bun": ">=1",
|
||||||
@@ -954,6 +998,7 @@
|
|||||||
"version": "1.19.14",
|
"version": "1.19.14",
|
||||||
"resolved": "https://registry.npmmirror.com/@hono/node-server/-/node-server-1.19.14.tgz",
|
"resolved": "https://registry.npmmirror.com/@hono/node-server/-/node-server-1.19.14.tgz",
|
||||||
"integrity": "sha512-GwtvgtXxnWsucXvbQXkRgqksiH2Qed37H9xHZocE5sA3N8O8O8/8FA3uclQXxXVzc9XBZuEOMK7+r02FmSpHtw==",
|
"integrity": "sha512-GwtvgtXxnWsucXvbQXkRgqksiH2Qed37H9xHZocE5sA3N8O8O8/8FA3uclQXxXVzc9XBZuEOMK7+r02FmSpHtw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18.14.1"
|
"node": ">=18.14.1"
|
||||||
@@ -1546,6 +1591,7 @@
|
|||||||
"version": "2.0.5",
|
"version": "2.0.5",
|
||||||
"resolved": "https://registry.npmmirror.com/@inquirer/ansi/-/ansi-2.0.5.tgz",
|
"resolved": "https://registry.npmmirror.com/@inquirer/ansi/-/ansi-2.0.5.tgz",
|
||||||
"integrity": "sha512-doc2sWgJpbFQ64UflSVd17ibMGDuxO1yKgOgLMwavzESnXjFWJqUeG8saYosqKpHp4kWiM5x1nXvEjbpx90gzw==",
|
"integrity": "sha512-doc2sWgJpbFQ64UflSVd17ibMGDuxO1yKgOgLMwavzESnXjFWJqUeG8saYosqKpHp4kWiM5x1nXvEjbpx90gzw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
|
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
|
||||||
@@ -1555,6 +1601,7 @@
|
|||||||
"version": "6.0.12",
|
"version": "6.0.12",
|
||||||
"resolved": "https://registry.npmmirror.com/@inquirer/confirm/-/confirm-6.0.12.tgz",
|
"resolved": "https://registry.npmmirror.com/@inquirer/confirm/-/confirm-6.0.12.tgz",
|
||||||
"integrity": "sha512-h9FgGun3QwVYNj5TWIZZ+slii73bMoBFjPfVIGtnFuL4t8gBiNDV9PcSfIzkuxvgquJKt9nr1QzszpBzTbH8Og==",
|
"integrity": "sha512-h9FgGun3QwVYNj5TWIZZ+slii73bMoBFjPfVIGtnFuL4t8gBiNDV9PcSfIzkuxvgquJKt9nr1QzszpBzTbH8Og==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@inquirer/core": "^11.1.9",
|
"@inquirer/core": "^11.1.9",
|
||||||
@@ -1576,6 +1623,7 @@
|
|||||||
"version": "11.1.9",
|
"version": "11.1.9",
|
||||||
"resolved": "https://registry.npmmirror.com/@inquirer/core/-/core-11.1.9.tgz",
|
"resolved": "https://registry.npmmirror.com/@inquirer/core/-/core-11.1.9.tgz",
|
||||||
"integrity": "sha512-BDE4fG22uYh1bGSifcj7JSx119TVYNViMhMu85usp4Fswrzh6M0DV3yld64jA98uOAa2GSQ4Bg4bZRm2d2cwSg==",
|
"integrity": "sha512-BDE4fG22uYh1bGSifcj7JSx119TVYNViMhMu85usp4Fswrzh6M0DV3yld64jA98uOAa2GSQ4Bg4bZRm2d2cwSg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@inquirer/ansi": "^2.0.5",
|
"@inquirer/ansi": "^2.0.5",
|
||||||
@@ -1602,6 +1650,7 @@
|
|||||||
"version": "2.0.5",
|
"version": "2.0.5",
|
||||||
"resolved": "https://registry.npmmirror.com/@inquirer/figures/-/figures-2.0.5.tgz",
|
"resolved": "https://registry.npmmirror.com/@inquirer/figures/-/figures-2.0.5.tgz",
|
||||||
"integrity": "sha512-NsSs4kzfm12lNetHwAn3GEuH317IzpwrMCbOuMIVytpjnJ90YYHNwdRgYGuKmVxwuIqSgqk3M5qqQt1cDk0tGQ==",
|
"integrity": "sha512-NsSs4kzfm12lNetHwAn3GEuH317IzpwrMCbOuMIVytpjnJ90YYHNwdRgYGuKmVxwuIqSgqk3M5qqQt1cDk0tGQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
|
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
|
||||||
@@ -1611,6 +1660,7 @@
|
|||||||
"version": "4.0.5",
|
"version": "4.0.5",
|
||||||
"resolved": "https://registry.npmmirror.com/@inquirer/type/-/type-4.0.5.tgz",
|
"resolved": "https://registry.npmmirror.com/@inquirer/type/-/type-4.0.5.tgz",
|
||||||
"integrity": "sha512-aetVUNeKNc/VriqXlw1NRSW0zhMBB0W4bNbWRJgzRl/3d0QNDQFfk0GO5SDdtjMZVg6o8ZKEiadd7SCCzoOn5Q==",
|
"integrity": "sha512-aetVUNeKNc/VriqXlw1NRSW0zhMBB0W4bNbWRJgzRl/3d0QNDQFfk0GO5SDdtjMZVg6o8ZKEiadd7SCCzoOn5Q==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
|
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
|
||||||
@@ -1628,6 +1678,7 @@
|
|||||||
"version": "0.3.13",
|
"version": "0.3.13",
|
||||||
"resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
|
"resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
|
||||||
"integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
|
"integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@jridgewell/sourcemap-codec": "^1.5.0",
|
"@jridgewell/sourcemap-codec": "^1.5.0",
|
||||||
@@ -1638,6 +1689,7 @@
|
|||||||
"version": "2.3.5",
|
"version": "2.3.5",
|
||||||
"resolved": "https://registry.npmmirror.com/@jridgewell/remapping/-/remapping-2.3.5.tgz",
|
"resolved": "https://registry.npmmirror.com/@jridgewell/remapping/-/remapping-2.3.5.tgz",
|
||||||
"integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==",
|
"integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@jridgewell/gen-mapping": "^0.3.5",
|
"@jridgewell/gen-mapping": "^0.3.5",
|
||||||
@@ -1648,6 +1700,7 @@
|
|||||||
"version": "3.1.2",
|
"version": "3.1.2",
|
||||||
"resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
|
"resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
|
||||||
"integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
|
"integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.0.0"
|
"node": ">=6.0.0"
|
||||||
@@ -1657,12 +1710,14 @@
|
|||||||
"version": "1.5.5",
|
"version": "1.5.5",
|
||||||
"resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
|
"resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
|
||||||
"integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
|
"integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@jridgewell/trace-mapping": {
|
"node_modules/@jridgewell/trace-mapping": {
|
||||||
"version": "0.3.31",
|
"version": "0.3.31",
|
||||||
"resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
|
"resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
|
||||||
"integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
|
"integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@jridgewell/resolve-uri": "^3.1.0",
|
"@jridgewell/resolve-uri": "^3.1.0",
|
||||||
@@ -1673,6 +1728,7 @@
|
|||||||
"version": "1.29.0",
|
"version": "1.29.0",
|
||||||
"resolved": "https://registry.npmmirror.com/@modelcontextprotocol/sdk/-/sdk-1.29.0.tgz",
|
"resolved": "https://registry.npmmirror.com/@modelcontextprotocol/sdk/-/sdk-1.29.0.tgz",
|
||||||
"integrity": "sha512-zo37mZA9hJWpULgkRpowewez1y6ML5GsXJPY8FI0tBBCd77HEvza4jDqRKOXgHNn867PVGCyTdzqpz0izu5ZjQ==",
|
"integrity": "sha512-zo37mZA9hJWpULgkRpowewez1y6ML5GsXJPY8FI0tBBCd77HEvza4jDqRKOXgHNn867PVGCyTdzqpz0izu5ZjQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@hono/node-server": "^1.19.9",
|
"@hono/node-server": "^1.19.9",
|
||||||
@@ -1713,6 +1769,7 @@
|
|||||||
"version": "8.20.0",
|
"version": "8.20.0",
|
||||||
"resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.20.0.tgz",
|
"resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.20.0.tgz",
|
||||||
"integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==",
|
"integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"fast-deep-equal": "^3.1.3",
|
"fast-deep-equal": "^3.1.3",
|
||||||
@@ -1729,12 +1786,14 @@
|
|||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
|
||||||
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
|
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@mswjs/interceptors": {
|
"node_modules/@mswjs/interceptors": {
|
||||||
"version": "0.41.8",
|
"version": "0.41.8",
|
||||||
"resolved": "https://registry.npmmirror.com/@mswjs/interceptors/-/interceptors-0.41.8.tgz",
|
"resolved": "https://registry.npmmirror.com/@mswjs/interceptors/-/interceptors-0.41.8.tgz",
|
||||||
"integrity": "sha512-pRLMNKTSGRoLq+KnEB/7OY5vijw1XmcheAAOiv6pj7W1FG32kAGqj1C/RK/cqxRGr1Fh+zBi8sDur8kj3EQv6A==",
|
"integrity": "sha512-pRLMNKTSGRoLq+KnEB/7OY5vijw1XmcheAAOiv6pj7W1FG32kAGqj1C/RK/cqxRGr1Fh+zBi8sDur8kj3EQv6A==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@open-draft/deferred-promise": "^2.2.0",
|
"@open-draft/deferred-promise": "^2.2.0",
|
||||||
@@ -1752,6 +1811,7 @@
|
|||||||
"version": "2.2.0",
|
"version": "2.2.0",
|
||||||
"resolved": "https://registry.npmmirror.com/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz",
|
"resolved": "https://registry.npmmirror.com/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz",
|
||||||
"integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==",
|
"integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@napi-rs/wasm-runtime": {
|
"node_modules/@napi-rs/wasm-runtime": {
|
||||||
@@ -1768,15 +1828,15 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@next/env": {
|
"node_modules/@next/env": {
|
||||||
"version": "16.2.6",
|
"version": "16.2.10",
|
||||||
"resolved": "https://registry.npmmirror.com/@next/env/-/env-16.2.6.tgz",
|
"resolved": "https://registry.npmjs.org/@next/env/-/env-16.2.10.tgz",
|
||||||
"integrity": "sha512-gd8HoHN4ufj73WmR3JmVolrpJR47ILK6LouP5xElPglaVxir6e1a7VzvTvDWkOoPXT9rkkTzyCxBu4yeZfZwcw==",
|
"integrity": "sha512-zLPxg9M0MEHmygpj5OuxjQ+vHMiy/K7cSp74G8ecYolmgUWw0RwN02tF56npup/+qaI8JB97hQgS/r2Hb6QwVA==",
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@next/eslint-plugin-next": {
|
"node_modules/@next/eslint-plugin-next": {
|
||||||
"version": "16.2.6",
|
"version": "16.2.10",
|
||||||
"resolved": "https://registry.npmmirror.com/@next/eslint-plugin-next/-/eslint-plugin-next-16.2.6.tgz",
|
"resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-16.2.10.tgz",
|
||||||
"integrity": "sha512-Z8l6o4JWKUl755x4R+wogD86KPeU+Ckw4K+SYG4kHeOJtRenDeK+OSbGcqZpDtbwn9DsJVdir2UxmwXuinUbUw==",
|
"integrity": "sha512-Gs8D2m21VnJeFo9qvYIIqJH94frWerWYu41BprU1pLtRVF7PCQNLiFZZ3fG+iPuj3K83Cwv/rt+msLOy8Qgu3Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -1784,9 +1844,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@next/swc-darwin-arm64": {
|
"node_modules/@next/swc-darwin-arm64": {
|
||||||
"version": "16.2.6",
|
"version": "16.2.10",
|
||||||
"resolved": "https://registry.npmmirror.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.2.6.tgz",
|
"resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.2.10.tgz",
|
||||||
"integrity": "sha512-ZJGkkcNfYgrrMkqOdZ7zoLa1TOy0qpcMfk/z4Mh/FKUz40gVO+HNQWqmLxf67Z5WB64DRp0dhEbyHfel+6sJUg==",
|
"integrity": "sha512-v9IdJCa0H0mbo+8z5zwUpOk1Vj7RjkcI5uNYf5Ws1y6szf/p3Mzl9hLaST8SCt6L9h8NGnruZcd2+o0NTNwDhA==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -1800,9 +1860,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@next/swc-darwin-x64": {
|
"node_modules/@next/swc-darwin-x64": {
|
||||||
"version": "16.2.6",
|
"version": "16.2.10",
|
||||||
"resolved": "https://registry.npmmirror.com/@next/swc-darwin-x64/-/swc-darwin-x64-16.2.6.tgz",
|
"resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.2.10.tgz",
|
||||||
"integrity": "sha512-v/YLBHIY132Ced3puBJ7YJKw1lqsCrgcNo2aRJlCEyQrrCeRJlvGlnmxhPxNQI3KE3N1DN5r9TPNPvka3nq5RQ==",
|
"integrity": "sha512-17IS0jJRViROGmA9uGdNR8VPJpfbnaVG7E9qhso5jDLkmyd0lSDORWxbcKINzcFqzZqGwGtMSnrFRxBpuUYjLQ==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@@ -1816,9 +1876,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@next/swc-linux-arm64-gnu": {
|
"node_modules/@next/swc-linux-arm64-gnu": {
|
||||||
"version": "16.2.6",
|
"version": "16.2.10",
|
||||||
"resolved": "https://registry.npmmirror.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.2.6.tgz",
|
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.2.10.tgz",
|
||||||
"integrity": "sha512-RPOvqlYBbcQjkz9VQQDZ2T2bARIjXZV1KFlt+V2Mr6SW/e4I9fcKsaA0hdyf2FHoTlsV2xnBd5Y912rP/1Ce6w==",
|
"integrity": "sha512-GRQRsRtuciNJvB54AvvuQTiq0oZtFwa1owQqtZD8wwnGpM2L39MV22kpI72YSXLKIyY40LC66EiLFv4PiicXxg==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -1835,9 +1895,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@next/swc-linux-arm64-musl": {
|
"node_modules/@next/swc-linux-arm64-musl": {
|
||||||
"version": "16.2.6",
|
"version": "16.2.10",
|
||||||
"resolved": "https://registry.npmmirror.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.2.6.tgz",
|
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.2.10.tgz",
|
||||||
"integrity": "sha512-URUTu1+dMkxJsPFgm+OeEvq9wf5sujw0EvgYy80TDGHTSLTnIHeqb0Eu8A3sC95IRgjejQL+kC4mw+4yPxiAXA==",
|
"integrity": "sha512-zkN9MQYS7UQBro+FnISUq1itaQjXI9xqISzuQ+2bc921NcJ1x4yPCqrn77tVN6/dOOXaaWVX3k6/bR07pPwK+A==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -1854,9 +1914,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@next/swc-linux-x64-gnu": {
|
"node_modules/@next/swc-linux-x64-gnu": {
|
||||||
"version": "16.2.6",
|
"version": "16.2.10",
|
||||||
"resolved": "https://registry.npmmirror.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.2.6.tgz",
|
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.2.10.tgz",
|
||||||
"integrity": "sha512-DOj182mPV8G3UkrayLoREM5YEYI+Dk5wv7Ox9xl1fFibAELEsFD0lDPfHIeILlutMMfdyhlzYPELG3peuKaurw==",
|
"integrity": "sha512-iCVJnwvrPYECvA6WM/7+oo+OiTvedIKLxtCLAZP4xZR3nXa1zmzZyLPbYCmWvpd4CvMYF1EMTafd0ii3DygLvA==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@@ -1873,9 +1933,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@next/swc-linux-x64-musl": {
|
"node_modules/@next/swc-linux-x64-musl": {
|
||||||
"version": "16.2.6",
|
"version": "16.2.10",
|
||||||
"resolved": "https://registry.npmmirror.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.2.6.tgz",
|
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.2.10.tgz",
|
||||||
"integrity": "sha512-HKQ5SP/V/ub73UvF7n/zeJlxk2kLmtL7Wzrg4WfmkjmNos5onJ2tKu7yZOPdL18A6Svfn3max29ym+ry7NkK4g==",
|
"integrity": "sha512-ov2g4H0dHY9bPoOU83m91hWT7Iq5qy13bUnyyshLU3HGR1Ownn0X9QpmDPc5iIUaahTp7f7LeGAhV4DSFtackw==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@@ -1892,9 +1952,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@next/swc-win32-arm64-msvc": {
|
"node_modules/@next/swc-win32-arm64-msvc": {
|
||||||
"version": "16.2.6",
|
"version": "16.2.10",
|
||||||
"resolved": "https://registry.npmmirror.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.2.6.tgz",
|
"resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.2.10.tgz",
|
||||||
"integrity": "sha512-LZXpTlPyS5v7HhSmnvsLGP3iIYgYOBnc8r8ArlT55sGHV89bR2HlDdBjWQ+PY6SJMmk8TuVGFuxalnP3k/0Dwg==",
|
"integrity": "sha512-DwAnhLX76HQiFFQNgWlcK+JzlnD1rZ+UK/WY0ZMI/deXpvgnesjNYrqcfo1JzBuz4Kf7o3brIBL0glI1junatA==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -1908,9 +1968,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@next/swc-win32-x64-msvc": {
|
"node_modules/@next/swc-win32-x64-msvc": {
|
||||||
"version": "16.2.6",
|
"version": "16.2.10",
|
||||||
"resolved": "https://registry.npmmirror.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.2.6.tgz",
|
"resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.2.10.tgz",
|
||||||
"integrity": "sha512-F0+4i0h9J6C4eE3EAPWsoCk7UW/dbzOjyzxY0qnDUOYFu6FFmdZ6l97/XdV3/Nz3VYyO7UWjyEJUXkGqcoXfMA==",
|
"integrity": "sha512-0JXq3b85Jk9Jg4ntLUbXSPvoDw3gpZou7twuKdoFG2jOw635v7+IiXfTaa0TxVMyx78pUjnrVYwLgjKfX4e6/A==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@@ -1927,6 +1987,7 @@
|
|||||||
"version": "1.3.0",
|
"version": "1.3.0",
|
||||||
"resolved": "https://registry.npmmirror.com/@noble/ciphers/-/ciphers-1.3.0.tgz",
|
"resolved": "https://registry.npmmirror.com/@noble/ciphers/-/ciphers-1.3.0.tgz",
|
||||||
"integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==",
|
"integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^14.21.3 || >=16"
|
"node": "^14.21.3 || >=16"
|
||||||
@@ -1939,6 +2000,7 @@
|
|||||||
"version": "1.9.7",
|
"version": "1.9.7",
|
||||||
"resolved": "https://registry.npmmirror.com/@noble/curves/-/curves-1.9.7.tgz",
|
"resolved": "https://registry.npmmirror.com/@noble/curves/-/curves-1.9.7.tgz",
|
||||||
"integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==",
|
"integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@noble/hashes": "1.8.0"
|
"@noble/hashes": "1.8.0"
|
||||||
@@ -1954,6 +2016,7 @@
|
|||||||
"version": "1.8.0",
|
"version": "1.8.0",
|
||||||
"resolved": "https://registry.npmmirror.com/@noble/hashes/-/hashes-1.8.0.tgz",
|
"resolved": "https://registry.npmmirror.com/@noble/hashes/-/hashes-1.8.0.tgz",
|
||||||
"integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==",
|
"integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^14.21.3 || >=16"
|
"node": "^14.21.3 || >=16"
|
||||||
@@ -1966,6 +2029,7 @@
|
|||||||
"version": "2.1.5",
|
"version": "2.1.5",
|
||||||
"resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
|
"resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
|
||||||
"integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
|
"integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@nodelib/fs.stat": "2.0.5",
|
"@nodelib/fs.stat": "2.0.5",
|
||||||
@@ -1979,6 +2043,7 @@
|
|||||||
"version": "2.0.5",
|
"version": "2.0.5",
|
||||||
"resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
|
"resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
|
||||||
"integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
|
"integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 8"
|
"node": ">= 8"
|
||||||
@@ -1988,6 +2053,7 @@
|
|||||||
"version": "1.2.8",
|
"version": "1.2.8",
|
||||||
"resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
|
"resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
|
||||||
"integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
|
"integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@nodelib/fs.scandir": "2.1.5",
|
"@nodelib/fs.scandir": "2.1.5",
|
||||||
@@ -2011,12 +2077,14 @@
|
|||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/@open-draft/deferred-promise/-/deferred-promise-3.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/@open-draft/deferred-promise/-/deferred-promise-3.0.0.tgz",
|
||||||
"integrity": "sha512-XW375UK8/9SqUVNVa6M0yEy8+iTi4QN5VZ7aZuRFQmy76LRwI9wy5F4YIBU6T+eTe2/DNDo8tqu8RHlwLHM6RA==",
|
"integrity": "sha512-XW375UK8/9SqUVNVa6M0yEy8+iTi4QN5VZ7aZuRFQmy76LRwI9wy5F4YIBU6T+eTe2/DNDo8tqu8RHlwLHM6RA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@open-draft/logger": {
|
"node_modules/@open-draft/logger": {
|
||||||
"version": "0.3.0",
|
"version": "0.3.0",
|
||||||
"resolved": "https://registry.npmmirror.com/@open-draft/logger/-/logger-0.3.0.tgz",
|
"resolved": "https://registry.npmmirror.com/@open-draft/logger/-/logger-0.3.0.tgz",
|
||||||
"integrity": "sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==",
|
"integrity": "sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"is-node-process": "^1.2.0",
|
"is-node-process": "^1.2.0",
|
||||||
@@ -2027,6 +2095,7 @@
|
|||||||
"version": "2.1.0",
|
"version": "2.1.0",
|
||||||
"resolved": "https://registry.npmmirror.com/@open-draft/until/-/until-2.1.0.tgz",
|
"resolved": "https://registry.npmmirror.com/@open-draft/until/-/until-2.1.0.tgz",
|
||||||
"integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==",
|
"integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@reduxjs/toolkit": {
|
"node_modules/@reduxjs/toolkit": {
|
||||||
@@ -2075,6 +2144,7 @@
|
|||||||
"version": "0.4.1",
|
"version": "0.4.1",
|
||||||
"resolved": "https://registry.npmmirror.com/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz",
|
"resolved": "https://registry.npmmirror.com/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz",
|
||||||
"integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==",
|
"integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@shikijs/core": {
|
"node_modules/@shikijs/core": {
|
||||||
@@ -2181,6 +2251,7 @@
|
|||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz",
|
||||||
"integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==",
|
"integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
@@ -2497,6 +2568,7 @@
|
|||||||
"version": "0.27.0",
|
"version": "0.27.0",
|
||||||
"resolved": "https://registry.npmmirror.com/@ts-morph/common/-/common-0.27.0.tgz",
|
"resolved": "https://registry.npmmirror.com/@ts-morph/common/-/common-0.27.0.tgz",
|
||||||
"integrity": "sha512-Wf29UqxWDpc+i61k3oIOzcUfQt79PIT9y/MWfAGlrkjg6lBC1hwDECLXPVJAhWjiGbfBCxZd65F/LIZF3+jeJQ==",
|
"integrity": "sha512-Wf29UqxWDpc+i61k3oIOzcUfQt79PIT9y/MWfAGlrkjg6lBC1hwDECLXPVJAhWjiGbfBCxZd65F/LIZF3+jeJQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"fast-glob": "^3.3.3",
|
"fast-glob": "^3.3.3",
|
||||||
@@ -2504,31 +2576,11 @@
|
|||||||
"path-browserify": "^1.0.1"
|
"path-browserify": "^1.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@ts-morph/common/node_modules/balanced-match": {
|
|
||||||
"version": "4.0.4",
|
|
||||||
"resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-4.0.4.tgz",
|
|
||||||
"integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": "18 || 20 || >=22"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@ts-morph/common/node_modules/brace-expansion": {
|
|
||||||
"version": "5.0.6",
|
|
||||||
"resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-5.0.6.tgz",
|
|
||||||
"integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"balanced-match": "^4.0.2"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": "18 || 20 || >=22"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@ts-morph/common/node_modules/fast-glob": {
|
"node_modules/@ts-morph/common/node_modules/fast-glob": {
|
||||||
"version": "3.3.3",
|
"version": "3.3.3",
|
||||||
"resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.3.tgz",
|
"resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.3.tgz",
|
||||||
"integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
|
"integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@nodelib/fs.stat": "^2.0.2",
|
"@nodelib/fs.stat": "^2.0.2",
|
||||||
@@ -2545,6 +2597,7 @@
|
|||||||
"version": "5.1.2",
|
"version": "5.1.2",
|
||||||
"resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz",
|
"resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz",
|
||||||
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
|
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
|
||||||
|
"dev": true,
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"is-glob": "^4.0.1"
|
"is-glob": "^4.0.1"
|
||||||
@@ -2557,6 +2610,7 @@
|
|||||||
"version": "10.2.5",
|
"version": "10.2.5",
|
||||||
"resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-10.2.5.tgz",
|
"resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-10.2.5.tgz",
|
||||||
"integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==",
|
"integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==",
|
||||||
|
"dev": true,
|
||||||
"license": "BlueOak-1.0.0",
|
"license": "BlueOak-1.0.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"brace-expansion": "^5.0.5"
|
"brace-expansion": "^5.0.5"
|
||||||
@@ -2684,6 +2738,7 @@
|
|||||||
"version": "20.19.40",
|
"version": "20.19.40",
|
||||||
"resolved": "https://registry.npmmirror.com/@types/node/-/node-20.19.40.tgz",
|
"resolved": "https://registry.npmmirror.com/@types/node/-/node-20.19.40.tgz",
|
||||||
"integrity": "sha512-xxx6M2IpSTnnKcR0cMvIiohkiCx20/oRPtWGbenFygKCGl3zqUzdNjQ/1V4solq1LU+dgv0nQzeGOuqkqZGg0Q==",
|
"integrity": "sha512-xxx6M2IpSTnnKcR0cMvIiohkiCx20/oRPtWGbenFygKCGl3zqUzdNjQ/1V4solq1LU+dgv0nQzeGOuqkqZGg0Q==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"undici-types": "~6.21.0"
|
"undici-types": "~6.21.0"
|
||||||
@@ -2713,6 +2768,7 @@
|
|||||||
"version": "2.4.10",
|
"version": "2.4.10",
|
||||||
"resolved": "https://registry.npmmirror.com/@types/set-cookie-parser/-/set-cookie-parser-2.4.10.tgz",
|
"resolved": "https://registry.npmmirror.com/@types/set-cookie-parser/-/set-cookie-parser-2.4.10.tgz",
|
||||||
"integrity": "sha512-GGmQVGpQWUe5qglJozEjZV/5dyxbOOZ0LHe/lqyWssB88Y4svNfst0uqBVscdDeIKl5Jy5+aPSvy7mI9tYRguw==",
|
"integrity": "sha512-GGmQVGpQWUe5qglJozEjZV/5dyxbOOZ0LHe/lqyWssB88Y4svNfst0uqBVscdDeIKl5Jy5+aPSvy7mI9tYRguw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/node": "*"
|
"@types/node": "*"
|
||||||
@@ -2722,6 +2778,7 @@
|
|||||||
"version": "2.0.6",
|
"version": "2.0.6",
|
||||||
"resolved": "https://registry.npmmirror.com/@types/statuses/-/statuses-2.0.6.tgz",
|
"resolved": "https://registry.npmmirror.com/@types/statuses/-/statuses-2.0.6.tgz",
|
||||||
"integrity": "sha512-xMAgYwceFhRA2zY+XbEA7mxYbA093wdiW8Vu6gZPGWy9cmOyU9XesH1tNcEWsKFd5Vzrqx5T3D38PWx1FIIXkA==",
|
"integrity": "sha512-xMAgYwceFhRA2zY+XbEA7mxYbA093wdiW8Vu6gZPGWy9cmOyU9XesH1tNcEWsKFd5Vzrqx5T3D38PWx1FIIXkA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@types/unist": {
|
"node_modules/@types/unist": {
|
||||||
@@ -2740,6 +2797,7 @@
|
|||||||
"version": "4.0.2",
|
"version": "4.0.2",
|
||||||
"resolved": "https://registry.npmmirror.com/@types/validate-npm-package-name/-/validate-npm-package-name-4.0.2.tgz",
|
"resolved": "https://registry.npmmirror.com/@types/validate-npm-package-name/-/validate-npm-package-name-4.0.2.tgz",
|
||||||
"integrity": "sha512-lrpDziQipxCEeK5kWxvljWYhUvOiB2A9izZd9B2AFarYAkqZshb4lPbRs7zKEic6eGtH8V/2qJW+dPp9OtF6bw==",
|
"integrity": "sha512-lrpDziQipxCEeK5kWxvljWYhUvOiB2A9izZd9B2AFarYAkqZshb4lPbRs7zKEic6eGtH8V/2qJW+dPp9OtF6bw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/eslint-plugin": {
|
"node_modules/@typescript-eslint/eslint-plugin": {
|
||||||
@@ -2930,29 +2988,6 @@
|
|||||||
"typescript": ">=4.8.4 <6.1.0"
|
"typescript": ">=4.8.4 <6.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": {
|
|
||||||
"version": "4.0.4",
|
|
||||||
"resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-4.0.4.tgz",
|
|
||||||
"integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": "18 || 20 || >=22"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
|
|
||||||
"version": "5.0.5",
|
|
||||||
"resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-5.0.5.tgz",
|
|
||||||
"integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"balanced-match": "^4.0.2"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": "18 || 20 || >=22"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
|
"node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
|
||||||
"version": "10.2.5",
|
"version": "10.2.5",
|
||||||
"resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-10.2.5.tgz",
|
"resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-10.2.5.tgz",
|
||||||
@@ -3340,6 +3375,7 @@
|
|||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/accepts/-/accepts-2.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/accepts/-/accepts-2.0.0.tgz",
|
||||||
"integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==",
|
"integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"mime-types": "^3.0.0",
|
"mime-types": "^3.0.0",
|
||||||
@@ -3353,6 +3389,7 @@
|
|||||||
"version": "1.54.0",
|
"version": "1.54.0",
|
||||||
"resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.54.0.tgz",
|
"resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.54.0.tgz",
|
||||||
"integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
|
"integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.6"
|
"node": ">= 0.6"
|
||||||
@@ -3362,6 +3399,7 @@
|
|||||||
"version": "3.0.2",
|
"version": "3.0.2",
|
||||||
"resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-3.0.2.tgz",
|
"resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-3.0.2.tgz",
|
||||||
"integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==",
|
"integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"mime-db": "^1.54.0"
|
"mime-db": "^1.54.0"
|
||||||
@@ -3397,18 +3435,11 @@
|
|||||||
"acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
|
"acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/adler-32": {
|
|
||||||
"version": "1.3.1",
|
|
||||||
"resolved": "https://mirrors.cloud.tencent.com/npm/adler-32/-/adler-32-1.3.1.tgz",
|
|
||||||
"integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=0.8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/agent-base": {
|
"node_modules/agent-base": {
|
||||||
"version": "7.1.4",
|
"version": "7.1.4",
|
||||||
"resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-7.1.4.tgz",
|
"resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-7.1.4.tgz",
|
||||||
"integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
|
"integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 14"
|
"node": ">= 14"
|
||||||
@@ -3435,6 +3466,7 @@
|
|||||||
"version": "3.0.1",
|
"version": "3.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/ajv-formats/-/ajv-formats-3.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/ajv-formats/-/ajv-formats-3.0.1.tgz",
|
||||||
"integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==",
|
"integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ajv": "^8.0.0"
|
"ajv": "^8.0.0"
|
||||||
@@ -3452,6 +3484,7 @@
|
|||||||
"version": "8.20.0",
|
"version": "8.20.0",
|
||||||
"resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.20.0.tgz",
|
"resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.20.0.tgz",
|
||||||
"integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==",
|
"integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"fast-deep-equal": "^3.1.3",
|
"fast-deep-equal": "^3.1.3",
|
||||||
@@ -3468,12 +3501,14 @@
|
|||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
|
||||||
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
|
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/ansi-regex": {
|
"node_modules/ansi-regex": {
|
||||||
"version": "6.2.2",
|
"version": "6.2.2",
|
||||||
"resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.2.2.tgz",
|
"resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.2.2.tgz",
|
||||||
"integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
|
"integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12"
|
"node": ">=12"
|
||||||
@@ -3486,6 +3521,7 @@
|
|||||||
"version": "4.3.0",
|
"version": "4.3.0",
|
||||||
"resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
|
"resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
|
||||||
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
|
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"color-convert": "^2.0.1"
|
"color-convert": "^2.0.1"
|
||||||
@@ -3501,6 +3537,7 @@
|
|||||||
"version": "2.0.1",
|
"version": "2.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz",
|
||||||
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
|
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
|
||||||
|
"dev": true,
|
||||||
"license": "Python-2.0"
|
"license": "Python-2.0"
|
||||||
},
|
},
|
||||||
"node_modules/aria-query": {
|
"node_modules/aria-query": {
|
||||||
@@ -3677,6 +3714,7 @@
|
|||||||
"version": "0.16.1",
|
"version": "0.16.1",
|
||||||
"resolved": "https://registry.npmmirror.com/ast-types/-/ast-types-0.16.1.tgz",
|
"resolved": "https://registry.npmmirror.com/ast-types/-/ast-types-0.16.1.tgz",
|
||||||
"integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==",
|
"integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"tslib": "^2.0.1"
|
"tslib": "^2.0.1"
|
||||||
@@ -3735,16 +3773,42 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/axios": {
|
"node_modules/axios": {
|
||||||
"version": "1.16.0",
|
"version": "1.18.1",
|
||||||
"resolved": "https://registry.npmmirror.com/axios/-/axios-1.16.0.tgz",
|
"resolved": "https://registry.npmjs.org/axios/-/axios-1.18.1.tgz",
|
||||||
"integrity": "sha512-6hp5CwvTPlN2A31g5dxnwAX0orzM7pmCRDLnZSX772mv8WDqICwFjowHuPs04Mc8deIld1+ejhtaMn5vp6b+1w==",
|
"integrity": "sha512-3nTvFlvpn9Zu/RkHUqtc7/+al4UpRW5az71ap5zccp6e8RAYEzhMTecX8Dz1wWDYrPpUoB1HAQEGEAEvUr7S9g==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"follow-redirects": "^1.16.0",
|
"follow-redirects": "^1.16.0",
|
||||||
"form-data": "^4.0.5",
|
"form-data": "^4.0.5",
|
||||||
|
"https-proxy-agent": "^5.0.1",
|
||||||
"proxy-from-env": "^2.1.0"
|
"proxy-from-env": "^2.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/axios/node_modules/agent-base": {
|
||||||
|
"version": "6.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
|
||||||
|
"integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"debug": "4"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 6.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/axios/node_modules/https-proxy-agent": {
|
||||||
|
"version": "5.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
|
||||||
|
"integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"agent-base": "6",
|
||||||
|
"debug": "4"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 6"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/axobject-query": {
|
"node_modules/axobject-query": {
|
||||||
"version": "4.1.0",
|
"version": "4.1.0",
|
||||||
"resolved": "https://registry.npmmirror.com/axobject-query/-/axobject-query-4.1.0.tgz",
|
"resolved": "https://registry.npmmirror.com/axobject-query/-/axobject-query-4.1.0.tgz",
|
||||||
@@ -3766,11 +3830,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/balanced-match": {
|
"node_modules/balanced-match": {
|
||||||
"version": "1.0.2",
|
"version": "4.0.4",
|
||||||
"resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
|
||||||
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
|
"integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": "18 || 20 || >=22"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"node_modules/baseline-browser-mapping": {
|
"node_modules/baseline-browser-mapping": {
|
||||||
"version": "2.10.27",
|
"version": "2.10.27",
|
||||||
@@ -3785,20 +3852,21 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/body-parser": {
|
"node_modules/body-parser": {
|
||||||
"version": "2.2.2",
|
"version": "2.3.0",
|
||||||
"resolved": "https://registry.npmmirror.com/body-parser/-/body-parser-2.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.3.0.tgz",
|
||||||
"integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==",
|
"integrity": "sha512-2cGmJupaNgg+QUwVLAucDuWuoMZ6EX9iHDRswZ5lsNYEmwPaRknMPCLZz07yTzVq/83p4o/wzbDZbBrTvGGTIw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"bytes": "^3.1.2",
|
"bytes": "^3.1.2",
|
||||||
"content-type": "^1.0.5",
|
"content-type": "^2.0.0",
|
||||||
"debug": "^4.4.3",
|
"debug": "^4.4.3",
|
||||||
"http-errors": "^2.0.0",
|
"http-errors": "^2.0.1",
|
||||||
"iconv-lite": "^0.7.0",
|
"iconv-lite": "^0.7.2",
|
||||||
"on-finished": "^2.4.1",
|
"on-finished": "^2.4.1",
|
||||||
"qs": "^6.14.1",
|
"qs": "^6.15.2",
|
||||||
"raw-body": "^3.0.1",
|
"raw-body": "^3.0.2",
|
||||||
"type-is": "^2.0.1"
|
"type-is": "^2.1.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
@@ -3808,21 +3876,38 @@
|
|||||||
"url": "https://opencollective.com/express"
|
"url": "https://opencollective.com/express"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/body-parser/node_modules/content-type": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/content-type/-/content-type-2.0.0.tgz",
|
||||||
|
"integrity": "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/express"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/brace-expansion": {
|
"node_modules/brace-expansion": {
|
||||||
"version": "1.1.14",
|
"version": "5.0.7",
|
||||||
"resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.14.tgz",
|
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.7.tgz",
|
||||||
"integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==",
|
"integrity": "sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"balanced-match": "^1.0.0",
|
"balanced-match": "^4.0.2"
|
||||||
"concat-map": "0.0.1"
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "18 || 20 || >=22"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/braces": {
|
"node_modules/braces": {
|
||||||
"version": "3.0.3",
|
"version": "3.0.3",
|
||||||
"resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.3.tgz",
|
"resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.3.tgz",
|
||||||
"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
|
"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"fill-range": "^7.1.1"
|
"fill-range": "^7.1.1"
|
||||||
@@ -3835,6 +3920,7 @@
|
|||||||
"version": "4.28.2",
|
"version": "4.28.2",
|
||||||
"resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.28.2.tgz",
|
"resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.28.2.tgz",
|
||||||
"integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==",
|
"integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==",
|
||||||
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "opencollective",
|
"type": "opencollective",
|
||||||
@@ -3868,6 +3954,7 @@
|
|||||||
"version": "4.1.0",
|
"version": "4.1.0",
|
||||||
"resolved": "https://registry.npmmirror.com/bundle-name/-/bundle-name-4.1.0.tgz",
|
"resolved": "https://registry.npmmirror.com/bundle-name/-/bundle-name-4.1.0.tgz",
|
||||||
"integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==",
|
"integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"run-applescript": "^7.0.0"
|
"run-applescript": "^7.0.0"
|
||||||
@@ -3883,6 +3970,7 @@
|
|||||||
"version": "3.1.2",
|
"version": "3.1.2",
|
||||||
"resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz",
|
"resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz",
|
||||||
"integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
|
"integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.8"
|
"node": ">= 0.8"
|
||||||
@@ -3924,6 +4012,7 @@
|
|||||||
"version": "1.0.4",
|
"version": "1.0.4",
|
||||||
"resolved": "https://registry.npmmirror.com/call-bound/-/call-bound-1.0.4.tgz",
|
"resolved": "https://registry.npmmirror.com/call-bound/-/call-bound-1.0.4.tgz",
|
||||||
"integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
|
"integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"call-bind-apply-helpers": "^1.0.2",
|
"call-bind-apply-helpers": "^1.0.2",
|
||||||
@@ -3940,6 +4029,7 @@
|
|||||||
"version": "3.1.0",
|
"version": "3.1.0",
|
||||||
"resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz",
|
"resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz",
|
||||||
"integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
|
"integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6"
|
"node": ">=6"
|
||||||
@@ -3975,19 +4065,6 @@
|
|||||||
"url": "https://github.com/sponsors/wooorm"
|
"url": "https://github.com/sponsors/wooorm"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/cfb": {
|
|
||||||
"version": "1.2.2",
|
|
||||||
"resolved": "https://mirrors.cloud.tencent.com/npm/cfb/-/cfb-1.2.2.tgz",
|
|
||||||
"integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==",
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"dependencies": {
|
|
||||||
"adler-32": "~1.3.0",
|
|
||||||
"crc-32": "~1.2.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=0.8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/chalk": {
|
"node_modules/chalk": {
|
||||||
"version": "4.1.2",
|
"version": "4.1.2",
|
||||||
"resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
|
"resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
|
||||||
@@ -4041,6 +4118,7 @@
|
|||||||
"version": "5.0.0",
|
"version": "5.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-5.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-5.0.0.tgz",
|
||||||
"integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==",
|
"integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"restore-cursor": "^5.0.0"
|
"restore-cursor": "^5.0.0"
|
||||||
@@ -4056,6 +4134,7 @@
|
|||||||
"version": "2.9.2",
|
"version": "2.9.2",
|
||||||
"resolved": "https://registry.npmmirror.com/cli-spinners/-/cli-spinners-2.9.2.tgz",
|
"resolved": "https://registry.npmmirror.com/cli-spinners/-/cli-spinners-2.9.2.tgz",
|
||||||
"integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==",
|
"integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6"
|
"node": ">=6"
|
||||||
@@ -4068,6 +4147,7 @@
|
|||||||
"version": "4.1.0",
|
"version": "4.1.0",
|
||||||
"resolved": "https://registry.npmmirror.com/cli-width/-/cli-width-4.1.0.tgz",
|
"resolved": "https://registry.npmmirror.com/cli-width/-/cli-width-4.1.0.tgz",
|
||||||
"integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==",
|
"integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 12"
|
"node": ">= 12"
|
||||||
@@ -4083,6 +4163,7 @@
|
|||||||
"version": "8.0.1",
|
"version": "8.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/cliui/-/cliui-8.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/cliui/-/cliui-8.0.1.tgz",
|
||||||
"integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
|
"integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"string-width": "^4.2.0",
|
"string-width": "^4.2.0",
|
||||||
@@ -4097,6 +4178,7 @@
|
|||||||
"version": "5.0.1",
|
"version": "5.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
|
||||||
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
|
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
@@ -4106,12 +4188,14 @@
|
|||||||
"version": "8.0.0",
|
"version": "8.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
||||||
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
|
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/cliui/node_modules/string-width": {
|
"node_modules/cliui/node_modules/string-width": {
|
||||||
"version": "4.2.3",
|
"version": "4.2.3",
|
||||||
"resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
|
"resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
|
||||||
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
|
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"emoji-regex": "^8.0.0",
|
"emoji-regex": "^8.0.0",
|
||||||
@@ -4126,6 +4210,7 @@
|
|||||||
"version": "6.0.1",
|
"version": "6.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
|
||||||
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
|
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ansi-regex": "^5.0.1"
|
"ansi-regex": "^5.0.1"
|
||||||
@@ -4147,21 +4232,14 @@
|
|||||||
"version": "13.0.3",
|
"version": "13.0.3",
|
||||||
"resolved": "https://registry.npmmirror.com/code-block-writer/-/code-block-writer-13.0.3.tgz",
|
"resolved": "https://registry.npmmirror.com/code-block-writer/-/code-block-writer-13.0.3.tgz",
|
||||||
"integrity": "sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==",
|
"integrity": "sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/codepage": {
|
|
||||||
"version": "1.15.0",
|
|
||||||
"resolved": "https://mirrors.cloud.tencent.com/npm/codepage/-/codepage-1.15.0.tgz",
|
|
||||||
"integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==",
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=0.8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/color-convert": {
|
"node_modules/color-convert": {
|
||||||
"version": "2.0.1",
|
"version": "2.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
|
||||||
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"color-name": "~1.1.4"
|
"color-name": "~1.1.4"
|
||||||
@@ -4174,6 +4252,7 @@
|
|||||||
"version": "1.1.4",
|
"version": "1.1.4",
|
||||||
"resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
|
"resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
|
||||||
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
|
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/combined-stream": {
|
"node_modules/combined-stream": {
|
||||||
@@ -4202,6 +4281,7 @@
|
|||||||
"version": "14.0.3",
|
"version": "14.0.3",
|
||||||
"resolved": "https://registry.npmmirror.com/commander/-/commander-14.0.3.tgz",
|
"resolved": "https://registry.npmmirror.com/commander/-/commander-14.0.3.tgz",
|
||||||
"integrity": "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==",
|
"integrity": "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=20"
|
"node": ">=20"
|
||||||
@@ -4209,7 +4289,7 @@
|
|||||||
},
|
},
|
||||||
"node_modules/concat-map": {
|
"node_modules/concat-map": {
|
||||||
"version": "0.0.1",
|
"version": "0.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||||
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
|
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
@@ -4218,6 +4298,7 @@
|
|||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmmirror.com/content-disposition/-/content-disposition-1.1.0.tgz",
|
"resolved": "https://registry.npmmirror.com/content-disposition/-/content-disposition-1.1.0.tgz",
|
||||||
"integrity": "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==",
|
"integrity": "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
@@ -4231,6 +4312,7 @@
|
|||||||
"version": "1.0.5",
|
"version": "1.0.5",
|
||||||
"resolved": "https://registry.npmmirror.com/content-type/-/content-type-1.0.5.tgz",
|
"resolved": "https://registry.npmmirror.com/content-type/-/content-type-1.0.5.tgz",
|
||||||
"integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
|
"integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.6"
|
"node": ">= 0.6"
|
||||||
@@ -4240,12 +4322,14 @@
|
|||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-2.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-2.0.0.tgz",
|
||||||
"integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
|
"integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/cookie": {
|
"node_modules/cookie": {
|
||||||
"version": "0.7.2",
|
"version": "0.7.2",
|
||||||
"resolved": "https://registry.npmmirror.com/cookie/-/cookie-0.7.2.tgz",
|
"resolved": "https://registry.npmmirror.com/cookie/-/cookie-0.7.2.tgz",
|
||||||
"integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
|
"integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.6"
|
"node": ">= 0.6"
|
||||||
@@ -4255,6 +4339,7 @@
|
|||||||
"version": "1.2.2",
|
"version": "1.2.2",
|
||||||
"resolved": "https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.2.2.tgz",
|
"resolved": "https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.2.2.tgz",
|
||||||
"integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==",
|
"integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.6.0"
|
"node": ">=6.6.0"
|
||||||
@@ -4264,6 +4349,7 @@
|
|||||||
"version": "2.8.6",
|
"version": "2.8.6",
|
||||||
"resolved": "https://registry.npmmirror.com/cors/-/cors-2.8.6.tgz",
|
"resolved": "https://registry.npmmirror.com/cors/-/cors-2.8.6.tgz",
|
||||||
"integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==",
|
"integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"object-assign": "^4",
|
"object-assign": "^4",
|
||||||
@@ -4281,6 +4367,7 @@
|
|||||||
"version": "9.0.1",
|
"version": "9.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-9.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-9.0.1.tgz",
|
||||||
"integrity": "sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==",
|
"integrity": "sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"env-paths": "^2.2.1",
|
"env-paths": "^2.2.1",
|
||||||
@@ -4303,22 +4390,11 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/crc-32": {
|
|
||||||
"version": "1.2.2",
|
|
||||||
"resolved": "https://mirrors.cloud.tencent.com/npm/crc-32/-/crc-32-1.2.2.tgz",
|
|
||||||
"integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==",
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"bin": {
|
|
||||||
"crc32": "bin/crc32.njs"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=0.8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/cross-spawn": {
|
"node_modules/cross-spawn": {
|
||||||
"version": "7.0.6",
|
"version": "7.0.6",
|
||||||
"resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.6.tgz",
|
"resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.6.tgz",
|
||||||
"integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
|
"integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"path-key": "^3.1.0",
|
"path-key": "^3.1.0",
|
||||||
@@ -4333,6 +4409,7 @@
|
|||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz",
|
||||||
"integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
|
"integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"bin": {
|
"bin": {
|
||||||
"cssesc": "bin/cssesc"
|
"cssesc": "bin/cssesc"
|
||||||
@@ -4476,6 +4553,7 @@
|
|||||||
"version": "4.0.1",
|
"version": "4.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz",
|
||||||
"integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==",
|
"integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 12"
|
"node": ">= 12"
|
||||||
@@ -4572,6 +4650,7 @@
|
|||||||
"version": "1.7.2",
|
"version": "1.7.2",
|
||||||
"resolved": "https://registry.npmmirror.com/dedent/-/dedent-1.7.2.tgz",
|
"resolved": "https://registry.npmmirror.com/dedent/-/dedent-1.7.2.tgz",
|
||||||
"integrity": "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==",
|
"integrity": "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"babel-plugin-macros": "^3.1.0"
|
"babel-plugin-macros": "^3.1.0"
|
||||||
@@ -4593,6 +4672,7 @@
|
|||||||
"version": "4.3.1",
|
"version": "4.3.1",
|
||||||
"resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-4.3.1.tgz",
|
"resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-4.3.1.tgz",
|
||||||
"integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
|
"integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
@@ -4602,6 +4682,7 @@
|
|||||||
"version": "5.5.0",
|
"version": "5.5.0",
|
||||||
"resolved": "https://registry.npmmirror.com/default-browser/-/default-browser-5.5.0.tgz",
|
"resolved": "https://registry.npmmirror.com/default-browser/-/default-browser-5.5.0.tgz",
|
||||||
"integrity": "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==",
|
"integrity": "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"bundle-name": "^4.1.0",
|
"bundle-name": "^4.1.0",
|
||||||
@@ -4618,6 +4699,7 @@
|
|||||||
"version": "5.0.1",
|
"version": "5.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/default-browser-id/-/default-browser-id-5.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/default-browser-id/-/default-browser-id-5.0.1.tgz",
|
||||||
"integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==",
|
"integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
@@ -4648,6 +4730,7 @@
|
|||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
|
||||||
"integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==",
|
"integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12"
|
"node": ">=12"
|
||||||
@@ -4687,6 +4770,7 @@
|
|||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz",
|
||||||
"integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
|
"integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.8"
|
"node": ">= 0.8"
|
||||||
@@ -4727,6 +4811,7 @@
|
|||||||
"version": "8.0.4",
|
"version": "8.0.4",
|
||||||
"resolved": "https://registry.npmmirror.com/diff/-/diff-8.0.4.tgz",
|
"resolved": "https://registry.npmmirror.com/diff/-/diff-8.0.4.tgz",
|
||||||
"integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==",
|
"integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==",
|
||||||
|
"dev": true,
|
||||||
"license": "BSD-3-Clause",
|
"license": "BSD-3-Clause",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.3.1"
|
"node": ">=0.3.1"
|
||||||
@@ -4749,6 +4834,7 @@
|
|||||||
"version": "17.4.2",
|
"version": "17.4.2",
|
||||||
"resolved": "https://registry.npmmirror.com/dotenv/-/dotenv-17.4.2.tgz",
|
"resolved": "https://registry.npmmirror.com/dotenv/-/dotenv-17.4.2.tgz",
|
||||||
"integrity": "sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==",
|
"integrity": "sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==",
|
||||||
|
"dev": true,
|
||||||
"license": "BSD-2-Clause",
|
"license": "BSD-2-Clause",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12"
|
"node": ">=12"
|
||||||
@@ -4775,6 +4861,7 @@
|
|||||||
"version": "0.4.18",
|
"version": "0.4.18",
|
||||||
"resolved": "https://registry.npmmirror.com/eciesjs/-/eciesjs-0.4.18.tgz",
|
"resolved": "https://registry.npmmirror.com/eciesjs/-/eciesjs-0.4.18.tgz",
|
||||||
"integrity": "sha512-wG99Zcfcys9fZux7Cft8BAX/YrOJLJSZ3jyYPfhZHqN2E+Ffx+QXBDsv3gubEgPtV6dTzJMSQUwk1H98/t/0wQ==",
|
"integrity": "sha512-wG99Zcfcys9fZux7Cft8BAX/YrOJLJSZ3jyYPfhZHqN2E+Ffx+QXBDsv3gubEgPtV6dTzJMSQUwk1H98/t/0wQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@ecies/ciphers": "^0.2.5",
|
"@ecies/ciphers": "^0.2.5",
|
||||||
@@ -4792,12 +4879,14 @@
|
|||||||
"version": "1.1.1",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz",
|
"resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz",
|
||||||
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
|
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/electron-to-chromium": {
|
"node_modules/electron-to-chromium": {
|
||||||
"version": "1.5.352",
|
"version": "1.5.352",
|
||||||
"resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.5.352.tgz",
|
"resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.5.352.tgz",
|
||||||
"integrity": "sha512-9wHk8x6dyuimoe18EdiDPWKExNdxYqo4fn4FwOVVper6RxT3cmpBwBkWWfSOCYJjQdIco/nPhJhNLmn4Ufg1Yg==",
|
"integrity": "sha512-9wHk8x6dyuimoe18EdiDPWKExNdxYqo4fn4FwOVVper6RxT3cmpBwBkWWfSOCYJjQdIco/nPhJhNLmn4Ufg1Yg==",
|
||||||
|
"dev": true,
|
||||||
"license": "ISC"
|
"license": "ISC"
|
||||||
},
|
},
|
||||||
"node_modules/emoji-regex": {
|
"node_modules/emoji-regex": {
|
||||||
@@ -4811,6 +4900,7 @@
|
|||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/encodeurl/-/encodeurl-2.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/encodeurl/-/encodeurl-2.0.0.tgz",
|
||||||
"integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
|
"integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.8"
|
"node": ">= 0.8"
|
||||||
@@ -4834,6 +4924,7 @@
|
|||||||
"version": "2.2.1",
|
"version": "2.2.1",
|
||||||
"resolved": "https://registry.npmmirror.com/env-paths/-/env-paths-2.2.1.tgz",
|
"resolved": "https://registry.npmmirror.com/env-paths/-/env-paths-2.2.1.tgz",
|
||||||
"integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
|
"integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6"
|
"node": ">=6"
|
||||||
@@ -4843,6 +4934,7 @@
|
|||||||
"version": "1.3.4",
|
"version": "1.3.4",
|
||||||
"resolved": "https://registry.npmmirror.com/error-ex/-/error-ex-1.3.4.tgz",
|
"resolved": "https://registry.npmmirror.com/error-ex/-/error-ex-1.3.4.tgz",
|
||||||
"integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==",
|
"integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"is-arrayish": "^0.2.1"
|
"is-arrayish": "^0.2.1"
|
||||||
@@ -5035,6 +5127,7 @@
|
|||||||
"version": "3.2.0",
|
"version": "3.2.0",
|
||||||
"resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.2.0.tgz",
|
"resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.2.0.tgz",
|
||||||
"integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
|
"integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6"
|
"node": ">=6"
|
||||||
@@ -5044,6 +5137,7 @@
|
|||||||
"version": "1.0.3",
|
"version": "1.0.3",
|
||||||
"resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz",
|
"resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz",
|
||||||
"integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
|
"integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/escape-string-regexp": {
|
"node_modules/escape-string-regexp": {
|
||||||
@@ -5120,13 +5214,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/eslint-config-next": {
|
"node_modules/eslint-config-next": {
|
||||||
"version": "16.2.6",
|
"version": "16.2.10",
|
||||||
"resolved": "https://registry.npmmirror.com/eslint-config-next/-/eslint-config-next-16.2.6.tgz",
|
"resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-16.2.10.tgz",
|
||||||
"integrity": "sha512-z2ELYSkyrrJ6cuunTU8vhsT/RpouPkjaSah06nVW6Rg2Hpg0Vs8s497/e5s8G8qtdp4ccsiovz5P1rv+5VSW2Q==",
|
"integrity": "sha512-HSybLOY0QKf39i4FWUqPN0xWiNDi6A6UqJmZtgDkS3zMqjXTqULvj/sueXx3cdCG0mVG+qH6k5/qdegklH1d1w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@next/eslint-plugin-next": "16.2.6",
|
"@next/eslint-plugin-next": "16.2.10",
|
||||||
"eslint-import-resolver-node": "^0.3.6",
|
"eslint-import-resolver-node": "^0.3.6",
|
||||||
"eslint-import-resolver-typescript": "^3.5.2",
|
"eslint-import-resolver-typescript": "^3.5.2",
|
||||||
"eslint-plugin-import": "^2.32.0",
|
"eslint-plugin-import": "^2.32.0",
|
||||||
@@ -5423,6 +5517,7 @@
|
|||||||
"version": "4.0.1",
|
"version": "4.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz",
|
||||||
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
|
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
|
||||||
|
"dev": true,
|
||||||
"license": "BSD-2-Clause",
|
"license": "BSD-2-Clause",
|
||||||
"bin": {
|
"bin": {
|
||||||
"esparse": "bin/esparse.js",
|
"esparse": "bin/esparse.js",
|
||||||
@@ -5482,6 +5577,7 @@
|
|||||||
"version": "1.8.1",
|
"version": "1.8.1",
|
||||||
"resolved": "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz",
|
"resolved": "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz",
|
||||||
"integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
|
"integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.6"
|
"node": ">= 0.6"
|
||||||
@@ -5497,6 +5593,7 @@
|
|||||||
"version": "3.0.7",
|
"version": "3.0.7",
|
||||||
"resolved": "https://registry.npmmirror.com/eventsource/-/eventsource-3.0.7.tgz",
|
"resolved": "https://registry.npmmirror.com/eventsource/-/eventsource-3.0.7.tgz",
|
||||||
"integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==",
|
"integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"eventsource-parser": "^3.0.1"
|
"eventsource-parser": "^3.0.1"
|
||||||
@@ -5509,6 +5606,7 @@
|
|||||||
"version": "3.0.8",
|
"version": "3.0.8",
|
||||||
"resolved": "https://registry.npmmirror.com/eventsource-parser/-/eventsource-parser-3.0.8.tgz",
|
"resolved": "https://registry.npmmirror.com/eventsource-parser/-/eventsource-parser-3.0.8.tgz",
|
||||||
"integrity": "sha512-70QWGkr4snxr0OXLRWsFLeRBIRPuQOvt4s8QYjmUlmlkyTZkRqS7EDVRZtzU3TiyDbXSzaOeF0XUKy8PchzukQ==",
|
"integrity": "sha512-70QWGkr4snxr0OXLRWsFLeRBIRPuQOvt4s8QYjmUlmlkyTZkRqS7EDVRZtzU3TiyDbXSzaOeF0XUKy8PchzukQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18.0.0"
|
"node": ">=18.0.0"
|
||||||
@@ -5518,6 +5616,7 @@
|
|||||||
"version": "9.6.1",
|
"version": "9.6.1",
|
||||||
"resolved": "https://registry.npmmirror.com/execa/-/execa-9.6.1.tgz",
|
"resolved": "https://registry.npmmirror.com/execa/-/execa-9.6.1.tgz",
|
||||||
"integrity": "sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==",
|
"integrity": "sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sindresorhus/merge-streams": "^4.0.0",
|
"@sindresorhus/merge-streams": "^4.0.0",
|
||||||
@@ -5544,6 +5643,7 @@
|
|||||||
"version": "5.2.1",
|
"version": "5.2.1",
|
||||||
"resolved": "https://registry.npmmirror.com/express/-/express-5.2.1.tgz",
|
"resolved": "https://registry.npmmirror.com/express/-/express-5.2.1.tgz",
|
||||||
"integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==",
|
"integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"accepts": "^2.0.0",
|
"accepts": "^2.0.0",
|
||||||
@@ -5587,6 +5687,7 @@
|
|||||||
"version": "8.5.1",
|
"version": "8.5.1",
|
||||||
"resolved": "https://registry.npmmirror.com/express-rate-limit/-/express-rate-limit-8.5.1.tgz",
|
"resolved": "https://registry.npmmirror.com/express-rate-limit/-/express-rate-limit-8.5.1.tgz",
|
||||||
"integrity": "sha512-5O6KYmyJEpuPJV5hNTXKbAHWRqrzyu+OI3vUnSd2kXFubIVpG7ezpgxQy76Zo5GQZtrQBg86hF+CM/NX+cioiQ==",
|
"integrity": "sha512-5O6KYmyJEpuPJV5hNTXKbAHWRqrzyu+OI3vUnSd2kXFubIVpG7ezpgxQy76Zo5GQZtrQBg86hF+CM/NX+cioiQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ip-address": "^10.2.0"
|
"ip-address": "^10.2.0"
|
||||||
@@ -5605,6 +5706,7 @@
|
|||||||
"version": "1.54.0",
|
"version": "1.54.0",
|
||||||
"resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.54.0.tgz",
|
"resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.54.0.tgz",
|
||||||
"integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
|
"integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.6"
|
"node": ">= 0.6"
|
||||||
@@ -5614,6 +5716,7 @@
|
|||||||
"version": "3.0.2",
|
"version": "3.0.2",
|
||||||
"resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-3.0.2.tgz",
|
"resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-3.0.2.tgz",
|
||||||
"integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==",
|
"integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"mime-db": "^1.54.0"
|
"mime-db": "^1.54.0"
|
||||||
@@ -5630,11 +5733,12 @@
|
|||||||
"version": "3.1.3",
|
"version": "3.1.3",
|
||||||
"resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
|
"resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
|
||||||
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
|
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/fast-glob": {
|
"node_modules/fast-glob": {
|
||||||
"version": "3.3.1",
|
"version": "3.3.1",
|
||||||
"resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz",
|
||||||
"integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==",
|
"integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@@ -5651,7 +5755,7 @@
|
|||||||
},
|
},
|
||||||
"node_modules/fast-glob/node_modules/glob-parent": {
|
"node_modules/fast-glob/node_modules/glob-parent": {
|
||||||
"version": "5.1.2",
|
"version": "5.1.2",
|
||||||
"resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
|
||||||
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
|
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
@@ -5680,12 +5784,14 @@
|
|||||||
"version": "3.0.3",
|
"version": "3.0.3",
|
||||||
"resolved": "https://registry.npmmirror.com/fast-string-truncated-width/-/fast-string-truncated-width-3.0.3.tgz",
|
"resolved": "https://registry.npmmirror.com/fast-string-truncated-width/-/fast-string-truncated-width-3.0.3.tgz",
|
||||||
"integrity": "sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==",
|
"integrity": "sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/fast-string-width": {
|
"node_modules/fast-string-width": {
|
||||||
"version": "3.0.2",
|
"version": "3.0.2",
|
||||||
"resolved": "https://registry.npmmirror.com/fast-string-width/-/fast-string-width-3.0.2.tgz",
|
"resolved": "https://registry.npmmirror.com/fast-string-width/-/fast-string-width-3.0.2.tgz",
|
||||||
"integrity": "sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==",
|
"integrity": "sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"fast-string-truncated-width": "^3.0.2"
|
"fast-string-truncated-width": "^3.0.2"
|
||||||
@@ -5695,6 +5801,7 @@
|
|||||||
"version": "3.1.2",
|
"version": "3.1.2",
|
||||||
"resolved": "https://registry.npmmirror.com/fast-uri/-/fast-uri-3.1.2.tgz",
|
"resolved": "https://registry.npmmirror.com/fast-uri/-/fast-uri-3.1.2.tgz",
|
||||||
"integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==",
|
"integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==",
|
||||||
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "github",
|
"type": "github",
|
||||||
@@ -5711,6 +5818,7 @@
|
|||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
"resolved": "https://registry.npmmirror.com/fast-wrap-ansi/-/fast-wrap-ansi-0.2.0.tgz",
|
"resolved": "https://registry.npmmirror.com/fast-wrap-ansi/-/fast-wrap-ansi-0.2.0.tgz",
|
||||||
"integrity": "sha512-rLV8JHxTyhVmFYhBJuMujcrHqOT2cnO5Zxj37qROj23CP39GXubJRBUFF0z8KFK77Uc0SukZUf7JZhsVEQ6n8w==",
|
"integrity": "sha512-rLV8JHxTyhVmFYhBJuMujcrHqOT2cnO5Zxj37qROj23CP39GXubJRBUFF0z8KFK77Uc0SukZUf7JZhsVEQ6n8w==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"fast-string-width": "^3.0.2"
|
"fast-string-width": "^3.0.2"
|
||||||
@@ -5720,6 +5828,7 @@
|
|||||||
"version": "1.20.1",
|
"version": "1.20.1",
|
||||||
"resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.20.1.tgz",
|
"resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.20.1.tgz",
|
||||||
"integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==",
|
"integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==",
|
||||||
|
"dev": true,
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"reusify": "^1.0.4"
|
"reusify": "^1.0.4"
|
||||||
@@ -5729,6 +5838,7 @@
|
|||||||
"version": "3.2.0",
|
"version": "3.2.0",
|
||||||
"resolved": "https://registry.npmmirror.com/fetch-blob/-/fetch-blob-3.2.0.tgz",
|
"resolved": "https://registry.npmmirror.com/fetch-blob/-/fetch-blob-3.2.0.tgz",
|
||||||
"integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==",
|
"integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==",
|
||||||
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "github",
|
"type": "github",
|
||||||
@@ -5748,10 +5858,17 @@
|
|||||||
"node": "^12.20 || >= 14.13"
|
"node": "^12.20 || >= 14.13"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/fflate": {
|
||||||
|
"version": "0.8.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.3.tgz",
|
||||||
|
"integrity": "sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
"node_modules/figures": {
|
"node_modules/figures": {
|
||||||
"version": "6.1.0",
|
"version": "6.1.0",
|
||||||
"resolved": "https://registry.npmmirror.com/figures/-/figures-6.1.0.tgz",
|
"resolved": "https://registry.npmmirror.com/figures/-/figures-6.1.0.tgz",
|
||||||
"integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==",
|
"integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"is-unicode-supported": "^2.0.0"
|
"is-unicode-supported": "^2.0.0"
|
||||||
@@ -5780,6 +5897,7 @@
|
|||||||
"version": "7.1.1",
|
"version": "7.1.1",
|
||||||
"resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.1.1.tgz",
|
"resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.1.1.tgz",
|
||||||
"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
|
"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"to-regex-range": "^5.0.1"
|
"to-regex-range": "^5.0.1"
|
||||||
@@ -5792,6 +5910,7 @@
|
|||||||
"version": "2.1.1",
|
"version": "2.1.1",
|
||||||
"resolved": "https://registry.npmmirror.com/finalhandler/-/finalhandler-2.1.1.tgz",
|
"resolved": "https://registry.npmmirror.com/finalhandler/-/finalhandler-2.1.1.tgz",
|
||||||
"integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==",
|
"integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"debug": "^4.4.0",
|
"debug": "^4.4.0",
|
||||||
@@ -5884,16 +6003,16 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/form-data": {
|
"node_modules/form-data": {
|
||||||
"version": "4.0.5",
|
"version": "4.0.6",
|
||||||
"resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.5.tgz",
|
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.6.tgz",
|
||||||
"integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==",
|
"integrity": "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"asynckit": "^0.4.0",
|
"asynckit": "^0.4.0",
|
||||||
"combined-stream": "^1.0.8",
|
"combined-stream": "^1.0.8",
|
||||||
"es-set-tostringtag": "^2.1.0",
|
"es-set-tostringtag": "^2.1.0",
|
||||||
"hasown": "^2.0.2",
|
"hasown": "^2.0.4",
|
||||||
"mime-types": "^2.1.12"
|
"mime-types": "^2.1.35"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 6"
|
"node": ">= 6"
|
||||||
@@ -5903,6 +6022,7 @@
|
|||||||
"version": "4.0.10",
|
"version": "4.0.10",
|
||||||
"resolved": "https://registry.npmmirror.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
|
"resolved": "https://registry.npmmirror.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
|
||||||
"integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
|
"integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"fetch-blob": "^3.1.2"
|
"fetch-blob": "^3.1.2"
|
||||||
@@ -5915,24 +6035,17 @@
|
|||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
"resolved": "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz",
|
"resolved": "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz",
|
||||||
"integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
|
"integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.6"
|
"node": ">= 0.6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/frac": {
|
|
||||||
"version": "1.1.2",
|
|
||||||
"resolved": "https://mirrors.cloud.tencent.com/npm/frac/-/frac-1.1.2.tgz",
|
|
||||||
"integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==",
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=0.8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/fresh": {
|
"node_modules/fresh": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/fresh/-/fresh-2.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/fresh/-/fresh-2.0.0.tgz",
|
||||||
"integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==",
|
"integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.8"
|
"node": ">= 0.8"
|
||||||
@@ -5942,6 +6055,7 @@
|
|||||||
"version": "11.3.5",
|
"version": "11.3.5",
|
||||||
"resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-11.3.5.tgz",
|
"resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-11.3.5.tgz",
|
||||||
"integrity": "sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg==",
|
"integrity": "sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"graceful-fs": "^4.2.0",
|
"graceful-fs": "^4.2.0",
|
||||||
@@ -5996,8 +6110,18 @@
|
|||||||
"version": "3.1.0",
|
"version": "3.1.0",
|
||||||
"resolved": "https://registry.npmmirror.com/fuzzysort/-/fuzzysort-3.1.0.tgz",
|
"resolved": "https://registry.npmmirror.com/fuzzysort/-/fuzzysort-3.1.0.tgz",
|
||||||
"integrity": "sha512-sR9BNCjBg6LNgwvxlBd0sBABvQitkLzoVY9MYYROQVX/FvfJ4Mai9LsGhDgd8qYdds0bY77VzYd5iuB+v5rwQQ==",
|
"integrity": "sha512-sR9BNCjBg6LNgwvxlBd0sBABvQitkLzoVY9MYYROQVX/FvfJ4Mai9LsGhDgd8qYdds0bY77VzYd5iuB+v5rwQQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
|
"node_modules/geist": {
|
||||||
|
"version": "1.7.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/geist/-/geist-1.7.2.tgz",
|
||||||
|
"integrity": "sha512-Gu5lDFa3pLRyoBlBPf0QIFHVdWAnpco7fS1bJm41jyLPFoguBgiubseUN2oLXMgqZ7uxAxDoXcHMhCY/fOTTgg==",
|
||||||
|
"license": "SIL OPEN FONT LICENSE",
|
||||||
|
"peerDependencies": {
|
||||||
|
"next": ">=13.2.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/generator-function": {
|
"node_modules/generator-function": {
|
||||||
"version": "2.0.1",
|
"version": "2.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/generator-function/-/generator-function-2.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/generator-function/-/generator-function-2.0.1.tgz",
|
||||||
@@ -6012,6 +6136,7 @@
|
|||||||
"version": "1.0.0-beta.2",
|
"version": "1.0.0-beta.2",
|
||||||
"resolved": "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz",
|
"resolved": "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz",
|
||||||
"integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
|
"integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
@@ -6021,6 +6146,7 @@
|
|||||||
"version": "2.0.5",
|
"version": "2.0.5",
|
||||||
"resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz",
|
"resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz",
|
||||||
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
|
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
|
||||||
|
"dev": true,
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "6.* || 8.* || >= 10.*"
|
"node": "6.* || 8.* || >= 10.*"
|
||||||
@@ -6030,6 +6156,7 @@
|
|||||||
"version": "1.6.0",
|
"version": "1.6.0",
|
||||||
"resolved": "https://registry.npmmirror.com/get-east-asian-width/-/get-east-asian-width-1.6.0.tgz",
|
"resolved": "https://registry.npmmirror.com/get-east-asian-width/-/get-east-asian-width-1.6.0.tgz",
|
||||||
"integrity": "sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==",
|
"integrity": "sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
@@ -6066,6 +6193,7 @@
|
|||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/get-own-enumerable-keys/-/get-own-enumerable-keys-1.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/get-own-enumerable-keys/-/get-own-enumerable-keys-1.0.0.tgz",
|
||||||
"integrity": "sha512-PKsK2FSrQCyxcGHsGrLDcK0lx+0Ke+6e8KFFozA9/fIQLhQzPaRvJFdcz7+Axg3jUH/Mq+NI4xa5u/UT2tQskA==",
|
"integrity": "sha512-PKsK2FSrQCyxcGHsGrLDcK0lx+0Ke+6e8KFFozA9/fIQLhQzPaRvJFdcz7+Axg3jUH/Mq+NI4xa5u/UT2tQskA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=14.16"
|
"node": ">=14.16"
|
||||||
@@ -6091,6 +6219,7 @@
|
|||||||
"version": "9.0.1",
|
"version": "9.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-9.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-9.0.1.tgz",
|
||||||
"integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==",
|
"integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sec-ant/readable-stream": "^0.4.1",
|
"@sec-ant/readable-stream": "^0.4.1",
|
||||||
@@ -6193,12 +6322,14 @@
|
|||||||
"version": "4.2.11",
|
"version": "4.2.11",
|
||||||
"resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz",
|
"resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz",
|
||||||
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
|
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "ISC"
|
"license": "ISC"
|
||||||
},
|
},
|
||||||
"node_modules/graphql": {
|
"node_modules/graphql": {
|
||||||
"version": "16.14.0",
|
"version": "16.14.0",
|
||||||
"resolved": "https://registry.npmmirror.com/graphql/-/graphql-16.14.0.tgz",
|
"resolved": "https://registry.npmmirror.com/graphql/-/graphql-16.14.0.tgz",
|
||||||
"integrity": "sha512-BBvQ/406p+4CZbTpCbVPSxfzrZrbnuWSP1ELYgyS6B+hNeKzgrdB4JczCa5VZUBQrDa9hUngm0KnexY6pJRN5Q==",
|
"integrity": "sha512-BBvQ/406p+4CZbTpCbVPSxfzrZrbnuWSP1ELYgyS6B+hNeKzgrdB4JczCa5VZUBQrDa9hUngm0KnexY6pJRN5Q==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0"
|
"node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0"
|
||||||
@@ -6284,9 +6415,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/hasown": {
|
"node_modules/hasown": {
|
||||||
"version": "2.0.3",
|
"version": "2.0.4",
|
||||||
"resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz",
|
||||||
"integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==",
|
"integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"function-bind": "^1.1.2"
|
"function-bind": "^1.1.2"
|
||||||
@@ -6335,6 +6466,7 @@
|
|||||||
"version": "5.0.1",
|
"version": "5.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/headers-polyfill/-/headers-polyfill-5.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/headers-polyfill/-/headers-polyfill-5.0.1.tgz",
|
||||||
"integrity": "sha512-1TJ6Fih/b8h5TIcv+1+Hw0PDQWJTKDKzFZzcKOiW1wJza3XoAQlkCuXLbymPYB8+ZQyw8mHvdw560e8zVFIWyA==",
|
"integrity": "sha512-1TJ6Fih/b8h5TIcv+1+Hw0PDQWJTKDKzFZzcKOiW1wJza3XoAQlkCuXLbymPYB8+ZQyw8mHvdw560e8zVFIWyA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/set-cookie-parser": "^2.4.10",
|
"@types/set-cookie-parser": "^2.4.10",
|
||||||
@@ -6359,9 +6491,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/hono": {
|
"node_modules/hono": {
|
||||||
"version": "4.12.18",
|
"version": "4.12.31",
|
||||||
"resolved": "https://registry.npmmirror.com/hono/-/hono-4.12.18.tgz",
|
"resolved": "https://registry.npmjs.org/hono/-/hono-4.12.31.tgz",
|
||||||
"integrity": "sha512-RWzP96k/yv0PQfyXnWjs6zot20TqfpfsNXhOnev8d1InAxubW93L11/oNUc3tQqn2G0bSdAOBpX+2uDFHV7kdQ==",
|
"integrity": "sha512-zJIHFrl6bq3RDd2YusFNCDlM8qUprxKswyi/OPzPyzKDdyBXDqWx8bZlZ7R+saTdSTatUmb3O7K4SspGPaEOQg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=16.9.0"
|
"node": ">=16.9.0"
|
||||||
@@ -6390,6 +6523,7 @@
|
|||||||
"version": "2.0.1",
|
"version": "2.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.1.tgz",
|
||||||
"integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==",
|
"integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"depd": "~2.0.0",
|
"depd": "~2.0.0",
|
||||||
@@ -6410,6 +6544,7 @@
|
|||||||
"version": "7.0.6",
|
"version": "7.0.6",
|
||||||
"resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
|
"resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
|
||||||
"integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
|
"integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"agent-base": "^7.1.2",
|
"agent-base": "^7.1.2",
|
||||||
@@ -6423,6 +6558,7 @@
|
|||||||
"version": "8.0.1",
|
"version": "8.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-8.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-8.0.1.tgz",
|
||||||
"integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==",
|
"integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18.18.0"
|
"node": ">=18.18.0"
|
||||||
@@ -6469,6 +6605,7 @@
|
|||||||
"version": "0.7.2",
|
"version": "0.7.2",
|
||||||
"resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.7.2.tgz",
|
"resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.7.2.tgz",
|
||||||
"integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==",
|
"integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"safer-buffer": ">= 2.1.2 < 3.0.0"
|
"safer-buffer": ">= 2.1.2 < 3.0.0"
|
||||||
@@ -6485,6 +6622,7 @@
|
|||||||
"version": "5.3.2",
|
"version": "5.3.2",
|
||||||
"resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.3.2.tgz",
|
"resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.3.2.tgz",
|
||||||
"integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
|
"integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 4"
|
"node": ">= 4"
|
||||||
@@ -6503,6 +6641,7 @@
|
|||||||
"version": "3.3.1",
|
"version": "3.3.1",
|
||||||
"resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.1.tgz",
|
"resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.1.tgz",
|
||||||
"integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
|
"integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"parent-module": "^1.0.0",
|
"parent-module": "^1.0.0",
|
||||||
@@ -6529,6 +6668,7 @@
|
|||||||
"version": "2.0.4",
|
"version": "2.0.4",
|
||||||
"resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz",
|
"resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz",
|
||||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
|
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "ISC"
|
"license": "ISC"
|
||||||
},
|
},
|
||||||
"node_modules/internal-slot": {
|
"node_modules/internal-slot": {
|
||||||
@@ -6559,6 +6699,7 @@
|
|||||||
"version": "10.2.0",
|
"version": "10.2.0",
|
||||||
"resolved": "https://registry.npmmirror.com/ip-address/-/ip-address-10.2.0.tgz",
|
"resolved": "https://registry.npmmirror.com/ip-address/-/ip-address-10.2.0.tgz",
|
||||||
"integrity": "sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==",
|
"integrity": "sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 12"
|
"node": ">= 12"
|
||||||
@@ -6568,6 +6709,7 @@
|
|||||||
"version": "1.9.1",
|
"version": "1.9.1",
|
||||||
"resolved": "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
|
"resolved": "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
|
||||||
"integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
|
"integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.10"
|
"node": ">= 0.10"
|
||||||
@@ -6595,6 +6737,7 @@
|
|||||||
"version": "0.2.1",
|
"version": "0.2.1",
|
||||||
"resolved": "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.2.1.tgz",
|
"resolved": "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.2.1.tgz",
|
||||||
"integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
|
"integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/is-async-function": {
|
"node_modules/is-async-function": {
|
||||||
@@ -6741,6 +6884,7 @@
|
|||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/is-docker/-/is-docker-3.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/is-docker/-/is-docker-3.0.0.tgz",
|
||||||
"integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
|
"integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"bin": {
|
"bin": {
|
||||||
"is-docker": "cli.js"
|
"is-docker": "cli.js"
|
||||||
@@ -6756,6 +6900,7 @@
|
|||||||
"version": "2.1.1",
|
"version": "2.1.1",
|
||||||
"resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz",
|
"resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz",
|
||||||
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
|
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
@@ -6781,6 +6926,7 @@
|
|||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
|
||||||
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
|
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
@@ -6810,6 +6956,7 @@
|
|||||||
"version": "4.0.3",
|
"version": "4.0.3",
|
||||||
"resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
|
"resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
|
||||||
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
|
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"is-extglob": "^2.1.1"
|
"is-extglob": "^2.1.1"
|
||||||
@@ -6822,6 +6969,7 @@
|
|||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/is-in-ssh/-/is-in-ssh-1.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/is-in-ssh/-/is-in-ssh-1.0.0.tgz",
|
||||||
"integrity": "sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==",
|
"integrity": "sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=20"
|
"node": ">=20"
|
||||||
@@ -6834,6 +6982,7 @@
|
|||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/is-inside-container/-/is-inside-container-1.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/is-inside-container/-/is-inside-container-1.0.0.tgz",
|
||||||
"integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
|
"integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"is-docker": "^3.0.0"
|
"is-docker": "^3.0.0"
|
||||||
@@ -6852,6 +7001,7 @@
|
|||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/is-interactive/-/is-interactive-2.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/is-interactive/-/is-interactive-2.0.0.tgz",
|
||||||
"integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==",
|
"integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12"
|
"node": ">=12"
|
||||||
@@ -6890,12 +7040,14 @@
|
|||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmmirror.com/is-node-process/-/is-node-process-1.2.0.tgz",
|
"resolved": "https://registry.npmmirror.com/is-node-process/-/is-node-process-1.2.0.tgz",
|
||||||
"integrity": "sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==",
|
"integrity": "sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/is-number": {
|
"node_modules/is-number": {
|
||||||
"version": "7.0.0",
|
"version": "7.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
|
||||||
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
|
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.12.0"
|
"node": ">=0.12.0"
|
||||||
@@ -6922,6 +7074,7 @@
|
|||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/is-obj/-/is-obj-3.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/is-obj/-/is-obj-3.0.0.tgz",
|
||||||
"integrity": "sha512-IlsXEHOjtKhpN8r/tRFj2nDyTmHvcfNeu/nrRIcXE17ROeatXchkojffa1SpdqW4cr/Fj6QkEf/Gn4zf6KKvEQ==",
|
"integrity": "sha512-IlsXEHOjtKhpN8r/tRFj2nDyTmHvcfNeu/nrRIcXE17ROeatXchkojffa1SpdqW4cr/Fj6QkEf/Gn4zf6KKvEQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12"
|
"node": ">=12"
|
||||||
@@ -6934,6 +7087,7 @@
|
|||||||
"version": "4.1.0",
|
"version": "4.1.0",
|
||||||
"resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
|
"resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
|
||||||
"integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
|
"integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12"
|
"node": ">=12"
|
||||||
@@ -6946,6 +7100,7 @@
|
|||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/is-promise/-/is-promise-4.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/is-promise/-/is-promise-4.0.0.tgz",
|
||||||
"integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==",
|
"integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/is-regex": {
|
"node_modules/is-regex": {
|
||||||
@@ -6971,6 +7126,7 @@
|
|||||||
"version": "3.1.0",
|
"version": "3.1.0",
|
||||||
"resolved": "https://registry.npmmirror.com/is-regexp/-/is-regexp-3.1.0.tgz",
|
"resolved": "https://registry.npmmirror.com/is-regexp/-/is-regexp-3.1.0.tgz",
|
||||||
"integrity": "sha512-rbku49cWloU5bSMI+zaRaXdQHXnthP6DZ/vLnfdSKyL4zUzuWnomtOEiZZOd+ioQ+avFo/qau3KPTc7Fjy1uPA==",
|
"integrity": "sha512-rbku49cWloU5bSMI+zaRaXdQHXnthP6DZ/vLnfdSKyL4zUzuWnomtOEiZZOd+ioQ+avFo/qau3KPTc7Fjy1uPA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12"
|
"node": ">=12"
|
||||||
@@ -7012,6 +7168,7 @@
|
|||||||
"version": "4.0.1",
|
"version": "4.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-4.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-4.0.1.tgz",
|
||||||
"integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==",
|
"integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
@@ -7075,6 +7232,7 @@
|
|||||||
"version": "2.1.0",
|
"version": "2.1.0",
|
||||||
"resolved": "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz",
|
"resolved": "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz",
|
||||||
"integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==",
|
"integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
@@ -7133,6 +7291,7 @@
|
|||||||
"version": "3.1.1",
|
"version": "3.1.1",
|
||||||
"resolved": "https://registry.npmmirror.com/is-wsl/-/is-wsl-3.1.1.tgz",
|
"resolved": "https://registry.npmmirror.com/is-wsl/-/is-wsl-3.1.1.tgz",
|
||||||
"integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==",
|
"integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"is-inside-container": "^1.0.0"
|
"is-inside-container": "^1.0.0"
|
||||||
@@ -7155,6 +7314,7 @@
|
|||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz",
|
||||||
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
|
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
|
||||||
|
"dev": true,
|
||||||
"license": "ISC"
|
"license": "ISC"
|
||||||
},
|
},
|
||||||
"node_modules/iterator.prototype": {
|
"node_modules/iterator.prototype": {
|
||||||
@@ -7189,6 +7349,7 @@
|
|||||||
"version": "6.2.3",
|
"version": "6.2.3",
|
||||||
"resolved": "https://registry.npmmirror.com/jose/-/jose-6.2.3.tgz",
|
"resolved": "https://registry.npmmirror.com/jose/-/jose-6.2.3.tgz",
|
||||||
"integrity": "sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==",
|
"integrity": "sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"funding": {
|
"funding": {
|
||||||
"url": "https://github.com/sponsors/panva"
|
"url": "https://github.com/sponsors/panva"
|
||||||
@@ -7198,12 +7359,24 @@
|
|||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz",
|
||||||
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
|
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/js-yaml": {
|
"node_modules/js-yaml": {
|
||||||
"version": "4.1.1",
|
"version": "4.3.0",
|
||||||
"resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.0.tgz",
|
||||||
"integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
|
"integrity": "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==",
|
||||||
|
"dev": true,
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/puzrin"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/nodeca"
|
||||||
|
}
|
||||||
|
],
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"argparse": "^2.0.1"
|
"argparse": "^2.0.1"
|
||||||
@@ -7216,6 +7389,7 @@
|
|||||||
"version": "3.1.0",
|
"version": "3.1.0",
|
||||||
"resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-3.1.0.tgz",
|
"resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-3.1.0.tgz",
|
||||||
"integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
|
"integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"bin": {
|
"bin": {
|
||||||
"jsesc": "bin/jsesc"
|
"jsesc": "bin/jsesc"
|
||||||
@@ -7235,6 +7409,7 @@
|
|||||||
"version": "2.3.1",
|
"version": "2.3.1",
|
||||||
"resolved": "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
|
"resolved": "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
|
||||||
"integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
|
"integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/json-schema-traverse": {
|
"node_modules/json-schema-traverse": {
|
||||||
@@ -7248,6 +7423,7 @@
|
|||||||
"version": "8.0.2",
|
"version": "8.0.2",
|
||||||
"resolved": "https://registry.npmmirror.com/json-schema-typed/-/json-schema-typed-8.0.2.tgz",
|
"resolved": "https://registry.npmmirror.com/json-schema-typed/-/json-schema-typed-8.0.2.tgz",
|
||||||
"integrity": "sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==",
|
"integrity": "sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==",
|
||||||
|
"dev": true,
|
||||||
"license": "BSD-2-Clause"
|
"license": "BSD-2-Clause"
|
||||||
},
|
},
|
||||||
"node_modules/json-stable-stringify-without-jsonify": {
|
"node_modules/json-stable-stringify-without-jsonify": {
|
||||||
@@ -7261,6 +7437,7 @@
|
|||||||
"version": "2.2.3",
|
"version": "2.2.3",
|
||||||
"resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz",
|
"resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz",
|
||||||
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
|
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"bin": {
|
"bin": {
|
||||||
"json5": "lib/cli.js"
|
"json5": "lib/cli.js"
|
||||||
@@ -7273,6 +7450,7 @@
|
|||||||
"version": "6.2.1",
|
"version": "6.2.1",
|
||||||
"resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.2.1.tgz",
|
"resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.2.1.tgz",
|
||||||
"integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==",
|
"integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"universalify": "^2.0.0"
|
"universalify": "^2.0.0"
|
||||||
@@ -7311,6 +7489,7 @@
|
|||||||
"version": "4.1.5",
|
"version": "4.1.5",
|
||||||
"resolved": "https://registry.npmmirror.com/kleur/-/kleur-4.1.5.tgz",
|
"resolved": "https://registry.npmmirror.com/kleur/-/kleur-4.1.5.tgz",
|
||||||
"integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
|
"integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6"
|
"node": ">=6"
|
||||||
@@ -7627,6 +7806,7 @@
|
|||||||
"version": "1.2.4",
|
"version": "1.2.4",
|
||||||
"resolved": "https://registry.npmmirror.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
|
"resolved": "https://registry.npmmirror.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
|
||||||
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
|
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/locate-path": {
|
"node_modules/locate-path": {
|
||||||
@@ -7656,6 +7836,7 @@
|
|||||||
"version": "6.0.0",
|
"version": "6.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/log-symbols/-/log-symbols-6.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/log-symbols/-/log-symbols-6.0.0.tgz",
|
||||||
"integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==",
|
"integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"chalk": "^5.3.0",
|
"chalk": "^5.3.0",
|
||||||
@@ -7672,6 +7853,7 @@
|
|||||||
"version": "5.6.2",
|
"version": "5.6.2",
|
||||||
"resolved": "https://registry.npmmirror.com/chalk/-/chalk-5.6.2.tgz",
|
"resolved": "https://registry.npmmirror.com/chalk/-/chalk-5.6.2.tgz",
|
||||||
"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
|
"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^12.17.0 || ^14.13 || >=16.0.0"
|
"node": "^12.17.0 || ^14.13 || >=16.0.0"
|
||||||
@@ -7684,6 +7866,7 @@
|
|||||||
"version": "1.3.0",
|
"version": "1.3.0",
|
||||||
"resolved": "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz",
|
"resolved": "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz",
|
||||||
"integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==",
|
"integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12"
|
"node": ">=12"
|
||||||
@@ -7707,8 +7890,9 @@
|
|||||||
},
|
},
|
||||||
"node_modules/lru-cache": {
|
"node_modules/lru-cache": {
|
||||||
"version": "5.1.1",
|
"version": "5.1.1",
|
||||||
"resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
|
||||||
"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
|
"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
|
||||||
|
"dev": true,
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"yallist": "^3.0.2"
|
"yallist": "^3.0.2"
|
||||||
@@ -7767,6 +7951,7 @@
|
|||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmmirror.com/media-typer/-/media-typer-1.1.0.tgz",
|
"resolved": "https://registry.npmmirror.com/media-typer/-/media-typer-1.1.0.tgz",
|
||||||
"integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==",
|
"integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.8"
|
"node": ">= 0.8"
|
||||||
@@ -7776,6 +7961,7 @@
|
|||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-2.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-2.0.0.tgz",
|
||||||
"integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==",
|
"integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
@@ -7788,12 +7974,14 @@
|
|||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz",
|
||||||
"integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
|
"integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/merge2": {
|
"node_modules/merge2": {
|
||||||
"version": "1.4.1",
|
"version": "1.4.1",
|
||||||
"resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz",
|
"resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz",
|
||||||
"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
|
"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 8"
|
"node": ">= 8"
|
||||||
@@ -7892,6 +8080,7 @@
|
|||||||
"version": "4.0.8",
|
"version": "4.0.8",
|
||||||
"resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.8.tgz",
|
"resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.8.tgz",
|
||||||
"integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
|
"integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"braces": "^3.0.3",
|
"braces": "^3.0.3",
|
||||||
@@ -7926,6 +8115,7 @@
|
|||||||
"version": "2.1.0",
|
"version": "2.1.0",
|
||||||
"resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz",
|
"resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz",
|
||||||
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
|
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6"
|
"node": ">=6"
|
||||||
@@ -7935,6 +8125,7 @@
|
|||||||
"version": "5.0.1",
|
"version": "5.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/mimic-function/-/mimic-function-5.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/mimic-function/-/mimic-function-5.0.1.tgz",
|
||||||
"integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==",
|
"integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
@@ -7956,10 +8147,29 @@
|
|||||||
"node": "*"
|
"node": "*"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/minimatch/node_modules/balanced-match": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
|
||||||
|
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/minimatch/node_modules/brace-expansion": {
|
||||||
|
"version": "1.1.16",
|
||||||
|
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.16.tgz",
|
||||||
|
"integrity": "sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"balanced-match": "^1.0.0",
|
||||||
|
"concat-map": "0.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/minimist": {
|
"node_modules/minimist": {
|
||||||
"version": "1.2.8",
|
"version": "1.2.8",
|
||||||
"resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz",
|
"resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz",
|
||||||
"integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
|
"integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"funding": {
|
"funding": {
|
||||||
"url": "https://github.com/sponsors/ljharb"
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
@@ -7975,6 +8185,7 @@
|
|||||||
"version": "2.14.5",
|
"version": "2.14.5",
|
||||||
"resolved": "https://registry.npmmirror.com/msw/-/msw-2.14.5.tgz",
|
"resolved": "https://registry.npmmirror.com/msw/-/msw-2.14.5.tgz",
|
||||||
"integrity": "sha512-X6G05oX4x0e+CNI55KMdhMmwHCBKf2iwazGr+iwsdoJ94JA1ED7wSXb6V+lLPdqFkmIlPiGYvayqnaNcOzobDA==",
|
"integrity": "sha512-X6G05oX4x0e+CNI55KMdhMmwHCBKf2iwazGr+iwsdoJ94JA1ED7wSXb6V+lLPdqFkmIlPiGYvayqnaNcOzobDA==",
|
||||||
|
"dev": true,
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -8019,6 +8230,7 @@
|
|||||||
"version": "1.1.1",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npmmirror.com/cookie/-/cookie-1.1.1.tgz",
|
"resolved": "https://registry.npmmirror.com/cookie/-/cookie-1.1.1.tgz",
|
||||||
"integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==",
|
"integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
@@ -8032,15 +8244,16 @@
|
|||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/mute-stream/-/mute-stream-3.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/mute-stream/-/mute-stream-3.0.0.tgz",
|
||||||
"integrity": "sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==",
|
"integrity": "sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==",
|
||||||
|
"dev": true,
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^20.17.0 || >=22.9.0"
|
"node": "^20.17.0 || >=22.9.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/nanoid": {
|
"node_modules/nanoid": {
|
||||||
"version": "3.3.12",
|
"version": "3.3.16",
|
||||||
"resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.12.tgz",
|
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.16.tgz",
|
||||||
"integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==",
|
"integrity": "sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==",
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "github",
|
"type": "github",
|
||||||
@@ -8082,18 +8295,19 @@
|
|||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/negotiator/-/negotiator-1.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/negotiator/-/negotiator-1.0.0.tgz",
|
||||||
"integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==",
|
"integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.6"
|
"node": ">= 0.6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/next": {
|
"node_modules/next": {
|
||||||
"version": "16.2.6",
|
"version": "16.2.10",
|
||||||
"resolved": "https://registry.npmmirror.com/next/-/next-16.2.6.tgz",
|
"resolved": "https://registry.npmjs.org/next/-/next-16.2.10.tgz",
|
||||||
"integrity": "sha512-qOVgKJg1+At15NpeUP+eJgCHvTCgXsogweq87Ri/Ix7PkqQHg4sdaXmSFqKlgaIXE4kW0g25LE68W87UANlHtw==",
|
"integrity": "sha512-2som5AVXb3kE6Yjine3/mNbBayYF58eguBWIVVUdr1y/L426xyVEgYxgBG+1QC34P2x5E+tcDup6XkuOAX3dCA==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@next/env": "16.2.6",
|
"@next/env": "16.2.10",
|
||||||
"@swc/helpers": "0.5.15",
|
"@swc/helpers": "0.5.15",
|
||||||
"baseline-browser-mapping": "^2.9.19",
|
"baseline-browser-mapping": "^2.9.19",
|
||||||
"caniuse-lite": "^1.0.30001579",
|
"caniuse-lite": "^1.0.30001579",
|
||||||
@@ -8107,14 +8321,14 @@
|
|||||||
"node": ">=20.9.0"
|
"node": ">=20.9.0"
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"@next/swc-darwin-arm64": "16.2.6",
|
"@next/swc-darwin-arm64": "16.2.10",
|
||||||
"@next/swc-darwin-x64": "16.2.6",
|
"@next/swc-darwin-x64": "16.2.10",
|
||||||
"@next/swc-linux-arm64-gnu": "16.2.6",
|
"@next/swc-linux-arm64-gnu": "16.2.10",
|
||||||
"@next/swc-linux-arm64-musl": "16.2.6",
|
"@next/swc-linux-arm64-musl": "16.2.10",
|
||||||
"@next/swc-linux-x64-gnu": "16.2.6",
|
"@next/swc-linux-x64-gnu": "16.2.10",
|
||||||
"@next/swc-linux-x64-musl": "16.2.6",
|
"@next/swc-linux-x64-musl": "16.2.10",
|
||||||
"@next/swc-win32-arm64-msvc": "16.2.6",
|
"@next/swc-win32-arm64-msvc": "16.2.10",
|
||||||
"@next/swc-win32-x64-msvc": "16.2.6",
|
"@next/swc-win32-x64-msvc": "16.2.10",
|
||||||
"sharp": "^0.34.5"
|
"sharp": "^0.34.5"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
@@ -8150,39 +8364,12 @@
|
|||||||
"react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc"
|
"react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/next/node_modules/postcss": {
|
|
||||||
"version": "8.4.31",
|
|
||||||
"resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.31.tgz",
|
|
||||||
"integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
|
|
||||||
"funding": [
|
|
||||||
{
|
|
||||||
"type": "opencollective",
|
|
||||||
"url": "https://opencollective.com/postcss/"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "tidelift",
|
|
||||||
"url": "https://tidelift.com/funding/github/npm/postcss"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "github",
|
|
||||||
"url": "https://github.com/sponsors/ai"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"nanoid": "^3.3.6",
|
|
||||||
"picocolors": "^1.0.0",
|
|
||||||
"source-map-js": "^1.0.2"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": "^10 || ^12 || >=14"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/node-domexception": {
|
"node_modules/node-domexception": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/node-domexception/-/node-domexception-1.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/node-domexception/-/node-domexception-1.0.0.tgz",
|
||||||
"integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
|
"integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
|
||||||
"deprecated": "Use your platform's native DOMException instead",
|
"deprecated": "Use your platform's native DOMException instead",
|
||||||
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "github",
|
"type": "github",
|
||||||
@@ -8221,6 +8408,7 @@
|
|||||||
"version": "3.3.2",
|
"version": "3.3.2",
|
||||||
"resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-3.3.2.tgz",
|
"resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-3.3.2.tgz",
|
||||||
"integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==",
|
"integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"data-uri-to-buffer": "^4.0.0",
|
"data-uri-to-buffer": "^4.0.0",
|
||||||
@@ -8239,12 +8427,14 @@
|
|||||||
"version": "2.0.38",
|
"version": "2.0.38",
|
||||||
"resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.38.tgz",
|
"resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.38.tgz",
|
||||||
"integrity": "sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==",
|
"integrity": "sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/npm-run-path": {
|
"node_modules/npm-run-path": {
|
||||||
"version": "6.0.0",
|
"version": "6.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-6.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-6.0.0.tgz",
|
||||||
"integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==",
|
"integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"path-key": "^4.0.0",
|
"path-key": "^4.0.0",
|
||||||
@@ -8261,6 +8451,7 @@
|
|||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/path-key/-/path-key-4.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/path-key/-/path-key-4.0.0.tgz",
|
||||||
"integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
|
"integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12"
|
"node": ">=12"
|
||||||
@@ -8273,6 +8464,7 @@
|
|||||||
"version": "4.1.1",
|
"version": "4.1.1",
|
||||||
"resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz",
|
"resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz",
|
||||||
"integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
|
"integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
@@ -8282,6 +8474,7 @@
|
|||||||
"version": "1.13.4",
|
"version": "1.13.4",
|
||||||
"resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.4.tgz",
|
"resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.4.tgz",
|
||||||
"integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
|
"integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.4"
|
"node": ">= 0.4"
|
||||||
@@ -8304,6 +8497,7 @@
|
|||||||
"version": "1.1.33",
|
"version": "1.1.33",
|
||||||
"resolved": "https://registry.npmmirror.com/object-treeify/-/object-treeify-1.1.33.tgz",
|
"resolved": "https://registry.npmmirror.com/object-treeify/-/object-treeify-1.1.33.tgz",
|
||||||
"integrity": "sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==",
|
"integrity": "sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 10"
|
"node": ">= 10"
|
||||||
@@ -8403,6 +8597,7 @@
|
|||||||
"version": "2.4.1",
|
"version": "2.4.1",
|
||||||
"resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz",
|
"resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz",
|
||||||
"integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
|
"integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ee-first": "1.1.1"
|
"ee-first": "1.1.1"
|
||||||
@@ -8415,6 +8610,7 @@
|
|||||||
"version": "1.4.0",
|
"version": "1.4.0",
|
||||||
"resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz",
|
"resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz",
|
||||||
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
|
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
|
||||||
|
"dev": true,
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"wrappy": "1"
|
"wrappy": "1"
|
||||||
@@ -8424,6 +8620,7 @@
|
|||||||
"version": "7.0.0",
|
"version": "7.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/onetime/-/onetime-7.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/onetime/-/onetime-7.0.0.tgz",
|
||||||
"integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==",
|
"integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"mimic-function": "^5.0.0"
|
"mimic-function": "^5.0.0"
|
||||||
@@ -8456,6 +8653,7 @@
|
|||||||
"version": "11.0.0",
|
"version": "11.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/open/-/open-11.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/open/-/open-11.0.0.tgz",
|
||||||
"integrity": "sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==",
|
"integrity": "sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"default-browser": "^5.4.0",
|
"default-browser": "^5.4.0",
|
||||||
@@ -8494,6 +8692,7 @@
|
|||||||
"version": "8.2.0",
|
"version": "8.2.0",
|
||||||
"resolved": "https://registry.npmmirror.com/ora/-/ora-8.2.0.tgz",
|
"resolved": "https://registry.npmmirror.com/ora/-/ora-8.2.0.tgz",
|
||||||
"integrity": "sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==",
|
"integrity": "sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"chalk": "^5.3.0",
|
"chalk": "^5.3.0",
|
||||||
@@ -8517,6 +8716,7 @@
|
|||||||
"version": "5.6.2",
|
"version": "5.6.2",
|
||||||
"resolved": "https://registry.npmmirror.com/chalk/-/chalk-5.6.2.tgz",
|
"resolved": "https://registry.npmmirror.com/chalk/-/chalk-5.6.2.tgz",
|
||||||
"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
|
"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^12.17.0 || ^14.13 || >=16.0.0"
|
"node": "^12.17.0 || ^14.13 || >=16.0.0"
|
||||||
@@ -8529,6 +8729,7 @@
|
|||||||
"version": "1.4.3",
|
"version": "1.4.3",
|
||||||
"resolved": "https://registry.npmmirror.com/outvariant/-/outvariant-1.4.3.tgz",
|
"resolved": "https://registry.npmmirror.com/outvariant/-/outvariant-1.4.3.tgz",
|
||||||
"integrity": "sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==",
|
"integrity": "sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/own-keys": {
|
"node_modules/own-keys": {
|
||||||
@@ -8585,6 +8786,7 @@
|
|||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz",
|
||||||
"integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
|
"integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"callsites": "^3.0.0"
|
"callsites": "^3.0.0"
|
||||||
@@ -8597,6 +8799,7 @@
|
|||||||
"version": "5.2.0",
|
"version": "5.2.0",
|
||||||
"resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz",
|
"resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz",
|
||||||
"integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
|
"integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/code-frame": "^7.0.0",
|
"@babel/code-frame": "^7.0.0",
|
||||||
@@ -8615,6 +8818,7 @@
|
|||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/parse-ms/-/parse-ms-4.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/parse-ms/-/parse-ms-4.0.0.tgz",
|
||||||
"integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==",
|
"integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
@@ -8627,6 +8831,7 @@
|
|||||||
"version": "1.3.3",
|
"version": "1.3.3",
|
||||||
"resolved": "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz",
|
"resolved": "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz",
|
||||||
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
|
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.8"
|
"node": ">= 0.8"
|
||||||
@@ -8636,6 +8841,7 @@
|
|||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/path-browserify/-/path-browserify-1.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/path-browserify/-/path-browserify-1.0.1.tgz",
|
||||||
"integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==",
|
"integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/path-exists": {
|
"node_modules/path-exists": {
|
||||||
@@ -8652,6 +8858,7 @@
|
|||||||
"version": "3.1.1",
|
"version": "3.1.1",
|
||||||
"resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz",
|
"resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz",
|
||||||
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
|
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
@@ -8668,6 +8875,7 @@
|
|||||||
"version": "6.3.0",
|
"version": "6.3.0",
|
||||||
"resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-6.3.0.tgz",
|
"resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-6.3.0.tgz",
|
||||||
"integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==",
|
"integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/picocolors": {
|
"node_modules/picocolors": {
|
||||||
@@ -8680,6 +8888,7 @@
|
|||||||
"version": "2.3.2",
|
"version": "2.3.2",
|
||||||
"resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.2.tgz",
|
"resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.2.tgz",
|
||||||
"integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
|
"integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=8.6"
|
"node": ">=8.6"
|
||||||
@@ -8692,6 +8901,7 @@
|
|||||||
"version": "5.0.1",
|
"version": "5.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/pkce-challenge/-/pkce-challenge-5.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/pkce-challenge/-/pkce-challenge-5.0.1.tgz",
|
||||||
"integrity": "sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==",
|
"integrity": "sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=16.20.0"
|
"node": ">=16.20.0"
|
||||||
@@ -8708,9 +8918,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/postcss": {
|
"node_modules/postcss": {
|
||||||
"version": "8.5.14",
|
"version": "8.5.21",
|
||||||
"resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.14.tgz",
|
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.21.tgz",
|
||||||
"integrity": "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==",
|
"integrity": "sha512-v4sDNP3fdNiWMfabO7OwOQdOX8TiQSztKyT1Wj0w+j7LDallJThJRBBBmzVGyYj0crMh7jlV4zepPkiNu9UwDQ==",
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "opencollective",
|
"type": "opencollective",
|
||||||
@@ -8727,7 +8937,7 @@
|
|||||||
],
|
],
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"nanoid": "^3.3.11",
|
"nanoid": "^3.3.16",
|
||||||
"picocolors": "^1.1.1",
|
"picocolors": "^1.1.1",
|
||||||
"source-map-js": "^1.2.1"
|
"source-map-js": "^1.2.1"
|
||||||
},
|
},
|
||||||
@@ -8739,6 +8949,7 @@
|
|||||||
"version": "7.1.1",
|
"version": "7.1.1",
|
||||||
"resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz",
|
"resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz",
|
||||||
"integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
|
"integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"cssesc": "^3.0.0",
|
"cssesc": "^3.0.0",
|
||||||
@@ -8752,6 +8963,7 @@
|
|||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"resolved": "https://registry.npmmirror.com/powershell-utils/-/powershell-utils-0.1.0.tgz",
|
"resolved": "https://registry.npmmirror.com/powershell-utils/-/powershell-utils-0.1.0.tgz",
|
||||||
"integrity": "sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==",
|
"integrity": "sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=20"
|
"node": ">=20"
|
||||||
@@ -8774,6 +8986,7 @@
|
|||||||
"version": "9.3.0",
|
"version": "9.3.0",
|
||||||
"resolved": "https://registry.npmmirror.com/pretty-ms/-/pretty-ms-9.3.0.tgz",
|
"resolved": "https://registry.npmmirror.com/pretty-ms/-/pretty-ms-9.3.0.tgz",
|
||||||
"integrity": "sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==",
|
"integrity": "sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"parse-ms": "^4.0.0"
|
"parse-ms": "^4.0.0"
|
||||||
@@ -8789,6 +9002,7 @@
|
|||||||
"version": "2.4.2",
|
"version": "2.4.2",
|
||||||
"resolved": "https://registry.npmmirror.com/prompts/-/prompts-2.4.2.tgz",
|
"resolved": "https://registry.npmmirror.com/prompts/-/prompts-2.4.2.tgz",
|
||||||
"integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
|
"integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"kleur": "^3.0.3",
|
"kleur": "^3.0.3",
|
||||||
@@ -8802,6 +9016,7 @@
|
|||||||
"version": "3.0.3",
|
"version": "3.0.3",
|
||||||
"resolved": "https://registry.npmmirror.com/kleur/-/kleur-3.0.3.tgz",
|
"resolved": "https://registry.npmmirror.com/kleur/-/kleur-3.0.3.tgz",
|
||||||
"integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
|
"integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6"
|
"node": ">=6"
|
||||||
@@ -8833,6 +9048,7 @@
|
|||||||
"version": "2.0.7",
|
"version": "2.0.7",
|
||||||
"resolved": "https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.7.tgz",
|
"resolved": "https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.7.tgz",
|
||||||
"integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
|
"integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"forwarded": "0.2.0",
|
"forwarded": "0.2.0",
|
||||||
@@ -8862,12 +9078,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/qs": {
|
"node_modules/qs": {
|
||||||
"version": "6.15.1",
|
"version": "6.15.3",
|
||||||
"resolved": "https://registry.npmmirror.com/qs/-/qs-6.15.1.tgz",
|
"resolved": "https://registry.npmjs.org/qs/-/qs-6.15.3.tgz",
|
||||||
"integrity": "sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==",
|
"integrity": "sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==",
|
||||||
|
"dev": true,
|
||||||
"license": "BSD-3-Clause",
|
"license": "BSD-3-Clause",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"side-channel": "^1.1.0"
|
"es-define-property": "^1.0.1",
|
||||||
|
"side-channel": "^1.1.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.6"
|
"node": ">=0.6"
|
||||||
@@ -8880,6 +9098,7 @@
|
|||||||
"version": "1.2.3",
|
"version": "1.2.3",
|
||||||
"resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz",
|
"resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz",
|
||||||
"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
|
"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
|
||||||
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "github",
|
"type": "github",
|
||||||
@@ -8900,6 +9119,7 @@
|
|||||||
"version": "1.2.1",
|
"version": "1.2.1",
|
||||||
"resolved": "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz",
|
"resolved": "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz",
|
||||||
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
|
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.6"
|
"node": ">= 0.6"
|
||||||
@@ -8909,6 +9129,7 @@
|
|||||||
"version": "3.0.2",
|
"version": "3.0.2",
|
||||||
"resolved": "https://registry.npmmirror.com/raw-body/-/raw-body-3.0.2.tgz",
|
"resolved": "https://registry.npmmirror.com/raw-body/-/raw-body-3.0.2.tgz",
|
||||||
"integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==",
|
"integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"bytes": "~3.1.2",
|
"bytes": "~3.1.2",
|
||||||
@@ -9020,6 +9241,7 @@
|
|||||||
"version": "0.23.11",
|
"version": "0.23.11",
|
||||||
"resolved": "https://registry.npmmirror.com/recast/-/recast-0.23.11.tgz",
|
"resolved": "https://registry.npmmirror.com/recast/-/recast-0.23.11.tgz",
|
||||||
"integrity": "sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==",
|
"integrity": "sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ast-types": "^0.16.1",
|
"ast-types": "^0.16.1",
|
||||||
@@ -9149,6 +9371,7 @@
|
|||||||
"version": "2.1.1",
|
"version": "2.1.1",
|
||||||
"resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz",
|
"resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz",
|
||||||
"integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
|
"integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
@@ -9158,6 +9381,7 @@
|
|||||||
"version": "2.0.2",
|
"version": "2.0.2",
|
||||||
"resolved": "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz",
|
"resolved": "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz",
|
||||||
"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
|
"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
@@ -9197,6 +9421,7 @@
|
|||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz",
|
||||||
"integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
|
"integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=4"
|
"node": ">=4"
|
||||||
@@ -9216,6 +9441,7 @@
|
|||||||
"version": "5.1.0",
|
"version": "5.1.0",
|
||||||
"resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-5.1.0.tgz",
|
"resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-5.1.0.tgz",
|
||||||
"integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==",
|
"integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"onetime": "^7.0.0",
|
"onetime": "^7.0.0",
|
||||||
@@ -9232,12 +9458,14 @@
|
|||||||
"version": "0.11.11",
|
"version": "0.11.11",
|
||||||
"resolved": "https://registry.npmmirror.com/rettime/-/rettime-0.11.11.tgz",
|
"resolved": "https://registry.npmmirror.com/rettime/-/rettime-0.11.11.tgz",
|
||||||
"integrity": "sha512-ILJRqVWBCTlg9r42fFgwVZx1gnFAcQF8mRoMkbgQfIrjEDf9nbBFDFx00oloOa+Q869FUtaYDXZvEfnecQSCoQ==",
|
"integrity": "sha512-ILJRqVWBCTlg9r42fFgwVZx1gnFAcQF8mRoMkbgQfIrjEDf9nbBFDFx00oloOa+Q869FUtaYDXZvEfnecQSCoQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/reusify": {
|
"node_modules/reusify": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.1.0.tgz",
|
"resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.1.0.tgz",
|
||||||
"integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
|
"integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"iojs": ">=1.0.0",
|
"iojs": ">=1.0.0",
|
||||||
@@ -9248,6 +9476,7 @@
|
|||||||
"version": "2.2.0",
|
"version": "2.2.0",
|
||||||
"resolved": "https://registry.npmmirror.com/router/-/router-2.2.0.tgz",
|
"resolved": "https://registry.npmmirror.com/router/-/router-2.2.0.tgz",
|
||||||
"integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==",
|
"integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"debug": "^4.4.0",
|
"debug": "^4.4.0",
|
||||||
@@ -9264,6 +9493,7 @@
|
|||||||
"version": "8.4.2",
|
"version": "8.4.2",
|
||||||
"resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-8.4.2.tgz",
|
"resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-8.4.2.tgz",
|
||||||
"integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==",
|
"integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"funding": {
|
"funding": {
|
||||||
"type": "opencollective",
|
"type": "opencollective",
|
||||||
@@ -9274,6 +9504,7 @@
|
|||||||
"version": "7.1.0",
|
"version": "7.1.0",
|
||||||
"resolved": "https://registry.npmmirror.com/run-applescript/-/run-applescript-7.1.0.tgz",
|
"resolved": "https://registry.npmmirror.com/run-applescript/-/run-applescript-7.1.0.tgz",
|
||||||
"integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==",
|
"integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
@@ -9286,6 +9517,7 @@
|
|||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz",
|
"resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz",
|
||||||
"integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
|
"integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
|
||||||
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "github",
|
"type": "github",
|
||||||
@@ -9364,6 +9596,7 @@
|
|||||||
"version": "2.1.2",
|
"version": "2.1.2",
|
||||||
"resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
"resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
||||||
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
|
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/scheduler": {
|
"node_modules/scheduler": {
|
||||||
@@ -9376,6 +9609,7 @@
|
|||||||
"version": "6.3.1",
|
"version": "6.3.1",
|
||||||
"resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
|
"resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
|
||||||
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
|
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
|
||||||
|
"dev": true,
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"bin": {
|
"bin": {
|
||||||
"semver": "bin/semver.js"
|
"semver": "bin/semver.js"
|
||||||
@@ -9385,6 +9619,7 @@
|
|||||||
"version": "1.2.1",
|
"version": "1.2.1",
|
||||||
"resolved": "https://registry.npmmirror.com/send/-/send-1.2.1.tgz",
|
"resolved": "https://registry.npmmirror.com/send/-/send-1.2.1.tgz",
|
||||||
"integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==",
|
"integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"debug": "^4.4.3",
|
"debug": "^4.4.3",
|
||||||
@@ -9411,6 +9646,7 @@
|
|||||||
"version": "1.54.0",
|
"version": "1.54.0",
|
||||||
"resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.54.0.tgz",
|
"resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.54.0.tgz",
|
||||||
"integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
|
"integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.6"
|
"node": ">= 0.6"
|
||||||
@@ -9420,6 +9656,7 @@
|
|||||||
"version": "3.0.2",
|
"version": "3.0.2",
|
||||||
"resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-3.0.2.tgz",
|
"resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-3.0.2.tgz",
|
||||||
"integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==",
|
"integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"mime-db": "^1.54.0"
|
"mime-db": "^1.54.0"
|
||||||
@@ -9436,6 +9673,7 @@
|
|||||||
"version": "2.2.1",
|
"version": "2.2.1",
|
||||||
"resolved": "https://registry.npmmirror.com/serve-static/-/serve-static-2.2.1.tgz",
|
"resolved": "https://registry.npmmirror.com/serve-static/-/serve-static-2.2.1.tgz",
|
||||||
"integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==",
|
"integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"encodeurl": "^2.0.0",
|
"encodeurl": "^2.0.0",
|
||||||
@@ -9455,6 +9693,7 @@
|
|||||||
"version": "3.1.0",
|
"version": "3.1.0",
|
||||||
"resolved": "https://registry.npmmirror.com/set-cookie-parser/-/set-cookie-parser-3.1.0.tgz",
|
"resolved": "https://registry.npmmirror.com/set-cookie-parser/-/set-cookie-parser-3.1.0.tgz",
|
||||||
"integrity": "sha512-kjnC1DXBHcxaOaOXBHBeRtltsDG2nUiUni+jP92M9gYdW12rsmx92UsfpH7o5tDRs7I1ZZPSQJQGv3UaRfCiuw==",
|
"integrity": "sha512-kjnC1DXBHcxaOaOXBHBeRtltsDG2nUiUni+jP92M9gYdW12rsmx92UsfpH7o5tDRs7I1ZZPSQJQGv3UaRfCiuw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/set-function-length": {
|
"node_modules/set-function-length": {
|
||||||
@@ -9510,12 +9749,14 @@
|
|||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz",
|
"resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz",
|
||||||
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
|
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
|
||||||
|
"dev": true,
|
||||||
"license": "ISC"
|
"license": "ISC"
|
||||||
},
|
},
|
||||||
"node_modules/shadcn": {
|
"node_modules/shadcn": {
|
||||||
"version": "4.7.0",
|
"version": "4.7.0",
|
||||||
"resolved": "https://registry.npmmirror.com/shadcn/-/shadcn-4.7.0.tgz",
|
"resolved": "https://registry.npmmirror.com/shadcn/-/shadcn-4.7.0.tgz",
|
||||||
"integrity": "sha512-70fwnesNrY1GgeD7Kdzn+3SsYeyfibm8immsA5L68+OusoPTvYF01oWExl8/latKpMpvVXcbgdbbE6VFBJQ38w==",
|
"integrity": "sha512-70fwnesNrY1GgeD7Kdzn+3SsYeyfibm8immsA5L68+OusoPTvYF01oWExl8/latKpMpvVXcbgdbbE6VFBJQ38w==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/core": "^7.28.0",
|
"@babel/core": "^7.28.0",
|
||||||
@@ -9561,6 +9802,7 @@
|
|||||||
"version": "3.3.3",
|
"version": "3.3.3",
|
||||||
"resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.3.tgz",
|
"resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.3.tgz",
|
||||||
"integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
|
"integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@nodelib/fs.stat": "^2.0.2",
|
"@nodelib/fs.stat": "^2.0.2",
|
||||||
@@ -9577,6 +9819,7 @@
|
|||||||
"version": "5.1.2",
|
"version": "5.1.2",
|
||||||
"resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz",
|
"resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz",
|
||||||
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
|
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
|
||||||
|
"dev": true,
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"is-glob": "^4.0.1"
|
"is-glob": "^4.0.1"
|
||||||
@@ -9589,6 +9832,7 @@
|
|||||||
"version": "4.2.0",
|
"version": "4.2.0",
|
||||||
"resolved": "https://registry.npmmirror.com/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz",
|
"resolved": "https://registry.npmmirror.com/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz",
|
||||||
"integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==",
|
"integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"json5": "^2.2.2",
|
"json5": "^2.2.2",
|
||||||
@@ -9603,6 +9847,7 @@
|
|||||||
"version": "3.25.76",
|
"version": "3.25.76",
|
||||||
"resolved": "https://registry.npmmirror.com/zod/-/zod-3.25.76.tgz",
|
"resolved": "https://registry.npmmirror.com/zod/-/zod-3.25.76.tgz",
|
||||||
"integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==",
|
"integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"funding": {
|
"funding": {
|
||||||
"url": "https://github.com/sponsors/colinhacks"
|
"url": "https://github.com/sponsors/colinhacks"
|
||||||
@@ -9670,6 +9915,7 @@
|
|||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz",
|
||||||
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
|
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"shebang-regex": "^3.0.0"
|
"shebang-regex": "^3.0.0"
|
||||||
@@ -9682,6 +9928,7 @@
|
|||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz",
|
||||||
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
|
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
@@ -9707,14 +9954,15 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/side-channel": {
|
"node_modules/side-channel": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz",
|
||||||
"integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
|
"integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"es-errors": "^1.3.0",
|
"es-errors": "^1.3.0",
|
||||||
"object-inspect": "^1.13.3",
|
"object-inspect": "^1.13.4",
|
||||||
"side-channel-list": "^1.0.0",
|
"side-channel-list": "^1.0.1",
|
||||||
"side-channel-map": "^1.0.1",
|
"side-channel-map": "^1.0.1",
|
||||||
"side-channel-weakmap": "^1.0.2"
|
"side-channel-weakmap": "^1.0.2"
|
||||||
},
|
},
|
||||||
@@ -9729,6 +9977,7 @@
|
|||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/side-channel-list/-/side-channel-list-1.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/side-channel-list/-/side-channel-list-1.0.1.tgz",
|
||||||
"integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==",
|
"integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"es-errors": "^1.3.0",
|
"es-errors": "^1.3.0",
|
||||||
@@ -9745,6 +9994,7 @@
|
|||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/side-channel-map/-/side-channel-map-1.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/side-channel-map/-/side-channel-map-1.0.1.tgz",
|
||||||
"integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
|
"integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"call-bound": "^1.0.2",
|
"call-bound": "^1.0.2",
|
||||||
@@ -9763,6 +10013,7 @@
|
|||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmmirror.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
|
"resolved": "https://registry.npmmirror.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
|
||||||
"integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
|
"integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"call-bound": "^1.0.2",
|
"call-bound": "^1.0.2",
|
||||||
@@ -9782,6 +10033,7 @@
|
|||||||
"version": "4.1.0",
|
"version": "4.1.0",
|
||||||
"resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-4.1.0.tgz",
|
"resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-4.1.0.tgz",
|
||||||
"integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
|
"integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
|
||||||
|
"dev": true,
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=14"
|
"node": ">=14"
|
||||||
@@ -9794,6 +10046,7 @@
|
|||||||
"version": "1.0.5",
|
"version": "1.0.5",
|
||||||
"resolved": "https://registry.npmmirror.com/sisteransi/-/sisteransi-1.0.5.tgz",
|
"resolved": "https://registry.npmmirror.com/sisteransi/-/sisteransi-1.0.5.tgz",
|
||||||
"integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
|
"integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/sonner": {
|
"node_modules/sonner": {
|
||||||
@@ -9810,6 +10063,7 @@
|
|||||||
"version": "0.6.1",
|
"version": "0.6.1",
|
||||||
"resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
|
"resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
|
||||||
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
|
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
|
||||||
|
"dev": true,
|
||||||
"license": "BSD-3-Clause",
|
"license": "BSD-3-Clause",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
@@ -9834,18 +10088,6 @@
|
|||||||
"url": "https://github.com/sponsors/wooorm"
|
"url": "https://github.com/sponsors/wooorm"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/ssf": {
|
|
||||||
"version": "0.11.2",
|
|
||||||
"resolved": "https://mirrors.cloud.tencent.com/npm/ssf/-/ssf-0.11.2.tgz",
|
|
||||||
"integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==",
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"dependencies": {
|
|
||||||
"frac": "~1.1.2"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=0.8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/stable-hash": {
|
"node_modules/stable-hash": {
|
||||||
"version": "0.0.5",
|
"version": "0.0.5",
|
||||||
"resolved": "https://registry.npmmirror.com/stable-hash/-/stable-hash-0.0.5.tgz",
|
"resolved": "https://registry.npmmirror.com/stable-hash/-/stable-hash-0.0.5.tgz",
|
||||||
@@ -9857,6 +10099,7 @@
|
|||||||
"version": "2.0.2",
|
"version": "2.0.2",
|
||||||
"resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.2.tgz",
|
"resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.2.tgz",
|
||||||
"integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==",
|
"integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.8"
|
"node": ">= 0.8"
|
||||||
@@ -9866,6 +10109,7 @@
|
|||||||
"version": "0.2.2",
|
"version": "0.2.2",
|
||||||
"resolved": "https://registry.npmmirror.com/stdin-discarder/-/stdin-discarder-0.2.2.tgz",
|
"resolved": "https://registry.npmmirror.com/stdin-discarder/-/stdin-discarder-0.2.2.tgz",
|
||||||
"integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==",
|
"integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
@@ -9892,12 +10136,14 @@
|
|||||||
"version": "0.5.1",
|
"version": "0.5.1",
|
||||||
"resolved": "https://registry.npmmirror.com/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz",
|
"resolved": "https://registry.npmmirror.com/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz",
|
||||||
"integrity": "sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==",
|
"integrity": "sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/string-width": {
|
"node_modules/string-width": {
|
||||||
"version": "7.2.0",
|
"version": "7.2.0",
|
||||||
"resolved": "https://registry.npmmirror.com/string-width/-/string-width-7.2.0.tgz",
|
"resolved": "https://registry.npmmirror.com/string-width/-/string-width-7.2.0.tgz",
|
||||||
"integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
|
"integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"emoji-regex": "^10.3.0",
|
"emoji-regex": "^10.3.0",
|
||||||
@@ -9915,6 +10161,7 @@
|
|||||||
"version": "10.6.0",
|
"version": "10.6.0",
|
||||||
"resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-10.6.0.tgz",
|
"resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-10.6.0.tgz",
|
||||||
"integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==",
|
"integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/string.prototype.includes": {
|
"node_modules/string.prototype.includes": {
|
||||||
@@ -10048,6 +10295,7 @@
|
|||||||
"version": "5.0.0",
|
"version": "5.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/stringify-object/-/stringify-object-5.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/stringify-object/-/stringify-object-5.0.0.tgz",
|
||||||
"integrity": "sha512-zaJYxz2FtcMb4f+g60KsRNFOpVMUyuJgA51Zi5Z1DOTC3S59+OQiVOzE9GZt0x72uBGWKsQIuBKeF9iusmKFsg==",
|
"integrity": "sha512-zaJYxz2FtcMb4f+g60KsRNFOpVMUyuJgA51Zi5Z1DOTC3S59+OQiVOzE9GZt0x72uBGWKsQIuBKeF9iusmKFsg==",
|
||||||
|
"dev": true,
|
||||||
"license": "BSD-2-Clause",
|
"license": "BSD-2-Clause",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"get-own-enumerable-keys": "^1.0.0",
|
"get-own-enumerable-keys": "^1.0.0",
|
||||||
@@ -10065,6 +10313,7 @@
|
|||||||
"version": "7.2.0",
|
"version": "7.2.0",
|
||||||
"resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.2.0.tgz",
|
"resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.2.0.tgz",
|
||||||
"integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==",
|
"integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ansi-regex": "^6.2.2"
|
"ansi-regex": "^6.2.2"
|
||||||
@@ -10080,6 +10329,7 @@
|
|||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/strip-bom/-/strip-bom-3.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/strip-bom/-/strip-bom-3.0.0.tgz",
|
||||||
"integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
|
"integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=4"
|
"node": ">=4"
|
||||||
@@ -10089,6 +10339,7 @@
|
|||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-4.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-4.0.0.tgz",
|
||||||
"integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==",
|
"integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
@@ -10176,6 +10427,7 @@
|
|||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/tagged-tag/-/tagged-tag-1.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/tagged-tag/-/tagged-tag-1.0.0.tgz",
|
||||||
"integrity": "sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==",
|
"integrity": "sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=20"
|
"node": ">=20"
|
||||||
@@ -10273,6 +10525,7 @@
|
|||||||
"version": "7.0.30",
|
"version": "7.0.30",
|
||||||
"resolved": "https://registry.npmmirror.com/tldts/-/tldts-7.0.30.tgz",
|
"resolved": "https://registry.npmmirror.com/tldts/-/tldts-7.0.30.tgz",
|
||||||
"integrity": "sha512-ELrFxuqsDdHUwoh0XxDbxuLD3Wnz49Z57IFvTtvWy1hJdcMZjXLIuonjilCiWHlT2GbE4Wlv1wKVTzDFnXH1aw==",
|
"integrity": "sha512-ELrFxuqsDdHUwoh0XxDbxuLD3Wnz49Z57IFvTtvWy1hJdcMZjXLIuonjilCiWHlT2GbE4Wlv1wKVTzDFnXH1aw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"tldts-core": "^7.0.30"
|
"tldts-core": "^7.0.30"
|
||||||
@@ -10285,12 +10538,14 @@
|
|||||||
"version": "7.0.30",
|
"version": "7.0.30",
|
||||||
"resolved": "https://registry.npmmirror.com/tldts-core/-/tldts-core-7.0.30.tgz",
|
"resolved": "https://registry.npmmirror.com/tldts-core/-/tldts-core-7.0.30.tgz",
|
||||||
"integrity": "sha512-uiHN8PIB1VmWyS98eZYja4xzlYqeFZVjb4OuYlJQnZAuJhMw4PbKQOKgHKhBdJR3FE/t5mUQ1Kd80++B+qhD1Q==",
|
"integrity": "sha512-uiHN8PIB1VmWyS98eZYja4xzlYqeFZVjb4OuYlJQnZAuJhMw4PbKQOKgHKhBdJR3FE/t5mUQ1Kd80++B+qhD1Q==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/to-regex-range": {
|
"node_modules/to-regex-range": {
|
||||||
"version": "5.0.1",
|
"version": "5.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
||||||
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
|
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"is-number": "^7.0.0"
|
"is-number": "^7.0.0"
|
||||||
@@ -10303,6 +10558,7 @@
|
|||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz",
|
||||||
"integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
|
"integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.6"
|
"node": ">=0.6"
|
||||||
@@ -10312,6 +10568,7 @@
|
|||||||
"version": "6.0.1",
|
"version": "6.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-6.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-6.0.1.tgz",
|
||||||
"integrity": "sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==",
|
"integrity": "sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==",
|
||||||
|
"dev": true,
|
||||||
"license": "BSD-3-Clause",
|
"license": "BSD-3-Clause",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"tldts": "^7.0.5"
|
"tldts": "^7.0.5"
|
||||||
@@ -10347,6 +10604,7 @@
|
|||||||
"version": "26.0.0",
|
"version": "26.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/ts-morph/-/ts-morph-26.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/ts-morph/-/ts-morph-26.0.0.tgz",
|
||||||
"integrity": "sha512-ztMO++owQnz8c/gIENcM9XfCEzgoGphTv+nKpYNM1bgsdOVC/jRZuEBf6N+mLLDNg68Kl+GgUZfOySaRiG1/Ug==",
|
"integrity": "sha512-ztMO++owQnz8c/gIENcM9XfCEzgoGphTv+nKpYNM1bgsdOVC/jRZuEBf6N+mLLDNg68Kl+GgUZfOySaRiG1/Ug==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@ts-morph/common": "~0.27.0",
|
"@ts-morph/common": "~0.27.0",
|
||||||
@@ -10411,6 +10669,7 @@
|
|||||||
"version": "5.6.0",
|
"version": "5.6.0",
|
||||||
"resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-5.6.0.tgz",
|
"resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-5.6.0.tgz",
|
||||||
"integrity": "sha512-8ZiHFm91orbSAe2PSAiSVBVko18pbhbiB3U9GglSzF/zCGkR+rxpHx6sEMCUm4kxY4LjDIUGgCfUMtwfZfjfUA==",
|
"integrity": "sha512-8ZiHFm91orbSAe2PSAiSVBVko18pbhbiB3U9GglSzF/zCGkR+rxpHx6sEMCUm4kxY4LjDIUGgCfUMtwfZfjfUA==",
|
||||||
|
"dev": true,
|
||||||
"license": "(MIT OR CC0-1.0)",
|
"license": "(MIT OR CC0-1.0)",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"tagged-tag": "^1.0.0"
|
"tagged-tag": "^1.0.0"
|
||||||
@@ -10423,23 +10682,43 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/type-is": {
|
"node_modules/type-is": {
|
||||||
"version": "2.0.1",
|
"version": "2.1.0",
|
||||||
"resolved": "https://registry.npmmirror.com/type-is/-/type-is-2.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/type-is/-/type-is-2.1.0.tgz",
|
||||||
"integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==",
|
"integrity": "sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"content-type": "^1.0.5",
|
"content-type": "^2.0.0",
|
||||||
"media-typer": "^1.1.0",
|
"media-typer": "^1.1.0",
|
||||||
"mime-types": "^3.0.0"
|
"mime-types": "^3.0.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.6"
|
"node": ">= 18"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/express"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/type-is/node_modules/content-type": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/content-type/-/content-type-2.0.0.tgz",
|
||||||
|
"integrity": "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/express"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/type-is/node_modules/mime-db": {
|
"node_modules/type-is/node_modules/mime-db": {
|
||||||
"version": "1.54.0",
|
"version": "1.54.0",
|
||||||
"resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.54.0.tgz",
|
"resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.54.0.tgz",
|
||||||
"integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
|
"integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.6"
|
"node": ">= 0.6"
|
||||||
@@ -10449,6 +10728,7 @@
|
|||||||
"version": "3.0.2",
|
"version": "3.0.2",
|
||||||
"resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-3.0.2.tgz",
|
"resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-3.0.2.tgz",
|
||||||
"integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==",
|
"integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"mime-db": "^1.54.0"
|
"mime-db": "^1.54.0"
|
||||||
@@ -10600,12 +10880,14 @@
|
|||||||
"version": "6.21.0",
|
"version": "6.21.0",
|
||||||
"resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-6.21.0.tgz",
|
"resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-6.21.0.tgz",
|
||||||
"integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
|
"integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/unicorn-magic": {
|
"node_modules/unicorn-magic": {
|
||||||
"version": "0.3.0",
|
"version": "0.3.0",
|
||||||
"resolved": "https://registry.npmmirror.com/unicorn-magic/-/unicorn-magic-0.3.0.tgz",
|
"resolved": "https://registry.npmmirror.com/unicorn-magic/-/unicorn-magic-0.3.0.tgz",
|
||||||
"integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==",
|
"integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
@@ -10686,6 +10968,7 @@
|
|||||||
"version": "2.0.1",
|
"version": "2.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.1.tgz",
|
||||||
"integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
|
"integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 10.0.0"
|
"node": ">= 10.0.0"
|
||||||
@@ -10695,6 +10978,7 @@
|
|||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz",
|
||||||
"integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
|
"integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.8"
|
"node": ">= 0.8"
|
||||||
@@ -10739,6 +11023,7 @@
|
|||||||
"version": "3.0.2",
|
"version": "3.0.2",
|
||||||
"resolved": "https://registry.npmmirror.com/until-async/-/until-async-3.0.2.tgz",
|
"resolved": "https://registry.npmmirror.com/until-async/-/until-async-3.0.2.tgz",
|
||||||
"integrity": "sha512-IiSk4HlzAMqTUseHHe3VhIGyuFmN90zMTpD3Z3y8jeQbzLIq500MVM7Jq2vUAnTKAFPJrqwkzr6PoTcPhGcOiw==",
|
"integrity": "sha512-IiSk4HlzAMqTUseHHe3VhIGyuFmN90zMTpD3Z3y8jeQbzLIq500MVM7Jq2vUAnTKAFPJrqwkzr6PoTcPhGcOiw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"funding": {
|
"funding": {
|
||||||
"url": "https://github.com/sponsors/kettanaito"
|
"url": "https://github.com/sponsors/kettanaito"
|
||||||
@@ -10748,6 +11033,7 @@
|
|||||||
"version": "1.2.3",
|
"version": "1.2.3",
|
||||||
"resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz",
|
"resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz",
|
||||||
"integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==",
|
"integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==",
|
||||||
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "opencollective",
|
"type": "opencollective",
|
||||||
@@ -10797,12 +11083,14 @@
|
|||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
"resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
||||||
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
|
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/validate-npm-package-name": {
|
"node_modules/validate-npm-package-name": {
|
||||||
"version": "7.0.2",
|
"version": "7.0.2",
|
||||||
"resolved": "https://registry.npmmirror.com/validate-npm-package-name/-/validate-npm-package-name-7.0.2.tgz",
|
"resolved": "https://registry.npmmirror.com/validate-npm-package-name/-/validate-npm-package-name-7.0.2.tgz",
|
||||||
"integrity": "sha512-hVDIBwsRruT73PbK7uP5ebUt+ezEtCmzZz3F59BSr2F6OVFnJ/6h8liuvdLrQ88Xmnk6/+xGGuq+pG9WwTuy3A==",
|
"integrity": "sha512-hVDIBwsRruT73PbK7uP5ebUt+ezEtCmzZz3F59BSr2F6OVFnJ/6h8liuvdLrQ88Xmnk6/+xGGuq+pG9WwTuy3A==",
|
||||||
|
"dev": true,
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^20.17.0 || >=22.9.0"
|
"node": "^20.17.0 || >=22.9.0"
|
||||||
@@ -10812,6 +11100,7 @@
|
|||||||
"version": "1.1.2",
|
"version": "1.1.2",
|
||||||
"resolved": "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz",
|
"resolved": "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz",
|
||||||
"integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
|
"integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.8"
|
"node": ">= 0.8"
|
||||||
@@ -10880,6 +11169,7 @@
|
|||||||
"version": "3.3.3",
|
"version": "3.3.3",
|
||||||
"resolved": "https://registry.npmmirror.com/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz",
|
"resolved": "https://registry.npmmirror.com/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz",
|
||||||
"integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==",
|
"integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 8"
|
"node": ">= 8"
|
||||||
@@ -10889,6 +11179,7 @@
|
|||||||
"version": "2.0.2",
|
"version": "2.0.2",
|
||||||
"resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz",
|
"resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz",
|
||||||
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
|
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
|
||||||
|
"dev": true,
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"isexe": "^2.0.0"
|
"isexe": "^2.0.0"
|
||||||
@@ -10989,24 +11280,6 @@
|
|||||||
"url": "https://github.com/sponsors/ljharb"
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/wmf": {
|
|
||||||
"version": "1.0.2",
|
|
||||||
"resolved": "https://mirrors.cloud.tencent.com/npm/wmf/-/wmf-1.0.2.tgz",
|
|
||||||
"integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==",
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=0.8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/word": {
|
|
||||||
"version": "0.3.0",
|
|
||||||
"resolved": "https://mirrors.cloud.tencent.com/npm/word/-/word-0.3.0.tgz",
|
|
||||||
"integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==",
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=0.8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/word-wrap": {
|
"node_modules/word-wrap": {
|
||||||
"version": "1.2.5",
|
"version": "1.2.5",
|
||||||
"resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.5.tgz",
|
"resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.5.tgz",
|
||||||
@@ -11021,6 +11294,7 @@
|
|||||||
"version": "7.0.0",
|
"version": "7.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
|
||||||
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
|
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ansi-styles": "^4.0.0",
|
"ansi-styles": "^4.0.0",
|
||||||
@@ -11038,6 +11312,7 @@
|
|||||||
"version": "5.0.1",
|
"version": "5.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
|
||||||
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
|
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
@@ -11047,12 +11322,14 @@
|
|||||||
"version": "8.0.0",
|
"version": "8.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
||||||
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
|
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/wrap-ansi/node_modules/string-width": {
|
"node_modules/wrap-ansi/node_modules/string-width": {
|
||||||
"version": "4.2.3",
|
"version": "4.2.3",
|
||||||
"resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
|
"resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
|
||||||
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
|
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"emoji-regex": "^8.0.0",
|
"emoji-regex": "^8.0.0",
|
||||||
@@ -11067,6 +11344,7 @@
|
|||||||
"version": "6.0.1",
|
"version": "6.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
|
||||||
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
|
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ansi-regex": "^5.0.1"
|
"ansi-regex": "^5.0.1"
|
||||||
@@ -11079,12 +11357,26 @@
|
|||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz",
|
"resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz",
|
||||||
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
|
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "ISC"
|
"license": "ISC"
|
||||||
},
|
},
|
||||||
|
"node_modules/write-excel-file": {
|
||||||
|
"version": "4.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/write-excel-file/-/write-excel-file-4.1.1.tgz",
|
||||||
|
"integrity": "sha512-MUnCnNtQrcZek832ZcU24uU0rSphFmKPD1DvIjXOlygVb93CV7Tme6H3jUTkxsMmjB2W7HIzERzjqTi5kui71A==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"fflate": "^0.8.2"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/wsl-utils": {
|
"node_modules/wsl-utils": {
|
||||||
"version": "0.3.1",
|
"version": "0.3.1",
|
||||||
"resolved": "https://registry.npmmirror.com/wsl-utils/-/wsl-utils-0.3.1.tgz",
|
"resolved": "https://registry.npmmirror.com/wsl-utils/-/wsl-utils-0.3.1.tgz",
|
||||||
"integrity": "sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==",
|
"integrity": "sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"is-wsl": "^3.1.0",
|
"is-wsl": "^3.1.0",
|
||||||
@@ -11097,31 +11389,11 @@
|
|||||||
"url": "https://github.com/sponsors/sindresorhus"
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/xlsx": {
|
|
||||||
"version": "0.18.5",
|
|
||||||
"resolved": "https://mirrors.cloud.tencent.com/npm/xlsx/-/xlsx-0.18.5.tgz",
|
|
||||||
"integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==",
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"dependencies": {
|
|
||||||
"adler-32": "~1.3.0",
|
|
||||||
"cfb": "~1.2.1",
|
|
||||||
"codepage": "~1.15.0",
|
|
||||||
"crc-32": "~1.2.1",
|
|
||||||
"ssf": "~0.11.2",
|
|
||||||
"wmf": "~1.0.1",
|
|
||||||
"word": "~0.3.0"
|
|
||||||
},
|
|
||||||
"bin": {
|
|
||||||
"xlsx": "bin/xlsx.njs"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=0.8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/y18n": {
|
"node_modules/y18n": {
|
||||||
"version": "5.0.8",
|
"version": "5.0.8",
|
||||||
"resolved": "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz",
|
"resolved": "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz",
|
||||||
"integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
|
"integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
|
||||||
|
"dev": true,
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=10"
|
"node": ">=10"
|
||||||
@@ -11129,14 +11401,16 @@
|
|||||||
},
|
},
|
||||||
"node_modules/yallist": {
|
"node_modules/yallist": {
|
||||||
"version": "3.1.1",
|
"version": "3.1.1",
|
||||||
"resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
|
||||||
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
|
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
|
||||||
|
"dev": true,
|
||||||
"license": "ISC"
|
"license": "ISC"
|
||||||
},
|
},
|
||||||
"node_modules/yargs": {
|
"node_modules/yargs": {
|
||||||
"version": "17.7.2",
|
"version": "17.7.2",
|
||||||
"resolved": "https://registry.npmmirror.com/yargs/-/yargs-17.7.2.tgz",
|
"resolved": "https://registry.npmmirror.com/yargs/-/yargs-17.7.2.tgz",
|
||||||
"integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
|
"integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"cliui": "^8.0.1",
|
"cliui": "^8.0.1",
|
||||||
@@ -11155,6 +11429,7 @@
|
|||||||
"version": "21.1.1",
|
"version": "21.1.1",
|
||||||
"resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-21.1.1.tgz",
|
"resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-21.1.1.tgz",
|
||||||
"integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
|
"integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
|
||||||
|
"dev": true,
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12"
|
"node": ">=12"
|
||||||
@@ -11164,6 +11439,7 @@
|
|||||||
"version": "5.0.1",
|
"version": "5.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
|
||||||
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
|
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
@@ -11173,12 +11449,14 @@
|
|||||||
"version": "8.0.0",
|
"version": "8.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
||||||
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
|
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/yargs/node_modules/string-width": {
|
"node_modules/yargs/node_modules/string-width": {
|
||||||
"version": "4.2.3",
|
"version": "4.2.3",
|
||||||
"resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
|
"resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
|
||||||
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
|
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"emoji-regex": "^8.0.0",
|
"emoji-regex": "^8.0.0",
|
||||||
@@ -11193,6 +11471,7 @@
|
|||||||
"version": "6.0.1",
|
"version": "6.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
|
||||||
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
|
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ansi-regex": "^5.0.1"
|
"ansi-regex": "^5.0.1"
|
||||||
@@ -11218,6 +11497,7 @@
|
|||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmmirror.com/yocto-spinner/-/yocto-spinner-1.2.0.tgz",
|
"resolved": "https://registry.npmmirror.com/yocto-spinner/-/yocto-spinner-1.2.0.tgz",
|
||||||
"integrity": "sha512-Yw0hUB6UA3o4YUgKy3oSe9a4cxoaZ9sBfYDw+JSxo6Id0KoJGoxzPA24qqUXYKBWABs/zDSGTz9kww7t3F0XGw==",
|
"integrity": "sha512-Yw0hUB6UA3o4YUgKy3oSe9a4cxoaZ9sBfYDw+JSxo6Id0KoJGoxzPA24qqUXYKBWABs/zDSGTz9kww7t3F0XGw==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"yoctocolors": "^2.1.1"
|
"yoctocolors": "^2.1.1"
|
||||||
@@ -11233,6 +11513,7 @@
|
|||||||
"version": "2.1.2",
|
"version": "2.1.2",
|
||||||
"resolved": "https://registry.npmmirror.com/yoctocolors/-/yoctocolors-2.1.2.tgz",
|
"resolved": "https://registry.npmmirror.com/yoctocolors/-/yoctocolors-2.1.2.tgz",
|
||||||
"integrity": "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==",
|
"integrity": "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
@@ -11245,6 +11526,7 @@
|
|||||||
"version": "4.4.3",
|
"version": "4.4.3",
|
||||||
"resolved": "https://registry.npmmirror.com/zod/-/zod-4.4.3.tgz",
|
"resolved": "https://registry.npmmirror.com/zod/-/zod-4.4.3.tgz",
|
||||||
"integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==",
|
"integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"funding": {
|
"funding": {
|
||||||
"url": "https://github.com/sponsors/colinhacks"
|
"url": "https://github.com/sponsors/colinhacks"
|
||||||
@@ -11254,6 +11536,7 @@
|
|||||||
"version": "3.25.2",
|
"version": "3.25.2",
|
||||||
"resolved": "https://registry.npmmirror.com/zod-to-json-schema/-/zod-to-json-schema-3.25.2.tgz",
|
"resolved": "https://registry.npmmirror.com/zod-to-json-schema/-/zod-to-json-schema-3.25.2.tgz",
|
||||||
"integrity": "sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==",
|
"integrity": "sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==",
|
||||||
|
"dev": true,
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"zod": "^3.25.28 || ^4"
|
"zod": "^3.25.28 || ^4"
|
||||||
|
|||||||
22
package.json
22
package.json
@@ -3,34 +3,34 @@
|
|||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "NEXT_DISABLE_MEM_OVERRIDE=1 NODE_OPTIONS='--max-old-space-size=3072' next dev --port 3801",
|
"dev": "NEXT_DISABLE_MEM_OVERRIDE=1 NODE_OPTIONS='--max-old-space-size=2048' next dev --webpack --disable-source-maps --port 3801",
|
||||||
"build": "next build && cp -r .next/static .next/standalone/.next/static && cp -r public .next/standalone/public && echo '✅ standalone 静态资源已复制完毕'",
|
"build": "next build && cp -r .next/static .next/standalone/.next/static && cp -r public .next/standalone/public && echo '✅ standalone 静态资源已复制完毕'",
|
||||||
"start": "next start --port 3801",
|
"start": "next start --port 3801",
|
||||||
"lint": "eslint"
|
"lint": "eslint"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@base-ui/react": "^1.4.1",
|
"@base-ui/react": "^1.4.1",
|
||||||
"axios": "^1.16.0",
|
"axios": "^1.18.1",
|
||||||
"class-variance-authority": "^0.7.1",
|
"class-variance-authority": "^0.7.1",
|
||||||
"clsx": "^2.1.1",
|
"clsx": "^2.1.1",
|
||||||
"date-fns": "^4.1.0",
|
"date-fns": "^4.1.0",
|
||||||
|
"geist": "^1.7.2",
|
||||||
"i18next": "^26.2.0",
|
"i18next": "^26.2.0",
|
||||||
"i18next-browser-languagedetector": "^8.2.1",
|
"i18next-browser-languagedetector": "^8.2.1",
|
||||||
"lucide-react": "^1.14.0",
|
"lucide-react": "^1.14.0",
|
||||||
"next": "16.2.6",
|
"next": "16.2.10",
|
||||||
"next-themes": "^0.4.6",
|
"next-themes": "^0.4.6",
|
||||||
"react": "19.2.4",
|
"react": "19.2.4",
|
||||||
"react-day-picker": "^10.0.0",
|
"react-day-picker": "^10.0.0",
|
||||||
"react-dom": "19.2.4",
|
"react-dom": "19.2.4",
|
||||||
"react-i18next": "^17.0.8",
|
"react-i18next": "^17.0.8",
|
||||||
"recharts": "^3.8.0",
|
"recharts": "^3.8.0",
|
||||||
"shadcn": "^4.7.0",
|
|
||||||
"shiki": "^4.2.0",
|
"shiki": "^4.2.0",
|
||||||
"sonner": "^2.0.7",
|
"sonner": "^2.0.7",
|
||||||
"swr": "^2.4.1",
|
"swr": "^2.4.1",
|
||||||
"tailwind-merge": "^3.5.0",
|
"tailwind-merge": "^3.5.0",
|
||||||
"tw-animate-css": "^1.4.0",
|
"tw-animate-css": "^1.4.0",
|
||||||
"xlsx": "^0.18.5",
|
"write-excel-file": "^4.1.1",
|
||||||
"zustand": "^5.0.13"
|
"zustand": "^5.0.13"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
@@ -40,8 +40,18 @@
|
|||||||
"@types/react-dom": "^19",
|
"@types/react-dom": "^19",
|
||||||
"babel-plugin-react-compiler": "1.0.0",
|
"babel-plugin-react-compiler": "1.0.0",
|
||||||
"eslint": "^9",
|
"eslint": "^9",
|
||||||
"eslint-config-next": "16.2.6",
|
"eslint-config-next": "16.2.10",
|
||||||
|
"shadcn": "^4.7.0",
|
||||||
"tailwindcss": "^4",
|
"tailwindcss": "^4",
|
||||||
"typescript": "^5"
|
"typescript": "^5"
|
||||||
|
},
|
||||||
|
"overrides": {
|
||||||
|
"@babel/core": "^7.29.1",
|
||||||
|
"body-parser": "^2.3.0",
|
||||||
|
"form-data": "^4.0.6",
|
||||||
|
"hono": "^4.12.25",
|
||||||
|
"js-yaml": "^4.3.0",
|
||||||
|
"postcss": "^8.5.10",
|
||||||
|
"qs": "^6.15.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,6 +38,16 @@ export async function putAdminPlayer(
|
|||||||
return adminRequest.put<AdminPlayerRow>(`${A}/players/${playerId}`, body);
|
return adminRequest.put<AdminPlayerRow>(`${A}/players/${playerId}`, body);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function putAdminPlayerPassword(
|
||||||
|
playerId: number,
|
||||||
|
body: { password: string; password_confirmation: string },
|
||||||
|
): Promise<{ password_reset: boolean; player_id: number }> {
|
||||||
|
return adminRequest.put<{ password_reset: boolean; player_id: number }>(
|
||||||
|
`${A}/players/${playerId}/password`,
|
||||||
|
body,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
export async function deleteAdminPlayer(playerId: number): Promise<AdminPlayerDeleteResult> {
|
export async function deleteAdminPlayer(playerId: number): Promise<AdminPlayerDeleteResult> {
|
||||||
return adminRequest.delete<AdminPlayerDeleteResult>(`${A}/players/${playerId}`);
|
return adminRequest.delete<AdminPlayerDeleteResult>(`${A}/players/${playerId}`);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ export async function getAdminUsers(params?: {
|
|||||||
page?: number;
|
page?: number;
|
||||||
per_page?: number;
|
per_page?: number;
|
||||||
keyword?: string;
|
keyword?: string;
|
||||||
|
role_slug?: string;
|
||||||
}): Promise<AdminUserPermissionListData> {
|
}): Promise<AdminUserPermissionListData> {
|
||||||
return adminRequest.get<AdminUserPermissionListData>(`${A}/admin-users`, {
|
return adminRequest.get<AdminUserPermissionListData>(`${A}/admin-users`, {
|
||||||
params,
|
params,
|
||||||
|
|||||||
@@ -7,11 +7,18 @@ import type { Metadata } from "next";
|
|||||||
|
|
||||||
export const metadata: Metadata = buildPageMetadata("adminUsers", "title");
|
export const metadata: Metadata = buildPageMetadata("adminUsers", "title");
|
||||||
|
|
||||||
export default function AdminUsersPage() {
|
type AdminUsersPageProps = {
|
||||||
|
searchParams: Promise<{ role_slug?: string | string[] }>;
|
||||||
|
};
|
||||||
|
|
||||||
|
export default async function AdminUsersPage({ searchParams }: AdminUsersPageProps) {
|
||||||
|
const params = await searchParams;
|
||||||
|
const roleSlug = Array.isArray(params.role_slug) ? params.role_slug[0] : params.role_slug;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ModuleScaffold>
|
<ModuleScaffold>
|
||||||
<AdminPermissionGate requiredAny={[PRD_ADMIN_USER_MANAGE]}>
|
<AdminPermissionGate requiredAny={[PRD_ADMIN_USER_MANAGE]}>
|
||||||
<AdminUsersConsole />
|
<AdminUsersConsole roleSlug={roleSlug?.trim() ?? ""} />
|
||||||
</AdminPermissionGate>
|
</AdminPermissionGate>
|
||||||
</ModuleScaffold>
|
</ModuleScaffold>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -6,13 +6,10 @@ import type { Metadata } from "next";
|
|||||||
|
|
||||||
export const metadata: Metadata = buildPageMetadata("draws", "drawDetail");
|
export const metadata: Metadata = buildPageMetadata("draws", "drawDetail");
|
||||||
|
|
||||||
export default async function AdminDrawDetailPage(props: {
|
export default function AdminDrawDetailPage() {
|
||||||
params: Promise<{ drawId: string }>;
|
|
||||||
}) {
|
|
||||||
const { drawId } = await props.params;
|
|
||||||
return (
|
return (
|
||||||
<AdminPermissionGate requiredAny={PRD_DRAW_ACCESS_ANY}>
|
<AdminPermissionGate requiredAny={PRD_DRAW_ACCESS_ANY}>
|
||||||
<DrawDetailConsole drawId={drawId} />
|
<DrawDetailConsole />
|
||||||
</AdminPermissionGate>
|
</AdminPermissionGate>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
16
src/app/admin/(shell)/draws/[drawId]/tickets/page.tsx
Normal file
16
src/app/admin/(shell)/draws/[drawId]/tickets/page.tsx
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
import type { Metadata } from "next";
|
||||||
|
|
||||||
|
import { AdminPermissionGate } from "@/components/admin/admin-permission-gate";
|
||||||
|
import { PRD_TICKETS_ACCESS_ANY } from "@/lib/admin-prd";
|
||||||
|
import { buildPageMetadata } from "@/lib/page-metadata";
|
||||||
|
import { DrawTicketsConsole } from "@/modules/draws/draw-tickets-console";
|
||||||
|
|
||||||
|
export const metadata: Metadata = buildPageMetadata("draws", "subnav.tickets");
|
||||||
|
|
||||||
|
export default function AdminDrawTicketsPage(): React.ReactElement {
|
||||||
|
return (
|
||||||
|
<AdminPermissionGate requiredAny={PRD_TICKETS_ACCESS_ANY}>
|
||||||
|
<DrawTicketsConsole />
|
||||||
|
</AdminPermissionGate>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -5,5 +5,5 @@ export default function AdminSegmentLayout({
|
|||||||
}: {
|
}: {
|
||||||
children: ReactNode;
|
children: ReactNode;
|
||||||
}) {
|
}) {
|
||||||
return <div className="flex min-h-full flex-1 flex-col">{children}</div>;
|
return <div className="admin-scrollbars flex min-h-full flex-1 flex-col">{children}</div>;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -83,6 +83,10 @@
|
|||||||
--sidebar-accent-foreground: #ffffff;
|
--sidebar-accent-foreground: #ffffff;
|
||||||
--sidebar-border: rgb(255 255 255 / 14%);
|
--sidebar-border: rgb(255 255 255 / 14%);
|
||||||
--sidebar-ring: rgb(255 255 255 / 36%);
|
--sidebar-ring: rgb(255 255 255 / 36%);
|
||||||
|
--scrollbar-track: rgb(15 31 61 / 6%);
|
||||||
|
--scrollbar-thumb: #b7c9e2;
|
||||||
|
--scrollbar-thumb-hover: #8da9cf;
|
||||||
|
--scrollbar-thumb-active: #6f91bf;
|
||||||
}
|
}
|
||||||
|
|
||||||
.dark {
|
.dark {
|
||||||
@@ -117,6 +121,10 @@
|
|||||||
--sidebar-accent-foreground: #ffffff;
|
--sidebar-accent-foreground: #ffffff;
|
||||||
--sidebar-border: rgb(255 255 255 / 14%);
|
--sidebar-border: rgb(255 255 255 / 14%);
|
||||||
--sidebar-ring: rgb(255 255 255 / 36%);
|
--sidebar-ring: rgb(255 255 255 / 36%);
|
||||||
|
--scrollbar-track: rgb(255 255 255 / 6%);
|
||||||
|
--scrollbar-thumb: #405675;
|
||||||
|
--scrollbar-thumb-hover: #587398;
|
||||||
|
--scrollbar-thumb-active: #6c8bb6;
|
||||||
}
|
}
|
||||||
|
|
||||||
@layer base {
|
@layer base {
|
||||||
@@ -131,6 +139,104 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* 后管滚动条:原生滚动区域与 ScrollArea 共用同一套语义颜色 */
|
||||||
|
:where(
|
||||||
|
html:has(.admin-scrollbars),
|
||||||
|
body:has(.admin-scrollbars),
|
||||||
|
.admin-scrollbars,
|
||||||
|
.admin-scrollbars *
|
||||||
|
) {
|
||||||
|
scrollbar-color: var(--scrollbar-thumb) var(--scrollbar-track);
|
||||||
|
scrollbar-width: thin;
|
||||||
|
}
|
||||||
|
|
||||||
|
:where(
|
||||||
|
html:has(.admin-scrollbars),
|
||||||
|
body:has(.admin-scrollbars),
|
||||||
|
.admin-scrollbars,
|
||||||
|
.admin-scrollbars *
|
||||||
|
)::-webkit-scrollbar {
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
:where(
|
||||||
|
html:has(.admin-scrollbars),
|
||||||
|
body:has(.admin-scrollbars),
|
||||||
|
.admin-scrollbars,
|
||||||
|
.admin-scrollbars *
|
||||||
|
)::-webkit-scrollbar-track {
|
||||||
|
border-radius: 999px;
|
||||||
|
background: var(--scrollbar-track);
|
||||||
|
}
|
||||||
|
|
||||||
|
:where(
|
||||||
|
html:has(.admin-scrollbars),
|
||||||
|
body:has(.admin-scrollbars),
|
||||||
|
.admin-scrollbars,
|
||||||
|
.admin-scrollbars *
|
||||||
|
)::-webkit-scrollbar-thumb {
|
||||||
|
min-width: 40px;
|
||||||
|
min-height: 40px;
|
||||||
|
border: 2px solid transparent;
|
||||||
|
border-radius: 999px;
|
||||||
|
background: var(--scrollbar-thumb);
|
||||||
|
background-clip: padding-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
:where(
|
||||||
|
html:has(.admin-scrollbars),
|
||||||
|
body:has(.admin-scrollbars),
|
||||||
|
.admin-scrollbars,
|
||||||
|
.admin-scrollbars *
|
||||||
|
)::-webkit-scrollbar-thumb:hover {
|
||||||
|
background-color: var(--scrollbar-thumb-hover);
|
||||||
|
}
|
||||||
|
|
||||||
|
:where(
|
||||||
|
html:has(.admin-scrollbars),
|
||||||
|
body:has(.admin-scrollbars),
|
||||||
|
.admin-scrollbars,
|
||||||
|
.admin-scrollbars *
|
||||||
|
)::-webkit-scrollbar-thumb:active {
|
||||||
|
background-color: var(--scrollbar-thumb-active);
|
||||||
|
}
|
||||||
|
|
||||||
|
:where(
|
||||||
|
html:has(.admin-scrollbars),
|
||||||
|
body:has(.admin-scrollbars),
|
||||||
|
.admin-scrollbars,
|
||||||
|
.admin-scrollbars *
|
||||||
|
)::-webkit-scrollbar-corner {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-sidebar="sidebar"] {
|
||||||
|
--scrollbar-track: rgb(255 255 255 / 6%);
|
||||||
|
--scrollbar-thumb: rgb(255 255 255 / 28%);
|
||||||
|
--scrollbar-thumb-hover: rgb(255 255 255 / 42%);
|
||||||
|
--scrollbar-thumb-active: rgb(255 255 255 / 56%);
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-slot="scroll-area-scrollbar"]:hover > [data-slot="scroll-area-thumb"] {
|
||||||
|
background-color: var(--scrollbar-thumb-hover);
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-slot="scroll-area-scrollbar"]:active > [data-slot="scroll-area-thumb"] {
|
||||||
|
background-color: var(--scrollbar-thumb-active);
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (forced-colors: active) {
|
||||||
|
:where(
|
||||||
|
html:has(.admin-scrollbars),
|
||||||
|
body:has(.admin-scrollbars),
|
||||||
|
.admin-scrollbars,
|
||||||
|
.admin-scrollbars *
|
||||||
|
) {
|
||||||
|
scrollbar-color: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@layer components {
|
@layer components {
|
||||||
.admin-list-card {
|
.admin-list-card {
|
||||||
@apply border-border/80 bg-card shadow-sm;
|
@apply border-border/80 bg-card shadow-sm;
|
||||||
@@ -282,4 +388,3 @@
|
|||||||
color: #0f172a;
|
color: #0f172a;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,19 +1,10 @@
|
|||||||
import type { Metadata } from "next";
|
import type { Metadata } from "next";
|
||||||
import { Geist, Geist_Mono } from "next/font/google";
|
import { GeistSans } from "geist/font/sans";
|
||||||
|
import { GeistMono } from "geist/font/mono";
|
||||||
|
|
||||||
import { Providers } from "@/components/providers";
|
import { Providers } from "@/components/providers";
|
||||||
import "./globals.css";
|
import "./globals.css";
|
||||||
|
|
||||||
const geistSans = Geist({
|
|
||||||
variable: "--font-geist-sans",
|
|
||||||
subsets: ["latin"],
|
|
||||||
});
|
|
||||||
|
|
||||||
const geistMono = Geist_Mono({
|
|
||||||
variable: "--font-geist-mono",
|
|
||||||
subsets: ["latin"],
|
|
||||||
});
|
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
title: {
|
title: {
|
||||||
template: "%s · Lottery Admin",
|
template: "%s · Lottery Admin",
|
||||||
@@ -34,7 +25,7 @@ export default function RootLayout({
|
|||||||
<html
|
<html
|
||||||
lang="zh-Hans"
|
lang="zh-Hans"
|
||||||
suppressHydrationWarning
|
suppressHydrationWarning
|
||||||
className={`${geistSans.variable} ${geistMono.variable} h-full antialiased`}
|
className={`${GeistSans.variable} ${GeistMono.variable} h-full antialiased`}
|
||||||
>
|
>
|
||||||
<head>
|
<head>
|
||||||
<script
|
<script
|
||||||
|
|||||||
@@ -41,8 +41,8 @@ const TOP_ROUTE_LABELS: Record<string, string> = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const AGENT_ROUTE_LABELS: Record<string, string> = {
|
const AGENT_ROUTE_LABELS: Record<string, string> = {
|
||||||
list: "agents.listTitle",
|
list: "listTitle",
|
||||||
provision: "agents.subnav.provision",
|
provision: "subnav.provision",
|
||||||
"settlement-bills": "settlementCenter.title",
|
"settlement-bills": "settlementCenter.title",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
108
src/components/admin/admin-field-label.tsx
Normal file
108
src/components/admin/admin-field-label.tsx
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import type { ReactNode } from "react";
|
||||||
|
import { CircleHelp } from "lucide-react";
|
||||||
|
|
||||||
|
import { Button } from "@/components/ui/button";
|
||||||
|
import { Label } from "@/components/ui/label";
|
||||||
|
import {
|
||||||
|
Tooltip,
|
||||||
|
TooltipContent,
|
||||||
|
TooltipTrigger,
|
||||||
|
} from "@/components/ui/tooltip";
|
||||||
|
import { cn } from "@/lib/utils";
|
||||||
|
|
||||||
|
type AdminFieldLabelProps = {
|
||||||
|
htmlFor: string;
|
||||||
|
children: ReactNode;
|
||||||
|
helpText?: string;
|
||||||
|
helpAriaLabel?: string;
|
||||||
|
className?: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
type AdminHelpIconProps = {
|
||||||
|
helpText: string;
|
||||||
|
helpAriaLabel: string;
|
||||||
|
helpId: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
type AdminHelpTextProps = AdminHelpIconProps & {
|
||||||
|
children: ReactNode;
|
||||||
|
className?: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export function AdminHelpIcon({
|
||||||
|
helpText,
|
||||||
|
helpAriaLabel,
|
||||||
|
helpId,
|
||||||
|
}: AdminHelpIconProps): React.ReactElement {
|
||||||
|
return (
|
||||||
|
<Tooltip>
|
||||||
|
<TooltipTrigger
|
||||||
|
render={
|
||||||
|
<Button
|
||||||
|
type="button"
|
||||||
|
variant="ghost"
|
||||||
|
size="icon-xs"
|
||||||
|
className="text-muted-foreground"
|
||||||
|
aria-label={helpAriaLabel}
|
||||||
|
data-field-help={helpId}
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<CircleHelp aria-hidden="true" />
|
||||||
|
</TooltipTrigger>
|
||||||
|
<TooltipContent
|
||||||
|
side="top"
|
||||||
|
align="start"
|
||||||
|
className="max-w-80 whitespace-normal text-left leading-relaxed"
|
||||||
|
>
|
||||||
|
<p>{helpText}</p>
|
||||||
|
</TooltipContent>
|
||||||
|
</Tooltip>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function AdminHelpText({
|
||||||
|
children,
|
||||||
|
helpText,
|
||||||
|
helpAriaLabel,
|
||||||
|
helpId,
|
||||||
|
className,
|
||||||
|
}: AdminHelpTextProps): React.ReactElement {
|
||||||
|
return (
|
||||||
|
<span className={cn("inline-flex items-center gap-1", className)}>
|
||||||
|
<span>{children}</span>
|
||||||
|
<AdminHelpIcon helpText={helpText} helpAriaLabel={helpAriaLabel} helpId={helpId} />
|
||||||
|
</span>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function AdminFieldLabel({
|
||||||
|
htmlFor,
|
||||||
|
children,
|
||||||
|
helpText,
|
||||||
|
helpAriaLabel,
|
||||||
|
className,
|
||||||
|
}: AdminFieldLabelProps): React.ReactElement {
|
||||||
|
if (!helpText) {
|
||||||
|
return (
|
||||||
|
<Label htmlFor={htmlFor} className={className}>
|
||||||
|
{children}
|
||||||
|
</Label>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="flex items-center gap-1">
|
||||||
|
<Label htmlFor={htmlFor} className={className}>
|
||||||
|
{children}
|
||||||
|
</Label>
|
||||||
|
<AdminHelpIcon
|
||||||
|
helpText={helpText}
|
||||||
|
helpAriaLabel={helpAriaLabel ?? String(children)}
|
||||||
|
helpId={htmlFor}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -25,7 +25,7 @@ import { cn } from "@/lib/utils";
|
|||||||
export function AdminLanguageSwitcher() {
|
export function AdminLanguageSwitcher() {
|
||||||
const { i18n, t } = useTranslation("common");
|
const { i18n, t } = useTranslation("common");
|
||||||
// Match SSR: do not read document/localStorage until after mount.
|
// Match SSR: do not read document/localStorage until after mount.
|
||||||
const [locale, setLocale] = useState<AdminApiLocale>("en");
|
const [locale, setLocale] = useState<AdminApiLocale>("zh");
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const syncLocale = () => {
|
const syncLocale = () => {
|
||||||
@@ -44,8 +44,9 @@ export function AdminLanguageSwitcher() {
|
|||||||
applyAdminUiLocale(next);
|
applyAdminUiLocale(next);
|
||||||
await i18n.changeLanguage(next);
|
await i18n.changeLanguage(next);
|
||||||
setLocale(next);
|
setLocale(next);
|
||||||
|
const nextT = i18n.getFixedT(next, "common");
|
||||||
toast.success(
|
toast.success(
|
||||||
t("language.changed", {
|
nextT("language.changed", {
|
||||||
language: ADMIN_LOCALE_LABELS[next],
|
language: ADMIN_LOCALE_LABELS[next],
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ export function AdminNoResourceState({
|
|||||||
src={NOTDATA_IMAGE}
|
src={NOTDATA_IMAGE}
|
||||||
alt=""
|
alt=""
|
||||||
width={compact ? 120 : 160}
|
width={compact ? 120 : 160}
|
||||||
height={compact ? 120 : 160}
|
height={compact ? 80 : 107}
|
||||||
style={{ width: "auto", height: "auto" }}
|
style={{ width: "auto", height: "auto" }}
|
||||||
className={cn(
|
className={cn(
|
||||||
"h-auto w-auto object-contain self-center object-center -mt-4",
|
"h-auto w-auto object-contain self-center object-center -mt-4",
|
||||||
|
|||||||
82
src/components/admin/admin-page-guide-dialog.tsx
Normal file
82
src/components/admin/admin-page-guide-dialog.tsx
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { BookOpenText } from "lucide-react";
|
||||||
|
|
||||||
|
import { Button } from "@/components/ui/button";
|
||||||
|
import {
|
||||||
|
Dialog,
|
||||||
|
DialogContent,
|
||||||
|
DialogDescription,
|
||||||
|
DialogHeader,
|
||||||
|
DialogTitle,
|
||||||
|
DialogTrigger,
|
||||||
|
} from "@/components/ui/dialog";
|
||||||
|
import { ScrollArea } from "@/components/ui/scroll-area";
|
||||||
|
|
||||||
|
export type AdminPageGuideItem = {
|
||||||
|
label: string;
|
||||||
|
description: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type AdminPageGuideSection = {
|
||||||
|
title: string;
|
||||||
|
description?: string;
|
||||||
|
items?: AdminPageGuideItem[];
|
||||||
|
};
|
||||||
|
|
||||||
|
type AdminPageGuideDialogProps = {
|
||||||
|
triggerLabel: string;
|
||||||
|
title: string;
|
||||||
|
description: string;
|
||||||
|
sections: AdminPageGuideSection[];
|
||||||
|
};
|
||||||
|
|
||||||
|
export function AdminPageGuideDialog({
|
||||||
|
triggerLabel,
|
||||||
|
title,
|
||||||
|
description,
|
||||||
|
sections,
|
||||||
|
}: AdminPageGuideDialogProps): React.ReactElement {
|
||||||
|
return (
|
||||||
|
<Dialog>
|
||||||
|
<DialogTrigger render={<Button type="button" variant="outline" size="sm" />}>
|
||||||
|
<BookOpenText data-icon="inline-start" aria-hidden="true" />
|
||||||
|
{triggerLabel}
|
||||||
|
</DialogTrigger>
|
||||||
|
<DialogContent showCloseButton className="max-h-[85vh] sm:max-w-2xl">
|
||||||
|
<DialogHeader>
|
||||||
|
<DialogTitle>{title}</DialogTitle>
|
||||||
|
<DialogDescription>{description}</DialogDescription>
|
||||||
|
</DialogHeader>
|
||||||
|
<ScrollArea className="min-h-0 max-h-[calc(85vh-8rem)] pr-4">
|
||||||
|
<div className="flex flex-col gap-5 pb-1">
|
||||||
|
{sections.map((section) => (
|
||||||
|
<section key={section.title} className="flex flex-col gap-2">
|
||||||
|
<h3 className="font-heading text-sm font-semibold text-foreground">
|
||||||
|
{section.title}
|
||||||
|
</h3>
|
||||||
|
{section.description ? (
|
||||||
|
<p className="text-sm leading-relaxed text-muted-foreground">
|
||||||
|
{section.description}
|
||||||
|
</p>
|
||||||
|
) : null}
|
||||||
|
{section.items && section.items.length > 0 ? (
|
||||||
|
<dl className="grid gap-2 rounded-lg border border-border/70 bg-muted/20 p-3">
|
||||||
|
{section.items.map((item) => (
|
||||||
|
<div key={item.label} className="grid gap-0.5 sm:grid-cols-[9rem_1fr] sm:gap-3">
|
||||||
|
<dt className="text-sm font-medium text-foreground">{item.label}</dt>
|
||||||
|
<dd className="text-sm leading-relaxed text-muted-foreground">
|
||||||
|
{item.description}
|
||||||
|
</dd>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</dl>
|
||||||
|
) : null}
|
||||||
|
</section>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</ScrollArea>
|
||||||
|
</DialogContent>
|
||||||
|
</Dialog>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -31,10 +31,10 @@ function AdminSidebarSkeleton(): ReactElement {
|
|||||||
<Image
|
<Image
|
||||||
src="/logo.png"
|
src="/logo.png"
|
||||||
alt="N lotto"
|
alt="N lotto"
|
||||||
width={160}
|
width={154}
|
||||||
height={40}
|
height={56}
|
||||||
priority
|
priority
|
||||||
className="h-auto max-h-10 w-full object-contain object-left opacity-95 group-data-[collapsible=icon]:max-h-8 group-data-[collapsible=icon]:object-center"
|
className="h-auto max-h-10 w-auto max-w-full object-contain object-left opacity-95 group-data-[collapsible=icon]:max-h-8 group-data-[collapsible=icon]:object-center"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</SidebarMenuItem>
|
</SidebarMenuItem>
|
||||||
@@ -50,6 +50,7 @@ function AdminSidebarSkeleton(): ReactElement {
|
|||||||
alt=""
|
alt=""
|
||||||
fill
|
fill
|
||||||
sizes="var(--sidebar-width)"
|
sizes="var(--sidebar-width)"
|
||||||
|
loading="eager"
|
||||||
className="h-full w-full object-cover object-bottom"
|
className="h-full w-full object-cover object-bottom"
|
||||||
/>
|
/>
|
||||||
<div className="absolute inset-x-0 top-0 h-20 bg-linear-to-b from-sidebar to-transparent" />
|
<div className="absolute inset-x-0 top-0 h-20 bg-linear-to-b from-sidebar to-transparent" />
|
||||||
@@ -91,10 +92,10 @@ export function AdminAppSidebar() {
|
|||||||
<Image
|
<Image
|
||||||
src="/logo.png"
|
src="/logo.png"
|
||||||
alt="N lotto"
|
alt="N lotto"
|
||||||
width={160}
|
width={154}
|
||||||
height={40}
|
height={56}
|
||||||
priority
|
priority
|
||||||
className="h-auto max-h-10 w-full object-contain object-left group-data-[collapsible=icon]:max-h-8 group-data-[collapsible=icon]:object-center"
|
className="h-auto max-h-10 w-auto max-w-full object-contain object-left group-data-[collapsible=icon]:max-h-8 group-data-[collapsible=icon]:object-center"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</SidebarMenuButton>
|
</SidebarMenuButton>
|
||||||
@@ -120,6 +121,7 @@ export function AdminAppSidebar() {
|
|||||||
alt=""
|
alt=""
|
||||||
fill
|
fill
|
||||||
sizes="var(--sidebar-width)"
|
sizes="var(--sidebar-width)"
|
||||||
|
loading="eager"
|
||||||
className="h-full w-full object-cover object-bottom"
|
className="h-full w-full object-cover object-bottom"
|
||||||
/>
|
/>
|
||||||
<div className="absolute inset-x-0 top-0 h-20 bg-linear-to-b from-sidebar to-transparent" />
|
<div className="absolute inset-x-0 top-0 h-20 bg-linear-to-b from-sidebar to-transparent" />
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
import { Download } from "lucide-react";
|
import { Download } from "lucide-react";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { toast } from "sonner";
|
import { toast } from "sonner";
|
||||||
|
import type { SheetData } from "write-excel-file/browser";
|
||||||
|
|
||||||
import { Button } from "@/components/ui/button";
|
import { Button } from "@/components/ui/button";
|
||||||
|
|
||||||
@@ -59,15 +60,60 @@ function stripOmittedColumns(table: HTMLTableElement): HTMLTableElement {
|
|||||||
return clone;
|
return clone;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const FORMULA_PREFIX = /^[=+@-]/;
|
||||||
|
const NUMERIC_TEXT = /^[+-]?(?:\d+(?:\.\d*)?|\.\d+)$/;
|
||||||
|
|
||||||
|
function sanitizeExportText(rawValue: string): string {
|
||||||
|
const value = rawValue.trim();
|
||||||
|
if (FORMULA_PREFIX.test(value) && !NUMERIC_TEXT.test(value)) {
|
||||||
|
return `'${value}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
function tableToSheetData(table: HTMLTableElement): SheetData {
|
||||||
|
return Array.from(table.querySelectorAll("tr")).map((row, rowIndex) =>
|
||||||
|
Array.from(row.children).map((cell) => ({
|
||||||
|
type: String,
|
||||||
|
value: sanitizeExportText(cell.textContent ?? ""),
|
||||||
|
fontWeight: rowIndex === 0 ? "bold" : undefined,
|
||||||
|
wrap: true,
|
||||||
|
})),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function columnWidths(data: SheetData): Array<{ width: number }> {
|
||||||
|
const columnCount = Math.max(0, ...data.map((row) => row.length));
|
||||||
|
|
||||||
|
return Array.from({ length: columnCount }, (_, columnIndex) => {
|
||||||
|
const longest = data.reduce((max, row) => {
|
||||||
|
const cell = row[columnIndex];
|
||||||
|
const value = typeof cell === "object" && cell !== null && "value" in cell
|
||||||
|
? String(cell.value ?? "")
|
||||||
|
: String(cell ?? "");
|
||||||
|
|
||||||
|
return Math.max(max, Array.from(value).length);
|
||||||
|
}, 0);
|
||||||
|
|
||||||
|
return { width: Math.min(48, Math.max(10, longest + 2)) };
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
async function exportTableToWorkbook(table: HTMLTableElement, sheetName: string, filename: string): Promise<void> {
|
async function exportTableToWorkbook(table: HTMLTableElement, sheetName: string, filename: string): Promise<void> {
|
||||||
const XLSX = await import("xlsx");
|
const { default: writeXlsxFile } = await import("write-excel-file/browser");
|
||||||
const exportTable = stripOmittedColumns(table);
|
const exportTable = stripOmittedColumns(table);
|
||||||
const workbook = XLSX.utils.table_to_book(exportTable, {
|
const data = tableToSheetData(exportTable);
|
||||||
|
if (data.length === 0) {
|
||||||
|
throw new Error("export_table_empty");
|
||||||
|
}
|
||||||
|
|
||||||
|
const workbook = writeXlsxFile(data, {
|
||||||
sheet: sheetName,
|
sheet: sheetName,
|
||||||
raw: true,
|
columns: columnWidths(data),
|
||||||
});
|
});
|
||||||
const safeName = filename.endsWith(".xlsx") ? filename : `${filename}.xlsx`;
|
const safeName = filename.endsWith(".xlsx") ? filename : `${filename}.xlsx`;
|
||||||
XLSX.writeFile(workbook, safeName);
|
await workbook.toFile(safeName);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function AdminTableExportButton({
|
export function AdminTableExportButton({
|
||||||
|
|||||||
@@ -13,12 +13,17 @@ type ShellAuthGateProps = {
|
|||||||
|
|
||||||
type GateStatus = "pending" | "authed" | "guest";
|
type GateStatus = "pending" | "authed" | "guest";
|
||||||
|
|
||||||
|
const ADMIN_SESSION_CHECK_INTERVAL_MS = 30_000;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Shell 路由守卫:无有效 HttpOnly Cookie 会话或 `/auth/me` 校验失败时跳转登录页。
|
* Shell 路由守卫:无有效 HttpOnly Cookie 会话或 `/auth/me` 校验失败时跳转登录页。
|
||||||
*/
|
*/
|
||||||
export function ShellAuthGate({ children }: ShellAuthGateProps) {
|
export function ShellAuthGate({ children }: ShellAuthGateProps) {
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const bearerToken = useAdminSessionStore((s) => s.bearerToken);
|
const bearerToken = useAdminSessionStore((s) => s.bearerToken);
|
||||||
|
const refreshAdminProfile = useAdminSessionStore(
|
||||||
|
(s) => s.refreshAdminProfile,
|
||||||
|
);
|
||||||
const [status, setStatus] = useState<GateStatus>("pending");
|
const [status, setStatus] = useState<GateStatus>("pending");
|
||||||
|
|
||||||
const setShellAuthPending = useAdminSessionStore((s) => s.setShellAuthPending);
|
const setShellAuthPending = useAdminSessionStore((s) => s.setShellAuthPending);
|
||||||
@@ -63,6 +68,28 @@ export function ShellAuthGate({ children }: ShellAuthGateProps) {
|
|||||||
}
|
}
|
||||||
}, [status, router]);
|
}, [status, router]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (status !== "authed") {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const timer = window.setInterval(
|
||||||
|
() => void refreshAdminProfile(),
|
||||||
|
ADMIN_SESSION_CHECK_INTERVAL_MS,
|
||||||
|
);
|
||||||
|
const refreshWhenVisible = () => {
|
||||||
|
if (document.visibilityState === "visible") {
|
||||||
|
void refreshAdminProfile();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
document.addEventListener("visibilitychange", refreshWhenVisible);
|
||||||
|
|
||||||
|
return () => {
|
||||||
|
window.clearInterval(timer);
|
||||||
|
document.removeEventListener("visibilitychange", refreshWhenVisible);
|
||||||
|
};
|
||||||
|
}, [refreshAdminProfile, status]);
|
||||||
|
|
||||||
if (status === "pending") {
|
if (status === "pending") {
|
||||||
return <AdminAuthCheckingScreen variant="shell" />;
|
return <AdminAuthCheckingScreen variant="shell" />;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -76,6 +76,29 @@ export function LoginForm() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const currentUrl = new URL(window.location.href);
|
||||||
|
const sessionReason = currentUrl.searchParams.get("session");
|
||||||
|
if (sessionReason === "replaced") {
|
||||||
|
toast.error(
|
||||||
|
tRef.current("auth.sessionReplaced", {
|
||||||
|
ns: "common",
|
||||||
|
defaultValue:
|
||||||
|
"该账号已在其他地方登录,当前会话已退出,请重新登录",
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
} else if (sessionReason === "expired") {
|
||||||
|
toast.error(
|
||||||
|
tRef.current("auth.sessionExpired", {
|
||||||
|
ns: "common",
|
||||||
|
defaultValue: "登录已失效,请重新登录",
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (sessionReason) {
|
||||||
|
currentUrl.searchParams.delete("session");
|
||||||
|
window.history.replaceState(null, "", currentUrl);
|
||||||
|
}
|
||||||
|
|
||||||
setCheckingSession(false);
|
setCheckingSession(false);
|
||||||
void loadCaptcha();
|
void loadCaptcha();
|
||||||
}
|
}
|
||||||
@@ -85,7 +108,7 @@ export function LoginForm() {
|
|||||||
return () => {
|
return () => {
|
||||||
cancelled = true;
|
cancelled = true;
|
||||||
};
|
};
|
||||||
}, [loadCaptcha, router]);
|
}, [loadCaptcha, router, tRef]);
|
||||||
|
|
||||||
async function onSubmit(e: React.FormEvent<HTMLFormElement>) {
|
async function onSubmit(e: React.FormEvent<HTMLFormElement>) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|||||||
@@ -3,8 +3,8 @@
|
|||||||
import { useMemo } from "react";
|
import { useMemo } from "react";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
|
|
||||||
|
import { AdminFieldLabel } from "@/components/admin/admin-field-label";
|
||||||
import { AdminNumericStepper } from "@/components/admin/admin-numeric-stepper";
|
import { AdminNumericStepper } from "@/components/admin/admin-numeric-stepper";
|
||||||
import { Label } from "@/components/ui/label";
|
|
||||||
import { isNumericStepperOutOfRange } from "@/lib/agent-profile-caps";
|
import { isNumericStepperOutOfRange } from "@/lib/agent-profile-caps";
|
||||||
import { formatCredit } from "@/modules/agents/agent-line-sidebar";
|
import { formatCredit } from "@/modules/agents/agent-line-sidebar";
|
||||||
|
|
||||||
@@ -15,6 +15,8 @@ export type PlayerCreditLimitFieldProps = {
|
|||||||
parentAvailableCredit: number | null;
|
parentAvailableCredit: number | null;
|
||||||
/** 编辑已有玩家时传入当前授信,用于计算可上调上限 */
|
/** 编辑已有玩家时传入当前授信,用于计算可上调上限 */
|
||||||
baselineCreditLimit?: number;
|
baselineCreditLimit?: number;
|
||||||
|
helpText?: string;
|
||||||
|
helpAriaLabel?: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
export function PlayerCreditLimitField({
|
export function PlayerCreditLimitField({
|
||||||
@@ -23,6 +25,8 @@ export function PlayerCreditLimitField({
|
|||||||
onValueChange,
|
onValueChange,
|
||||||
parentAvailableCredit,
|
parentAvailableCredit,
|
||||||
baselineCreditLimit = 0,
|
baselineCreditLimit = 0,
|
||||||
|
helpText,
|
||||||
|
helpAriaLabel,
|
||||||
}: PlayerCreditLimitFieldProps): React.ReactElement {
|
}: PlayerCreditLimitFieldProps): React.ReactElement {
|
||||||
const { t } = useTranslation(["agents"]);
|
const { t } = useTranslation(["agents"]);
|
||||||
|
|
||||||
@@ -36,9 +40,14 @@ export function PlayerCreditLimitField({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="space-y-2">
|
<div className="space-y-2">
|
||||||
<Label htmlFor={id} className="text-muted-foreground">
|
<AdminFieldLabel
|
||||||
|
htmlFor={id}
|
||||||
|
className="text-muted-foreground"
|
||||||
|
helpText={helpText}
|
||||||
|
helpAriaLabel={helpAriaLabel}
|
||||||
|
>
|
||||||
{t("playersPanel.creditLimit", { defaultValue: "授信额度" })}
|
{t("playersPanel.creditLimit", { defaultValue: "授信额度" })}
|
||||||
</Label>
|
</AdminFieldLabel>
|
||||||
<AdminNumericStepper
|
<AdminNumericStepper
|
||||||
id={id}
|
id={id}
|
||||||
value={value}
|
value={value}
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
|
import { Loader2 } from "lucide-react";
|
||||||
import type { ReactNode } from "react";
|
import type { ReactNode } from "react";
|
||||||
import { useEffect } from "react";
|
import { useSyncExternalStore } from "react";
|
||||||
import i18n, { ensureAdminI18nReady, normalizeAdminLanguage } from "@/i18n";
|
import i18n, { ensureAdminI18nReady, normalizeAdminLanguage } from "@/i18n";
|
||||||
|
|
||||||
import { Toaster } from "@/components/ui/sonner";
|
import { Toaster } from "@/components/ui/sonner";
|
||||||
@@ -13,9 +14,15 @@ type ProvidersProps = {
|
|||||||
children: ReactNode;
|
children: ReactNode;
|
||||||
};
|
};
|
||||||
|
|
||||||
function AdminSessionHydrator() {
|
const startupListeners = new Set<() => void>();
|
||||||
useEffect(() => {
|
let startupReady = false;
|
||||||
void (async () => {
|
let startupPromise: Promise<void> | null = null;
|
||||||
|
|
||||||
|
function ensureAdminStartup(): void {
|
||||||
|
if (startupPromise) return;
|
||||||
|
|
||||||
|
startupPromise = (async () => {
|
||||||
|
try {
|
||||||
await ensureAdminI18nReady();
|
await ensureAdminI18nReady();
|
||||||
|
|
||||||
const locale = hydrateAdminUiLocale();
|
const locale = hydrateAdminUiLocale();
|
||||||
@@ -23,19 +30,56 @@ function AdminSessionHydrator() {
|
|||||||
if (locale && locale !== current) {
|
if (locale && locale !== current) {
|
||||||
await i18n.changeLanguage(locale);
|
await i18n.changeLanguage(locale);
|
||||||
}
|
}
|
||||||
|
} finally {
|
||||||
useAdminSessionStore.getState().rehydrate();
|
useAdminSessionStore.getState().rehydrate();
|
||||||
})();
|
}
|
||||||
}, []);
|
})()
|
||||||
|
.catch(() => undefined)
|
||||||
|
.then(() => {
|
||||||
|
startupReady = true;
|
||||||
|
startupListeners.forEach((listener) => listener());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
return null;
|
function subscribeAdminStartup(onStoreChange: () => void): () => void {
|
||||||
|
startupListeners.add(onStoreChange);
|
||||||
|
ensureAdminStartup();
|
||||||
|
return () => startupListeners.delete(onStoreChange);
|
||||||
|
}
|
||||||
|
|
||||||
|
function getAdminStartupSnapshot(): boolean {
|
||||||
|
return startupReady;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getAdminStartupServerSnapshot(): boolean {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function AdminStartupGate({ children }: { children: ReactNode }) {
|
||||||
|
const ready = useSyncExternalStore(
|
||||||
|
subscribeAdminStartup,
|
||||||
|
getAdminStartupSnapshot,
|
||||||
|
getAdminStartupServerSnapshot,
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!ready) {
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
className="flex min-h-dvh flex-1 items-center justify-center bg-background"
|
||||||
|
aria-hidden
|
||||||
|
>
|
||||||
|
<Loader2 className="size-8 animate-spin text-primary" />
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return children;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function Providers({ children }: ProvidersProps) {
|
export function Providers({ children }: ProvidersProps) {
|
||||||
return (
|
return (
|
||||||
<TooltipProvider>
|
<TooltipProvider>
|
||||||
<AdminSessionHydrator />
|
<AdminStartupGate>{children}</AdminStartupGate>
|
||||||
{children}
|
|
||||||
<Toaster />
|
<Toaster />
|
||||||
</TooltipProvider>
|
</TooltipProvider>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ function ScrollBar({
|
|||||||
>
|
>
|
||||||
<ScrollAreaPrimitive.Thumb
|
<ScrollAreaPrimitive.Thumb
|
||||||
data-slot="scroll-area-thumb"
|
data-slot="scroll-area-thumb"
|
||||||
className="relative flex-1 rounded-full bg-border"
|
className="relative flex-1 rounded-full bg-[var(--scrollbar-thumb)] transition-colors"
|
||||||
/>
|
/>
|
||||||
</ScrollAreaPrimitive.Scrollbar>
|
</ScrollAreaPrimitive.Scrollbar>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -14,13 +14,25 @@ export function useAsyncEffect(
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
let cleanup: void | (() => void);
|
let cleanup: void | (() => void);
|
||||||
|
let cancelled = false;
|
||||||
|
|
||||||
queueMicrotask(() => {
|
queueMicrotask(() => {
|
||||||
|
if (cancelled) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
void Promise.resolve(factoryRef.current()).then((result) => {
|
void Promise.resolve(factoryRef.current()).then((result) => {
|
||||||
|
if (cancelled) {
|
||||||
|
result?.();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
cleanup = result;
|
cleanup = result;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
|
cancelled = true;
|
||||||
cleanup?.();
|
cleanup?.();
|
||||||
};
|
};
|
||||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
|
|||||||
@@ -69,7 +69,6 @@ if (!i18n.isInitialized) {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
syncAdminLanguage(initialLanguage);
|
|
||||||
i18n.on("languageChanged", (lang) => {
|
i18n.on("languageChanged", (lang) => {
|
||||||
syncAdminLanguage(normalizeAdminLanguage(lang));
|
syncAdminLanguage(normalizeAdminLanguage(lang));
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
{
|
{
|
||||||
"accountDialog": {
|
"accountDialog": {
|
||||||
"createDescription": "Assign at least one default-site role. Login usernames may contain letters, numbers, dots, underscores, and hyphens only, and are stored in lowercase.",
|
"createDescription": "Assign at least one default-site role. Login usernames may contain letters, numbers, dots, underscores, and hyphens only, and are stored in lowercase.",
|
||||||
|
"createDescriptionPlatform": "Assign at least one platform role. Agent accounts can only be created or bound in Agent Management. Login usernames may contain letters, numbers, dots, underscores, and hyphens only, and are stored in lowercase.",
|
||||||
"createTitle": "Create admin",
|
"createTitle": "Create admin",
|
||||||
"editDescription": "Login username cannot be changed. Leave password empty to keep it unchanged.",
|
"editDescription": "Login username cannot be changed. Leave password empty to keep it unchanged.",
|
||||||
|
"editDescriptionPlatform": "This form only edits platform accounts. Agent accounts can only be created or bound in Agent Management. Login username cannot be changed; leave password empty to keep it unchanged.",
|
||||||
"editTitle": "Edit account",
|
"editTitle": "Edit account",
|
||||||
"emailOptional": "Email (optional)",
|
"emailOptional": "Email (optional)",
|
||||||
"emailPlaceholder": "Leave empty if not needed",
|
"emailPlaceholder": "Leave empty if not needed",
|
||||||
@@ -14,6 +16,7 @@
|
|||||||
"passwordPlaceholderCreate": "at least 6 characters",
|
"passwordPlaceholderCreate": "at least 6 characters",
|
||||||
"passwordPlaceholderEdit": "Leave empty to keep unchanged",
|
"passwordPlaceholderEdit": "Leave empty to keep unchanged",
|
||||||
"rolesDescription": "After creation, adjust per-site role bindings in Assign Roles.",
|
"rolesDescription": "After creation, adjust per-site role bindings in Assign Roles.",
|
||||||
|
"rolesDescriptionPlatform": "Only platform roles can be selected here. Create or bind agent accounts in Agent Management.",
|
||||||
"rolesRequired": "Roles (at least one)",
|
"rolesRequired": "Roles (at least one)",
|
||||||
"site": "Bound site",
|
"site": "Bound site",
|
||||||
"sitePlaceholder": "Select which site this account can access",
|
"sitePlaceholder": "Select which site this account can access",
|
||||||
@@ -203,7 +206,9 @@
|
|||||||
"slug": "Role Code",
|
"slug": "Role Code",
|
||||||
"status": "Status",
|
"status": "Status",
|
||||||
"type": "Type",
|
"type": "Type",
|
||||||
"users": "Users"
|
"users": "Linked accounts",
|
||||||
|
"platformUsers": "Platform {{count}}",
|
||||||
|
"agentUsers": "Agent {{count}}"
|
||||||
},
|
},
|
||||||
"roleType": {
|
"roleType": {
|
||||||
"custom": "Custom",
|
"custom": "Custom",
|
||||||
@@ -217,6 +222,10 @@
|
|||||||
"saveRoleSuccess": "Updated roles for {{name}}",
|
"saveRoleSuccess": "Updated roles for {{name}}",
|
||||||
"saving": "Saving…",
|
"saving": "Saving…",
|
||||||
"searchPlaceholder": "Search by username / nickname / email",
|
"searchPlaceholder": "Search by username / nickname / email",
|
||||||
|
"roleFilter": {
|
||||||
|
"active": "Filtering platform accounts by role “{{role}}”",
|
||||||
|
"clear": "Clear role filter"
|
||||||
|
},
|
||||||
"siteRequired": "Select a site",
|
"siteRequired": "Select a site",
|
||||||
"status": {
|
"status": {
|
||||||
"disabled": "Disabled",
|
"disabled": "Disabled",
|
||||||
|
|||||||
@@ -183,6 +183,7 @@
|
|||||||
"draws": "Draws",
|
"draws": "Draws",
|
||||||
"rules_plays": "Play rules",
|
"rules_plays": "Play rules",
|
||||||
"rules_odds": "Odds & rebate",
|
"rules_odds": "Odds & rebate",
|
||||||
|
"bet_providers": "Bet providers",
|
||||||
"rules": "Betting rules",
|
"rules": "Betting rules",
|
||||||
"risk_cap": "Risk cap rules",
|
"risk_cap": "Risk cap rules",
|
||||||
"risk": "Risk center",
|
"risk": "Risk center",
|
||||||
@@ -212,7 +213,8 @@
|
|||||||
"auth": {
|
"auth": {
|
||||||
"checking": "Checking sign-in status…",
|
"checking": "Checking sign-in status…",
|
||||||
"checkingShort": "Loading workspace…",
|
"checkingShort": "Loading workspace…",
|
||||||
"sessionExpired": "Your session has expired. Please sign in again."
|
"sessionExpired": "Your session has expired. Please sign in again.",
|
||||||
|
"sessionReplaced": "This account was signed in elsewhere. Please sign in again."
|
||||||
},
|
},
|
||||||
"confirm": {
|
"confirm": {
|
||||||
"cancel": "Cancel",
|
"cancel": "Cancel",
|
||||||
|
|||||||
@@ -282,6 +282,28 @@
|
|||||||
},
|
},
|
||||||
"tabs": {
|
"tabs": {
|
||||||
"all": "All"
|
"all": "All"
|
||||||
|
},
|
||||||
|
"help": {
|
||||||
|
"openGuide": "Page guide",
|
||||||
|
"guideTitle": "Odds and base rebate guide",
|
||||||
|
"guideDescription": "This page controls standard payout multipliers and the platform base rebate. It does not control jackpot bonus payouts or whether a play is available for sale.",
|
||||||
|
"aria": "View help for {{field}}",
|
||||||
|
"fields": {
|
||||||
|
"provider": "Selects the provider scope. GLOBAL is the default; a provider-specific value overrides it, while providers without an override inherit GLOBAL.",
|
||||||
|
"category": "Filters the list to 4D, 3D, 2D, and other groups. Changing this filter does not change any configuration.",
|
||||||
|
"playType": "Selects the exact play whose prize-tier odds and base rebate you are viewing or editing.",
|
||||||
|
"multiplier": "The standard winning payout multiplier. It is roughly the valid winning amount multiplied by this value, subject to the system's amount rounding rules.",
|
||||||
|
"scopeMultiplier": "Controls the standard payout multiplier when the {{scope}} tier wins. It is not the jackpot burst payout rate.",
|
||||||
|
"rebateRate": "The platform base rebate rate. Player or agent additions are configured elsewhere, and actual deduction and settlement also follow the account mode."
|
||||||
|
},
|
||||||
|
"guide": {
|
||||||
|
"scopeTitle": "Choose the correct scope",
|
||||||
|
"scopeDescription": "Choose the provider, category, and play first. Category is only a filter; provider and play identify the odds set being viewed or edited.",
|
||||||
|
"settingsTitle": "What odds and rebate control",
|
||||||
|
"settingsDescription": "Prize-tier multipliers control standard winning payouts, while base rebate controls the platform's base betting discount. Neither is the jackpot bonus payout.",
|
||||||
|
"workflowTitle": "When changes take effect",
|
||||||
|
"workflowDescription": "Odds use a versioned workflow: create a draft, edit and save it, then publish. Saving alone does not affect players. New tickets use the published values, while existing tickets keep their saved odds and rebate snapshots."
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"play": {
|
"play": {
|
||||||
@@ -303,7 +325,7 @@
|
|||||||
"d2": "2D Global",
|
"d2": "2D Global",
|
||||||
"d3": "3D Global",
|
"d3": "3D Global",
|
||||||
"d4": "4D Global",
|
"d4": "4D Global",
|
||||||
"jackpot": "Jackpot",
|
"attribute": "Attribute Plays",
|
||||||
"position": "Position Plays"
|
"position": "Position Plays"
|
||||||
},
|
},
|
||||||
"batchPartialEnabled": "{{enabledCount}}/{{total}} enabled (not all on — turn on to enable all)",
|
"batchPartialEnabled": "{{enabledCount}}/{{total}} enabled (not all on — turn on to enable all)",
|
||||||
@@ -312,6 +334,7 @@
|
|||||||
"batchSwitchDisable": "Disable",
|
"batchSwitchDisable": "Disable",
|
||||||
"batchSwitchEnable": "Enable",
|
"batchSwitchEnable": "Enable",
|
||||||
"batchSwitchesDesc": "Only updates the current draft. The player betting table refreshes after save and publish.",
|
"batchSwitchesDesc": "Only updates the current draft. The player betting table refreshes after save and publish.",
|
||||||
|
"batchSwitchSavedLocal": "The batch switch was written to the current draft. Save and publish the draft to apply it.",
|
||||||
"batchSwitchesTitle": "Batch switches",
|
"batchSwitchesTitle": "Batch switches",
|
||||||
"categories": {
|
"categories": {
|
||||||
"attribute": "Attribute",
|
"attribute": "Attribute",
|
||||||
@@ -388,6 +411,29 @@
|
|||||||
"toggleDisable": "Disable",
|
"toggleDisable": "Disable",
|
||||||
"toggleEnable": "Enable",
|
"toggleEnable": "Enable",
|
||||||
"toggleInstantFailed": "Failed to apply play switch. Try again later.",
|
"toggleInstantFailed": "Failed to apply play switch. Try again later.",
|
||||||
|
"help": {
|
||||||
|
"openGuide": "Page guide",
|
||||||
|
"guideTitle": "Play rules guide",
|
||||||
|
"guideDescription": "This page controls whether a play can be sold, the player-facing name and order, and the amount allowed on each betting line. It does not control odds or jackpot eligibility.",
|
||||||
|
"aria": "View help for {{field}}",
|
||||||
|
"fields": {
|
||||||
|
"status": "After publishing, this controls whether players can buy the play. Disabling it hides or blocks the play and rejects new bets; historical tickets are unchanged.",
|
||||||
|
"displayName": "The player-facing play name. Changes stay in the current draft until it is saved and published.",
|
||||||
|
"order": "Controls the order in player-facing lists. Lower numbers usually appear first, although fixed betting grids may keep their own layout.",
|
||||||
|
"minBet": "The minimum amount allowed for one submitted betting line. New bets below it are rejected.",
|
||||||
|
"maxBet": "The maximum amount allowed for one submitted betting line. Expanded combination bets are recalculated from their actual resulting lines.",
|
||||||
|
"batchSwitches": "Enables or disables a group of plays at once. It only changes the current draft and still requires save and publish.",
|
||||||
|
"batchGroup": "Sets all {{count}} plays in “{{group}}” to the same state in the current draft only."
|
||||||
|
},
|
||||||
|
"guide": {
|
||||||
|
"settingsTitle": "What each setting controls",
|
||||||
|
"settingsDescription": "Status controls availability; display name and order control what players see; minimum and maximum bet define the amount accepted per betting line.",
|
||||||
|
"batchTitle": "Using batch switches",
|
||||||
|
"batchDescription": "Batch switches update many draft rows at once. They do not bypass the save and publish workflow.",
|
||||||
|
"workflowTitle": "When changes take effect",
|
||||||
|
"workflowDescription": "The active version is read-only. Create a draft, edit and save it, then publish. Saving alone does not affect players; publishing affects new bets, while historical tickets keep their saved rule snapshot."
|
||||||
|
}
|
||||||
|
},
|
||||||
"validation": {
|
"validation": {
|
||||||
"displayNameRequired": "Display name is required",
|
"displayNameRequired": "Display name is required",
|
||||||
"minMaxInvalid": "{{playCode}}: min bet cannot exceed max bet"
|
"minMaxInvalid": "{{playCode}}: min bet cannot exceed max bet"
|
||||||
@@ -581,7 +627,7 @@
|
|||||||
"autoApprove": "After cooldown ends and settlement completes, whether batches are automatically marked as approved.",
|
"autoApprove": "After cooldown ends and settlement completes, whether batches are automatically marked as approved.",
|
||||||
"autoPayout": "After a batch is approved, whether tick automatically credits winnings to player wallets.",
|
"autoPayout": "After a batch is approved, whether tick automatically credits winnings to player wallets.",
|
||||||
"autoSettlement": "When disabled, tick will not run settlement automatically and admins must trigger it manually.",
|
"autoSettlement": "When disabled, tick will not run settlement automatically and admins must trigger it manually.",
|
||||||
"cooldownMinutes": "How long to wait after publishing before entering settling. Use 0 to settle immediately.",
|
"cooldownMinutes": "How long to wait after publishing before settlement. Use 0 to settle immediately. Changes apply only to results published afterward; draws already in cooldown are not recalculated.",
|
||||||
"manualReview": "When enabled, RNG draw results enter pending review and must be published manually in admin."
|
"manualReview": "When enabled, RNG draw results enter pending review and must be published manually in admin."
|
||||||
},
|
},
|
||||||
"loadFailed": "Failed to load system settings",
|
"loadFailed": "Failed to load system settings",
|
||||||
|
|||||||
@@ -78,6 +78,8 @@
|
|||||||
"sequenceNo": "Sequence no.",
|
"sequenceNo": "Sequence no.",
|
||||||
"plannedDraw": "Planned draw",
|
"plannedDraw": "Planned draw",
|
||||||
"coolingEndTime": "Cooling ends at",
|
"coolingEndTime": "Cooling ends at",
|
||||||
|
"automaticSettlementAt": "Automatic settlement: {{time}}",
|
||||||
|
"cooldownRemaining": "Remaining {{time}}",
|
||||||
"resultSource": "Result source",
|
"resultSource": "Result source",
|
||||||
"resultSourceOptions": {
|
"resultSourceOptions": {
|
||||||
"rng": "RNG auto-generated",
|
"rng": "RNG auto-generated",
|
||||||
@@ -92,6 +94,7 @@
|
|||||||
"published": "Published"
|
"published": "Published"
|
||||||
},
|
},
|
||||||
"currentResultVersion": "Current result version",
|
"currentResultVersion": "Current result version",
|
||||||
|
"resultVersion": "Result version",
|
||||||
"settleVersion": "Settlement version",
|
"settleVersion": "Settlement version",
|
||||||
"isReopened": "Reopened",
|
"isReopened": "Reopened",
|
||||||
"yes": "Yes",
|
"yes": "Yes",
|
||||||
@@ -109,8 +112,15 @@
|
|||||||
"rngDraw": "RNG draw",
|
"rngDraw": "RNG draw",
|
||||||
"rngAutoGenerate": "Auto draw",
|
"rngAutoGenerate": "Auto draw",
|
||||||
"reopen": "Reopen",
|
"reopen": "Reopen",
|
||||||
"cooldownReopen": "Reopen in cooldown",
|
"cooldownReopen": "Withdraw result and reopen",
|
||||||
|
"reopenUsageHint": "Use this only when published numbers are wrong. It requires generating and publishing a new result and does not speed up settlement.",
|
||||||
"runSettlement": "Run settlement",
|
"runSettlement": "Run settlement",
|
||||||
|
"settleEarly": "Settle early",
|
||||||
|
"retrySettlement": "Retry settlement",
|
||||||
|
"settleEarlySuccess": "Remaining confirmation window skipped; settlement started",
|
||||||
|
"retrySettlementSuccess": "Settlement retry started",
|
||||||
|
"settlementManagePermissionRequired": "Only payout managers may start or retry settlement.",
|
||||||
|
"settlementUnavailable": "No manual settlement action is needed while the draw is {{status}}.",
|
||||||
"processing": "Processing…",
|
"processing": "Processing…",
|
||||||
"actionSuccess": "{{name}} succeeded",
|
"actionSuccess": "{{name}} succeeded",
|
||||||
"actionFailed": "{{name}} failed",
|
"actionFailed": "{{name}} failed",
|
||||||
@@ -121,7 +131,8 @@
|
|||||||
"currentPayout": "Current payout total",
|
"currentPayout": "Current payout total",
|
||||||
"grossProfit": "Approx. gross profit",
|
"grossProfit": "Approx. gross profit",
|
||||||
"settlementBatchList": "Settlement records",
|
"settlementBatchList": "Settlement records",
|
||||||
"relatedSettlementBatches": "Settlement batches",
|
"relatedSettlementBatches": "Settlement processing records for this draw",
|
||||||
|
"settlementBatchesHint": "A record is normally created for each provider that has bets in this draw. Select a batch number to view its ticket details.",
|
||||||
"noSettlementBatches": "No settlement batch records.",
|
"noSettlementBatches": "No settlement batch records.",
|
||||||
"ticketCount": "Tickets",
|
"ticketCount": "Tickets",
|
||||||
"winCount": "Wins",
|
"winCount": "Wins",
|
||||||
@@ -153,7 +164,7 @@
|
|||||||
"clear": "Clear",
|
"clear": "Clear",
|
||||||
"saveDraft": "Save draft",
|
"saveDraft": "Save draft",
|
||||||
"saving": "Saving…",
|
"saving": "Saving…",
|
||||||
"pendingBatches": "Pending publish",
|
"pendingBatches": "Results awaiting review (not visible to players)",
|
||||||
"noPendingBatches": "None",
|
"noPendingBatches": "None",
|
||||||
"batchId": "Batch",
|
"batchId": "Batch",
|
||||||
"numberCount": "Numbers",
|
"numberCount": "Numbers",
|
||||||
@@ -173,6 +184,8 @@
|
|||||||
"checkBeforePublish": "Please review the numbers below before publishing",
|
"checkBeforePublish": "Please review the numbers below before publishing",
|
||||||
"checkBeforePublishDesc": "Confirm the numbers are correct and click Publish.",
|
"checkBeforePublishDesc": "Confirm the numbers are correct and click Publish.",
|
||||||
"publishedView": "View published result",
|
"publishedView": "View published result",
|
||||||
|
"officialResultsTitle": "Official results (visible to players)",
|
||||||
|
"officialResultsHint": "Only published, player-visible numbers appear here. Review drafts are kept separate.",
|
||||||
"confirmPublish": "Confirm publish",
|
"confirmPublish": "Confirm publish",
|
||||||
"submitting": "Submitting…",
|
"submitting": "Submitting…",
|
||||||
"publishSuccess": "Published · {{drawNo}} · status {{status}}",
|
"publishSuccess": "Published · {{drawNo}} · status {{status}}",
|
||||||
@@ -181,13 +194,27 @@
|
|||||||
"subnav": {
|
"subnav": {
|
||||||
"status": "Overview",
|
"status": "Overview",
|
||||||
"results": "Results",
|
"results": "Results",
|
||||||
"finance": "Finance",
|
"tickets": "Bets",
|
||||||
|
"finance": "Finance & settlement",
|
||||||
"review": "Publish",
|
"review": "Publish",
|
||||||
"riskOccupancy": "Risk occupancy",
|
"riskOccupancy": "Risk occupancy",
|
||||||
"riskLockLogs": "Lock logs",
|
"riskLockLogs": "Lock logs",
|
||||||
"riskHot": "Hot numbers",
|
"riskHot": "Hot numbers",
|
||||||
"riskSoldOut": "Sold-out numbers",
|
"riskSoldOut": "Sold-out numbers",
|
||||||
"riskPools": "Risk pools"
|
"riskPools": "Number limits"
|
||||||
|
},
|
||||||
|
"lifecycle": {
|
||||||
|
"currentStage": "Current stage: {{status}}",
|
||||||
|
"pending": "Betting has not opened for this draw.",
|
||||||
|
"open": "Players may place bets until the close time.",
|
||||||
|
"closing": "Betting is closed and the draw is waiting for its scheduled result time.",
|
||||||
|
"closed": "The draw is closed and waiting for result generation or entry.",
|
||||||
|
"drawing": "The system is generating the result.",
|
||||||
|
"review": "The result is under review and is not yet visible to players.",
|
||||||
|
"cooldown": "The result is published and in its verification window. It will settle automatically or a payout manager may settle early.",
|
||||||
|
"settling": "Settlement records are being processed. This page refreshes every 5 seconds.",
|
||||||
|
"settled": "Settlement and payout processing is complete.",
|
||||||
|
"cancelled": "This draw was cancelled and will not proceed to result or settlement."
|
||||||
},
|
},
|
||||||
"statusOptions": {
|
"statusOptions": {
|
||||||
"all": "All",
|
"all": "All",
|
||||||
@@ -216,10 +243,14 @@
|
|||||||
"cancelDrawDescription": "This draw will not be drawn. Ensure there is no outstanding bet risk.",
|
"cancelDrawDescription": "This draw will not be drawn. Ensure there is no outstanding bet risk.",
|
||||||
"rngDrawTitle": "Confirm RNG draw?",
|
"rngDrawTitle": "Confirm RNG draw?",
|
||||||
"rngDrawDescription": "The system will generate draw numbers and continue the pipeline.",
|
"rngDrawDescription": "The system will generate draw numbers and continue the pipeline.",
|
||||||
"reopenTitle": "Confirm cooldown reopen?",
|
"reopenTitle": "Withdraw the result and reopen?",
|
||||||
"reopenDescription": "Results may need re-review; displayed numbers may change.",
|
"reopenDescription": "Use only when published numbers are wrong. The draw returns to closed and a new result must be generated, reviewed, and published. This does not speed up settlement.",
|
||||||
"runSettlementTitle": "Confirm run settlement?",
|
"runSettlementTitle": "Confirm run settlement?",
|
||||||
"runSettlementDescription": "A settlement batch will be created from the published result.",
|
"runSettlementDescription": "A settlement batch will be created from the published result.",
|
||||||
|
"settleEarlyTitle": "Settle this draw early?",
|
||||||
|
"settleEarlyDescription": "This skips the remaining result verification window, creates settlement records immediately, and continues automatic review and payout. Confirm the official result first.",
|
||||||
|
"retrySettlementTitle": "Retry settlement?",
|
||||||
|
"retrySettlementDescription": "This safely retries settlement without duplicating an existing valid batch.",
|
||||||
"saveManualDraftTitle": "Confirm save manual draft?",
|
"saveManualDraftTitle": "Confirm save manual draft?",
|
||||||
"saveManualDraftDescription": "23 numbers will be saved for review.",
|
"saveManualDraftDescription": "23 numbers will be saved for review.",
|
||||||
"publishTitle": "Confirm publish results?",
|
"publishTitle": "Confirm publish results?",
|
||||||
|
|||||||
@@ -92,5 +92,35 @@
|
|||||||
"play_combo": "Triggered by play combo",
|
"play_combo": "Triggered by play combo",
|
||||||
"threshold": "Threshold reached"
|
"threshold": "Threshold reached"
|
||||||
},
|
},
|
||||||
"winnerCount": "Winner count"
|
"winnerCount": "Winner count",
|
||||||
|
"help": {
|
||||||
|
"openGuide": "Page guide",
|
||||||
|
"guideTitle": "Jackpot page guide",
|
||||||
|
"guideDescription": "The jackpot is an extra reward pool separate from ordinary odds payouts. This page controls how each currency pool grows, when it is released, and where its records are reviewed.",
|
||||||
|
"aria": "View help for {{field}}",
|
||||||
|
"fields": {
|
||||||
|
"currentAmount": "The available balance currently accumulated for this currency. Save cannot edit it directly; qualifying contributions, jackpot payouts, or audited balance adjustments change it.",
|
||||||
|
"status": "Controls whether this currency pool participates in future activity. When disabled, new tickets do not contribute and automatic or manual bursts cannot run; the existing balance remains.",
|
||||||
|
"contributionRate": "After a successful ticket meets the jackpot minimum, its nominal bet amount is multiplied by this percentage and recorded into the pool. It is internal allocation, not an extra player charge.",
|
||||||
|
"minBetAmount": "Only decides whether a successful ticket contributes to the jackpot. It does not decide whether the play may be purchased; play betting limits are configured on Betting rules.",
|
||||||
|
"triggerThreshold": "Once the pool reaches this amount, a draw with at least one first-prize winning ticket may burst by threshold. Reaching the amount alone does not pay out without a first-prize winner.",
|
||||||
|
"payoutRate": "The percentage of the pre-burst balance released for threshold, combo-play, or manual bursts. A forced-gap burst releases the full pool instead.",
|
||||||
|
"forceTriggerGap": "After this many settled draws since the last burst, the next draw with a first-prize winner may force a burst. Set to 0 to disable this condition.",
|
||||||
|
"comboTriggerPlays": "A first-prize win on any selected play may trigger a burst before the balance reaches the threshold. This controls the trigger, not which first-prize winners share the payout.",
|
||||||
|
"balanceAdjustment": "Manually increases or decreases the current pool balance. A reason is required, every operation is logged, and a decrease cannot make the balance negative.",
|
||||||
|
"adjustmentDirection": "Choose whether this manual operation adds to or subtracts from the pool balance.",
|
||||||
|
"adjustmentAmount": "The amount to add or subtract in major currency units, not the desired balance after adjustment.",
|
||||||
|
"adjustmentReason": "Explains why the balance is being changed. At least 3 characters are required for audit and reconciliation.",
|
||||||
|
"manualBurst": "Super admin only. Select a draw with published results, a settlement batch, and first-prize winners to release the pool using the current payout rate.",
|
||||||
|
"records": "Review read-only jackpot payout and per-ticket contribution records, filterable by draw number and exportable."
|
||||||
|
},
|
||||||
|
"guide": {
|
||||||
|
"settingsTitle": "How the pool grows and triggers",
|
||||||
|
"settingsDescription": "Successful tickets first add to the pool when eligible. During settlement, at least one first-prize winner must exist before threshold, forced-gap, or combo-play conditions are checked.",
|
||||||
|
"actionsTitle": "Manual operations and records",
|
||||||
|
"actionsDescription": "Balance adjustments and manual bursts change real pool funds immediately. Verify currency, amount, draw, and reason first.",
|
||||||
|
"effectiveTitle": "When changes take effect",
|
||||||
|
"effectiveDescription": "Jackpot settings have no draft-and-publish workflow. Save applies them immediately to later contributions and unfinished jackpot settlement. A draw already sold but not yet settled may use the new trigger settings and payout rate."
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,10 +30,39 @@
|
|||||||
"createUsernameRequired": "Enter login username",
|
"createUsernameRequired": "Enter login username",
|
||||||
"createSitePlayerIdOptional": "Optional; auto-generated if empty",
|
"createSitePlayerIdOptional": "Optional; auto-generated if empty",
|
||||||
"createSuccessNative": "Player {{name}} created — sign in on the lottery site",
|
"createSuccessNative": "Player {{name}} created — sign in on the lottery site",
|
||||||
|
"fieldHelpAria": "View help for {{field}}",
|
||||||
|
"helpFundingWallet": "The player enters through main-site SSO and bets with funds transferred into the lottery wallet. The player ID must exactly match the main site.",
|
||||||
|
"helpFundingCredit": "The player signs in directly with lottery credentials and bets against credit granted by the assigned agent instead of a main-site wallet.",
|
||||||
|
"helpSiteCode": "The integration site code for this player. It determines SSO, wallet APIs, data scope, and available agents. It is a code, not necessarily a number.",
|
||||||
|
"helpAgentNode": "Assigns the player to an agent line for access and reporting. For credit players it also controls grantable credit and settlement. Choose the site root if there is no agent split.",
|
||||||
|
"helpSitePlayerIdWallet": "The permanent unique identifier supplied by the main site. Wallet players require it, and it must exactly match the value sent by main-site SSO.",
|
||||||
|
"helpSitePlayerIdCredit": "The player's internal lottery identifier. Credit players may leave it empty and the system will generate one on save.",
|
||||||
|
"helpUsernameWallet": "Wallet players sign in through main-site SSO. This is optional profile data and is not a lottery login account.",
|
||||||
|
"helpUsernameCredit": "The account a credit player uses to sign in on the lottery site. It must be unique within the site.",
|
||||||
|
"helpPassword": "The credit player's initial lottery password. It must contain at least 6 characters; wallet players do not need one.",
|
||||||
|
"helpCreditLimit": "The maximum credit the agent lets this player use. Bets consume the limit, which cannot exceed the assigned agent's currently grantable credit.",
|
||||||
|
"helpNickname": "A display name used in the admin and player interfaces. It is not used for login or identity matching and may be left empty.",
|
||||||
|
"helpDefaultCurrency": "The currency used for this player's wallet, credit, and bets. Changing it does not convert any existing amounts.",
|
||||||
|
"helpStatus": "Normal players can sign in and bet. Frozen and banned players are both blocked from normal access.",
|
||||||
"editCreditLimit": "Credit limit",
|
"editCreditLimit": "Credit limit",
|
||||||
"editDetailLoading": "Loading player details…",
|
"editDetailLoading": "Loading player details…",
|
||||||
"usernameInvalidCharset": "Username may only contain letters, digits, dots, underscores, and hyphens",
|
"usernameInvalidCharset": "Username may only contain letters, digits, dots, underscores, and hyphens",
|
||||||
"passwordMinLength": "Initial password must be at least 6 characters",
|
"passwordMinLength": "Initial password must be at least 6 characters",
|
||||||
|
"resetPassword": "Reset login password",
|
||||||
|
"resetPasswordTitle": "Reset player login password",
|
||||||
|
"resetPasswordDescription": "Set a new lottery login password for player {{name}}.",
|
||||||
|
"resetPasswordNew": "New password",
|
||||||
|
"resetPasswordConfirm": "Confirm new password",
|
||||||
|
"resetPasswordPlaceholder": "At least 6 characters",
|
||||||
|
"resetPasswordConfirmPlaceholder": "Enter the new password again",
|
||||||
|
"resetPasswordSessionNotice": "After saving, all current lottery sessions for this player will expire immediately. The player must sign in again with the new password.",
|
||||||
|
"resetPasswordRequired": "Enter a new password",
|
||||||
|
"resetPasswordMinLength": "The new password must be at least 6 characters",
|
||||||
|
"resetPasswordMismatch": "The new passwords do not match",
|
||||||
|
"resetPasswordSubmit": "Reset password",
|
||||||
|
"resetPasswordSaving": "Resetting…",
|
||||||
|
"resetPasswordSuccess": "Login password reset for player {{name}}",
|
||||||
|
"resetPasswordFailed": "Failed to reset password",
|
||||||
"creditLimitInvalid": "Credit limit must be a non-negative integer",
|
"creditLimitInvalid": "Credit limit must be a non-negative integer",
|
||||||
"creditCapLoading": "Agent grantable credit is still loading — try again shortly",
|
"creditCapLoading": "Agent grantable credit is still loading — try again shortly",
|
||||||
"creditLimitExceeded": "Credit limit cannot exceed the agent's grantable amount",
|
"creditLimitExceeded": "Credit limit cannot exceed the agent's grantable amount",
|
||||||
|
|||||||
@@ -14,7 +14,9 @@
|
|||||||
"poolsTitle": "Risk pools",
|
"poolsTitle": "Risk pools",
|
||||||
"hotPageTitle": "Hot numbers monitor",
|
"hotPageTitle": "Hot numbers monitor",
|
||||||
"soldOutPageTitle": "Sold-out numbers",
|
"soldOutPageTitle": "Sold-out numbers",
|
||||||
"allPoolsPageTitle": "All risk pools",
|
"allPoolsPageTitle": "Number payout limits (risk pool)",
|
||||||
|
"poolExplanationTitle": "This page shows how much potential payout each number can still accept",
|
||||||
|
"poolExplanation": "Each provider and four-digit number has a maximum potential payout limit. Bets reserve capacity using their worst-case payout. The number is sold out when capacity is insufficient and capacity is released after settlement or refund. These amounts are risk reserves, not actual payouts.",
|
||||||
"sourceReasonOptions": {
|
"sourceReasonOptions": {
|
||||||
"ticket_place": "Bet placement",
|
"ticket_place": "Bet placement",
|
||||||
"ticket_rollback": "Ticket rollback",
|
"ticket_rollback": "Ticket rollback",
|
||||||
@@ -36,10 +38,13 @@
|
|||||||
"sortRemainingAsc": "Remaining ↑",
|
"sortRemainingAsc": "Remaining ↑",
|
||||||
"sortNumberAsc": "Number ↑",
|
"sortNumberAsc": "Number ↑",
|
||||||
"loadPoolsFailed": "Failed to load risk pools",
|
"loadPoolsFailed": "Failed to load risk pools",
|
||||||
"capAmount": "Cap",
|
"capAmount": "Maximum payout limit",
|
||||||
"lockedAmount": "Locked",
|
"lockedAmount": "Reserved by current bets",
|
||||||
"remainingAmount": "Remaining",
|
"remainingAmount": "Remaining payout capacity",
|
||||||
"usageRatio": "Usage",
|
"usageRatio": "Usage ratio",
|
||||||
|
"emptyPools": "No number-limit records match this filter. Numbers with no reserved bet exposure are normally omitted.",
|
||||||
|
"emptyHighRiskPools": "No number currently has a usage ratio of 80% or more.",
|
||||||
|
"emptySoldOutPools": "No number is currently sold out because of insufficient capacity or manual closure.",
|
||||||
"poolStatus": "Status",
|
"poolStatus": "Status",
|
||||||
"soldOut": "Sold out",
|
"soldOut": "Sold out",
|
||||||
"warning": "Warning",
|
"warning": "Warning",
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
{
|
{
|
||||||
"accountDialog": {
|
"accountDialog": {
|
||||||
"createDescription": "कम्तीमा एउटा पूर्वनिर्धारित साइट भूमिका तोक्नुपर्छ। लगइन नाममा अक्षर, अंक, डट, अन्डरस्कोर र हाइफन मात्र प्रयोग गर्न सकिन्छ र सेभ भएपछि साना अक्षरमा राखिन्छ।",
|
"createDescription": "कम्तीमा एउटा पूर्वनिर्धारित साइट भूमिका तोक्नुपर्छ। लगइन नाममा अक्षर, अंक, डट, अन्डरस्कोर र हाइफन मात्र प्रयोग गर्न सकिन्छ र सेभ भएपछि साना अक्षरमा राखिन्छ।",
|
||||||
|
"createDescriptionPlatform": "प्लेटफर्म खाताका लागि कम्तीमा एउटा प्लेटफर्म भूमिका छान्नुहोस्। एजेन्ट खाता एजेन्ट व्यवस्थापनमा मात्र सिर्जना वा बाँध्न सकिन्छ।",
|
||||||
"createTitle": "प्रशासक सिर्जना",
|
"createTitle": "प्रशासक सिर्जना",
|
||||||
"editDescription": "लगइन नाम परिवर्तन गर्न मिल्दैन। पासवर्ड खाली छोडेमा परिवर्तन हुँदैन।",
|
"editDescription": "लगइन नाम परिवर्तन गर्न मिल्दैन। पासवर्ड खाली छोडेमा परिवर्तन हुँदैन।",
|
||||||
|
"editDescriptionPlatform": "यहाँ प्लेटफर्म खाता मात्र सम्पादन हुन्छ। एजेन्ट खाता एजेन्ट व्यवस्थापनमा मात्र सिर्जना वा बाँध्न सकिन्छ।",
|
||||||
"editTitle": "खाता सम्पादन",
|
"editTitle": "खाता सम्पादन",
|
||||||
"emailOptional": "इमेल (वैकल्पिक)",
|
"emailOptional": "इमेल (वैकल्पिक)",
|
||||||
"emailPlaceholder": "नचाहिए खाली छोड्नुहोस्",
|
"emailPlaceholder": "नचाहिए खाली छोड्नुहोस्",
|
||||||
@@ -14,6 +16,7 @@
|
|||||||
"passwordPlaceholderCreate": "कम्तीमा 6 वर्ण",
|
"passwordPlaceholderCreate": "कम्तीमा 6 वर्ण",
|
||||||
"passwordPlaceholderEdit": "परिवर्तन नगर्न खाली छोड्नुहोस्",
|
"passwordPlaceholderEdit": "परिवर्तन नगर्न खाली छोड्नुहोस्",
|
||||||
"rolesDescription": "सिर्जना भएपछि \"भूमिका तोक्नुहोस्\" मा गएर भूमिका बाइन्डिङ थप समायोजन गर्न सकिन्छ।",
|
"rolesDescription": "सिर्जना भएपछि \"भूमिका तोक्नुहोस्\" मा गएर भूमिका बाइन्डिङ थप समायोजन गर्न सकिन्छ।",
|
||||||
|
"rolesDescriptionPlatform": "यहाँ प्लेटफर्म भूमिका मात्र छान्न सकिन्छ। एजेन्ट खाता एजेन्ट व्यवस्थापनमा सिर्जना वा बाँध्नुहोस्।",
|
||||||
"rolesRequired": "भूमिका (पूर्वनिर्धारित साइट, कम्तीमा एक)",
|
"rolesRequired": "भूमिका (पूर्वनिर्धारित साइट, कम्तीमा एक)",
|
||||||
"site": "बाँधिएको साइट",
|
"site": "बाँधिएको साइट",
|
||||||
"sitePlaceholder": "यो खाताले पहुँच पाउने साइट छान्नुहोस्",
|
"sitePlaceholder": "यो खाताले पहुँच पाउने साइट छान्नुहोस्",
|
||||||
@@ -191,7 +194,9 @@
|
|||||||
"slug": "भूमिका कोड",
|
"slug": "भूमिका कोड",
|
||||||
"status": "स्थिति",
|
"status": "स्थिति",
|
||||||
"type": "प्रकार",
|
"type": "प्रकार",
|
||||||
"users": "सम्बन्धित प्रयोगकर्ता"
|
"users": "सम्बन्धित खाता",
|
||||||
|
"platformUsers": "प्लेटफर्म {{count}}",
|
||||||
|
"agentUsers": "एजेन्ट {{count}}"
|
||||||
},
|
},
|
||||||
"roleType": {
|
"roleType": {
|
||||||
"custom": "अनुकूलित",
|
"custom": "अनुकूलित",
|
||||||
@@ -205,6 +210,10 @@
|
|||||||
"saveRoleSuccess": "{{name}} को भूमिका अपडेट भयो",
|
"saveRoleSuccess": "{{name}} को भूमिका अपडेट भयो",
|
||||||
"saving": "सेभ हुँदैछ…",
|
"saving": "सेभ हुँदैछ…",
|
||||||
"searchPlaceholder": "प्रयोगकर्ता नाम / उपनाम / इमेलबाट खोज्नुहोस्",
|
"searchPlaceholder": "प्रयोगकर्ता नाम / उपनाम / इमेलबाट खोज्नुहोस्",
|
||||||
|
"roleFilter": {
|
||||||
|
"active": "“{{role}}” भूमिकाअनुसार प्लेटफर्म खाता फिल्टर गरिएको छ",
|
||||||
|
"clear": "भूमिका फिल्टर हटाउनुहोस्"
|
||||||
|
},
|
||||||
"siteRequired": "साइट छान्नुहोस्",
|
"siteRequired": "साइट छान्नुहोस्",
|
||||||
"status": {
|
"status": {
|
||||||
"disabled": "निष्क्रिय",
|
"disabled": "निष्क्रिय",
|
||||||
|
|||||||
@@ -43,7 +43,8 @@
|
|||||||
"auth": {
|
"auth": {
|
||||||
"checking": "लगइन स्थिति जाँच हुँदैछ…",
|
"checking": "लगइन स्थिति जाँच हुँदैछ…",
|
||||||
"checkingShort": "कार्यस्थान खोल्दै…",
|
"checkingShort": "कार्यस्थान खोल्दै…",
|
||||||
"sessionExpired": "लगइन समाप्त भयो। कृपया पुनः लगइन गर्नुहोस्।"
|
"sessionExpired": "लगइन समाप्त भयो। कृपया पुनः लगइन गर्नुहोस्।",
|
||||||
|
"sessionReplaced": "यो खाता अर्को स्थानमा लगइन भएको छ। कृपया पुनः लगइन गर्नुहोस्।"
|
||||||
},
|
},
|
||||||
"cancel": "रद्द गर्नुहोस्",
|
"cancel": "रद्द गर्नुहोस्",
|
||||||
"confirm": {
|
"confirm": {
|
||||||
@@ -198,6 +199,7 @@
|
|||||||
"rules": "खेल नियम",
|
"rules": "खेल नियम",
|
||||||
"rules_odds": "बाधा र रिबेट",
|
"rules_odds": "बाधा र रिबेट",
|
||||||
"rules_plays": "खेल नियम",
|
"rules_plays": "खेल नियम",
|
||||||
|
"bet_providers": "बेट प्रदायक",
|
||||||
"settings": "सेटिङ",
|
"settings": "सेटिङ",
|
||||||
"settlement": "सेटलमेन्ट",
|
"settlement": "सेटलमेन्ट",
|
||||||
"settlement_center": "क्रेडिट सेटलमेन्ट",
|
"settlement_center": "क्रेडिट सेटलमेन्ट",
|
||||||
|
|||||||
@@ -282,6 +282,28 @@
|
|||||||
},
|
},
|
||||||
"tabs": {
|
"tabs": {
|
||||||
"all": "सबै"
|
"all": "सबै"
|
||||||
|
},
|
||||||
|
"help": {
|
||||||
|
"openGuide": "पृष्ठ निर्देशिका",
|
||||||
|
"guideTitle": "अड्स र आधारभूत रिबेट निर्देशिका",
|
||||||
|
"guideDescription": "यस पृष्ठले सामान्य पुरस्कार गुणक र प्लेटफर्मको आधारभूत रिबेट नियन्त्रण गर्छ। यसले ज्याकपोटको अतिरिक्त भुक्तानी वा खेल उपलब्धता नियन्त्रण गर्दैन।",
|
||||||
|
"aria": "{{field}} को सहायता हेर्नुहोस्",
|
||||||
|
"fields": {
|
||||||
|
"provider": "अड्स लागू हुने प्रदायक दायरा छान्छ। GLOBAL पूर्वनिर्धारित हो; प्रदायक-विशेष मानले यसलाई ओभरराइड गर्छ, नभए GLOBAL नै प्रयोग हुन्छ।",
|
||||||
|
"category": "4D, 3D, 2D आदि समूह फिल्टर गर्छ। फिल्टर बदल्दा कन्फिगरेसन बदलिँदैन।",
|
||||||
|
"playType": "हेर्न वा सम्पादन गर्न चाहेको ठ्याक्कै खेल छान्छ। प्रत्येक खेलको पुरस्कार-स्तर अड्स र आधारभूत रिबेट फरक हुन सक्छ।",
|
||||||
|
"multiplier": "सामान्य विजेता भुक्तानी गुणक। रकम प्रणालीको राउन्डिङ नियमअनुसार गणना हुन्छ।",
|
||||||
|
"scopeMultiplier": "{{scope}} पुरस्कार जित्दा प्रयोग हुने सामान्य भुक्तानी गुणक नियन्त्रण गर्छ। यो ज्याकपोट burst भुक्तानी दर होइन।",
|
||||||
|
"rebateRate": "प्लेटफर्मको आधारभूत रिबेट दर। खेलाडी वा एजेन्टको थप रिबेट अन्यत्र सेट हुन्छ; वास्तविक कटौती र सेटलमेन्ट खाता मोडमा पनि निर्भर हुन्छ।"
|
||||||
|
},
|
||||||
|
"guide": {
|
||||||
|
"scopeTitle": "सही दायरा छान्नुहोस्",
|
||||||
|
"scopeDescription": "पहिले प्रदायक, श्रेणी र खेल छान्नुहोस्। श्रेणी केवल फिल्टर हो; प्रदायक र खेलले कुन अड्स सेट हेरिँदै वा सम्पादन हुँदैछ भन्ने तय गर्छ।",
|
||||||
|
"settingsTitle": "अड्स र रिबेटले के नियन्त्रण गर्छ",
|
||||||
|
"settingsDescription": "पुरस्कार-स्तर गुणकले सामान्य विजेता भुक्तानी र आधारभूत रिबेटले प्लेटफर्मको आधार छुट नियन्त्रण गर्छ। यी ज्याकपोट अतिरिक्त भुक्तानी होइनन्।",
|
||||||
|
"workflowTitle": "परिवर्तन कहिले लागू हुन्छ",
|
||||||
|
"workflowDescription": "ड्राफ्ट बनाउनुहोस्, सम्पादन गरी सेभ गर्नुहोस्, अनि प्रकाशित गर्नुहोस्। सेभ मात्र गर्दा खेलाडीमा असर पर्दैन। नयाँ टिकटले प्रकाशित मान प्रयोग गर्छ; पुराना टिकटले सुरक्षित अड्स र रिबेट snapshot राख्छन्।"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"play": {
|
"play": {
|
||||||
@@ -303,7 +325,7 @@
|
|||||||
"d2": "2D ग्लोबल",
|
"d2": "2D ग्लोबल",
|
||||||
"d3": "3D ग्लोबल",
|
"d3": "3D ग्लोबल",
|
||||||
"d4": "4D ग्लोबल",
|
"d4": "4D ग्लोबल",
|
||||||
"jackpot": "ज्याकपट",
|
"attribute": "विशेषता खेलहरू",
|
||||||
"position": "स्थिति खेलहरू"
|
"position": "स्थिति खेलहरू"
|
||||||
},
|
},
|
||||||
"batchPartialEnabled": "{{enabledCount}}/{{total}} सक्रिय (सबै खुला छैन — अन गर्दा सबै सक्रिय हुन्छ)",
|
"batchPartialEnabled": "{{enabledCount}}/{{total}} सक्रिय (सबै खुला छैन — अन गर्दा सबै सक्रिय हुन्छ)",
|
||||||
@@ -312,6 +334,7 @@
|
|||||||
"batchSwitchDisable": "निष्क्रिय",
|
"batchSwitchDisable": "निष्क्रिय",
|
||||||
"batchSwitchEnable": "सक्रिय",
|
"batchSwitchEnable": "सक्रिय",
|
||||||
"batchSwitchesDesc": "यसले हालको ड्राफ्ट मात्र अपडेट गर्छ। सेभ र प्रकाशित गरेपछि खेलाडीको बेटिङ तालिका रिफ्रेस हुन्छ।",
|
"batchSwitchesDesc": "यसले हालको ड्राफ्ट मात्र अपडेट गर्छ। सेभ र प्रकाशित गरेपछि खेलाडीको बेटिङ तालिका रिफ्रेस हुन्छ।",
|
||||||
|
"batchSwitchSavedLocal": "समूह स्विच हालको ड्राफ्टमा लेखियो। लागू गर्न ड्राफ्ट सेभ गरी प्रकाशित गर्नुहोस्।",
|
||||||
"batchSwitchesTitle": "समूह स्विचहरू",
|
"batchSwitchesTitle": "समूह स्विचहरू",
|
||||||
"categories": {
|
"categories": {
|
||||||
"attribute": "विशेषता",
|
"attribute": "विशेषता",
|
||||||
@@ -388,6 +411,29 @@
|
|||||||
"toggleDisable": "निष्क्रिय",
|
"toggleDisable": "निष्क्रिय",
|
||||||
"toggleEnable": "सक्रिय",
|
"toggleEnable": "सक्रिय",
|
||||||
"toggleInstantFailed": "खेल स्विच तुरुन्त लागू गर्न असफल। पछि पुनः प्रयास गर्नुहोस्।",
|
"toggleInstantFailed": "खेल स्विच तुरुन्त लागू गर्न असफल। पछि पुनः प्रयास गर्नुहोस्।",
|
||||||
|
"help": {
|
||||||
|
"openGuide": "पृष्ठ निर्देशिका",
|
||||||
|
"guideTitle": "खेल नियम निर्देशिका",
|
||||||
|
"guideDescription": "यस पृष्ठले खेल बेच्न मिल्ने वा नमिल्ने, खेलाडीले देख्ने नाम र क्रम, तथा प्रत्येक बेट लाइनको रकम सीमा नियन्त्रण गर्छ। यसले अड्स वा ज्याकपोट योग्यता नियन्त्रण गर्दैन।",
|
||||||
|
"aria": "{{field}} को सहायता हेर्नुहोस्",
|
||||||
|
"fields": {
|
||||||
|
"status": "प्रकाशनपछि खेल किन्न मिल्ने वा नमिल्ने नियन्त्रण गर्छ। बन्द गर्दा नयाँ बेट अस्वीकार हुन्छ; पुराना टिकट बदलिँदैनन्।",
|
||||||
|
"displayName": "खेलाडीले देख्ने खेल नाम। परिवर्तन सेभ र प्रकाशित नभएसम्म हालको ड्राफ्टमै रहन्छ।",
|
||||||
|
"order": "खेलाडी सूचीमा देखिने क्रम नियन्त्रण गर्छ। सानो संख्या सामान्यतया पहिले देखिन्छ; स्थिर बेटिङ ग्रिडले आफ्नै लेआउट राख्न सक्छ।",
|
||||||
|
"minBet": "एउटा बेट लाइनमा स्वीकार हुने न्यूनतम रकम। यसभन्दा कम नयाँ बेट अस्वीकार हुन्छ।",
|
||||||
|
"maxBet": "एउटा बेट लाइनमा स्वीकार हुने अधिकतम रकम। संयोजन बेट विस्तार भएपछि वास्तविक लाइनअनुसार फेरि गणना हुन्छ।",
|
||||||
|
"batchSwitches": "एउटै समूहका धेरै खेल एकैपटक खोल्छ वा बन्द गर्छ। यसले हालको ड्राफ्ट मात्र बदल्छ र अझै सेभ तथा प्रकाशन चाहिन्छ।",
|
||||||
|
"batchGroup": "“{{group}}” का सबै {{count}} खेललाई हालको ड्राफ्टमा मात्र एउटै अवस्थामा राख्छ।"
|
||||||
|
},
|
||||||
|
"guide": {
|
||||||
|
"settingsTitle": "प्रत्येक सेटिङले के नियन्त्रण गर्छ",
|
||||||
|
"settingsDescription": "स्थितिले उपलब्धता, नाम र क्रमले खेलाडीले देख्ने सामग्री, तथा न्यूनतम र अधिकतम बेटले प्रत्येक लाइनको स्वीकार्य रकम नियन्त्रण गर्छ।",
|
||||||
|
"batchTitle": "समूह स्विचको प्रयोग",
|
||||||
|
"batchDescription": "समूह स्विचले धेरै ड्राफ्ट पङ्क्ति एकैपटक बदल्छ। यसले सेभ र प्रकाशन प्रक्रिया छोड्दैन।",
|
||||||
|
"workflowTitle": "परिवर्तन कहिले लागू हुन्छ",
|
||||||
|
"workflowDescription": "सक्रिय संस्करण पढ्न मात्र हो। ड्राफ्ट बनाएर सम्पादन र सेभ गर्नुहोस्, अनि प्रकाशित गर्नुहोस्। सेभ मात्र गर्दा असर पर्दैन; प्रकाशनले नयाँ बेटमा असर गर्छ, पुराना टिकटले सुरक्षित नियम snapshot राख्छन्।"
|
||||||
|
}
|
||||||
|
},
|
||||||
"validation": {
|
"validation": {
|
||||||
"displayNameRequired": "प्रदर्शित नाम अनिवार्य छ",
|
"displayNameRequired": "प्रदर्शित नाम अनिवार्य छ",
|
||||||
"minMaxInvalid": "{{playCode}}: न्यूनतम बेट अधिकतम बेटभन्दा ठूलो हुन सक्दैन"
|
"minMaxInvalid": "{{playCode}}: न्यूनतम बेट अधिकतम बेटभन्दा ठूलो हुन सक्दैन"
|
||||||
@@ -580,7 +626,7 @@
|
|||||||
"autoApprove": "कूलडाउन सकिएर सेटलमेन्ट पूरा भएपछि ब्याच स्वतः अनुमोदित हुने हो कि होइन।",
|
"autoApprove": "कूलडाउन सकिएर सेटलमेन्ट पूरा भएपछि ब्याच स्वतः अनुमोदित हुने हो कि होइन।",
|
||||||
"autoPayout": "ब्याच अनुमोदित भएपछि tick ले जित रकम खेलाडीको वालेटमा स्वतः जम्मा गर्ने हो कि होइन।",
|
"autoPayout": "ब्याच अनुमोदित भएपछि tick ले जित रकम खेलाडीको वालेटमा स्वतः जम्मा गर्ने हो कि होइन।",
|
||||||
"autoSettlement": "बन्द हुँदा tick ले सेटलमेन्ट स्वतः चलाउँदैन र एडमिनले म्यानुअल रूपमा ट्रिगर गर्नुपर्छ।",
|
"autoSettlement": "बन्द हुँदा tick ले सेटलमेन्ट स्वतः चलाउँदैन र एडमिनले म्यानुअल रूपमा ट्रिगर गर्नुपर्छ।",
|
||||||
"cooldownMinutes": "प्रकाशनपछि settling मा जानुअघि कति समय पर्खने। 0 राखे तुरुन्त सेटलमेन्ट सुरु हुन्छ।",
|
"cooldownMinutes": "प्रकाशनपछि सेटलमेन्ट सुरु हुनुअघि कति समय पर्खने। 0 राखे तुरुन्त सुरु हुन्छ। परिवर्तनपछि प्रकाशित हुने ड्रमा मात्र लागू हुन्छ; पहिले नै कूलडाउनमा रहेका ड्र पुनः गणना हुँदैनन्।",
|
||||||
"manualReview": "सक्रिय हुँदा RNG ड्रअ परिणाम pending review मा जान्छ र एडमिनबाट म्यानुअल रूपमा प्रकाशित गर्नुपर्छ।"
|
"manualReview": "सक्रिय हुँदा RNG ड्रअ परिणाम pending review मा जान्छ र एडमिनबाट म्यानुअल रूपमा प्रकाशित गर्नुपर्छ।"
|
||||||
},
|
},
|
||||||
"loadFailed": "प्रणाली सेटिङ लोड असफल भयो",
|
"loadFailed": "प्रणाली सेटिङ लोड असफल भयो",
|
||||||
|
|||||||
@@ -52,19 +52,26 @@
|
|||||||
"manualCloseTitle": "म्यानुअल बन्द पुष्टि?",
|
"manualCloseTitle": "म्यानुअल बन्द पुष्टि?",
|
||||||
"publishDescription": "खेलाडीहरूले नतिजा देख्नेछन्।",
|
"publishDescription": "खेलाडीहरूले नतिजा देख्नेछन्।",
|
||||||
"publishTitle": "नतिजा प्रकाशन पुष्टि?",
|
"publishTitle": "नतिजा प्रकाशन पुष्टि?",
|
||||||
"reopenDescription": "नतिजा पुनः समीक्षा हुन सक्छ।",
|
"reopenDescription": "प्रकाशित नम्बर गलत हुँदा मात्र प्रयोग गर्नुहोस्। ड्र फेरि बन्द अवस्थामा फर्किन्छ र नयाँ नतिजा सिर्जना, समीक्षा र प्रकाशित गर्नुपर्छ। यसले सेटलमेन्ट छिटो गर्दैन।",
|
||||||
"reopenTitle": "कुलडाउन पुनः खोल्ने पुष्टि?",
|
"reopenTitle": "नतिजा फिर्ता लिएर पुनः खोल्ने?",
|
||||||
"rngDrawDescription": "प्रणालीले नतिजा सिर्जना गर्नेछ।",
|
"rngDrawDescription": "प्रणालीले नतिजा सिर्जना गर्नेछ।",
|
||||||
"rngDrawTitle": "RNG ड्रअ पुष्टि?",
|
"rngDrawTitle": "RNG ड्रअ पुष्टि?",
|
||||||
"runSettlementDescription": "प्रकाशित नतिजाबाट सेटलमेन्ट ब्याच बन्नेछ।",
|
"runSettlementDescription": "प्रकाशित नतिजाबाट सेटलमेन्ट ब्याच बन्नेछ।",
|
||||||
"runSettlementTitle": "सेटलमेन्ट सुरु पुष्टि?",
|
"runSettlementTitle": "सेटलमेन्ट सुरु पुष्टि?",
|
||||||
|
"settleEarlyDescription": "बाँकी नतिजा जाँच समय छोडेर तुरुन्त सेटलमेन्ट र स्वचालित भुक्तानी प्रक्रिया सुरु हुनेछ। पहिले आधिकारिक नतिजा सही भएको पुष्टि गर्नुहोस्।",
|
||||||
|
"settleEarlyTitle": "अगावै सेटल गर्ने?",
|
||||||
|
"retrySettlementDescription": "अवस्थित वैध ब्याच नदोहोर्याई सेटलमेन्ट सुरक्षित रूपमा पुनः प्रयास हुनेछ।",
|
||||||
|
"retrySettlementTitle": "सेटलमेन्ट पुनः प्रयास गर्ने?",
|
||||||
"saveManualDraftDescription": "२३ नम्बर समीक्षाका लागि सुरक्षित हुनेछ।",
|
"saveManualDraftDescription": "२३ नम्बर समीक्षाका लागि सुरक्षित हुनेछ।",
|
||||||
"saveManualDraftTitle": "म्यानुअल ड्राफ्ट सुरक्षित पुष्टि?"
|
"saveManualDraftTitle": "म्यानुअल ड्राफ्ट सुरक्षित पुष्टि?"
|
||||||
},
|
},
|
||||||
"confirmPublish": "प्रकाशन पुष्टि गर्नुहोस्",
|
"confirmPublish": "प्रकाशन पुष्टि गर्नुहोस्",
|
||||||
"confirmedAt": "पुष्टि समय {{time}}",
|
"confirmedAt": "पुष्टि समय {{time}}",
|
||||||
"cooldownReopen": "कुलिङमा पुनःखोल्नुहोस्",
|
"cooldownReopen": "नतिजा फिर्ता लिएर पुनः खोल्नुहोस्",
|
||||||
|
"reopenUsageHint": "प्रकाशित नम्बर गलत हुँदा मात्र प्रयोग गर्नुहोस्। यसले नयाँ नतिजा पुनः प्रकाशित गर्नुपर्छ र सेटलमेन्ट छिटो गर्दैन।",
|
||||||
"coolingEndTime": "कुलिङ समाप्ति",
|
"coolingEndTime": "कुलिङ समाप्ति",
|
||||||
|
"automaticSettlementAt": "स्वचालित सेटलमेन्ट: {{time}}",
|
||||||
|
"cooldownRemaining": "बाँकी {{time}}",
|
||||||
"createDraw": {
|
"createDraw": {
|
||||||
"description": "स्थानीय समयक्षेत्र {{tz}} मा मिति र समय प्रविष्ट गर्नुहोस्।",
|
"description": "स्थानीय समयक्षेत्र {{tz}} मा मिति र समय प्रविष्ट गर्नुहोस्।",
|
||||||
"drawNoPlaceholder": "ड्रअ नम्बर प्रविष्ट गर्नुहोस्, जस्तै 20260526-008",
|
"drawNoPlaceholder": "ड्रअ नम्बर प्रविष्ट गर्नुहोस्, जस्तै 20260526-008",
|
||||||
@@ -79,6 +86,7 @@
|
|||||||
},
|
},
|
||||||
"currentPayout": "हालको कुल भुक्तानी",
|
"currentPayout": "हालको कुल भुक्तानी",
|
||||||
"currentResultVersion": "हालको नतिजा संस्करण",
|
"currentResultVersion": "हालको नतिजा संस्करण",
|
||||||
|
"resultVersion": "नतिजा संस्करण",
|
||||||
"currentStatusAndDraft": "हालको स्थिति {{status}} · सेभ गरेपछि pending batch बन्छ, सिधै प्रकाशित हुँदैन",
|
"currentStatusAndDraft": "हालको स्थिति {{status}} · सेभ गरेपछि pending batch बन्छ, सिधै प्रकाशित हुँदैन",
|
||||||
"currentStatusDraftHint": "सेभ गरेपछि समीक्षा बाँकी ब्याच बन्छ, सिधै प्रकाशित हुँदैन",
|
"currentStatusDraftHint": "सेभ गरेपछि समीक्षा बाँकी ब्याच बन्छ, सिधै प्रकाशित हुँदैन",
|
||||||
"currentStatusLabel": "हालको स्थिति",
|
"currentStatusLabel": "हालको स्थिति",
|
||||||
@@ -148,7 +156,7 @@
|
|||||||
"overviewTitle": "ड्र अवलोकन",
|
"overviewTitle": "ड्र अवलोकन",
|
||||||
"pageGuide": "ड्र जीवनचक्र व्यवस्थापन: योजना, बन्द, नतिजा समीक्षा र सेटलमेन्ट।",
|
"pageGuide": "ड्र जीवनचक्र व्यवस्थापन: योजना, बन्द, नतिजा समीक्षा र सेटलमेन्ट।",
|
||||||
"payoutTotal": "कुल भुक्तानी",
|
"payoutTotal": "कुल भुक्तानी",
|
||||||
"pendingBatches": "बाँकी ब्याच",
|
"pendingBatches": "समीक्षाको प्रतीक्षामा नतिजा (खेलाडीलाई नदेखिने)",
|
||||||
"pendingReview": "समीक्षा बाँकी",
|
"pendingReview": "समीक्षा बाँकी",
|
||||||
"plannedDraw": "योजनाबद्ध ड्रअ",
|
"plannedDraw": "योजनाबद्ध ड्रअ",
|
||||||
"prize": "पुरस्कार",
|
"prize": "पुरस्कार",
|
||||||
@@ -160,8 +168,11 @@
|
|||||||
"publishTitle": "प्रकाशित",
|
"publishTitle": "प्रकाशित",
|
||||||
"published": "प्रकाशित",
|
"published": "प्रकाशित",
|
||||||
"publishedView": "प्रकाशित नतिजा हेर्नुहोस्",
|
"publishedView": "प्रकाशित नतिजा हेर्नुहोस्",
|
||||||
|
"officialResultsTitle": "आधिकारिक नतिजा (खेलाडीलाई देखिने)",
|
||||||
|
"officialResultsHint": "यहाँ प्रकाशित र खेलाडीलाई लागू भएका नम्बर मात्र देखिन्छन्; समीक्षा ड्राफ्ट अलग राखिन्छ।",
|
||||||
"queryDraw": "ड्रअ खोज्नुहोस्",
|
"queryDraw": "ड्रअ खोज्नुहोस्",
|
||||||
"relatedSettlementBatches": "सम्बन्धित सेटलमेन्ट ब्याच",
|
"relatedSettlementBatches": "यस ड्रको सेटलमेन्ट प्रक्रिया अभिलेख",
|
||||||
|
"settlementBatchesHint": "सामान्यतया यस ड्रमा बाजी भएको प्रत्येक प्रदायकका लागि अभिलेख बन्छ। टिकट विवरण हेर्न ब्याच नम्बर छान्नुहोस्।",
|
||||||
"reopen": "पुनःखोल्नुहोस्",
|
"reopen": "पुनःखोल्नुहोस्",
|
||||||
"reset": "रिसेट",
|
"reset": "रिसेट",
|
||||||
"resultBatchesTitle": "नतिजा ब्याच",
|
"resultBatchesTitle": "नतिजा ब्याच",
|
||||||
@@ -190,6 +201,12 @@
|
|||||||
"rngDraw": "RNG ड्रअ",
|
"rngDraw": "RNG ड्रअ",
|
||||||
"rngSummary": "RNG ह्यास {{hash}}",
|
"rngSummary": "RNG ह्यास {{hash}}",
|
||||||
"runSettlement": "सेटलमेन्ट चलाउनुहोस्",
|
"runSettlement": "सेटलमेन्ट चलाउनुहोस्",
|
||||||
|
"settleEarly": "अगावै सेटल गर्नुहोस्",
|
||||||
|
"retrySettlement": "सेटलमेन्ट पुनः चलाउनुहोस्",
|
||||||
|
"settleEarlySuccess": "बाँकी पुष्टि समय छोडेर सेटलमेन्ट सुरु भयो",
|
||||||
|
"retrySettlementSuccess": "सेटलमेन्ट पुनः प्रयास सुरु भयो",
|
||||||
|
"settlementManagePermissionRequired": "भुक्तानी व्यवस्थापकले मात्र सेटलमेन्ट सुरु वा पुनः प्रयास गर्न सक्छ।",
|
||||||
|
"settlementUnavailable": "ड्र {{status}} अवस्थामा हुँदा म्यानुअल सेटलमेन्ट आवश्यक छैन।",
|
||||||
"saveDraft": "ड्राफ्ट सुरक्षित गर्नुहोस्",
|
"saveDraft": "ड्राफ्ट सुरक्षित गर्नुहोस्",
|
||||||
"saveFailed": "सेभ असफल भयो",
|
"saveFailed": "सेभ असफल भयो",
|
||||||
"saving": "सेभ हुँदैछ…",
|
"saving": "सेभ हुँदैछ…",
|
||||||
@@ -218,16 +235,30 @@
|
|||||||
},
|
},
|
||||||
"submitting": "पेश हुँदैछ…",
|
"submitting": "पेश हुँदैछ…",
|
||||||
"subnav": {
|
"subnav": {
|
||||||
"finance": "ड्रअ वित्त",
|
"finance": "वित्त र सेटलमेन्ट",
|
||||||
"results": "परिणाम",
|
"results": "परिणाम",
|
||||||
|
"tickets": "बाजी अवस्था",
|
||||||
"review": "समीक्षा र प्रकाशन",
|
"review": "समीक्षा र प्रकाशन",
|
||||||
"riskHot": "हट नम्बर",
|
"riskHot": "हट नम्बर",
|
||||||
"riskLockLogs": "लक लग",
|
"riskLockLogs": "लक लग",
|
||||||
"riskOccupancy": "जोखिम अकुपेन्सी",
|
"riskOccupancy": "जोखिम अकुपेन्सी",
|
||||||
"riskPools": "जोखिम पूल",
|
"riskPools": "नम्बर सीमा",
|
||||||
"riskSoldOut": "बिक्री समाप्त नम्बर",
|
"riskSoldOut": "बिक्री समाप्त नम्बर",
|
||||||
"status": "ड्रअ स्थिति"
|
"status": "ड्रअ स्थिति"
|
||||||
},
|
},
|
||||||
|
"lifecycle": {
|
||||||
|
"currentStage": "हालको चरण: {{status}}",
|
||||||
|
"pending": "यस ड्रका लागि बाजी खुलिसकेको छैन।",
|
||||||
|
"open": "बन्द समयसम्म खेलाडीले बाजी लगाउन सक्छन्।",
|
||||||
|
"closing": "बाजी बन्द छ र निर्धारित नतिजा समय पर्खिरहेको छ।",
|
||||||
|
"closed": "ड्र बन्द छ र नतिजा सिर्जना वा प्रविष्टि पर्खिरहेको छ।",
|
||||||
|
"drawing": "प्रणालीले नतिजा सिर्जना गर्दैछ।",
|
||||||
|
"review": "नतिजा समीक्षामा छ र खेलाडीलाई अझै लागू भएको छैन।",
|
||||||
|
"cooldown": "नतिजा प्रकाशित छ र जाँच अवधिमा छ। समय पुगेपछि स्वचालित सेटल हुनेछ वा व्यवस्थापकले अगावै सेटल गर्न सक्छ।",
|
||||||
|
"settling": "सेटलमेन्ट अभिलेख प्रशोधन हुँदैछ। पृष्ठ प्रत्येक ५ सेकेन्डमा अद्यावधिक हुन्छ।",
|
||||||
|
"settled": "सेटलमेन्ट र भुक्तानी प्रक्रिया पूरा भयो।",
|
||||||
|
"cancelled": "यो ड्र रद्द भयो र नतिजा वा सेटलमेन्टमा जाने छैन।"
|
||||||
|
},
|
||||||
"tail2": "अन्तिम 2",
|
"tail2": "अन्तिम 2",
|
||||||
"tail3": "अन्तिम 3",
|
"tail3": "अन्तिम 3",
|
||||||
"ticketCount": "टिकट",
|
"ticketCount": "टिकट",
|
||||||
|
|||||||
@@ -92,5 +92,35 @@
|
|||||||
"tabConfig": "कन्फिगरेसन",
|
"tabConfig": "कन्फिगरेसन",
|
||||||
"tabRecords": "रेकर्ड",
|
"tabRecords": "रेकर्ड",
|
||||||
"confirmSavePoolTitle": "ज्याकपट सेटिङ बचत गर्ने?",
|
"confirmSavePoolTitle": "ज्याकपट सेटिङ बचत गर्ने?",
|
||||||
"confirmSavePoolDescription": "यसले संचय दर, थ्रेसहोल्ड, भुक्तानी अनुपात र सम्बन्धित प्यारामिटरहरू अद्यावधिक गर्नेछ (पूल ब्यालेन्स होइन)।"
|
"confirmSavePoolDescription": "यसले संचय दर, थ्रेसहोल्ड, भुक्तानी अनुपात र सम्बन्धित प्यारामिटरहरू अद्यावधिक गर्नेछ (पूल ब्यालेन्स होइन)।",
|
||||||
|
"help": {
|
||||||
|
"openGuide": "पृष्ठ जानकारी",
|
||||||
|
"guideTitle": "ज्याकपट पृष्ठ जानकारी",
|
||||||
|
"guideDescription": "ज्याकपट सामान्य odds भुक्तानीभन्दा अलग अतिरिक्त पुरस्कार पूल हो। यस पृष्ठले मुद्रा अनुसार पूल कसरी बढ्छ, कहिले रिलिज हुन्छ र रेकर्ड कहाँ हेर्ने भन्ने नियन्त्रण गर्छ।",
|
||||||
|
"aria": "{{field}} को जानकारी हेर्नुहोस्",
|
||||||
|
"fields": {
|
||||||
|
"currentAmount": "यस मुद्राको पूलमा अहिले जम्मा भएको उपलब्ध ब्यालेन्स। साधारण Save बाट सिधै बदलिँदैन; योग्य योगदान, ज्याकपट भुक्तानी वा कारणसहितको समायोजनले बदल्छ।",
|
||||||
|
"status": "यस मुद्राको पूल भविष्यका कारोबारमा चल्ने वा नचल्ने नियन्त्रण गर्छ। बन्द हुँदा नयाँ टिकटले योगदान गर्दैन र स्वतः वा म्यानुअल बर्स्ट चल्दैन; पुरानो ब्यालेन्स रहन्छ।",
|
||||||
|
"contributionRate": "सफल टिकटले न्यूनतम रकम पुगेपछि नाममात्र बेट रकमलाई यो प्रतिशतले गुणा गरी पूलमा लेखिन्छ। यो आन्तरिक बाँडफाँट हो, खेलाडीबाट थप शुल्क होइन।",
|
||||||
|
"minBetAmount": "सफल टिकटले ज्याकपटमा योगदान गर्ने वा नगर्ने मात्र निर्णय गर्छ। प्ले किन्न मिल्ने न्यूनतम वा अधिकतम रकम Betting rules मा सेट हुन्छ।",
|
||||||
|
"triggerThreshold": "पूल यो रकममा पुगेपछि र सो ड्रअमा प्रथम पुरस्कार विजेता भए threshold बाट बर्स्ट हुन सक्छ। विजेता नभए रकम पुगेको मात्र कारणले भुक्तानी हुँदैन।",
|
||||||
|
"payoutRate": "Threshold, combo-play वा manual burst हुँदा बर्स्टअघिको ब्यालेन्सबाट रिलिज हुने प्रतिशत। Forced-gap burst ले पूरा पूल रिलिज गर्छ।",
|
||||||
|
"forceTriggerGap": "पछिल्लो बर्स्टपछि यति settled draws पुगेपछि, अर्को प्रथम पुरस्कार विजेता भएको ड्रअमा forced burst हुन सक्छ। 0 राख्दा यो सर्त बन्द हुन्छ।",
|
||||||
|
"comboTriggerPlays": "छानिएको प्लेमा प्रथम पुरस्कार परे threshold नपुगे पनि बर्स्ट हुन सक्छ। यसले ट्रिगर मात्र निर्धारण गर्छ, भुक्तानी पाउने विजेता सीमित गर्दैन।",
|
||||||
|
"balanceAdjustment": "हालको पूल ब्यालेन्स म्यानुअल रूपमा बढाउने वा घटाउने। कारण अनिवार्य हुन्छ, सबै काम रेकर्ड हुन्छ र ब्यालेन्स 0 भन्दा तल जान सक्दैन।",
|
||||||
|
"adjustmentDirection": "यो समायोजनले पूल ब्यालेन्स बढाउने वा घटाउने छान्नुहोस्।",
|
||||||
|
"adjustmentAmount": "मुख्य मुद्रा एकाइमा थप्ने वा घटाउने रकम; समायोजनपछि चाहिएको कुल ब्यालेन्स होइन।",
|
||||||
|
"adjustmentReason": "ब्यालेन्स किन बदलिएको हो भन्ने विवरण। Audit र reconciliation का लागि कम्तीमा 3 अक्षर चाहिन्छ।",
|
||||||
|
"manualBurst": "सुपर एडमिन मात्र। प्रकाशित नतिजा, settlement batch र प्रथम पुरस्कार विजेता भएको ड्रअ छानेर हालको payout rate अनुसार पूल रिलिज गर्छ।",
|
||||||
|
"records": "पढ्न मात्र मिल्ने jackpot payout र प्रत्येक टिकटको contribution रेकर्ड draw number अनुसार फिल्टर र export गर्नुहोस्।"
|
||||||
|
},
|
||||||
|
"guide": {
|
||||||
|
"settingsTitle": "पूल कसरी बढ्छ र ट्रिगर हुन्छ",
|
||||||
|
"settingsDescription": "योग्य सफल टिकटले पहिले पूल बढाउँछ। Settlement मा threshold, forced-gap वा combo-play जाँच्नुअघि कम्तीमा एक प्रथम पुरस्कार विजेता हुनुपर्छ।",
|
||||||
|
"actionsTitle": "म्यानुअल काम र रेकर्ड",
|
||||||
|
"actionsDescription": "Balance adjustment र manual burst ले वास्तविक पूल रकम तुरुन्त बदल्छ। पहिले मुद्रा, रकम, ड्रअ र कारण जाँच गर्नुहोस्।",
|
||||||
|
"effectiveTitle": "परिवर्तन कहिले लागू हुन्छ",
|
||||||
|
"effectiveDescription": "Jackpot सेटिङमा draft र publish प्रक्रिया छैन। Save गरेपछि पछिल्ला contribution र नसकिएको jackpot settlement मा तुरुन्त लागू हुन्छ। बेचिसकिएको तर settle नभएको ड्रअले पनि नयाँ trigger र payout rate प्रयोग गर्न सक्छ।"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,10 +30,39 @@
|
|||||||
"createUsernameRequired": "लगइन प्रयोगकर्ता नाम लेख्नुहोस्",
|
"createUsernameRequired": "लगइन प्रयोगकर्ता नाम लेख्नुहोस्",
|
||||||
"createSitePlayerIdOptional": "वैकल्पिक; खाली छोड्दा स्वतः सिर्जना हुन्छ",
|
"createSitePlayerIdOptional": "वैकल्पिक; खाली छोड्दा स्वतः सिर्जना हुन्छ",
|
||||||
"createSuccessNative": "खेलाडी {{name}} सिर्जना भयो — लटरी साइटमा लगइन गर्नुहोस्",
|
"createSuccessNative": "खेलाडी {{name}} सिर्जना भयो — लटरी साइटमा लगइन गर्नुहोस्",
|
||||||
|
"fieldHelpAria": "{{field}} को व्याख्या हेर्नुहोस्",
|
||||||
|
"helpFundingWallet": "खेलाडी मुख्य साइटबाट SSO मार्फत लटरीमा प्रवेश गर्छ र लटरी वालेटमा सारिएको रकमबाट बाजी लगाउँछ। खेलाडी ID मुख्य साइटसँग ठ्याक्कै मिल्नुपर्छ।",
|
||||||
|
"helpFundingCredit": "खेलाडी लटरीको खाता र पासवर्डले सीधै लगइन गर्छ र मुख्य साइट वालेटको सट्टा सम्बन्धित एजेन्टले दिएको क्रेडिट प्रयोग गर्छ।",
|
||||||
|
"helpSiteCode": "यो खेलाडीको इन्टिग्रेसन साइट कोड हो। यसले SSO, वालेट API, डेटा स्कोप र उपलब्ध एजेन्ट निर्धारण गर्छ। यो कोड हो, नम्बर हुनैपर्छ भन्ने छैन।",
|
||||||
|
"helpAgentNode": "खेलाडीलाई कुन एजेन्ट लाइनमा राख्ने भन्ने तय गर्छ र पहुँच तथा रिपोर्टमा असर गर्छ। क्रेडिट खेलाडीका लागि यसले दिन मिल्ने क्रेडिट र सेटलमेन्ट पनि निर्धारण गर्छ।",
|
||||||
|
"helpSitePlayerIdWallet": "मुख्य साइटले दिएको स्थायी अद्वितीय चिन्ह। वालेट खेलाडीका लागि अनिवार्य छ र मुख्य साइट SSO ले पठाएको मानसँग ठ्याक्कै मिल्नुपर्छ।",
|
||||||
|
"helpSitePlayerIdCredit": "लटरीभित्रको खेलाडीको अद्वितीय चिन्ह। क्रेडिट खेलाडीले खाली छोडेमा सुरक्षित गर्दा प्रणालीले स्वतः सिर्जना गर्छ।",
|
||||||
|
"helpUsernameWallet": "वालेट खेलाडी मुख्य साइट SSO बाट लगइन गर्छ। यो वैकल्पिक प्रोफाइल विवरण हो, लटरी लगइन खाता होइन।",
|
||||||
|
"helpUsernameCredit": "क्रेडिट खेलाडीले लटरी साइटमा लगइन गर्दा प्रयोग गर्ने खाता। एउटै साइटभित्र दोहोरिन मिल्दैन।",
|
||||||
|
"helpPassword": "क्रेडिट खेलाडीको प्रारम्भिक लटरी पासवर्ड। कम्तीमा ६ वर्ण हुनुपर्छ; वालेट खेलाडीलाई आवश्यक पर्दैन।",
|
||||||
|
"helpCreditLimit": "एजेन्टले खेलाडीलाई प्रयोग गर्न दिएको अधिकतम क्रेडिट। बाजीले यो सीमा प्रयोग गर्छ र यो एजेन्टको हाल दिन सकिने क्रेडिटभन्दा बढी हुन सक्दैन।",
|
||||||
|
"helpNickname": "ब्याकअफिस र खेलाडी इन्टरफेसमा देखिने नाम। लगइन वा पहिचान मिलाउन प्रयोग हुँदैन र खाली छोड्न सकिन्छ।",
|
||||||
|
"helpDefaultCurrency": "खेलाडीको वालेट, क्रेडिट र बाजीमा प्रयोग हुने मुद्रा। यसलाई परिवर्तन गर्दा पुरानो रकम स्वतः सटही हुँदैन।",
|
||||||
|
"helpStatus": "सामान्य खेलाडीले लगइन र बाजी गर्न सक्छ। फ्रिज वा प्रतिबन्धित खेलाडीको सामान्य पहुँच रोकिन्छ।",
|
||||||
"editCreditLimit": "क्रेडिट सीमा",
|
"editCreditLimit": "क्रेडिट सीमा",
|
||||||
"editDetailLoading": "खेलाडी विवरण लोड हुँदैछ…",
|
"editDetailLoading": "खेलाडी विवरण लोड हुँदैछ…",
|
||||||
"usernameInvalidCharset": "प्रयोगकर्ता नाममा अक्षर, अंक, डट, अन्डरस्कोर र हाइफन मात्र हुन सक्छ",
|
"usernameInvalidCharset": "प्रयोगकर्ता नाममा अक्षर, अंक, डट, अन्डरस्कोर र हाइफन मात्र हुन सक्छ",
|
||||||
"passwordMinLength": "प्रारम्भिक पासवर्ड कम्तीमा ६ वर्ण हुनुपर्छ",
|
"passwordMinLength": "प्रारम्भिक पासवर्ड कम्तीमा ६ वर्ण हुनुपर्छ",
|
||||||
|
"resetPassword": "लगइन पासवर्ड रिसेट",
|
||||||
|
"resetPasswordTitle": "खेलाडी लगइन पासवर्ड रिसेट",
|
||||||
|
"resetPasswordDescription": "खेलाडी {{name}} का लागि नयाँ लटरी लगइन पासवर्ड सेट गर्नुहोस्।",
|
||||||
|
"resetPasswordNew": "नयाँ पासवर्ड",
|
||||||
|
"resetPasswordConfirm": "नयाँ पासवर्ड पुष्टि",
|
||||||
|
"resetPasswordPlaceholder": "कम्तीमा ६ वर्ण",
|
||||||
|
"resetPasswordConfirmPlaceholder": "नयाँ पासवर्ड फेरि लेख्नुहोस्",
|
||||||
|
"resetPasswordSessionNotice": "सुरक्षित गरेपछि यस खेलाडीका सबै हालका लटरी सत्र तुरुन्तै समाप्त हुन्छन्। नयाँ पासवर्डले फेरि लगइन गर्नुपर्छ।",
|
||||||
|
"resetPasswordRequired": "नयाँ पासवर्ड लेख्नुहोस्",
|
||||||
|
"resetPasswordMinLength": "नयाँ पासवर्ड कम्तीमा ६ वर्ण हुनुपर्छ",
|
||||||
|
"resetPasswordMismatch": "नयाँ पासवर्डहरू मिलेनन्",
|
||||||
|
"resetPasswordSubmit": "पासवर्ड रिसेट",
|
||||||
|
"resetPasswordSaving": "रिसेट हुँदै…",
|
||||||
|
"resetPasswordSuccess": "खेलाडी {{name}} को लगइन पासवर्ड रिसेट भयो",
|
||||||
|
"resetPasswordFailed": "पासवर्ड रिसेट असफल भयो",
|
||||||
"creditLimitInvalid": "क्रेडिट सीमा नऋणात्मक पूर्णांक हुनुपर्छ",
|
"creditLimitInvalid": "क्रेडिट सीमा नऋणात्मक पूर्णांक हुनुपर्छ",
|
||||||
"creditCapLoading": "एजेन्ट क्रेडिट लोड हुँदैछ — केही बेरपछि पुनः प्रयास गर्नुहोस्",
|
"creditCapLoading": "एजेन्ट क्रेडिट लोड हुँदैछ — केही बेरपछि पुनः प्रयास गर्नुहोस्",
|
||||||
"creditLimitExceeded": "क्रेडिट सीमा एजेन्टको दिन सकिने रकमभन्दा बढी हुन सक्दैन",
|
"creditLimitExceeded": "क्रेडिट सीमा एजेन्टको दिन सकिने रकमभन्दा बढी हुन सक्दैन",
|
||||||
|
|||||||
@@ -4,12 +4,14 @@
|
|||||||
"actionFilter": "कार्य",
|
"actionFilter": "कार्य",
|
||||||
"actions": "कार्य",
|
"actions": "कार्य",
|
||||||
"all": "सबै",
|
"all": "सबै",
|
||||||
"allPoolsPageTitle": "सबै जोखिम पूल",
|
"allPoolsPageTitle": "नम्बर भुक्तानी सीमा (जोखिम पूल)",
|
||||||
|
"poolExplanationTitle": "हरेक नम्बरले अझै कति सम्भावित भुक्तानी स्वीकार्न सक्छ भन्ने यहाँ देखिन्छ",
|
||||||
|
"poolExplanation": "हरेक प्रदायक र चार-अङ्क नम्बरको अधिकतम सम्भावित भुक्तानी सीमा हुन्छ। बाजीले सबैभन्दा खराब सम्भावित भुक्तानी अनुसार क्षमता सुरक्षित गर्छ। क्षमता अपुग हुँदा नम्बर बिक्री बन्द हुन्छ र सेटलमेन्ट वा फिर्तापछि क्षमता खुल्छ। यो जोखिम आरक्षण हो, वास्तविक भुक्तानी होइन।",
|
||||||
"amount": "रकम",
|
"amount": "रकम",
|
||||||
"applyFilter": "फिल्टर लागू गर्नुहोस्",
|
"applyFilter": "फिल्टर लागू गर्नुहोस्",
|
||||||
"backToAllPools": "सबै जोखिम पूलमा फर्कनुहोस्",
|
"backToAllPools": "सबै जोखिम पूलमा फर्कनुहोस्",
|
||||||
"backToList": "सूचीमा फर्कनुहोस्",
|
"backToList": "सूचीमा फर्कनुहोस्",
|
||||||
"capAmount": "क्याप",
|
"capAmount": "अधिकतम भुक्तानी सीमा",
|
||||||
"center": "जोखिम केन्द्र",
|
"center": "जोखिम केन्द्र",
|
||||||
"changeDraw": "ड्रअ परिवर्तन गर्नुहोस्",
|
"changeDraw": "ड्रअ परिवर्तन गर्नुहोस्",
|
||||||
"close": "बन्द",
|
"close": "बन्द",
|
||||||
@@ -48,7 +50,7 @@
|
|||||||
"lockLogsGroupedHint": "पूर्वनिर्धारित रूपमा टिकट अनुसार समूह। विस्तारित प्लेको संयोजन टिकट विवरणमा हेर्नुहोस्।",
|
"lockLogsGroupedHint": "पूर्वनिर्धारित रूपमा टिकट अनुसार समूह। विस्तारित प्लेको संयोजन टिकट विवरणमा हेर्नुहोस्।",
|
||||||
"lockLogsTitle": "जोखिम लक लग",
|
"lockLogsTitle": "जोखिम लक लग",
|
||||||
"lockReleaseSummary": "लक / रिलिज पङ्क्ति",
|
"lockReleaseSummary": "लक / रिलिज पङ्क्ति",
|
||||||
"lockedAmount": "लक गरिएको",
|
"lockedAmount": "हालको बाजीले सुरक्षित गरेको",
|
||||||
"lockedWorstCase": "लक गरिएको (अधिकतम भुक्तानी सुरक्षित)",
|
"lockedWorstCase": "लक गरिएको (अधिकतम भुक्तानी सुरक्षित)",
|
||||||
"manualCloseSuccess": "नम्बर बेटिङ म्यानुअल रूपमा बन्द गरियो",
|
"manualCloseSuccess": "नम्बर बेटिङ म्यानुअल रूपमा बन्द गरियो",
|
||||||
"no": "होइन",
|
"no": "होइन",
|
||||||
@@ -66,7 +68,10 @@
|
|||||||
"recoverSuccess": "नम्बर बेटिङ पुनर्स्थापित गरियो",
|
"recoverSuccess": "नम्बर बेटिङ पुनर्स्थापित गरियो",
|
||||||
"refresh": "रिफ्रेस",
|
"refresh": "रिफ्रेस",
|
||||||
"release": "रिलिज",
|
"release": "रिलिज",
|
||||||
"remainingAmount": "बाँकी",
|
"remainingAmount": "बाँकी भुक्तानी क्षमता",
|
||||||
|
"emptyPools": "यो फिल्टरमा नम्बर सीमा अभिलेख छैन। बाजी जोखिम सुरक्षित नभएका नम्बर सामान्यतया देखिँदैनन्।",
|
||||||
|
"emptyHighRiskPools": "हाल ८०% वा बढी प्रयोग भएको उच्च जोखिम नम्बर छैन।",
|
||||||
|
"emptySoldOutPools": "क्षमता अपुग वा म्यानुअल बन्दका कारण बिक्री रोकिएको नम्बर छैन।",
|
||||||
"remainingSellable": "बाँकी बिक्रीयोग्य",
|
"remainingSellable": "बाँकी बिक्रीयोग्य",
|
||||||
"riskFilter": "जोखिम फिल्टर",
|
"riskFilter": "जोखिम फिल्टर",
|
||||||
"provider": "प्रोभाइडर",
|
"provider": "प्रोभाइडर",
|
||||||
@@ -109,7 +114,7 @@
|
|||||||
"time": "समय",
|
"time": "समय",
|
||||||
"title": "जोखिम",
|
"title": "जोखिम",
|
||||||
"totalCap": "क्याप रकम",
|
"totalCap": "क्याप रकम",
|
||||||
"usageRatio": "प्रयोग अनुपात",
|
"usageRatio": "अकुपेन्सी अनुपात",
|
||||||
"view": "हेर्नुहोस्",
|
"view": "हेर्नुहोस्",
|
||||||
"viewDetail": "विवरण",
|
"viewDetail": "विवरण",
|
||||||
"viewTicket": "टिकट",
|
"viewTicket": "टिकट",
|
||||||
|
|||||||
@@ -3,6 +3,10 @@
|
|||||||
"listTitle": "平台账号列表",
|
"listTitle": "平台账号列表",
|
||||||
"createAdmin": "新建平台账号",
|
"createAdmin": "新建平台账号",
|
||||||
"searchPlaceholder": "按用户名 / 昵称 / 邮箱搜索",
|
"searchPlaceholder": "按用户名 / 昵称 / 邮箱搜索",
|
||||||
|
"roleFilter": {
|
||||||
|
"active": "当前按角色“{{role}}”筛选平台账号",
|
||||||
|
"clear": "清除角色筛选"
|
||||||
|
},
|
||||||
"loadFailed": "加载管理员列表失败",
|
"loadFailed": "加载管理员列表失败",
|
||||||
"roleLoadFailed": "加载角色列表失败",
|
"roleLoadFailed": "加载角色列表失败",
|
||||||
"nicknameRequired": "请填写昵称",
|
"nicknameRequired": "请填写昵称",
|
||||||
@@ -67,7 +71,9 @@
|
|||||||
"slug": "角色编码",
|
"slug": "角色编码",
|
||||||
"type": "类型",
|
"type": "类型",
|
||||||
"status": "状态",
|
"status": "状态",
|
||||||
"users": "关联用户",
|
"users": "关联账号",
|
||||||
|
"platformUsers": "平台 {{count}}",
|
||||||
|
"agentUsers": "代理 {{count}}",
|
||||||
"permissions": "权限数",
|
"permissions": "权限数",
|
||||||
"enabledAreas": "开放模块",
|
"enabledAreas": "开放模块",
|
||||||
"actions": "操作"
|
"actions": "操作"
|
||||||
@@ -128,6 +134,8 @@
|
|||||||
"accountDialog": {
|
"accountDialog": {
|
||||||
"createTitle": "新建管理员",
|
"createTitle": "新建管理员",
|
||||||
"editTitle": "编辑账号",
|
"editTitle": "编辑账号",
|
||||||
|
"createDescriptionPlatform": "须为平台账号指定至少一个平台角色。代理账号只能在“代理管理”中创建或绑定。登录账号仅可使用字母、数字、点、下划线与连字符,保存后为小写。",
|
||||||
|
"editDescriptionPlatform": "这里只编辑平台账号。代理账号只能在“代理管理”中创建或绑定。登录账号不可修改,留空密码表示不修改。",
|
||||||
"createDescription": "须为账号指定至少一个默认站点角色。登录账号仅可使用字母、数字、点、下划线与连字符,保存后为小写。",
|
"createDescription": "须为账号指定至少一个默认站点角色。登录账号仅可使用字母、数字、点、下划线与连字符,保存后为小写。",
|
||||||
"editDescription": "登录账号不可修改。留空密码表示不修改。",
|
"editDescription": "登录账号不可修改。留空密码表示不修改。",
|
||||||
"username": "登录账号",
|
"username": "登录账号",
|
||||||
@@ -144,6 +152,7 @@
|
|||||||
"sitePlaceholder": "选择该账号可访问的数据站点",
|
"sitePlaceholder": "选择该账号可访问的数据站点",
|
||||||
"rolesRequired": "角色(至少一项)",
|
"rolesRequired": "角色(至少一项)",
|
||||||
"rolesDescription": "创建后可在「分配角色」中按站点继续调整角色绑定。",
|
"rolesDescription": "创建后可在「分配角色」中按站点继续调整角色绑定。",
|
||||||
|
"rolesDescriptionPlatform": "这里只能选择平台角色;代理账号只能在“代理管理”中创建或绑定。",
|
||||||
"noRoles": "暂无角色数据,请等待列表加载完成后重试。"
|
"noRoles": "暂无角色数据,请等待列表加载完成后重试。"
|
||||||
},
|
},
|
||||||
"delete": {
|
"delete": {
|
||||||
|
|||||||
@@ -183,6 +183,7 @@
|
|||||||
"draws": "期号列表",
|
"draws": "期号列表",
|
||||||
"rules_plays": "投注规则",
|
"rules_plays": "投注规则",
|
||||||
"rules_odds": "赔率与基础回水",
|
"rules_odds": "赔率与基础回水",
|
||||||
|
"bet_providers": "开注商管理",
|
||||||
"rules": "投注规则",
|
"rules": "投注规则",
|
||||||
"risk_cap": "限额版本",
|
"risk_cap": "限额版本",
|
||||||
"risk": "风控中心",
|
"risk": "风控中心",
|
||||||
@@ -212,7 +213,8 @@
|
|||||||
"auth": {
|
"auth": {
|
||||||
"checking": "正在校验登录状态…",
|
"checking": "正在校验登录状态…",
|
||||||
"checkingShort": "正在进入工作台…",
|
"checkingShort": "正在进入工作台…",
|
||||||
"sessionExpired": "登录已失效,请重新登录"
|
"sessionExpired": "登录已失效,请重新登录",
|
||||||
|
"sessionReplaced": "该账号已在其他地方登录,当前会话已退出,请重新登录"
|
||||||
},
|
},
|
||||||
"confirm": {
|
"confirm": {
|
||||||
"cancel": "取消",
|
"cancel": "取消",
|
||||||
|
|||||||
@@ -304,7 +304,7 @@
|
|||||||
},
|
},
|
||||||
"hints": {
|
"hints": {
|
||||||
"manualReview": "开启后,RNG 开奖结果会先进入待审核,必须由后台人工发布。",
|
"manualReview": "开启后,RNG 开奖结果会先进入待审核,必须由后台人工发布。",
|
||||||
"cooldownMinutes": "结果发布后等待多久再进入 settling。填 0 表示发布后直接进入结算。",
|
"cooldownMinutes": "结果发布后等待多久再进入结算;填 0 表示立即结算。修改仅影响之后发布开奖结果的期号,已经进入冷静期的期号不会自动重算。",
|
||||||
"autoSettlement": "关闭后,tick 不会自动跑结算,只能由后台手工执行。",
|
"autoSettlement": "关闭后,tick 不会自动跑结算,只能由后台手工执行。",
|
||||||
"autoApprove": "冷静期结束并跑完结算后,是否自动将批次标记为已审核。",
|
"autoApprove": "冷静期结束并跑完结算后,是否自动将批次标记为已审核。",
|
||||||
"autoPayout": "批次已审核后,是否由 tick 自动把中奖金额打入玩家钱包。",
|
"autoPayout": "批次已审核后,是否由 tick 自动把中奖金额打入玩家钱包。",
|
||||||
@@ -387,7 +387,7 @@
|
|||||||
"big-small": "Big / Small",
|
"big-small": "Big / Small",
|
||||||
"position": "位置类玩法",
|
"position": "位置类玩法",
|
||||||
"box": "包号类玩法",
|
"box": "包号类玩法",
|
||||||
"jackpot": "奖池"
|
"attribute": "属性类玩法"
|
||||||
},
|
},
|
||||||
"validation": {
|
"validation": {
|
||||||
"minMaxInvalid": "{{playCode}}:最小下注额不能大于最大下注额",
|
"minMaxInvalid": "{{playCode}}:最小下注额不能大于最大下注额",
|
||||||
@@ -417,6 +417,7 @@
|
|||||||
"readOnlyHint": "当前限额与规则为只读,请先创建草稿。",
|
"readOnlyHint": "当前限额与规则为只读,请先创建草稿。",
|
||||||
"batchSwitchesTitle": "批量开关",
|
"batchSwitchesTitle": "批量开关",
|
||||||
"batchSwitchesDesc": "这里只会修改当前草稿;保存并发布后,玩家下注表会按新配置刷新。",
|
"batchSwitchesDesc": "这里只会修改当前草稿;保存并发布后,玩家下注表会按新配置刷新。",
|
||||||
|
"batchSwitchSavedLocal": "批量开关已写入当前草稿,仍需保存草稿并发布。",
|
||||||
"readOnlyDraftHint": "当前版本为只读,请先创建草稿。",
|
"readOnlyDraftHint": "当前版本为只读,请先创建草稿。",
|
||||||
"batchEnabledCount": "{{enabledCount}}/{{total}} 已开启",
|
"batchEnabledCount": "{{enabledCount}}/{{total}} 已开启",
|
||||||
"noPlayTypes": "暂无玩法",
|
"noPlayTypes": "暂无玩法",
|
||||||
@@ -486,6 +487,29 @@
|
|||||||
"title": "规则文案(多语言)",
|
"title": "规则文案(多语言)",
|
||||||
"description": "玩法 {{playCode}};修改内容只会暂存到草稿,保存并发布后才会生效。",
|
"description": "玩法 {{playCode}};修改内容只会暂存到草稿,保存并发布后才会生效。",
|
||||||
"apply": "应用到草稿"
|
"apply": "应用到草稿"
|
||||||
|
},
|
||||||
|
"help": {
|
||||||
|
"openGuide": "页面说明",
|
||||||
|
"guideTitle": "投注规则页面说明",
|
||||||
|
"guideDescription": "这个页面决定玩家能不能购买某个玩法、玩家看到的玩法名称和顺序,以及每一条下注允许输入的金额范围。它不控制赔率,也不控制奖池资格。",
|
||||||
|
"aria": "查看“{{field}}”的说明",
|
||||||
|
"fields": {
|
||||||
|
"status": "发布后控制玩家是否可以购买这个玩法。关闭后,前台会隐藏或禁用该玩法,后端也会拒绝新的下注;历史注单不受影响。",
|
||||||
|
"displayName": "玩家端展示的玩法名称。修改只进入当前草稿,保存并发布后才会展示给玩家。",
|
||||||
|
"order": "控制玩法在玩家端列表中的显示先后。数字越小通常越靠前;部分固定式投注表可能仍按自己的版面排列。",
|
||||||
|
"minBet": "玩家一次提交的一条玩法下注,允许输入的最小金额。低于该值时,新下注会被拒绝。",
|
||||||
|
"maxBet": "玩家一次提交的一条玩法下注,允许输入的最大金额。组合下注拆成多条后,系统会按实际展开结果重新计算。",
|
||||||
|
"batchSwitches": "按玩法分组一次开启或关闭多项玩法。操作只修改当前草稿,仍需保存并发布后才会对玩家生效。",
|
||||||
|
"batchGroup": "一次将“{{group}}”下 {{count}} 个玩法切换为同一状态;只修改当前草稿。"
|
||||||
|
},
|
||||||
|
"guide": {
|
||||||
|
"settingsTitle": "每个设置控制什么",
|
||||||
|
"settingsDescription": "状态控制是否可售;显示名称和排序控制玩家看到的内容;最小与最大下注控制每条下注可提交的金额范围。",
|
||||||
|
"batchTitle": "批量开关怎么用",
|
||||||
|
"batchDescription": "批量开关适合一次调整整组玩法。它只是帮你修改草稿里的多行数据,不会绕过保存和发布流程。",
|
||||||
|
"workflowTitle": "什么时候真正生效",
|
||||||
|
"workflowDescription": "线上生效版本只能查看。要修改时先创建草稿,在草稿中编辑并保存,最后发布。仅保存不会影响玩家;发布后只影响新的下注,历史注单继续使用下单时保存的规则快照。"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"prizeScopes": {
|
"prizeScopes": {
|
||||||
@@ -573,6 +597,28 @@
|
|||||||
"currentActive": "当前生效",
|
"currentActive": "当前生效",
|
||||||
"afterPublish": "发布后"
|
"afterPublish": "发布后"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"help": {
|
||||||
|
"openGuide": "页面说明",
|
||||||
|
"guideTitle": "赔率与基础回水页面说明",
|
||||||
|
"guideDescription": "这个页面设置普通中奖赔付倍数和平台基础回水。它不控制奖池额外派彩,也不决定玩法是否开放。",
|
||||||
|
"aria": "查看“{{field}}”的说明",
|
||||||
|
"fields": {
|
||||||
|
"provider": "选择赔率适用的供应商范围。GLOBAL 是通用默认值;供应商专属配置会覆盖通用值,没有专属配置时则继承 GLOBAL。",
|
||||||
|
"category": "只用来筛选 4D、3D、2D 等玩法范围,方便查找;切换分类本身不会修改配置。",
|
||||||
|
"playType": "选择当前要查看或修改的具体玩法。每个玩法可以有不同奖级赔率和基础回水。",
|
||||||
|
"multiplier": "普通中奖的赔付倍数。大致可理解为有效中奖金额乘以该倍数,最终金额仍按系统精度规则取整。",
|
||||||
|
"scopeMultiplier": "控制“{{scope}}”这个奖级中奖时使用的普通赔付倍数。它不是奖池爆池的额外派彩比例。",
|
||||||
|
"rebateRate": "平台基础回水比例。玩家或代理的额外回水会在其他配置中叠加;实际扣款和结算还会遵循当前账户模式。"
|
||||||
|
},
|
||||||
|
"guide": {
|
||||||
|
"scopeTitle": "先选对配置范围",
|
||||||
|
"scopeDescription": "先选择供应商、分类和玩法。分类只是筛选条件;供应商和玩法共同决定你正在查看或修改哪一组赔率。",
|
||||||
|
"settingsTitle": "赔率和回水控制什么",
|
||||||
|
"settingsDescription": "各奖级倍数控制普通中奖赔付,基础回水控制平台给下注的基础优惠。两者都不等于奖池页面中的爆池派彩。",
|
||||||
|
"workflowTitle": "什么时候真正生效",
|
||||||
|
"workflowDescription": "赔率使用版本化流程:先创建草稿、修改并保存,再发布。保存草稿不会影响玩家;发布后新注单使用新配置,已经成功下单的注单继续使用下单时保存的赔率和回水快照。"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"rebate": {
|
"rebate": {
|
||||||
|
|||||||
@@ -78,6 +78,8 @@
|
|||||||
"sequenceNo": "流水序号",
|
"sequenceNo": "流水序号",
|
||||||
"plannedDraw": "计划开奖",
|
"plannedDraw": "计划开奖",
|
||||||
"coolingEndTime": "冷静期结束",
|
"coolingEndTime": "冷静期结束",
|
||||||
|
"automaticSettlementAt": "自动结算时间:{{time}}",
|
||||||
|
"cooldownRemaining": "剩余 {{time}}",
|
||||||
"resultSource": "结果来源",
|
"resultSource": "结果来源",
|
||||||
"resultSourceOptions": {
|
"resultSourceOptions": {
|
||||||
"rng": "RNG 自动生成",
|
"rng": "RNG 自动生成",
|
||||||
@@ -92,6 +94,7 @@
|
|||||||
"published": "已发布"
|
"published": "已发布"
|
||||||
},
|
},
|
||||||
"currentResultVersion": "当前结果版本",
|
"currentResultVersion": "当前结果版本",
|
||||||
|
"resultVersion": "开奖结果版本",
|
||||||
"settleVersion": "结算版本",
|
"settleVersion": "结算版本",
|
||||||
"isReopened": "是否重开",
|
"isReopened": "是否重开",
|
||||||
"yes": "是",
|
"yes": "是",
|
||||||
@@ -109,8 +112,15 @@
|
|||||||
"rngDraw": "RNG开奖",
|
"rngDraw": "RNG开奖",
|
||||||
"rngAutoGenerate": "自动开奖",
|
"rngAutoGenerate": "自动开奖",
|
||||||
"reopen": "重开",
|
"reopen": "重开",
|
||||||
"cooldownReopen": "冷静期重开",
|
"cooldownReopen": "撤回开奖结果并重开",
|
||||||
|
"reopenUsageHint": "“撤回开奖结果并重开”仅用于已发布号码有误,需要重新生成和审核;它不会加快结算。",
|
||||||
"runSettlement": "触发结算",
|
"runSettlement": "触发结算",
|
||||||
|
"settleEarly": "提前结算",
|
||||||
|
"retrySettlement": "重新触发结算",
|
||||||
|
"settleEarlySuccess": "已跳过剩余确认窗口并开始结算",
|
||||||
|
"retrySettlementSuccess": "已重新触发本期结算",
|
||||||
|
"settlementManagePermissionRequired": "仅派彩管理人员可提前或重新触发结算。",
|
||||||
|
"settlementUnavailable": "当前状态为“{{status}}”,无需提供手动结算操作。",
|
||||||
"processing": "处理中…",
|
"processing": "处理中…",
|
||||||
"actionSuccess": "{{name}}成功",
|
"actionSuccess": "{{name}}成功",
|
||||||
"actionFailed": "{{name}}失败",
|
"actionFailed": "{{name}}失败",
|
||||||
@@ -121,7 +131,8 @@
|
|||||||
"currentPayout": "当期派彩合计",
|
"currentPayout": "当期派彩合计",
|
||||||
"grossProfit": "近似毛损益",
|
"grossProfit": "近似毛损益",
|
||||||
"settlementBatchList": "结算记录",
|
"settlementBatchList": "结算记录",
|
||||||
"relatedSettlementBatches": "结算批次",
|
"relatedSettlementBatches": "本期结算处理记录",
|
||||||
|
"settlementBatchesHint": "通常按本期有下注的开注商生成处理记录;点击批次编号可查看对应注单明细。",
|
||||||
"noSettlementBatches": "暂无结算批次记录。",
|
"noSettlementBatches": "暂无结算批次记录。",
|
||||||
"ticketCount": "票数",
|
"ticketCount": "票数",
|
||||||
"winCount": "中奖数",
|
"winCount": "中奖数",
|
||||||
@@ -153,7 +164,7 @@
|
|||||||
"clear": "清空",
|
"clear": "清空",
|
||||||
"saveDraft": "保存草稿",
|
"saveDraft": "保存草稿",
|
||||||
"saving": "保存中…",
|
"saving": "保存中…",
|
||||||
"pendingBatches": "待发布",
|
"pendingBatches": "待审核结果(尚未对玩家生效)",
|
||||||
"noPendingBatches": "暂无",
|
"noPendingBatches": "暂无",
|
||||||
"batchId": "批次",
|
"batchId": "批次",
|
||||||
"numberCount": "号码条数",
|
"numberCount": "号码条数",
|
||||||
@@ -173,6 +184,8 @@
|
|||||||
"checkBeforePublish": "请核对以下号码后再发布",
|
"checkBeforePublish": "请核对以下号码后再发布",
|
||||||
"checkBeforePublishDesc": "确认无误后点击发布。",
|
"checkBeforePublishDesc": "确认无误后点击发布。",
|
||||||
"publishedView": "查看已发布展示",
|
"publishedView": "查看已发布展示",
|
||||||
|
"officialResultsTitle": "正式开奖结果(已对玩家显示)",
|
||||||
|
"officialResultsHint": "这里只展示已经发布并对玩家生效的号码;待审核草稿不会出现在这里。",
|
||||||
"confirmPublish": "确认发布",
|
"confirmPublish": "确认发布",
|
||||||
"submitting": "提交中…",
|
"submitting": "提交中…",
|
||||||
"publishSuccess": "已发布 · {{drawNo}} · 状态 {{status}}",
|
"publishSuccess": "已发布 · {{drawNo}} · 状态 {{status}}",
|
||||||
@@ -181,13 +194,27 @@
|
|||||||
"subnav": {
|
"subnav": {
|
||||||
"status": "概览",
|
"status": "概览",
|
||||||
"results": "开奖结果",
|
"results": "开奖结果",
|
||||||
"finance": "收支",
|
"tickets": "下注情况",
|
||||||
|
"finance": "收支结算",
|
||||||
"review": "开奖发布",
|
"review": "开奖发布",
|
||||||
"riskOccupancy": "风控占用",
|
"riskOccupancy": "风控占用",
|
||||||
"riskLockLogs": "占用流水",
|
"riskLockLogs": "占用流水",
|
||||||
"riskHot": "热门号码",
|
"riskHot": "热门号码",
|
||||||
"riskSoldOut": "售罄号码",
|
"riskSoldOut": "售罄号码",
|
||||||
"riskPools": "风险池"
|
"riskPools": "号码限额"
|
||||||
|
},
|
||||||
|
"lifecycle": {
|
||||||
|
"currentStage": "当前阶段:{{status}}",
|
||||||
|
"pending": "本期尚未开放下注。",
|
||||||
|
"open": "玩家可以下注;到封盘时间后系统会停止接单。",
|
||||||
|
"closing": "本期已停止接单,等待计划开奖时间。",
|
||||||
|
"closed": "已封盘待开奖,系统将生成或等待录入开奖结果。",
|
||||||
|
"drawing": "系统正在生成开奖结果。",
|
||||||
|
"review": "开奖结果尚在审核,发布前不会对玩家生效。",
|
||||||
|
"cooldown": "结果已发布并进入核错窗口;到期会自动结算,也可由派彩管理人员提前结算。",
|
||||||
|
"settling": "正在生成或处理本期结算记录,页面每 5 秒自动更新。",
|
||||||
|
"settled": "本期结算与派彩流程已完成。",
|
||||||
|
"cancelled": "本期已取消,不再进入开奖与结算流程。"
|
||||||
},
|
},
|
||||||
"statusOptions": {
|
"statusOptions": {
|
||||||
"all": "不限",
|
"all": "不限",
|
||||||
@@ -216,10 +243,14 @@
|
|||||||
"cancelDrawDescription": "取消后该期将不再开奖,请确认无未处理注单风险。",
|
"cancelDrawDescription": "取消后该期将不再开奖,请确认无未处理注单风险。",
|
||||||
"rngDrawTitle": "确认 RNG 自动生成开奖?",
|
"rngDrawTitle": "确认 RNG 自动生成开奖?",
|
||||||
"rngDrawDescription": "将按系统规则生成本期开奖号码并进入后续流程。",
|
"rngDrawDescription": "将按系统规则生成本期开奖号码并进入后续流程。",
|
||||||
"reopenTitle": "确认冷静期重开?",
|
"reopenTitle": "确认撤回开奖结果并重开?",
|
||||||
"reopenDescription": "重开后需重新审核/发布结果,可能影响已展示的开奖信息。",
|
"reopenDescription": "仅在已发布号码有误时使用。操作后期号回到已封盘待开奖,需要重新生成、审核并发布结果;这不会加快结算。",
|
||||||
"runSettlementTitle": "确认触发结算?",
|
"runSettlementTitle": "确认触发结算?",
|
||||||
"runSettlementDescription": "将按已发布开奖结果生成本期结算批次。",
|
"runSettlementDescription": "将按已发布开奖结果生成本期结算批次。",
|
||||||
|
"settleEarlyTitle": "确认提前结算?",
|
||||||
|
"settleEarlyDescription": "将跳过本期剩余的开奖结果核错窗口,立即生成结算处理记录,并继续自动审核与派彩。请先确认正式开奖结果无误。",
|
||||||
|
"retrySettlementTitle": "确认重新触发结算?",
|
||||||
|
"retrySettlementDescription": "将幂等重试本期结算处理,不会重复生成已存在的有效批次。",
|
||||||
"saveManualDraftTitle": "确认保存人工开奖草稿?",
|
"saveManualDraftTitle": "确认保存人工开奖草稿?",
|
||||||
"saveManualDraftDescription": "将写入 23 个开奖号码草稿,提交后进入审核流程。",
|
"saveManualDraftDescription": "将写入 23 个开奖号码草稿,提交后进入审核流程。",
|
||||||
"publishTitle": "确认发布开奖结果?",
|
"publishTitle": "确认发布开奖结果?",
|
||||||
|
|||||||
@@ -93,5 +93,35 @@
|
|||||||
"time": "时间",
|
"time": "时间",
|
||||||
"ticketNo": "注单",
|
"ticketNo": "注单",
|
||||||
"player": "玩家",
|
"player": "玩家",
|
||||||
"contributionAmount": "蓄水额"
|
"contributionAmount": "蓄水额",
|
||||||
|
"help": {
|
||||||
|
"openGuide": "页面说明",
|
||||||
|
"guideTitle": "奖池页面说明",
|
||||||
|
"guideDescription": "奖池是普通赔率奖金之外的额外奖励资金。本页按币种控制奖池如何累积、何时释放,以及如何查看相关流水。",
|
||||||
|
"aria": "查看“{{field}}”说明",
|
||||||
|
"fields": {
|
||||||
|
"currentAmount": "该币种奖池当前累计的可用余额。它不能通过普通保存直接修改,只能由合格注单蓄水、爆池派彩或带原因的余额调整改变。",
|
||||||
|
"status": "控制该币种奖池是否参与后续业务。关闭后新成功注单不再蓄水,自动爆池与手动爆池也不会执行;现有余额会保留。",
|
||||||
|
"contributionRate": "成功下注且达到奖池最低下注额后,系统按名义下注额乘以该百分比计入奖池。这是内部计提,不会在下注额之外再向玩家多扣一笔。",
|
||||||
|
"minBetAmount": "只决定一笔成功注单是否参与奖池蓄水,不决定该玩法能否下注。真正的玩法下注上下限在“投注规则”页面配置。",
|
||||||
|
"triggerThreshold": "奖池余额达到此金额后,如果当期存在头奖中奖注单,可按“达到阈值”触发爆池。只有余额达到阈值但没有头奖得主时不会派发。",
|
||||||
|
"payoutRate": "达到阈值、组合玩法或手动爆池时,从爆池前余额中释放的百分比。连续未爆强制触发走全池释放,不使用此比例。",
|
||||||
|
"forceTriggerGap": "从上次爆池后累计的已结算期数达到此值后,下一次出现头奖得主时可强制爆池。设为 0 表示不启用此条件。",
|
||||||
|
"comboTriggerPlays": "勾选的玩法只要在某期产生头奖得主,就可在未达到余额阈值时触发爆池。它只决定触发条件,不限定最终哪些头奖得主参与分配。",
|
||||||
|
"balanceAdjustment": "人工增加或减少当前奖池余额。必须填写原因,每次操作都会写入调整流水;减少后余额不能小于 0。",
|
||||||
|
"adjustmentDirection": "选择本次人工调整是增加奖池余额还是减少奖池余额。",
|
||||||
|
"adjustmentAmount": "本次人工增加或减少的主币金额,不是调整后的目标余额。",
|
||||||
|
"adjustmentReason": "记录为什么要人工调整奖池,至少填写 3 个字符,后续可用于审计和对账。",
|
||||||
|
"manualBurst": "仅超级管理员可用。指定已发布结果且已有结算批次、存在头奖得主的期号,按当前派彩比例人工释放奖池。",
|
||||||
|
"records": "查看只读的奖池派彩记录和逐笔蓄水记录,可按期号筛选并导出。"
|
||||||
|
},
|
||||||
|
"guide": {
|
||||||
|
"settingsTitle": "奖池如何累积与触发",
|
||||||
|
"settingsDescription": "成功注单先按蓄水条件增加奖池;开奖结算时必须先有头奖得主,再判断阈值、连续未爆或组合玩法条件。",
|
||||||
|
"actionsTitle": "人工操作与流水",
|
||||||
|
"actionsDescription": "余额调整和手动爆池都会直接改变真实奖池资金,请先确认币种、金额、期号和原因。",
|
||||||
|
"effectiveTitle": "生效方式",
|
||||||
|
"effectiveDescription": "奖池配置没有草稿和发布流程,点击保存后立即用于后续蓄水与尚未完成的奖池结算。已经卖票但尚未结算的期号,也可能受到新触发参数和派彩比例影响。"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -90,10 +90,39 @@
|
|||||||
"createUsernameRequired": "请填写登录账号",
|
"createUsernameRequired": "请填写登录账号",
|
||||||
"createSitePlayerIdOptional": "选填,留空将自动生成",
|
"createSitePlayerIdOptional": "选填,留空将自动生成",
|
||||||
"createSuccessNative": "玩家 {{name}} 已创建,请使用彩票端登录",
|
"createSuccessNative": "玩家 {{name}} 已创建,请使用彩票端登录",
|
||||||
|
"fieldHelpAria": "查看“{{field}}”说明",
|
||||||
|
"helpFundingWallet": "玩家从主站通过 SSO 进入彩票;投注资金使用主站转入的彩票钱包。必须填写与主站一致的玩家 ID。",
|
||||||
|
"helpFundingCredit": "玩家直接使用彩票端账号密码登录;投注占用归属代理下发的授信额度,不使用主站钱包。",
|
||||||
|
"helpSiteCode": "玩家所属的接入站点代码,决定 SSO、钱包接口、数据范围和可选代理。它是站点代码,不一定是数字。",
|
||||||
|
"helpAgentNode": "决定玩家归入哪条代理线,影响管理权限和报表归属;信用盘还影响可下发授信与账期结算。没有细分代理时选站点根节点。",
|
||||||
|
"helpSitePlayerIdWallet": "主站为玩家提供的永久唯一标识。钱包盘必须填写,并且要和主站 SSO 传来的值完全一致。",
|
||||||
|
"helpSitePlayerIdCredit": "彩票端为玩家保留的站内唯一标识。信用盘可以留空,保存时系统会自动生成。",
|
||||||
|
"helpUsernameWallet": "钱包盘通过主站 SSO 登录;这里是选填资料,不作为彩票端登录账号。",
|
||||||
|
"helpUsernameCredit": "信用盘玩家在彩票端登录时使用的账号;同一站点内不能重复。",
|
||||||
|
"helpPassword": "信用盘玩家首次登录使用的密码,至少 6 位;钱包盘不需要彩票端密码。",
|
||||||
|
"helpCreditLimit": "代理允许玩家使用的最大信用额度。下注会占用额度,不能超过归属代理当前可下发的额度。",
|
||||||
|
"helpNickname": "用于后台和玩家端显示的名称,不参与登录和身份匹配,可以留空。",
|
||||||
|
"helpDefaultCurrency": "这个玩家的钱包、信用和投注金额所使用的币种。修改它不会自动兑换已有金额。",
|
||||||
|
"helpStatus": "正常状态可以登录和下注;冻结与封禁都会阻止玩家正常登录和使用。",
|
||||||
"editCreditLimit": "授信额度",
|
"editCreditLimit": "授信额度",
|
||||||
"editDetailLoading": "加载玩家详情…",
|
"editDetailLoading": "加载玩家详情…",
|
||||||
"usernameInvalidCharset": "登录账号只能使用字母、数字、点(.)、下划线和连字符",
|
"usernameInvalidCharset": "登录账号只能使用字母、数字、点(.)、下划线和连字符",
|
||||||
"passwordMinLength": "初始密码至少 6 位",
|
"passwordMinLength": "初始密码至少 6 位",
|
||||||
|
"resetPassword": "重置登录密码",
|
||||||
|
"resetPasswordTitle": "重置玩家登录密码",
|
||||||
|
"resetPasswordDescription": "为玩家 {{name}} 设置新的彩票端登录密码。",
|
||||||
|
"resetPasswordNew": "新密码",
|
||||||
|
"resetPasswordConfirm": "确认新密码",
|
||||||
|
"resetPasswordPlaceholder": "至少 6 位",
|
||||||
|
"resetPasswordConfirmPlaceholder": "再次输入新密码",
|
||||||
|
"resetPasswordSessionNotice": "保存后,该玩家当前所有彩票端会话会立即失效,需要使用新密码重新登录。",
|
||||||
|
"resetPasswordRequired": "请填写新密码",
|
||||||
|
"resetPasswordMinLength": "新密码至少 6 位",
|
||||||
|
"resetPasswordMismatch": "两次输入的新密码不一致",
|
||||||
|
"resetPasswordSubmit": "确认重置",
|
||||||
|
"resetPasswordSaving": "正在重置…",
|
||||||
|
"resetPasswordSuccess": "玩家 {{name}} 的登录密码已重置",
|
||||||
|
"resetPasswordFailed": "重置密码失败",
|
||||||
"creditLimitInvalid": "授信额度必须为不小于 0 的整数",
|
"creditLimitInvalid": "授信额度必须为不小于 0 的整数",
|
||||||
"creditCapLoading": "代理可下发额度加载中,请稍后再保存",
|
"creditCapLoading": "代理可下发额度加载中,请稍后再保存",
|
||||||
"creditLimitExceeded": "授信额度不能超过当前代理可下发额度",
|
"creditLimitExceeded": "授信额度不能超过当前代理可下发额度",
|
||||||
|
|||||||
@@ -14,7 +14,9 @@
|
|||||||
"poolsTitle": "风险池",
|
"poolsTitle": "风险池",
|
||||||
"hotPageTitle": "热门号码监控",
|
"hotPageTitle": "热门号码监控",
|
||||||
"soldOutPageTitle": "售罄号码列表",
|
"soldOutPageTitle": "售罄号码列表",
|
||||||
"allPoolsPageTitle": "全部风险池",
|
"allPoolsPageTitle": "号码赔付限额(风险池)",
|
||||||
|
"poolExplanationTitle": "这里控制每个号码还能承接多少潜在赔付",
|
||||||
|
"poolExplanation": "每个开注商、每个四位号码都有最高潜在赔付额度。下注会按最坏赔付预留额度;额度不足时该号码停售,结算或退款后释放。这里的金额是风险预留,不是实际派彩金额。",
|
||||||
"sourceReasonOptions": {
|
"sourceReasonOptions": {
|
||||||
"ticket_place": "下注占用",
|
"ticket_place": "下注占用",
|
||||||
"ticket_rollback": "注单回滚",
|
"ticket_rollback": "注单回滚",
|
||||||
@@ -36,10 +38,13 @@
|
|||||||
"sortRemainingAsc": "剩余额 ↑(紧俏)",
|
"sortRemainingAsc": "剩余额 ↑(紧俏)",
|
||||||
"sortNumberAsc": "号码 ↑",
|
"sortNumberAsc": "号码 ↑",
|
||||||
"loadPoolsFailed": "加载风险池失败",
|
"loadPoolsFailed": "加载风险池失败",
|
||||||
"capAmount": "封顶",
|
"capAmount": "最高赔付额度",
|
||||||
"lockedAmount": "已占用",
|
"lockedAmount": "当前下注预留",
|
||||||
"remainingAmount": "剩余",
|
"remainingAmount": "剩余可承接赔付",
|
||||||
"usageRatio": "占用比",
|
"usageRatio": "占用比例",
|
||||||
|
"emptyPools": "当前筛选下没有号码额度记录;未产生下注预留的号码通常不会列出。",
|
||||||
|
"emptyHighRiskPools": "当前没有占用比例达到 80% 的高风险号码。",
|
||||||
|
"emptySoldOutPools": "当前没有因额度不足或人工关闭而停售的号码。",
|
||||||
"poolStatus": "状态",
|
"poolStatus": "状态",
|
||||||
"soldOut": "售罄",
|
"soldOut": "售罄",
|
||||||
"warning": "预警",
|
"warning": "预警",
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
import { isAxiosError } from "axios";
|
import { isAxiosError } from "axios";
|
||||||
import { toast } from "sonner";
|
|
||||||
|
|
||||||
import i18n from "@/i18n";
|
|
||||||
import { getAdminSessionState } from "@/stores/admin-session";
|
import { getAdminSessionState } from "@/stores/admin-session";
|
||||||
import { readToken } from "@/stores/admin-token";
|
import { readToken } from "@/stores/admin-token";
|
||||||
import { isApiEnvelope } from "@/types/api/envelope";
|
import { isApiEnvelope } from "@/types/api/envelope";
|
||||||
@@ -13,6 +11,9 @@ export const ADMIN_UNAUTHENTICATED_CODE = 8110;
|
|||||||
/** 与后端 {@see ErrorCode::AdminAccountDisabled} 一致 */
|
/** 与后端 {@see ErrorCode::AdminAccountDisabled} 一致 */
|
||||||
export const ADMIN_ACCOUNT_DISABLED_CODE = 8113;
|
export const ADMIN_ACCOUNT_DISABLED_CODE = 8113;
|
||||||
|
|
||||||
|
/** 与后端 ErrorCode::AdminSessionReplaced 一致 */
|
||||||
|
export const ADMIN_SESSION_REPLACED_CODE = 8115;
|
||||||
|
|
||||||
/** 登录验证码错误等,HTTP 可能为 401/422,不应踢出会话 */
|
/** 登录验证码错误等,HTTP 可能为 401/422,不应踢出会话 */
|
||||||
const LOGIN_FORM_ERROR_CODES = new Set([8111, 8112]);
|
const LOGIN_FORM_ERROR_CODES = new Set([8111, 8112]);
|
||||||
|
|
||||||
@@ -31,7 +32,8 @@ export function isAdminAuthRejected(err: unknown): boolean {
|
|||||||
if (err instanceof LotteryApiBizError) {
|
if (err instanceof LotteryApiBizError) {
|
||||||
return (
|
return (
|
||||||
err.code === ADMIN_UNAUTHENTICATED_CODE ||
|
err.code === ADMIN_UNAUTHENTICATED_CODE ||
|
||||||
err.code === ADMIN_ACCOUNT_DISABLED_CODE
|
err.code === ADMIN_ACCOUNT_DISABLED_CODE ||
|
||||||
|
err.code === ADMIN_SESSION_REPLACED_CODE
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -54,7 +56,8 @@ export function isAdminAuthRejected(err: unknown): boolean {
|
|||||||
|
|
||||||
if (
|
if (
|
||||||
envelopeCode === ADMIN_UNAUTHENTICATED_CODE ||
|
envelopeCode === ADMIN_UNAUTHENTICATED_CODE ||
|
||||||
envelopeCode === ADMIN_ACCOUNT_DISABLED_CODE
|
envelopeCode === ADMIN_ACCOUNT_DISABLED_CODE ||
|
||||||
|
envelopeCode === ADMIN_SESSION_REPLACED_CODE
|
||||||
) {
|
) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -62,7 +65,8 @@ export function isAdminAuthRejected(err: unknown): boolean {
|
|||||||
if (isApiEnvelope(body) && body.code !== 0) {
|
if (isApiEnvelope(body) && body.code !== 0) {
|
||||||
return (
|
return (
|
||||||
body.code === ADMIN_UNAUTHENTICATED_CODE ||
|
body.code === ADMIN_UNAUTHENTICATED_CODE ||
|
||||||
body.code === ADMIN_ACCOUNT_DISABLED_CODE
|
body.code === ADMIN_ACCOUNT_DISABLED_CODE ||
|
||||||
|
body.code === ADMIN_SESSION_REPLACED_CODE
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -78,12 +82,32 @@ export function isAdminAuthRejected(err: unknown): boolean {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function redirectToAdminLogin(): void {
|
function adminAuthErrorCode(err: unknown): number | null {
|
||||||
|
if (err instanceof LotteryApiBizError) {
|
||||||
|
return err.code;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isAxiosError(err)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
const body = err.response?.data;
|
||||||
|
if (!body || typeof body !== "object" || !("code" in body)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
const code = (body as { code?: unknown }).code;
|
||||||
|
return typeof code === "number" ? code : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function redirectToAdminLogin(
|
||||||
|
reason: "expired" | "replaced" = "expired",
|
||||||
|
): void {
|
||||||
if (typeof window === "undefined" || isAdminLoginPath()) {
|
if (typeof window === "undefined" || isAdminLoginPath()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const loginPath = "/admin/login";
|
const loginPath = "/admin/login?session=" + reason;
|
||||||
if (window.location.pathname !== loginPath) {
|
if (window.location.pathname !== loginPath) {
|
||||||
window.location.replace(loginPath);
|
window.location.replace(loginPath);
|
||||||
}
|
}
|
||||||
@@ -92,7 +116,7 @@ export function redirectToAdminLogin(): void {
|
|||||||
/**
|
/**
|
||||||
* 清除本地会话并跳转登录页。可在 axios 拦截器、/auth/me 刷新等任意上下文调用。
|
* 清除本地会话并跳转登录页。可在 axios 拦截器、/auth/me 刷新等任意上下文调用。
|
||||||
*/
|
*/
|
||||||
export function handleAdminAuthRejected(): void {
|
export function handleAdminAuthRejected(err?: unknown): void {
|
||||||
if (typeof window === "undefined" || isAdminLoginPath()) {
|
if (typeof window === "undefined" || isAdminLoginPath()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -104,21 +128,19 @@ export function handleAdminAuthRejected(): void {
|
|||||||
|
|
||||||
const session = getAdminSessionState();
|
const session = getAdminSessionState();
|
||||||
const hadSession = session.bearerToken != null || readToken() != null;
|
const hadSession = session.bearerToken != null || readToken() != null;
|
||||||
void fetch("/api/v1/admin/auth/logout", { method: "POST" }).catch(() => {
|
void fetch("/api/v1/admin/auth/logout", {
|
||||||
|
method: "POST",
|
||||||
|
keepalive: true,
|
||||||
|
}).catch(() => {
|
||||||
// Best-effort HttpOnly cookie cleanup; the local session is cleared below.
|
// Best-effort HttpOnly cookie cleanup; the local session is cleared below.
|
||||||
});
|
});
|
||||||
session.clearSession();
|
session.clearSession();
|
||||||
|
|
||||||
if (hadSession) {
|
const reason =
|
||||||
toast.error(
|
hadSession && adminAuthErrorCode(err) === ADMIN_SESSION_REPLACED_CODE
|
||||||
i18n.t("auth.sessionExpired", {
|
? "replaced"
|
||||||
ns: "common",
|
: "expired";
|
||||||
defaultValue: "Sign-in expired. Please log in again.",
|
redirectToAdminLogin(reason);
|
||||||
}),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
redirectToAdminLogin();
|
|
||||||
|
|
||||||
queueMicrotask(() => {
|
queueMicrotask(() => {
|
||||||
authRejectHandling = false;
|
authRejectHandling = false;
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ adminHttp.interceptors.response.use(
|
|||||||
(response) => response,
|
(response) => response,
|
||||||
(error: unknown) => {
|
(error: unknown) => {
|
||||||
if (isAdminAuthRejected(error)) {
|
if (isAdminAuthRejected(error)) {
|
||||||
handleAdminAuthRejected();
|
handleAdminAuthRejected(error);
|
||||||
}
|
}
|
||||||
if (isAxiosError(error) && typeof window !== "undefined") {
|
if (isAxiosError(error) && typeof window !== "undefined") {
|
||||||
const status = error.response?.status;
|
const status = error.response?.status;
|
||||||
@@ -43,7 +43,7 @@ adminHttp.interceptors.response.use(
|
|||||||
|
|
||||||
function rejectAfterAuthCheck(err: unknown): never {
|
function rejectAfterAuthCheck(err: unknown): never {
|
||||||
if (isAdminAuthRejected(err)) {
|
if (isAdminAuthRejected(err)) {
|
||||||
handleAdminAuthRejected();
|
handleAdminAuthRejected(err);
|
||||||
}
|
}
|
||||||
throw err;
|
throw err;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ const NAV_SEGMENT_I18N_KEYS: Record<string, string> = {
|
|||||||
draws: "draws",
|
draws: "draws",
|
||||||
rules_plays: "rules_plays",
|
rules_plays: "rules_plays",
|
||||||
rules_odds: "rules_odds",
|
rules_odds: "rules_odds",
|
||||||
|
bet_providers: "bet_providers",
|
||||||
jackpot: "jackpot",
|
jackpot: "jackpot",
|
||||||
risk_cap: "risk_cap",
|
risk_cap: "risk_cap",
|
||||||
risk: "risk",
|
risk: "risk",
|
||||||
|
|||||||
@@ -94,6 +94,12 @@ export async function proxyLotteryApi(
|
|||||||
"",
|
"",
|
||||||
expiredAdminTokenCookieOptions(isSecureRequest(request)),
|
expiredAdminTokenCookieOptions(isSecureRequest(request)),
|
||||||
);
|
);
|
||||||
|
} else if (path.startsWith("v1/admin/") && upstream.status === 401) {
|
||||||
|
response.cookies.set(
|
||||||
|
ADMIN_TOKEN_STORAGE_KEY,
|
||||||
|
"",
|
||||||
|
expiredAdminTokenCookieOptions(isSecureRequest(request)),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return response;
|
return response;
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { useCallback, useMemo, useState } from "react";
|
import { useCallback, useMemo, useState } from "react";
|
||||||
|
import Link from "next/link";
|
||||||
import { KeyRound, Pencil, Trash2 } from "lucide-react";
|
import { KeyRound, Pencil, Trash2 } from "lucide-react";
|
||||||
import { useConfirmAction } from "@/hooks/use-confirm-action";
|
import { useConfirmAction } from "@/hooks/use-confirm-action";
|
||||||
import { useExportLabels } from "@/hooks/use-export-labels";
|
import { useExportLabels } from "@/hooks/use-export-labels";
|
||||||
@@ -334,7 +335,34 @@ export function AdminRolesConsole(): React.ReactElement {
|
|||||||
{role.status === 1 ? t("status.enabled") : t("status.disabled")}
|
{role.status === 1 ? t("status.enabled") : t("status.disabled")}
|
||||||
</AdminStatusBadge>
|
</AdminStatusBadge>
|
||||||
</TableCell>
|
</TableCell>
|
||||||
<TableCell className="tabular-nums">{role.user_count}</TableCell>
|
<TableCell>
|
||||||
|
<div className="flex flex-col gap-1 text-xs tabular-nums">
|
||||||
|
{role.platform_user_count > 0 ? (
|
||||||
|
<Link
|
||||||
|
className="text-primary underline-offset-4 hover:underline"
|
||||||
|
href={`/admin/admin-users?role_slug=${encodeURIComponent(role.slug)}`}
|
||||||
|
>
|
||||||
|
{t("roleTable.platformUsers", { count: role.platform_user_count })}
|
||||||
|
</Link>
|
||||||
|
) : (
|
||||||
|
<span className="text-muted-foreground">
|
||||||
|
{t("roleTable.platformUsers", { count: 0 })}
|
||||||
|
</span>
|
||||||
|
)}
|
||||||
|
{role.agent_user_count > 0 ? (
|
||||||
|
<Link
|
||||||
|
className="text-primary underline-offset-4 hover:underline"
|
||||||
|
href="/admin/agents"
|
||||||
|
>
|
||||||
|
{t("roleTable.agentUsers", { count: role.agent_user_count })}
|
||||||
|
</Link>
|
||||||
|
) : (
|
||||||
|
<span className="text-muted-foreground">
|
||||||
|
{t("roleTable.agentUsers", { count: 0 })}
|
||||||
|
</span>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
</TableCell>
|
||||||
<TableCell className="tabular-nums">
|
<TableCell className="tabular-nums">
|
||||||
{countEnabledAreas(role.permission_slugs, catalog, isSuperAdmin)}
|
{countEnabledAreas(role.permission_slugs, catalog, isSuperAdmin)}
|
||||||
</TableCell>
|
</TableCell>
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { KeyRound, Pencil, Trash2 } from "lucide-react";
|
import { KeyRound, Pencil, Trash2 } from "lucide-react";
|
||||||
|
import { useRouter } from "next/navigation";
|
||||||
import { useCallback, useMemo, useState } from "react";
|
import { useCallback, useMemo, useState } from "react";
|
||||||
import { useConfirmAction } from "@/hooks/use-confirm-action";
|
import { useConfirmAction } from "@/hooks/use-confirm-action";
|
||||||
import { useAdminSiteCodeOptions } from "@/hooks/use-admin-site-code-options";
|
import { useAdminSiteCodeOptions } from "@/hooks/use-admin-site-code-options";
|
||||||
@@ -65,7 +66,11 @@ import type {
|
|||||||
} from "@/types/api/index";
|
} from "@/types/api/index";
|
||||||
import { LotteryApiBizError } from "@/types/api/errors";
|
import { LotteryApiBizError } from "@/types/api/errors";
|
||||||
|
|
||||||
export function AdminUsersConsole(): React.ReactElement {
|
type AdminUsersConsoleProps = {
|
||||||
|
roleSlug?: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export function AdminUsersConsole({ roleSlug = "" }: AdminUsersConsoleProps): React.ReactElement {
|
||||||
const { t } = useTranslation(["adminUsers", "common"]);
|
const { t } = useTranslation(["adminUsers", "common"]);
|
||||||
const tRef = useTranslationRef(["adminUsers", "common"]);
|
const tRef = useTranslationRef(["adminUsers", "common"]);
|
||||||
const { request: requestConfirm, ConfirmDialog } = useConfirmAction();
|
const { request: requestConfirm, ConfirmDialog } = useConfirmAction();
|
||||||
@@ -124,6 +129,8 @@ export function AdminUsersConsole(): React.ReactElement {
|
|||||||
() => new Map((catalog?.roles ?? []).map((role) => [role.slug, role.name])),
|
() => new Map((catalog?.roles ?? []).map((role) => [role.slug, role.name])),
|
||||||
[catalog],
|
[catalog],
|
||||||
);
|
);
|
||||||
|
const assignableRoles = catalog?.assignable_roles ?? [];
|
||||||
|
const router = useRouter();
|
||||||
|
|
||||||
const defaultSiteId = useMemo(() => siteOptions[0]?.id ?? null, [siteOptions]);
|
const defaultSiteId = useMemo(() => siteOptions[0]?.id ?? null, [siteOptions]);
|
||||||
const roleEditSiteLabel = useMemo(() => {
|
const roleEditSiteLabel = useMemo(() => {
|
||||||
@@ -168,6 +175,7 @@ export function AdminUsersConsole(): React.ReactElement {
|
|||||||
page,
|
page,
|
||||||
per_page: perPage,
|
per_page: perPage,
|
||||||
keyword: query.trim() || undefined,
|
keyword: query.trim() || undefined,
|
||||||
|
role_slug: roleSlug || undefined,
|
||||||
}),
|
}),
|
||||||
]);
|
]);
|
||||||
setCatalog(catalogData);
|
setCatalog(catalogData);
|
||||||
@@ -183,11 +191,11 @@ export function AdminUsersConsole(): React.ReactElement {
|
|||||||
} finally {
|
} finally {
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
}
|
}
|
||||||
}, [page, perPage, query, tRef]);
|
}, [page, perPage, query, roleSlug, tRef]);
|
||||||
|
|
||||||
useAsyncEffect(() => {
|
useAsyncEffect(() => {
|
||||||
void load();
|
void load();
|
||||||
}, [page, perPage, query]);
|
}, [page, perPage, query, roleSlug]);
|
||||||
|
|
||||||
function toggleFormCreateRole(slug: string, checked: boolean): void {
|
function toggleFormCreateRole(slug: string, checked: boolean): void {
|
||||||
setFormCreateRoles((prev) => {
|
setFormCreateRoles((prev) => {
|
||||||
@@ -446,6 +454,23 @@ export function AdminUsersConsole(): React.ReactElement {
|
|||||||
</CardHeader>
|
</CardHeader>
|
||||||
<CardContent className="admin-list-content">
|
<CardContent className="admin-list-content">
|
||||||
{err ? <p className="text-sm text-destructive">{err}</p> : null}
|
{err ? <p className="text-sm text-destructive">{err}</p> : null}
|
||||||
|
{roleSlug ? (
|
||||||
|
<div className="mb-4 flex flex-wrap items-center justify-between gap-3 rounded-md border bg-muted/40 px-3 py-2 text-sm">
|
||||||
|
<span>
|
||||||
|
{t("roleFilter.active", {
|
||||||
|
role: roleNameBySlug.get(roleSlug) ?? roleSlug,
|
||||||
|
})}
|
||||||
|
</span>
|
||||||
|
<Button
|
||||||
|
type="button"
|
||||||
|
size="sm"
|
||||||
|
variant="outline"
|
||||||
|
onClick={() => router.replace("/admin/admin-users")}
|
||||||
|
>
|
||||||
|
{t("roleFilter.clear")}
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
|
) : null}
|
||||||
<div className="admin-table-shell">
|
<div className="admin-table-shell">
|
||||||
<Table id="admin-users-table">
|
<Table id="admin-users-table">
|
||||||
<TableHeader>
|
<TableHeader>
|
||||||
@@ -598,7 +623,7 @@ export function AdminUsersConsole(): React.ReactElement {
|
|||||||
</div>
|
</div>
|
||||||
) : null}
|
) : null}
|
||||||
<div className="grid gap-3 rounded-md border p-3 sm:grid-cols-2">
|
<div className="grid gap-3 rounded-md border p-3 sm:grid-cols-2">
|
||||||
{(catalog?.roles ?? []).map((role) => {
|
{assignableRoles.map((role) => {
|
||||||
const checked = draftRoles.includes(role.slug);
|
const checked = draftRoles.includes(role.slug);
|
||||||
return (
|
return (
|
||||||
<label key={role.slug} className="flex items-start gap-2 text-sm">
|
<label key={role.slug} className="flex items-start gap-2 text-sm">
|
||||||
@@ -741,12 +766,12 @@ export function AdminUsersConsole(): React.ReactElement {
|
|||||||
})}
|
})}
|
||||||
</p>
|
</p>
|
||||||
<div className="max-h-52 space-y-2 overflow-y-auto rounded-md border p-2.5 sm:grid sm:max-h-56 sm:grid-cols-2 sm:gap-2 sm:space-y-0">
|
<div className="max-h-52 space-y-2 overflow-y-auto rounded-md border p-2.5 sm:grid sm:max-h-56 sm:grid-cols-2 sm:gap-2 sm:space-y-0">
|
||||||
{(catalog?.roles ?? []).length === 0 ? (
|
{assignableRoles.length === 0 ? (
|
||||||
<p className="col-span-full text-xs text-muted-foreground">
|
<p className="col-span-full text-xs text-muted-foreground">
|
||||||
{t("accountDialog.noRoles")}
|
{t("accountDialog.noRoles")}
|
||||||
</p>
|
</p>
|
||||||
) : (
|
) : (
|
||||||
(catalog?.roles ?? []).map((role) => {
|
assignableRoles.map((role) => {
|
||||||
const checked = formCreateRoles.includes(role.slug);
|
const checked = formCreateRoles.includes(role.slug);
|
||||||
return (
|
return (
|
||||||
<label key={role.slug} className="flex items-start gap-2 text-sm">
|
<label key={role.slug} className="flex items-start gap-2 text-sm">
|
||||||
|
|||||||
@@ -141,7 +141,9 @@ export function AuditLogsConsole(): React.ReactElement {
|
|||||||
</Label>
|
</Label>
|
||||||
<Select value={moduleCode} onValueChange={(value) => setModuleCode(value ?? "all")}>
|
<Select value={moduleCode} onValueChange={(value) => setModuleCode(value ?? "all")}>
|
||||||
<SelectTrigger id="aud-module" className="w-full sm:w-44">
|
<SelectTrigger id="aud-module" className="w-full sm:w-44">
|
||||||
<SelectValue />
|
<SelectValue>
|
||||||
|
{moduleCode === "all" ? t("filterModuleAll") : t(`moduleOptions.${moduleCode}`)}
|
||||||
|
</SelectValue>
|
||||||
</SelectTrigger>
|
</SelectTrigger>
|
||||||
<SelectContent>
|
<SelectContent>
|
||||||
<SelectItem value="all">{t("filterModuleAll")}</SelectItem>
|
<SelectItem value="all">{t("filterModuleAll")}</SelectItem>
|
||||||
@@ -159,7 +161,9 @@ export function AuditLogsConsole(): React.ReactElement {
|
|||||||
</Label>
|
</Label>
|
||||||
<Select value={operatorType} onValueChange={(value) => setOperatorType(value ?? "all")}>
|
<Select value={operatorType} onValueChange={(value) => setOperatorType(value ?? "all")}>
|
||||||
<SelectTrigger id="aud-op-type" className="w-full sm:w-36">
|
<SelectTrigger id="aud-op-type" className="w-full sm:w-36">
|
||||||
<SelectValue />
|
<SelectValue>
|
||||||
|
{operatorType === "all" ? t("filterOperatorTypeAll") : t(`operatorTypes.${operatorType}`)}
|
||||||
|
</SelectValue>
|
||||||
</SelectTrigger>
|
</SelectTrigger>
|
||||||
<SelectContent>
|
<SelectContent>
|
||||||
<SelectItem value="all">{t("filterOperatorTypeAll")}</SelectItem>
|
<SelectItem value="all">{t("filterOperatorTypeAll")}</SelectItem>
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import { Button } from "@/components/ui/button";
|
|||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
|
|
||||||
type ConfigChipGroupProps = {
|
type ConfigChipGroupProps = {
|
||||||
label?: string;
|
label?: ReactNode;
|
||||||
children: ReactNode;
|
children: ReactNode;
|
||||||
className?: string;
|
className?: string;
|
||||||
};
|
};
|
||||||
@@ -14,7 +14,7 @@ type ConfigChipGroupProps = {
|
|||||||
export function ConfigChipGroup({ label, children, className }: ConfigChipGroupProps) {
|
export function ConfigChipGroup({ label, children, className }: ConfigChipGroupProps) {
|
||||||
return (
|
return (
|
||||||
<div className={cn("space-y-2.5", className)}>
|
<div className={cn("space-y-2.5", className)}>
|
||||||
{label ? <p className="text-sm font-medium text-foreground">{label}</p> : null}
|
{label ? <div className="text-sm font-medium text-foreground">{label}</div> : null}
|
||||||
<div className="flex flex-wrap gap-2">{children}</div>
|
<div className="flex flex-wrap gap-2">{children}</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -15,6 +15,8 @@ import {
|
|||||||
putOddsItems,
|
putOddsItems,
|
||||||
} from "@/api/admin-config";
|
} from "@/api/admin-config";
|
||||||
import { getAdminBetProviders } from "@/api/admin-bet-providers";
|
import { getAdminBetProviders } from "@/api/admin-bet-providers";
|
||||||
|
import { AdminHelpText } from "@/components/admin/admin-field-label";
|
||||||
|
import { AdminPageGuideDialog } from "@/components/admin/admin-page-guide-dialog";
|
||||||
import { Button } from "@/components/ui/button";
|
import { Button } from "@/components/ui/button";
|
||||||
import { ConfigChip, ConfigChipGroup } from "@/modules/config/config-chip-group";
|
import { ConfigChip, ConfigChipGroup } from "@/modules/config/config-chip-group";
|
||||||
import { ConfigDocPage, ConfigDocToolbar } from "@/modules/config/config-doc-page";
|
import { ConfigDocPage, ConfigDocToolbar } from "@/modules/config/config-doc-page";
|
||||||
@@ -28,7 +30,6 @@ import {
|
|||||||
DialogTitle,
|
DialogTitle,
|
||||||
} from "@/components/ui/dialog";
|
} from "@/components/ui/dialog";
|
||||||
import { Input } from "@/components/ui/input";
|
import { Input } from "@/components/ui/input";
|
||||||
import { Label } from "@/components/ui/label";
|
|
||||||
import { AdminLoadingState } from "@/components/admin/admin-loading-state";
|
import { AdminLoadingState } from "@/components/admin/admin-loading-state";
|
||||||
import { ratioToPercentUi } from "@/lib/admin-rate-percent";
|
import { ratioToPercentUi } from "@/lib/admin-rate-percent";
|
||||||
import { ConfigReadonlyValue } from "@/modules/config/config-readonly-value";
|
import { ConfigReadonlyValue } from "@/modules/config/config-readonly-value";
|
||||||
@@ -602,7 +603,20 @@ export function OddsConfigDocScreen({
|
|||||||
|
|
||||||
const filtersInner = (
|
const filtersInner = (
|
||||||
<>
|
<>
|
||||||
<ConfigChipGroup label={t("betProviders.title", { ns: "config", defaultValue: "开注商" })}>
|
<ConfigChipGroup
|
||||||
|
label={
|
||||||
|
<AdminHelpText
|
||||||
|
helpId="odds-provider"
|
||||||
|
helpText={t("odds.help.fields.provider", { ns: "config" })}
|
||||||
|
helpAriaLabel={t("odds.help.aria", {
|
||||||
|
ns: "config",
|
||||||
|
field: t("betProviders.title", { ns: "config", defaultValue: "开注商" }),
|
||||||
|
})}
|
||||||
|
>
|
||||||
|
{t("betProviders.title", { ns: "config", defaultValue: "开注商" })}
|
||||||
|
</AdminHelpText>
|
||||||
|
}
|
||||||
|
>
|
||||||
<ConfigChip
|
<ConfigChip
|
||||||
active={providerCode === GLOBAL_PROVIDER_CODE}
|
active={providerCode === GLOBAL_PROVIDER_CODE}
|
||||||
onClick={() => setProviderCode(GLOBAL_PROVIDER_CODE)}
|
onClick={() => setProviderCode(GLOBAL_PROVIDER_CODE)}
|
||||||
@@ -619,7 +633,20 @@ export function OddsConfigDocScreen({
|
|||||||
</ConfigChip>
|
</ConfigChip>
|
||||||
))}
|
))}
|
||||||
</ConfigChipGroup>
|
</ConfigChipGroup>
|
||||||
<ConfigChipGroup label={t("odds.category", { ns: "config" })}>
|
<ConfigChipGroup
|
||||||
|
label={
|
||||||
|
<AdminHelpText
|
||||||
|
helpId="odds-category"
|
||||||
|
helpText={t("odds.help.fields.category", { ns: "config" })}
|
||||||
|
helpAriaLabel={t("odds.help.aria", {
|
||||||
|
ns: "config",
|
||||||
|
field: t("odds.category", { ns: "config" }),
|
||||||
|
})}
|
||||||
|
>
|
||||||
|
{t("odds.category", { ns: "config" })}
|
||||||
|
</AdminHelpText>
|
||||||
|
}
|
||||||
|
>
|
||||||
{catTabs.map((tab) => (
|
{catTabs.map((tab) => (
|
||||||
<ConfigChip
|
<ConfigChip
|
||||||
key={tab.id}
|
key={tab.id}
|
||||||
@@ -654,7 +681,20 @@ export function OddsConfigDocScreen({
|
|||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
<ConfigChipGroup label={t("odds.playType", { ns: "config" })}>
|
<ConfigChipGroup
|
||||||
|
label={
|
||||||
|
<AdminHelpText
|
||||||
|
helpId="odds-play-type"
|
||||||
|
helpText={t("odds.help.fields.playType", { ns: "config" })}
|
||||||
|
helpAriaLabel={t("odds.help.aria", {
|
||||||
|
ns: "config",
|
||||||
|
field: t("odds.playType", { ns: "config" }),
|
||||||
|
})}
|
||||||
|
>
|
||||||
|
{t("odds.playType", { ns: "config" })}
|
||||||
|
</AdminHelpText>
|
||||||
|
}
|
||||||
|
>
|
||||||
{filteredTypes.length === 0 ? (
|
{filteredTypes.length === 0 ? (
|
||||||
<span className="text-sm text-muted-foreground">{t("odds.noPlayTypes", { ns: "config" })}</span>
|
<span className="text-sm text-muted-foreground">{t("odds.noPlayTypes", { ns: "config" })}</span>
|
||||||
) : (
|
) : (
|
||||||
@@ -705,6 +745,50 @@ export function OddsConfigDocScreen({
|
|||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
actions={
|
actions={
|
||||||
|
<>
|
||||||
|
<AdminPageGuideDialog
|
||||||
|
triggerLabel={t("odds.help.openGuide", { ns: "config" })}
|
||||||
|
title={t("odds.help.guideTitle", { ns: "config" })}
|
||||||
|
description={t("odds.help.guideDescription", { ns: "config" })}
|
||||||
|
sections={[
|
||||||
|
{
|
||||||
|
title: t("odds.help.guide.scopeTitle", { ns: "config" }),
|
||||||
|
description: t("odds.help.guide.scopeDescription", { ns: "config" }),
|
||||||
|
items: [
|
||||||
|
{
|
||||||
|
label: t("betProviders.title", { ns: "config" }),
|
||||||
|
description: t("odds.help.fields.provider", { ns: "config" }),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: t("odds.category", { ns: "config" }),
|
||||||
|
description: t("odds.help.fields.category", { ns: "config" }),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: t("odds.playType", { ns: "config" }),
|
||||||
|
description: t("odds.help.fields.playType", { ns: "config" }),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: t("odds.help.guide.settingsTitle", { ns: "config" }),
|
||||||
|
description: t("odds.help.guide.settingsDescription", { ns: "config" }),
|
||||||
|
items: [
|
||||||
|
{
|
||||||
|
label: t("odds.table.multiplier", { ns: "config" }),
|
||||||
|
description: t("odds.help.fields.multiplier", { ns: "config" }),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: t("odds.rebateRate", { ns: "config" }),
|
||||||
|
description: t("odds.help.fields.rebateRate", { ns: "config" }),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: t("odds.help.guide.workflowTitle", { ns: "config" }),
|
||||||
|
description: t("odds.help.guide.workflowDescription", { ns: "config" }),
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
/>
|
||||||
<ConfigVersionActions
|
<ConfigVersionActions
|
||||||
isDraft={isDraft}
|
isDraft={isDraft}
|
||||||
canManage={canManage}
|
canManage={canManage}
|
||||||
@@ -717,6 +801,7 @@ export function OddsConfigDocScreen({
|
|||||||
onSaveDraft={() => void handleSave()}
|
onSaveDraft={() => void handleSave()}
|
||||||
onPublish={() => void requestPublishConfirm()}
|
onPublish={() => void requestPublishConfirm()}
|
||||||
/>
|
/>
|
||||||
|
</>
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
@@ -743,10 +828,21 @@ export function OddsConfigDocScreen({
|
|||||||
{scopeEditorRows.map(({ scope, row, hint, sourceLabel, sourceClassName }) => (
|
{scopeEditorRows.map(({ scope, row, hint, sourceLabel, sourceClassName }) => (
|
||||||
<div key={scope} className="grid min-w-0 gap-2 border border-border/60 bg-muted/20 p-3">
|
<div key={scope} className="grid min-w-0 gap-2 border border-border/60 bg-muted/20 p-3">
|
||||||
<div className="flex min-w-0 flex-wrap items-center gap-1.5">
|
<div className="flex min-w-0 flex-wrap items-center gap-1.5">
|
||||||
<Label className="text-xs font-medium text-muted-foreground">
|
<AdminHelpText
|
||||||
|
helpId={`odds-multiplier-${providerCode}-${resolvedPlayCode}-${scope}`}
|
||||||
|
helpText={t("odds.help.fields.scopeMultiplier", {
|
||||||
|
ns: "config",
|
||||||
|
scope: prizeScopeLabel(scope, t),
|
||||||
|
})}
|
||||||
|
helpAriaLabel={t("odds.help.aria", {
|
||||||
|
ns: "config",
|
||||||
|
field: prizeScopeLabel(scope, t),
|
||||||
|
})}
|
||||||
|
className="text-xs font-medium text-muted-foreground"
|
||||||
|
>
|
||||||
{prizeScopeLabel(scope, t)}
|
{prizeScopeLabel(scope, t)}
|
||||||
{hint ? <span className="ml-1 font-normal">{hint}</span> : null}
|
{hint ? <span className="ml-1 font-normal">{hint}</span> : null}
|
||||||
</Label>
|
</AdminHelpText>
|
||||||
{row ? (
|
{row ? (
|
||||||
<span className={cn("rounded-full border px-1.5 py-0.5 text-[11px] font-semibold", sourceClassName)}>
|
<span className={cn("rounded-full border px-1.5 py-0.5 text-[11px] font-semibold", sourceClassName)}>
|
||||||
{sourceLabel}
|
{sourceLabel}
|
||||||
@@ -779,9 +875,17 @@ export function OddsConfigDocScreen({
|
|||||||
</div>
|
</div>
|
||||||
))}
|
))}
|
||||||
<div className="grid min-w-0 gap-2 border border-border/60 bg-muted/20 p-3">
|
<div className="grid min-w-0 gap-2 border border-border/60 bg-muted/20 p-3">
|
||||||
<Label className="truncate text-xs font-medium text-muted-foreground">
|
<AdminHelpText
|
||||||
|
helpId={`odds-rebate-${providerCode}-${resolvedPlayCode}`}
|
||||||
|
helpText={t("odds.help.fields.rebateRate", { ns: "config" })}
|
||||||
|
helpAriaLabel={t("odds.help.aria", {
|
||||||
|
ns: "config",
|
||||||
|
field: t("odds.rebateRate", { ns: "config" }),
|
||||||
|
})}
|
||||||
|
className="text-xs font-medium text-muted-foreground"
|
||||||
|
>
|
||||||
{t("odds.rebateRate", { ns: "config" })}
|
{t("odds.rebateRate", { ns: "config" })}
|
||||||
</Label>
|
</AdminHelpText>
|
||||||
{canEditDraft ? (
|
{canEditDraft ? (
|
||||||
<Input
|
<Input
|
||||||
type="text"
|
type="text"
|
||||||
@@ -895,7 +999,20 @@ export function OddsConfigDocScreen({
|
|||||||
{toolbarBlock}
|
{toolbarBlock}
|
||||||
<div className="grid gap-0 overflow-hidden rounded-lg border border-border/60 lg:grid-cols-[minmax(0,17rem)_minmax(0,1fr)]">
|
<div className="grid gap-0 overflow-hidden rounded-lg border border-border/60 lg:grid-cols-[minmax(0,17rem)_minmax(0,1fr)]">
|
||||||
<aside className="space-y-4 border-b border-border/50 bg-muted/20 px-4 py-4 lg:border-r lg:border-b-0">
|
<aside className="space-y-4 border-b border-border/50 bg-muted/20 px-4 py-4 lg:border-r lg:border-b-0">
|
||||||
<ConfigChipGroup label={t("betProviders.title", { ns: "config", defaultValue: "开注商" })}>
|
<ConfigChipGroup
|
||||||
|
label={
|
||||||
|
<AdminHelpText
|
||||||
|
helpId="odds-provider-merged"
|
||||||
|
helpText={t("odds.help.fields.provider", { ns: "config" })}
|
||||||
|
helpAriaLabel={t("odds.help.aria", {
|
||||||
|
ns: "config",
|
||||||
|
field: t("betProviders.title", { ns: "config", defaultValue: "开注商" }),
|
||||||
|
})}
|
||||||
|
>
|
||||||
|
{t("betProviders.title", { ns: "config", defaultValue: "开注商" })}
|
||||||
|
</AdminHelpText>
|
||||||
|
}
|
||||||
|
>
|
||||||
<ConfigChip
|
<ConfigChip
|
||||||
active={providerCode === GLOBAL_PROVIDER_CODE}
|
active={providerCode === GLOBAL_PROVIDER_CODE}
|
||||||
onClick={() => setProviderCode(GLOBAL_PROVIDER_CODE)}
|
onClick={() => setProviderCode(GLOBAL_PROVIDER_CODE)}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
|
|
||||||
|
import { AdminHelpText } from "@/components/admin/admin-field-label";
|
||||||
import { ConfigChip, ConfigChipGroup } from "@/modules/config/config-chip-group";
|
import { ConfigChip, ConfigChipGroup } from "@/modules/config/config-chip-group";
|
||||||
import {
|
import {
|
||||||
Select,
|
Select,
|
||||||
@@ -60,7 +61,17 @@ export function OddsConfigPlayNav({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={cn("space-y-4", className)}>
|
<div className={cn("space-y-4", className)}>
|
||||||
<ConfigChipGroup label={t("odds.category")}>
|
<ConfigChipGroup
|
||||||
|
label={
|
||||||
|
<AdminHelpText
|
||||||
|
helpId="odds-nav-category"
|
||||||
|
helpText={t("odds.help.fields.category")}
|
||||||
|
helpAriaLabel={t("odds.help.aria", { field: t("odds.category") })}
|
||||||
|
>
|
||||||
|
{t("odds.category")}
|
||||||
|
</AdminHelpText>
|
||||||
|
}
|
||||||
|
>
|
||||||
{catTabs.map((tab) => (
|
{catTabs.map((tab) => (
|
||||||
<ConfigChip
|
<ConfigChip
|
||||||
key={tab.id}
|
key={tab.id}
|
||||||
@@ -73,7 +84,14 @@ export function OddsConfigPlayNav({
|
|||||||
</ConfigChipGroup>
|
</ConfigChipGroup>
|
||||||
|
|
||||||
<div className="space-y-1.5">
|
<div className="space-y-1.5">
|
||||||
<p className="text-sm font-medium">{t("odds.playType")}</p>
|
<AdminHelpText
|
||||||
|
helpId="odds-nav-play-type"
|
||||||
|
helpText={t("odds.help.fields.playType")}
|
||||||
|
helpAriaLabel={t("odds.help.aria", { field: t("odds.playType") })}
|
||||||
|
className="text-sm font-medium"
|
||||||
|
>
|
||||||
|
{t("odds.playType")}
|
||||||
|
</AdminHelpText>
|
||||||
<Select
|
<Select
|
||||||
modal={false}
|
modal={false}
|
||||||
value={playSelectValue}
|
value={playSelectValue}
|
||||||
|
|||||||
@@ -19,6 +19,8 @@ import { ConfigChipGroup } from "@/modules/config/config-chip-group";
|
|||||||
import { ConfigDocPage, ConfigDocToolbar } from "@/modules/config/config-doc-page";
|
import { ConfigDocPage, ConfigDocToolbar } from "@/modules/config/config-doc-page";
|
||||||
|
|
||||||
import { ConfirmableSwitch } from "@/components/admin/confirmable-switch";
|
import { ConfirmableSwitch } from "@/components/admin/confirmable-switch";
|
||||||
|
import { AdminHelpText } from "@/components/admin/admin-field-label";
|
||||||
|
import { AdminPageGuideDialog } from "@/components/admin/admin-page-guide-dialog";
|
||||||
import {
|
import {
|
||||||
Dialog,
|
Dialog,
|
||||||
DialogContent,
|
DialogContent,
|
||||||
@@ -86,12 +88,6 @@ type PlayBatchSwitchGroup = {
|
|||||||
match: (row: PlayConfigItemRow) => boolean;
|
match: (row: PlayConfigItemRow) => boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
const TRADITIONAL_PLAY_CODES = new Set([
|
|
||||||
"big", "small", "pos_4a", "pos_4b", "pos_4c", "pos_4d", "pos_4e", "four_any", "four_top", "four_lower",
|
|
||||||
"pos_3a", "pos_3lower", "pos_3b", "pos_3c", "pos_3d", "pos_3e",
|
|
||||||
"pos_2a", "pos_2b", "pos_2c", "pos_2d", "pos_2e", "pos_2any",
|
|
||||||
]);
|
|
||||||
|
|
||||||
const PLAY_BATCH_SWITCH_GROUPS: PlayBatchSwitchGroup[] = [
|
const PLAY_BATCH_SWITCH_GROUPS: PlayBatchSwitchGroup[] = [
|
||||||
{
|
{
|
||||||
key: "d2",
|
key: "d2",
|
||||||
@@ -118,8 +114,8 @@ const PLAY_BATCH_SWITCH_GROUPS: PlayBatchSwitchGroup[] = [
|
|||||||
match: (row) => row.category === "box",
|
match: (row) => row.category === "box",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "jackpot",
|
key: "attribute",
|
||||||
match: (row) => row.category === "jackpot" || row.play_code.includes("jackpot"),
|
match: (row) => row.category === "attribute",
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -273,7 +269,7 @@ export function PlayConfigDocScreen() {
|
|||||||
|
|
||||||
const orderedRows = useMemo(
|
const orderedRows = useMemo(
|
||||||
() =>
|
() =>
|
||||||
draftRows.filter((row) => TRADITIONAL_PLAY_CODES.has(row.play_code)).sort(
|
[...draftRows].sort(
|
||||||
(a, b) => a.display_order - b.display_order || a.play_code.localeCompare(b.play_code),
|
(a, b) => a.display_order - b.display_order || a.play_code.localeCompare(b.play_code),
|
||||||
),
|
),
|
||||||
[draftRows],
|
[draftRows],
|
||||||
@@ -342,6 +338,7 @@ export function PlayConfigDocScreen() {
|
|||||||
setDraftRows((prev) =>
|
setDraftRows((prev) =>
|
||||||
prev.map((row) => (group.match(row) ? { ...row, is_enabled: enabled } : row)),
|
prev.map((row) => (group.match(row) ? { ...row, is_enabled: enabled } : row)),
|
||||||
);
|
);
|
||||||
|
toast.success(t("play.batchSwitchSavedLocal", { ns: "config" }));
|
||||||
}
|
}
|
||||||
|
|
||||||
const batchSwitchStates = useMemo(
|
const batchSwitchStates = useMemo(
|
||||||
@@ -494,6 +491,48 @@ export function PlayConfigDocScreen() {
|
|||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
actions={
|
actions={
|
||||||
|
<>
|
||||||
|
<AdminPageGuideDialog
|
||||||
|
triggerLabel={t("play.help.openGuide", { ns: "config" })}
|
||||||
|
title={t("play.help.guideTitle", { ns: "config" })}
|
||||||
|
description={t("play.help.guideDescription", { ns: "config" })}
|
||||||
|
sections={[
|
||||||
|
{
|
||||||
|
title: t("play.help.guide.settingsTitle", { ns: "config" }),
|
||||||
|
description: t("play.help.guide.settingsDescription", { ns: "config" }),
|
||||||
|
items: [
|
||||||
|
{
|
||||||
|
label: t("play.table.status", { ns: "config" }),
|
||||||
|
description: t("play.help.fields.status", { ns: "config" }),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: t("play.table.displayName", { ns: "config" }),
|
||||||
|
description: t("play.help.fields.displayName", { ns: "config" }),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: t("play.table.order", { ns: "config" }),
|
||||||
|
description: t("play.help.fields.order", { ns: "config" }),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: t("play.table.minBet", { ns: "config" }),
|
||||||
|
description: t("play.help.fields.minBet", { ns: "config" }),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: t("play.table.maxBet", { ns: "config" }),
|
||||||
|
description: t("play.help.fields.maxBet", { ns: "config" }),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: t("play.help.guide.batchTitle", { ns: "config" }),
|
||||||
|
description: t("play.help.guide.batchDescription", { ns: "config" }),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: t("play.help.guide.workflowTitle", { ns: "config" }),
|
||||||
|
description: t("play.help.guide.workflowDescription", { ns: "config" }),
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
/>
|
||||||
<ConfigVersionActions
|
<ConfigVersionActions
|
||||||
isDraft={isDraft}
|
isDraft={isDraft}
|
||||||
canManage={canManage}
|
canManage={canManage}
|
||||||
@@ -513,6 +552,7 @@ export function PlayConfigDocScreen() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
|
</>
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
@@ -582,17 +622,51 @@ export function PlayConfigDocScreen() {
|
|||||||
) : null}
|
) : null}
|
||||||
</div>
|
</div>
|
||||||
{isDraft ? (
|
{isDraft ? (
|
||||||
<ConfigChipGroup label={t("play.batchSwitchesTitle", { ns: "config" })}>
|
<div className="space-y-1.5">
|
||||||
|
<ConfigChipGroup
|
||||||
|
label={
|
||||||
|
<AdminHelpText
|
||||||
|
helpId="play-batch-switches"
|
||||||
|
helpText={t("play.help.fields.batchSwitches", { ns: "config" })}
|
||||||
|
helpAriaLabel={t("play.help.aria", {
|
||||||
|
ns: "config",
|
||||||
|
field: t("play.batchSwitchesTitle", { ns: "config" }),
|
||||||
|
})}
|
||||||
|
>
|
||||||
|
{t("play.batchSwitchesTitle", { ns: "config" })}
|
||||||
|
</AdminHelpText>
|
||||||
|
}
|
||||||
|
>
|
||||||
{batchSwitchStates.map((group) => {
|
{batchSwitchStates.map((group) => {
|
||||||
const groupOn = group.allEnabled;
|
const groupOn = group.allEnabled;
|
||||||
const isPartial =
|
const isPartial =
|
||||||
group.total > 0 && group.enabledCount > 0 && group.enabledCount < group.total;
|
group.total > 0 && group.enabledCount > 0 && group.enabledCount < group.total;
|
||||||
return (
|
return (
|
||||||
<label
|
<div
|
||||||
key={group.key}
|
key={group.key}
|
||||||
className="inline-flex cursor-pointer items-center gap-2 rounded-md border border-border/60 px-2.5 py-1.5 text-sm"
|
className="inline-flex items-center gap-2 rounded-md border border-border/60 px-2.5 py-1.5 text-sm"
|
||||||
>
|
>
|
||||||
<span>{group.label}</span>
|
<AdminHelpText
|
||||||
|
helpId={`play-batch-${group.key}`}
|
||||||
|
helpText={t("play.help.fields.batchGroup", {
|
||||||
|
ns: "config",
|
||||||
|
group: group.label,
|
||||||
|
count: group.total,
|
||||||
|
})}
|
||||||
|
helpAriaLabel={t("play.help.aria", {
|
||||||
|
ns: "config",
|
||||||
|
field: group.label,
|
||||||
|
})}
|
||||||
|
>
|
||||||
|
{group.label}
|
||||||
|
</AdminHelpText>
|
||||||
|
<span className="text-xs tabular-nums text-muted-foreground">
|
||||||
|
{t("play.batchEnabledCount", {
|
||||||
|
ns: "config",
|
||||||
|
enabledCount: group.enabledCount,
|
||||||
|
total: group.total,
|
||||||
|
})}
|
||||||
|
</span>
|
||||||
<Checkbox
|
<Checkbox
|
||||||
checked={groupOn}
|
checked={groupOn}
|
||||||
indeterminate={isPartial}
|
indeterminate={isPartial}
|
||||||
@@ -619,10 +693,14 @@ export function PlayConfigDocScreen() {
|
|||||||
});
|
});
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</label>
|
</div>
|
||||||
);
|
);
|
||||||
})}
|
})}
|
||||||
</ConfigChipGroup>
|
</ConfigChipGroup>
|
||||||
|
<p className="text-xs text-muted-foreground">
|
||||||
|
{t("play.batchSwitchesDesc", { ns: "config" })}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
) : null}
|
) : null}
|
||||||
</div>
|
</div>
|
||||||
) : null}
|
) : null}
|
||||||
@@ -637,11 +715,71 @@ export function PlayConfigDocScreen() {
|
|||||||
<TableRow>
|
<TableRow>
|
||||||
<TableHead className="text-center">{t("play.table.playCode", { ns: "config" })}</TableHead>
|
<TableHead className="text-center">{t("play.table.playCode", { ns: "config" })}</TableHead>
|
||||||
<TableHead className="w-[100px] text-center">{t("play.table.category", { ns: "config" })}</TableHead>
|
<TableHead className="w-[100px] text-center">{t("play.table.category", { ns: "config" })}</TableHead>
|
||||||
<TableHead className="w-[88px] text-center">{t("play.table.status", { ns: "config" })}</TableHead>
|
<TableHead className="w-[88px] text-center">
|
||||||
<TableHead className="w-36 text-center">{t("play.table.displayName", { ns: "config" })}</TableHead>
|
<AdminHelpText
|
||||||
<TableHead className="w-24 text-center">{t("play.table.order", { ns: "config" })}</TableHead>
|
helpId="play-status"
|
||||||
<TableHead className="w-[110px] text-center">{t("play.table.minBet", { ns: "config" })}</TableHead>
|
helpText={t("play.help.fields.status", { ns: "config" })}
|
||||||
<TableHead className="w-[110px] text-center">{t("play.table.maxBet", { ns: "config" })}</TableHead>
|
helpAriaLabel={t("play.help.aria", {
|
||||||
|
ns: "config",
|
||||||
|
field: t("play.table.status", { ns: "config" }),
|
||||||
|
})}
|
||||||
|
className="justify-center"
|
||||||
|
>
|
||||||
|
{t("play.table.status", { ns: "config" })}
|
||||||
|
</AdminHelpText>
|
||||||
|
</TableHead>
|
||||||
|
<TableHead className="w-36 text-center">
|
||||||
|
<AdminHelpText
|
||||||
|
helpId="play-display-name"
|
||||||
|
helpText={t("play.help.fields.displayName", { ns: "config" })}
|
||||||
|
helpAriaLabel={t("play.help.aria", {
|
||||||
|
ns: "config",
|
||||||
|
field: t("play.table.displayName", { ns: "config" }),
|
||||||
|
})}
|
||||||
|
className="justify-center"
|
||||||
|
>
|
||||||
|
{t("play.table.displayName", { ns: "config" })}
|
||||||
|
</AdminHelpText>
|
||||||
|
</TableHead>
|
||||||
|
<TableHead className="w-24 text-center">
|
||||||
|
<AdminHelpText
|
||||||
|
helpId="play-display-order"
|
||||||
|
helpText={t("play.help.fields.order", { ns: "config" })}
|
||||||
|
helpAriaLabel={t("play.help.aria", {
|
||||||
|
ns: "config",
|
||||||
|
field: t("play.table.order", { ns: "config" }),
|
||||||
|
})}
|
||||||
|
className="justify-center"
|
||||||
|
>
|
||||||
|
{t("play.table.order", { ns: "config" })}
|
||||||
|
</AdminHelpText>
|
||||||
|
</TableHead>
|
||||||
|
<TableHead className="w-[110px] text-center">
|
||||||
|
<AdminHelpText
|
||||||
|
helpId="play-min-bet"
|
||||||
|
helpText={t("play.help.fields.minBet", { ns: "config" })}
|
||||||
|
helpAriaLabel={t("play.help.aria", {
|
||||||
|
ns: "config",
|
||||||
|
field: t("play.table.minBet", { ns: "config" }),
|
||||||
|
})}
|
||||||
|
className="justify-center"
|
||||||
|
>
|
||||||
|
{t("play.table.minBet", { ns: "config" })}
|
||||||
|
</AdminHelpText>
|
||||||
|
</TableHead>
|
||||||
|
<TableHead className="w-[110px] text-center">
|
||||||
|
<AdminHelpText
|
||||||
|
helpId="play-max-bet"
|
||||||
|
helpText={t("play.help.fields.maxBet", { ns: "config" })}
|
||||||
|
helpAriaLabel={t("play.help.aria", {
|
||||||
|
ns: "config",
|
||||||
|
field: t("play.table.maxBet", { ns: "config" }),
|
||||||
|
})}
|
||||||
|
className="justify-center"
|
||||||
|
>
|
||||||
|
{t("play.table.maxBet", { ns: "config" })}
|
||||||
|
</AdminHelpText>
|
||||||
|
</TableHead>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
</TableHeader>
|
</TableHeader>
|
||||||
<TableBody>
|
<TableBody>
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import Link from "next/link";
|
import { useCallback, useEffect, useMemo, useState } from "react";
|
||||||
import { useCallback, useMemo, useState } from "react";
|
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { useAsyncEffect } from "@/hooks/use-async-effect";
|
import { useAsyncEffect } from "@/hooks/use-async-effect";
|
||||||
import { toast } from "sonner";
|
import { toast } from "sonner";
|
||||||
@@ -32,7 +31,6 @@ import { useDrawDetail } from "@/modules/draws/draw-detail-context";
|
|||||||
import {
|
import {
|
||||||
PRD_DRAW_REOPEN_MANAGE,
|
PRD_DRAW_REOPEN_MANAGE,
|
||||||
PRD_PAYOUT_MANAGE,
|
PRD_PAYOUT_MANAGE,
|
||||||
PRD_PAYOUT_REVIEW,
|
|
||||||
} from "./draw-prd";
|
} from "./draw-prd";
|
||||||
|
|
||||||
type ScheduleStep = {
|
type ScheduleStep = {
|
||||||
@@ -56,17 +54,23 @@ function ScheduleTimeline({ steps }: { steps: ScheduleStep[] }) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function DrawDetailConsole({ drawId }: { drawId: string }): React.ReactElement {
|
function formatRemaining(target: string | null | undefined, now: number): string {
|
||||||
|
const remainingSeconds = Math.max(0, Math.ceil((Date.parse(target ?? "") - now) / 1000));
|
||||||
|
const minutes = Math.floor(remainingSeconds / 60);
|
||||||
|
const seconds = remainingSeconds % 60;
|
||||||
|
return `${String(minutes).padStart(2, "0")}:${String(seconds).padStart(2, "0")}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function DrawDetailConsole(): React.ReactElement {
|
||||||
const { t } = useTranslation(["draws", "common"]);
|
const { t } = useTranslation(["draws", "common"]);
|
||||||
|
const formatDt = useAdminDateTimeFormatter();
|
||||||
const { draw: data, loading, error, refresh, drawId: idNum } = useDrawDetail();
|
const { draw: data, loading, error, refresh, drawId: idNum } = useDrawDetail();
|
||||||
const profile = useAdminProfile();
|
const profile = useAdminProfile();
|
||||||
const canManageDraw = canManageDrawResults(profile?.permissions);
|
const canManageDraw = canManageDrawResults(profile?.permissions);
|
||||||
const canReopenDraw = adminHasAnyPermission(profile?.permissions, [PRD_DRAW_REOPEN_MANAGE]);
|
const canReopenDraw = adminHasAnyPermission(profile?.permissions, [PRD_DRAW_REOPEN_MANAGE]);
|
||||||
const canRunSettlement = adminHasAnyPermission(profile?.permissions, [
|
const canRunSettlement = adminHasAnyPermission(profile?.permissions, [PRD_PAYOUT_MANAGE]);
|
||||||
PRD_PAYOUT_MANAGE,
|
|
||||||
PRD_PAYOUT_REVIEW,
|
|
||||||
]);
|
|
||||||
const [acting, setActing] = useState<string | null>(null);
|
const [acting, setActing] = useState<string | null>(null);
|
||||||
|
const [now, setNow] = useState(() => Date.now());
|
||||||
const [financeSummary, setFinanceSummary] = useState<AdminDrawFinanceSummaryData | null>(null);
|
const [financeSummary, setFinanceSummary] = useState<AdminDrawFinanceSummaryData | null>(null);
|
||||||
const { request: requestConfirm, ConfirmDialog } = useConfirmAction();
|
const { request: requestConfirm, ConfirmDialog } = useConfirmAction();
|
||||||
|
|
||||||
@@ -90,6 +94,23 @@ export function DrawDetailConsole({ drawId }: { drawId: string }): React.ReactEl
|
|||||||
void loadFinance();
|
void loadFinance();
|
||||||
}, [loadFinance]);
|
}, [loadFinance]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (!data || !["cooldown", "settling"].includes(data.status)) return;
|
||||||
|
|
||||||
|
const pollId = window.setInterval(() => {
|
||||||
|
void refresh();
|
||||||
|
void loadFinance();
|
||||||
|
}, 5_000);
|
||||||
|
|
||||||
|
return () => window.clearInterval(pollId);
|
||||||
|
}, [data, loadFinance, refresh]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (data?.status !== "cooldown") return;
|
||||||
|
const timerId = window.setInterval(() => setNow(Date.now()), 1_000);
|
||||||
|
return () => window.clearInterval(timerId);
|
||||||
|
}, [data?.status]);
|
||||||
|
|
||||||
async function runAction(name: string, action: () => Promise<unknown>): Promise<void> {
|
async function runAction(name: string, action: () => Promise<unknown>): Promise<void> {
|
||||||
if (!Number.isFinite(idNum)) return;
|
if (!Number.isFinite(idNum)) return;
|
||||||
setActing(name);
|
setActing(name);
|
||||||
@@ -127,7 +148,7 @@ export function DrawDetailConsole({ drawId }: { drawId: string }): React.ReactEl
|
|||||||
type ActionDef = {
|
type ActionDef = {
|
||||||
key: string;
|
key: string;
|
||||||
label: string;
|
label: string;
|
||||||
variant: "outline" | "destructive";
|
variant: "default" | "outline" | "destructive";
|
||||||
enabled: boolean;
|
enabled: boolean;
|
||||||
onConfirm: () => Promise<void>;
|
onConfirm: () => Promise<void>;
|
||||||
confirmTitle: string;
|
confirmTitle: string;
|
||||||
@@ -169,6 +190,22 @@ export function DrawDetailConsole({ drawId }: { drawId: string }): React.ReactEl
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (canRunSettlement) {
|
||||||
|
defs.push({
|
||||||
|
key: "settlement",
|
||||||
|
label: data.status === "cooldown" ? t("settleEarly") : t("retrySettlement"),
|
||||||
|
variant: "default",
|
||||||
|
enabled: ["cooldown", "settling"].includes(data.status),
|
||||||
|
onConfirm: async () => { await postAdminRunDrawSettlement(idNum); },
|
||||||
|
confirmTitle: data.status === "cooldown"
|
||||||
|
? t("confirm.settleEarlyTitle")
|
||||||
|
: t("confirm.retrySettlementTitle"),
|
||||||
|
confirmDescription: data.status === "cooldown"
|
||||||
|
? t("confirm.settleEarlyDescription")
|
||||||
|
: t("confirm.retrySettlementDescription"),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
if (canReopenDraw) {
|
if (canReopenDraw) {
|
||||||
defs.push({
|
defs.push({
|
||||||
key: "reopen",
|
key: "reopen",
|
||||||
@@ -182,18 +219,6 @@ export function DrawDetailConsole({ drawId }: { drawId: string }): React.ReactEl
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (canRunSettlement) {
|
|
||||||
defs.push({
|
|
||||||
key: "settlement",
|
|
||||||
label: t("runSettlement"),
|
|
||||||
variant: "outline",
|
|
||||||
enabled: data.status === "settling",
|
|
||||||
onConfirm: async () => { await postAdminRunDrawSettlement(idNum); },
|
|
||||||
confirmTitle: t("confirm.runSettlementTitle"),
|
|
||||||
confirmDescription: t("confirm.runSettlementDescription"),
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
return defs.filter((d) => d.enabled);
|
return defs.filter((d) => d.enabled);
|
||||||
}, [canManageDraw, canReopenDraw, canRunSettlement, data, idNum, t]);
|
}, [canManageDraw, canReopenDraw, canRunSettlement, data, idNum, t]);
|
||||||
|
|
||||||
@@ -208,11 +233,7 @@ export function DrawDetailConsole({ drawId }: { drawId: string }): React.ReactEl
|
|||||||
return <AdminNoResourceState />;
|
return <AdminNoResourceState />;
|
||||||
}
|
}
|
||||||
|
|
||||||
const batch = data.result_batch_counts;
|
|
||||||
const pendingReview = batch.pending_review ?? 0;
|
|
||||||
const totalBatches = batch.total ?? batch.published;
|
|
||||||
const financeCurrency = financeSummary?.currency_code ?? "NPR";
|
const financeCurrency = financeSummary?.currency_code ?? "NPR";
|
||||||
const hasResultActivity = totalBatches > 0 || pendingReview > 0 || batch.published > 0;
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="space-y-4">
|
<div className="space-y-4">
|
||||||
@@ -256,49 +277,22 @@ export function DrawDetailConsole({ drawId }: { drawId: string }): React.ReactEl
|
|||||||
|
|
||||||
<ScheduleTimeline steps={scheduleSteps} />
|
<ScheduleTimeline steps={scheduleSteps} />
|
||||||
|
|
||||||
{hasResultActivity ? (
|
<section className="rounded-lg border border-blue-200 bg-blue-50/70 px-3 py-3 text-sm dark:border-blue-900 dark:bg-blue-950/20">
|
||||||
<div className="flex flex-wrap items-center gap-2 text-sm">
|
<p className="font-semibold">{t("lifecycle.currentStage", { status: t(`statusOptions.${data.status}`) })}</p>
|
||||||
{canManageDraw && totalBatches > 0 ? (
|
<p className="mt-1 text-muted-foreground">{t(`lifecycle.${data.status}`)}</p>
|
||||||
<span className="rounded-md bg-muted px-2 py-1 tabular-nums">
|
{data.status === "cooldown" ? (
|
||||||
{t("batchSummaryTotal", { count: totalBatches })}
|
<div className="mt-2 flex flex-wrap gap-x-5 gap-y-1 font-medium">
|
||||||
|
<span>{t("automaticSettlementAt", { time: formatDt(data.cooling_end_time) })}</span>
|
||||||
|
<span className="font-mono tabular-nums">
|
||||||
|
{t("cooldownRemaining", { time: formatRemaining(data.cooling_end_time, now) })}
|
||||||
</span>
|
</span>
|
||||||
) : null}
|
|
||||||
{canManageDraw && pendingReview > 0 ? (
|
|
||||||
<Link
|
|
||||||
href={`/admin/draws/${drawId}/results`}
|
|
||||||
className="rounded-md bg-amber-500/15 px-2 py-1 font-medium text-amber-800 dark:text-amber-200"
|
|
||||||
>
|
|
||||||
{t("batchSummaryPending", { count: pendingReview })}
|
|
||||||
</Link>
|
|
||||||
) : null}
|
|
||||||
{batch.published > 0 ? (
|
|
||||||
<Link
|
|
||||||
href={`/admin/draws/${drawId}/results`}
|
|
||||||
className="rounded-md bg-emerald-500/15 px-2 py-1 font-medium text-emerald-800 dark:text-emerald-200"
|
|
||||||
>
|
|
||||||
{t("batchSummaryPublished", { count: batch.published })}
|
|
||||||
</Link>
|
|
||||||
) : null}
|
|
||||||
{data.capabilities?.can_view_draw_finance !== false ? (
|
|
||||||
<Link
|
|
||||||
href={`/admin/draws/${drawId}/finance`}
|
|
||||||
className="text-sm font-medium text-primary hover:underline"
|
|
||||||
>
|
|
||||||
{t("viewFinance")}
|
|
||||||
</Link>
|
|
||||||
) : null}
|
|
||||||
</div>
|
</div>
|
||||||
) : canManageDraw ? (
|
|
||||||
<Link
|
|
||||||
href={`/admin/draws/${drawId}/results`}
|
|
||||||
className="text-sm font-medium text-primary hover:underline"
|
|
||||||
>
|
|
||||||
{t("goToReviewTab")}
|
|
||||||
</Link>
|
|
||||||
) : null}
|
) : null}
|
||||||
|
</section>
|
||||||
|
|
||||||
{availableActions.length > 0 ? (
|
{availableActions.length > 0 ? (
|
||||||
<div className="flex flex-wrap gap-2 border-t border-border/60 pt-4">
|
<div className="space-y-2 border-t border-border/60 pt-4">
|
||||||
|
<div className="flex flex-wrap gap-2">
|
||||||
{availableActions.map((action) => (
|
{availableActions.map((action) => (
|
||||||
<Button
|
<Button
|
||||||
key={action.key}
|
key={action.key}
|
||||||
@@ -319,6 +313,10 @@ export function DrawDetailConsole({ drawId }: { drawId: string }): React.ReactEl
|
|||||||
</Button>
|
</Button>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
|
{data.status === "cooldown" && canReopenDraw ? (
|
||||||
|
<p className="text-xs text-muted-foreground">{t("reopenUsageHint")}</p>
|
||||||
|
) : null}
|
||||||
|
</div>
|
||||||
) : null}
|
) : null}
|
||||||
|
|
||||||
<ConfirmDialog />
|
<ConfirmDialog />
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { useCallback, useState } from "react";
|
import { useCallback, useEffect, useState } from "react";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { useAsyncEffect } from "@/hooks/use-async-effect";
|
import { useAsyncEffect } from "@/hooks/use-async-effect";
|
||||||
import { useTranslationRef } from "@/hooks/use-translation-ref";
|
import { useTranslationRef } from "@/hooks/use-translation-ref";
|
||||||
|
|
||||||
import { getAdminDrawFinanceSummary } from "@/api/admin-draws";
|
import { getAdminDrawFinanceSummary } from "@/api/admin-draws";
|
||||||
import { postAdminRunDrawSettlement } from "@/api/admin-settlement";
|
import { postAdminRunDrawSettlement } from "@/api/admin-settlement";
|
||||||
import { Button, buttonVariants } from "@/components/ui/button";
|
import { Button } from "@/components/ui/button";
|
||||||
import { AdminStatusBadge } from "@/components/admin/admin-status-badge";
|
import { AdminStatusBadge } from "@/components/admin/admin-status-badge";
|
||||||
import { AdminTableExportButton } from "@/components/admin/admin-table-export-button";
|
import { AdminTableExportButton } from "@/components/admin/admin-table-export-button";
|
||||||
|
|
||||||
@@ -37,18 +37,17 @@ import { useExportLabels } from "@/hooks/use-export-labels";
|
|||||||
import { formatAdminMinorUnits } from "@/lib/money";
|
import { formatAdminMinorUnits } from "@/lib/money";
|
||||||
|
|
||||||
import { settlementBatchStatusLabel } from "./draw-display";
|
import { settlementBatchStatusLabel } from "./draw-display";
|
||||||
import { PRD_PAYOUT_MANAGE, PRD_PAYOUT_REVIEW } from "./draw-prd";
|
import { useDrawDetail } from "./draw-detail-context";
|
||||||
|
import { PRD_PAYOUT_MANAGE } from "./draw-prd";
|
||||||
|
|
||||||
export function DrawFinanceConsole({ drawId }: { drawId: string }): React.ReactElement {
|
export function DrawFinanceConsole({ drawId }: { drawId: string }): React.ReactElement {
|
||||||
const { t } = useTranslation(["draws", "settlement", "common"]);
|
const { t } = useTranslation(["draws", "settlement", "common"]);
|
||||||
const tRef = useTranslationRef(["draws", "settlement", "common"]);
|
const tRef = useTranslationRef(["draws", "settlement", "common"]);
|
||||||
useAdminCurrencyCatalog();
|
useAdminCurrencyCatalog();
|
||||||
const idNum = Number(drawId);
|
const idNum = Number(drawId);
|
||||||
|
const { draw, refresh: refreshDraw } = useDrawDetail();
|
||||||
const profile = useAdminProfile();
|
const profile = useAdminProfile();
|
||||||
const canRunSettlement = adminHasAnyPermission(profile?.permissions, [
|
const canRunSettlement = adminHasAnyPermission(profile?.permissions, [PRD_PAYOUT_MANAGE]);
|
||||||
PRD_PAYOUT_MANAGE,
|
|
||||||
PRD_PAYOUT_REVIEW,
|
|
||||||
]);
|
|
||||||
const [data, setData] = useState<AdminDrawFinanceSummaryData | null>(null);
|
const [data, setData] = useState<AdminDrawFinanceSummaryData | null>(null);
|
||||||
const formatTs = useAdminDateTimeFormatter();
|
const formatTs = useAdminDateTimeFormatter();
|
||||||
const exportLabels = useExportLabels("drawFinance", { drawNo: data?.draw_no ?? drawId });
|
const exportLabels = useExportLabels("drawFinance", { drawNo: data?.draw_no ?? drawId });
|
||||||
@@ -80,8 +79,8 @@ export function DrawFinanceConsole({ drawId }: { drawId: string }): React.ReactE
|
|||||||
setSettling(true);
|
setSettling(true);
|
||||||
try {
|
try {
|
||||||
const res = await postAdminRunDrawSettlement(idNum);
|
const res = await postAdminRunDrawSettlement(idNum);
|
||||||
toast.success(res.ran ? t("runSettlement") : t("status"));
|
toast.success(res.cooldown_skipped ? t("settleEarlySuccess") : t("retrySettlementSuccess"));
|
||||||
await load();
|
await Promise.all([load(), refreshDraw()]);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
toast.error(e instanceof LotteryApiBizError ? e.message : t("actionFailed", { name: t("runSettlement") }));
|
toast.error(e instanceof LotteryApiBizError ? e.message : t("actionFailed", { name: t("runSettlement") }));
|
||||||
} finally {
|
} finally {
|
||||||
@@ -93,6 +92,18 @@ export function DrawFinanceConsole({ drawId }: { drawId: string }): React.ReactE
|
|||||||
void load();
|
void load();
|
||||||
}, [idNum]);
|
}, [idNum]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const status = draw?.status ?? data?.draw_status;
|
||||||
|
if (!status || !["cooldown", "settling"].includes(status)) return;
|
||||||
|
|
||||||
|
const pollId = window.setInterval(() => {
|
||||||
|
void load();
|
||||||
|
void refreshDraw();
|
||||||
|
}, 5_000);
|
||||||
|
|
||||||
|
return () => window.clearInterval(pollId);
|
||||||
|
}, [data?.draw_status, draw?.status, load, refreshDraw]);
|
||||||
|
|
||||||
if (loading && !data) {
|
if (loading && !data) {
|
||||||
return <AdminLoadingState minHeight="6rem" className="py-6" />;
|
return <AdminLoadingState minHeight="6rem" className="py-6" />;
|
||||||
}
|
}
|
||||||
@@ -106,6 +117,8 @@ export function DrawFinanceConsole({ drawId }: { drawId: string }): React.ReactE
|
|||||||
|
|
||||||
const currencyCode = data.currency_code ?? "NPR";
|
const currencyCode = data.currency_code ?? "NPR";
|
||||||
const formatMoney = (minor: number) => formatAdminMinorUnits(minor, currencyCode);
|
const formatMoney = (minor: number) => formatAdminMinorUnits(minor, currencyCode);
|
||||||
|
const drawStatus = draw?.status ?? data.draw_status;
|
||||||
|
const settlementActionLabel = drawStatus === "cooldown" ? t("settleEarly") : t("retrySettlement");
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="space-y-4">
|
<div className="space-y-4">
|
||||||
@@ -132,31 +145,38 @@ export function DrawFinanceConsole({ drawId }: { drawId: string }): React.ReactE
|
|||||||
<Button type="button" variant="secondary" size="sm" onClick={() => void load()}>
|
<Button type="button" variant="secondary" size="sm" onClick={() => void load()}>
|
||||||
{t("actions.refresh", { ns: "common" })}
|
{t("actions.refresh", { ns: "common" })}
|
||||||
</Button>
|
</Button>
|
||||||
|
{canRunSettlement && ["cooldown", "settling"].includes(drawStatus) ? (
|
||||||
<Button
|
<Button
|
||||||
type="button"
|
type="button"
|
||||||
size="sm"
|
size="sm"
|
||||||
disabled={!canRunSettlement || settling || data.draw_status !== "settling"}
|
disabled={settling}
|
||||||
onClick={() =>
|
onClick={() =>
|
||||||
requestConfirm({
|
requestConfirm({
|
||||||
title: t("confirm.runSettlementTitle"),
|
title: drawStatus === "cooldown"
|
||||||
description: t("confirm.runSettlementDescription"),
|
? t("confirm.settleEarlyTitle")
|
||||||
|
: t("confirm.retrySettlementTitle"),
|
||||||
|
description: drawStatus === "cooldown"
|
||||||
|
? t("confirm.settleEarlyDescription")
|
||||||
|
: t("confirm.retrySettlementDescription"),
|
||||||
onConfirm: () => runSettlement(),
|
onConfirm: () => runSettlement(),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
{settling ? t("processing") : t("runSettlement")}
|
{settling ? t("processing") : settlementActionLabel}
|
||||||
</Button>
|
</Button>
|
||||||
<Link
|
) : (
|
||||||
href="/admin/settlement-batches"
|
<p className="self-center text-xs text-muted-foreground">
|
||||||
className={cn(buttonVariants({ variant: "outline", size: "sm" }))}
|
{canRunSettlement
|
||||||
>
|
? t("settlementUnavailable", { status: t(`statusOptions.${drawStatus}`) })
|
||||||
{t("settlementBatchList")}
|
: t("settlementManagePermissionRequired")}
|
||||||
</Link>
|
</p>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="rounded-lg border border-border/60">
|
<div className="rounded-lg border border-border/60">
|
||||||
<div className="border-b border-border/60 px-3 py-2.5">
|
<div className="border-b border-border/60 px-3 py-2.5">
|
||||||
<h2 className="text-sm font-semibold">{t("relatedSettlementBatches")}</h2>
|
<h2 className="text-sm font-semibold">{t("relatedSettlementBatches")}</h2>
|
||||||
|
<p className="mt-1 text-xs text-muted-foreground">{t("settlementBatchesHint")}</p>
|
||||||
</div>
|
</div>
|
||||||
<div className="p-3">
|
<div className="p-3">
|
||||||
{data.settlement_batches.length === 0 ? (
|
{data.settlement_batches.length === 0 ? (
|
||||||
@@ -174,6 +194,9 @@ export function DrawFinanceConsole({ drawId }: { drawId: string }): React.ReactE
|
|||||||
<TableHeader>
|
<TableHeader>
|
||||||
<TableRow>
|
<TableRow>
|
||||||
<TableHead className="w-20">{t("table.id", { ns: "common" })}</TableHead>
|
<TableHead className="w-20">{t("table.id", { ns: "common" })}</TableHead>
|
||||||
|
<TableHead>{t("provider")}</TableHead>
|
||||||
|
<TableHead className="text-center">{t("resultVersion")}</TableHead>
|
||||||
|
<TableHead className="text-center">{t("settleVersion")}</TableHead>
|
||||||
<TableHead>{t("status")}</TableHead>
|
<TableHead>{t("status")}</TableHead>
|
||||||
<TableHead className="text-center">{t("ticketCount")}</TableHead>
|
<TableHead className="text-center">{t("ticketCount")}</TableHead>
|
||||||
<TableHead className="text-center">{t("winCount")}</TableHead>
|
<TableHead className="text-center">{t("winCount")}</TableHead>
|
||||||
@@ -185,7 +208,24 @@ export function DrawFinanceConsole({ drawId }: { drawId: string }): React.ReactE
|
|||||||
<TableBody>
|
<TableBody>
|
||||||
{data.settlement_batches.map((b) => (
|
{data.settlement_batches.map((b) => (
|
||||||
<TableRow key={b.id}>
|
<TableRow key={b.id}>
|
||||||
<TableCell className="font-mono text-xs">{b.id}</TableCell>
|
<TableCell className="font-mono text-xs">
|
||||||
|
<Link
|
||||||
|
href={`/admin/settlement-batches/${b.id}/details`}
|
||||||
|
className="text-primary hover:underline"
|
||||||
|
>
|
||||||
|
{b.id}
|
||||||
|
</Link>
|
||||||
|
</TableCell>
|
||||||
|
<TableCell className="text-xs">
|
||||||
|
{b.provider_name || b.provider_code || "—"}
|
||||||
|
{b.provider_code ? (
|
||||||
|
<span className="ml-1 font-mono text-muted-foreground">({b.provider_code})</span>
|
||||||
|
) : null}
|
||||||
|
</TableCell>
|
||||||
|
<TableCell className="text-center font-mono text-xs">
|
||||||
|
{b.result_version == null ? "—" : `v${b.result_version}`}
|
||||||
|
</TableCell>
|
||||||
|
<TableCell className="text-center font-mono text-xs">v{b.settle_version}</TableCell>
|
||||||
<TableCell>
|
<TableCell>
|
||||||
<AdminStatusBadge status={b.status}>
|
<AdminStatusBadge status={b.status}>
|
||||||
{settlementBatchStatusLabel(b.status, t)}
|
{settlementBatchStatusLabel(b.status, t)}
|
||||||
|
|||||||
@@ -58,6 +58,10 @@ export function DrawResultsConsole({ drawId }: { drawId: string }) {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="space-y-4">
|
<div className="space-y-4">
|
||||||
|
<div>
|
||||||
|
<h2 className="text-sm font-semibold">{t("officialResultsTitle")}</h2>
|
||||||
|
<p className="mt-1 text-xs text-muted-foreground">{t("officialResultsHint")}</p>
|
||||||
|
</div>
|
||||||
{published.length === 0 ? (
|
{published.length === 0 ? (
|
||||||
<AdminNoResourceState message={t("noPublishedBatch")} />
|
<AdminNoResourceState message={t("noPublishedBatch")} />
|
||||||
) : (
|
) : (
|
||||||
|
|||||||
@@ -181,8 +181,12 @@ export function DrawReviewConsole({ drawId }: { drawId: string }): React.ReactEl
|
|||||||
return <AdminNoResourceState />;
|
return <AdminNoResourceState />;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const canEnterManualResults =
|
||||||
|
canManageDraw && ["closed", "review"].includes(data.draw_status);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="space-y-4">
|
<div className="space-y-4">
|
||||||
|
{pending.length > 0 || canEnterManualResults ? (
|
||||||
<div className="rounded-lg border border-border/60">
|
<div className="rounded-lg border border-border/60">
|
||||||
<div className="flex items-center justify-between border-b border-border/60 px-3 py-2.5">
|
<div className="flex items-center justify-between border-b border-border/60 px-3 py-2.5">
|
||||||
<h2 className="text-sm font-semibold">{t("pendingBatches")}</h2>
|
<h2 className="text-sm font-semibold">{t("pendingBatches")}</h2>
|
||||||
@@ -244,8 +248,9 @@ export function DrawReviewConsole({ drawId }: { drawId: string }): React.ReactEl
|
|||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
) : null}
|
||||||
|
|
||||||
{canManageDraw ? (
|
{canEnterManualResults ? (
|
||||||
<div className="rounded-lg border border-border/60">
|
<div className="rounded-lg border border-border/60">
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
@@ -330,7 +335,7 @@ export function DrawReviewConsole({ drawId }: { drawId: string }): React.ReactEl
|
|||||||
type="button"
|
type="button"
|
||||||
size="sm"
|
size="sm"
|
||||||
className="h-8"
|
className="h-8"
|
||||||
disabled={savingManual || !manualProviderCode || !["closed", "review"].includes(data.draw_status)}
|
disabled={savingManual || !manualProviderCode}
|
||||||
onClick={() =>
|
onClick={() =>
|
||||||
requestConfirm({
|
requestConfirm({
|
||||||
title: t("confirm.saveManualDraftTitle"),
|
title: t("confirm.saveManualDraftTitle"),
|
||||||
|
|||||||
@@ -6,13 +6,14 @@ import { useTranslation } from "react-i18next";
|
|||||||
|
|
||||||
import { AdminSubnav, AdminSubnavLink } from "@/components/admin/admin-subnav";
|
import { AdminSubnav, AdminSubnavLink } from "@/components/admin/admin-subnav";
|
||||||
import { adminHasAnyPermission } from "@/lib/admin-permissions";
|
import { adminHasAnyPermission } from "@/lib/admin-permissions";
|
||||||
import { PRD_RISK_ACCESS_ANY } from "@/lib/admin-prd";
|
import { PRD_RISK_ACCESS_ANY, PRD_TICKETS_ACCESS_ANY } from "@/lib/admin-prd";
|
||||||
import { canViewDrawFinance, canViewDrawResults } from "@/lib/draw-access";
|
import { canViewDrawFinance, canViewDrawResults } from "@/lib/draw-access";
|
||||||
import { useAdminProfile } from "@/stores/admin-session";
|
import { useAdminProfile } from "@/stores/admin-session";
|
||||||
|
|
||||||
const segments = [
|
const segments = [
|
||||||
{ suffix: "", key: "status", label: "subnav.status", requiresManage: false },
|
{ suffix: "", key: "status", label: "subnav.status", requiresManage: false },
|
||||||
{ suffix: "/results", key: "results", label: "subnav.results", requiresManage: false },
|
{ suffix: "/results", key: "results", label: "subnav.results", requiresManage: false },
|
||||||
|
{ suffix: "/tickets", key: "tickets", label: "subnav.tickets", requiresManage: false },
|
||||||
{ suffix: "/finance", key: "finance", label: "subnav.finance", requiresManage: false },
|
{ suffix: "/finance", key: "finance", label: "subnav.finance", requiresManage: false },
|
||||||
{
|
{
|
||||||
suffix: "/risk/pools",
|
suffix: "/risk/pools",
|
||||||
@@ -49,6 +50,7 @@ export function DrawSubnav({ drawId }: { drawId: string }): React.ReactElement {
|
|||||||
const canViewDraw = canViewDrawResults(perms);
|
const canViewDraw = canViewDrawResults(perms);
|
||||||
const canViewFinance = canViewDrawFinance(perms);
|
const canViewFinance = canViewDrawFinance(perms);
|
||||||
const canViewRisk = adminHasAnyPermission(perms, [...PRD_RISK_ACCESS_ANY]);
|
const canViewRisk = adminHasAnyPermission(perms, [...PRD_RISK_ACCESS_ANY]);
|
||||||
|
const canViewTickets = adminHasAnyPermission(perms, [...PRD_TICKETS_ACCESS_ANY]);
|
||||||
|
|
||||||
const visibleSegments = useMemo(
|
const visibleSegments = useMemo(
|
||||||
() =>
|
() =>
|
||||||
@@ -59,13 +61,16 @@ export function DrawSubnav({ drawId }: { drawId: string }): React.ReactElement {
|
|||||||
if (segment.key === "finance" && !canViewFinance) {
|
if (segment.key === "finance" && !canViewFinance) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if (segment.key === "tickets" && !canViewTickets) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
if ("requiresRisk" in segment && segment.requiresRisk && !canViewRisk) {
|
if ("requiresRisk" in segment && segment.requiresRisk && !canViewRisk) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}),
|
}),
|
||||||
[canViewDraw, canViewFinance, canViewRisk],
|
[canViewDraw, canViewFinance, canViewRisk, canViewTickets],
|
||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
22
src/modules/draws/draw-tickets-console.tsx
Normal file
22
src/modules/draws/draw-tickets-console.tsx
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { AdminLoadingState } from "@/components/admin/admin-loading-state";
|
||||||
|
import { AdminNoResourceState } from "@/components/admin/admin-no-resource-state";
|
||||||
|
import { useDrawDetail } from "@/modules/draws/draw-detail-context";
|
||||||
|
import { PlayerTicketsConsole } from "@/modules/tickets/player-tickets-console";
|
||||||
|
|
||||||
|
export function DrawTicketsConsole(): React.ReactElement {
|
||||||
|
const { draw, loading, error } = useDrawDetail();
|
||||||
|
|
||||||
|
if (loading && !draw) {
|
||||||
|
return <AdminLoadingState minHeight="6rem" className="py-6" />;
|
||||||
|
}
|
||||||
|
if (error) {
|
||||||
|
return <p className="text-sm text-destructive">{error}</p>;
|
||||||
|
}
|
||||||
|
if (!draw) {
|
||||||
|
return <AdminNoResourceState />;
|
||||||
|
}
|
||||||
|
|
||||||
|
return <PlayerTicketsConsole fixedDrawNo={draw.draw_no} />;
|
||||||
|
}
|
||||||
@@ -3,6 +3,7 @@
|
|||||||
import { useCallback, useEffect, useState } from "react";
|
import { useCallback, useEffect, useState } from "react";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
|
|
||||||
|
import { AdminPageGuideDialog } from "@/components/admin/admin-page-guide-dialog";
|
||||||
import { AdminSubnav, AdminSubnavButton } from "@/components/admin/admin-subnav";
|
import { AdminSubnav, AdminSubnavButton } from "@/components/admin/admin-subnav";
|
||||||
import { JackpotPoolsConsole } from "@/modules/jackpot/jackpot-pools-console";
|
import { JackpotPoolsConsole } from "@/modules/jackpot/jackpot-pools-console";
|
||||||
import { JackpotRecordsConsole } from "@/modules/jackpot/jackpot-records-console";
|
import { JackpotRecordsConsole } from "@/modules/jackpot/jackpot-records-console";
|
||||||
@@ -37,6 +38,7 @@ export function JackpotConfigScreen() {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="flex w-full max-w-none flex-col gap-4">
|
<div className="flex w-full max-w-none flex-col gap-4">
|
||||||
|
<div className="flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between">
|
||||||
<AdminSubnav aria-label={t("pageTabs")}>
|
<AdminSubnav aria-label={t("pageTabs")}>
|
||||||
<AdminSubnavButton active={tab === "config"} onClick={() => switchTab("config")}>
|
<AdminSubnavButton active={tab === "config"} onClick={() => switchTab("config")}>
|
||||||
{t("tabConfig")}
|
{t("tabConfig")}
|
||||||
@@ -45,6 +47,41 @@ export function JackpotConfigScreen() {
|
|||||||
{t("tabRecords")}
|
{t("tabRecords")}
|
||||||
</AdminSubnavButton>
|
</AdminSubnavButton>
|
||||||
</AdminSubnav>
|
</AdminSubnav>
|
||||||
|
<AdminPageGuideDialog
|
||||||
|
triggerLabel={t("help.openGuide")}
|
||||||
|
title={t("help.guideTitle")}
|
||||||
|
description={t("help.guideDescription")}
|
||||||
|
sections={[
|
||||||
|
{
|
||||||
|
title: t("help.guide.settingsTitle"),
|
||||||
|
description: t("help.guide.settingsDescription"),
|
||||||
|
items: [
|
||||||
|
{ label: t("currentAmount"), description: t("help.fields.currentAmount") },
|
||||||
|
{ label: t("status"), description: t("help.fields.status") },
|
||||||
|
{ label: t("contributionRate"), description: t("help.fields.contributionRate") },
|
||||||
|
{ label: t("minBetAmount"), description: t("help.fields.minBetAmount") },
|
||||||
|
{ label: t("triggerThreshold"), description: t("help.fields.triggerThreshold") },
|
||||||
|
{ label: t("payoutRate"), description: t("help.fields.payoutRate") },
|
||||||
|
{ label: t("forceTriggerGap"), description: t("help.fields.forceTriggerGap") },
|
||||||
|
{ label: t("comboTriggerPlays"), description: t("help.fields.comboTriggerPlays") },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: t("help.guide.actionsTitle"),
|
||||||
|
description: t("help.guide.actionsDescription"),
|
||||||
|
items: [
|
||||||
|
{ label: t("balanceAdjustmentTitle"), description: t("help.fields.balanceAdjustment") },
|
||||||
|
{ label: t("manualBurst"), description: t("help.fields.manualBurst") },
|
||||||
|
{ label: t("tabRecords"), description: t("help.fields.records") },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: t("help.guide.effectiveTitle"),
|
||||||
|
description: t("help.guide.effectiveDescription"),
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
{tab === "config" ? <JackpotPoolsConsole embedded /> : <JackpotRecordsConsole embedded />}
|
{tab === "config" ? <JackpotPoolsConsole embedded /> : <JackpotRecordsConsole embedded />}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -18,13 +18,17 @@ import { useConfirmAction } from "@/hooks/use-confirm-action";
|
|||||||
import { adminHasAnyPermission } from "@/lib/admin-permissions";
|
import { adminHasAnyPermission } from "@/lib/admin-permissions";
|
||||||
import { formatAdminMinorDecimal, parseAdminMajorToMinor } from "@/lib/money";
|
import { formatAdminMinorDecimal, parseAdminMajorToMinor } from "@/lib/money";
|
||||||
import { PRD_JACKPOT_MANAGE, PRD_JACKPOT_MANUAL_BURST } from "@/lib/admin-prd";
|
import { PRD_JACKPOT_MANAGE, PRD_JACKPOT_MANUAL_BURST } from "@/lib/admin-prd";
|
||||||
|
import {
|
||||||
|
AdminFieldLabel,
|
||||||
|
AdminHelpIcon,
|
||||||
|
AdminHelpText,
|
||||||
|
} from "@/components/admin/admin-field-label";
|
||||||
import { AdminPageCard } from "@/components/admin/admin-page-card";
|
import { AdminPageCard } from "@/components/admin/admin-page-card";
|
||||||
import { AdminNoResourceState } from "@/components/admin/admin-no-resource-state";
|
import { AdminNoResourceState } from "@/components/admin/admin-no-resource-state";
|
||||||
import { ModuleScaffold } from "@/components/admin/module-scaffold";
|
import { ModuleScaffold } from "@/components/admin/module-scaffold";
|
||||||
import { Button } from "@/components/ui/button";
|
import { Button } from "@/components/ui/button";
|
||||||
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
|
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
|
||||||
import { Input } from "@/components/ui/input";
|
import { Input } from "@/components/ui/input";
|
||||||
import { Label } from "@/components/ui/label";
|
|
||||||
import { Checkbox } from "@/components/ui/checkbox";
|
import { Checkbox } from "@/components/ui/checkbox";
|
||||||
import { Switch } from "@/components/ui/switch";
|
import { Switch } from "@/components/ui/switch";
|
||||||
import {
|
import {
|
||||||
@@ -273,9 +277,14 @@ export function JackpotPoolsConsole({ embedded = false }: JackpotPoolsConsolePro
|
|||||||
actions={
|
actions={
|
||||||
<div className="flex flex-wrap items-center gap-2">
|
<div className="flex flex-wrap items-center gap-2">
|
||||||
<div className="flex items-center gap-2">
|
<div className="flex items-center gap-2">
|
||||||
<Label htmlFor={`status-${p.id}`} className="text-sm text-muted-foreground">
|
<AdminFieldLabel
|
||||||
|
htmlFor={`status-${p.id}`}
|
||||||
|
className="text-sm text-muted-foreground"
|
||||||
|
helpText={t("help.fields.status")}
|
||||||
|
helpAriaLabel={t("help.aria", { field: t("status") })}
|
||||||
|
>
|
||||||
{t("status")}
|
{t("status")}
|
||||||
</Label>
|
</AdminFieldLabel>
|
||||||
<Switch
|
<Switch
|
||||||
id={`status-${p.id}`}
|
id={`status-${p.id}`}
|
||||||
checked={statusOn}
|
checked={statusOn}
|
||||||
@@ -304,11 +313,27 @@ export function JackpotPoolsConsole({ embedded = false }: JackpotPoolsConsolePro
|
|||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
<p className="mb-4 text-2xl font-semibold tabular-nums tracking-tight">{currentAmount}</p>
|
<div className="mb-4 flex flex-col gap-1">
|
||||||
|
<AdminHelpText
|
||||||
|
helpId={`current-amount-${p.id}`}
|
||||||
|
helpText={t("help.fields.currentAmount")}
|
||||||
|
helpAriaLabel={t("help.aria", { field: t("currentAmount") })}
|
||||||
|
className="text-sm font-medium text-muted-foreground"
|
||||||
|
>
|
||||||
|
{t("currentAmount")}
|
||||||
|
</AdminHelpText>
|
||||||
|
<p className="text-2xl font-semibold tabular-nums tracking-tight">{currentAmount}</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
<fieldset disabled={!canManageJackpot} className="grid gap-3 sm:grid-cols-2 lg:grid-cols-3">
|
<fieldset className="grid gap-3 sm:grid-cols-2 lg:grid-cols-3">
|
||||||
<div className="space-y-1.5">
|
<div className="space-y-1.5">
|
||||||
<Label htmlFor={`cr-${p.id}`}>{t("contributionRate")}</Label>
|
<AdminFieldLabel
|
||||||
|
htmlFor={`cr-${p.id}`}
|
||||||
|
helpText={t("help.fields.contributionRate")}
|
||||||
|
helpAriaLabel={t("help.aria", { field: t("contributionRate") })}
|
||||||
|
>
|
||||||
|
{t("contributionRate")}
|
||||||
|
</AdminFieldLabel>
|
||||||
<Input
|
<Input
|
||||||
id={`cr-${p.id}`}
|
id={`cr-${p.id}`}
|
||||||
type="number"
|
type="number"
|
||||||
@@ -316,21 +341,35 @@ export function JackpotPoolsConsole({ embedded = false }: JackpotPoolsConsolePro
|
|||||||
max={100}
|
max={100}
|
||||||
step="0.01"
|
step="0.01"
|
||||||
className="font-mono"
|
className="font-mono"
|
||||||
|
disabled={!canManageJackpot}
|
||||||
value={d.contribution_rate}
|
value={d.contribution_rate}
|
||||||
onChange={(e) => updateDraft(p.id, { contribution_rate: e.target.value })}
|
onChange={(e) => updateDraft(p.id, { contribution_rate: e.target.value })}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className="space-y-1.5">
|
<div className="space-y-1.5">
|
||||||
<Label htmlFor={`th-${p.id}`}>{t("triggerThreshold")}</Label>
|
<AdminFieldLabel
|
||||||
|
htmlFor={`th-${p.id}`}
|
||||||
|
helpText={t("help.fields.triggerThreshold")}
|
||||||
|
helpAriaLabel={t("help.aria", { field: t("triggerThreshold") })}
|
||||||
|
>
|
||||||
|
{t("triggerThreshold")}
|
||||||
|
</AdminFieldLabel>
|
||||||
<Input
|
<Input
|
||||||
id={`th-${p.id}`}
|
id={`th-${p.id}`}
|
||||||
className="font-mono"
|
className="font-mono"
|
||||||
|
disabled={!canManageJackpot}
|
||||||
value={d.trigger_threshold}
|
value={d.trigger_threshold}
|
||||||
onChange={(e) => updateDraft(p.id, { trigger_threshold: e.target.value })}
|
onChange={(e) => updateDraft(p.id, { trigger_threshold: e.target.value })}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className="space-y-1.5">
|
<div className="space-y-1.5">
|
||||||
<Label htmlFor={`pr-${p.id}`}>{t("payoutRate")}</Label>
|
<AdminFieldLabel
|
||||||
|
htmlFor={`pr-${p.id}`}
|
||||||
|
helpText={t("help.fields.payoutRate")}
|
||||||
|
helpAriaLabel={t("help.aria", { field: t("payoutRate") })}
|
||||||
|
>
|
||||||
|
{t("payoutRate")}
|
||||||
|
</AdminFieldLabel>
|
||||||
<Input
|
<Input
|
||||||
id={`pr-${p.id}`}
|
id={`pr-${p.id}`}
|
||||||
type="number"
|
type="number"
|
||||||
@@ -338,31 +377,53 @@ export function JackpotPoolsConsole({ embedded = false }: JackpotPoolsConsolePro
|
|||||||
max={100}
|
max={100}
|
||||||
step="0.01"
|
step="0.01"
|
||||||
className="font-mono"
|
className="font-mono"
|
||||||
|
disabled={!canManageJackpot}
|
||||||
value={d.payout_rate}
|
value={d.payout_rate}
|
||||||
onChange={(e) => updateDraft(p.id, { payout_rate: e.target.value })}
|
onChange={(e) => updateDraft(p.id, { payout_rate: e.target.value })}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className="space-y-1.5">
|
<div className="space-y-1.5">
|
||||||
<Label htmlFor={`min-${p.id}`}>{t("minBetAmount")}</Label>
|
<AdminFieldLabel
|
||||||
|
htmlFor={`min-${p.id}`}
|
||||||
|
helpText={t("help.fields.minBetAmount")}
|
||||||
|
helpAriaLabel={t("help.aria", { field: t("minBetAmount") })}
|
||||||
|
>
|
||||||
|
{t("minBetAmount")}
|
||||||
|
</AdminFieldLabel>
|
||||||
<Input
|
<Input
|
||||||
id={`min-${p.id}`}
|
id={`min-${p.id}`}
|
||||||
className="font-mono"
|
className="font-mono"
|
||||||
|
disabled={!canManageJackpot}
|
||||||
value={d.min_bet_amount}
|
value={d.min_bet_amount}
|
||||||
onChange={(e) => updateDraft(p.id, { min_bet_amount: e.target.value })}
|
onChange={(e) => updateDraft(p.id, { min_bet_amount: e.target.value })}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className="space-y-1.5 sm:col-span-2 lg:col-span-2">
|
<div className="space-y-1.5 sm:col-span-2 lg:col-span-2">
|
||||||
<Label htmlFor={`gap-${p.id}`}>{t("forceTriggerGap")}</Label>
|
<AdminFieldLabel
|
||||||
|
htmlFor={`gap-${p.id}`}
|
||||||
|
helpText={t("help.fields.forceTriggerGap")}
|
||||||
|
helpAriaLabel={t("help.aria", { field: t("forceTriggerGap") })}
|
||||||
|
>
|
||||||
|
{t("forceTriggerGap")}
|
||||||
|
</AdminFieldLabel>
|
||||||
<Input
|
<Input
|
||||||
id={`gap-${p.id}`}
|
id={`gap-${p.id}`}
|
||||||
className="font-mono"
|
className="font-mono"
|
||||||
|
disabled={!canManageJackpot}
|
||||||
value={d.force_trigger_draw_gap}
|
value={d.force_trigger_draw_gap}
|
||||||
onChange={(e) => updateDraft(p.id, { force_trigger_draw_gap: e.target.value })}
|
onChange={(e) => updateDraft(p.id, { force_trigger_draw_gap: e.target.value })}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className="space-y-2 sm:col-span-2 lg:col-span-3">
|
<div className="space-y-2 sm:col-span-2 lg:col-span-3">
|
||||||
<div>
|
<div>
|
||||||
<Label id={`combo-label-${p.id}`}>{t("comboTriggerPlays")}</Label>
|
<AdminHelpText
|
||||||
|
helpId={`combo-label-${p.id}`}
|
||||||
|
helpText={t("help.fields.comboTriggerPlays")}
|
||||||
|
helpAriaLabel={t("help.aria", { field: t("comboTriggerPlays") })}
|
||||||
|
className="text-sm font-medium"
|
||||||
|
>
|
||||||
|
<span id={`combo-label-${p.id}`}>{t("comboTriggerPlays")}</span>
|
||||||
|
</AdminHelpText>
|
||||||
<p className="text-xs text-muted-foreground">{t("comboTriggerPlaysHint")}</p>
|
<p className="text-xs text-muted-foreground">{t("comboTriggerPlaysHint")}</p>
|
||||||
</div>
|
</div>
|
||||||
{playOptions.length === 0 ? (
|
{playOptions.length === 0 ? (
|
||||||
@@ -417,6 +478,7 @@ export function JackpotPoolsConsole({ embedded = false }: JackpotPoolsConsolePro
|
|||||||
|
|
||||||
{canManageJackpot ? (
|
{canManageJackpot ? (
|
||||||
<div className="mt-4 border-t border-border/60 pt-3">
|
<div className="mt-4 border-t border-border/60 pt-3">
|
||||||
|
<div className="flex items-center gap-1">
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
className="text-sm font-medium text-foreground hover:underline"
|
className="text-sm font-medium text-foreground hover:underline"
|
||||||
@@ -424,10 +486,22 @@ export function JackpotPoolsConsole({ embedded = false }: JackpotPoolsConsolePro
|
|||||||
>
|
>
|
||||||
{t("balanceAdjustmentTitle")}
|
{t("balanceAdjustmentTitle")}
|
||||||
</button>
|
</button>
|
||||||
|
<AdminHelpIcon
|
||||||
|
helpId={`balance-adjustment-${p.id}`}
|
||||||
|
helpText={t("help.fields.balanceAdjustment")}
|
||||||
|
helpAriaLabel={t("help.aria", { field: t("balanceAdjustmentTitle") })}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
{adjustmentOpen ? (
|
{adjustmentOpen ? (
|
||||||
<div className="mt-3 grid gap-3 sm:grid-cols-2">
|
<div className="mt-3 grid gap-3 sm:grid-cols-2">
|
||||||
<div className="space-y-1.5">
|
<div className="space-y-1.5">
|
||||||
<Label>{t("adjustmentDirection")}</Label>
|
<AdminFieldLabel
|
||||||
|
htmlFor={`adj-direction-${p.id}`}
|
||||||
|
helpText={t("help.fields.adjustmentDirection")}
|
||||||
|
helpAriaLabel={t("help.aria", { field: t("adjustmentDirection") })}
|
||||||
|
>
|
||||||
|
{t("adjustmentDirection")}
|
||||||
|
</AdminFieldLabel>
|
||||||
<Select
|
<Select
|
||||||
value={adj.direction}
|
value={adj.direction}
|
||||||
onValueChange={(value: "increase" | "decrease" | null) => {
|
onValueChange={(value: "increase" | "decrease" | null) => {
|
||||||
@@ -435,7 +509,7 @@ export function JackpotPoolsConsole({ embedded = false }: JackpotPoolsConsolePro
|
|||||||
updateAdjustmentDraft(p.id, { direction: value });
|
updateAdjustmentDraft(p.id, { direction: value });
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<SelectTrigger className="w-full min-w-0">
|
<SelectTrigger id={`adj-direction-${p.id}`} className="w-full min-w-0">
|
||||||
<SelectValue>
|
<SelectValue>
|
||||||
{(value) =>
|
{(value) =>
|
||||||
value === "increase"
|
value === "increase"
|
||||||
@@ -453,7 +527,13 @@ export function JackpotPoolsConsole({ embedded = false }: JackpotPoolsConsolePro
|
|||||||
</Select>
|
</Select>
|
||||||
</div>
|
</div>
|
||||||
<div className="space-y-1.5">
|
<div className="space-y-1.5">
|
||||||
<Label htmlFor={`adj-amt-${p.id}`}>{t("adjustmentAmount")}</Label>
|
<AdminFieldLabel
|
||||||
|
htmlFor={`adj-amt-${p.id}`}
|
||||||
|
helpText={t("help.fields.adjustmentAmount")}
|
||||||
|
helpAriaLabel={t("help.aria", { field: t("adjustmentAmount") })}
|
||||||
|
>
|
||||||
|
{t("adjustmentAmount")}
|
||||||
|
</AdminFieldLabel>
|
||||||
<Input
|
<Input
|
||||||
id={`adj-amt-${p.id}`}
|
id={`adj-amt-${p.id}`}
|
||||||
className="font-mono"
|
className="font-mono"
|
||||||
@@ -462,7 +542,13 @@ export function JackpotPoolsConsole({ embedded = false }: JackpotPoolsConsolePro
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className="space-y-1.5 sm:col-span-2">
|
<div className="space-y-1.5 sm:col-span-2">
|
||||||
<Label htmlFor={`adj-reason-${p.id}`}>{t("adjustmentReason")}</Label>
|
<AdminFieldLabel
|
||||||
|
htmlFor={`adj-reason-${p.id}`}
|
||||||
|
helpText={t("help.fields.adjustmentReason")}
|
||||||
|
helpAriaLabel={t("help.aria", { field: t("adjustmentReason") })}
|
||||||
|
>
|
||||||
|
{t("adjustmentReason")}
|
||||||
|
</AdminFieldLabel>
|
||||||
<Textarea
|
<Textarea
|
||||||
id={`adj-reason-${p.id}`}
|
id={`adj-reason-${p.id}`}
|
||||||
rows={2}
|
rows={2}
|
||||||
@@ -512,7 +598,13 @@ export function JackpotPoolsConsole({ embedded = false }: JackpotPoolsConsolePro
|
|||||||
{canManualBurst ? (
|
{canManualBurst ? (
|
||||||
<div className="mt-4 flex flex-col gap-2 border-t border-border/60 pt-3 sm:flex-row sm:items-end">
|
<div className="mt-4 flex flex-col gap-2 border-t border-border/60 pt-3 sm:flex-row sm:items-end">
|
||||||
<div className="min-w-0 flex-1 space-y-1.5 sm:max-w-xs">
|
<div className="min-w-0 flex-1 space-y-1.5 sm:max-w-xs">
|
||||||
<Label htmlFor={`burst-draw-${p.id}`}>{t("manualBurstDrawId")}</Label>
|
<AdminFieldLabel
|
||||||
|
htmlFor={`burst-draw-${p.id}`}
|
||||||
|
helpText={t("help.fields.manualBurst")}
|
||||||
|
helpAriaLabel={t("help.aria", { field: t("manualBurstDrawId") })}
|
||||||
|
>
|
||||||
|
{t("manualBurstDrawId")}
|
||||||
|
</AdminFieldLabel>
|
||||||
<Input
|
<Input
|
||||||
id={`burst-draw-${p.id}`}
|
id={`burst-draw-${p.id}`}
|
||||||
className="font-mono"
|
className="font-mono"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { Eye, Pencil, Trash2 } from "lucide-react";
|
import { Eye, KeyRound, Pencil, Trash2 } from "lucide-react";
|
||||||
import { useCallback, useMemo, useState } from "react";
|
import { useCallback, useMemo, useState } from "react";
|
||||||
import { usePathname, useRouter, useSearchParams } from "next/navigation";
|
import { usePathname, useRouter, useSearchParams } from "next/navigation";
|
||||||
import { useConfirmAction } from "@/hooks/use-confirm-action";
|
import { useConfirmAction } from "@/hooks/use-confirm-action";
|
||||||
@@ -20,7 +20,9 @@ import {
|
|||||||
postAdminPlayerFreeze,
|
postAdminPlayerFreeze,
|
||||||
postAdminPlayerUnfreeze,
|
postAdminPlayerUnfreeze,
|
||||||
putAdminPlayer,
|
putAdminPlayer,
|
||||||
|
putAdminPlayerPassword,
|
||||||
} from "@/api/admin-player";
|
} from "@/api/admin-player";
|
||||||
|
import { AdminFieldLabel } from "@/components/admin/admin-field-label";
|
||||||
import { PlayerCreditLimitField } from "@/components/admin/player-credit-limit-field";
|
import { PlayerCreditLimitField } from "@/components/admin/player-credit-limit-field";
|
||||||
import { flattenAgentTree, type FlatAgentOption } from "@/lib/admin-agent-tree";
|
import { flattenAgentTree, type FlatAgentOption } from "@/lib/admin-agent-tree";
|
||||||
import { useAdminSiteCodeOptions } from "@/hooks/use-admin-site-code-options";
|
import { useAdminSiteCodeOptions } from "@/hooks/use-admin-site-code-options";
|
||||||
@@ -160,6 +162,10 @@ export function PlayersConsole(): React.ReactElement {
|
|||||||
const [deleteTarget, setDeleteTarget] = useState<AdminPlayerRow | null>(null);
|
const [deleteTarget, setDeleteTarget] = useState<AdminPlayerRow | null>(null);
|
||||||
const [deleteBusy, setDeleteBusy] = useState(false);
|
const [deleteBusy, setDeleteBusy] = useState(false);
|
||||||
const [freezeBusyId, setFreezeBusyId] = useState<number | null>(null);
|
const [freezeBusyId, setFreezeBusyId] = useState<number | null>(null);
|
||||||
|
const [passwordTarget, setPasswordTarget] = useState<AdminPlayerRow | null>(null);
|
||||||
|
const [resetPassword, setResetPassword] = useState("");
|
||||||
|
const [resetPasswordConfirm, setResetPasswordConfirm] = useState("");
|
||||||
|
const [passwordResetBusy, setPasswordResetBusy] = useState(false);
|
||||||
|
|
||||||
const editingPlayer = useMemo(
|
const editingPlayer = useMemo(
|
||||||
() => items.find((p) => p.id === editingAccountId) ?? null,
|
() => items.find((p) => p.id === editingAccountId) ?? null,
|
||||||
@@ -177,6 +183,55 @@ export function PlayersConsole(): React.ReactElement {
|
|||||||
|
|
||||||
const editingUsesCredit = editingPlayer != null && isCreditFundingPlayer(editingPlayer);
|
const editingUsesCredit = editingPlayer != null && isCreditFundingPlayer(editingPlayer);
|
||||||
|
|
||||||
|
function openPasswordReset(player: AdminPlayerRow) {
|
||||||
|
setResetPassword("");
|
||||||
|
setResetPasswordConfirm("");
|
||||||
|
setPasswordTarget(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
function handlePasswordDialogOpenChange(open: boolean) {
|
||||||
|
if (open) return;
|
||||||
|
setPasswordTarget(null);
|
||||||
|
setResetPassword("");
|
||||||
|
setResetPasswordConfirm("");
|
||||||
|
}
|
||||||
|
|
||||||
|
async function submitPasswordReset() {
|
||||||
|
if (passwordTarget === null) return;
|
||||||
|
|
||||||
|
const issue = validateNativePlayerPassword(resetPassword);
|
||||||
|
if (issue === "empty") {
|
||||||
|
toast.error(t("resetPasswordRequired"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (issue === "too_short") {
|
||||||
|
toast.error(t("resetPasswordMinLength"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (resetPassword !== resetPasswordConfirm) {
|
||||||
|
toast.error(t("resetPasswordMismatch"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
setPasswordResetBusy(true);
|
||||||
|
try {
|
||||||
|
await putAdminPlayerPassword(passwordTarget.id, {
|
||||||
|
password: resetPassword,
|
||||||
|
password_confirmation: resetPasswordConfirm,
|
||||||
|
});
|
||||||
|
toast.success(
|
||||||
|
t("resetPasswordSuccess", {
|
||||||
|
name: passwordTarget.username ?? passwordTarget.site_player_id,
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
handlePasswordDialogOpenChange(false);
|
||||||
|
} catch (error) {
|
||||||
|
toast.error(error instanceof LotteryApiBizError ? error.message : t("resetPasswordFailed"));
|
||||||
|
} finally {
|
||||||
|
setPasswordResetBusy(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const showSiteFilter =
|
const showSiteFilter =
|
||||||
isSuperAdmin || (profile?.accessible_sites?.length ?? 0) > 1;
|
isSuperAdmin || (profile?.accessible_sites?.length ?? 0) > 1;
|
||||||
|
|
||||||
@@ -828,6 +883,13 @@ export function PlayersConsole(): React.ReactElement {
|
|||||||
icon: Pencil,
|
icon: Pencil,
|
||||||
onClick: () => openEditAccount(row),
|
onClick: () => openEditAccount(row),
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
key: "reset-password",
|
||||||
|
label: t("resetPassword"),
|
||||||
|
icon: KeyRound,
|
||||||
|
hidden: row.auth_source !== "lottery_native",
|
||||||
|
onClick: () => openPasswordReset(row),
|
||||||
|
},
|
||||||
{
|
{
|
||||||
key: "delete",
|
key: "delete",
|
||||||
label: t("delete"),
|
label: t("delete"),
|
||||||
@@ -875,7 +937,17 @@ export function PlayersConsole(): React.ReactElement {
|
|||||||
{accountMode === "create" && (
|
{accountMode === "create" && (
|
||||||
<>
|
<>
|
||||||
<div className="space-y-1.5">
|
<div className="space-y-1.5">
|
||||||
<Label htmlFor="player-funding-mode">{t("createFundingMode")}</Label>
|
<AdminFieldLabel
|
||||||
|
htmlFor="player-funding-mode"
|
||||||
|
helpText={
|
||||||
|
formFundingMode === "credit"
|
||||||
|
? t("helpFundingCredit")
|
||||||
|
: t("helpFundingWallet")
|
||||||
|
}
|
||||||
|
helpAriaLabel={t("fieldHelpAria", { field: t("createFundingMode") })}
|
||||||
|
>
|
||||||
|
{t("createFundingMode")}
|
||||||
|
</AdminFieldLabel>
|
||||||
<Select
|
<Select
|
||||||
value={formFundingMode}
|
value={formFundingMode}
|
||||||
onValueChange={(value) => {
|
onValueChange={(value) => {
|
||||||
@@ -901,7 +973,13 @@ export function PlayersConsole(): React.ReactElement {
|
|||||||
</Select>
|
</Select>
|
||||||
</div>
|
</div>
|
||||||
<div className="space-y-1.5">
|
<div className="space-y-1.5">
|
||||||
<Label htmlFor="player-site-code">{t("siteCode")}</Label>
|
<AdminFieldLabel
|
||||||
|
htmlFor="player-site-code"
|
||||||
|
helpText={t("helpSiteCode")}
|
||||||
|
helpAriaLabel={t("fieldHelpAria", { field: t("siteCode") })}
|
||||||
|
>
|
||||||
|
{t("siteCode")}
|
||||||
|
</AdminFieldLabel>
|
||||||
{boundAgent && boundAgent.site_code ? (
|
{boundAgent && boundAgent.site_code ? (
|
||||||
<Input id="player-site-code" value={boundAgent.site_code} disabled readOnly />
|
<Input id="player-site-code" value={boundAgent.site_code} disabled readOnly />
|
||||||
) : canChooseSite && siteOptions.length > 0 ? (
|
) : canChooseSite && siteOptions.length > 0 ? (
|
||||||
@@ -943,7 +1021,13 @@ export function PlayersConsole(): React.ReactElement {
|
|||||||
</p>
|
</p>
|
||||||
) : canPickAgentOnCreate ? (
|
) : canPickAgentOnCreate ? (
|
||||||
<div className="space-y-1.5">
|
<div className="space-y-1.5">
|
||||||
<Label htmlFor="player-agent-node">{t("createAgentNode")}</Label>
|
<AdminFieldLabel
|
||||||
|
htmlFor="player-agent-node"
|
||||||
|
helpText={t("helpAgentNode")}
|
||||||
|
helpAriaLabel={t("fieldHelpAria", { field: t("createAgentNode") })}
|
||||||
|
>
|
||||||
|
{t("createAgentNode")}
|
||||||
|
</AdminFieldLabel>
|
||||||
<Select
|
<Select
|
||||||
value={
|
value={
|
||||||
formAgentNodeId != null && formAgentNodeId > 0
|
formAgentNodeId != null && formAgentNodeId > 0
|
||||||
@@ -970,7 +1054,17 @@ export function PlayersConsole(): React.ReactElement {
|
|||||||
</div>
|
</div>
|
||||||
) : null}
|
) : null}
|
||||||
<div className="space-y-1.5">
|
<div className="space-y-1.5">
|
||||||
<Label htmlFor="player-site-id">{t("sitePlayerIdLabel")}</Label>
|
<AdminFieldLabel
|
||||||
|
htmlFor="player-site-id"
|
||||||
|
helpText={
|
||||||
|
formFundingMode === "credit"
|
||||||
|
? t("helpSitePlayerIdCredit")
|
||||||
|
: t("helpSitePlayerIdWallet")
|
||||||
|
}
|
||||||
|
helpAriaLabel={t("fieldHelpAria", { field: t("sitePlayerIdLabel") })}
|
||||||
|
>
|
||||||
|
{t("sitePlayerIdLabel")}
|
||||||
|
</AdminFieldLabel>
|
||||||
<Input
|
<Input
|
||||||
id="player-site-id"
|
id="player-site-id"
|
||||||
value={formSitePlayerId}
|
value={formSitePlayerId}
|
||||||
@@ -985,7 +1079,13 @@ export function PlayersConsole(): React.ReactElement {
|
|||||||
{formFundingMode === "credit" ? (
|
{formFundingMode === "credit" ? (
|
||||||
<>
|
<>
|
||||||
<div className="space-y-1.5">
|
<div className="space-y-1.5">
|
||||||
<Label htmlFor="player-username">{t("username")}</Label>
|
<AdminFieldLabel
|
||||||
|
htmlFor="player-username"
|
||||||
|
helpText={t("helpUsernameCredit")}
|
||||||
|
helpAriaLabel={t("fieldHelpAria", { field: t("username") })}
|
||||||
|
>
|
||||||
|
{t("username")}
|
||||||
|
</AdminFieldLabel>
|
||||||
<Input
|
<Input
|
||||||
id="player-username"
|
id="player-username"
|
||||||
value={formUsername}
|
value={formUsername}
|
||||||
@@ -995,7 +1095,13 @@ export function PlayersConsole(): React.ReactElement {
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className="space-y-1.5">
|
<div className="space-y-1.5">
|
||||||
<Label htmlFor="player-password">{t("createLoginPassword")}</Label>
|
<AdminFieldLabel
|
||||||
|
htmlFor="player-password"
|
||||||
|
helpText={t("helpPassword")}
|
||||||
|
helpAriaLabel={t("fieldHelpAria", { field: t("createLoginPassword") })}
|
||||||
|
>
|
||||||
|
{t("createLoginPassword")}
|
||||||
|
</AdminFieldLabel>
|
||||||
<Input
|
<Input
|
||||||
id="player-password"
|
id="player-password"
|
||||||
type="password"
|
type="password"
|
||||||
@@ -1010,11 +1116,19 @@ export function PlayersConsole(): React.ReactElement {
|
|||||||
value={formCreditLimit}
|
value={formCreditLimit}
|
||||||
onValueChange={setFormCreditLimit}
|
onValueChange={setFormCreditLimit}
|
||||||
parentAvailableCredit={parentAvailableCredit}
|
parentAvailableCredit={parentAvailableCredit}
|
||||||
|
helpText={t("helpCreditLimit")}
|
||||||
|
helpAriaLabel={t("fieldHelpAria", { field: t("creditLimit") })}
|
||||||
/>
|
/>
|
||||||
</>
|
</>
|
||||||
) : (
|
) : (
|
||||||
<div className="space-y-1.5">
|
<div className="space-y-1.5">
|
||||||
<Label htmlFor="player-username">{t("username")}</Label>
|
<AdminFieldLabel
|
||||||
|
htmlFor="player-username"
|
||||||
|
helpText={t("helpUsernameWallet")}
|
||||||
|
helpAriaLabel={t("fieldHelpAria", { field: t("username") })}
|
||||||
|
>
|
||||||
|
{t("username")}
|
||||||
|
</AdminFieldLabel>
|
||||||
<Input
|
<Input
|
||||||
id="player-username"
|
id="player-username"
|
||||||
value={formUsername}
|
value={formUsername}
|
||||||
@@ -1037,7 +1151,13 @@ export function PlayersConsole(): React.ReactElement {
|
|||||||
</div>
|
</div>
|
||||||
) : null}
|
) : null}
|
||||||
<div className="space-y-1.5">
|
<div className="space-y-1.5">
|
||||||
<Label htmlFor="player-nickname">{t("nickname")}</Label>
|
<AdminFieldLabel
|
||||||
|
htmlFor="player-nickname"
|
||||||
|
helpText={t("helpNickname")}
|
||||||
|
helpAriaLabel={t("fieldHelpAria", { field: t("nickname") })}
|
||||||
|
>
|
||||||
|
{t("nickname")}
|
||||||
|
</AdminFieldLabel>
|
||||||
<Input
|
<Input
|
||||||
id="player-nickname"
|
id="player-nickname"
|
||||||
value={formNickname}
|
value={formNickname}
|
||||||
@@ -1048,7 +1168,13 @@ export function PlayersConsole(): React.ReactElement {
|
|||||||
{accountMode === "create" && (
|
{accountMode === "create" && (
|
||||||
<>
|
<>
|
||||||
<div className="space-y-1.5">
|
<div className="space-y-1.5">
|
||||||
<Label htmlFor="player-currency">{t("defaultCurrency")}</Label>
|
<AdminFieldLabel
|
||||||
|
htmlFor="player-currency"
|
||||||
|
helpText={t("helpDefaultCurrency")}
|
||||||
|
helpAriaLabel={t("fieldHelpAria", { field: t("defaultCurrency") })}
|
||||||
|
>
|
||||||
|
{t("defaultCurrency")}
|
||||||
|
</AdminFieldLabel>
|
||||||
<Input
|
<Input
|
||||||
id="player-currency"
|
id="player-currency"
|
||||||
value={formDefaultCurrency}
|
value={formDefaultCurrency}
|
||||||
@@ -1057,7 +1183,13 @@ export function PlayersConsole(): React.ReactElement {
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className="space-y-1.5">
|
<div className="space-y-1.5">
|
||||||
<Label htmlFor="player-status">{t("status")}</Label>
|
<AdminFieldLabel
|
||||||
|
htmlFor="player-status"
|
||||||
|
helpText={t("helpStatus")}
|
||||||
|
helpAriaLabel={t("fieldHelpAria", { field: t("status") })}
|
||||||
|
>
|
||||||
|
{t("status")}
|
||||||
|
</AdminFieldLabel>
|
||||||
<Select
|
<Select
|
||||||
value={String(formStatus)}
|
value={String(formStatus)}
|
||||||
onValueChange={(v) => setFormStatus(Number(v))}
|
onValueChange={(v) => setFormStatus(Number(v))}
|
||||||
@@ -1123,6 +1255,8 @@ export function PlayersConsole(): React.ReactElement {
|
|||||||
onValueChange={setFormCreditLimit}
|
onValueChange={setFormCreditLimit}
|
||||||
parentAvailableCredit={parentAvailableCredit}
|
parentAvailableCredit={parentAvailableCredit}
|
||||||
baselineCreditLimit={editingPlayer?.credit_limit ?? 0}
|
baselineCreditLimit={editingPlayer?.credit_limit ?? 0}
|
||||||
|
helpText={t("helpCreditLimit")}
|
||||||
|
helpAriaLabel={t("fieldHelpAria", { field: t("creditLimit") })}
|
||||||
/>
|
/>
|
||||||
)
|
)
|
||||||
) : null}
|
) : null}
|
||||||
@@ -1166,6 +1300,70 @@ export function PlayersConsole(): React.ReactElement {
|
|||||||
</DialogContent>
|
</DialogContent>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
|
|
||||||
|
<Dialog
|
||||||
|
open={passwordTarget !== null}
|
||||||
|
onOpenChange={handlePasswordDialogOpenChange}
|
||||||
|
>
|
||||||
|
<DialogContent showCloseButton className="max-w-sm">
|
||||||
|
<DialogHeader>
|
||||||
|
<DialogTitle>{t("resetPasswordTitle")}</DialogTitle>
|
||||||
|
<DialogDescription>
|
||||||
|
{passwordTarget
|
||||||
|
? t("resetPasswordDescription", {
|
||||||
|
name: passwordTarget.username ?? passwordTarget.site_player_id,
|
||||||
|
})
|
||||||
|
: null}
|
||||||
|
</DialogDescription>
|
||||||
|
</DialogHeader>
|
||||||
|
<div className="space-y-4">
|
||||||
|
<div className="space-y-1.5">
|
||||||
|
<Label htmlFor="player-reset-password">{t("resetPasswordNew")}</Label>
|
||||||
|
<Input
|
||||||
|
id="player-reset-password"
|
||||||
|
type="password"
|
||||||
|
autoComplete="new-password"
|
||||||
|
value={resetPassword}
|
||||||
|
placeholder={t("resetPasswordPlaceholder")}
|
||||||
|
onChange={(event) => setResetPassword(event.target.value)}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div className="space-y-1.5">
|
||||||
|
<Label htmlFor="player-reset-password-confirm">
|
||||||
|
{t("resetPasswordConfirm")}
|
||||||
|
</Label>
|
||||||
|
<Input
|
||||||
|
id="player-reset-password-confirm"
|
||||||
|
type="password"
|
||||||
|
autoComplete="new-password"
|
||||||
|
value={resetPasswordConfirm}
|
||||||
|
placeholder={t("resetPasswordConfirmPlaceholder")}
|
||||||
|
onChange={(event) => setResetPasswordConfirm(event.target.value)}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<p className="text-xs leading-relaxed text-muted-foreground">
|
||||||
|
{t("resetPasswordSessionNotice")}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div className="flex justify-end gap-2">
|
||||||
|
<Button
|
||||||
|
type="button"
|
||||||
|
variant="outline"
|
||||||
|
disabled={passwordResetBusy}
|
||||||
|
onClick={() => handlePasswordDialogOpenChange(false)}
|
||||||
|
>
|
||||||
|
{t("cancel")}
|
||||||
|
</Button>
|
||||||
|
<Button
|
||||||
|
type="button"
|
||||||
|
disabled={passwordResetBusy}
|
||||||
|
onClick={() => void submitPasswordReset()}
|
||||||
|
>
|
||||||
|
{passwordResetBusy ? t("resetPasswordSaving") : t("resetPasswordSubmit")}
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
|
</DialogContent>
|
||||||
|
</Dialog>
|
||||||
|
|
||||||
<Dialog open={deleteTarget !== null} onOpenChange={(open) => !open && setDeleteTarget(null)}>
|
<Dialog open={deleteTarget !== null} onOpenChange={(open) => !open && setDeleteTarget(null)}>
|
||||||
<DialogContent showCloseButton className="max-w-sm">
|
<DialogContent showCloseButton className="max-w-sm">
|
||||||
<DialogHeader>
|
<DialogHeader>
|
||||||
|
|||||||
@@ -256,7 +256,7 @@ export function ReportsConsole({ initialCategory = "profit" }: ReportsConsolePro
|
|||||||
const payload = await getAdminReportPlayerWinLoss(reportListParams(filters, page, perPage));
|
const payload = await getAdminReportPlayerWinLoss(reportListParams(filters, page, perPage));
|
||||||
const currencyCode = resolveDisplayCurrency(payload.currency_code);
|
const currencyCode = resolveDisplayCurrency(payload.currency_code);
|
||||||
setDisplayCurrency(currencyCode);
|
setDisplayCurrency(currencyCode);
|
||||||
const houseGross = payload.items.reduce((sum, item) => sum - item.net_win_loss_minor, 0);
|
const houseGross = payload.items.reduce((sum, item) => sum + item.net_win_loss_minor, 0);
|
||||||
setResult({
|
setResult({
|
||||||
key: "player_win_loss",
|
key: "player_win_loss",
|
||||||
raw: payload.items,
|
raw: payload.items,
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import {
|
|||||||
postAdminRiskPoolRecover,
|
postAdminRiskPoolRecover,
|
||||||
} from "@/api/admin-risk";
|
} from "@/api/admin-risk";
|
||||||
import { AdminListPaginationFooter } from "@/components/admin/admin-list-pagination-footer";
|
import { AdminListPaginationFooter } from "@/components/admin/admin-list-pagination-footer";
|
||||||
|
import { AdminTableNoResourceRow } from "@/components/admin/admin-no-resource-state";
|
||||||
import { AdminRowActionsMenu } from "@/components/admin/admin-row-actions-menu";
|
import { AdminRowActionsMenu } from "@/components/admin/admin-row-actions-menu";
|
||||||
import { AdminStatusBadge } from "@/components/admin/admin-status-badge";
|
import { AdminStatusBadge } from "@/components/admin/admin-status-badge";
|
||||||
import { AdminTableExportButton } from "@/components/admin/admin-table-export-button";
|
import { AdminTableExportButton } from "@/components/admin/admin-table-export-button";
|
||||||
@@ -189,6 +190,12 @@ export function RiskPoolsConsole({
|
|||||||
<CardTitle className="admin-list-title">{pageTitle}</CardTitle>
|
<CardTitle className="admin-list-title">{pageTitle}</CardTitle>
|
||||||
</CardHeader>
|
</CardHeader>
|
||||||
<CardContent className="admin-list-content">
|
<CardContent className="admin-list-content">
|
||||||
|
<div className="rounded-lg border border-blue-200 bg-blue-50/70 px-3 py-2.5 text-sm text-blue-950 dark:border-blue-900 dark:bg-blue-950/20 dark:text-blue-100">
|
||||||
|
<p className="font-medium">{t("poolExplanationTitle")}</p>
|
||||||
|
<p className="mt-1 text-xs leading-5 text-blue-900/80 dark:text-blue-100/75">
|
||||||
|
{t("poolExplanation")}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
<div className="admin-list-toolbar">
|
<div className="admin-list-toolbar">
|
||||||
<div className="admin-list-field">
|
<div className="admin-list-field">
|
||||||
<Label htmlFor="risk-pool-number" className="sm:w-20 sm:shrink-0">
|
<Label htmlFor="risk-pool-number" className="sm:w-20 sm:shrink-0">
|
||||||
@@ -291,6 +298,16 @@ export function RiskPoolsConsole({
|
|||||||
</TableHeader>
|
</TableHeader>
|
||||||
<TableBody>
|
<TableBody>
|
||||||
{loading && !data ? <AdminTableLoadingRow colSpan={8} /> : null}
|
{loading && !data ? <AdminTableLoadingRow colSpan={8} /> : null}
|
||||||
|
{!loading && data?.items.length === 0 ? (
|
||||||
|
<AdminTableNoResourceRow
|
||||||
|
colSpan={8}
|
||||||
|
message={filter === "sold_out"
|
||||||
|
? t("emptySoldOutPools")
|
||||||
|
: filter === "high_risk"
|
||||||
|
? t("emptyHighRiskPools")
|
||||||
|
: t("emptyPools")}
|
||||||
|
/>
|
||||||
|
) : null}
|
||||||
{(data?.items ?? []).map((row: AdminRiskPoolRow) => {
|
{(data?.items ?? []).map((row: AdminRiskPoolRow) => {
|
||||||
const highRisk = (row.usage_ratio ?? 0) >= 0.8;
|
const highRisk = (row.usage_ratio ?? 0) >= 0.8;
|
||||||
const acting = actingKey === `${row.provider_code}:${row.normalized_number}`;
|
const acting = actingKey === `${row.provider_code}:${row.normalized_number}`;
|
||||||
|
|||||||
@@ -139,7 +139,11 @@ function TicketFilterField({
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function PlayerTicketsConsole(): React.ReactElement {
|
export function PlayerTicketsConsole({
|
||||||
|
fixedDrawNo,
|
||||||
|
}: {
|
||||||
|
fixedDrawNo?: string;
|
||||||
|
} = {}): React.ReactElement {
|
||||||
const { t } = useTranslation(["tickets", "common"]);
|
const { t } = useTranslation(["tickets", "common"]);
|
||||||
const tRef = useTranslationRef(["tickets", "common"]);
|
const tRef = useTranslationRef(["tickets", "common"]);
|
||||||
const playCodeLabel = useAdminPlayCodeLabel();
|
const playCodeLabel = useAdminPlayCodeLabel();
|
||||||
@@ -147,7 +151,7 @@ export function PlayerTicketsConsole(): React.ReactElement {
|
|||||||
const formatTs = useAdminDateTimeFormatter();
|
const formatTs = useAdminDateTimeFormatter();
|
||||||
const searchParams = useSearchParams();
|
const searchParams = useSearchParams();
|
||||||
const playerIdFromUrl = (searchParams.get("player_id") ?? "").trim();
|
const playerIdFromUrl = (searchParams.get("player_id") ?? "").trim();
|
||||||
const drawNoFromUrl = (searchParams.get("draw_no") ?? "").trim();
|
const drawNoFromUrl = fixedDrawNo ?? (searchParams.get("draw_no") ?? "").trim();
|
||||||
const numberKeywordFromUrl = (searchParams.get("number") ?? "").trim();
|
const numberKeywordFromUrl = (searchParams.get("number") ?? "").trim();
|
||||||
const providerCodeFromUrl = (searchParams.get("provider_code") ?? "").trim().toUpperCase();
|
const providerCodeFromUrl = (searchParams.get("provider_code") ?? "").trim().toUpperCase();
|
||||||
const initialFilters: TicketFilters = {
|
const initialFilters: TicketFilters = {
|
||||||
@@ -184,7 +188,7 @@ export function PlayerTicketsConsole(): React.ReactElement {
|
|||||||
page,
|
page,
|
||||||
per_page: perPage,
|
per_page: perPage,
|
||||||
...query,
|
...query,
|
||||||
draw_no: applied.drawNo.trim() || undefined,
|
draw_no: fixedDrawNo ?? (applied.drawNo.trim() || undefined),
|
||||||
provider_code: applied.providerCode.trim().toUpperCase() || undefined,
|
provider_code: applied.providerCode.trim().toUpperCase() || undefined,
|
||||||
status: applied.statuses.length > 0 ? applied.statuses : undefined,
|
status: applied.statuses.length > 0 ? applied.statuses : undefined,
|
||||||
number: applied.numberKeyword.trim() || undefined,
|
number: applied.numberKeyword.trim() || undefined,
|
||||||
@@ -198,7 +202,7 @@ export function PlayerTicketsConsole(): React.ReactElement {
|
|||||||
} finally {
|
} finally {
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
}
|
}
|
||||||
}, [applied, page, perPage, tRef]);
|
}, [applied, fixedDrawNo, page, perPage, tRef]);
|
||||||
|
|
||||||
useAsyncEffect(() => {
|
useAsyncEffect(() => {
|
||||||
void load();
|
void load();
|
||||||
@@ -221,7 +225,7 @@ export function PlayerTicketsConsole(): React.ReactElement {
|
|||||||
setApplied({
|
setApplied({
|
||||||
...draft,
|
...draft,
|
||||||
playerQuery: draft.playerQuery.trim(),
|
playerQuery: draft.playerQuery.trim(),
|
||||||
drawNo: draft.drawNo.trim(),
|
drawNo: fixedDrawNo ?? draft.drawNo.trim(),
|
||||||
providerCode: draft.providerCode.trim().toUpperCase(),
|
providerCode: draft.providerCode.trim().toUpperCase(),
|
||||||
numberKeyword: draft.numberKeyword.trim(),
|
numberKeyword: draft.numberKeyword.trim(),
|
||||||
});
|
});
|
||||||
@@ -229,8 +233,9 @@ export function PlayerTicketsConsole(): React.ReactElement {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const resetFilters = () => {
|
const resetFilters = () => {
|
||||||
setDraft(emptyTicketFilters);
|
const reset = { ...emptyTicketFilters, drawNo: fixedDrawNo ?? "" };
|
||||||
setApplied(emptyTicketFilters);
|
setDraft(reset);
|
||||||
|
setApplied(reset);
|
||||||
setErr(null);
|
setErr(null);
|
||||||
setPage(1);
|
setPage(1);
|
||||||
};
|
};
|
||||||
@@ -268,7 +273,7 @@ export function PlayerTicketsConsole(): React.ReactElement {
|
|||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</TicketFilterField>
|
</TicketFilterField>
|
||||||
<TicketFilterField id="pt-draw" label={t("drawNoOptional")}>
|
{!fixedDrawNo ? <TicketFilterField id="pt-draw" label={t("drawNoOptional")}>
|
||||||
<Input
|
<Input
|
||||||
id="pt-draw"
|
id="pt-draw"
|
||||||
className="h-8 w-full font-mono"
|
className="h-8 w-full font-mono"
|
||||||
@@ -281,7 +286,7 @@ export function PlayerTicketsConsole(): React.ReactElement {
|
|||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</TicketFilterField>
|
</TicketFilterField> : null}
|
||||||
<TicketFilterField id="pt-number" label={t("numberKeyword")}>
|
<TicketFilterField id="pt-number" label={t("numberKeyword")}>
|
||||||
<Input
|
<Input
|
||||||
id="pt-number"
|
id="pt-number"
|
||||||
@@ -328,7 +333,7 @@ export function PlayerTicketsConsole(): React.ReactElement {
|
|||||||
</SelectContent>
|
</SelectContent>
|
||||||
</Select>
|
</Select>
|
||||||
</TicketFilterField>
|
</TicketFilterField>
|
||||||
<TicketFilterField id="pt-date-range" label={t("placedDateRange")}>
|
{!fixedDrawNo ? <TicketFilterField id="pt-date-range" label={t("placedDateRange")}>
|
||||||
<AdminDateRangeField
|
<AdminDateRangeField
|
||||||
id="pt-date-range"
|
id="pt-date-range"
|
||||||
from={draft.startDate}
|
from={draft.startDate}
|
||||||
@@ -341,7 +346,7 @@ export function PlayerTicketsConsole(): React.ReactElement {
|
|||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
</TicketFilterField>
|
</TicketFilterField> : null}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="flex flex-col gap-3 sm:flex-row sm:flex-wrap sm:items-end sm:justify-between">
|
<div className="flex flex-col gap-3 sm:flex-row sm:flex-wrap sm:items-end sm:justify-between">
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ export function WalletCellMonoId({
|
|||||||
type="button"
|
type="button"
|
||||||
className="group inline-flex min-w-0 w-full max-w-full items-center gap-1 rounded-md border border-transparent px-0.5 py-0.5 text-left font-mono text-xs transition-colors hover:border-border hover:bg-muted/60"
|
className="group inline-flex min-w-0 w-full max-w-full items-center gap-1 rounded-md border border-transparent px-0.5 py-0.5 text-left font-mono text-xs transition-colors hover:border-border hover:bg-muted/60"
|
||||||
title={value}
|
title={value}
|
||||||
aria-label={copyHint ?? t("copyTxnNo")}
|
aria-label={`${copyHint ?? t("copyTxnNo")} ${value}`}
|
||||||
onClick={(e) => void copy(e)}
|
onClick={(e) => void copy(e)}
|
||||||
>
|
>
|
||||||
<span className="min-w-0 flex-1 truncate">{value}</span>
|
<span className="min-w-0 flex-1 truncate">{value}</span>
|
||||||
|
|||||||
@@ -408,7 +408,13 @@ export function TransferOrdersPanel(): React.ReactElement {
|
|||||||
</TableCell>
|
</TableCell>
|
||||||
<AdminAgentIdentityCells row={row} />
|
<AdminAgentIdentityCells row={row} />
|
||||||
<AdminPlayerIdentityCells row={row} />
|
<AdminPlayerIdentityCells row={row} />
|
||||||
<TableCell>{row.direction}</TableCell>
|
<TableCell>
|
||||||
|
{row.direction === "in"
|
||||||
|
? t("in")
|
||||||
|
: row.direction === "out"
|
||||||
|
? t("out")
|
||||||
|
: row.direction}
|
||||||
|
</TableCell>
|
||||||
<TableCell className={adminMoneyCellClassName("text-right")}>
|
<TableCell className={adminMoneyCellClassName("text-right")}>
|
||||||
<AdminTableMoney>
|
<AdminTableMoney>
|
||||||
{formatAdminMinorUnits(row.amount, row.currency_code)}
|
{formatAdminMinorUnits(row.amount, row.currency_code)}
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ export const useAdminSessionStore = create<AdminSessionState>((set, get) => ({
|
|||||||
set({ adminProfile: result.admin });
|
set({ adminProfile: result.admin });
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
if (isAdminAuthRejected(err)) {
|
if (isAdminAuthRejected(err)) {
|
||||||
handleAdminAuthRejected();
|
handleAdminAuthRejected(err);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,9 @@
|
|||||||
export type AdminDrawFinanceSettlementBatchRow = {
|
export type AdminDrawFinanceSettlementBatchRow = {
|
||||||
id: number;
|
id: number;
|
||||||
|
provider_code: string | null;
|
||||||
|
provider_name: string | null;
|
||||||
|
result_version: number | null;
|
||||||
|
settle_version: number;
|
||||||
status: string;
|
status: string;
|
||||||
total_ticket_count: number;
|
total_ticket_count: number;
|
||||||
total_win_count: number;
|
total_win_count: number;
|
||||||
|
|||||||
@@ -117,6 +117,8 @@ export type AdminSettlementRunResponse = {
|
|||||||
draw_no: string;
|
draw_no: string;
|
||||||
status: string;
|
status: string;
|
||||||
settle_version: number;
|
settle_version: number;
|
||||||
|
cooldown_skipped: boolean;
|
||||||
|
cooling_end_time: string | null;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type AdminSettlementWorkflowResponse = {
|
export type AdminSettlementWorkflowResponse = {
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ export type AdminPermissionCatalogData = {
|
|||||||
}[];
|
}[];
|
||||||
navigation?: AdminNavItem[];
|
navigation?: AdminNavItem[];
|
||||||
roles: AdminRoleRow[];
|
roles: AdminRoleRow[];
|
||||||
|
assignable_roles: AdminRoleRow[];
|
||||||
};
|
};
|
||||||
|
|
||||||
export type AdminRoleRow = {
|
export type AdminRoleRow = {
|
||||||
@@ -56,6 +57,8 @@ export type AdminRoleRow = {
|
|||||||
is_read_only_template?: boolean;
|
is_read_only_template?: boolean;
|
||||||
permission_slugs: string[];
|
permission_slugs: string[];
|
||||||
user_count: number;
|
user_count: number;
|
||||||
|
platform_user_count: number;
|
||||||
|
agent_user_count: number;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type AdminRoleListData = {
|
export type AdminRoleListData = {
|
||||||
|
|||||||
Reference in New Issue
Block a user