From b851cf5c098abb5a165ce6857b3ca798a2d0d5b4 Mon Sep 17 00:00:00 2001 From: NCJOAQ <2627723488@qq.com> Date: Tue, 9 Dec 2025 14:52:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A6=E4=BE=A7=E6=8E=92=E5=90=8D+=E4=B8=AD?= =?UTF-8?q?=E5=BF=83=E5=A4=A7=E5=9C=B0=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitattributes | 1 + .gitignore | 36 ++ .prettierrc.json | 6 + .vscode/extensions.json | 6 + README.md | 42 +++ bun.lock | 491 +++++++++++++++++++++++++ env.d.ts | 1 + index.html | 13 + package.json | 37 ++ public/favicon.ico | Bin 0 -> 4286 bytes src/App.vue | 7 + src/assets/reset.less | 78 ++++ src/main.ts | 49 +++ src/page/bigScreen.vue | 177 +++++++++ src/page/components/chartContainer.vue | 28 ++ src/page/ts/initChinaMap.ts | 105 ++++++ src/page/ts/initTop5.ts | 93 +++++ src/router/index.ts | 19 + src/stores/cityGDP.ts | 7 + src/stores/counter.ts | 12 + src/utils/getData.ts | 8 + src/utils/request.ts | 68 ++++ src/utils/ws.ts | 150 ++++++++ tsconfig.app.json | 12 + tsconfig.json | 11 + tsconfig.node.json | 19 + vite.config.ts | 18 + 打开.exe | Bin 0 -> 61424 bytes 28 files changed, 1494 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 .prettierrc.json create mode 100644 .vscode/extensions.json create mode 100644 README.md create mode 100644 bun.lock create mode 100644 env.d.ts create mode 100644 index.html create mode 100644 package.json create mode 100644 public/favicon.ico create mode 100644 src/App.vue create mode 100644 src/assets/reset.less create mode 100644 src/main.ts create mode 100644 src/page/bigScreen.vue create mode 100644 src/page/components/chartContainer.vue create mode 100644 src/page/ts/initChinaMap.ts create mode 100644 src/page/ts/initTop5.ts create mode 100644 src/router/index.ts create mode 100644 src/stores/cityGDP.ts create mode 100644 src/stores/counter.ts create mode 100644 src/utils/getData.ts create mode 100644 src/utils/request.ts create mode 100644 src/utils/ws.ts create mode 100644 tsconfig.app.json create mode 100644 tsconfig.json create mode 100644 tsconfig.node.json create mode 100644 vite.config.ts create mode 100644 打开.exe diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..6313b56 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +* text=auto eol=lf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a3f7a51 --- /dev/null +++ b/.gitignore @@ -0,0 +1,36 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +.DS_Store +dist +dist-ssr +coverage +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +*.tsbuildinfo + +.eslintcache + +# Cypress +/cypress/videos/ +/cypress/screenshots/ + +# Vitest +__screenshots__/ diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..29a2402 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,6 @@ +{ + "$schema": "https://json.schemastore.org/prettierrc", + "semi": false, + "singleQuote": true, + "printWidth": 100 +} diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..aecab6c --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,6 @@ +{ + "recommendations": [ + "Vue.volar", + "esbenp.prettier-vscode" + ] +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..8fd4ee3 --- /dev/null +++ b/README.md @@ -0,0 +1,42 @@ +# vue-daping + +This template should help get you started developing with Vue 3 in Vite. + +## Recommended IDE Setup + +[VS Code](https://code.visualstudio.com/) + [Vue (Official)](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur). + +## Recommended Browser Setup + +- Chromium-based browsers (Chrome, Edge, Brave, etc.): + - [Vue.js devtools](https://chromewebstore.google.com/detail/vuejs-devtools/nhdogjmejiglipccpnnnanhbledajbpd) + - [Turn on Custom Object Formatter in Chrome DevTools](http://bit.ly/object-formatters) +- Firefox: + - [Vue.js devtools](https://addons.mozilla.org/en-US/firefox/addon/vue-js-devtools/) + - [Turn on Custom Object Formatter in Firefox DevTools](https://fxdx.dev/firefox-devtools-custom-object-formatters/) + +## Type Support for `.vue` Imports in TS + +TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) to make the TypeScript language service aware of `.vue` types. + +## Customize configuration + +See [Vite Configuration Reference](https://vite.dev/config/). + +## Project Setup + +```sh +bun install +``` + +### Compile and Hot-Reload for Development + +```sh +bun dev +``` + +### Type-Check, Compile and Minify for Production + +```sh +bun run build +``` diff --git a/bun.lock b/bun.lock new file mode 100644 index 0000000..39681a5 --- /dev/null +++ b/bun.lock @@ -0,0 +1,491 @@ +{ + "lockfileVersion": 1, + "configVersion": 1, + "workspaces": { + "": { + "name": "vue-daping", + "dependencies": { + "echarts": "^6.0.0", + "pinia": "^3.0.4", + "vue": "^3.5.25", + "vue-router": "^4.6.3", + }, + "devDependencies": { + "@tsconfig/node24": "^24.0.3", + "@types/node": "^24.10.1", + "@vitejs/plugin-vue": "^6.0.2", + "@vue/tsconfig": "^0.8.1", + "less": "^4.4.2", + "npm-run-all2": "^8.0.4", + "prettier": "3.6.2", + "typescript": "~5.9.0", + "vite": "^7.2.4", + "vite-plugin-vue-devtools": "^8.0.5", + "vue-tsc": "^3.1.5", + }, + }, + }, + "packages": { + "@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], + + "@babel/compat-data": ["@babel/compat-data@7.28.5", "", {}, "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA=="], + + "@babel/core": ["@babel/core@7.28.5", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-module-transforms": "^7.28.3", "@babel/helpers": "^7.28.4", "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", "@babel/traverse": "^7.28.5", "@babel/types": "^7.28.5", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw=="], + + "@babel/generator": ["@babel/generator@7.28.5", "", { "dependencies": { "@babel/parser": "^7.28.5", "@babel/types": "^7.28.5", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ=="], + + "@babel/helper-annotate-as-pure": ["@babel/helper-annotate-as-pure@7.27.3", "", { "dependencies": { "@babel/types": "^7.27.3" } }, "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg=="], + + "@babel/helper-compilation-targets": ["@babel/helper-compilation-targets@7.27.2", "", { "dependencies": { "@babel/compat-data": "^7.27.2", "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ=="], + + "@babel/helper-create-class-features-plugin": ["@babel/helper-create-class-features-plugin@7.28.5", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", "@babel/helper-member-expression-to-functions": "^7.28.5", "@babel/helper-optimise-call-expression": "^7.27.1", "@babel/helper-replace-supers": "^7.27.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", "@babel/traverse": "^7.28.5", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ=="], + + "@babel/helper-globals": ["@babel/helper-globals@7.28.0", "", {}, "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw=="], + + "@babel/helper-member-expression-to-functions": ["@babel/helper-member-expression-to-functions@7.28.5", "", { "dependencies": { "@babel/traverse": "^7.28.5", "@babel/types": "^7.28.5" } }, "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg=="], + + "@babel/helper-module-imports": ["@babel/helper-module-imports@7.27.1", "", { "dependencies": { "@babel/traverse": "^7.27.1", "@babel/types": "^7.27.1" } }, "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w=="], + + "@babel/helper-module-transforms": ["@babel/helper-module-transforms@7.28.3", "", { "dependencies": { "@babel/helper-module-imports": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1", "@babel/traverse": "^7.28.3" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw=="], + + "@babel/helper-optimise-call-expression": ["@babel/helper-optimise-call-expression@7.27.1", "", { "dependencies": { "@babel/types": "^7.27.1" } }, "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw=="], + + "@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], + + "@babel/helper-replace-supers": ["@babel/helper-replace-supers@7.27.1", "", { "dependencies": { "@babel/helper-member-expression-to-functions": "^7.27.1", "@babel/helper-optimise-call-expression": "^7.27.1", "@babel/traverse": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA=="], + + "@babel/helper-skip-transparent-expression-wrappers": ["@babel/helper-skip-transparent-expression-wrappers@7.27.1", "", { "dependencies": { "@babel/traverse": "^7.27.1", "@babel/types": "^7.27.1" } }, "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg=="], + + "@babel/helper-string-parser": ["@babel/helper-string-parser@7.27.1", "", {}, "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA=="], + + "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.28.5", "", {}, "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q=="], + + "@babel/helper-validator-option": ["@babel/helper-validator-option@7.27.1", "", {}, "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg=="], + + "@babel/helpers": ["@babel/helpers@7.28.4", "", { "dependencies": { "@babel/template": "^7.27.2", "@babel/types": "^7.28.4" } }, "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w=="], + + "@babel/parser": ["@babel/parser@7.28.5", "", { "dependencies": { "@babel/types": "^7.28.5" }, "bin": "./bin/babel-parser.js" }, "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ=="], + + "@babel/plugin-proposal-decorators": ["@babel/plugin-proposal-decorators@7.28.0", "", { "dependencies": { "@babel/helper-create-class-features-plugin": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1", "@babel/plugin-syntax-decorators": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-zOiZqvANjWDUaUS9xMxbMcK/Zccztbe/6ikvUXaG9nsPH3w6qh5UaPGAnirI/WhIbZ8m3OHU0ReyPrknG+ZKeg=="], + + "@babel/plugin-syntax-decorators": ["@babel/plugin-syntax-decorators@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-YMq8Z87Lhl8EGkmb0MwYkt36QnxC+fzCgrl66ereamPlYToRpIk5nUjKUY3QKLWq8mwUB1BgbeXcTJhZOCDg5A=="], + + "@babel/plugin-syntax-import-attributes": ["@babel/plugin-syntax-import-attributes@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww=="], + + "@babel/plugin-syntax-import-meta": ["@babel/plugin-syntax-import-meta@7.10.4", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g=="], + + "@babel/plugin-syntax-jsx": ["@babel/plugin-syntax-jsx@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w=="], + + "@babel/plugin-syntax-typescript": ["@babel/plugin-syntax-typescript@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ=="], + + "@babel/plugin-transform-typescript": ["@babel/plugin-transform-typescript@7.28.5", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", "@babel/helper-create-class-features-plugin": "^7.28.5", "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", "@babel/plugin-syntax-typescript": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-x2Qa+v/CuEoX7Dr31iAfr0IhInrVOWZU/2vJMJ00FOR/2nM0BcBEclpaf9sWCDc+v5e9dMrhSH8/atq/kX7+bA=="], + + "@babel/template": ["@babel/template@7.27.2", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/parser": "^7.27.2", "@babel/types": "^7.27.1" } }, "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw=="], + + "@babel/traverse": ["@babel/traverse@7.28.5", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", "@babel/types": "^7.28.5", "debug": "^4.3.1" } }, "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ=="], + + "@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], + + "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.12", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA=="], + + "@esbuild/android-arm": ["@esbuild/android-arm@0.25.12", "", { "os": "android", "cpu": "arm" }, "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg=="], + + "@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.12", "", { "os": "android", "cpu": "arm64" }, "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg=="], + + "@esbuild/android-x64": ["@esbuild/android-x64@0.25.12", "", { "os": "android", "cpu": "x64" }, "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg=="], + + "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.12", "", { "os": "darwin", "cpu": "arm64" }, "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg=="], + + "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.12", "", { "os": "darwin", "cpu": "x64" }, "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA=="], + + "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.12", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg=="], + + "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.12", "", { "os": "freebsd", "cpu": "x64" }, "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ=="], + + "@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.12", "", { "os": "linux", "cpu": "arm" }, "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw=="], + + "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ=="], + + "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.12", "", { "os": "linux", "cpu": "ia32" }, "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA=="], + + "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng=="], + + "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw=="], + + "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.12", "", { "os": "linux", "cpu": "ppc64" }, "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA=="], + + "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w=="], + + "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.12", "", { "os": "linux", "cpu": "s390x" }, "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg=="], + + "@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.12", "", { "os": "linux", "cpu": "x64" }, "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw=="], + + "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.12", "", { "os": "none", "cpu": "arm64" }, "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg=="], + + "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.12", "", { "os": "none", "cpu": "x64" }, "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ=="], + + "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.12", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A=="], + + "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.12", "", { "os": "openbsd", "cpu": "x64" }, "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw=="], + + "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.25.12", "", { "os": "none", "cpu": "arm64" }, "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg=="], + + "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.12", "", { "os": "sunos", "cpu": "x64" }, "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w=="], + + "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.12", "", { "os": "win32", "cpu": "arm64" }, "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg=="], + + "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.12", "", { "os": "win32", "cpu": "ia32" }, "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ=="], + + "@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.12", "", { "os": "win32", "cpu": "x64" }, "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA=="], + + "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.13", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA=="], + + "@jridgewell/remapping": ["@jridgewell/remapping@2.3.5", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ=="], + + "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="], + + "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="], + + "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="], + + "@polka/url": ["@polka/url@1.0.0-next.29", "", {}, "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww=="], + + "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-beta.50", "", {}, "sha512-5e76wQiQVeL1ICOZVUg4LSOVYg9jyhGCin+icYozhsUzM+fHE7kddi1bdiE0jwVqTfkjba3jUFbEkoC9WkdvyA=="], + + "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.53.3", "", { "os": "android", "cpu": "arm" }, "sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w=="], + + "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.53.3", "", { "os": "android", "cpu": "arm64" }, "sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w=="], + + "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.53.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA=="], + + "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.53.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ=="], + + "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.53.3", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w=="], + + "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.53.3", "", { "os": "freebsd", "cpu": "x64" }, "sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q=="], + + "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.53.3", "", { "os": "linux", "cpu": "arm" }, "sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw=="], + + "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.53.3", "", { "os": "linux", "cpu": "arm" }, "sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg=="], + + "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.53.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w=="], + + "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.53.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A=="], + + "@rollup/rollup-linux-loong64-gnu": ["@rollup/rollup-linux-loong64-gnu@4.53.3", "", { "os": "linux", "cpu": "none" }, "sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g=="], + + "@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.53.3", "", { "os": "linux", "cpu": "ppc64" }, "sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw=="], + + "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.53.3", "", { "os": "linux", "cpu": "none" }, "sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g=="], + + "@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.53.3", "", { "os": "linux", "cpu": "none" }, "sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A=="], + + "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.53.3", "", { "os": "linux", "cpu": "s390x" }, "sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg=="], + + "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.53.3", "", { "os": "linux", "cpu": "x64" }, "sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w=="], + + "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.53.3", "", { "os": "linux", "cpu": "x64" }, "sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q=="], + + "@rollup/rollup-openharmony-arm64": ["@rollup/rollup-openharmony-arm64@4.53.3", "", { "os": "none", "cpu": "arm64" }, "sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw=="], + + "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.53.3", "", { "os": "win32", "cpu": "arm64" }, "sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw=="], + + "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.53.3", "", { "os": "win32", "cpu": "ia32" }, "sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA=="], + + "@rollup/rollup-win32-x64-gnu": ["@rollup/rollup-win32-x64-gnu@4.53.3", "", { "os": "win32", "cpu": "x64" }, "sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg=="], + + "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.53.3", "", { "os": "win32", "cpu": "x64" }, "sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ=="], + + "@tsconfig/node24": ["@tsconfig/node24@24.0.3", "", {}, "sha512-vcERKtKQKHgzt/vfS3Gjasd8SUI2a0WZXpgJURdJsMySpS5+ctgbPfuLj2z/W+w4lAfTWxoN4upKfu2WzIRYnw=="], + + "@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="], + + "@types/node": ["@types/node@24.10.1", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ=="], + + "@vitejs/plugin-vue": ["@vitejs/plugin-vue@6.0.2", "", { "dependencies": { "@rolldown/pluginutils": "1.0.0-beta.50" }, "peerDependencies": { "vite": "^5.0.0 || ^6.0.0 || ^7.0.0", "vue": "^3.2.25" } }, "sha512-iHmwV3QcVGGvSC1BG5bZ4z6iwa1SOpAPWmnjOErd4Ske+lZua5K9TtAVdx0gMBClJ28DViCbSmZitjWZsWO3LA=="], + + "@volar/language-core": ["@volar/language-core@2.4.26", "", { "dependencies": { "@volar/source-map": "2.4.26" } }, "sha512-hH0SMitMxnB43OZpyF1IFPS9bgb2I3bpCh76m2WEK7BE0A0EzpYsRp0CCH2xNKshr7kacU5TQBLYn4zj7CG60A=="], + + "@volar/source-map": ["@volar/source-map@2.4.26", "", {}, "sha512-JJw0Tt/kSFsIRmgTQF4JSt81AUSI1aEye5Zl65EeZ8H35JHnTvFGmpDOBn5iOxd48fyGE+ZvZBp5FcgAy/1Qhw=="], + + "@volar/typescript": ["@volar/typescript@2.4.26", "", { "dependencies": { "@volar/language-core": "2.4.26", "path-browserify": "^1.0.1", "vscode-uri": "^3.0.8" } }, "sha512-N87ecLD48Sp6zV9zID/5yuS1+5foj0DfuYGdQ6KHj/IbKvyKv1zNX6VCmnKYwtmHadEO6mFc2EKISiu3RDPAvA=="], + + "@vue/babel-helper-vue-transform-on": ["@vue/babel-helper-vue-transform-on@1.5.0", "", {}, "sha512-0dAYkerNhhHutHZ34JtTl2czVQHUNWv6xEbkdF5W+Yrv5pCWsqjeORdOgbtW2I9gWlt+wBmVn+ttqN9ZxR5tzA=="], + + "@vue/babel-plugin-jsx": ["@vue/babel-plugin-jsx@1.5.0", "", { "dependencies": { "@babel/helper-module-imports": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1", "@babel/plugin-syntax-jsx": "^7.27.1", "@babel/template": "^7.27.2", "@babel/traverse": "^7.28.0", "@babel/types": "^7.28.2", "@vue/babel-helper-vue-transform-on": "1.5.0", "@vue/babel-plugin-resolve-type": "1.5.0", "@vue/shared": "^3.5.18" }, "peerDependencies": { "@babel/core": "^7.0.0-0" }, "optionalPeers": ["@babel/core"] }, "sha512-mneBhw1oOqCd2247O0Yw/mRwC9jIGACAJUlawkmMBiNmL4dGA2eMzuNZVNqOUfYTa6vqmND4CtOPzmEEEqLKFw=="], + + "@vue/babel-plugin-resolve-type": ["@vue/babel-plugin-resolve-type@1.5.0", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/helper-module-imports": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1", "@babel/parser": "^7.28.0", "@vue/compiler-sfc": "^3.5.18" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-Wm/60o+53JwJODm4Knz47dxJnLDJ9FnKnGZJbUUf8nQRAtt6P+undLUAVU3Ha33LxOJe6IPoifRQ6F/0RrU31w=="], + + "@vue/compiler-core": ["@vue/compiler-core@3.5.25", "", { "dependencies": { "@babel/parser": "^7.28.5", "@vue/shared": "3.5.25", "entities": "^4.5.0", "estree-walker": "^2.0.2", "source-map-js": "^1.2.1" } }, "sha512-vay5/oQJdsNHmliWoZfHPoVZZRmnSWhug0BYT34njkYTPqClh3DNWLkZNJBVSjsNMrg0CCrBfoKkjZQPM/QVUw=="], + + "@vue/compiler-dom": ["@vue/compiler-dom@3.5.25", "", { "dependencies": { "@vue/compiler-core": "3.5.25", "@vue/shared": "3.5.25" } }, "sha512-4We0OAcMZsKgYoGlMjzYvaoErltdFI2/25wqanuTu+S4gismOTRTBPi4IASOjxWdzIwrYSjnqONfKvuqkXzE2Q=="], + + "@vue/compiler-sfc": ["@vue/compiler-sfc@3.5.25", "", { "dependencies": { "@babel/parser": "^7.28.5", "@vue/compiler-core": "3.5.25", "@vue/compiler-dom": "3.5.25", "@vue/compiler-ssr": "3.5.25", "@vue/shared": "3.5.25", "estree-walker": "^2.0.2", "magic-string": "^0.30.21", "postcss": "^8.5.6", "source-map-js": "^1.2.1" } }, "sha512-PUgKp2rn8fFsI++lF2sO7gwO2d9Yj57Utr5yEsDf3GNaQcowCLKL7sf+LvVFvtJDXUp/03+dC6f2+LCv5aK1ag=="], + + "@vue/compiler-ssr": ["@vue/compiler-ssr@3.5.25", "", { "dependencies": { "@vue/compiler-dom": "3.5.25", "@vue/shared": "3.5.25" } }, "sha512-ritPSKLBcParnsKYi+GNtbdbrIE1mtuFEJ4U1sWeuOMlIziK5GtOL85t5RhsNy4uWIXPgk+OUdpnXiTdzn8o3A=="], + + "@vue/devtools-api": ["@vue/devtools-api@7.7.9", "", { "dependencies": { "@vue/devtools-kit": "^7.7.9" } }, "sha512-kIE8wvwlcZ6TJTbNeU2HQNtaxLx3a84aotTITUuL/4bzfPxzajGBOoqjMhwZJ8L9qFYDU/lAYMEEm11dnZOD6g=="], + + "@vue/devtools-core": ["@vue/devtools-core@8.0.5", "", { "dependencies": { "@vue/devtools-kit": "^8.0.5", "@vue/devtools-shared": "^8.0.5", "mitt": "^3.0.1", "nanoid": "^5.1.5", "pathe": "^2.0.3", "vite-hot-client": "^2.1.0" }, "peerDependencies": { "vue": "^3.0.0" } }, "sha512-dpCw8nl0GDBuiL9SaY0mtDxoGIEmU38w+TQiYEPOLhW03VDC0lfNMYXS/qhl4I0YlysGp04NLY4UNn6xgD0VIQ=="], + + "@vue/devtools-kit": ["@vue/devtools-kit@8.0.5", "", { "dependencies": { "@vue/devtools-shared": "^8.0.5", "birpc": "^2.6.1", "hookable": "^5.5.3", "mitt": "^3.0.1", "perfect-debounce": "^2.0.0", "speakingurl": "^14.0.1", "superjson": "^2.2.2" } }, "sha512-q2VV6x1U3KJMTQPUlRMyWEKVbcHuxhqJdSr6Jtjz5uAThAIrfJ6WVZdGZm5cuO63ZnSUz0RCsVwiUUb0mDV0Yg=="], + + "@vue/devtools-shared": ["@vue/devtools-shared@8.0.5", "", { "dependencies": { "rfdc": "^1.4.1" } }, "sha512-bRLn6/spxpmgLk+iwOrR29KrYnJjG9DGpHGkDFG82UM21ZpJ39ztUT9OXX3g+usW7/b2z+h46I9ZiYyB07XMXg=="], + + "@vue/language-core": ["@vue/language-core@3.1.7", "", { "dependencies": { "@volar/language-core": "2.4.26", "@vue/compiler-dom": "^3.5.0", "@vue/shared": "^3.5.0", "alien-signals": "^3.0.0", "muggle-string": "^0.4.1", "path-browserify": "^1.0.1", "picomatch": "^4.0.2" }, "peerDependencies": { "typescript": "*" }, "optionalPeers": ["typescript"] }, "sha512-xbJjFptmuTQD68a3/P70HDb+js61BxYvB3+/h5BflqRNV5dvwH1TZsSsTvMKwFx+QNQf0ndOvD3iih3fHXZYzQ=="], + + "@vue/reactivity": ["@vue/reactivity@3.5.25", "", { "dependencies": { "@vue/shared": "3.5.25" } }, "sha512-5xfAypCQepv4Jog1U4zn8cZIcbKKFka3AgWHEFQeK65OW+Ys4XybP6z2kKgws4YB43KGpqp5D/K3go2UPPunLA=="], + + "@vue/runtime-core": ["@vue/runtime-core@3.5.25", "", { "dependencies": { "@vue/reactivity": "3.5.25", "@vue/shared": "3.5.25" } }, "sha512-Z751v203YWwYzy460bzsYQISDfPjHTl+6Zzwo/a3CsAf+0ccEjQ8c+0CdX1WsumRTHeywvyUFtW6KvNukT/smA=="], + + "@vue/runtime-dom": ["@vue/runtime-dom@3.5.25", "", { "dependencies": { "@vue/reactivity": "3.5.25", "@vue/runtime-core": "3.5.25", "@vue/shared": "3.5.25", "csstype": "^3.1.3" } }, "sha512-a4WrkYFbb19i9pjkz38zJBg8wa/rboNERq3+hRRb0dHiJh13c+6kAbgqCPfMaJ2gg4weWD3APZswASOfmKwamA=="], + + "@vue/server-renderer": ["@vue/server-renderer@3.5.25", "", { "dependencies": { "@vue/compiler-ssr": "3.5.25", "@vue/shared": "3.5.25" }, "peerDependencies": { "vue": "3.5.25" } }, "sha512-UJaXR54vMG61i8XNIzTSf2Q7MOqZHpp8+x3XLGtE3+fL+nQd+k7O5+X3D/uWrnQXOdMw5VPih+Uremcw+u1woQ=="], + + "@vue/shared": ["@vue/shared@3.5.25", "", {}, "sha512-AbOPdQQnAnzs58H2FrrDxYj/TJfmeS2jdfEEhgiKINy+bnOANmVizIEgq1r+C5zsbs6l1CCQxtcj71rwNQ4jWg=="], + + "@vue/tsconfig": ["@vue/tsconfig@0.8.1", "", { "peerDependencies": { "typescript": "5.x", "vue": "^3.4.0" }, "optionalPeers": ["typescript", "vue"] }, "sha512-aK7feIWPXFSUhsCP9PFqPyFOcz4ENkb8hZ2pneL6m2UjCkccvaOhC/5KCKluuBufvp2KzkbdA2W2pk20vLzu3g=="], + + "alien-signals": ["alien-signals@3.1.1", "", {}, "sha512-ogkIWbVrLwKtHY6oOAXaYkAxP+cTH7V5FZ5+Tm4NZFd8VDZ6uNMDrfzqctTZ42eTMCSR3ne3otpcxmqSnFfPYA=="], + + "ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], + + "ansis": ["ansis@4.2.0", "", {}, "sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig=="], + + "baseline-browser-mapping": ["baseline-browser-mapping@2.9.4", "", { "bin": { "baseline-browser-mapping": "dist/cli.js" } }, "sha512-ZCQ9GEWl73BVm8bu5Fts8nt7MHdbt5vY9bP6WGnUh+r3l8M7CgfyTlwsgCbMC66BNxPr6Xoce3j66Ms5YUQTNA=="], + + "birpc": ["birpc@2.9.0", "", {}, "sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw=="], + + "browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], + + "bundle-name": ["bundle-name@4.1.0", "", { "dependencies": { "run-applescript": "^7.0.0" } }, "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q=="], + + "caniuse-lite": ["caniuse-lite@1.0.30001759", "", {}, "sha512-Pzfx9fOKoKvevQf8oCXoyNRQ5QyxJj+3O0Rqx2V5oxT61KGx8+n6hV/IUyJeifUci2clnmmKVpvtiqRzgiWjSw=="], + + "convert-source-map": ["convert-source-map@2.0.0", "", {}, "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="], + + "copy-anything": ["copy-anything@2.0.6", "", { "dependencies": { "is-what": "^3.14.1" } }, "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw=="], + + "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], + + "csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="], + + "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], + + "default-browser": ["default-browser@5.4.0", "", { "dependencies": { "bundle-name": "^4.1.0", "default-browser-id": "^5.0.0" } }, "sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg=="], + + "default-browser-id": ["default-browser-id@5.0.1", "", {}, "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q=="], + + "define-lazy-prop": ["define-lazy-prop@3.0.0", "", {}, "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg=="], + + "echarts": ["echarts@6.0.0", "", { "dependencies": { "tslib": "2.3.0", "zrender": "6.0.0" } }, "sha512-Tte/grDQRiETQP4xz3iZWSvoHrkCQtwqd6hs+mifXcjrCuo2iKWbajFObuLJVBlDIJlOzgQPd1hsaKt/3+OMkQ=="], + + "electron-to-chromium": ["electron-to-chromium@1.5.266", "", {}, "sha512-kgWEglXvkEfMH7rxP5OSZZwnaDWT7J9EoZCujhnpLbfi0bbNtRkgdX2E3gt0Uer11c61qCYktB3hwkAS325sJg=="], + + "entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], + + "errno": ["errno@0.1.8", "", { "dependencies": { "prr": "~1.0.1" }, "bin": { "errno": "cli.js" } }, "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A=="], + + "error-stack-parser-es": ["error-stack-parser-es@1.0.5", "", {}, "sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA=="], + + "esbuild": ["esbuild@0.25.12", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.12", "@esbuild/android-arm": "0.25.12", "@esbuild/android-arm64": "0.25.12", "@esbuild/android-x64": "0.25.12", "@esbuild/darwin-arm64": "0.25.12", "@esbuild/darwin-x64": "0.25.12", "@esbuild/freebsd-arm64": "0.25.12", "@esbuild/freebsd-x64": "0.25.12", "@esbuild/linux-arm": "0.25.12", "@esbuild/linux-arm64": "0.25.12", "@esbuild/linux-ia32": "0.25.12", "@esbuild/linux-loong64": "0.25.12", "@esbuild/linux-mips64el": "0.25.12", "@esbuild/linux-ppc64": "0.25.12", "@esbuild/linux-riscv64": "0.25.12", "@esbuild/linux-s390x": "0.25.12", "@esbuild/linux-x64": "0.25.12", "@esbuild/netbsd-arm64": "0.25.12", "@esbuild/netbsd-x64": "0.25.12", "@esbuild/openbsd-arm64": "0.25.12", "@esbuild/openbsd-x64": "0.25.12", "@esbuild/openharmony-arm64": "0.25.12", "@esbuild/sunos-x64": "0.25.12", "@esbuild/win32-arm64": "0.25.12", "@esbuild/win32-ia32": "0.25.12", "@esbuild/win32-x64": "0.25.12" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg=="], + + "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], + + "estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], + + "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], + + "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], + + "gensync": ["gensync@1.0.0-beta.2", "", {}, "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="], + + "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], + + "hookable": ["hookable@5.5.3", "", {}, "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ=="], + + "iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="], + + "image-size": ["image-size@0.5.5", "", { "bin": { "image-size": "bin/image-size.js" } }, "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ=="], + + "is-docker": ["is-docker@3.0.0", "", { "bin": { "is-docker": "cli.js" } }, "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ=="], + + "is-inside-container": ["is-inside-container@1.0.0", "", { "dependencies": { "is-docker": "^3.0.0" }, "bin": { "is-inside-container": "cli.js" } }, "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA=="], + + "is-what": ["is-what@3.14.1", "", {}, "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA=="], + + "is-wsl": ["is-wsl@3.1.0", "", { "dependencies": { "is-inside-container": "^1.0.0" } }, "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw=="], + + "isexe": ["isexe@3.1.1", "", {}, "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ=="], + + "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], + + "jsesc": ["jsesc@3.1.0", "", { "bin": { "jsesc": "bin/jsesc" } }, "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA=="], + + "json-parse-even-better-errors": ["json-parse-even-better-errors@4.0.0", "", {}, "sha512-lR4MXjGNgkJc7tkQ97kb2nuEMnNCyU//XYVH0MKTGcXEiSudQ5MKGKen3C5QubYy0vmq+JGitUg92uuywGEwIA=="], + + "json5": ["json5@2.2.3", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="], + + "kolorist": ["kolorist@1.8.0", "", {}, "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ=="], + + "less": ["less@4.4.2", "", { "dependencies": { "copy-anything": "^2.0.1", "parse-node-version": "^1.0.1", "tslib": "^2.3.0" }, "optionalDependencies": { "errno": "^0.1.1", "graceful-fs": "^4.1.2", "image-size": "~0.5.0", "make-dir": "^2.1.0", "mime": "^1.4.1", "needle": "^3.1.0", "source-map": "~0.6.0" }, "bin": { "lessc": "bin/lessc" } }, "sha512-j1n1IuTX1VQjIy3tT7cyGbX7nvQOsFLoIqobZv4ttI5axP923gA44zUj6miiA6R5Aoms4sEGVIIcucXUbRI14g=="], + + "lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], + + "magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], + + "make-dir": ["make-dir@2.1.0", "", { "dependencies": { "pify": "^4.0.1", "semver": "^5.6.0" } }, "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA=="], + + "memorystream": ["memorystream@0.3.1", "", {}, "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw=="], + + "mime": ["mime@1.6.0", "", { "bin": { "mime": "cli.js" } }, "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="], + + "mitt": ["mitt@3.0.1", "", {}, "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw=="], + + "mrmime": ["mrmime@2.0.1", "", {}, "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ=="], + + "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], + + "muggle-string": ["muggle-string@0.4.1", "", {}, "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ=="], + + "nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], + + "needle": ["needle@3.3.1", "", { "dependencies": { "iconv-lite": "^0.6.3", "sax": "^1.2.4" }, "bin": { "needle": "bin/needle" } }, "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q=="], + + "node-releases": ["node-releases@2.0.27", "", {}, "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA=="], + + "npm-normalize-package-bin": ["npm-normalize-package-bin@4.0.0", "", {}, "sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w=="], + + "npm-run-all2": ["npm-run-all2@8.0.4", "", { "dependencies": { "ansi-styles": "^6.2.1", "cross-spawn": "^7.0.6", "memorystream": "^0.3.1", "picomatch": "^4.0.2", "pidtree": "^0.6.0", "read-package-json-fast": "^4.0.0", "shell-quote": "^1.7.3", "which": "^5.0.0" }, "bin": { "run-p": "bin/run-p/index.js", "run-s": "bin/run-s/index.js", "npm-run-all": "bin/npm-run-all/index.js", "npm-run-all2": "bin/npm-run-all/index.js" } }, "sha512-wdbB5My48XKp2ZfJUlhnLVihzeuA1hgBnqB2J9ahV77wLS+/YAJAlN8I+X3DIFIPZ3m5L7nplmlbhNiFDmXRDA=="], + + "ohash": ["ohash@2.0.11", "", {}, "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ=="], + + "open": ["open@10.2.0", "", { "dependencies": { "default-browser": "^5.2.1", "define-lazy-prop": "^3.0.0", "is-inside-container": "^1.0.0", "wsl-utils": "^0.1.0" } }, "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA=="], + + "parse-node-version": ["parse-node-version@1.0.1", "", {}, "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA=="], + + "path-browserify": ["path-browserify@1.0.1", "", {}, "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="], + + "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], + + "pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], + + "perfect-debounce": ["perfect-debounce@2.0.0", "", {}, "sha512-fkEH/OBiKrqqI/yIgjR92lMfs2K8105zt/VT6+7eTjNwisrsh47CeIED9z58zI7DfKdH3uHAn25ziRZn3kgAow=="], + + "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], + + "picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], + + "pidtree": ["pidtree@0.6.0", "", { "bin": { "pidtree": "bin/pidtree.js" } }, "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g=="], + + "pify": ["pify@4.0.1", "", {}, "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g=="], + + "pinia": ["pinia@3.0.4", "", { "dependencies": { "@vue/devtools-api": "^7.7.7" }, "peerDependencies": { "typescript": ">=4.5.0", "vue": "^3.5.11" }, "optionalPeers": ["typescript"] }, "sha512-l7pqLUFTI/+ESXn6k3nu30ZIzW5E2WZF/LaHJEpoq6ElcLD+wduZoB2kBN19du6K/4FDpPMazY2wJr+IndBtQw=="], + + "postcss": ["postcss@8.5.6", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg=="], + + "prettier": ["prettier@3.6.2", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ=="], + + "prr": ["prr@1.0.1", "", {}, "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw=="], + + "read-package-json-fast": ["read-package-json-fast@4.0.0", "", { "dependencies": { "json-parse-even-better-errors": "^4.0.0", "npm-normalize-package-bin": "^4.0.0" } }, "sha512-qpt8EwugBWDw2cgE2W+/3oxC+KTez2uSVR8JU9Q36TXPAGCaozfQUs59v4j4GFpWTaw0i6hAZSvOmu1J0uOEUg=="], + + "rfdc": ["rfdc@1.4.1", "", {}, "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA=="], + + "rollup": ["rollup@4.53.3", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.53.3", "@rollup/rollup-android-arm64": "4.53.3", "@rollup/rollup-darwin-arm64": "4.53.3", "@rollup/rollup-darwin-x64": "4.53.3", "@rollup/rollup-freebsd-arm64": "4.53.3", "@rollup/rollup-freebsd-x64": "4.53.3", "@rollup/rollup-linux-arm-gnueabihf": "4.53.3", "@rollup/rollup-linux-arm-musleabihf": "4.53.3", "@rollup/rollup-linux-arm64-gnu": "4.53.3", "@rollup/rollup-linux-arm64-musl": "4.53.3", "@rollup/rollup-linux-loong64-gnu": "4.53.3", "@rollup/rollup-linux-ppc64-gnu": "4.53.3", "@rollup/rollup-linux-riscv64-gnu": "4.53.3", "@rollup/rollup-linux-riscv64-musl": "4.53.3", "@rollup/rollup-linux-s390x-gnu": "4.53.3", "@rollup/rollup-linux-x64-gnu": "4.53.3", "@rollup/rollup-linux-x64-musl": "4.53.3", "@rollup/rollup-openharmony-arm64": "4.53.3", "@rollup/rollup-win32-arm64-msvc": "4.53.3", "@rollup/rollup-win32-ia32-msvc": "4.53.3", "@rollup/rollup-win32-x64-gnu": "4.53.3", "@rollup/rollup-win32-x64-msvc": "4.53.3", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA=="], + + "run-applescript": ["run-applescript@7.1.0", "", {}, "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q=="], + + "safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="], + + "sax": ["sax@1.4.3", "", {}, "sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ=="], + + "semver": ["semver@5.7.2", "", { "bin": { "semver": "bin/semver" } }, "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="], + + "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="], + + "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="], + + "shell-quote": ["shell-quote@1.8.3", "", {}, "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw=="], + + "sirv": ["sirv@3.0.2", "", { "dependencies": { "@polka/url": "^1.0.0-next.24", "mrmime": "^2.0.0", "totalist": "^3.0.0" } }, "sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g=="], + + "source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], + + "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], + + "speakingurl": ["speakingurl@14.0.1", "", {}, "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ=="], + + "superjson": ["superjson@2.2.6", "", { "dependencies": { "copy-anything": "^4" } }, "sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA=="], + + "tinyglobby": ["tinyglobby@0.2.15", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" } }, "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ=="], + + "totalist": ["totalist@3.0.1", "", {}, "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ=="], + + "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], + + "undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="], + + "unplugin-utils": ["unplugin-utils@0.3.1", "", { "dependencies": { "pathe": "^2.0.3", "picomatch": "^4.0.3" } }, "sha512-5lWVjgi6vuHhJ526bI4nlCOmkCIF3nnfXkCMDeMJrtdvxTs6ZFCM8oNufGTsDbKv/tJ/xj8RpvXjRuPBZJuJog=="], + + "update-browserslist-db": ["update-browserslist-db@1.2.2", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-E85pfNzMQ9jpKkA7+TJAi4TJN+tBCuWh5rUcS/sv6cFi+1q9LYDwDI5dpUL0u/73EElyQ8d3TEaeW4sPedBqYA=="], + + "vite": ["vite@7.2.7", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-ITcnkFeR3+fI8P1wMgItjGrR10170d8auB4EpMLPqmx6uxElH3a/hHGQabSHKdqd4FXWO1nFIp9rRn7JQ34ACQ=="], + + "vite-dev-rpc": ["vite-dev-rpc@1.1.0", "", { "dependencies": { "birpc": "^2.4.0", "vite-hot-client": "^2.1.0" }, "peerDependencies": { "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.1 || ^7.0.0-0" } }, "sha512-pKXZlgoXGoE8sEKiKJSng4hI1sQ4wi5YT24FCrwrLt6opmkjlqPPVmiPWWJn8M8byMxRGzp1CrFuqQs4M/Z39A=="], + + "vite-hot-client": ["vite-hot-client@2.1.0", "", { "peerDependencies": { "vite": "^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0" } }, "sha512-7SpgZmU7R+dDnSmvXE1mfDtnHLHQSisdySVR7lO8ceAXvM0otZeuQQ6C8LrS5d/aYyP/QZ0hI0L+dIPrm4YlFQ=="], + + "vite-plugin-inspect": ["vite-plugin-inspect@11.3.3", "", { "dependencies": { "ansis": "^4.1.0", "debug": "^4.4.1", "error-stack-parser-es": "^1.0.5", "ohash": "^2.0.11", "open": "^10.2.0", "perfect-debounce": "^2.0.0", "sirv": "^3.0.1", "unplugin-utils": "^0.3.0", "vite-dev-rpc": "^1.1.0" }, "peerDependencies": { "vite": "^6.0.0 || ^7.0.0-0" } }, "sha512-u2eV5La99oHoYPHE6UvbwgEqKKOQGz86wMg40CCosP6q8BkB6e5xPneZfYagK4ojPJSj5anHCrnvC20DpwVdRA=="], + + "vite-plugin-vue-devtools": ["vite-plugin-vue-devtools@8.0.5", "", { "dependencies": { "@vue/devtools-core": "^8.0.5", "@vue/devtools-kit": "^8.0.5", "@vue/devtools-shared": "^8.0.5", "sirv": "^3.0.2", "vite-plugin-inspect": "^11.3.3", "vite-plugin-vue-inspector": "^5.3.2" }, "peerDependencies": { "vite": "^6.0.0 || ^7.0.0-0" } }, "sha512-p619BlKFOqQXJ6uDWS1vUPQzuJOD6xJTfftj57JXBGoBD/yeQCowR7pnWcr/FEX4/HVkFbreI6w2uuGBmQOh6A=="], + + "vite-plugin-vue-inspector": ["vite-plugin-vue-inspector@5.3.2", "", { "dependencies": { "@babel/core": "^7.23.0", "@babel/plugin-proposal-decorators": "^7.23.0", "@babel/plugin-syntax-import-attributes": "^7.22.5", "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-transform-typescript": "^7.22.15", "@vue/babel-plugin-jsx": "^1.1.5", "@vue/compiler-dom": "^3.3.4", "kolorist": "^1.8.0", "magic-string": "^0.30.4" }, "peerDependencies": { "vite": "^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0" } }, "sha512-YvEKooQcSiBTAs0DoYLfefNja9bLgkFM7NI2b07bE2SruuvX0MEa9cMaxjKVMkeCp5Nz9FRIdcN1rOdFVBeL6Q=="], + + "vscode-uri": ["vscode-uri@3.1.0", "", {}, "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ=="], + + "vue": ["vue@3.5.25", "", { "dependencies": { "@vue/compiler-dom": "3.5.25", "@vue/compiler-sfc": "3.5.25", "@vue/runtime-dom": "3.5.25", "@vue/server-renderer": "3.5.25", "@vue/shared": "3.5.25" }, "peerDependencies": { "typescript": "*" }, "optionalPeers": ["typescript"] }, "sha512-YLVdgv2K13WJ6n+kD5owehKtEXwdwXuj2TTyJMsO7pSeKw2bfRNZGjhB7YzrpbMYj5b5QsUebHpOqR3R3ziy/g=="], + + "vue-router": ["vue-router@4.6.3", "", { "dependencies": { "@vue/devtools-api": "^6.6.4" }, "peerDependencies": { "vue": "^3.5.0" } }, "sha512-ARBedLm9YlbvQomnmq91Os7ck6efydTSpRP3nuOKCvgJOHNrhRoJDSKtee8kcL1Vf7nz6U+PMBL+hTvR3bTVQg=="], + + "vue-tsc": ["vue-tsc@3.1.7", "", { "dependencies": { "@volar/typescript": "2.4.26", "@vue/language-core": "3.1.7" }, "peerDependencies": { "typescript": ">=5.0.0" }, "bin": { "vue-tsc": "./bin/vue-tsc.js" } }, "sha512-r6XlyozLXC8Z0a+r4jVyinPutG91wDtvHZuXj0U+keNc0+056jIoJINBSZI2K7Sb4YHIru0JHiqssO1cJgs+Yw=="], + + "which": ["which@5.0.0", "", { "dependencies": { "isexe": "^3.1.1" }, "bin": { "node-which": "bin/which.js" } }, "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ=="], + + "wsl-utils": ["wsl-utils@0.1.0", "", { "dependencies": { "is-wsl": "^3.1.0" } }, "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw=="], + + "yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], + + "zrender": ["zrender@6.0.0", "", { "dependencies": { "tslib": "2.3.0" } }, "sha512-41dFXEEXuJpNecuUQq6JlbybmnHaqqpGlbH1yxnA5V9MMP4SbohSVZsJIwz+zdjQXSSlR1Vc34EgH1zxyTDvhg=="], + + "@babel/core/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + + "@babel/helper-compilation-targets/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + + "@babel/helper-create-class-features-plugin/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + + "@vue/devtools-api/@vue/devtools-kit": ["@vue/devtools-kit@7.7.9", "", { "dependencies": { "@vue/devtools-shared": "^7.7.9", "birpc": "^2.3.0", "hookable": "^5.5.3", "mitt": "^3.0.1", "perfect-debounce": "^1.0.0", "speakingurl": "^14.0.1", "superjson": "^2.2.2" } }, "sha512-PyQ6odHSgiDVd4hnTP+aDk2X4gl2HmLDfiyEnn3/oV+ckFDuswRs4IbBT7vacMuGdwY/XemxBoh302ctbsptuA=="], + + "@vue/devtools-core/nanoid": ["nanoid@5.1.6", "", { "bin": { "nanoid": "bin/nanoid.js" } }, "sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg=="], + + "cross-spawn/which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], + + "echarts/tslib": ["tslib@2.3.0", "", {}, "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="], + + "superjson/copy-anything": ["copy-anything@4.0.5", "", { "dependencies": { "is-what": "^5.2.0" } }, "sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA=="], + + "vue-router/@vue/devtools-api": ["@vue/devtools-api@6.6.4", "", {}, "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g=="], + + "zrender/tslib": ["tslib@2.3.0", "", {}, "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="], + + "@vue/devtools-api/@vue/devtools-kit/@vue/devtools-shared": ["@vue/devtools-shared@7.7.9", "", { "dependencies": { "rfdc": "^1.4.1" } }, "sha512-iWAb0v2WYf0QWmxCGy0seZNDPdO3Sp5+u78ORnyeonS6MT4PC7VPrryX2BpMJrwlDeaZ6BD4vP4XKjK0SZqaeA=="], + + "@vue/devtools-api/@vue/devtools-kit/perfect-debounce": ["perfect-debounce@1.0.0", "", {}, "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA=="], + + "cross-spawn/which/isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], + + "superjson/copy-anything/is-what": ["is-what@5.5.0", "", {}, "sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw=="], + } +} diff --git a/env.d.ts b/env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/env.d.ts @@ -0,0 +1 @@ +/// diff --git a/index.html b/index.html new file mode 100644 index 0000000..9e5fc8f --- /dev/null +++ b/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite App + + +
+ + + diff --git a/package.json b/package.json new file mode 100644 index 0000000..8c3ee3e --- /dev/null +++ b/package.json @@ -0,0 +1,37 @@ +{ + "name": "vue-daping", + "version": "0.0.0", + "private": true, + "type": "module", + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "scripts": { + "dev": "vite", + "build": "run-p type-check \"build-only {@}\" --", + "preview": "vite preview", + "build-only": "vite build", + "type-check": "vue-tsc --build", + "format": "prettier --write --experimental-cli src/" + }, + "dependencies": { + "echarts": "^6.0.0", + "pinia": "^3.0.4", + "vue": "^3.5.25", + "vue-router": "^4.6.3" + }, + "devDependencies": { + "@tsconfig/node24": "^24.0.3", + "@types/node": "^24.10.1", + "@vitejs/plugin-vue": "^6.0.2", + "@vue/tsconfig": "^0.8.1", + "axios": "^1.13.2", + "less": "^4.4.2", + "npm-run-all2": "^8.0.4", + "prettier": "3.6.2", + "typescript": "~5.9.0", + "vite": "^7.2.4", + "vite-plugin-vue-devtools": "^8.0.5", + "vue-tsc": "^3.1.5" + } +} diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..df36fcfb72584e00488330b560ebcf34a41c64c2 GIT binary patch literal 4286 zcmds*O-Phc6o&64GDVCEQHxsW(p4>LW*W<827=Unuo8sGpRux(DN@jWP-e29Wl%wj zY84_aq9}^Am9-cWTD5GGEo#+5Fi2wX_P*bo+xO!)p*7B;iKlbFd(U~_d(U?#hLj56 zPhFkj-|A6~Qk#@g^#D^U0XT1cu=c-vu1+SElX9NR;kzAUV(q0|dl0|%h|dI$%VICy zJnu2^L*Te9JrJMGh%-P79CL0}dq92RGU6gI{v2~|)p}sG5x0U*z<8U;Ij*hB9z?ei z@g6Xq-pDoPl=MANPiR7%172VA%r)kevtV-_5H*QJKFmd;8yA$98zCxBZYXTNZ#QFk2(TX0;Y2dt&WitL#$96|gJY=3xX zpCoi|YNzgO3R`f@IiEeSmKrPSf#h#Qd<$%Ej^RIeeYfsxhPMOG`S`Pz8q``=511zm zAm)MX5AV^5xIWPyEu7u>qYs?pn$I4nL9J!=K=SGlKLXpE<5x+2cDTXq?brj?n6sp= zphe9;_JHf40^9~}9i08r{XM$7HB!`{Ys~TK0kx<}ZQng`UPvH*11|q7&l9?@FQz;8 zx!=3<4seY*%=OlbCbcae?5^V_}*K>Uo6ZWV8mTyE^B=DKy7-sdLYkR5Z?paTgK-zyIkKjIcpyO z{+uIt&YSa_$QnN_@t~L014dyK(fOOo+W*MIxbA6Ndgr=Y!f#Tokqv}n<7-9qfHkc3 z=>a|HWqcX8fzQCT=dqVbogRq!-S>H%yA{1w#2Pn;=e>JiEj7Hl;zdt-2f+j2%DeVD zsW0Ab)ZK@0cIW%W7z}H{&~yGhn~D;aiP4=;m-HCo`BEI+Kd6 z={Xwx{TKxD#iCLfl2vQGDitKtN>z|-AdCN|$jTFDg0m3O`WLD4_s#$S literal 0 HcmV?d00001 diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..78e61fb --- /dev/null +++ b/src/App.vue @@ -0,0 +1,7 @@ + + + + + diff --git a/src/assets/reset.less b/src/assets/reset.less new file mode 100644 index 0000000..76defda --- /dev/null +++ b/src/assets/reset.less @@ -0,0 +1,78 @@ +// Reset base styles +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +html, +body { + height: 100%; + width: 100%; +} + +body { + font-family: + -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #333; + background-color: #fff; +} + +// Reset headings +h1, +h2, +h3, +h4, +h5, +h6 { + font-weight: normal; + font-size: inherit; +} + +// Reset lists +ul, +ol { + list-style: none; +} + +// Reset links +a { + color: inherit; + text-decoration: none; + background-color: transparent; + + &:hover { + text-decoration: none; + } +} + +// Reset form elements +button, +input, +textarea, +select { + font: inherit; + color: inherit; + background-color: transparent; + border: none; + outline: none; +} + +button { + cursor: pointer; +} + +// Reset images +img { + max-width: 100%; + height: auto; + display: block; +} + +// Reset table +table { + border-collapse: collapse; + border-spacing: 0; +} diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..305c6f6 --- /dev/null +++ b/src/main.ts @@ -0,0 +1,49 @@ +import { createApp } from 'vue' +import { createPinia } from 'pinia' + +import App from './App.vue' +import router from './router' +import '@/assets/reset.less' +import * as echarts from 'echarts/core' +import { + TitleComponent, + ToolboxComponent, + TooltipComponent, + VisualMapComponent, + GeoComponent, +} from 'echarts/components' +import type { + TitleComponentOption, + ToolboxComponentOption, + TooltipComponentOption, + VisualMapComponentOption, + GeoComponentOption, +} from 'echarts/components' +import { MapChart } from 'echarts/charts' +import type { MapSeriesOption } from 'echarts/charts' +import { CanvasRenderer } from 'echarts/renderers' + +echarts.use([ + TitleComponent, + ToolboxComponent, + TooltipComponent, + VisualMapComponent, + GeoComponent, + MapChart, + CanvasRenderer, +]) + +type EChartsOption = echarts.ComposeOption< + | TitleComponentOption + | ToolboxComponentOption + | TooltipComponentOption + | VisualMapComponentOption + | GeoComponentOption + | MapSeriesOption +> +const app = createApp(App) + +app.use(createPinia()) +app.use(router) + +app.mount('#app') diff --git a/src/page/bigScreen.vue b/src/page/bigScreen.vue new file mode 100644 index 0000000..bf3bc73 --- /dev/null +++ b/src/page/bigScreen.vue @@ -0,0 +1,177 @@ + + + \ No newline at end of file diff --git a/src/page/components/chartContainer.vue b/src/page/components/chartContainer.vue new file mode 100644 index 0000000..ad79ecf --- /dev/null +++ b/src/page/components/chartContainer.vue @@ -0,0 +1,28 @@ + + + \ No newline at end of file diff --git a/src/page/ts/initChinaMap.ts b/src/page/ts/initChinaMap.ts new file mode 100644 index 0000000..5410e8e --- /dev/null +++ b/src/page/ts/initChinaMap.ts @@ -0,0 +1,105 @@ +import { get } from '@/utils/request' +import * as echarts from 'echarts' +import { useCityGDPStore } from '@/stores/cityGDP' +type EChartsOption = echarts.EChartsOption +const cityGDPStore = useCityGDPStore() +/** + * 初始化中国地图(基于后端提供的 geoJSON) + */ +export const initChinaMap = async (chinaMapRef: HTMLDivElement) => { + if (!chinaMapRef) return + + const myChart = echarts.init(chinaMapRef) + myChart.showLoading() + + try { + const res = await get('/map/json') + + // 确保返回的是有效的 GeoJSON 格式 + if (!res || !res.features) { + console.error('Invalid or empty GeoJSON data received for China map') + return + } + + echarts.registerMap('CN', res) + // 确保在使用数据前先获取并存储到 store 中 + if (!cityGDPStore.cityGDP!.length) { + console.log('未获取到省份数据!请检查数据源!') + } + + // 从 store 中获取数据并映射为图表所需格式 + let data = cityGDPStore.cityGDP!.map((item: any) => ({ + name: item.name, + value: item.gdp, + // 保留原始数据用于 tooltip 展示 + extraData: { + gdp: item.gdp, + people: item.people, + last: item.last, + }, + })) + const option: EChartsOption = { + title: { + text: 'China Map', + left: 'center', + }, + tooltip: { + trigger: 'item', + formatter: (params: any) => { + const d = params.data.extraData + return ` + ${params.name}
+ GDP: ${d.gdp} 万元
+ 常住人口: ${d.people} 万人
+ 上年: ${d.last}万元 + ` + }, + }, + visualMap: { + left: 'right', + min: 0, + max: Math.max(...data.map((item: any) => item.value)), // 动态计算最大GDP值 + inRange: { + color: ['#313695', '#74add1', '#e0f3f8', '#fee090', '#fe0000'], // 优化为深蓝 -> 浅蓝 -> 白 -> 橙 -> 红,更平滑的数据梯度表现 + }, + text: ['High', 'Low'], + calculable: true, + }, + toolbox: { + show: true, + left: 'left', + top: 'top', + feature: { + dataView: { readOnly: false }, + restore: {}, + saveAsImage: {}, + }, + }, + series: [ + { + name: 'China', + type: 'map', + roam: true, + map: 'CN', + emphasis: { + label: { show: true }, + }, + data: data, + }, + ], + } + + myChart.setOption(option) + } catch (err) { + // 请求或初始化失败时打印错误,按需替换为项目内的提示机制 + // console.error('initChinaMap error', err) + } finally { + myChart.hideLoading() + // 添加窗口大小改变时重绘图表 + window.addEventListener('resize', () => { + myChart.resize() + }) + } +} + +export default initChinaMap diff --git a/src/page/ts/initTop5.ts b/src/page/ts/initTop5.ts new file mode 100644 index 0000000..b49e7ae --- /dev/null +++ b/src/page/ts/initTop5.ts @@ -0,0 +1,93 @@ +import { get } from '@/utils/request' +import * as echarts from 'echarts' +import { useCityGDPStore } from '@/stores/cityGDP' +type EChartsOption = echarts.EChartsOption +const cityGDPStore = useCityGDPStore() +export const initTop5 = async (Top5Ref: HTMLDivElement, type: number) => { + const myChart = echarts.init(Top5Ref) + myChart.showLoading() + if (!cityGDPStore.cityGDP) { + console.log('Top5元素获取错误') + return + } + const CityName: string[] = [] + const CityGDP: string[] = [] + cityGDPStore.cityGDP.forEach((item: { name: string; gdp: string; [prototype: string]: any }) => { + CityName.push(item.name) + if (type == 1) { + CityGDP.push(item.gdp) + } + if (type == 2) { + CityGDP.push(item.people) + } + }) + let option: EChartsOption = { + // grid: { + // right: 80, // 为右侧标签留出足够空间 + // left: 0, // 确保左侧城市名称有足够的显示空间 + // top: 0, + // bottom: 0, + // }, + title: { + text: '', + left: 'center', + }, + xAxis: { + max: 'dataMax', + }, + yAxis: { + type: 'category', + data: CityName, // y 轴数据 + inverse: true, + animationDuration: 300, + animationDurationUpdate: 300, + max: 4, // only the largest 3 bars will be displayed + }, + series: [ + { + realtimeSort: true, + name: 'GDP', + type: 'bar', + data: CityGDP, // x 轴数据 + label: { + show: false, + position: 'right', + valueAnimation: true, + fontSize: 14, + // 添加文本溢出处理 + overflow: 'truncate', + width: 100, + }, + }, + ], + legend: { + show: false, + }, + tooltip: { show: true }, + animationDuration: 0, + animationDurationUpdate: 3000, + animationEasing: 'linear', + animationEasingUpdate: 'linear', + } + myChart.setOption(option) + //js更改标题 + if (type == 1) { + myChart.setOption({ + title: { + text: '全国GDP前五', + }, + }) + } + if (type == 2) { + myChart.setOption({ + title: { + text: '全国人均GDP前五', + }, + }) + } + + myChart.hideLoading() + window.addEventListener('resize', () => { + myChart.resize() + }) +} diff --git a/src/router/index.ts b/src/router/index.ts new file mode 100644 index 0000000..42c9cac --- /dev/null +++ b/src/router/index.ts @@ -0,0 +1,19 @@ +import { createRouter, createWebHistory } from 'vue-router' +const route: any[] = [ + { + path: '/', + redirect: '/bigScreen', + }, + { + //大屏数据 + path: '/bigScreen', + name: 'bigScreen', + component: () => import('@/page/bigScreen.vue'), + }, +] +const router = createRouter({ + history: createWebHistory(import.meta.env.BASE_URL), + routes: route, +}) + +export default router diff --git a/src/stores/cityGDP.ts b/src/stores/cityGDP.ts new file mode 100644 index 0000000..0cc5dfa --- /dev/null +++ b/src/stores/cityGDP.ts @@ -0,0 +1,7 @@ +import { ref, computed, reactive } from 'vue' +import { defineStore } from 'pinia' + +export const useCityGDPStore = defineStore('cityGDP', () => { + const cityGDP = ref<[]>() + return { cityGDP } +}) diff --git a/src/stores/counter.ts b/src/stores/counter.ts new file mode 100644 index 0000000..b6757ba --- /dev/null +++ b/src/stores/counter.ts @@ -0,0 +1,12 @@ +import { ref, computed } from 'vue' +import { defineStore } from 'pinia' + +export const useCounterStore = defineStore('counter', () => { + const count = ref(0) + const doubleCount = computed(() => count.value * 2) + function increment() { + count.value++ + } + + return { count, doubleCount, increment } +}) diff --git a/src/utils/getData.ts b/src/utils/getData.ts new file mode 100644 index 0000000..11f2611 --- /dev/null +++ b/src/utils/getData.ts @@ -0,0 +1,8 @@ +import { get } from '../utils/request' +import { useCityGDPStore } from '@/stores/cityGDP' + +let cityGDPStore = useCityGDPStore() +export const getData = async () => { + let data = await get('/gdp/json') + cityGDPStore.cityGDP = data.data +} diff --git a/src/utils/request.ts b/src/utils/request.ts new file mode 100644 index 0000000..550b21b --- /dev/null +++ b/src/utils/request.ts @@ -0,0 +1,68 @@ +import axios from 'axios' +import type { AxiosRequestConfig } from 'axios' + +const host = 'http://101.35.148.193:3002' + +export const request = axios.create({ + baseURL: host, + timeout: 5000, +}) + +// 默认请求拦截器:例如注入 token +request.interceptors.request.use( + (cfg) => { + try { + const token = localStorage.getItem('token') + if (token) { + cfg.headers = cfg.headers || {} + ;(cfg.headers as any).Authorization = `Bearer ${token}` + } + } catch (_) {} + return cfg + }, + (err) => Promise.reject(err), +) + +// 默认响应拦截器:统一返回 data 或抛出错误 +request.interceptors.response.use( + (res) => { + return res + }, + (error) => { + // 这里可以统一处理网络/状态码错误 + if (error.response) { + const status = error.response.status + if (status === 401) { + // token 过期示例处理:清理并重定向登录(根据项目路由实现) + localStorage.removeItem('token') + } + } + return Promise.reject(error) + }, +) + +/** + * 简单封装的 GET 请求 + */ +export async function get( + url: string, + params?: any, + config?: AxiosRequestConfig, +): Promise { + const res = await request.get(url, { params, ...config }) + return res.data as unknown as T +} + +/** + * 简单封装的 POST 请求 + */ +export async function post( + url: string, + data?: any, + config?: AxiosRequestConfig, +): Promise { + const res = await request.post(url, data, config) + return res.data as unknown as T +} + +export default request diff --git a/src/utils/ws.ts b/src/utils/ws.ts new file mode 100644 index 0000000..d8bb922 --- /dev/null +++ b/src/utils/ws.ts @@ -0,0 +1,150 @@ +type WSHandlers = { + onOpen?: (ev: Event) => void + onMessage?: (data: any, ev: MessageEvent) => void + onClose?: (ev: CloseEvent) => void + onError?: (ev: Event) => void + onStatus?: (status: 'connecting' | 'open' | 'closing' | 'closed') => void +} + +type WSOptions = { + reconnectInterval?: number // ms + maxReconnectAttempts?: number + heartbeatInterval?: number // ms + heartbeatMsg?: string +} + +export class WebSocketClient { + private url: string + private handlers: WSHandlers + private options: WSOptions + private ws?: WebSocket + private shouldReconnect = true + private reconnectAttempts = 0 + private reconnectTimer?: number + private heartbeatTimer?: number + private lastPong = 0 + private _status: 'connecting' | 'open' | 'closing' | 'closed' = 'closed' + + constructor(url: string, handlers: WSHandlers = {}, options: WSOptions = {}) { + this.url = url + this.handlers = handlers + this.options = Object.assign( + { + reconnectInterval: 3000, + maxReconnectAttempts: Infinity, + heartbeatInterval: 20000, + heartbeatMsg: 'ping', + }, + options, + ) + this.connect() + } + + get status() { + return this._status + } + + private setStatus(s: 'connecting' | 'open' | 'closing' | 'closed') { + this._status = s + this.handlers.onStatus?.(s) + } + + connect() { + this.shouldReconnect = true + this.setStatus('connecting') + this.ws = new WebSocket(this.url) + this.setupEvents() + } + + reconnect() { + this.close() + this.shouldReconnect = true + this.reconnectAttempts = 0 + this.connect() + } + + private setupEvents() { + if (!this.ws) return + + this.ws.onopen = (ev) => { + this.reconnectAttempts = 0 + this.setStatus('open') + this.handlers.onOpen?.(ev) + this.startHeartbeat() + } + + this.ws.onmessage = (ev) => { + // heartbeat pong handling + if (ev.data === (this.options.heartbeatMsg || 'ping') || ev.data === 'pong') { + this.lastPong = Date.now() + return + } + + let parsed: any = ev.data + try { + parsed = JSON.parse(ev.data) + } catch (_) { + // not json, keep raw + } + this.handlers.onMessage?.(parsed, ev) + } + + this.ws.onclose = (ev) => { + this.setStatus('closed') + this.handlers.onClose?.(ev) + this.stopHeartbeat() + if (!this.shouldReconnect) return + if (this.reconnectAttempts >= (this.options.maxReconnectAttempts || Infinity)) return + const interval = this.options.reconnectInterval || 3000 + this.reconnectAttempts += 1 + this.reconnectTimer = window.setTimeout(() => this.connect(), interval) + } + + this.ws.onerror = (ev) => { + this.handlers.onError?.(ev) + } + } + + private startHeartbeat() { + this.stopHeartbeat() + const interval = this.options.heartbeatInterval || 20000 + this.lastPong = Date.now() + this.heartbeatTimer = window.setInterval(() => { + if (!this.ws || this.ws.readyState !== WebSocket.OPEN) return + try { + this.ws.send(this.options.heartbeatMsg || 'ping') + } catch (_) {} + // If no pong within 2 intervals, force reconnect + if (Date.now() - this.lastPong > interval * 2) { + this.ws?.close() + } + }, interval) + } + + private stopHeartbeat() { + if (this.heartbeatTimer) { + window.clearInterval(this.heartbeatTimer) + this.heartbeatTimer = undefined + } + } + + send(data: string | ArrayBuffer | Blob) { + if (!this.ws) throw new Error('WebSocket is not initialized') + if (this.ws.readyState !== WebSocket.OPEN) throw new Error('WebSocket is not open') + this.ws.send(data) + } + + close(code?: number, reason?: string) { + this.shouldReconnect = false + if (this.reconnectTimer) window.clearTimeout(this.reconnectTimer) + this.stopHeartbeat() + this.setStatus('closing') + this.ws?.close(code, reason) + } +} + +export function createWebSocket(url: string, handlers?: WSHandlers, options?: WSOptions) { + return new WebSocketClient(url, handlers, options) +} + +export default createWebSocket diff --git a/tsconfig.app.json b/tsconfig.app.json new file mode 100644 index 0000000..913b8f2 --- /dev/null +++ b/tsconfig.app.json @@ -0,0 +1,12 @@ +{ + "extends": "@vue/tsconfig/tsconfig.dom.json", + "include": ["env.d.ts", "src/**/*", "src/**/*.vue"], + "exclude": ["src/**/__tests__/*"], + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + + "paths": { + "@/*": ["./src/*"] + } + } +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..66b5e57 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,11 @@ +{ + "files": [], + "references": [ + { + "path": "./tsconfig.node.json" + }, + { + "path": "./tsconfig.app.json" + } + ] +} diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000..822562d --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,19 @@ +{ + "extends": "@tsconfig/node24/tsconfig.json", + "include": [ + "vite.config.*", + "vitest.config.*", + "cypress.config.*", + "nightwatch.conf.*", + "playwright.config.*", + "eslint.config.*" + ], + "compilerOptions": { + "noEmit": true, + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + + "module": "ESNext", + "moduleResolution": "Bundler", + "types": ["node"] + } +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..4217010 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,18 @@ +import { fileURLToPath, URL } from 'node:url' + +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' +import vueDevTools from 'vite-plugin-vue-devtools' + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [ + vue(), + vueDevTools(), + ], + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)) + }, + }, +}) diff --git a/打开.exe b/打开.exe new file mode 100644 index 0000000000000000000000000000000000000000..beb36e51ee6b7f06dad4baf74adb49e22a6340c6 GIT binary patch literal 61424 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 literal 0 HcmV?d00001