commit ac8acf8e9f9bdfa95da98a825af9e2d92871c807
Author: AaronWu <2463371514@qq.com>
Date: Mon Mar 31 16:50:16 2025 +0800
chore: init
diff --git a/.env b/.env
new file mode 100644
index 0000000..29a7617
--- /dev/null
+++ b/.env
@@ -0,0 +1,14 @@
+# 供docker构建时使用
+ENV = 'production'
+
+# 网站前缀
+VITE_BASE_URL = /
+
+# base api
+VITE_BASE_API = '/api/admin/'
+VITE_BASE_SOCKET_PATH = '/ws-api'
+VITE_BASE_SOCKET_NSP = '/admin'
+
+# mock api
+VITE_MOCK_API = '/mock-api/'
+
diff --git a/.env.development b/.env.development
new file mode 100644
index 0000000..0609113
--- /dev/null
+++ b/.env.development
@@ -0,0 +1,14 @@
+# 只在开发模式中被载入
+
+# 网站前缀
+VITE_BASE_API_URL = http://192.168.3.118:10010/admin-api/
+
+# base api
+VITE_BASE_API = '/admin-api/'
+VITE_BASE_SOCKET_PATH = '/ws-api'
+VITE_BASE_SOCKET_NSP = '/admin'
+
+# mock api
+VITE_MOCK_API = '/mock-api/'
+
+VITE_DROP_CONSOLE = false
diff --git a/.env.production b/.env.production
new file mode 100644
index 0000000..afef605
--- /dev/null
+++ b/.env.production
@@ -0,0 +1,14 @@
+# 只在生产模式中被载入
+
+# 网站前缀
+VITE_BASE_API_URL = http://192.168.3.118:10010/admin-api/
+
+# base api
+VITE_BASE_API = '/admin-api/'
+VITE_BASE_SOCKET_PATH = '/ws-api'
+VITE_BASE_SOCKET_NSP = '/admin'
+
+# mock api
+VITE_MOCK_API = '/mock-api/'
+
+VITE_DROP_CONSOLE = true
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..a547bf3
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,24 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+dist
+dist-ssr
+*.local
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..41d192c
--- /dev/null
+++ b/README.md
@@ -0,0 +1,100 @@
+
+# IssueSupportManage
+
+template
+
+## Getting started
+
+To make it easy for you to get started with GitLab, here's a list of recommended next steps.
+
+Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)!
+
+## Add your files
+
+- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files
+- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command:
+
+```
+cd existing_repo
+git remote add origin https://git.koalacloud.com/koalacloud/web/kaola-cloud-platform/koalacloud-platform-web.git
+git branch -M main
+git push -uf origin main
+```
+
+## Integrate with your tools
+
+- [ ] [Set up project integrations](https://git.koalacloud.com/koalacloud/web/kaola-cloud-platform/koalacloud-platform-web/-/settings/integrations)
+
+## Collaborate with your team
+
+- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/)
+- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html)
+- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically)
+- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/)
+- [ ] [Automatically merge when pipeline succeeds](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html)
+
+## Test and Deploy
+
+Use the built-in continuous integration in GitLab.
+
+- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html)
+- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing(SAST)](https://docs.gitlab.com/ee/user/application_security/sast/)
+- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html)
+- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/)
+- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html)
+
+***
+
+# Editing this README
+
+When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thank you to [makeareadme.com](https://www.makeareadme.com/) for this template.
+
+## Suggestions for a good README
+Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information.
+
+## Name
+Choose a self-explaining name for your project.
+
+## Description
+Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors.
+
+## Badges
+On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge.
+
+## Visuals
+Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method.
+
+## Installation
+Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection.
+
+## Usage
+Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README.
+
+## Support
+Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc.
+
+## Roadmap
+If you have ideas for releases in the future, it is a good idea to list them in the README.
+
+## Contributing
+State if you are open to contributions and what your requirements are for accepting them.
+
+For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self.
+
+You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser.
+
+## Authors and acknowledgment
+Show your appreciation to those who have contributed to the project.
+
+## License
+For open source projects, say how it is licensed.
+
+## Project status
+If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers.
diff --git a/components.d.ts b/components.d.ts
new file mode 100644
index 0000000..e4dbd1c
--- /dev/null
+++ b/components.d.ts
@@ -0,0 +1,55 @@
+// generated by unplugin-vue-components
+// We suggest you to commit this file into source control
+// Read more: https://github.com/vuejs/core/pull/3399
+import '@vue/runtime-core'
+
+export {}
+
+declare module '@vue/runtime-core' {
+ export interface GlobalComponents {
+ AButton: typeof import('ant-design-vue/es')['Button']
+ ACard: typeof import('ant-design-vue/es')['Card']
+ ACol: typeof import('ant-design-vue/es')['Col']
+ AForm: typeof import('ant-design-vue/es')['Form']
+ AFormItem: typeof import('ant-design-vue/es')['FormItem']
+ AInput: typeof import('ant-design-vue/es')['Input']
+ ALayout: typeof import('ant-design-vue/es')['Layout']
+ ALayoutContent: typeof import('ant-design-vue/es')['LayoutContent']
+ ALayoutSider: typeof import('ant-design-vue/es')['LayoutSider']
+ ApiSelect: typeof import('./src/components/core/schema-form/src/components/ApiSelect.vue')['default']
+ ARow: typeof import('ant-design-vue/es')['Row']
+ ASelect: typeof import('ant-design-vue/es')['Select']
+ ASpin: typeof import('ant-design-vue/es')['Spin']
+ ATypographyText: typeof import('ant-design-vue/es')['TypographyText']
+ BasicArrow: typeof import('./src/components/basic/basic-arrow/index.vue')['default']
+ BasicHelp: typeof import('./src/components/basic/basic-help/index.vue')['default']
+ BasicTree: typeof import('./src/components/core/Tree/src/BasicTree.vue')['default']
+ Button: typeof import('./src/components/basic/button/button.vue')['default']
+ CheckBox: typeof import('./src/components/basic/check-box/index.vue')['default']
+ CollapseContainer: typeof import('./src/components/core/Container/src/collapse/CollapseContainer.vue')['default']
+ CollapseHeader: typeof import('./src/components/core/Container/src/collapse/CollapseHeader.vue')['default']
+ CollapseTransition: typeof import('./src/components/core/Transition/src/CollapseTransition.vue')['default']
+ ColumnSetting: typeof import('./src/components/core/dynamic-table/src/components/table-settings/column-setting.vue')['default']
+ ContextMenu: typeof import('./src/components/basic/ContextMenu/src/ContextMenu.vue')['default']
+ DraggableModal: typeof import('./src/components/core/draggable-modal/index.vue')['default']
+ DynamicTable: typeof import('./src/components/core/dynamic-table/src/dynamic-table.vue')['default']
+ EditableCell: typeof import('./src/components/core/dynamic-table/src/components/editable-cell/index.vue')['default']
+ FormAction: typeof import('./src/components/core/schema-form/src/components/form-action.vue')['default']
+ IconsSelect: typeof import('./src/components/basic/icons-select/index.vue')['default']
+ IframePage: typeof import('./src/components/iframe-page/index.vue')['default']
+ LocalePicker: typeof import('./src/components/basic/locale-picker/index.vue')['default']
+ RefreshSetting: typeof import('./src/components/core/dynamic-table/src/components/table-settings/refresh-setting.vue')['default']
+ RouterLink: typeof import('vue-router')['RouterLink']
+ RouterView: typeof import('vue-router')['RouterView']
+ SchemaForm: typeof import('./src/components/core/schema-form/src/schema-form.vue')['default']
+ SchemaFormItem: typeof import('./src/components/core/schema-form/src/schema-form-item.vue')['default']
+ SizeSetting: typeof import('./src/components/core/dynamic-table/src/components/table-settings/size-setting.vue')['default']
+ SplitPanel: typeof import('./src/components/basic/split-panel/index.vue')['default']
+ SvgIcon: typeof import('./src/components/basic/svg-icon/svg-icon.vue')['default']
+ TableAction: typeof import('./src/components/basic/tableAction/index.vue')['default']
+ TableSettings: typeof import('./src/components/core/dynamic-table/src/components/table-settings/index.vue')['default']
+ TitleI18n: typeof import('./src/components/basic/title-i18n/index.vue')['default']
+ ToolBar: typeof import('./src/components/core/dynamic-table/src/components/tool-bar/index.vue')['default']
+ TreeHeader: typeof import('./src/components/core/Tree/src/components/TreeHeader.vue')['default']
+ }
+}
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..143557b
--- /dev/null
+++ b/index.html
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+ Vite + Vue + TS
+
+
+
+
+
+
diff --git a/middlewares/cache.ts b/middlewares/cache.ts
new file mode 100644
index 0000000..0e71ed7
--- /dev/null
+++ b/middlewares/cache.ts
@@ -0,0 +1,10 @@
+// middlewares/cache.ts
+import { Request, Response, NextFunction } from 'express'
+
+export default function cacheMiddleware(req: Request, res: Response, next: NextFunction) {
+ if (process.env.NODE_ENV === 'production') { // 只在生产环境中启用缓存
+ const cacheTime = 60 * 60 * 24 // 设置缓存时间,这里为一天
+ res.setHeader('Cache-Control', `public, max-age=${cacheTime}`)
+ }
+ next()
+}
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..5e798ff
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,11610 @@
+{
+ "name": "my-vue-app",
+ "version": "0.0.0",
+ "lockfileVersion": 2,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "my-vue-app",
+ "version": "0.0.0",
+ "dependencies": {
+ "@vitejs/plugin-vue-jsx": "^3.0.1",
+ "@vueuse/core": "~9.6.0",
+ "ant-design-vue": "^3.2.20",
+ "axios": "^1.4.0",
+ "file-saver": "^2.0.5",
+ "pinia": "^2.1.3",
+ "qs": "^6.11.2",
+ "sortablejs": "^1.15.0",
+ "vite-plugin-windicss": "^1.9.0",
+ "vue": "^3.2.47",
+ "vue-i18n": "9.2.2",
+ "vue-router": "^4.2.1",
+ "windicss": "^3.5.6",
+ "xlsx": "^0.18.5"
+ },
+ "devDependencies": {
+ "@types/node": "^20.2.3",
+ "@vitejs/plugin-vue": "^4.1.0",
+ "less": "^4.1.3",
+ "less-loader": "^11.1.0",
+ "lodash-es": "~4.17.21",
+ "nprogress": "~1.0.0-1",
+ "rimraf": "^5.0.1",
+ "rollup-plugin-terser": "^7.0.2",
+ "typescript": "^5.0.2",
+ "unplugin-vue-components": "~0.22.12",
+ "unplugin-vue-define-options": "~1.0.0",
+ "vite": "^4.3.2",
+ "vite-plugin-svg-icons": "~2.0.1",
+ "vite-tsconfig-paths": "^4.2.0",
+ "vue-tsc": "^1.4.2"
+ }
+ },
+ "node_modules/@ampproject/remapping": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.2.1.tgz",
+ "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@ant-design/colors": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmmirror.com/@ant-design/colors/-/colors-6.0.0.tgz",
+ "integrity": "sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ==",
+ "dependencies": {
+ "@ctrl/tinycolor": "^3.4.0"
+ }
+ },
+ "node_modules/@ant-design/icons-svg": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmmirror.com/@ant-design/icons-svg/-/icons-svg-4.2.1.tgz",
+ "integrity": "sha512-EB0iwlKDGpG93hW8f85CTJTs4SvMX7tt5ceupvhALp1IF44SeUFOMhKUOYqpsoYWQKAOuTRDMqn75rEaKDp0Xw=="
+ },
+ "node_modules/@ant-design/icons-vue": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmmirror.com/@ant-design/icons-vue/-/icons-vue-6.1.0.tgz",
+ "integrity": "sha512-EX6bYm56V+ZrKN7+3MT/ubDkvJ5rK/O2t380WFRflDcVFgsvl3NLH7Wxeau6R8DbrO5jWR6DSTC3B6gYFp77AA==",
+ "dependencies": {
+ "@ant-design/colors": "^6.0.0",
+ "@ant-design/icons-svg": "^4.2.1"
+ },
+ "peerDependencies": {
+ "vue": ">=3.0.3"
+ }
+ },
+ "node_modules/@antfu/utils": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmmirror.com/@antfu/utils/-/utils-0.7.4.tgz",
+ "integrity": "sha512-qe8Nmh9rYI/HIspLSTwtbMFPj6dISG6+dJnOguTlPNXtCvS2uezdxscVBb7/3DrmNbQK49TDqpkSQ1chbRGdpQ=="
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.21.4",
+ "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.21.4.tgz",
+ "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==",
+ "dependencies": {
+ "@babel/highlight": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/compat-data": {
+ "version": "7.22.3",
+ "resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.22.3.tgz",
+ "integrity": "sha512-aNtko9OPOwVESUFp3MZfD8Uzxl7JzSeJpd7npIoxCasU37PFbAQRpKglkaKwlHOyeJdrREpo8TW8ldrkYWwvIQ==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.22.1",
+ "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.22.1.tgz",
+ "integrity": "sha512-Hkqu7J4ynysSXxmAahpN1jjRwVJ+NdpraFLIWflgjpVob3KNyK3/tIUc7Q7szed8WMp0JNa7Qtd1E9Oo22F9gA==",
+ "dependencies": {
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.21.4",
+ "@babel/generator": "^7.22.0",
+ "@babel/helper-compilation-targets": "^7.22.1",
+ "@babel/helper-module-transforms": "^7.22.1",
+ "@babel/helpers": "^7.22.0",
+ "@babel/parser": "^7.22.0",
+ "@babel/template": "^7.21.9",
+ "@babel/traverse": "^7.22.1",
+ "@babel/types": "^7.22.0",
+ "convert-source-map": "^1.7.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.2",
+ "semver": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@babel/core/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "node_modules/@babel/core/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.22.3",
+ "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.22.3.tgz",
+ "integrity": "sha512-C17MW4wlk//ES/CJDL51kPNwl+qiBQyN7b9SKyVp11BLGFeSPoVaHrv+MNt8jwQFhQWowW88z1eeBx3pFz9v8A==",
+ "dependencies": {
+ "@babel/types": "^7.22.3",
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "@jridgewell/trace-mapping": "^0.3.17",
+ "jsesc": "^2.5.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-annotate-as-pure": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz",
+ "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==",
+ "dependencies": {
+ "@babel/types": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.22.1",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.1.tgz",
+ "integrity": "sha512-Rqx13UM3yVB5q0D/KwQ8+SPfX/+Rnsy1Lw1k/UwOC4KC6qrzIQoY3lYnBu5EHKBlEHHcj0M0W8ltPSkD8rqfsQ==",
+ "dependencies": {
+ "@babel/compat-data": "^7.22.0",
+ "@babel/helper-validator-option": "^7.21.0",
+ "browserslist": "^4.21.3",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dependencies": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets/node_modules/yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
+ },
+ "node_modules/@babel/helper-create-class-features-plugin": {
+ "version": "7.22.1",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.1.tgz",
+ "integrity": "sha512-SowrZ9BWzYFgzUMwUmowbPSGu6CXL5MSuuCkG3bejahSpSymioPmuLdhPxNOc9MjuNGjy7M/HaXvJ8G82Lywlw==",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.18.6",
+ "@babel/helper-environment-visitor": "^7.22.1",
+ "@babel/helper-function-name": "^7.21.0",
+ "@babel/helper-member-expression-to-functions": "^7.22.0",
+ "@babel/helper-optimise-call-expression": "^7.18.6",
+ "@babel/helper-replace-supers": "^7.22.1",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0",
+ "@babel/helper-split-export-declaration": "^7.18.6",
+ "semver": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/helper-environment-visitor": {
+ "version": "7.22.1",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.1.tgz",
+ "integrity": "sha512-Z2tgopurB/kTbidvzeBrc2To3PUP/9i5MUe+fU6QJCQDyPwSH2oRapkLw3KGECDYSjhQZCNxEvNvZlLw8JjGwA==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-function-name": {
+ "version": "7.21.0",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz",
+ "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==",
+ "dependencies": {
+ "@babel/template": "^7.20.7",
+ "@babel/types": "^7.21.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-hoist-variables": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
+ "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
+ "dependencies": {
+ "@babel/types": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-member-expression-to-functions": {
+ "version": "7.22.3",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.3.tgz",
+ "integrity": "sha512-Gl7sK04b/2WOb6OPVeNy9eFKeD3L6++CzL3ykPOWqTn08xgYYK0wz4TUh2feIImDXxcVW3/9WQ1NMKY66/jfZA==",
+ "dependencies": {
+ "@babel/types": "^7.22.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.21.4",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz",
+ "integrity": "sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==",
+ "dependencies": {
+ "@babel/types": "^7.21.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.22.1",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.1.tgz",
+ "integrity": "sha512-dxAe9E7ySDGbQdCVOY/4+UcD8M9ZFqZcZhSPsPacvCG4M+9lwtDDQfI2EoaSvmf7W/8yCBkGU0m7Pvt1ru3UZw==",
+ "dependencies": {
+ "@babel/helper-environment-visitor": "^7.22.1",
+ "@babel/helper-module-imports": "^7.21.4",
+ "@babel/helper-simple-access": "^7.21.5",
+ "@babel/helper-split-export-declaration": "^7.18.6",
+ "@babel/helper-validator-identifier": "^7.19.1",
+ "@babel/template": "^7.21.9",
+ "@babel/traverse": "^7.22.1",
+ "@babel/types": "^7.22.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-optimise-call-expression": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz",
+ "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==",
+ "dependencies": {
+ "@babel/types": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-plugin-utils": {
+ "version": "7.21.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz",
+ "integrity": "sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-replace-supers": {
+ "version": "7.22.1",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.1.tgz",
+ "integrity": "sha512-ut4qrkE4AuSfrwHSps51ekR1ZY/ygrP1tp0WFm8oVq6nzc/hvfV/22JylndIbsf2U2M9LOMwiSddr6y+78j+OQ==",
+ "dependencies": {
+ "@babel/helper-environment-visitor": "^7.22.1",
+ "@babel/helper-member-expression-to-functions": "^7.22.0",
+ "@babel/helper-optimise-call-expression": "^7.18.6",
+ "@babel/template": "^7.21.9",
+ "@babel/traverse": "^7.22.1",
+ "@babel/types": "^7.22.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-simple-access": {
+ "version": "7.21.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz",
+ "integrity": "sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==",
+ "dependencies": {
+ "@babel/types": "^7.21.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
+ "version": "7.20.0",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz",
+ "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==",
+ "dependencies": {
+ "@babel/types": "^7.20.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-split-export-declaration": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
+ "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
+ "dependencies": {
+ "@babel/types": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.21.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz",
+ "integrity": "sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.19.1",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
+ "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.21.0",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz",
+ "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.22.3",
+ "resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.22.3.tgz",
+ "integrity": "sha512-jBJ7jWblbgr7r6wYZHMdIqKc73ycaTcCaWRq4/2LpuPHcx7xMlZvpGQkOYc9HeSjn6rcx15CPlgVcBtZ4WZJ2w==",
+ "dependencies": {
+ "@babel/template": "^7.21.9",
+ "@babel/traverse": "^7.22.1",
+ "@babel/types": "^7.22.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/highlight": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.18.6.tgz",
+ "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.18.6",
+ "chalk": "^2.0.0",
+ "js-tokens": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.22.4",
+ "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.22.4.tgz",
+ "integrity": "sha512-VLLsx06XkEYqBtE5YGPwfSGwfrjnyPP5oiGty3S8pQLFDFLaS8VwWSIxkTXpcvr5zeYLE6+MBNl2npl/YnfofA==",
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-jsx": {
+ "version": "7.21.4",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz",
+ "integrity": "sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.20.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-typescript": {
+ "version": "7.21.4",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz",
+ "integrity": "sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.20.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-typescript": {
+ "version": "7.22.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.3.tgz",
+ "integrity": "sha512-pyjnCIniO5PNaEuGxT28h0HbMru3qCVrMqVgVOz/krComdIrY9W6FCLBq9NWHY8HDGaUlan+UhmZElDENIfCcw==",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.18.6",
+ "@babel/helper-create-class-features-plugin": "^7.22.1",
+ "@babel/helper-plugin-utils": "^7.21.5",
+ "@babel/plugin-syntax-typescript": "^7.21.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/runtime": {
+ "version": "7.21.5",
+ "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.21.5.tgz",
+ "integrity": "sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==",
+ "dependencies": {
+ "regenerator-runtime": "^0.13.11"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/template": {
+ "version": "7.21.9",
+ "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.21.9.tgz",
+ "integrity": "sha512-MK0X5k8NKOuWRamiEfc3KEJiHMTkGZNUjzMipqCGDDc6ijRl/B7RGSKVGncu4Ro/HdyzzY6cmoXuKI2Gffk7vQ==",
+ "dependencies": {
+ "@babel/code-frame": "^7.21.4",
+ "@babel/parser": "^7.21.9",
+ "@babel/types": "^7.21.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.22.4",
+ "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.22.4.tgz",
+ "integrity": "sha512-Tn1pDsjIcI+JcLKq1AVlZEr4226gpuAQTsLMorsYg9tuS/kG7nuwwJ4AB8jfQuEgb/COBwR/DqJxmoiYFu5/rQ==",
+ "dependencies": {
+ "@babel/code-frame": "^7.21.4",
+ "@babel/generator": "^7.22.3",
+ "@babel/helper-environment-visitor": "^7.22.1",
+ "@babel/helper-function-name": "^7.21.0",
+ "@babel/helper-hoist-variables": "^7.18.6",
+ "@babel/helper-split-export-declaration": "^7.18.6",
+ "@babel/parser": "^7.22.4",
+ "@babel/types": "^7.22.4",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@babel/traverse/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "node_modules/@babel/types": {
+ "version": "7.22.4",
+ "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.22.4.tgz",
+ "integrity": "sha512-Tx9x3UBHTTsMSW85WB2kphxYQVvrZ/t1FxD88IpSgIjiUJlCm9z+xWIDwyo1vffTwSqteqyznB8ZE9vYYk16zA==",
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.21.5",
+ "@babel/helper-validator-identifier": "^7.19.1",
+ "to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@ctrl/tinycolor": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.6.0.tgz",
+ "integrity": "sha512-/Z3l6pXthq0JvMYdUFyX9j0MaCltlIn6mfh9jLyQwg5aPKxkyNa0PTHtU1AlFXLNk55ZuAeJRcpvq+tmLfKmaQ==",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz",
+ "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@intlify/core-base": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.2.2.tgz",
+ "integrity": "sha512-JjUpQtNfn+joMbrXvpR4hTF8iJQ2sEFzzK3KIESOx+f+uwIjgw20igOyaIdhfsVVBCds8ZM64MoeNSx+PHQMkA==",
+ "dependencies": {
+ "@intlify/devtools-if": "9.2.2",
+ "@intlify/message-compiler": "9.2.2",
+ "@intlify/shared": "9.2.2",
+ "@intlify/vue-devtools": "9.2.2"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/@intlify/devtools-if": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmmirror.com/@intlify/devtools-if/-/devtools-if-9.2.2.tgz",
+ "integrity": "sha512-4ttr/FNO29w+kBbU7HZ/U0Lzuh2cRDhP8UlWOtV9ERcjHzuyXVZmjyleESK6eVP60tGC9QtQW9yZE+JeRhDHkg==",
+ "dependencies": {
+ "@intlify/shared": "9.2.2"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/@intlify/message-compiler": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-9.2.2.tgz",
+ "integrity": "sha512-IUrQW7byAKN2fMBe8z6sK6riG1pue95e5jfokn8hA5Q3Bqy4MBJ5lJAofUsawQJYHeoPJ7svMDyBaVJ4d0GTtA==",
+ "dependencies": {
+ "@intlify/shared": "9.2.2",
+ "source-map": "0.6.1"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/@intlify/shared": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmmirror.com/@intlify/shared/-/shared-9.2.2.tgz",
+ "integrity": "sha512-wRwTpsslgZS5HNyM7uDQYZtxnbI12aGiBZURX3BTR9RFIKKRWpllTsgzHWvj3HKm3Y2Sh5LPC1r0PDCKEhVn9Q==",
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/@intlify/vue-devtools": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmmirror.com/@intlify/vue-devtools/-/vue-devtools-9.2.2.tgz",
+ "integrity": "sha512-+dUyqyCHWHb/UcvY1MlIpO87munedm3Gn6E9WWYdWrMuYLcoIoOEVDWSS8xSwtlPU+kA+MEQTP6Q1iI/ocusJg==",
+ "dependencies": {
+ "@intlify/core-base": "9.2.2",
+ "@intlify/shared": "9.2.2"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/@isaacs/cliui": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmmirror.com/@isaacs/cliui/-/cliui-8.0.2.tgz",
+ "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^5.1.2",
+ "string-width-cjs": "npm:string-width@^4.2.0",
+ "strip-ansi": "^7.0.1",
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+ "wrap-ansi": "^8.1.0",
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
+ "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
+ "dependencies": {
+ "@jridgewell/set-array": "^1.0.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
+ "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.1.2.tgz",
+ "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/source-map": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.3.tgz",
+ "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==",
+ "devOptional": true,
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.4.15",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
+ "license": "MIT"
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.18",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz",
+ "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "3.1.0",
+ "@jridgewell/sourcemap-codec": "1.4.14"
+ }
+ },
+ "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.4.14",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
+ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw=="
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@pkgjs/parseargs": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmmirror.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+ "dev": true,
+ "optional": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@rollup/pluginutils": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-5.0.2.tgz",
+ "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==",
+ "dev": true,
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "estree-walker": "^2.0.2",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^1.20.0||^2.0.0||^3.0.0"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@simonwep/pickr": {
+ "version": "1.8.2",
+ "resolved": "https://registry.npmmirror.com/@simonwep/pickr/-/pickr-1.8.2.tgz",
+ "integrity": "sha512-/l5w8BIkrpP6n1xsetx9MWPWlU6OblN5YgZZphxan0Tq4BByTCETL6lyIeY8lagalS2Nbt4F2W034KHLIiunKA==",
+ "dependencies": {
+ "core-js": "^3.15.1",
+ "nanopop": "^2.1.0"
+ }
+ },
+ "node_modules/@trysound/sax": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmmirror.com/@trysound/sax/-/sax-0.2.0.tgz",
+ "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/@types/eslint": {
+ "version": "8.40.0",
+ "resolved": "https://registry.npmmirror.com/@types/eslint/-/eslint-8.40.0.tgz",
+ "integrity": "sha512-nbq2mvc/tBrK9zQQuItvjJl++GTN5j06DaPtp3hZCpngmG6Q3xoyEmd0TwZI0gAy/G1X0zhGBbr2imsGFdFV0g==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/estree": "*",
+ "@types/json-schema": "*"
+ }
+ },
+ "node_modules/@types/eslint-scope": {
+ "version": "3.7.4",
+ "resolved": "https://registry.npmmirror.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz",
+ "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/eslint": "*",
+ "@types/estree": "*"
+ }
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.1.tgz",
+ "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==",
+ "dev": true
+ },
+ "node_modules/@types/json-schema": {
+ "version": "7.0.11",
+ "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.11.tgz",
+ "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@types/node": {
+ "version": "20.2.3",
+ "resolved": "https://registry.npmmirror.com/@types/node/-/node-20.2.3.tgz",
+ "integrity": "sha512-pg9d0yC4rVNWQzX8U7xb4olIOFuuVL9za3bzMT2pu2SU0SNEi66i2qrvhE2qt0HvkhuCaWJu7pLNOt/Pj8BIrw==",
+ "devOptional": true
+ },
+ "node_modules/@types/svgo": {
+ "version": "2.6.4",
+ "resolved": "https://registry.npmmirror.com/@types/svgo/-/svgo-2.6.4.tgz",
+ "integrity": "sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/web-bluetooth": {
+ "version": "0.0.16",
+ "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz",
+ "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ=="
+ },
+ "node_modules/@vitejs/plugin-vue": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-4.2.3.tgz",
+ "integrity": "sha512-R6JDUfiZbJA9cMiguQ7jxALsgiprjBeHL5ikpXfJCH62pPHtI+JdJ5xWj6Ev73yXSlYl86+blXn1kZHQ7uElxw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^4.0.0",
+ "vue": "^3.2.25"
+ }
+ },
+ "node_modules/@vitejs/plugin-vue-jsx": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-3.0.1.tgz",
+ "integrity": "sha512-+Jb7ggL48FSPS1uhPnJbJwWa9Sr90vQ+d0InW+AhBM22n+cfuYqJZDckBc+W3QSHe1WDvewMZfa4wZOtk5pRgw==",
+ "dependencies": {
+ "@babel/core": "^7.20.7",
+ "@babel/plugin-transform-typescript": "^7.20.7",
+ "@vue/babel-plugin-jsx": "^1.1.1"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^4.0.0",
+ "vue": "^3.0.0"
+ }
+ },
+ "node_modules/@volar/language-core": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmmirror.com/@volar/language-core/-/language-core-1.4.1.tgz",
+ "integrity": "sha512-EIY+Swv+TjsWpxOxujjMf1ZXqOjg9MT2VMXZ+1dKva0wD8W0L6EtptFFcCJdBbcKmGMFkr57Qzz9VNMWhs3jXQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@volar/source-map": "1.4.1"
+ }
+ },
+ "node_modules/@volar/source-map": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmmirror.com/@volar/source-map/-/source-map-1.4.1.tgz",
+ "integrity": "sha512-bZ46ad72dsbzuOWPUtJjBXkzSQzzSejuR3CT81+GvTEI2E994D8JPXzM3tl98zyCNnjgs4OkRyliImL1dvJ5BA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "muggle-string": "^0.2.2"
+ }
+ },
+ "node_modules/@volar/typescript": {
+ "version": "1.4.1-patch.2",
+ "resolved": "https://registry.npmmirror.com/@volar/typescript/-/typescript-1.4.1-patch.2.tgz",
+ "integrity": "sha512-lPFYaGt8OdMEzNGJJChF40uYqMO4Z/7Q9fHPQC/NRVtht43KotSXLrkPandVVMf9aPbiJ059eAT+fwHGX16k4w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@volar/language-core": "1.4.1"
+ },
+ "peerDependencies": {
+ "typescript": "*"
+ }
+ },
+ "node_modules/@volar/vue-language-core": {
+ "version": "1.6.5",
+ "resolved": "https://registry.npmmirror.com/@volar/vue-language-core/-/vue-language-core-1.6.5.tgz",
+ "integrity": "sha512-IF2b6hW4QAxfsLd5mePmLgtkXzNi+YnH6ltCd80gb7+cbdpFMjM1I+w+nSg2kfBTyfu+W8useCZvW89kPTBpzg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@volar/language-core": "1.4.1",
+ "@volar/source-map": "1.4.1",
+ "@vue/compiler-dom": "^3.3.0",
+ "@vue/compiler-sfc": "^3.3.0",
+ "@vue/reactivity": "^3.3.0",
+ "@vue/shared": "^3.3.0",
+ "minimatch": "^9.0.0",
+ "muggle-string": "^0.2.2",
+ "vue-template-compiler": "^2.7.14"
+ }
+ },
+ "node_modules/@volar/vue-typescript": {
+ "version": "1.6.5",
+ "resolved": "https://registry.npmmirror.com/@volar/vue-typescript/-/vue-typescript-1.6.5.tgz",
+ "integrity": "sha512-er9rVClS4PHztMUmtPMDTl+7c7JyrxweKSAEe/o/Noeq2bQx6v3/jZHVHBe8ZNUti5ubJL/+Tg8L3bzmlalV8A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@volar/typescript": "1.4.1-patch.2",
+ "@volar/vue-language-core": "1.6.5"
+ },
+ "peerDependencies": {
+ "typescript": "*"
+ }
+ },
+ "node_modules/@vue-macros/common": {
+ "version": "0.13.8",
+ "resolved": "https://registry.npmmirror.com/@vue-macros/common/-/common-0.13.8.tgz",
+ "integrity": "sha512-Fs8PNCR117MpR4MQYLupG6qary3n6ZKIkuuaJbmYJ+n3QUiO9LmBs1GgF9L+RQ+M4UDdfuk7LbvZwnWJ89MABA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.20.7",
+ "@vue/compiler-sfc": "^3.2.45",
+ "local-pkg": "^0.4.2",
+ "magic-string": "^0.27.0"
+ },
+ "engines": {
+ "node": ">=14.19.0"
+ },
+ "peerDependencies": {
+ "vue": "^2.7.0 || ^3.2.25"
+ },
+ "peerDependenciesMeta": {
+ "vue": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vue-macros/common/node_modules/magic-string": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.27.0.tgz",
+ "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.4.13"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@vue/babel-helper-vue-transform-on": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz",
+ "integrity": "sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA=="
+ },
+ "node_modules/@vue/babel-plugin-jsx": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.1.tgz",
+ "integrity": "sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.0.0",
+ "@babel/plugin-syntax-jsx": "^7.0.0",
+ "@babel/template": "^7.0.0",
+ "@babel/traverse": "^7.0.0",
+ "@babel/types": "^7.0.0",
+ "@vue/babel-helper-vue-transform-on": "^1.0.2",
+ "camelcase": "^6.0.0",
+ "html-tags": "^3.1.0",
+ "svg-tags": "^1.0.0"
+ }
+ },
+ "node_modules/@vue/compiler-core": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.3.4.tgz",
+ "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.21.3",
+ "@vue/shared": "3.3.4",
+ "estree-walker": "^2.0.2",
+ "source-map-js": "^1.0.2"
+ }
+ },
+ "node_modules/@vue/compiler-dom": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz",
+ "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-core": "3.3.4",
+ "@vue/shared": "3.3.4"
+ }
+ },
+ "node_modules/@vue/compiler-sfc": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz",
+ "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.20.15",
+ "@vue/compiler-core": "3.3.4",
+ "@vue/compiler-dom": "3.3.4",
+ "@vue/compiler-ssr": "3.3.4",
+ "@vue/reactivity-transform": "3.3.4",
+ "@vue/shared": "3.3.4",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.0",
+ "postcss": "^8.1.10",
+ "source-map-js": "^1.0.2"
+ }
+ },
+ "node_modules/@vue/compiler-ssr": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz",
+ "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-dom": "3.3.4",
+ "@vue/shared": "3.3.4"
+ }
+ },
+ "node_modules/@vue/devtools-api": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.5.0.tgz",
+ "integrity": "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==",
+ "license": "MIT"
+ },
+ "node_modules/@vue/reactivity": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.3.4.tgz",
+ "integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/shared": "3.3.4"
+ }
+ },
+ "node_modules/@vue/reactivity-transform": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz",
+ "integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.20.15",
+ "@vue/compiler-core": "3.3.4",
+ "@vue/shared": "3.3.4",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.0"
+ }
+ },
+ "node_modules/@vue/runtime-core": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.3.4.tgz",
+ "integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/reactivity": "3.3.4",
+ "@vue/shared": "3.3.4"
+ }
+ },
+ "node_modules/@vue/runtime-dom": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz",
+ "integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/runtime-core": "3.3.4",
+ "@vue/shared": "3.3.4",
+ "csstype": "^3.1.1"
+ }
+ },
+ "node_modules/@vue/server-renderer": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.3.4.tgz",
+ "integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-ssr": "3.3.4",
+ "@vue/shared": "3.3.4"
+ },
+ "peerDependencies": {
+ "vue": "3.3.4"
+ }
+ },
+ "node_modules/@vue/shared": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.3.4.tgz",
+ "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==",
+ "license": "MIT"
+ },
+ "node_modules/@vueuse/core": {
+ "version": "9.6.0",
+ "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-9.6.0.tgz",
+ "integrity": "sha512-qGUcjKQXHgN+jqXEgpeZGoxdCbIDCdVPz3QiF1uyecVGbMuM63o96I1GjYx5zskKgRI0FKSNsVWM7rwrRMTf6A==",
+ "dependencies": {
+ "@types/web-bluetooth": "^0.0.16",
+ "@vueuse/metadata": "9.6.0",
+ "@vueuse/shared": "9.6.0",
+ "vue-demi": "*"
+ }
+ },
+ "node_modules/@vueuse/core/node_modules/vue-demi": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.5.tgz",
+ "integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==",
+ "hasInstallScript": true,
+ "bin": {
+ "vue-demi-fix": "bin/vue-demi-fix.js",
+ "vue-demi-switch": "bin/vue-demi-switch.js"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "peerDependencies": {
+ "@vue/composition-api": "^1.0.0-rc.1",
+ "vue": "^3.0.0-0 || ^2.6.0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vueuse/metadata": {
+ "version": "9.6.0",
+ "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.6.0.tgz",
+ "integrity": "sha512-sIC8R+kWkIdpi5X2z2Gk8TRYzmczDwHRhEFfCu2P+XW2JdPoXrziqsGpDDsN7ykBx4ilwieS7JUIweVGhvZ93w=="
+ },
+ "node_modules/@vueuse/shared": {
+ "version": "9.6.0",
+ "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.6.0.tgz",
+ "integrity": "sha512-/eDchxYYhkHnFyrb00t90UfjCx94kRHxc7J1GtBCqCG4HyPMX+krV9XJgVtWIsAMaxKVU4fC8NSUviG1JkwhUQ==",
+ "dependencies": {
+ "vue-demi": "*"
+ }
+ },
+ "node_modules/@vueuse/shared/node_modules/vue-demi": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.5.tgz",
+ "integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==",
+ "hasInstallScript": true,
+ "bin": {
+ "vue-demi-fix": "bin/vue-demi-fix.js",
+ "vue-demi-switch": "bin/vue-demi-switch.js"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "peerDependencies": {
+ "@vue/composition-api": "^1.0.0-rc.1",
+ "vue": "^3.0.0-0 || ^2.6.0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@webassemblyjs/ast": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.11.6.tgz",
+ "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/helper-numbers": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6"
+ }
+ },
+ "node_modules/@webassemblyjs/floating-point-hex-parser": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz",
+ "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/helper-api-error": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz",
+ "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/helper-buffer": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz",
+ "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/helper-numbers": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz",
+ "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/floating-point-hex-parser": "1.11.6",
+ "@webassemblyjs/helper-api-error": "1.11.6",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@webassemblyjs/helper-wasm-bytecode": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz",
+ "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/helper-wasm-section": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz",
+ "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/helper-buffer": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/wasm-gen": "1.11.6"
+ }
+ },
+ "node_modules/@webassemblyjs/ieee754": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz",
+ "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@xtuc/ieee754": "^1.2.0"
+ }
+ },
+ "node_modules/@webassemblyjs/leb128": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz",
+ "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@webassemblyjs/utf8": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz",
+ "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/wasm-edit": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz",
+ "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/helper-buffer": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/helper-wasm-section": "1.11.6",
+ "@webassemblyjs/wasm-gen": "1.11.6",
+ "@webassemblyjs/wasm-opt": "1.11.6",
+ "@webassemblyjs/wasm-parser": "1.11.6",
+ "@webassemblyjs/wast-printer": "1.11.6"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-gen": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz",
+ "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/ieee754": "1.11.6",
+ "@webassemblyjs/leb128": "1.11.6",
+ "@webassemblyjs/utf8": "1.11.6"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-opt": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz",
+ "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/helper-buffer": "1.11.6",
+ "@webassemblyjs/wasm-gen": "1.11.6",
+ "@webassemblyjs/wasm-parser": "1.11.6"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-parser": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz",
+ "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/helper-api-error": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/ieee754": "1.11.6",
+ "@webassemblyjs/leb128": "1.11.6",
+ "@webassemblyjs/utf8": "1.11.6"
+ }
+ },
+ "node_modules/@webassemblyjs/wast-printer": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz",
+ "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.11.6",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@windicss/config": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@windicss/config/-/config-1.9.0.tgz",
+ "integrity": "sha512-QO4+udbmDIgZwAi89tqUt5nGwBq3IgyELjLn83twZXiIqzOw+77ecCuM0oPSbzWmIbCqXq3wRQHd6Z1u5E/5zQ==",
+ "dependencies": {
+ "debug": "^4.3.4",
+ "jiti": "^1.18.2",
+ "windicss": "^3.5.6"
+ }
+ },
+ "node_modules/@windicss/config/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@windicss/config/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "node_modules/@windicss/plugin-utils": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@windicss/plugin-utils/-/plugin-utils-1.9.0.tgz",
+ "integrity": "sha512-omAacM5ExIr9XBUI2z47CyCXJBke4imJZqXW41YgHhRLbahTngbScFk5yxa6dXivDXUpUKqasOPXBJgA4bhHCg==",
+ "dependencies": {
+ "@antfu/utils": "^0.7.2",
+ "@windicss/config": "1.9.0",
+ "debug": "^4.3.4",
+ "fast-glob": "^3.2.12",
+ "magic-string": "^0.30.0",
+ "micromatch": "^4.0.5",
+ "windicss": "^3.5.6"
+ }
+ },
+ "node_modules/@windicss/plugin-utils/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@windicss/plugin-utils/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "node_modules/@xtuc/ieee754": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
+ "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@xtuc/long": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmmirror.com/@xtuc/long/-/long-4.2.2.tgz",
+ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/acorn": {
+ "version": "8.8.2",
+ "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.8.2.tgz",
+ "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==",
+ "devOptional": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-import-assertions": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz",
+ "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==",
+ "dev": true,
+ "peer": true,
+ "peerDependencies": {
+ "acorn": "^8"
+ }
+ },
+ "node_modules/adler-32": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmmirror.com/adler-32/-/adler-32-1.3.1.tgz",
+ "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==",
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "node_modules/ajv-keywords": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+ "dev": true,
+ "peer": true,
+ "peerDependencies": {
+ "ajv": "^6.9.1"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/ant-design-vue": {
+ "version": "3.2.20",
+ "resolved": "https://registry.npmmirror.com/ant-design-vue/-/ant-design-vue-3.2.20.tgz",
+ "integrity": "sha512-YWpMfGaGoRastIXEYfCoJiaRiDHk4chqtYhlKQM5GqPt6NfvrM1Vg2e60yHtjxlZjed91wCMm0rAmyUr7Hwzdg==",
+ "dependencies": {
+ "@ant-design/colors": "^6.0.0",
+ "@ant-design/icons-vue": "^6.1.0",
+ "@babel/runtime": "^7.10.5",
+ "@ctrl/tinycolor": "^3.4.0",
+ "@simonwep/pickr": "~1.8.0",
+ "array-tree-filter": "^2.1.0",
+ "async-validator": "^4.0.0",
+ "dayjs": "^1.10.5",
+ "dom-align": "^1.12.1",
+ "dom-scroll-into-view": "^2.0.0",
+ "lodash": "^4.17.21",
+ "lodash-es": "^4.17.15",
+ "resize-observer-polyfill": "^1.5.1",
+ "scroll-into-view-if-needed": "^2.2.25",
+ "shallow-equal": "^1.0.0",
+ "vue-types": "^3.0.0",
+ "warning": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=12.22.0"
+ },
+ "peerDependencies": {
+ "vue": ">=3.2.0"
+ }
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "dev": true,
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/arr-flatten": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/arr-flatten/-/arr-flatten-1.1.0.tgz",
+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/arr-union": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/arr-union/-/arr-union-3.1.0.tgz",
+ "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/array-tree-filter": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/array-tree-filter/-/array-tree-filter-2.1.0.tgz",
+ "integrity": "sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw=="
+ },
+ "node_modules/array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmmirror.com/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/assign-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/assign-symbols/-/assign-symbols-1.0.0.tgz",
+ "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ast-walker-scope": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmmirror.com/ast-walker-scope/-/ast-walker-scope-0.3.1.tgz",
+ "integrity": "sha512-c+tWaEoA+b4yJp0NUI8/hYKUv1ELqpCMU/fogGazXxu7EXlry37q1wdfhaQqVmQn4l4agMeo4ek76LyKFIxkKA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/parser": "^7.20.5",
+ "@babel/types": "^7.20.5"
+ },
+ "engines": {
+ "node": ">=14.19.0"
+ }
+ },
+ "node_modules/async-validator": {
+ "version": "4.2.5",
+ "resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz",
+ "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg=="
+ },
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+ "license": "MIT"
+ },
+ "node_modules/atob": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/atob/-/atob-2.1.2.tgz",
+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
+ "dev": true,
+ "bin": {
+ "atob": "bin/atob.js"
+ },
+ "engines": {
+ "node": ">= 4.5.0"
+ }
+ },
+ "node_modules/axios": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/axios/-/axios-1.4.0.tgz",
+ "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==",
+ "license": "MIT",
+ "dependencies": {
+ "follow-redirects": "^1.15.0",
+ "form-data": "^4.0.0",
+ "proxy-from-env": "^1.1.0"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/base": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npmmirror.com/base/-/base-0.11.2.tgz",
+ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+ "dev": true,
+ "dependencies": {
+ "cache-base": "^1.0.1",
+ "class-utils": "^0.3.5",
+ "component-emitter": "^1.2.1",
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.1",
+ "mixin-deep": "^1.2.0",
+ "pascalcase": "^0.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/base/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/big.js": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmmirror.com/big.js/-/big.js-5.2.2.tgz",
+ "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/binary-extensions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz",
+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/bluebird": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmmirror.com/bluebird/-/bluebird-3.7.2.tgz",
+ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
+ "dev": true
+ },
+ "node_modules/boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+ "dev": true
+ },
+ "node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dependencies": {
+ "fill-range": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/browserslist": {
+ "version": "4.21.5",
+ "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.21.5.tgz",
+ "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
+ "dependencies": {
+ "caniuse-lite": "^1.0.30001449",
+ "electron-to-chromium": "^1.4.284",
+ "node-releases": "^2.0.8",
+ "update-browserslist-db": "^1.0.10"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "devOptional": true
+ },
+ "node_modules/cache-base": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/cache-base/-/cache-base-1.0.1.tgz",
+ "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
+ "dev": true,
+ "dependencies": {
+ "collection-visit": "^1.0.0",
+ "component-emitter": "^1.2.1",
+ "get-value": "^2.0.6",
+ "has-value": "^1.0.0",
+ "isobject": "^3.0.1",
+ "set-value": "^2.0.0",
+ "to-object-path": "^0.3.0",
+ "union-value": "^1.0.0",
+ "unset-value": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/cache-base/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.2.tgz",
+ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "dependencies": {
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.0.2"
+ }
+ },
+ "node_modules/camelcase": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-6.3.0.tgz",
+ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001489",
+ "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001489.tgz",
+ "integrity": "sha512-x1mgZEXK8jHIfAxm+xgdpHpk50IN3z3q3zP261/WS+uvePxW8izXuCu6AHz0lkuYTlATDehiZ/tNyYBdSQsOUQ=="
+ },
+ "node_modules/cfb": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmmirror.com/cfb/-/cfb-1.2.2.tgz",
+ "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==",
+ "dependencies": {
+ "adler-32": "~1.3.0",
+ "crc-32": "~1.2.0"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/chalk/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/chalk/node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/chokidar": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz",
+ "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+ "dev": true,
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/chrome-trace-event": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
+ "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=6.0"
+ }
+ },
+ "node_modules/class-utils": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmmirror.com/class-utils/-/class-utils-0.3.6.tgz",
+ "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
+ "dev": true,
+ "dependencies": {
+ "arr-union": "^3.1.0",
+ "define-property": "^0.2.5",
+ "isobject": "^3.0.0",
+ "static-extend": "^0.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/class-utils/node_modules/define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dev": true,
+ "dependencies": {
+ "is-descriptor": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/class-utils/node_modules/is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/class-utils/node_modules/is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/class-utils/node_modules/is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "dependencies": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/class-utils/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/clone": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/clone/-/clone-2.1.2.tgz",
+ "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/codepage": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmmirror.com/codepage/-/codepage-1.15.0.tgz",
+ "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==",
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/collection-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/collection-visit/-/collection-visit-1.0.0.tgz",
+ "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==",
+ "dev": true,
+ "dependencies": {
+ "map-visit": "^1.0.0",
+ "object-visit": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
+ },
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "license": "MIT",
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "devOptional": true
+ },
+ "node_modules/component-emitter": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/component-emitter/-/component-emitter-1.3.0.tgz",
+ "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
+ "dev": true
+ },
+ "node_modules/compute-scroll-into-view": {
+ "version": "1.0.20",
+ "resolved": "https://registry.npmmirror.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz",
+ "integrity": "sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg=="
+ },
+ "node_modules/convert-source-map": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-1.9.0.tgz",
+ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A=="
+ },
+ "node_modules/copy-anything": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmmirror.com/copy-anything/-/copy-anything-2.0.6.tgz",
+ "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==",
+ "devOptional": true,
+ "dependencies": {
+ "is-what": "^3.14.1"
+ }
+ },
+ "node_modules/copy-descriptor": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmmirror.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
+ "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/core-js": {
+ "version": "3.30.2",
+ "resolved": "https://registry.npmmirror.com/core-js/-/core-js-3.30.2.tgz",
+ "integrity": "sha512-uBJiDmwqsbJCWHAwjrx3cvjbMXP7xD72Dmsn5LOJpiRmE3WbBbN5rCqQ2Qh6Ek6/eOrjlWngEynBWo4VxerQhg==",
+ "hasInstallScript": true
+ },
+ "node_modules/cors": {
+ "version": "2.8.5",
+ "resolved": "https://registry.npmmirror.com/cors/-/cors-2.8.5.tgz",
+ "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
+ "dev": true,
+ "dependencies": {
+ "object-assign": "^4",
+ "vary": "^1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/crc-32": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmmirror.com/crc-32/-/crc-32-1.2.2.tgz",
+ "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==",
+ "bin": {
+ "crc32": "bin/crc32.njs"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/css-select": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/css-select/-/css-select-4.3.0.tgz",
+ "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
+ "dev": true,
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-what": "^6.0.1",
+ "domhandler": "^4.3.1",
+ "domutils": "^2.8.0",
+ "nth-check": "^2.0.1"
+ }
+ },
+ "node_modules/css-select/node_modules/dom-serializer": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz",
+ "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.2.0",
+ "entities": "^2.0.0"
+ }
+ },
+ "node_modules/css-select/node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "dev": true
+ },
+ "node_modules/css-select/node_modules/domhandler": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmmirror.com/domhandler/-/domhandler-4.3.1.tgz",
+ "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": "^2.2.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/css-select/node_modules/domutils": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz",
+ "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
+ "dev": true,
+ "dependencies": {
+ "dom-serializer": "^1.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0"
+ }
+ },
+ "node_modules/css-select/node_modules/entities": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/entities/-/entities-2.2.0.tgz",
+ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
+ "dev": true
+ },
+ "node_modules/css-tree": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmmirror.com/css-tree/-/css-tree-1.1.3.tgz",
+ "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
+ "dev": true,
+ "dependencies": {
+ "mdn-data": "2.0.14",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/css-what": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmmirror.com/css-what/-/css-what-6.1.0.tgz",
+ "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/csso": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmmirror.com/csso/-/csso-4.2.0.tgz",
+ "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==",
+ "dev": true,
+ "dependencies": {
+ "css-tree": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/csstype": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.2.tgz",
+ "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==",
+ "license": "MIT"
+ },
+ "node_modules/dayjs": {
+ "version": "1.11.7",
+ "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.7.tgz",
+ "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ=="
+ },
+ "node_modules/de-indent": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz",
+ "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "optional": true,
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/decode-uri-component": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmmirror.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
+ "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
+ "dev": true,
+ "dependencies": {
+ "is-descriptor": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/dom-align": {
+ "version": "1.12.4",
+ "resolved": "https://registry.npmmirror.com/dom-align/-/dom-align-1.12.4.tgz",
+ "integrity": "sha512-R8LUSEay/68zE5c8/3BDxiTEvgb4xZTF0RKmAHfiEVN3klfIpXfi2/QCoiWPccVQ0J/ZGdz9OjzL4uJEP/MRAw=="
+ },
+ "node_modules/dom-scroll-into-view": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/dom-scroll-into-view/-/dom-scroll-into-view-2.0.1.tgz",
+ "integrity": "sha512-bvVTQe1lfaUr1oFzZX80ce9KLDlZ3iU+XGNE/bz9HnGdklTieqsbmsLHe+rT2XWqopvL0PckkYqN7ksmm5pe3w=="
+ },
+ "node_modules/dom-serializer": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-0.2.2.tgz",
+ "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "entities": "^2.0.0"
+ }
+ },
+ "node_modules/dom-serializer/node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "dev": true
+ },
+ "node_modules/dom-serializer/node_modules/entities": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/entities/-/entities-2.2.0.tgz",
+ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
+ "dev": true
+ },
+ "node_modules/domelementtype": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-1.3.1.tgz",
+ "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
+ "dev": true
+ },
+ "node_modules/domhandler": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmmirror.com/domhandler/-/domhandler-2.4.2.tgz",
+ "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": "1"
+ }
+ },
+ "node_modules/domutils": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmmirror.com/domutils/-/domutils-1.7.0.tgz",
+ "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
+ "dev": true,
+ "dependencies": {
+ "dom-serializer": "0",
+ "domelementtype": "1"
+ }
+ },
+ "node_modules/eastasianwidth": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmmirror.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+ "dev": true
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.4.407",
+ "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.407.tgz",
+ "integrity": "sha512-5smEvFSFYMv90tICOzRVP7Opp98DAC4KW7RRipg3BuNpGbbV3N+x24Zh3sbLb1T5haGtOSy/hrBfXsWnIM9aCg=="
+ },
+ "node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "dev": true
+ },
+ "node_modules/emojis-list": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/emojis-list/-/emojis-list-3.0.0.tgz",
+ "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/enhanced-resolve": {
+ "version": "5.14.1",
+ "resolved": "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.14.1.tgz",
+ "integrity": "sha512-Vklwq2vDKtl0y/vtwjSesgJ5MYS7Etuk5txS8VdKL4AOS1aUlD96zqIfsOSLQsdv3xgMRbtkWM8eG9XDfKUPow==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/entities": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/entities/-/entities-1.1.2.tgz",
+ "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==",
+ "dev": true
+ },
+ "node_modules/errno": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz",
+ "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
+ "optional": true,
+ "dependencies": {
+ "prr": "~1.0.1"
+ },
+ "bin": {
+ "errno": "cli.js"
+ }
+ },
+ "node_modules/es-module-lexer": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.2.1.tgz",
+ "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/esbuild": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.17.19.tgz",
+ "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "optionalDependencies": {
+ "@esbuild/android-arm": "0.17.19",
+ "@esbuild/android-arm64": "0.17.19",
+ "@esbuild/android-x64": "0.17.19",
+ "@esbuild/darwin-arm64": "0.17.19",
+ "@esbuild/darwin-x64": "0.17.19",
+ "@esbuild/freebsd-arm64": "0.17.19",
+ "@esbuild/freebsd-x64": "0.17.19",
+ "@esbuild/linux-arm": "0.17.19",
+ "@esbuild/linux-arm64": "0.17.19",
+ "@esbuild/linux-ia32": "0.17.19",
+ "@esbuild/linux-loong64": "0.17.19",
+ "@esbuild/linux-mips64el": "0.17.19",
+ "@esbuild/linux-ppc64": "0.17.19",
+ "@esbuild/linux-riscv64": "0.17.19",
+ "@esbuild/linux-s390x": "0.17.19",
+ "@esbuild/linux-x64": "0.17.19",
+ "@esbuild/netbsd-x64": "0.17.19",
+ "@esbuild/openbsd-x64": "0.17.19",
+ "@esbuild/sunos-x64": "0.17.19",
+ "@esbuild/win32-arm64": "0.17.19",
+ "@esbuild/win32-ia32": "0.17.19",
+ "@esbuild/win32-x64": "0.17.19"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/eslint-scope": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz",
+ "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esrecurse/node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+ "license": "MIT"
+ },
+ "node_modules/etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/events": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmmirror.com/events/-/events-3.3.0.tgz",
+ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=0.8.x"
+ }
+ },
+ "node_modules/expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmmirror.com/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^2.3.3",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "posix-character-classes": "^0.1.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/expand-brackets/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/expand-brackets/node_modules/define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dev": true,
+ "dependencies": {
+ "is-descriptor": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/expand-brackets/node_modules/is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/expand-brackets/node_modules/is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/expand-brackets/node_modules/is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "dependencies": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/expand-brackets/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dev": true,
+ "dependencies": {
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "dev": true,
+ "dependencies": {
+ "array-unique": "^0.3.2",
+ "define-property": "^1.0.0",
+ "expand-brackets": "^2.1.4",
+ "extend-shallow": "^2.0.1",
+ "fragment-cache": "^0.2.1",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/fast-glob": {
+ "version": "3.2.12",
+ "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.2.12.tgz",
+ "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/fastq": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.15.0.tgz",
+ "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/file-saver": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/file-saver/-/file-saver-2.0.5.tgz",
+ "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA=="
+ },
+ "node_modules/fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/follow-redirects": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.2.tgz",
+ "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/RubenVerborgh"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/foreground-child": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/foreground-child/-/foreground-child-3.1.1.tgz",
+ "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.0",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/form-data": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz",
+ "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+ "license": "MIT",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/frac": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/frac/-/frac-1.1.2.tgz",
+ "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==",
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/fragment-cache": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/fragment-cache/-/fragment-cache-0.2.1.tgz",
+ "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==",
+ "dev": true,
+ "dependencies": {
+ "map-cache": "^0.2.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/fs-extra": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz",
+ "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz",
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+ },
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz",
+ "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==",
+ "dependencies": {
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3"
+ }
+ },
+ "node_modules/get-value": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmmirror.com/get-value/-/get-value-2.0.6.tgz",
+ "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/glob": {
+ "version": "10.2.7",
+ "resolved": "https://registry.npmmirror.com/glob/-/glob-10.2.7.tgz",
+ "integrity": "sha512-jTKehsravOJo8IJxUGfZILnkvVJM/MOfHRs8QcXolVef2zNI9Tqyy5+SeuOAZd3upViEZQLyFpQhYiHLrMUNmA==",
+ "dev": true,
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^2.0.3",
+ "minimatch": "^9.0.1",
+ "minipass": "^5.0.0 || ^6.0.2",
+ "path-scurry": "^1.7.0"
+ },
+ "bin": {
+ "glob": "dist/cjs/src/bin.js"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/glob-to-regexp": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmmirror.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
+ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/globrex": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmmirror.com/globrex/-/globrex-0.1.2.tgz",
+ "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==",
+ "dev": true
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "devOptional": true
+ },
+ "node_modules/has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dependencies": {
+ "function-bind": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.1.tgz",
+ "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/has-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/has-value/-/has-value-1.0.0.tgz",
+ "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==",
+ "dev": true,
+ "dependencies": {
+ "get-value": "^2.0.6",
+ "has-values": "^1.0.0",
+ "isobject": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/has-value/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/has-values": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/has-values/-/has-values-1.0.0.tgz",
+ "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==",
+ "dev": true,
+ "dependencies": {
+ "is-number": "^3.0.0",
+ "kind-of": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/has-values/node_modules/is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/has-values/node_modules/is-number/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/has-values/node_modules/kind-of": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-4.0.0.tgz",
+ "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/he": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz",
+ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "he": "bin/he"
+ }
+ },
+ "node_modules/html-tags": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/html-tags/-/html-tags-3.3.1.tgz",
+ "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/htmlparser2": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-3.10.1.tgz",
+ "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": "^1.3.1",
+ "domhandler": "^2.3.0",
+ "domutils": "^1.5.1",
+ "entities": "^1.1.1",
+ "inherits": "^2.0.1",
+ "readable-stream": "^3.1.1"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "optional": true,
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/image-size": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz",
+ "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==",
+ "devOptional": true,
+ "bin": {
+ "image-size": "bin/image-size.js"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "node_modules/is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-accessor-descriptor/node_modules/kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "dev": true,
+ "dependencies": {
+ "binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "node_modules/is-core-module": {
+ "version": "2.12.1",
+ "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.12.1.tgz",
+ "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==",
+ "dev": true,
+ "dependencies": {
+ "has": "^1.0.3"
+ }
+ },
+ "node_modules/is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-data-descriptor/node_modules/kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "dependencies": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-descriptor/node_modules/kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-plain-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+ "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-plain-object": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-3.0.1.tgz",
+ "integrity": "sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-what": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz",
+ "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==",
+ "devOptional": true
+ },
+ "node_modules/is-windows": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "dev": true
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true
+ },
+ "node_modules/isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==",
+ "dev": true,
+ "dependencies": {
+ "isarray": "1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/jackspeak": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/jackspeak/-/jackspeak-2.2.1.tgz",
+ "integrity": "sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==",
+ "dev": true,
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
+ "node_modules/jest-worker": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-worker/-/jest-worker-27.5.1.tgz",
+ "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/node": "*",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^8.0.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/jiti": {
+ "version": "1.18.2",
+ "resolved": "https://registry.npmmirror.com/jiti/-/jiti-1.18.2.tgz",
+ "integrity": "sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==",
+ "bin": {
+ "jiti": "bin/jiti.js"
+ }
+ },
+ "node_modules/js-base64": {
+ "version": "2.6.4",
+ "resolved": "https://registry.npmmirror.com/js-base64/-/js-base64-2.6.4.tgz",
+ "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==",
+ "dev": true
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+ },
+ "node_modules/jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "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==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dev": true,
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/klona": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmmirror.com/klona/-/klona-2.0.6.tgz",
+ "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/kolorist": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmmirror.com/kolorist/-/kolorist-1.8.0.tgz",
+ "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ=="
+ },
+ "node_modules/less": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmmirror.com/less/-/less-4.1.3.tgz",
+ "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==",
+ "devOptional": true,
+ "dependencies": {
+ "copy-anything": "^2.0.1",
+ "parse-node-version": "^1.0.1",
+ "tslib": "^2.3.0"
+ },
+ "bin": {
+ "lessc": "bin/lessc"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "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"
+ }
+ },
+ "node_modules/less-loader": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmmirror.com/less-loader/-/less-loader-11.1.0.tgz",
+ "integrity": "sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==",
+ "dev": true,
+ "dependencies": {
+ "klona": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 14.15.0"
+ },
+ "peerDependencies": {
+ "less": "^3.5.0 || ^4.0.0",
+ "webpack": "^5.0.0"
+ }
+ },
+ "node_modules/loader-runner": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/loader-runner/-/loader-runner-4.3.0.tgz",
+ "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=6.11.5"
+ }
+ },
+ "node_modules/loader-utils": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.2.tgz",
+ "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==",
+ "dev": true,
+ "dependencies": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/loader-utils/node_modules/json5": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.2.tgz",
+ "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
+ "node_modules/local-pkg": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmmirror.com/local-pkg/-/local-pkg-0.4.3.tgz",
+ "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+ },
+ "node_modules/lodash-es": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz",
+ "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
+ },
+ "node_modules/loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "dependencies": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ },
+ "bin": {
+ "loose-envify": "cli.js"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/magic-string": {
+ "version": "0.30.0",
+ "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.0.tgz",
+ "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.4.13"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/make-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz",
+ "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+ "optional": true,
+ "dependencies": {
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/make-dir/node_modules/semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "optional": true,
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/map-cache": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmmirror.com/map-cache/-/map-cache-0.2.2.tgz",
+ "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/map-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/map-visit/-/map-visit-1.0.0.tgz",
+ "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==",
+ "dev": true,
+ "dependencies": {
+ "object-visit": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/mdn-data": {
+ "version": "2.0.14",
+ "resolved": "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.14.tgz",
+ "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==",
+ "dev": true
+ },
+ "node_modules/merge-options": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/merge-options/-/merge-options-1.0.1.tgz",
+ "integrity": "sha512-iuPV41VWKWBIOpBsjoxjDZw8/GbSfZ2mk7N1453bwMrfzdrIk7EzBd+8UVR6rkw67th7xnk9Dytl3J+lHPdxvg==",
+ "dev": true,
+ "dependencies": {
+ "is-plain-obj": "^1.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "dev": true
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz",
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "dependencies": {
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "optional": true,
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.1.tgz",
+ "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "dev": true
+ },
+ "node_modules/minipass": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmmirror.com/minipass/-/minipass-6.0.2.tgz",
+ "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==",
+ "dev": true,
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/mixin-deep": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmmirror.com/mixin-deep/-/mixin-deep-1.3.2.tgz",
+ "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
+ "dev": true,
+ "dependencies": {
+ "for-in": "^1.0.2",
+ "is-extendable": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/mixin-deep/node_modules/is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "dependencies": {
+ "is-plain-object": "^2.0.4"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/mixin-deep/node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/mixin-deep/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "optional": true
+ },
+ "node_modules/muggle-string": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmmirror.com/muggle-string/-/muggle-string-0.2.2.tgz",
+ "integrity": "sha512-YVE1mIJ4VpUMqZObFndk9CJu6DBJR/GB13p3tXuNbwD4XExaI5EOuRl6BHeIDxIqXZVxSfAC+y6U1Z/IxCfKUg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.6.tgz",
+ "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/nanomatch": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmmirror.com/nanomatch/-/nanomatch-1.2.13.tgz",
+ "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
+ "dev": true,
+ "dependencies": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "fragment-cache": "^0.2.1",
+ "is-windows": "^1.0.2",
+ "kind-of": "^6.0.2",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/nanomatch/node_modules/define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-2.0.2.tgz",
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "dev": true,
+ "dependencies": {
+ "is-descriptor": "^1.0.2",
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/nanomatch/node_modules/extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+ "dev": true,
+ "dependencies": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/nanomatch/node_modules/is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "dependencies": {
+ "is-plain-object": "^2.0.4"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/nanomatch/node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/nanomatch/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/nanomatch/node_modules/kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/nanopop": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/nanopop/-/nanopop-2.3.0.tgz",
+ "integrity": "sha512-fzN+T2K7/Ah25XU02MJkPZ5q4Tj5FpjmIYq4rvoHX4yb16HzFdCO6JxFFn5Y/oBhQ8no8fUZavnyIv9/+xkBBw=="
+ },
+ "node_modules/needle": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmmirror.com/needle/-/needle-3.2.0.tgz",
+ "integrity": "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==",
+ "optional": true,
+ "dependencies": {
+ "debug": "^3.2.6",
+ "iconv-lite": "^0.6.3",
+ "sax": "^1.2.4"
+ },
+ "bin": {
+ "needle": "bin/needle"
+ },
+ "engines": {
+ "node": ">= 4.4.x"
+ }
+ },
+ "node_modules/neo-async": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz",
+ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.12",
+ "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.12.tgz",
+ "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ=="
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/nprogress": {
+ "version": "1.0.0-1",
+ "resolved": "https://registry.npmmirror.com/nprogress/-/nprogress-1.0.0-1.tgz",
+ "integrity": "sha512-Gr/Km0nIMbR7hOB0fjGx7nR0oRjTy9M61dXiQL5bfTBq0cQ+hNgt6gxE062j7Bxm+L/IjNVOr41iu2hrDeuedw==",
+ "dev": true
+ },
+ "node_modules/nth-check": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz",
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "dev": true,
+ "dependencies": {
+ "boolbase": "^1.0.0"
+ }
+ },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-copy": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmmirror.com/object-copy/-/object-copy-0.1.0.tgz",
+ "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==",
+ "dev": true,
+ "dependencies": {
+ "copy-descriptor": "^0.1.0",
+ "define-property": "^0.2.5",
+ "kind-of": "^3.0.3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-copy/node_modules/define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dev": true,
+ "dependencies": {
+ "is-descriptor": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-copy/node_modules/is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-copy/node_modules/is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-copy/node_modules/is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "dependencies": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-copy/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.12.3",
+ "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.12.3.tgz",
+ "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g=="
+ },
+ "node_modules/object-visit": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/object-visit/-/object-visit-1.0.1.tgz",
+ "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==",
+ "dev": true,
+ "dependencies": {
+ "isobject": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-visit/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object.pick": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/object.pick/-/object.pick-1.3.0.tgz",
+ "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==",
+ "dev": true,
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object.pick/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/parse-node-version": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/parse-node-version/-/parse-node-version-1.0.1.tgz",
+ "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==",
+ "devOptional": true,
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/pascalcase": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmmirror.com/pascalcase/-/pascalcase-0.1.1.tgz",
+ "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true
+ },
+ "node_modules/path-scurry": {
+ "version": "1.9.2",
+ "resolved": "https://registry.npmmirror.com/path-scurry/-/path-scurry-1.9.2.tgz",
+ "integrity": "sha512-qSDLy2aGFPm8i4rsbHd4MNyTcrzHFsLQykrtbuGRknZZCBBVXSv2tSCDN2Cg6Rt/GFRw8GoW9y9Ecw5rIPG1sg==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^9.1.1",
+ "minipass": "^5.0.0 || ^6.0.2"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/path-scurry/node_modules/lru-cache": {
+ "version": "9.1.2",
+ "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-9.1.2.tgz",
+ "integrity": "sha512-ERJq3FOzJTxBbFjZ7iDs+NiK4VI9Wz+RdrrAB8dio1oV+YvdPzUEE4QNiT2VD51DkIbCYRUUzCRkssXCHqSnKQ==",
+ "dev": true,
+ "engines": {
+ "node": "14 || >=16.14"
+ }
+ },
+ "node_modules/pathe": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmmirror.com/pathe/-/pathe-0.2.0.tgz",
+ "integrity": "sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==",
+ "dev": true
+ },
+ "node_modules/picocolors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+ "license": "ISC"
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "optional": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/pinia": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmmirror.com/pinia/-/pinia-2.1.3.tgz",
+ "integrity": "sha512-XNA/z/ye4P5rU1pieVmh0g/hSuDO98/a5UC8oSP0DNdvt6YtetJNHTrXwpwsQuflkGT34qKxAEcp7lSxXNjf/A==",
+ "dependencies": {
+ "@vue/devtools-api": "^6.5.0",
+ "vue-demi": ">=0.14.5"
+ },
+ "peerDependencies": {
+ "@vue/composition-api": "^1.4.0",
+ "typescript": ">=4.4.4",
+ "vue": "^2.6.14 || ^3.3.0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ },
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/pinia/node_modules/vue-demi": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.5.tgz",
+ "integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==",
+ "hasInstallScript": true,
+ "bin": {
+ "vue-demi-fix": "bin/vue-demi-fix.js",
+ "vue-demi-switch": "bin/vue-demi-switch.js"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "peerDependencies": {
+ "@vue/composition-api": "^1.0.0-rc.1",
+ "vue": "^3.0.0-0 || ^2.6.0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/posix-character-classes": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmmirror.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
+ "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.4.23",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.23.tgz",
+ "integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==",
+ "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/postcss-prefix-selector": {
+ "version": "1.16.0",
+ "resolved": "https://registry.npmmirror.com/postcss-prefix-selector/-/postcss-prefix-selector-1.16.0.tgz",
+ "integrity": "sha512-rdVMIi7Q4B0XbXqNUEI+Z4E+pueiu/CS5E6vRCQommzdQ/sgsS4dK42U7GX8oJR+TJOtT+Qv3GkNo6iijUMp3Q==",
+ "dev": true,
+ "peerDependencies": {
+ "postcss": ">4 <9"
+ }
+ },
+ "node_modules/posthtml": {
+ "version": "0.9.2",
+ "resolved": "https://registry.npmmirror.com/posthtml/-/posthtml-0.9.2.tgz",
+ "integrity": "sha512-spBB5sgC4cv2YcW03f/IAUN1pgDJWNWD8FzkyY4mArLUMJW+KlQhlmUdKAHQuPfb00Jl5xIfImeOsf6YL8QK7Q==",
+ "dev": true,
+ "dependencies": {
+ "posthtml-parser": "^0.2.0",
+ "posthtml-render": "^1.0.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/posthtml-parser": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/posthtml-parser/-/posthtml-parser-0.2.1.tgz",
+ "integrity": "sha512-nPC53YMqJnc/+1x4fRYFfm81KV2V+G9NZY+hTohpYg64Ay7NemWWcV4UWuy/SgMupqQ3kJ88M/iRfZmSnxT+pw==",
+ "dev": true,
+ "dependencies": {
+ "htmlparser2": "^3.8.3",
+ "isobject": "^2.1.0"
+ }
+ },
+ "node_modules/posthtml-rename-id": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmmirror.com/posthtml-rename-id/-/posthtml-rename-id-1.0.12.tgz",
+ "integrity": "sha512-UKXf9OF/no8WZo9edRzvuMenb6AD5hDLzIepJW+a4oJT+T/Lx7vfMYWT4aWlGNQh0WMhnUx1ipN9OkZ9q+ddEw==",
+ "dev": true,
+ "dependencies": {
+ "escape-string-regexp": "1.0.5"
+ }
+ },
+ "node_modules/posthtml-render": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/posthtml-render/-/posthtml-render-1.4.0.tgz",
+ "integrity": "sha512-W1779iVHGfq0Fvh2PROhCe2QhB8mEErgqzo1wpIt36tCgChafP+hbXIhLDOM8ePJrZcFs0vkNEtdibEWVqChqw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/posthtml-svg-mode": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/posthtml-svg-mode/-/posthtml-svg-mode-1.0.3.tgz",
+ "integrity": "sha512-hEqw9NHZ9YgJ2/0G7CECOeuLQKZi8HjWLkBaSVtOWjygQ9ZD8P7tqeowYs7WrFdKsWEKG7o+IlsPY8jrr0CJpQ==",
+ "dev": true,
+ "dependencies": {
+ "merge-options": "1.0.1",
+ "posthtml": "^0.9.2",
+ "posthtml-parser": "^0.2.1",
+ "posthtml-render": "^1.0.6"
+ }
+ },
+ "node_modules/proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
+ "license": "MIT"
+ },
+ "node_modules/prr": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz",
+ "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
+ "optional": true
+ },
+ "node_modules/punycode": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.0.tgz",
+ "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/qs": {
+ "version": "6.11.2",
+ "resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.2.tgz",
+ "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==",
+ "dependencies": {
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/query-string": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/query-string/-/query-string-4.3.4.tgz",
+ "integrity": "sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==",
+ "dev": true,
+ "dependencies": {
+ "object-assign": "^4.1.0",
+ "strict-uri-encode": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="
+ },
+ "node_modules/randombytes": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz",
+ "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "dev": true,
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/regenerator-runtime": {
+ "version": "0.13.11",
+ "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
+ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
+ },
+ "node_modules/regex-not": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/regex-not/-/regex-not-1.0.2.tgz",
+ "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
+ "dev": true,
+ "dependencies": {
+ "extend-shallow": "^3.0.2",
+ "safe-regex": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/regex-not/node_modules/extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+ "dev": true,
+ "dependencies": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/regex-not/node_modules/is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "dependencies": {
+ "is-plain-object": "^2.0.4"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/regex-not/node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/regex-not/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/repeat-element": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/repeat-element/-/repeat-element-1.1.4.tgz",
+ "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmmirror.com/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/resize-observer-polyfill": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmmirror.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
+ "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg=="
+ },
+ "node_modules/resolve": {
+ "version": "1.22.2",
+ "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.2.tgz",
+ "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==",
+ "dev": true,
+ "dependencies": {
+ "is-core-module": "^2.11.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ }
+ },
+ "node_modules/resolve-url": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/resolve-url/-/resolve-url-0.2.1.tgz",
+ "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==",
+ "deprecated": "https://github.com/lydell/resolve-url#deprecated",
+ "dev": true
+ },
+ "node_modules/ret": {
+ "version": "0.1.15",
+ "resolved": "https://registry.npmmirror.com/ret/-/ret-0.1.15.tgz",
+ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rimraf": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-5.0.1.tgz",
+ "integrity": "sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^10.2.5"
+ },
+ "bin": {
+ "rimraf": "dist/cjs/src/bin.js"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/rollup": {
+ "version": "2.79.1",
+ "resolved": "https://registry.npmmirror.com/rollup/-/rollup-2.79.1.tgz",
+ "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==",
+ "dev": true,
+ "peer": true,
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/rollup-plugin-terser": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmmirror.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz",
+ "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==",
+ "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.10.4",
+ "jest-worker": "^26.2.1",
+ "serialize-javascript": "^4.0.0",
+ "terser": "^5.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^2.0.0"
+ }
+ },
+ "node_modules/rollup-plugin-terser/node_modules/jest-worker": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmmirror.com/jest-worker/-/jest-worker-26.6.2.tgz",
+ "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^7.0.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/rollup-plugin-terser/node_modules/serialize-javascript": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
+ "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
+ "dev": true,
+ "dependencies": {
+ "randombytes": "^2.1.0"
+ }
+ },
+ "node_modules/rollup-plugin-terser/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true
+ },
+ "node_modules/safe-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/safe-regex/-/safe-regex-1.1.0.tgz",
+ "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==",
+ "dev": true,
+ "dependencies": {
+ "ret": "~0.1.10"
+ }
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "optional": true
+ },
+ "node_modules/sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
+ "optional": true
+ },
+ "node_modules/schema-utils": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.1.2.tgz",
+ "integrity": "sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/json-schema": "^7.0.8",
+ "ajv": "^6.12.5",
+ "ajv-keywords": "^3.5.2"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/scroll-into-view-if-needed": {
+ "version": "2.2.31",
+ "resolved": "https://registry.npmmirror.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz",
+ "integrity": "sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==",
+ "dependencies": {
+ "compute-scroll-into-view": "^1.0.20"
+ }
+ },
+ "node_modules/semver": {
+ "version": "7.5.1",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.1.tgz",
+ "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/serialize-javascript": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz",
+ "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "randombytes": "^2.1.0"
+ }
+ },
+ "node_modules/set-value": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/set-value/-/set-value-2.0.1.tgz",
+ "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
+ "dev": true,
+ "dependencies": {
+ "extend-shallow": "^2.0.1",
+ "is-extendable": "^0.1.1",
+ "is-plain-object": "^2.0.3",
+ "split-string": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/set-value/node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/set-value/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/shallow-equal": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/shallow-equal/-/shallow-equal-1.2.1.tgz",
+ "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA=="
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/side-channel": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz",
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "dependencies": {
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-4.0.2.tgz",
+ "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/snapdragon": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmmirror.com/snapdragon/-/snapdragon-0.8.2.tgz",
+ "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
+ "dev": true,
+ "dependencies": {
+ "base": "^0.11.1",
+ "debug": "^2.2.0",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "map-cache": "^0.2.2",
+ "source-map": "^0.5.6",
+ "source-map-resolve": "^0.5.0",
+ "use": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon-node": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
+ "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
+ "dev": true,
+ "dependencies": {
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.0",
+ "snapdragon-util": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon-node/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon-util": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
+ "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^3.2.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon-util/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/snapdragon/node_modules/define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dev": true,
+ "dependencies": {
+ "is-descriptor": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon/node_modules/is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon/node_modules/is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon/node_modules/is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "dependencies": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/snapdragon/node_modules/source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/sortablejs": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.15.0.tgz",
+ "integrity": "sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w=="
+ },
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz",
+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-resolve": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmmirror.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
+ "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
+ "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated",
+ "dev": true,
+ "dependencies": {
+ "atob": "^2.1.2",
+ "decode-uri-component": "^0.2.0",
+ "resolve-url": "^0.2.1",
+ "source-map-url": "^0.4.0",
+ "urix": "^0.1.0"
+ }
+ },
+ "node_modules/source-map-support": {
+ "version": "0.5.21",
+ "resolved": "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz",
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+ "devOptional": true,
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "node_modules/source-map-url": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmmirror.com/source-map-url/-/source-map-url-0.4.1.tgz",
+ "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==",
+ "deprecated": "See https://github.com/lydell/source-map-url#deprecated",
+ "dev": true
+ },
+ "node_modules/split-string": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/split-string/-/split-string-3.1.0.tgz",
+ "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
+ "dev": true,
+ "dependencies": {
+ "extend-shallow": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/split-string/node_modules/extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+ "dev": true,
+ "dependencies": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/split-string/node_modules/is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "dependencies": {
+ "is-plain-object": "^2.0.4"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/split-string/node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/split-string/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ssf": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npmmirror.com/ssf/-/ssf-0.11.2.tgz",
+ "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==",
+ "dependencies": {
+ "frac": "~1.1.2"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/stable": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmmirror.com/stable/-/stable-0.1.8.tgz",
+ "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==",
+ "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility",
+ "dev": true
+ },
+ "node_modules/static-extend": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmmirror.com/static-extend/-/static-extend-0.1.2.tgz",
+ "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==",
+ "dev": true,
+ "dependencies": {
+ "define-property": "^0.2.5",
+ "object-copy": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/static-extend/node_modules/define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dev": true,
+ "dependencies": {
+ "is-descriptor": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/static-extend/node_modules/is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/static-extend/node_modules/is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/static-extend/node_modules/is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "dependencies": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/strict-uri-encode": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
+ "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/string_decoder": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "dev": true,
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/string-width-cjs": {
+ "name": "string-width",
+ "version": "4.2.3",
+ "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string-width-cjs/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string-width-cjs/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
+ "node_modules/string-width-cjs/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string-width/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/string-width/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/strip-ansi-cjs": {
+ "name": "strip-ansi",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi-cjs/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/svg-baker": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmmirror.com/svg-baker/-/svg-baker-1.7.0.tgz",
+ "integrity": "sha512-nibslMbkXOIkqKVrfcncwha45f97fGuAOn1G99YwnwTj8kF9YiM6XexPcUso97NxOm6GsP0SIvYVIosBis1xLg==",
+ "dev": true,
+ "dependencies": {
+ "bluebird": "^3.5.0",
+ "clone": "^2.1.1",
+ "he": "^1.1.1",
+ "image-size": "^0.5.1",
+ "loader-utils": "^1.1.0",
+ "merge-options": "1.0.1",
+ "micromatch": "3.1.0",
+ "postcss": "^5.2.17",
+ "postcss-prefix-selector": "^1.6.0",
+ "posthtml-rename-id": "^1.0",
+ "posthtml-svg-mode": "^1.0.3",
+ "query-string": "^4.3.2",
+ "traverse": "^0.6.6"
+ }
+ },
+ "node_modules/svg-baker/node_modules/ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmmirror.com/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "dependencies": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/chalk/node_modules/supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
+ "dev": true,
+ "dependencies": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/has-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-1.0.0.tgz",
+ "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/is-number/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/micromatch": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-3.1.0.tgz",
+ "integrity": "sha512-3StSelAE+hnRvMs8IdVW7Uhk8CVed5tp+kLLGlBP6WiRAXS21GPGu/Nat4WNPXj2Eoc24B02SaeoyozPMfj0/g==",
+ "dev": true,
+ "dependencies": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.2.2",
+ "define-property": "^1.0.0",
+ "extend-shallow": "^2.0.1",
+ "extglob": "^2.0.2",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^5.0.2",
+ "nanomatch": "^1.2.1",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/postcss": {
+ "version": "5.2.18",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-5.2.18.tgz",
+ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^1.1.3",
+ "js-base64": "^2.1.9",
+ "source-map": "^0.5.6",
+ "supports-color": "^3.2.3"
+ },
+ "engines": {
+ "node": ">=0.12"
+ }
+ },
+ "node_modules/svg-baker/node_modules/source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/supports-color": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-3.2.3.tgz",
+ "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
+ "dev": true,
+ "dependencies": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-tags": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/svg-tags/-/svg-tags-1.0.0.tgz",
+ "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA=="
+ },
+ "node_modules/svgo": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmmirror.com/svgo/-/svgo-2.8.0.tgz",
+ "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==",
+ "dev": true,
+ "dependencies": {
+ "@trysound/sax": "0.2.0",
+ "commander": "^7.2.0",
+ "css-select": "^4.1.3",
+ "css-tree": "^1.1.3",
+ "csso": "^4.2.0",
+ "picocolors": "^1.0.0",
+ "stable": "^0.1.8"
+ },
+ "bin": {
+ "svgo": "bin/svgo"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/svgo/node_modules/commander": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/commander/-/commander-7.2.0.tgz",
+ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/tapable": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/tapable/-/tapable-2.2.1.tgz",
+ "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/terser": {
+ "version": "5.17.6",
+ "resolved": "https://registry.npmmirror.com/terser/-/terser-5.17.6.tgz",
+ "integrity": "sha512-V8QHcs8YuyLkLHsJO5ucyff1ykrLVsR4dNnS//L5Y3NiSXpbK1J+WMVUs67eI0KTxs9JtHhgEQpXQVHlHI92DQ==",
+ "devOptional": true,
+ "dependencies": {
+ "@jridgewell/source-map": "^0.3.2",
+ "acorn": "^8.5.0",
+ "commander": "^2.20.0",
+ "source-map-support": "~0.5.20"
+ },
+ "bin": {
+ "terser": "bin/terser"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/terser-webpack-plugin": {
+ "version": "5.3.9",
+ "resolved": "https://registry.npmmirror.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz",
+ "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jridgewell/trace-mapping": "^0.3.17",
+ "jest-worker": "^27.4.5",
+ "schema-utils": "^3.1.1",
+ "serialize-javascript": "^6.0.1",
+ "terser": "^5.16.8"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "peerDependencies": {
+ "webpack": "^5.1.0"
+ },
+ "peerDependenciesMeta": {
+ "@swc/core": {
+ "optional": true
+ },
+ "esbuild": {
+ "optional": true
+ },
+ "uglify-js": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/to-object-path": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmmirror.com/to-object-path/-/to-object-path-0.3.0.tgz",
+ "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/to-object-path/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/to-regex": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/to-regex/-/to-regex-3.0.2.tgz",
+ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+ "dev": true,
+ "dependencies": {
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "regex-not": "^1.0.2",
+ "safe-regex": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/to-regex/node_modules/define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-2.0.2.tgz",
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "dev": true,
+ "dependencies": {
+ "is-descriptor": "^1.0.2",
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/to-regex/node_modules/extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+ "dev": true,
+ "dependencies": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/to-regex/node_modules/is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "dependencies": {
+ "is-plain-object": "^2.0.4"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/to-regex/node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/to-regex/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/traverse": {
+ "version": "0.6.7",
+ "resolved": "https://registry.npmmirror.com/traverse/-/traverse-0.6.7.tgz",
+ "integrity": "sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==",
+ "dev": true
+ },
+ "node_modules/tsconfck": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/tsconfck/-/tsconfck-2.1.1.tgz",
+ "integrity": "sha512-ZPCkJBKASZBmBUNqGHmRhdhM8pJYDdOXp4nRgj/O0JwUwsMq50lCDRQP/M5GBNAA0elPrq4gAeu4dkaVCuKWww==",
+ "dev": true,
+ "bin": {
+ "tsconfck": "bin/tsconfck.js"
+ },
+ "engines": {
+ "node": "^14.13.1 || ^16 || >=18"
+ },
+ "peerDependencies": {
+ "typescript": "^4.3.5 || ^5.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/tslib": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.5.2.tgz",
+ "integrity": "sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==",
+ "devOptional": true
+ },
+ "node_modules/typescript": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmmirror.com/typescript/-/typescript-5.0.4.tgz",
+ "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==",
+ "devOptional": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=12.20"
+ }
+ },
+ "node_modules/union-value": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/union-value/-/union-value-1.0.1.tgz",
+ "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
+ "dev": true,
+ "dependencies": {
+ "arr-union": "^3.1.0",
+ "get-value": "^2.0.6",
+ "is-extendable": "^0.1.1",
+ "set-value": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/unplugin": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmmirror.com/unplugin/-/unplugin-1.3.1.tgz",
+ "integrity": "sha512-h4uUTIvFBQRxUKS2Wjys6ivoeofGhxzTe2sRWlooyjHXVttcVfV/JiavNd3d4+jty0SVV0dxGw9AkY9MwiaCEw==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.8.2",
+ "chokidar": "^3.5.3",
+ "webpack-sources": "^3.2.3",
+ "webpack-virtual-modules": "^0.5.0"
+ }
+ },
+ "node_modules/unplugin-vue-components": {
+ "version": "0.22.12",
+ "resolved": "https://registry.npmmirror.com/unplugin-vue-components/-/unplugin-vue-components-0.22.12.tgz",
+ "integrity": "sha512-FxyzsuBvMCYPIk+8cgscGBQ345tvwVu+qY5IhE++eorkyvA4Z1TiD/HCiim+Kbqozl10i4K+z+NCa2WO2jexRA==",
+ "dev": true,
+ "dependencies": {
+ "@antfu/utils": "^0.7.2",
+ "@rollup/pluginutils": "^5.0.2",
+ "chokidar": "^3.5.3",
+ "debug": "^4.3.4",
+ "fast-glob": "^3.2.12",
+ "local-pkg": "^0.4.2",
+ "magic-string": "^0.27.0",
+ "minimatch": "^5.1.1",
+ "resolve": "^1.22.1",
+ "unplugin": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@babel/parser": "^7.15.8",
+ "vue": "2 || 3"
+ },
+ "peerDependenciesMeta": {
+ "@babel/parser": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/unplugin-vue-components/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/unplugin-vue-components/node_modules/magic-string": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.27.0.tgz",
+ "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.4.13"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/unplugin-vue-components/node_modules/minimatch": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz",
+ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/unplugin-vue-components/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "node_modules/unplugin-vue-define-options": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/unplugin-vue-define-options/-/unplugin-vue-define-options-1.0.0.tgz",
+ "integrity": "sha512-j90zM7NhZXBL5uMlHKzSOjvU98lFcIErdgAhj7bEEdvZarkwOkEUgMFsZDwStN9FEcMAiS/BTvcyGfItu3ry/g==",
+ "dev": true,
+ "dependencies": {
+ "@rollup/pluginutils": "^4.2.1",
+ "@vue-macros/common": "~0.13.4",
+ "ast-walker-scope": "^0.3.0",
+ "unplugin": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=14.19.0"
+ }
+ },
+ "node_modules/unplugin-vue-define-options/node_modules/@rollup/pluginutils": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz",
+ "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==",
+ "dev": true,
+ "dependencies": {
+ "estree-walker": "^2.0.1",
+ "picomatch": "^2.2.2"
+ },
+ "engines": {
+ "node": ">= 8.0.0"
+ }
+ },
+ "node_modules/unset-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/unset-value/-/unset-value-1.0.0.tgz",
+ "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==",
+ "dev": true,
+ "dependencies": {
+ "has-value": "^0.3.1",
+ "isobject": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/unset-value/node_modules/has-value": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmmirror.com/has-value/-/has-value-0.3.1.tgz",
+ "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==",
+ "dev": true,
+ "dependencies": {
+ "get-value": "^2.0.3",
+ "has-values": "^0.1.4",
+ "isobject": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/unset-value/node_modules/has-value/node_modules/isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==",
+ "dev": true,
+ "dependencies": {
+ "isarray": "1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/unset-value/node_modules/has-values": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmmirror.com/has-values/-/has-values-0.1.4.tgz",
+ "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/unset-value/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz",
+ "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==",
+ "dependencies": {
+ "escalade": "^3.1.1",
+ "picocolors": "^1.0.0"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/urix": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmmirror.com/urix/-/urix-0.1.0.tgz",
+ "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==",
+ "deprecated": "Please see https://github.com/lydell/urix#deprecated",
+ "dev": true
+ },
+ "node_modules/use": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/use/-/use-3.1.1.tgz",
+ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "dev": true
+ },
+ "node_modules/vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/vite": {
+ "version": "4.3.8",
+ "resolved": "https://registry.npmmirror.com/vite/-/vite-4.3.8.tgz",
+ "integrity": "sha512-uYB8PwN7hbMrf4j1xzGDk/lqjsZvCDbt/JC5dyfxc19Pg8kRm14LinK/uq+HSLNswZEoKmweGdtpbnxRtrAXiQ==",
+ "license": "MIT",
+ "dependencies": {
+ "esbuild": "^0.17.5",
+ "postcss": "^8.4.23",
+ "rollup": "^3.21.0"
+ },
+ "bin": {
+ "vite": "bin/vite.js"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ },
+ "peerDependencies": {
+ "@types/node": ">= 14",
+ "less": "*",
+ "sass": "*",
+ "stylus": "*",
+ "sugarss": "*",
+ "terser": "^5.4.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ },
+ "less": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "stylus": {
+ "optional": true
+ },
+ "sugarss": {
+ "optional": true
+ },
+ "terser": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vite-plugin-svg-icons": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/vite-plugin-svg-icons/-/vite-plugin-svg-icons-2.0.1.tgz",
+ "integrity": "sha512-6ktD+DhV6Rz3VtedYvBKKVA2eXF+sAQVaKkKLDSqGUfnhqXl3bj5PPkVTl3VexfTuZy66PmINi8Q6eFnVfRUmA==",
+ "dev": true,
+ "dependencies": {
+ "@types/svgo": "^2.6.1",
+ "cors": "^2.8.5",
+ "debug": "^4.3.3",
+ "etag": "^1.8.1",
+ "fs-extra": "^10.0.0",
+ "pathe": "^0.2.0",
+ "svg-baker": "1.7.0",
+ "svgo": "^2.8.0"
+ },
+ "peerDependencies": {
+ "vite": ">=2.0.0"
+ }
+ },
+ "node_modules/vite-plugin-svg-icons/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vite-plugin-svg-icons/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "node_modules/vite-plugin-windicss": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/vite-plugin-windicss/-/vite-plugin-windicss-1.9.0.tgz",
+ "integrity": "sha512-w0unPfcbVU5eaISAsFTLgIb41SLhmXoUF75Othu8NqFioe8+DEqiuvJ7/k/LRuEuvI8Rt/OKrY6cNzrB+dykaA==",
+ "dependencies": {
+ "@windicss/plugin-utils": "1.9.0",
+ "debug": "^4.3.4",
+ "kolorist": "^1.8.0",
+ "windicss": "^3.5.6"
+ },
+ "peerDependencies": {
+ "vite": "^2.0.1 || ^3.0.0 || ^4.0.0"
+ }
+ },
+ "node_modules/vite-plugin-windicss/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vite-plugin-windicss/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "node_modules/vite-tsconfig-paths": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmmirror.com/vite-tsconfig-paths/-/vite-tsconfig-paths-4.2.0.tgz",
+ "integrity": "sha512-jGpus0eUy5qbbMVGiTxCL1iB9ZGN6Bd37VGLJU39kTDD6ZfULTTb1bcc5IeTWqWJKiWV5YihCaibeASPiGi8kw==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.1.1",
+ "globrex": "^0.1.2",
+ "tsconfck": "^2.1.0"
+ },
+ "peerDependencies": {
+ "vite": "*"
+ },
+ "peerDependenciesMeta": {
+ "vite": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vite-tsconfig-paths/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vite-tsconfig-paths/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "node_modules/vite/node_modules/rollup": {
+ "version": "3.24.0",
+ "resolved": "https://registry.npmmirror.com/rollup/-/rollup-3.24.0.tgz",
+ "integrity": "sha512-OgraHOIg2YpHQTjl0/ymWfFNBEyPucB7lmhXrQUh38qNOegxLapSPFs9sNr0qKR75awW41D93XafoR2QfhBdUQ==",
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=14.18.0",
+ "npm": ">=8.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/vue": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/vue/-/vue-3.3.4.tgz",
+ "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-dom": "3.3.4",
+ "@vue/compiler-sfc": "3.3.4",
+ "@vue/runtime-dom": "3.3.4",
+ "@vue/server-renderer": "3.3.4",
+ "@vue/shared": "3.3.4"
+ }
+ },
+ "node_modules/vue-i18n": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-9.2.2.tgz",
+ "integrity": "sha512-yswpwtj89rTBhegUAv9Mu37LNznyu3NpyLQmozF3i1hYOhwpG8RjcjIFIIfnu+2MDZJGSZPXaKWvnQA71Yv9TQ==",
+ "dependencies": {
+ "@intlify/core-base": "9.2.2",
+ "@intlify/shared": "9.2.2",
+ "@intlify/vue-devtools": "9.2.2",
+ "@vue/devtools-api": "^6.2.1"
+ },
+ "engines": {
+ "node": ">= 14"
+ },
+ "peerDependencies": {
+ "vue": "^3.0.0"
+ }
+ },
+ "node_modules/vue-router": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.2.1.tgz",
+ "integrity": "sha512-nW28EeifEp8Abc5AfmAShy5ZKGsGzjcnZ3L1yc2DYUo+MqbBClrRP9yda3dIekM4I50/KnEwo1wkBLf7kHH5Cw==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/devtools-api": "^6.5.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/posva"
+ },
+ "peerDependencies": {
+ "vue": "^3.2.0"
+ }
+ },
+ "node_modules/vue-template-compiler": {
+ "version": "2.7.14",
+ "resolved": "https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz",
+ "integrity": "sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "de-indent": "^1.0.2",
+ "he": "^1.2.0"
+ }
+ },
+ "node_modules/vue-tsc": {
+ "version": "1.6.5",
+ "resolved": "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-1.6.5.tgz",
+ "integrity": "sha512-Wtw3J7CC+JM2OR56huRd5iKlvFWpvDiU+fO1+rqyu4V2nMTotShz4zbOZpW5g9fUOcjnyZYfBo5q5q+D/q27JA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@volar/vue-language-core": "1.6.5",
+ "@volar/vue-typescript": "1.6.5",
+ "semver": "^7.3.8"
+ },
+ "bin": {
+ "vue-tsc": "bin/vue-tsc.js"
+ },
+ "peerDependencies": {
+ "typescript": "*"
+ }
+ },
+ "node_modules/vue-types": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/vue-types/-/vue-types-3.0.2.tgz",
+ "integrity": "sha512-IwUC0Aq2zwaXqy74h4WCvFCUtoV0iSWr0snWnE9TnU18S66GAQyqQbRf2qfJtUuiFsBf6qp0MEwdonlwznlcrw==",
+ "dependencies": {
+ "is-plain-object": "3.0.1"
+ },
+ "engines": {
+ "node": ">=10.15.0"
+ },
+ "peerDependencies": {
+ "vue": "^3.0.0"
+ }
+ },
+ "node_modules/warning": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/warning/-/warning-4.0.3.tgz",
+ "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==",
+ "dependencies": {
+ "loose-envify": "^1.0.0"
+ }
+ },
+ "node_modules/watchpack": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-2.4.0.tgz",
+ "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.1.2"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/webpack": {
+ "version": "5.84.0",
+ "resolved": "https://registry.npmmirror.com/webpack/-/webpack-5.84.0.tgz",
+ "integrity": "sha512-XezNK3kwJq6IyeoZmZ1uEqQs+42nTqIi4jYM/YjLwaJedUC1N3bwnCC0+UcnHJPfqWX0kGrQnMIvZZyWYaIZrA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/eslint-scope": "^3.7.3",
+ "@types/estree": "^1.0.0",
+ "@webassemblyjs/ast": "^1.11.5",
+ "@webassemblyjs/wasm-edit": "^1.11.5",
+ "@webassemblyjs/wasm-parser": "^1.11.5",
+ "acorn": "^8.7.1",
+ "acorn-import-assertions": "^1.9.0",
+ "browserslist": "^4.14.5",
+ "chrome-trace-event": "^1.0.2",
+ "enhanced-resolve": "^5.14.1",
+ "es-module-lexer": "^1.2.1",
+ "eslint-scope": "5.1.1",
+ "events": "^3.2.0",
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.2.9",
+ "json-parse-even-better-errors": "^2.3.1",
+ "loader-runner": "^4.2.0",
+ "mime-types": "^2.1.27",
+ "neo-async": "^2.6.2",
+ "schema-utils": "^3.1.2",
+ "tapable": "^2.1.1",
+ "terser-webpack-plugin": "^5.3.7",
+ "watchpack": "^2.4.0",
+ "webpack-sources": "^3.2.3"
+ },
+ "bin": {
+ "webpack": "bin/webpack.js"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ },
+ "peerDependenciesMeta": {
+ "webpack-cli": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/webpack-sources": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz",
+ "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/webpack-virtual-modules": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz",
+ "integrity": "sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==",
+ "dev": true
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/windicss": {
+ "version": "3.5.6",
+ "resolved": "https://registry.npmmirror.com/windicss/-/windicss-3.5.6.tgz",
+ "integrity": "sha512-P1mzPEjgFMZLX0ZqfFht4fhV/FX8DTG7ERG1fBLiWvd34pTLVReS5CVsewKn9PApSgXnVfPWwvq+qUsRwpnwFA==",
+ "bin": {
+ "windicss": "cli/index.js"
+ },
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/wmf": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/wmf/-/wmf-1.0.2.tgz",
+ "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==",
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/word": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmmirror.com/word/-/word-0.3.0.tgz",
+ "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==",
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/wrap-ansi": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
+ "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/wrap-ansi-cjs": {
+ "name": "wrap-ansi",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/ansi-styles": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/xlsx": {
+ "version": "0.18.5",
+ "resolved": "https://registry.npmmirror.com/xlsx/-/xlsx-0.18.5.tgz",
+ "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==",
+ "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/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true,
+ "license": "ISC"
+ }
+ },
+ "dependencies": {
+ "@ampproject/remapping": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.2.1.tgz",
+ "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
+ "requires": {
+ "@jridgewell/gen-mapping": "^0.3.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ }
+ },
+ "@ant-design/colors": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmmirror.com/@ant-design/colors/-/colors-6.0.0.tgz",
+ "integrity": "sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ==",
+ "requires": {
+ "@ctrl/tinycolor": "^3.4.0"
+ }
+ },
+ "@ant-design/icons-svg": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmmirror.com/@ant-design/icons-svg/-/icons-svg-4.2.1.tgz",
+ "integrity": "sha512-EB0iwlKDGpG93hW8f85CTJTs4SvMX7tt5ceupvhALp1IF44SeUFOMhKUOYqpsoYWQKAOuTRDMqn75rEaKDp0Xw=="
+ },
+ "@ant-design/icons-vue": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmmirror.com/@ant-design/icons-vue/-/icons-vue-6.1.0.tgz",
+ "integrity": "sha512-EX6bYm56V+ZrKN7+3MT/ubDkvJ5rK/O2t380WFRflDcVFgsvl3NLH7Wxeau6R8DbrO5jWR6DSTC3B6gYFp77AA==",
+ "requires": {
+ "@ant-design/colors": "^6.0.0",
+ "@ant-design/icons-svg": "^4.2.1"
+ }
+ },
+ "@antfu/utils": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmmirror.com/@antfu/utils/-/utils-0.7.4.tgz",
+ "integrity": "sha512-qe8Nmh9rYI/HIspLSTwtbMFPj6dISG6+dJnOguTlPNXtCvS2uezdxscVBb7/3DrmNbQK49TDqpkSQ1chbRGdpQ=="
+ },
+ "@babel/code-frame": {
+ "version": "7.21.4",
+ "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.21.4.tgz",
+ "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==",
+ "requires": {
+ "@babel/highlight": "^7.18.6"
+ }
+ },
+ "@babel/compat-data": {
+ "version": "7.22.3",
+ "resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.22.3.tgz",
+ "integrity": "sha512-aNtko9OPOwVESUFp3MZfD8Uzxl7JzSeJpd7npIoxCasU37PFbAQRpKglkaKwlHOyeJdrREpo8TW8ldrkYWwvIQ=="
+ },
+ "@babel/core": {
+ "version": "7.22.1",
+ "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.22.1.tgz",
+ "integrity": "sha512-Hkqu7J4ynysSXxmAahpN1jjRwVJ+NdpraFLIWflgjpVob3KNyK3/tIUc7Q7szed8WMp0JNa7Qtd1E9Oo22F9gA==",
+ "requires": {
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.21.4",
+ "@babel/generator": "^7.22.0",
+ "@babel/helper-compilation-targets": "^7.22.1",
+ "@babel/helper-module-transforms": "^7.22.1",
+ "@babel/helpers": "^7.22.0",
+ "@babel/parser": "^7.22.0",
+ "@babel/template": "^7.21.9",
+ "@babel/traverse": "^7.22.1",
+ "@babel/types": "^7.22.0",
+ "convert-source-map": "^1.7.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.2",
+ "semver": "^6.3.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+ }
+ }
+ },
+ "@babel/generator": {
+ "version": "7.22.3",
+ "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.22.3.tgz",
+ "integrity": "sha512-C17MW4wlk//ES/CJDL51kPNwl+qiBQyN7b9SKyVp11BLGFeSPoVaHrv+MNt8jwQFhQWowW88z1eeBx3pFz9v8A==",
+ "requires": {
+ "@babel/types": "^7.22.3",
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "@jridgewell/trace-mapping": "^0.3.17",
+ "jsesc": "^2.5.1"
+ }
+ },
+ "@babel/helper-annotate-as-pure": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz",
+ "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==",
+ "requires": {
+ "@babel/types": "^7.18.6"
+ }
+ },
+ "@babel/helper-compilation-targets": {
+ "version": "7.22.1",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.1.tgz",
+ "integrity": "sha512-Rqx13UM3yVB5q0D/KwQ8+SPfX/+Rnsy1Lw1k/UwOC4KC6qrzIQoY3lYnBu5EHKBlEHHcj0M0W8ltPSkD8rqfsQ==",
+ "requires": {
+ "@babel/compat-data": "^7.22.0",
+ "@babel/helper-validator-option": "^7.21.0",
+ "browserslist": "^4.21.3",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.0"
+ },
+ "dependencies": {
+ "lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "requires": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+ },
+ "yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
+ }
+ }
+ },
+ "@babel/helper-create-class-features-plugin": {
+ "version": "7.22.1",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.1.tgz",
+ "integrity": "sha512-SowrZ9BWzYFgzUMwUmowbPSGu6CXL5MSuuCkG3bejahSpSymioPmuLdhPxNOc9MjuNGjy7M/HaXvJ8G82Lywlw==",
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.18.6",
+ "@babel/helper-environment-visitor": "^7.22.1",
+ "@babel/helper-function-name": "^7.21.0",
+ "@babel/helper-member-expression-to-functions": "^7.22.0",
+ "@babel/helper-optimise-call-expression": "^7.18.6",
+ "@babel/helper-replace-supers": "^7.22.1",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0",
+ "@babel/helper-split-export-declaration": "^7.18.6",
+ "semver": "^6.3.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+ }
+ }
+ },
+ "@babel/helper-environment-visitor": {
+ "version": "7.22.1",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.1.tgz",
+ "integrity": "sha512-Z2tgopurB/kTbidvzeBrc2To3PUP/9i5MUe+fU6QJCQDyPwSH2oRapkLw3KGECDYSjhQZCNxEvNvZlLw8JjGwA=="
+ },
+ "@babel/helper-function-name": {
+ "version": "7.21.0",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz",
+ "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==",
+ "requires": {
+ "@babel/template": "^7.20.7",
+ "@babel/types": "^7.21.0"
+ }
+ },
+ "@babel/helper-hoist-variables": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
+ "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
+ "requires": {
+ "@babel/types": "^7.18.6"
+ }
+ },
+ "@babel/helper-member-expression-to-functions": {
+ "version": "7.22.3",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.3.tgz",
+ "integrity": "sha512-Gl7sK04b/2WOb6OPVeNy9eFKeD3L6++CzL3ykPOWqTn08xgYYK0wz4TUh2feIImDXxcVW3/9WQ1NMKY66/jfZA==",
+ "requires": {
+ "@babel/types": "^7.22.3"
+ }
+ },
+ "@babel/helper-module-imports": {
+ "version": "7.21.4",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz",
+ "integrity": "sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==",
+ "requires": {
+ "@babel/types": "^7.21.4"
+ }
+ },
+ "@babel/helper-module-transforms": {
+ "version": "7.22.1",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.1.tgz",
+ "integrity": "sha512-dxAe9E7ySDGbQdCVOY/4+UcD8M9ZFqZcZhSPsPacvCG4M+9lwtDDQfI2EoaSvmf7W/8yCBkGU0m7Pvt1ru3UZw==",
+ "requires": {
+ "@babel/helper-environment-visitor": "^7.22.1",
+ "@babel/helper-module-imports": "^7.21.4",
+ "@babel/helper-simple-access": "^7.21.5",
+ "@babel/helper-split-export-declaration": "^7.18.6",
+ "@babel/helper-validator-identifier": "^7.19.1",
+ "@babel/template": "^7.21.9",
+ "@babel/traverse": "^7.22.1",
+ "@babel/types": "^7.22.0"
+ }
+ },
+ "@babel/helper-optimise-call-expression": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz",
+ "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==",
+ "requires": {
+ "@babel/types": "^7.18.6"
+ }
+ },
+ "@babel/helper-plugin-utils": {
+ "version": "7.21.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz",
+ "integrity": "sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg=="
+ },
+ "@babel/helper-replace-supers": {
+ "version": "7.22.1",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.1.tgz",
+ "integrity": "sha512-ut4qrkE4AuSfrwHSps51ekR1ZY/ygrP1tp0WFm8oVq6nzc/hvfV/22JylndIbsf2U2M9LOMwiSddr6y+78j+OQ==",
+ "requires": {
+ "@babel/helper-environment-visitor": "^7.22.1",
+ "@babel/helper-member-expression-to-functions": "^7.22.0",
+ "@babel/helper-optimise-call-expression": "^7.18.6",
+ "@babel/template": "^7.21.9",
+ "@babel/traverse": "^7.22.1",
+ "@babel/types": "^7.22.0"
+ }
+ },
+ "@babel/helper-simple-access": {
+ "version": "7.21.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz",
+ "integrity": "sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==",
+ "requires": {
+ "@babel/types": "^7.21.5"
+ }
+ },
+ "@babel/helper-skip-transparent-expression-wrappers": {
+ "version": "7.20.0",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz",
+ "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==",
+ "requires": {
+ "@babel/types": "^7.20.0"
+ }
+ },
+ "@babel/helper-split-export-declaration": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
+ "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
+ "requires": {
+ "@babel/types": "^7.18.6"
+ }
+ },
+ "@babel/helper-string-parser": {
+ "version": "7.21.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz",
+ "integrity": "sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w=="
+ },
+ "@babel/helper-validator-identifier": {
+ "version": "7.19.1",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
+ "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w=="
+ },
+ "@babel/helper-validator-option": {
+ "version": "7.21.0",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz",
+ "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ=="
+ },
+ "@babel/helpers": {
+ "version": "7.22.3",
+ "resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.22.3.tgz",
+ "integrity": "sha512-jBJ7jWblbgr7r6wYZHMdIqKc73ycaTcCaWRq4/2LpuPHcx7xMlZvpGQkOYc9HeSjn6rcx15CPlgVcBtZ4WZJ2w==",
+ "requires": {
+ "@babel/template": "^7.21.9",
+ "@babel/traverse": "^7.22.1",
+ "@babel/types": "^7.22.3"
+ }
+ },
+ "@babel/highlight": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.18.6.tgz",
+ "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.18.6",
+ "chalk": "^2.0.0",
+ "js-tokens": "^4.0.0"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.22.4",
+ "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.22.4.tgz",
+ "integrity": "sha512-VLLsx06XkEYqBtE5YGPwfSGwfrjnyPP5oiGty3S8pQLFDFLaS8VwWSIxkTXpcvr5zeYLE6+MBNl2npl/YnfofA=="
+ },
+ "@babel/plugin-syntax-jsx": {
+ "version": "7.21.4",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz",
+ "integrity": "sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.20.2"
+ }
+ },
+ "@babel/plugin-syntax-typescript": {
+ "version": "7.21.4",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz",
+ "integrity": "sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.20.2"
+ }
+ },
+ "@babel/plugin-transform-typescript": {
+ "version": "7.22.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.3.tgz",
+ "integrity": "sha512-pyjnCIniO5PNaEuGxT28h0HbMru3qCVrMqVgVOz/krComdIrY9W6FCLBq9NWHY8HDGaUlan+UhmZElDENIfCcw==",
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.18.6",
+ "@babel/helper-create-class-features-plugin": "^7.22.1",
+ "@babel/helper-plugin-utils": "^7.21.5",
+ "@babel/plugin-syntax-typescript": "^7.21.4"
+ }
+ },
+ "@babel/runtime": {
+ "version": "7.21.5",
+ "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.21.5.tgz",
+ "integrity": "sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==",
+ "requires": {
+ "regenerator-runtime": "^0.13.11"
+ }
+ },
+ "@babel/template": {
+ "version": "7.21.9",
+ "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.21.9.tgz",
+ "integrity": "sha512-MK0X5k8NKOuWRamiEfc3KEJiHMTkGZNUjzMipqCGDDc6ijRl/B7RGSKVGncu4Ro/HdyzzY6cmoXuKI2Gffk7vQ==",
+ "requires": {
+ "@babel/code-frame": "^7.21.4",
+ "@babel/parser": "^7.21.9",
+ "@babel/types": "^7.21.5"
+ }
+ },
+ "@babel/traverse": {
+ "version": "7.22.4",
+ "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.22.4.tgz",
+ "integrity": "sha512-Tn1pDsjIcI+JcLKq1AVlZEr4226gpuAQTsLMorsYg9tuS/kG7nuwwJ4AB8jfQuEgb/COBwR/DqJxmoiYFu5/rQ==",
+ "requires": {
+ "@babel/code-frame": "^7.21.4",
+ "@babel/generator": "^7.22.3",
+ "@babel/helper-environment-visitor": "^7.22.1",
+ "@babel/helper-function-name": "^7.21.0",
+ "@babel/helper-hoist-variables": "^7.18.6",
+ "@babel/helper-split-export-declaration": "^7.18.6",
+ "@babel/parser": "^7.22.4",
+ "@babel/types": "^7.22.4",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ }
+ }
+ },
+ "@babel/types": {
+ "version": "7.22.4",
+ "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.22.4.tgz",
+ "integrity": "sha512-Tx9x3UBHTTsMSW85WB2kphxYQVvrZ/t1FxD88IpSgIjiUJlCm9z+xWIDwyo1vffTwSqteqyznB8ZE9vYYk16zA==",
+ "requires": {
+ "@babel/helper-string-parser": "^7.21.5",
+ "@babel/helper-validator-identifier": "^7.19.1",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "@ctrl/tinycolor": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.6.0.tgz",
+ "integrity": "sha512-/Z3l6pXthq0JvMYdUFyX9j0MaCltlIn6mfh9jLyQwg5aPKxkyNa0PTHtU1AlFXLNk55ZuAeJRcpvq+tmLfKmaQ=="
+ },
+ "@esbuild/darwin-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz",
+ "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==",
+ "optional": true
+ },
+ "@intlify/core-base": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.2.2.tgz",
+ "integrity": "sha512-JjUpQtNfn+joMbrXvpR4hTF8iJQ2sEFzzK3KIESOx+f+uwIjgw20igOyaIdhfsVVBCds8ZM64MoeNSx+PHQMkA==",
+ "requires": {
+ "@intlify/devtools-if": "9.2.2",
+ "@intlify/message-compiler": "9.2.2",
+ "@intlify/shared": "9.2.2",
+ "@intlify/vue-devtools": "9.2.2"
+ }
+ },
+ "@intlify/devtools-if": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmmirror.com/@intlify/devtools-if/-/devtools-if-9.2.2.tgz",
+ "integrity": "sha512-4ttr/FNO29w+kBbU7HZ/U0Lzuh2cRDhP8UlWOtV9ERcjHzuyXVZmjyleESK6eVP60tGC9QtQW9yZE+JeRhDHkg==",
+ "requires": {
+ "@intlify/shared": "9.2.2"
+ }
+ },
+ "@intlify/message-compiler": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-9.2.2.tgz",
+ "integrity": "sha512-IUrQW7byAKN2fMBe8z6sK6riG1pue95e5jfokn8hA5Q3Bqy4MBJ5lJAofUsawQJYHeoPJ7svMDyBaVJ4d0GTtA==",
+ "requires": {
+ "@intlify/shared": "9.2.2",
+ "source-map": "0.6.1"
+ }
+ },
+ "@intlify/shared": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmmirror.com/@intlify/shared/-/shared-9.2.2.tgz",
+ "integrity": "sha512-wRwTpsslgZS5HNyM7uDQYZtxnbI12aGiBZURX3BTR9RFIKKRWpllTsgzHWvj3HKm3Y2Sh5LPC1r0PDCKEhVn9Q=="
+ },
+ "@intlify/vue-devtools": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmmirror.com/@intlify/vue-devtools/-/vue-devtools-9.2.2.tgz",
+ "integrity": "sha512-+dUyqyCHWHb/UcvY1MlIpO87munedm3Gn6E9WWYdWrMuYLcoIoOEVDWSS8xSwtlPU+kA+MEQTP6Q1iI/ocusJg==",
+ "requires": {
+ "@intlify/core-base": "9.2.2",
+ "@intlify/shared": "9.2.2"
+ }
+ },
+ "@isaacs/cliui": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmmirror.com/@isaacs/cliui/-/cliui-8.0.2.tgz",
+ "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
+ "dev": true,
+ "requires": {
+ "string-width": "^5.1.2",
+ "string-width-cjs": "npm:string-width@^4.2.0",
+ "strip-ansi": "^7.0.1",
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+ "wrap-ansi": "^8.1.0",
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^6.0.1"
+ }
+ }
+ }
+ },
+ "@jridgewell/gen-mapping": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
+ "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
+ "requires": {
+ "@jridgewell/set-array": "^1.0.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ }
+ },
+ "@jridgewell/resolve-uri": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
+ "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w=="
+ },
+ "@jridgewell/set-array": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.1.2.tgz",
+ "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw=="
+ },
+ "@jridgewell/source-map": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.3.tgz",
+ "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==",
+ "devOptional": true,
+ "requires": {
+ "@jridgewell/gen-mapping": "^0.3.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ }
+ },
+ "@jridgewell/sourcemap-codec": {
+ "version": "1.4.15",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
+ },
+ "@jridgewell/trace-mapping": {
+ "version": "0.3.18",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz",
+ "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==",
+ "requires": {
+ "@jridgewell/resolve-uri": "3.1.0",
+ "@jridgewell/sourcemap-codec": "1.4.14"
+ },
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": {
+ "version": "1.4.14",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
+ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw=="
+ }
+ }
+ },
+ "@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "requires": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ }
+ },
+ "@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="
+ },
+ "@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "requires": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ }
+ },
+ "@pkgjs/parseargs": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmmirror.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+ "dev": true,
+ "optional": true
+ },
+ "@rollup/pluginutils": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-5.0.2.tgz",
+ "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==",
+ "dev": true,
+ "requires": {
+ "@types/estree": "^1.0.0",
+ "estree-walker": "^2.0.2",
+ "picomatch": "^2.3.1"
+ }
+ },
+ "@simonwep/pickr": {
+ "version": "1.8.2",
+ "resolved": "https://registry.npmmirror.com/@simonwep/pickr/-/pickr-1.8.2.tgz",
+ "integrity": "sha512-/l5w8BIkrpP6n1xsetx9MWPWlU6OblN5YgZZphxan0Tq4BByTCETL6lyIeY8lagalS2Nbt4F2W034KHLIiunKA==",
+ "requires": {
+ "core-js": "^3.15.1",
+ "nanopop": "^2.1.0"
+ }
+ },
+ "@trysound/sax": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmmirror.com/@trysound/sax/-/sax-0.2.0.tgz",
+ "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==",
+ "dev": true
+ },
+ "@types/eslint": {
+ "version": "8.40.0",
+ "resolved": "https://registry.npmmirror.com/@types/eslint/-/eslint-8.40.0.tgz",
+ "integrity": "sha512-nbq2mvc/tBrK9zQQuItvjJl++GTN5j06DaPtp3hZCpngmG6Q3xoyEmd0TwZI0gAy/G1X0zhGBbr2imsGFdFV0g==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@types/estree": "*",
+ "@types/json-schema": "*"
+ }
+ },
+ "@types/eslint-scope": {
+ "version": "3.7.4",
+ "resolved": "https://registry.npmmirror.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz",
+ "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@types/eslint": "*",
+ "@types/estree": "*"
+ }
+ },
+ "@types/estree": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.1.tgz",
+ "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==",
+ "dev": true
+ },
+ "@types/json-schema": {
+ "version": "7.0.11",
+ "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.11.tgz",
+ "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
+ "dev": true,
+ "peer": true
+ },
+ "@types/node": {
+ "version": "20.2.3",
+ "resolved": "https://registry.npmmirror.com/@types/node/-/node-20.2.3.tgz",
+ "integrity": "sha512-pg9d0yC4rVNWQzX8U7xb4olIOFuuVL9za3bzMT2pu2SU0SNEi66i2qrvhE2qt0HvkhuCaWJu7pLNOt/Pj8BIrw==",
+ "devOptional": true
+ },
+ "@types/svgo": {
+ "version": "2.6.4",
+ "resolved": "https://registry.npmmirror.com/@types/svgo/-/svgo-2.6.4.tgz",
+ "integrity": "sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/web-bluetooth": {
+ "version": "0.0.16",
+ "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz",
+ "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ=="
+ },
+ "@vitejs/plugin-vue": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-4.2.3.tgz",
+ "integrity": "sha512-R6JDUfiZbJA9cMiguQ7jxALsgiprjBeHL5ikpXfJCH62pPHtI+JdJ5xWj6Ev73yXSlYl86+blXn1kZHQ7uElxw==",
+ "dev": true,
+ "requires": {}
+ },
+ "@vitejs/plugin-vue-jsx": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-3.0.1.tgz",
+ "integrity": "sha512-+Jb7ggL48FSPS1uhPnJbJwWa9Sr90vQ+d0InW+AhBM22n+cfuYqJZDckBc+W3QSHe1WDvewMZfa4wZOtk5pRgw==",
+ "requires": {
+ "@babel/core": "^7.20.7",
+ "@babel/plugin-transform-typescript": "^7.20.7",
+ "@vue/babel-plugin-jsx": "^1.1.1"
+ }
+ },
+ "@volar/language-core": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmmirror.com/@volar/language-core/-/language-core-1.4.1.tgz",
+ "integrity": "sha512-EIY+Swv+TjsWpxOxujjMf1ZXqOjg9MT2VMXZ+1dKva0wD8W0L6EtptFFcCJdBbcKmGMFkr57Qzz9VNMWhs3jXQ==",
+ "dev": true,
+ "requires": {
+ "@volar/source-map": "1.4.1"
+ }
+ },
+ "@volar/source-map": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmmirror.com/@volar/source-map/-/source-map-1.4.1.tgz",
+ "integrity": "sha512-bZ46ad72dsbzuOWPUtJjBXkzSQzzSejuR3CT81+GvTEI2E994D8JPXzM3tl98zyCNnjgs4OkRyliImL1dvJ5BA==",
+ "dev": true,
+ "requires": {
+ "muggle-string": "^0.2.2"
+ }
+ },
+ "@volar/typescript": {
+ "version": "1.4.1-patch.2",
+ "resolved": "https://registry.npmmirror.com/@volar/typescript/-/typescript-1.4.1-patch.2.tgz",
+ "integrity": "sha512-lPFYaGt8OdMEzNGJJChF40uYqMO4Z/7Q9fHPQC/NRVtht43KotSXLrkPandVVMf9aPbiJ059eAT+fwHGX16k4w==",
+ "dev": true,
+ "requires": {
+ "@volar/language-core": "1.4.1"
+ }
+ },
+ "@volar/vue-language-core": {
+ "version": "1.6.5",
+ "resolved": "https://registry.npmmirror.com/@volar/vue-language-core/-/vue-language-core-1.6.5.tgz",
+ "integrity": "sha512-IF2b6hW4QAxfsLd5mePmLgtkXzNi+YnH6ltCd80gb7+cbdpFMjM1I+w+nSg2kfBTyfu+W8useCZvW89kPTBpzg==",
+ "dev": true,
+ "requires": {
+ "@volar/language-core": "1.4.1",
+ "@volar/source-map": "1.4.1",
+ "@vue/compiler-dom": "^3.3.0",
+ "@vue/compiler-sfc": "^3.3.0",
+ "@vue/reactivity": "^3.3.0",
+ "@vue/shared": "^3.3.0",
+ "minimatch": "^9.0.0",
+ "muggle-string": "^0.2.2",
+ "vue-template-compiler": "^2.7.14"
+ }
+ },
+ "@volar/vue-typescript": {
+ "version": "1.6.5",
+ "resolved": "https://registry.npmmirror.com/@volar/vue-typescript/-/vue-typescript-1.6.5.tgz",
+ "integrity": "sha512-er9rVClS4PHztMUmtPMDTl+7c7JyrxweKSAEe/o/Noeq2bQx6v3/jZHVHBe8ZNUti5ubJL/+Tg8L3bzmlalV8A==",
+ "dev": true,
+ "requires": {
+ "@volar/typescript": "1.4.1-patch.2",
+ "@volar/vue-language-core": "1.6.5"
+ }
+ },
+ "@vue-macros/common": {
+ "version": "0.13.8",
+ "resolved": "https://registry.npmmirror.com/@vue-macros/common/-/common-0.13.8.tgz",
+ "integrity": "sha512-Fs8PNCR117MpR4MQYLupG6qary3n6ZKIkuuaJbmYJ+n3QUiO9LmBs1GgF9L+RQ+M4UDdfuk7LbvZwnWJ89MABA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.20.7",
+ "@vue/compiler-sfc": "^3.2.45",
+ "local-pkg": "^0.4.2",
+ "magic-string": "^0.27.0"
+ },
+ "dependencies": {
+ "magic-string": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.27.0.tgz",
+ "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==",
+ "dev": true,
+ "requires": {
+ "@jridgewell/sourcemap-codec": "^1.4.13"
+ }
+ }
+ }
+ },
+ "@vue/babel-helper-vue-transform-on": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz",
+ "integrity": "sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA=="
+ },
+ "@vue/babel-plugin-jsx": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.1.tgz",
+ "integrity": "sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==",
+ "requires": {
+ "@babel/helper-module-imports": "^7.0.0",
+ "@babel/plugin-syntax-jsx": "^7.0.0",
+ "@babel/template": "^7.0.0",
+ "@babel/traverse": "^7.0.0",
+ "@babel/types": "^7.0.0",
+ "@vue/babel-helper-vue-transform-on": "^1.0.2",
+ "camelcase": "^6.0.0",
+ "html-tags": "^3.1.0",
+ "svg-tags": "^1.0.0"
+ }
+ },
+ "@vue/compiler-core": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.3.4.tgz",
+ "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==",
+ "requires": {
+ "@babel/parser": "^7.21.3",
+ "@vue/shared": "3.3.4",
+ "estree-walker": "^2.0.2",
+ "source-map-js": "^1.0.2"
+ }
+ },
+ "@vue/compiler-dom": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz",
+ "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==",
+ "requires": {
+ "@vue/compiler-core": "3.3.4",
+ "@vue/shared": "3.3.4"
+ }
+ },
+ "@vue/compiler-sfc": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz",
+ "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==",
+ "requires": {
+ "@babel/parser": "^7.20.15",
+ "@vue/compiler-core": "3.3.4",
+ "@vue/compiler-dom": "3.3.4",
+ "@vue/compiler-ssr": "3.3.4",
+ "@vue/reactivity-transform": "3.3.4",
+ "@vue/shared": "3.3.4",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.0",
+ "postcss": "^8.1.10",
+ "source-map-js": "^1.0.2"
+ }
+ },
+ "@vue/compiler-ssr": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz",
+ "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==",
+ "requires": {
+ "@vue/compiler-dom": "3.3.4",
+ "@vue/shared": "3.3.4"
+ }
+ },
+ "@vue/devtools-api": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.5.0.tgz",
+ "integrity": "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q=="
+ },
+ "@vue/reactivity": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.3.4.tgz",
+ "integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==",
+ "requires": {
+ "@vue/shared": "3.3.4"
+ }
+ },
+ "@vue/reactivity-transform": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz",
+ "integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==",
+ "requires": {
+ "@babel/parser": "^7.20.15",
+ "@vue/compiler-core": "3.3.4",
+ "@vue/shared": "3.3.4",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.0"
+ }
+ },
+ "@vue/runtime-core": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.3.4.tgz",
+ "integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==",
+ "requires": {
+ "@vue/reactivity": "3.3.4",
+ "@vue/shared": "3.3.4"
+ }
+ },
+ "@vue/runtime-dom": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz",
+ "integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==",
+ "requires": {
+ "@vue/runtime-core": "3.3.4",
+ "@vue/shared": "3.3.4",
+ "csstype": "^3.1.1"
+ }
+ },
+ "@vue/server-renderer": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.3.4.tgz",
+ "integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==",
+ "requires": {
+ "@vue/compiler-ssr": "3.3.4",
+ "@vue/shared": "3.3.4"
+ }
+ },
+ "@vue/shared": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.3.4.tgz",
+ "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ=="
+ },
+ "@vueuse/core": {
+ "version": "9.6.0",
+ "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-9.6.0.tgz",
+ "integrity": "sha512-qGUcjKQXHgN+jqXEgpeZGoxdCbIDCdVPz3QiF1uyecVGbMuM63o96I1GjYx5zskKgRI0FKSNsVWM7rwrRMTf6A==",
+ "requires": {
+ "@types/web-bluetooth": "^0.0.16",
+ "@vueuse/metadata": "9.6.0",
+ "@vueuse/shared": "9.6.0",
+ "vue-demi": "*"
+ },
+ "dependencies": {
+ "vue-demi": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.5.tgz",
+ "integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==",
+ "requires": {}
+ }
+ }
+ },
+ "@vueuse/metadata": {
+ "version": "9.6.0",
+ "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.6.0.tgz",
+ "integrity": "sha512-sIC8R+kWkIdpi5X2z2Gk8TRYzmczDwHRhEFfCu2P+XW2JdPoXrziqsGpDDsN7ykBx4ilwieS7JUIweVGhvZ93w=="
+ },
+ "@vueuse/shared": {
+ "version": "9.6.0",
+ "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.6.0.tgz",
+ "integrity": "sha512-/eDchxYYhkHnFyrb00t90UfjCx94kRHxc7J1GtBCqCG4HyPMX+krV9XJgVtWIsAMaxKVU4fC8NSUviG1JkwhUQ==",
+ "requires": {
+ "vue-demi": "*"
+ },
+ "dependencies": {
+ "vue-demi": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.5.tgz",
+ "integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==",
+ "requires": {}
+ }
+ }
+ },
+ "@webassemblyjs/ast": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.11.6.tgz",
+ "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@webassemblyjs/helper-numbers": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6"
+ }
+ },
+ "@webassemblyjs/floating-point-hex-parser": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz",
+ "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==",
+ "dev": true,
+ "peer": true
+ },
+ "@webassemblyjs/helper-api-error": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz",
+ "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==",
+ "dev": true,
+ "peer": true
+ },
+ "@webassemblyjs/helper-buffer": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz",
+ "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==",
+ "dev": true,
+ "peer": true
+ },
+ "@webassemblyjs/helper-numbers": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz",
+ "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@webassemblyjs/floating-point-hex-parser": "1.11.6",
+ "@webassemblyjs/helper-api-error": "1.11.6",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@webassemblyjs/helper-wasm-bytecode": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz",
+ "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==",
+ "dev": true,
+ "peer": true
+ },
+ "@webassemblyjs/helper-wasm-section": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz",
+ "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/helper-buffer": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/wasm-gen": "1.11.6"
+ }
+ },
+ "@webassemblyjs/ieee754": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz",
+ "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@xtuc/ieee754": "^1.2.0"
+ }
+ },
+ "@webassemblyjs/leb128": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz",
+ "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@webassemblyjs/utf8": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz",
+ "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==",
+ "dev": true,
+ "peer": true
+ },
+ "@webassemblyjs/wasm-edit": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz",
+ "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/helper-buffer": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/helper-wasm-section": "1.11.6",
+ "@webassemblyjs/wasm-gen": "1.11.6",
+ "@webassemblyjs/wasm-opt": "1.11.6",
+ "@webassemblyjs/wasm-parser": "1.11.6",
+ "@webassemblyjs/wast-printer": "1.11.6"
+ }
+ },
+ "@webassemblyjs/wasm-gen": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz",
+ "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/ieee754": "1.11.6",
+ "@webassemblyjs/leb128": "1.11.6",
+ "@webassemblyjs/utf8": "1.11.6"
+ }
+ },
+ "@webassemblyjs/wasm-opt": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz",
+ "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/helper-buffer": "1.11.6",
+ "@webassemblyjs/wasm-gen": "1.11.6",
+ "@webassemblyjs/wasm-parser": "1.11.6"
+ }
+ },
+ "@webassemblyjs/wasm-parser": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz",
+ "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/helper-api-error": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/ieee754": "1.11.6",
+ "@webassemblyjs/leb128": "1.11.6",
+ "@webassemblyjs/utf8": "1.11.6"
+ }
+ },
+ "@webassemblyjs/wast-printer": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz",
+ "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.11.6",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@windicss/config": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@windicss/config/-/config-1.9.0.tgz",
+ "integrity": "sha512-QO4+udbmDIgZwAi89tqUt5nGwBq3IgyELjLn83twZXiIqzOw+77ecCuM0oPSbzWmIbCqXq3wRQHd6Z1u5E/5zQ==",
+ "requires": {
+ "debug": "^4.3.4",
+ "jiti": "^1.18.2",
+ "windicss": "^3.5.6"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ }
+ }
+ },
+ "@windicss/plugin-utils": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@windicss/plugin-utils/-/plugin-utils-1.9.0.tgz",
+ "integrity": "sha512-omAacM5ExIr9XBUI2z47CyCXJBke4imJZqXW41YgHhRLbahTngbScFk5yxa6dXivDXUpUKqasOPXBJgA4bhHCg==",
+ "requires": {
+ "@antfu/utils": "^0.7.2",
+ "@windicss/config": "1.9.0",
+ "debug": "^4.3.4",
+ "fast-glob": "^3.2.12",
+ "magic-string": "^0.30.0",
+ "micromatch": "^4.0.5",
+ "windicss": "^3.5.6"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ }
+ }
+ },
+ "@xtuc/ieee754": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
+ "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
+ "dev": true,
+ "peer": true
+ },
+ "@xtuc/long": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmmirror.com/@xtuc/long/-/long-4.2.2.tgz",
+ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
+ "dev": true,
+ "peer": true
+ },
+ "acorn": {
+ "version": "8.8.2",
+ "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.8.2.tgz",
+ "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==",
+ "devOptional": true
+ },
+ "acorn-import-assertions": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz",
+ "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==",
+ "dev": true,
+ "peer": true,
+ "requires": {}
+ },
+ "adler-32": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmmirror.com/adler-32/-/adler-32-1.3.1.tgz",
+ "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A=="
+ },
+ "ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "ajv-keywords": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {}
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "ant-design-vue": {
+ "version": "3.2.20",
+ "resolved": "https://registry.npmmirror.com/ant-design-vue/-/ant-design-vue-3.2.20.tgz",
+ "integrity": "sha512-YWpMfGaGoRastIXEYfCoJiaRiDHk4chqtYhlKQM5GqPt6NfvrM1Vg2e60yHtjxlZjed91wCMm0rAmyUr7Hwzdg==",
+ "requires": {
+ "@ant-design/colors": "^6.0.0",
+ "@ant-design/icons-vue": "^6.1.0",
+ "@babel/runtime": "^7.10.5",
+ "@ctrl/tinycolor": "^3.4.0",
+ "@simonwep/pickr": "~1.8.0",
+ "array-tree-filter": "^2.1.0",
+ "async-validator": "^4.0.0",
+ "dayjs": "^1.10.5",
+ "dom-align": "^1.12.1",
+ "dom-scroll-into-view": "^2.0.0",
+ "lodash": "^4.17.21",
+ "lodash-es": "^4.17.15",
+ "resize-observer-polyfill": "^1.5.1",
+ "scroll-into-view-if-needed": "^2.2.25",
+ "shallow-equal": "^1.0.0",
+ "vue-types": "^3.0.0",
+ "warning": "^4.0.0"
+ }
+ },
+ "anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "dev": true,
+ "requires": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ }
+ },
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==",
+ "dev": true
+ },
+ "arr-flatten": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/arr-flatten/-/arr-flatten-1.1.0.tgz",
+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
+ "dev": true
+ },
+ "arr-union": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/arr-union/-/arr-union-3.1.0.tgz",
+ "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==",
+ "dev": true
+ },
+ "array-tree-filter": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/array-tree-filter/-/array-tree-filter-2.1.0.tgz",
+ "integrity": "sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw=="
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmmirror.com/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==",
+ "dev": true
+ },
+ "assign-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/assign-symbols/-/assign-symbols-1.0.0.tgz",
+ "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==",
+ "dev": true
+ },
+ "ast-walker-scope": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmmirror.com/ast-walker-scope/-/ast-walker-scope-0.3.1.tgz",
+ "integrity": "sha512-c+tWaEoA+b4yJp0NUI8/hYKUv1ELqpCMU/fogGazXxu7EXlry37q1wdfhaQqVmQn4l4agMeo4ek76LyKFIxkKA==",
+ "dev": true,
+ "requires": {
+ "@babel/parser": "^7.20.5",
+ "@babel/types": "^7.20.5"
+ }
+ },
+ "async-validator": {
+ "version": "4.2.5",
+ "resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz",
+ "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg=="
+ },
+ "asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+ },
+ "atob": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/atob/-/atob-2.1.2.tgz",
+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
+ "dev": true
+ },
+ "axios": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/axios/-/axios-1.4.0.tgz",
+ "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==",
+ "requires": {
+ "follow-redirects": "^1.15.0",
+ "form-data": "^4.0.0",
+ "proxy-from-env": "^1.1.0"
+ }
+ },
+ "balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
+ },
+ "base": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npmmirror.com/base/-/base-0.11.2.tgz",
+ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+ "dev": true,
+ "requires": {
+ "cache-base": "^1.0.1",
+ "class-utils": "^0.3.5",
+ "component-emitter": "^1.2.1",
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.1",
+ "mixin-deep": "^1.2.0",
+ "pascalcase": "^0.1.1"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true
+ }
+ }
+ },
+ "big.js": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmmirror.com/big.js/-/big.js-5.2.2.tgz",
+ "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
+ "dev": true
+ },
+ "binary-extensions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz",
+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+ "dev": true
+ },
+ "bluebird": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmmirror.com/bluebird/-/bluebird-3.7.2.tgz",
+ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
+ "dev": true
+ },
+ "boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+ "dev": true
+ },
+ "brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "requires": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "requires": {
+ "fill-range": "^7.0.1"
+ }
+ },
+ "browserslist": {
+ "version": "4.21.5",
+ "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.21.5.tgz",
+ "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
+ "requires": {
+ "caniuse-lite": "^1.0.30001449",
+ "electron-to-chromium": "^1.4.284",
+ "node-releases": "^2.0.8",
+ "update-browserslist-db": "^1.0.10"
+ }
+ },
+ "buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "devOptional": true
+ },
+ "cache-base": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/cache-base/-/cache-base-1.0.1.tgz",
+ "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
+ "dev": true,
+ "requires": {
+ "collection-visit": "^1.0.0",
+ "component-emitter": "^1.2.1",
+ "get-value": "^2.0.6",
+ "has-value": "^1.0.0",
+ "isobject": "^3.0.1",
+ "set-value": "^2.0.0",
+ "to-object-path": "^0.3.0",
+ "union-value": "^1.0.0",
+ "unset-value": "^1.0.0"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true
+ }
+ }
+ },
+ "call-bind": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.2.tgz",
+ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "requires": {
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.0.2"
+ }
+ },
+ "camelcase": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-6.3.0.tgz",
+ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA=="
+ },
+ "caniuse-lite": {
+ "version": "1.0.30001489",
+ "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001489.tgz",
+ "integrity": "sha512-x1mgZEXK8jHIfAxm+xgdpHpk50IN3z3q3zP261/WS+uvePxW8izXuCu6AHz0lkuYTlATDehiZ/tNyYBdSQsOUQ=="
+ },
+ "cfb": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmmirror.com/cfb/-/cfb-1.2.2.tgz",
+ "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==",
+ "requires": {
+ "adler-32": "~1.3.0",
+ "crc-32": "~1.2.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "dependencies": {
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw=="
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "chokidar": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz",
+ "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+ "dev": true,
+ "requires": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "fsevents": "~2.3.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ }
+ },
+ "chrome-trace-event": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
+ "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
+ "dev": true,
+ "peer": true
+ },
+ "class-utils": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmmirror.com/class-utils/-/class-utils-0.3.6.tgz",
+ "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
+ "dev": true,
+ "requires": {
+ "arr-union": "^3.1.0",
+ "define-property": "^0.2.5",
+ "isobject": "^3.0.0",
+ "static-extend": "^0.1.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true
+ }
+ }
+ },
+ "clone": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/clone/-/clone-2.1.2.tgz",
+ "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==",
+ "dev": true
+ },
+ "codepage": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmmirror.com/codepage/-/codepage-1.15.0.tgz",
+ "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA=="
+ },
+ "collection-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/collection-visit/-/collection-visit-1.0.0.tgz",
+ "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==",
+ "dev": true,
+ "requires": {
+ "map-visit": "^1.0.0",
+ "object-visit": "^1.0.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
+ },
+ "combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "requires": {
+ "delayed-stream": "~1.0.0"
+ }
+ },
+ "commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "devOptional": true
+ },
+ "component-emitter": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/component-emitter/-/component-emitter-1.3.0.tgz",
+ "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
+ "dev": true
+ },
+ "compute-scroll-into-view": {
+ "version": "1.0.20",
+ "resolved": "https://registry.npmmirror.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz",
+ "integrity": "sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg=="
+ },
+ "convert-source-map": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-1.9.0.tgz",
+ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A=="
+ },
+ "copy-anything": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmmirror.com/copy-anything/-/copy-anything-2.0.6.tgz",
+ "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==",
+ "devOptional": true,
+ "requires": {
+ "is-what": "^3.14.1"
+ }
+ },
+ "copy-descriptor": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmmirror.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
+ "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==",
+ "dev": true
+ },
+ "core-js": {
+ "version": "3.30.2",
+ "resolved": "https://registry.npmmirror.com/core-js/-/core-js-3.30.2.tgz",
+ "integrity": "sha512-uBJiDmwqsbJCWHAwjrx3cvjbMXP7xD72Dmsn5LOJpiRmE3WbBbN5rCqQ2Qh6Ek6/eOrjlWngEynBWo4VxerQhg=="
+ },
+ "cors": {
+ "version": "2.8.5",
+ "resolved": "https://registry.npmmirror.com/cors/-/cors-2.8.5.tgz",
+ "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
+ "dev": true,
+ "requires": {
+ "object-assign": "^4",
+ "vary": "^1"
+ }
+ },
+ "crc-32": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmmirror.com/crc-32/-/crc-32-1.2.2.tgz",
+ "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ=="
+ },
+ "cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "requires": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ }
+ },
+ "css-select": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/css-select/-/css-select-4.3.0.tgz",
+ "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
+ "dev": true,
+ "requires": {
+ "boolbase": "^1.0.0",
+ "css-what": "^6.0.1",
+ "domhandler": "^4.3.1",
+ "domutils": "^2.8.0",
+ "nth-check": "^2.0.1"
+ },
+ "dependencies": {
+ "dom-serializer": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz",
+ "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
+ "dev": true,
+ "requires": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.2.0",
+ "entities": "^2.0.0"
+ }
+ },
+ "domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "dev": true
+ },
+ "domhandler": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmmirror.com/domhandler/-/domhandler-4.3.1.tgz",
+ "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
+ "dev": true,
+ "requires": {
+ "domelementtype": "^2.2.0"
+ }
+ },
+ "domutils": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz",
+ "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
+ "dev": true,
+ "requires": {
+ "dom-serializer": "^1.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0"
+ }
+ },
+ "entities": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/entities/-/entities-2.2.0.tgz",
+ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
+ "dev": true
+ }
+ }
+ },
+ "css-tree": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmmirror.com/css-tree/-/css-tree-1.1.3.tgz",
+ "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
+ "dev": true,
+ "requires": {
+ "mdn-data": "2.0.14",
+ "source-map": "^0.6.1"
+ }
+ },
+ "css-what": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmmirror.com/css-what/-/css-what-6.1.0.tgz",
+ "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
+ "dev": true
+ },
+ "csso": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmmirror.com/csso/-/csso-4.2.0.tgz",
+ "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==",
+ "dev": true,
+ "requires": {
+ "css-tree": "^1.1.2"
+ }
+ },
+ "csstype": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.2.tgz",
+ "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
+ },
+ "dayjs": {
+ "version": "1.11.7",
+ "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.7.tgz",
+ "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ=="
+ },
+ "de-indent": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz",
+ "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==",
+ "dev": true
+ },
+ "debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "optional": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "decode-uri-component": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmmirror.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
+ "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
+ "dev": true
+ },
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
+ },
+ "dom-align": {
+ "version": "1.12.4",
+ "resolved": "https://registry.npmmirror.com/dom-align/-/dom-align-1.12.4.tgz",
+ "integrity": "sha512-R8LUSEay/68zE5c8/3BDxiTEvgb4xZTF0RKmAHfiEVN3klfIpXfi2/QCoiWPccVQ0J/ZGdz9OjzL4uJEP/MRAw=="
+ },
+ "dom-scroll-into-view": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/dom-scroll-into-view/-/dom-scroll-into-view-2.0.1.tgz",
+ "integrity": "sha512-bvVTQe1lfaUr1oFzZX80ce9KLDlZ3iU+XGNE/bz9HnGdklTieqsbmsLHe+rT2XWqopvL0PckkYqN7ksmm5pe3w=="
+ },
+ "dom-serializer": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-0.2.2.tgz",
+ "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==",
+ "dev": true,
+ "requires": {
+ "domelementtype": "^2.0.1",
+ "entities": "^2.0.0"
+ },
+ "dependencies": {
+ "domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "dev": true
+ },
+ "entities": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/entities/-/entities-2.2.0.tgz",
+ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
+ "dev": true
+ }
+ }
+ },
+ "domelementtype": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-1.3.1.tgz",
+ "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
+ "dev": true
+ },
+ "domhandler": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmmirror.com/domhandler/-/domhandler-2.4.2.tgz",
+ "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
+ "dev": true,
+ "requires": {
+ "domelementtype": "1"
+ }
+ },
+ "domutils": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmmirror.com/domutils/-/domutils-1.7.0.tgz",
+ "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
+ "dev": true,
+ "requires": {
+ "dom-serializer": "0",
+ "domelementtype": "1"
+ }
+ },
+ "eastasianwidth": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmmirror.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+ "dev": true
+ },
+ "electron-to-chromium": {
+ "version": "1.4.407",
+ "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.407.tgz",
+ "integrity": "sha512-5smEvFSFYMv90tICOzRVP7Opp98DAC4KW7RRipg3BuNpGbbV3N+x24Zh3sbLb1T5haGtOSy/hrBfXsWnIM9aCg=="
+ },
+ "emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "dev": true
+ },
+ "emojis-list": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/emojis-list/-/emojis-list-3.0.0.tgz",
+ "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
+ "dev": true
+ },
+ "enhanced-resolve": {
+ "version": "5.14.1",
+ "resolved": "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.14.1.tgz",
+ "integrity": "sha512-Vklwq2vDKtl0y/vtwjSesgJ5MYS7Etuk5txS8VdKL4AOS1aUlD96zqIfsOSLQsdv3xgMRbtkWM8eG9XDfKUPow==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.2.0"
+ }
+ },
+ "entities": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/entities/-/entities-1.1.2.tgz",
+ "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==",
+ "dev": true
+ },
+ "errno": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz",
+ "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
+ "optional": true,
+ "requires": {
+ "prr": "~1.0.1"
+ }
+ },
+ "es-module-lexer": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.2.1.tgz",
+ "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==",
+ "dev": true,
+ "peer": true
+ },
+ "esbuild": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.17.19.tgz",
+ "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==",
+ "requires": {
+ "@esbuild/android-arm": "0.17.19",
+ "@esbuild/android-arm64": "0.17.19",
+ "@esbuild/android-x64": "0.17.19",
+ "@esbuild/darwin-arm64": "0.17.19",
+ "@esbuild/darwin-x64": "0.17.19",
+ "@esbuild/freebsd-arm64": "0.17.19",
+ "@esbuild/freebsd-x64": "0.17.19",
+ "@esbuild/linux-arm": "0.17.19",
+ "@esbuild/linux-arm64": "0.17.19",
+ "@esbuild/linux-ia32": "0.17.19",
+ "@esbuild/linux-loong64": "0.17.19",
+ "@esbuild/linux-mips64el": "0.17.19",
+ "@esbuild/linux-ppc64": "0.17.19",
+ "@esbuild/linux-riscv64": "0.17.19",
+ "@esbuild/linux-s390x": "0.17.19",
+ "@esbuild/linux-x64": "0.17.19",
+ "@esbuild/netbsd-x64": "0.17.19",
+ "@esbuild/openbsd-x64": "0.17.19",
+ "@esbuild/sunos-x64": "0.17.19",
+ "@esbuild/win32-arm64": "0.17.19",
+ "@esbuild/win32-ia32": "0.17.19",
+ "@esbuild/win32-x64": "0.17.19"
+ }
+ },
+ "escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw=="
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg=="
+ },
+ "eslint-scope": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz",
+ "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
+ }
+ },
+ "esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "estraverse": "^5.2.0"
+ },
+ "dependencies": {
+ "estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "peer": true
+ }
+ }
+ },
+ "estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "dev": true,
+ "peer": true
+ },
+ "estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+ },
+ "etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "dev": true
+ },
+ "events": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmmirror.com/events/-/events-3.3.0.tgz",
+ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
+ "dev": true,
+ "peer": true
+ },
+ "expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmmirror.com/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==",
+ "dev": true,
+ "requires": {
+ "debug": "^2.3.3",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "posix-character-classes": "^0.1.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ }
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "dev": true,
+ "requires": {
+ "array-unique": "^0.3.2",
+ "define-property": "^1.0.0",
+ "expand-brackets": "^2.1.4",
+ "extend-shallow": "^2.0.1",
+ "fragment-cache": "^0.2.1",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ }
+ },
+ "fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true,
+ "peer": true
+ },
+ "fast-glob": {
+ "version": "3.2.12",
+ "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.2.12.tgz",
+ "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
+ "requires": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ }
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true,
+ "peer": true
+ },
+ "fastq": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.15.0.tgz",
+ "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
+ "requires": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "file-saver": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/file-saver/-/file-saver-2.0.5.tgz",
+ "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA=="
+ },
+ "fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "requires": {
+ "to-regex-range": "^5.0.1"
+ }
+ },
+ "follow-redirects": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.2.tgz",
+ "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA=="
+ },
+ "for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==",
+ "dev": true
+ },
+ "foreground-child": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/foreground-child/-/foreground-child-3.1.1.tgz",
+ "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^7.0.0",
+ "signal-exit": "^4.0.1"
+ }
+ },
+ "form-data": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz",
+ "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+ "requires": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ }
+ },
+ "frac": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/frac/-/frac-1.1.2.tgz",
+ "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA=="
+ },
+ "fragment-cache": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/fragment-cache/-/fragment-cache-0.2.1.tgz",
+ "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==",
+ "dev": true,
+ "requires": {
+ "map-cache": "^0.2.2"
+ }
+ },
+ "fs-extra": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz",
+ "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ }
+ },
+ "fsevents": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz",
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "optional": true
+ },
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+ },
+ "gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="
+ },
+ "get-intrinsic": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz",
+ "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==",
+ "requires": {
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3"
+ }
+ },
+ "get-value": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmmirror.com/get-value/-/get-value-2.0.6.tgz",
+ "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==",
+ "dev": true
+ },
+ "glob": {
+ "version": "10.2.7",
+ "resolved": "https://registry.npmmirror.com/glob/-/glob-10.2.7.tgz",
+ "integrity": "sha512-jTKehsravOJo8IJxUGfZILnkvVJM/MOfHRs8QcXolVef2zNI9Tqyy5+SeuOAZd3upViEZQLyFpQhYiHLrMUNmA==",
+ "dev": true,
+ "requires": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^2.0.3",
+ "minimatch": "^9.0.1",
+ "minipass": "^5.0.0 || ^6.0.2",
+ "path-scurry": "^1.7.0"
+ }
+ },
+ "glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "requires": {
+ "is-glob": "^4.0.1"
+ }
+ },
+ "glob-to-regexp": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmmirror.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
+ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
+ "dev": true,
+ "peer": true
+ },
+ "globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="
+ },
+ "globrex": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmmirror.com/globrex/-/globrex-0.1.2.tgz",
+ "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==",
+ "dev": true
+ },
+ "graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "devOptional": true
+ },
+ "has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "requires": {
+ "function-bind": "^1.1.1"
+ }
+ },
+ "has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "has-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.1.tgz",
+ "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg=="
+ },
+ "has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
+ },
+ "has-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/has-value/-/has-value-1.0.0.tgz",
+ "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==",
+ "dev": true,
+ "requires": {
+ "get-value": "^2.0.6",
+ "has-values": "^1.0.0",
+ "isobject": "^3.0.0"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true
+ }
+ }
+ },
+ "has-values": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/has-values/-/has-values-1.0.0.tgz",
+ "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "kind-of": "^4.0.0"
+ },
+ "dependencies": {
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "kind-of": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-4.0.0.tgz",
+ "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "he": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz",
+ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
+ "dev": true
+ },
+ "html-tags": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/html-tags/-/html-tags-3.3.1.tgz",
+ "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ=="
+ },
+ "htmlparser2": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-3.10.1.tgz",
+ "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==",
+ "dev": true,
+ "requires": {
+ "domelementtype": "^1.3.1",
+ "domhandler": "^2.3.0",
+ "domutils": "^1.5.1",
+ "entities": "^1.1.1",
+ "inherits": "^2.0.1",
+ "readable-stream": "^3.1.1"
+ }
+ },
+ "iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "optional": true,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ }
+ },
+ "image-size": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz",
+ "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==",
+ "devOptional": true
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "dev": true
+ }
+ }
+ },
+ "is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "dev": true,
+ "requires": {
+ "binary-extensions": "^2.0.0"
+ }
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "is-core-module": {
+ "version": "2.12.1",
+ "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.12.1.tgz",
+ "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==",
+ "dev": true,
+ "requires": {
+ "has": "^1.0.3"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "dev": true
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "dev": true
+ }
+ }
+ },
+ "is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
+ "dev": true
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="
+ },
+ "is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ },
+ "is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
+ },
+ "is-plain-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+ "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
+ "dev": true
+ },
+ "is-plain-object": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-3.0.1.tgz",
+ "integrity": "sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g=="
+ },
+ "is-what": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz",
+ "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==",
+ "devOptional": true
+ },
+ "is-windows": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+ "dev": true
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "dev": true
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true
+ },
+ "isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==",
+ "dev": true,
+ "requires": {
+ "isarray": "1.0.0"
+ }
+ },
+ "jackspeak": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/jackspeak/-/jackspeak-2.2.1.tgz",
+ "integrity": "sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==",
+ "dev": true,
+ "requires": {
+ "@isaacs/cliui": "^8.0.2",
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
+ "jest-worker": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-worker/-/jest-worker-27.5.1.tgz",
+ "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@types/node": "*",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^8.0.0"
+ }
+ },
+ "jiti": {
+ "version": "1.18.2",
+ "resolved": "https://registry.npmmirror.com/jiti/-/jiti-1.18.2.tgz",
+ "integrity": "sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg=="
+ },
+ "js-base64": {
+ "version": "2.6.4",
+ "resolved": "https://registry.npmmirror.com/js-base64/-/js-base64-2.6.4.tgz",
+ "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==",
+ "dev": true
+ },
+ "js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+ },
+ "jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA=="
+ },
+ "json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "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==",
+ "dev": true,
+ "peer": true
+ },
+ "json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true,
+ "peer": true
+ },
+ "json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="
+ },
+ "jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.6",
+ "universalify": "^2.0.0"
+ }
+ },
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
+ },
+ "klona": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmmirror.com/klona/-/klona-2.0.6.tgz",
+ "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==",
+ "dev": true
+ },
+ "kolorist": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmmirror.com/kolorist/-/kolorist-1.8.0.tgz",
+ "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ=="
+ },
+ "less": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmmirror.com/less/-/less-4.1.3.tgz",
+ "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==",
+ "devOptional": true,
+ "requires": {
+ "copy-anything": "^2.0.1",
+ "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",
+ "parse-node-version": "^1.0.1",
+ "source-map": "~0.6.0",
+ "tslib": "^2.3.0"
+ }
+ },
+ "less-loader": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmmirror.com/less-loader/-/less-loader-11.1.0.tgz",
+ "integrity": "sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==",
+ "dev": true,
+ "requires": {
+ "klona": "^2.0.4"
+ }
+ },
+ "loader-runner": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/loader-runner/-/loader-runner-4.3.0.tgz",
+ "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
+ "dev": true,
+ "peer": true
+ },
+ "loader-utils": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.2.tgz",
+ "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==",
+ "dev": true,
+ "requires": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^1.0.1"
+ },
+ "dependencies": {
+ "json5": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.2.tgz",
+ "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
+ "dev": true,
+ "requires": {
+ "minimist": "^1.2.0"
+ }
+ }
+ }
+ },
+ "local-pkg": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmmirror.com/local-pkg/-/local-pkg-0.4.3.tgz",
+ "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==",
+ "dev": true
+ },
+ "lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+ },
+ "lodash-es": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz",
+ "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
+ },
+ "loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "requires": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ }
+ },
+ "lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "requires": {
+ "yallist": "^4.0.0"
+ }
+ },
+ "magic-string": {
+ "version": "0.30.0",
+ "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.0.tgz",
+ "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==",
+ "requires": {
+ "@jridgewell/sourcemap-codec": "^1.4.13"
+ }
+ },
+ "make-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz",
+ "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+ "optional": true,
+ "requires": {
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "optional": true
+ }
+ }
+ },
+ "map-cache": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmmirror.com/map-cache/-/map-cache-0.2.2.tgz",
+ "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==",
+ "dev": true
+ },
+ "map-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/map-visit/-/map-visit-1.0.0.tgz",
+ "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==",
+ "dev": true,
+ "requires": {
+ "object-visit": "^1.0.0"
+ }
+ },
+ "mdn-data": {
+ "version": "2.0.14",
+ "resolved": "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.14.tgz",
+ "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==",
+ "dev": true
+ },
+ "merge-options": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/merge-options/-/merge-options-1.0.1.tgz",
+ "integrity": "sha512-iuPV41VWKWBIOpBsjoxjDZw8/GbSfZ2mk7N1453bwMrfzdrIk7EzBd+8UVR6rkw67th7xnk9Dytl3J+lHPdxvg==",
+ "dev": true,
+ "requires": {
+ "is-plain-obj": "^1.1"
+ }
+ },
+ "merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "dev": true
+ },
+ "merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="
+ },
+ "micromatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz",
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "requires": {
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
+ }
+ },
+ "mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "optional": true
+ },
+ "mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
+ },
+ "mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "requires": {
+ "mime-db": "1.52.0"
+ }
+ },
+ "minimatch": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.1.tgz",
+ "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^2.0.1"
+ }
+ },
+ "minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "dev": true
+ },
+ "minipass": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmmirror.com/minipass/-/minipass-6.0.2.tgz",
+ "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==",
+ "dev": true
+ },
+ "mixin-deep": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmmirror.com/mixin-deep/-/mixin-deep-1.3.2.tgz",
+ "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
+ "dev": true,
+ "requires": {
+ "for-in": "^1.0.2",
+ "is-extendable": "^1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ },
+ "is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true
+ }
+ }
+ },
+ "ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "optional": true
+ },
+ "muggle-string": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmmirror.com/muggle-string/-/muggle-string-0.2.2.tgz",
+ "integrity": "sha512-YVE1mIJ4VpUMqZObFndk9CJu6DBJR/GB13p3tXuNbwD4XExaI5EOuRl6BHeIDxIqXZVxSfAC+y6U1Z/IxCfKUg==",
+ "dev": true
+ },
+ "nanoid": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.6.tgz",
+ "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA=="
+ },
+ "nanomatch": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmmirror.com/nanomatch/-/nanomatch-1.2.13.tgz",
+ "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "fragment-cache": "^0.2.1",
+ "is-windows": "^1.0.2",
+ "kind-of": "^6.0.2",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-2.0.2.tgz",
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.2",
+ "isobject": "^3.0.1"
+ }
+ },
+ "extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+ "dev": true,
+ "requires": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ }
+ },
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ },
+ "is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "dev": true
+ }
+ }
+ },
+ "nanopop": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/nanopop/-/nanopop-2.3.0.tgz",
+ "integrity": "sha512-fzN+T2K7/Ah25XU02MJkPZ5q4Tj5FpjmIYq4rvoHX4yb16HzFdCO6JxFFn5Y/oBhQ8no8fUZavnyIv9/+xkBBw=="
+ },
+ "needle": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmmirror.com/needle/-/needle-3.2.0.tgz",
+ "integrity": "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==",
+ "optional": true,
+ "requires": {
+ "debug": "^3.2.6",
+ "iconv-lite": "^0.6.3",
+ "sax": "^1.2.4"
+ }
+ },
+ "neo-async": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz",
+ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
+ "dev": true,
+ "peer": true
+ },
+ "node-releases": {
+ "version": "2.0.12",
+ "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.12.tgz",
+ "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ=="
+ },
+ "normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "dev": true
+ },
+ "nprogress": {
+ "version": "1.0.0-1",
+ "resolved": "https://registry.npmmirror.com/nprogress/-/nprogress-1.0.0-1.tgz",
+ "integrity": "sha512-Gr/Km0nIMbR7hOB0fjGx7nR0oRjTy9M61dXiQL5bfTBq0cQ+hNgt6gxE062j7Bxm+L/IjNVOr41iu2hrDeuedw==",
+ "dev": true
+ },
+ "nth-check": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz",
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "dev": true,
+ "requires": {
+ "boolbase": "^1.0.0"
+ }
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "dev": true
+ },
+ "object-copy": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmmirror.com/object-copy/-/object-copy-0.1.0.tgz",
+ "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==",
+ "dev": true,
+ "requires": {
+ "copy-descriptor": "^0.1.0",
+ "define-property": "^0.2.5",
+ "kind-of": "^3.0.3"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
+ }
+ }
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "object-inspect": {
+ "version": "1.12.3",
+ "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.12.3.tgz",
+ "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g=="
+ },
+ "object-visit": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/object-visit/-/object-visit-1.0.1.tgz",
+ "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.0"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true
+ }
+ }
+ },
+ "object.pick": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/object.pick/-/object.pick-1.3.0.tgz",
+ "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.1"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true
+ }
+ }
+ },
+ "parse-node-version": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/parse-node-version/-/parse-node-version-1.0.1.tgz",
+ "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==",
+ "devOptional": true
+ },
+ "pascalcase": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmmirror.com/pascalcase/-/pascalcase-0.1.1.tgz",
+ "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==",
+ "dev": true
+ },
+ "path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true
+ },
+ "path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true
+ },
+ "path-scurry": {
+ "version": "1.9.2",
+ "resolved": "https://registry.npmmirror.com/path-scurry/-/path-scurry-1.9.2.tgz",
+ "integrity": "sha512-qSDLy2aGFPm8i4rsbHd4MNyTcrzHFsLQykrtbuGRknZZCBBVXSv2tSCDN2Cg6Rt/GFRw8GoW9y9Ecw5rIPG1sg==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^9.1.1",
+ "minipass": "^5.0.0 || ^6.0.2"
+ },
+ "dependencies": {
+ "lru-cache": {
+ "version": "9.1.2",
+ "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-9.1.2.tgz",
+ "integrity": "sha512-ERJq3FOzJTxBbFjZ7iDs+NiK4VI9Wz+RdrrAB8dio1oV+YvdPzUEE4QNiT2VD51DkIbCYRUUzCRkssXCHqSnKQ==",
+ "dev": true
+ }
+ }
+ },
+ "pathe": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmmirror.com/pathe/-/pathe-0.2.0.tgz",
+ "integrity": "sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==",
+ "dev": true
+ },
+ "picocolors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
+ },
+ "picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="
+ },
+ "pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "optional": true
+ },
+ "pinia": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmmirror.com/pinia/-/pinia-2.1.3.tgz",
+ "integrity": "sha512-XNA/z/ye4P5rU1pieVmh0g/hSuDO98/a5UC8oSP0DNdvt6YtetJNHTrXwpwsQuflkGT34qKxAEcp7lSxXNjf/A==",
+ "requires": {
+ "@vue/devtools-api": "^6.5.0",
+ "vue-demi": ">=0.14.5"
+ },
+ "dependencies": {
+ "vue-demi": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.5.tgz",
+ "integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==",
+ "requires": {}
+ }
+ }
+ },
+ "posix-character-classes": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmmirror.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
+ "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "8.4.23",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.23.tgz",
+ "integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==",
+ "requires": {
+ "nanoid": "^3.3.6",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ }
+ },
+ "postcss-prefix-selector": {
+ "version": "1.16.0",
+ "resolved": "https://registry.npmmirror.com/postcss-prefix-selector/-/postcss-prefix-selector-1.16.0.tgz",
+ "integrity": "sha512-rdVMIi7Q4B0XbXqNUEI+Z4E+pueiu/CS5E6vRCQommzdQ/sgsS4dK42U7GX8oJR+TJOtT+Qv3GkNo6iijUMp3Q==",
+ "dev": true,
+ "requires": {}
+ },
+ "posthtml": {
+ "version": "0.9.2",
+ "resolved": "https://registry.npmmirror.com/posthtml/-/posthtml-0.9.2.tgz",
+ "integrity": "sha512-spBB5sgC4cv2YcW03f/IAUN1pgDJWNWD8FzkyY4mArLUMJW+KlQhlmUdKAHQuPfb00Jl5xIfImeOsf6YL8QK7Q==",
+ "dev": true,
+ "requires": {
+ "posthtml-parser": "^0.2.0",
+ "posthtml-render": "^1.0.5"
+ }
+ },
+ "posthtml-parser": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/posthtml-parser/-/posthtml-parser-0.2.1.tgz",
+ "integrity": "sha512-nPC53YMqJnc/+1x4fRYFfm81KV2V+G9NZY+hTohpYg64Ay7NemWWcV4UWuy/SgMupqQ3kJ88M/iRfZmSnxT+pw==",
+ "dev": true,
+ "requires": {
+ "htmlparser2": "^3.8.3",
+ "isobject": "^2.1.0"
+ }
+ },
+ "posthtml-rename-id": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmmirror.com/posthtml-rename-id/-/posthtml-rename-id-1.0.12.tgz",
+ "integrity": "sha512-UKXf9OF/no8WZo9edRzvuMenb6AD5hDLzIepJW+a4oJT+T/Lx7vfMYWT4aWlGNQh0WMhnUx1ipN9OkZ9q+ddEw==",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "1.0.5"
+ }
+ },
+ "posthtml-render": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/posthtml-render/-/posthtml-render-1.4.0.tgz",
+ "integrity": "sha512-W1779iVHGfq0Fvh2PROhCe2QhB8mEErgqzo1wpIt36tCgChafP+hbXIhLDOM8ePJrZcFs0vkNEtdibEWVqChqw==",
+ "dev": true
+ },
+ "posthtml-svg-mode": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/posthtml-svg-mode/-/posthtml-svg-mode-1.0.3.tgz",
+ "integrity": "sha512-hEqw9NHZ9YgJ2/0G7CECOeuLQKZi8HjWLkBaSVtOWjygQ9ZD8P7tqeowYs7WrFdKsWEKG7o+IlsPY8jrr0CJpQ==",
+ "dev": true,
+ "requires": {
+ "merge-options": "1.0.1",
+ "posthtml": "^0.9.2",
+ "posthtml-parser": "^0.2.1",
+ "posthtml-render": "^1.0.6"
+ }
+ },
+ "proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
+ },
+ "prr": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz",
+ "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
+ "optional": true
+ },
+ "punycode": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.0.tgz",
+ "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
+ "dev": true,
+ "peer": true
+ },
+ "qs": {
+ "version": "6.11.2",
+ "resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.2.tgz",
+ "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==",
+ "requires": {
+ "side-channel": "^1.0.4"
+ }
+ },
+ "query-string": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/query-string/-/query-string-4.3.4.tgz",
+ "integrity": "sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==",
+ "dev": true,
+ "requires": {
+ "object-assign": "^4.1.0",
+ "strict-uri-encode": "^1.0.0"
+ }
+ },
+ "queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="
+ },
+ "randombytes": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz",
+ "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ }
+ },
+ "readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "dev": true,
+ "requires": {
+ "picomatch": "^2.2.1"
+ }
+ },
+ "regenerator-runtime": {
+ "version": "0.13.11",
+ "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
+ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
+ },
+ "regex-not": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/regex-not/-/regex-not-1.0.2.tgz",
+ "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^3.0.2",
+ "safe-regex": "^1.1.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+ "dev": true,
+ "requires": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ }
+ },
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ },
+ "is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true
+ }
+ }
+ },
+ "repeat-element": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/repeat-element/-/repeat-element-1.1.4.tgz",
+ "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==",
+ "dev": true
+ },
+ "repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmmirror.com/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",
+ "dev": true
+ },
+ "resize-observer-polyfill": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmmirror.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
+ "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg=="
+ },
+ "resolve": {
+ "version": "1.22.2",
+ "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.2.tgz",
+ "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==",
+ "dev": true,
+ "requires": {
+ "is-core-module": "^2.11.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ }
+ },
+ "resolve-url": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/resolve-url/-/resolve-url-0.2.1.tgz",
+ "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==",
+ "dev": true
+ },
+ "ret": {
+ "version": "0.1.15",
+ "resolved": "https://registry.npmmirror.com/ret/-/ret-0.1.15.tgz",
+ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
+ "dev": true
+ },
+ "reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="
+ },
+ "rimraf": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-5.0.1.tgz",
+ "integrity": "sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg==",
+ "dev": true,
+ "requires": {
+ "glob": "^10.2.5"
+ }
+ },
+ "rollup": {
+ "version": "2.79.1",
+ "resolved": "https://registry.npmmirror.com/rollup/-/rollup-2.79.1.tgz",
+ "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "rollup-plugin-terser": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmmirror.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz",
+ "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.10.4",
+ "jest-worker": "^26.2.1",
+ "serialize-javascript": "^4.0.0",
+ "terser": "^5.0.0"
+ },
+ "dependencies": {
+ "jest-worker": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmmirror.com/jest-worker/-/jest-worker-26.6.2.tgz",
+ "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^7.0.0"
+ }
+ },
+ "serialize-javascript": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
+ "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
+ "dev": true,
+ "requires": {
+ "randombytes": "^2.1.0"
+ }
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "requires": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true
+ },
+ "safe-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/safe-regex/-/safe-regex-1.1.0.tgz",
+ "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==",
+ "dev": true,
+ "requires": {
+ "ret": "~0.1.10"
+ }
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "optional": true
+ },
+ "sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
+ "optional": true
+ },
+ "schema-utils": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.1.2.tgz",
+ "integrity": "sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@types/json-schema": "^7.0.8",
+ "ajv": "^6.12.5",
+ "ajv-keywords": "^3.5.2"
+ }
+ },
+ "scroll-into-view-if-needed": {
+ "version": "2.2.31",
+ "resolved": "https://registry.npmmirror.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz",
+ "integrity": "sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==",
+ "requires": {
+ "compute-scroll-into-view": "^1.0.20"
+ }
+ },
+ "semver": {
+ "version": "7.5.1",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.1.tgz",
+ "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
+ },
+ "serialize-javascript": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz",
+ "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "randombytes": "^2.1.0"
+ }
+ },
+ "set-value": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/set-value/-/set-value-2.0.1.tgz",
+ "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-extendable": "^0.1.1",
+ "is-plain-object": "^2.0.3",
+ "split-string": "^3.0.1"
+ },
+ "dependencies": {
+ "is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true
+ }
+ }
+ },
+ "shallow-equal": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/shallow-equal/-/shallow-equal-1.2.1.tgz",
+ "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA=="
+ },
+ "shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^3.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true
+ },
+ "side-channel": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz",
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "requires": {
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
+ }
+ },
+ "signal-exit": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-4.0.2.tgz",
+ "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==",
+ "dev": true
+ },
+ "snapdragon": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmmirror.com/snapdragon/-/snapdragon-0.8.2.tgz",
+ "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
+ "dev": true,
+ "requires": {
+ "base": "^0.11.1",
+ "debug": "^2.2.0",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "map-cache": "^0.2.2",
+ "source-map": "^0.5.6",
+ "source-map-resolve": "^0.5.0",
+ "use": "^3.1.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+ "dev": true
+ }
+ }
+ },
+ "snapdragon-node": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
+ "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
+ "dev": true,
+ "requires": {
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.0",
+ "snapdragon-util": "^3.0.1"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true
+ }
+ }
+ },
+ "snapdragon-util": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
+ "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.2.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "sortablejs": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.15.0.tgz",
+ "integrity": "sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w=="
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "source-map-js": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz",
+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw=="
+ },
+ "source-map-resolve": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmmirror.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
+ "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
+ "dev": true,
+ "requires": {
+ "atob": "^2.1.2",
+ "decode-uri-component": "^0.2.0",
+ "resolve-url": "^0.2.1",
+ "source-map-url": "^0.4.0",
+ "urix": "^0.1.0"
+ }
+ },
+ "source-map-support": {
+ "version": "0.5.21",
+ "resolved": "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz",
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+ "devOptional": true,
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "source-map-url": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmmirror.com/source-map-url/-/source-map-url-0.4.1.tgz",
+ "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==",
+ "dev": true
+ },
+ "split-string": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/split-string/-/split-string-3.1.0.tgz",
+ "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^3.0.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+ "dev": true,
+ "requires": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ }
+ },
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ },
+ "is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true
+ }
+ }
+ },
+ "ssf": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npmmirror.com/ssf/-/ssf-0.11.2.tgz",
+ "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==",
+ "requires": {
+ "frac": "~1.1.2"
+ }
+ },
+ "stable": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmmirror.com/stable/-/stable-0.1.8.tgz",
+ "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==",
+ "dev": true
+ },
+ "static-extend": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmmirror.com/static-extend/-/static-extend-0.1.2.tgz",
+ "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==",
+ "dev": true,
+ "requires": {
+ "define-property": "^0.2.5",
+ "object-copy": "^0.1.0"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ }
+ }
+ }
+ },
+ "strict-uri-encode": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
+ "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==",
+ "dev": true
+ },
+ "string_decoder": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
+ "string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "dev": true,
+ "requires": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^6.0.1"
+ }
+ }
+ }
+ },
+ "string-width-cjs": {
+ "version": "npm:string-width@4.2.3",
+ "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true
+ },
+ "emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^5.0.1"
+ }
+ }
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "strip-ansi-cjs": {
+ "version": "npm:strip-ansi@6.0.1",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^5.0.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true
+ }
+ }
+ },
+ "supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ },
+ "supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true
+ },
+ "svg-baker": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmmirror.com/svg-baker/-/svg-baker-1.7.0.tgz",
+ "integrity": "sha512-nibslMbkXOIkqKVrfcncwha45f97fGuAOn1G99YwnwTj8kF9YiM6XexPcUso97NxOm6GsP0SIvYVIosBis1xLg==",
+ "dev": true,
+ "requires": {
+ "bluebird": "^3.5.0",
+ "clone": "^2.1.1",
+ "he": "^1.1.1",
+ "image-size": "^0.5.1",
+ "loader-utils": "^1.1.0",
+ "merge-options": "1.0.1",
+ "micromatch": "3.1.0",
+ "postcss": "^5.2.17",
+ "postcss-prefix-selector": "^1.6.0",
+ "posthtml-rename-id": "^1.0",
+ "posthtml-svg-mode": "^1.0.3",
+ "query-string": "^4.3.2",
+ "traverse": "^0.6.6"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
+ "dev": true
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmmirror.com/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ }
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
+ "dev": true
+ }
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ }
+ },
+ "has-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-1.0.0.tgz",
+ "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==",
+ "dev": true
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true
+ },
+ "micromatch": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-3.1.0.tgz",
+ "integrity": "sha512-3StSelAE+hnRvMs8IdVW7Uhk8CVed5tp+kLLGlBP6WiRAXS21GPGu/Nat4WNPXj2Eoc24B02SaeoyozPMfj0/g==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.2.2",
+ "define-property": "^1.0.0",
+ "extend-shallow": "^2.0.1",
+ "extglob": "^2.0.2",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^5.0.2",
+ "nanomatch": "^1.2.1",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ }
+ },
+ "postcss": {
+ "version": "5.2.18",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-5.2.18.tgz",
+ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^1.1.3",
+ "js-base64": "^2.1.9",
+ "source-map": "^0.5.6",
+ "supports-color": "^3.2.3"
+ }
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-3.2.3.tgz",
+ "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^1.0.0"
+ }
+ },
+ "to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ }
+ }
+ }
+ },
+ "svg-tags": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/svg-tags/-/svg-tags-1.0.0.tgz",
+ "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA=="
+ },
+ "svgo": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmmirror.com/svgo/-/svgo-2.8.0.tgz",
+ "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==",
+ "dev": true,
+ "requires": {
+ "@trysound/sax": "0.2.0",
+ "commander": "^7.2.0",
+ "css-select": "^4.1.3",
+ "css-tree": "^1.1.3",
+ "csso": "^4.2.0",
+ "picocolors": "^1.0.0",
+ "stable": "^0.1.8"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/commander/-/commander-7.2.0.tgz",
+ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+ "dev": true
+ }
+ }
+ },
+ "tapable": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/tapable/-/tapable-2.2.1.tgz",
+ "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
+ "dev": true,
+ "peer": true
+ },
+ "terser": {
+ "version": "5.17.6",
+ "resolved": "https://registry.npmmirror.com/terser/-/terser-5.17.6.tgz",
+ "integrity": "sha512-V8QHcs8YuyLkLHsJO5ucyff1ykrLVsR4dNnS//L5Y3NiSXpbK1J+WMVUs67eI0KTxs9JtHhgEQpXQVHlHI92DQ==",
+ "devOptional": true,
+ "requires": {
+ "@jridgewell/source-map": "^0.3.2",
+ "acorn": "^8.5.0",
+ "commander": "^2.20.0",
+ "source-map-support": "~0.5.20"
+ }
+ },
+ "terser-webpack-plugin": {
+ "version": "5.3.9",
+ "resolved": "https://registry.npmmirror.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz",
+ "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@jridgewell/trace-mapping": "^0.3.17",
+ "jest-worker": "^27.4.5",
+ "schema-utils": "^3.1.1",
+ "serialize-javascript": "^6.0.1",
+ "terser": "^5.16.8"
+ }
+ },
+ "to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog=="
+ },
+ "to-object-path": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmmirror.com/to-object-path/-/to-object-path-0.3.0.tgz",
+ "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "to-regex": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/to-regex/-/to-regex-3.0.2.tgz",
+ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+ "dev": true,
+ "requires": {
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "regex-not": "^1.0.2",
+ "safe-regex": "^1.1.0"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-2.0.2.tgz",
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.2",
+ "isobject": "^3.0.1"
+ }
+ },
+ "extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+ "dev": true,
+ "requires": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ }
+ },
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ },
+ "is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true
+ }
+ }
+ },
+ "to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "requires": {
+ "is-number": "^7.0.0"
+ }
+ },
+ "traverse": {
+ "version": "0.6.7",
+ "resolved": "https://registry.npmmirror.com/traverse/-/traverse-0.6.7.tgz",
+ "integrity": "sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==",
+ "dev": true
+ },
+ "tsconfck": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/tsconfck/-/tsconfck-2.1.1.tgz",
+ "integrity": "sha512-ZPCkJBKASZBmBUNqGHmRhdhM8pJYDdOXp4nRgj/O0JwUwsMq50lCDRQP/M5GBNAA0elPrq4gAeu4dkaVCuKWww==",
+ "dev": true,
+ "requires": {}
+ },
+ "tslib": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.5.2.tgz",
+ "integrity": "sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==",
+ "devOptional": true
+ },
+ "typescript": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmmirror.com/typescript/-/typescript-5.0.4.tgz",
+ "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==",
+ "devOptional": true
+ },
+ "union-value": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/union-value/-/union-value-1.0.1.tgz",
+ "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
+ "dev": true,
+ "requires": {
+ "arr-union": "^3.1.0",
+ "get-value": "^2.0.6",
+ "is-extendable": "^0.1.1",
+ "set-value": "^2.0.1"
+ }
+ },
+ "universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "dev": true
+ },
+ "unplugin": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmmirror.com/unplugin/-/unplugin-1.3.1.tgz",
+ "integrity": "sha512-h4uUTIvFBQRxUKS2Wjys6ivoeofGhxzTe2sRWlooyjHXVttcVfV/JiavNd3d4+jty0SVV0dxGw9AkY9MwiaCEw==",
+ "dev": true,
+ "requires": {
+ "acorn": "^8.8.2",
+ "chokidar": "^3.5.3",
+ "webpack-sources": "^3.2.3",
+ "webpack-virtual-modules": "^0.5.0"
+ }
+ },
+ "unplugin-vue-components": {
+ "version": "0.22.12",
+ "resolved": "https://registry.npmmirror.com/unplugin-vue-components/-/unplugin-vue-components-0.22.12.tgz",
+ "integrity": "sha512-FxyzsuBvMCYPIk+8cgscGBQ345tvwVu+qY5IhE++eorkyvA4Z1TiD/HCiim+Kbqozl10i4K+z+NCa2WO2jexRA==",
+ "dev": true,
+ "requires": {
+ "@antfu/utils": "^0.7.2",
+ "@rollup/pluginutils": "^5.0.2",
+ "chokidar": "^3.5.3",
+ "debug": "^4.3.4",
+ "fast-glob": "^3.2.12",
+ "local-pkg": "^0.4.2",
+ "magic-string": "^0.27.0",
+ "minimatch": "^5.1.1",
+ "resolve": "^1.22.1",
+ "unplugin": "^1.0.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "magic-string": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.27.0.tgz",
+ "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==",
+ "dev": true,
+ "requires": {
+ "@jridgewell/sourcemap-codec": "^1.4.13"
+ }
+ },
+ "minimatch": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz",
+ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^2.0.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ }
+ }
+ },
+ "unplugin-vue-define-options": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/unplugin-vue-define-options/-/unplugin-vue-define-options-1.0.0.tgz",
+ "integrity": "sha512-j90zM7NhZXBL5uMlHKzSOjvU98lFcIErdgAhj7bEEdvZarkwOkEUgMFsZDwStN9FEcMAiS/BTvcyGfItu3ry/g==",
+ "dev": true,
+ "requires": {
+ "@rollup/pluginutils": "^4.2.1",
+ "@vue-macros/common": "~0.13.4",
+ "ast-walker-scope": "^0.3.0",
+ "unplugin": "^1.0.0"
+ },
+ "dependencies": {
+ "@rollup/pluginutils": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz",
+ "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==",
+ "dev": true,
+ "requires": {
+ "estree-walker": "^2.0.1",
+ "picomatch": "^2.2.2"
+ }
+ }
+ }
+ },
+ "unset-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/unset-value/-/unset-value-1.0.0.tgz",
+ "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==",
+ "dev": true,
+ "requires": {
+ "has-value": "^0.3.1",
+ "isobject": "^3.0.0"
+ },
+ "dependencies": {
+ "has-value": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmmirror.com/has-value/-/has-value-0.3.1.tgz",
+ "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==",
+ "dev": true,
+ "requires": {
+ "get-value": "^2.0.3",
+ "has-values": "^0.1.4",
+ "isobject": "^2.0.0"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==",
+ "dev": true,
+ "requires": {
+ "isarray": "1.0.0"
+ }
+ }
+ }
+ },
+ "has-values": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmmirror.com/has-values/-/has-values-0.1.4.tgz",
+ "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==",
+ "dev": true
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true
+ }
+ }
+ },
+ "update-browserslist-db": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz",
+ "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==",
+ "requires": {
+ "escalade": "^3.1.1",
+ "picocolors": "^1.0.0"
+ }
+ },
+ "uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "urix": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmmirror.com/urix/-/urix-0.1.0.tgz",
+ "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==",
+ "dev": true
+ },
+ "use": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/use/-/use-3.1.1.tgz",
+ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
+ "dev": true
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "dev": true
+ },
+ "vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+ "dev": true
+ },
+ "vite": {
+ "version": "4.3.8",
+ "resolved": "https://registry.npmmirror.com/vite/-/vite-4.3.8.tgz",
+ "integrity": "sha512-uYB8PwN7hbMrf4j1xzGDk/lqjsZvCDbt/JC5dyfxc19Pg8kRm14LinK/uq+HSLNswZEoKmweGdtpbnxRtrAXiQ==",
+ "requires": {
+ "esbuild": "^0.17.5",
+ "fsevents": "~2.3.2",
+ "postcss": "^8.4.23",
+ "rollup": "^3.21.0"
+ },
+ "dependencies": {
+ "rollup": {
+ "version": "3.24.0",
+ "resolved": "https://registry.npmmirror.com/rollup/-/rollup-3.24.0.tgz",
+ "integrity": "sha512-OgraHOIg2YpHQTjl0/ymWfFNBEyPucB7lmhXrQUh38qNOegxLapSPFs9sNr0qKR75awW41D93XafoR2QfhBdUQ==",
+ "requires": {
+ "fsevents": "~2.3.2"
+ }
+ }
+ }
+ },
+ "vite-plugin-svg-icons": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/vite-plugin-svg-icons/-/vite-plugin-svg-icons-2.0.1.tgz",
+ "integrity": "sha512-6ktD+DhV6Rz3VtedYvBKKVA2eXF+sAQVaKkKLDSqGUfnhqXl3bj5PPkVTl3VexfTuZy66PmINi8Q6eFnVfRUmA==",
+ "dev": true,
+ "requires": {
+ "@types/svgo": "^2.6.1",
+ "cors": "^2.8.5",
+ "debug": "^4.3.3",
+ "etag": "^1.8.1",
+ "fs-extra": "^10.0.0",
+ "pathe": "^0.2.0",
+ "svg-baker": "1.7.0",
+ "svgo": "^2.8.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ }
+ }
+ },
+ "vite-plugin-windicss": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/vite-plugin-windicss/-/vite-plugin-windicss-1.9.0.tgz",
+ "integrity": "sha512-w0unPfcbVU5eaISAsFTLgIb41SLhmXoUF75Othu8NqFioe8+DEqiuvJ7/k/LRuEuvI8Rt/OKrY6cNzrB+dykaA==",
+ "requires": {
+ "@windicss/plugin-utils": "1.9.0",
+ "debug": "^4.3.4",
+ "kolorist": "^1.8.0",
+ "windicss": "^3.5.6"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ }
+ }
+ },
+ "vite-tsconfig-paths": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmmirror.com/vite-tsconfig-paths/-/vite-tsconfig-paths-4.2.0.tgz",
+ "integrity": "sha512-jGpus0eUy5qbbMVGiTxCL1iB9ZGN6Bd37VGLJU39kTDD6ZfULTTb1bcc5IeTWqWJKiWV5YihCaibeASPiGi8kw==",
+ "dev": true,
+ "requires": {
+ "debug": "^4.1.1",
+ "globrex": "^0.1.2",
+ "tsconfck": "^2.1.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ }
+ }
+ },
+ "vue": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/vue/-/vue-3.3.4.tgz",
+ "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==",
+ "requires": {
+ "@vue/compiler-dom": "3.3.4",
+ "@vue/compiler-sfc": "3.3.4",
+ "@vue/runtime-dom": "3.3.4",
+ "@vue/server-renderer": "3.3.4",
+ "@vue/shared": "3.3.4"
+ }
+ },
+ "vue-i18n": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-9.2.2.tgz",
+ "integrity": "sha512-yswpwtj89rTBhegUAv9Mu37LNznyu3NpyLQmozF3i1hYOhwpG8RjcjIFIIfnu+2MDZJGSZPXaKWvnQA71Yv9TQ==",
+ "requires": {
+ "@intlify/core-base": "9.2.2",
+ "@intlify/shared": "9.2.2",
+ "@intlify/vue-devtools": "9.2.2",
+ "@vue/devtools-api": "^6.2.1"
+ }
+ },
+ "vue-router": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.2.1.tgz",
+ "integrity": "sha512-nW28EeifEp8Abc5AfmAShy5ZKGsGzjcnZ3L1yc2DYUo+MqbBClrRP9yda3dIekM4I50/KnEwo1wkBLf7kHH5Cw==",
+ "requires": {
+ "@vue/devtools-api": "^6.5.0"
+ }
+ },
+ "vue-template-compiler": {
+ "version": "2.7.14",
+ "resolved": "https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz",
+ "integrity": "sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==",
+ "dev": true,
+ "requires": {
+ "de-indent": "^1.0.2",
+ "he": "^1.2.0"
+ }
+ },
+ "vue-tsc": {
+ "version": "1.6.5",
+ "resolved": "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-1.6.5.tgz",
+ "integrity": "sha512-Wtw3J7CC+JM2OR56huRd5iKlvFWpvDiU+fO1+rqyu4V2nMTotShz4zbOZpW5g9fUOcjnyZYfBo5q5q+D/q27JA==",
+ "dev": true,
+ "requires": {
+ "@volar/vue-language-core": "1.6.5",
+ "@volar/vue-typescript": "1.6.5",
+ "semver": "^7.3.8"
+ }
+ },
+ "vue-types": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/vue-types/-/vue-types-3.0.2.tgz",
+ "integrity": "sha512-IwUC0Aq2zwaXqy74h4WCvFCUtoV0iSWr0snWnE9TnU18S66GAQyqQbRf2qfJtUuiFsBf6qp0MEwdonlwznlcrw==",
+ "requires": {
+ "is-plain-object": "3.0.1"
+ }
+ },
+ "warning": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/warning/-/warning-4.0.3.tgz",
+ "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==",
+ "requires": {
+ "loose-envify": "^1.0.0"
+ }
+ },
+ "watchpack": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-2.4.0.tgz",
+ "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.1.2"
+ }
+ },
+ "webpack": {
+ "version": "5.84.0",
+ "resolved": "https://registry.npmmirror.com/webpack/-/webpack-5.84.0.tgz",
+ "integrity": "sha512-XezNK3kwJq6IyeoZmZ1uEqQs+42nTqIi4jYM/YjLwaJedUC1N3bwnCC0+UcnHJPfqWX0kGrQnMIvZZyWYaIZrA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@types/eslint-scope": "^3.7.3",
+ "@types/estree": "^1.0.0",
+ "@webassemblyjs/ast": "^1.11.5",
+ "@webassemblyjs/wasm-edit": "^1.11.5",
+ "@webassemblyjs/wasm-parser": "^1.11.5",
+ "acorn": "^8.7.1",
+ "acorn-import-assertions": "^1.9.0",
+ "browserslist": "^4.14.5",
+ "chrome-trace-event": "^1.0.2",
+ "enhanced-resolve": "^5.14.1",
+ "es-module-lexer": "^1.2.1",
+ "eslint-scope": "5.1.1",
+ "events": "^3.2.0",
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.2.9",
+ "json-parse-even-better-errors": "^2.3.1",
+ "loader-runner": "^4.2.0",
+ "mime-types": "^2.1.27",
+ "neo-async": "^2.6.2",
+ "schema-utils": "^3.1.2",
+ "tapable": "^2.1.1",
+ "terser-webpack-plugin": "^5.3.7",
+ "watchpack": "^2.4.0",
+ "webpack-sources": "^3.2.3"
+ }
+ },
+ "webpack-sources": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz",
+ "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
+ "dev": true
+ },
+ "webpack-virtual-modules": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz",
+ "integrity": "sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==",
+ "dev": true
+ },
+ "which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
+ "windicss": {
+ "version": "3.5.6",
+ "resolved": "https://registry.npmmirror.com/windicss/-/windicss-3.5.6.tgz",
+ "integrity": "sha512-P1mzPEjgFMZLX0ZqfFht4fhV/FX8DTG7ERG1fBLiWvd34pTLVReS5CVsewKn9PApSgXnVfPWwvq+qUsRwpnwFA=="
+ },
+ "wmf": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/wmf/-/wmf-1.0.2.tgz",
+ "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw=="
+ },
+ "word": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmmirror.com/word/-/word-0.3.0.tgz",
+ "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA=="
+ },
+ "wrap-ansi": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
+ "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^6.0.1"
+ }
+ }
+ }
+ },
+ "wrap-ansi-cjs": {
+ "version": "npm:wrap-ansi@7.0.0",
+ "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
+ "string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ }
+ },
+ "strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^5.0.1"
+ }
+ }
+ }
+ },
+ "xlsx": {
+ "version": "0.18.5",
+ "resolved": "https://registry.npmmirror.com/xlsx/-/xlsx-0.18.5.tgz",
+ "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==",
+ "requires": {
+ "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"
+ }
+ },
+ "yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ }
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..d91c56d
--- /dev/null
+++ b/package.json
@@ -0,0 +1,48 @@
+{
+ "name": "my-vue-app",
+ "private": true,
+ "version": "0.0.0",
+ "type": "module",
+ "scripts": {
+ "serve": "vite",
+ "build": "rimraf dist && cross-env NODE_ENV=production vite build",
+ "preview": "vite preview",
+ "clean:cache": "npx rimraf node_modules/.cache/ && npx rimraf node_modules/.vite",
+ "clean:lib": "npx rimraf node_modules",
+ "format": "prettier --write ."
+ },
+ "dependencies": {
+ "@vitejs/plugin-vue-jsx": "^3.0.1",
+ "@vueuse/core": "~9.6.0",
+ "ant-design-vue": "^3.2.20",
+ "axios": "^1.4.0",
+ "express": "^4.18.2",
+ "file-saver": "^2.0.5",
+ "pinia": "^2.1.3",
+ "qs": "^6.11.2",
+ "sortablejs": "^1.15.0",
+ "vite-plugin-windicss": "^1.9.0",
+ "vue": "^3.2.47",
+ "vue-i18n": "9.2.2",
+ "vue-router": "^4.2.1",
+ "windicss": "^3.5.6",
+ "xlsx": "^0.18.5"
+ },
+ "devDependencies": {
+ "@types/node": "^20.2.3",
+ "@vitejs/plugin-vue": "^4.1.0",
+ "less": "^4.1.3",
+ "less-loader": "^11.1.0",
+ "lodash-es": "~4.17.21",
+ "nprogress": "~1.0.0-1",
+ "rimraf": "^5.0.1",
+ "rollup-plugin-terser": "^7.0.2",
+ "typescript": "^5.0.2",
+ "unplugin-vue-components": "~0.22.12",
+ "unplugin-vue-define-options": "~1.0.0",
+ "vite": "^4.3.2",
+ "vite-plugin-svg-icons": "~2.0.1",
+ "vite-tsconfig-paths": "^4.2.0",
+ "vue-tsc": "^1.4.2"
+ }
+}
diff --git a/prettier.config.cjs b/prettier.config.cjs
new file mode 100644
index 0000000..51f8d01
--- /dev/null
+++ b/prettier.config.cjs
@@ -0,0 +1,10 @@
+module.exports = {
+ printWidth: 100,
+ semi: true,
+ vueIndentScriptAndStyle: true,
+ singleQuote: true,
+ trailingComma: 'all',
+ proseWrap: 'never',
+ htmlWhitespaceSensitivity: 'strict',
+ endOfLine: 'auto',
+};
diff --git a/public/iconfont.js b/public/iconfont.js
new file mode 100644
index 0000000..37aff3d
--- /dev/null
+++ b/public/iconfont.js
@@ -0,0 +1 @@
+window._iconfont_svg_string_2184398=' ',function(l){var a=(a=document.getElementsByTagName("script"))[a.length-1],h=a.getAttribute("data-injectcss"),a=a.getAttribute("data-disable-injectsvg");if(!a){var v,o,i,m,z,t=function(a,h){h.parentNode.insertBefore(a,h)};if(h&&!l.__iconfont__svg__cssinject__){l.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(a){console&&console.log(a)}}v=function(){var a,h=document.createElement("div");h.innerHTML=l._iconfont_svg_string_2184398,(h=h.getElementsByTagName("svg")[0])&&(h.setAttribute("aria-hidden","true"),h.style.position="absolute",h.style.width=0,h.style.height=0,h.style.overflow="hidden",h=h,(a=document.body).firstChild?t(h,a.firstChild):a.appendChild(h))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(v,0):(o=function(){document.removeEventListener("DOMContentLoaded",o,!1),v()},document.addEventListener("DOMContentLoaded",o,!1)):document.attachEvent&&(i=v,m=l.document,z=!1,s(),m.onreadystatechange=function(){"complete"==m.readyState&&(m.onreadystatechange=null,n())})}function n(){z||(z=!0,i())}function s(){try{m.documentElement.doScroll("left")}catch(a){return void setTimeout(s,50)}n()}}(window);
diff --git a/src/App.vue b/src/App.vue
new file mode 100644
index 0000000..6a631bc
--- /dev/null
+++ b/src/App.vue
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/api/account/index.ts b/src/api/account/index.ts
new file mode 100644
index 0000000..d86a3e9
--- /dev/null
+++ b/src/api/account/index.ts
@@ -0,0 +1,39 @@
+import type { BaseResponse } from '@/utils/request';
+import { request } from '@/utils/request';
+
+export function updateAccountInfo(data: any) {
+ return request>({
+ url: 'account/update',
+ method: 'post',
+ data,
+ });
+}
+
+export function updatePassword(data: any) {
+ return request({
+ url: 'account/password',
+ method: 'post',
+ data,
+ });
+}
+
+export function getInfo() {
+ return request({
+ url: 'account/info',
+ method: 'get',
+ });
+}
+
+export function permmenu() {
+ return request({
+ url: 'account/permmenu',
+ method: 'get',
+ });
+}
+
+export function logout() {
+ return request({
+ url: 'account/logout',
+ method: 'post',
+ });
+}
diff --git a/src/api/account/model.d.ts b/src/api/account/model.d.ts
new file mode 100644
index 0000000..5afea19
--- /dev/null
+++ b/src/api/account/model.d.ts
@@ -0,0 +1,50 @@
+declare namespace API {
+ type Menu = {
+ createTime: Date;
+ updateTime: Date;
+ id: number;
+ parentId: number;
+ name: string;
+ router: string;
+ perms: string;
+ /** 当前菜单类型 0: 目录 | 1: 菜单 | 2: 权限 */
+ type: 0 | 1 | 2;
+ icon: string;
+ orderNum: number;
+ viewPath: string;
+ keepalive: boolean;
+ isShow: boolean;
+ /** 是否外链 */
+ isExt?: boolean;
+ /** 外链打开方式
+ * 1: 新窗口打开
+ * 2: iframe
+ */
+ openMode?: 1 | 2;
+ };
+
+ type PermMenu = {
+ menus: Menu[];
+ perms: string[];
+ };
+
+ type AdminUserInfo = {
+ createTime: Date;
+ updateTime: Date;
+ id: number;
+ departmentId: number;
+ name: string;
+ username: string;
+ password: string;
+ psalt: string;
+ nickName: string;
+ headImg: string;
+ loginIp: string;
+ email: string;
+ phone: string;
+ remark: string;
+ status: number;
+ roles: number[];
+ departmentName: string;
+ };
+}
diff --git a/src/api/authorize/index.ts b/src/api/authorize/index.ts
new file mode 100644
index 0000000..e5859c6
--- /dev/null
+++ b/src/api/authorize/index.ts
@@ -0,0 +1,23 @@
+import type { BaseResponse } from '@/utils/request';
+import { request } from '@/utils/request';
+
+
+/**
+ * @description 查询分页列表
+ * @param {SearchPageListParams} data
+ * @returns
+ */
+export function fetchAuthorizePageList(data: API.SearchPageListParams) {
+ return request>(
+ {
+ url: 'grant/getTenantAppPage',
+ method: 'post',
+ data,
+ },
+ {
+ isGetDataDirectly: false,
+ },
+ );
+}
+
+
diff --git a/src/api/authorize/model.d.ts b/src/api/authorize/model.d.ts
new file mode 100644
index 0000000..1feb6bf
--- /dev/null
+++ b/src/api/authorize/model.d.ts
@@ -0,0 +1,20 @@
+import { AnyRecord } from "dns";
+
+declare namespace API {
+
+ type infoType = {
+ id:string
+ name:string
+ }
+
+ /** 授权信息类型 */
+ type AuthorizeInfoType = {
+ id?: string;
+ tenant:infoType;
+ application:infoType;
+ expirationTime:string;
+ echoMap:AnyRecord
+ };
+
+
+}
diff --git a/src/api/dictionary/index.ts b/src/api/dictionary/index.ts
new file mode 100644
index 0000000..d5fd097
--- /dev/null
+++ b/src/api/dictionary/index.ts
@@ -0,0 +1,109 @@
+import type { BaseResponse } from '@/utils/request';
+import { request } from '@/utils/request';
+/**
+ * @description 查询列表
+ * @param {SearchListParams} data
+ * @returns
+ */
+export function fetchDictionaryList(data: API.SearchListParams) {
+ return request>(
+ {
+ url: 'system/dict/query',
+ method: 'post',
+ data,
+ },
+ {
+ isGetDataDirectly: false,
+ },
+ );
+}
+
+/**
+ * @description 查询分页列表
+ * @param {SearchPageListParams} data
+ * @returns
+ */
+export function fetchDictionaryPageList(data: API.SearchPageListParams) {
+ return request>(
+ {
+ url: 'system/dict/page',
+ method: 'post',
+ data,
+ },
+ {
+ isGetDataDirectly: false,
+ },
+ );
+}
+
+
+/**
+ * @description 新增单条
+ * @param {DictionaryInfoType} data
+ * @returns
+ */
+export function createDictionary(data: API.DictionaryInfoType) {
+ return request>(
+ {
+ url: 'system/dict/create',
+ method: 'post',
+ data,
+ },
+ {
+ isGetDataDirectly: false,
+ },
+ );
+}
+
+/**
+ * @description 修改单条
+ * @param {DictionaryInfoType} data
+ * @returns
+ */
+export function updateDictionary(data: API.DictionaryInfoType) {
+ return request>(
+ {
+ url: 'system/dict/update',
+ method: 'post',
+ data,
+ },
+ {
+ isGetDataDirectly: false,
+ },
+ );
+}
+
+/**
+ * @description 查询单条
+ */
+export function findOneById(params: {
+ id:string
+}) {
+ return request({
+ url: `system/dict/getById`,
+ method: 'get',
+ params
+ });
+}
+
+/**
+ * @description 删除单条
+ */
+export function deleteDictionaryById(params:API.DeleteDictionaryParams) {
+ return request({
+ url: `system/dict/delById`,
+ method: 'post',
+ params
+ });
+}
+
+/**
+ * @description 删除多条
+ */
+export function deleteBatchDictionaryById(data:API.DeleteBatchDictionaryParams) {
+ return request({
+ url: `system/dict/deleteBatch`,
+ method: 'delete',
+ data,
+ });
+}
\ No newline at end of file
diff --git a/src/api/dictionary/model.d.ts b/src/api/dictionary/model.d.ts
new file mode 100644
index 0000000..cbc7c28
--- /dev/null
+++ b/src/api/dictionary/model.d.ts
@@ -0,0 +1,27 @@
+declare namespace API {
+ /** 用户信息类型 */
+ type DictionaryInfoType = {
+ id?: string;
+ dictKey: string;
+ name: string;
+ status: boolean;
+ createTime?: string;
+ };
+
+ type DictionaryItemInfoType = DictionaryInfoType & {
+ sortValue: number | string;
+ };
+
+ type CreateDictionaryParams = {
+ dictKey: string;
+ name: string;
+ status: boolean;
+ createTime: string;
+ };
+
+ type DeleteDictionaryParams = {
+ id: string;
+ };
+
+ type DeleteBatchDictionaryParams = string[];
+}
diff --git a/src/api/login/index.ts b/src/api/login/index.ts
new file mode 100644
index 0000000..76c3ec4
--- /dev/null
+++ b/src/api/login/index.ts
@@ -0,0 +1,30 @@
+import type { BaseResponse } from '@/utils/request';
+import { request } from '@/utils/request';
+
+/**
+ * @description 登录
+ * @param {LoginParams} data
+ * @returns
+ */
+export function login(data: API.LoginParams) {
+ return request>(
+ {
+ url: 'auth/login',
+ method: 'post',
+ data,
+ },
+ {
+ isGetDataDirectly: false,
+ },
+ );
+}
+/**
+ * @description 获取验证码
+ */
+export function getImageCaptcha(params?: API.CaptchaParams) {
+ return request({
+ url: 'captcha/img',
+ method: 'get',
+ params,
+ });
+}
diff --git a/src/api/login/model.d.ts b/src/api/login/model.d.ts
new file mode 100644
index 0000000..893be65
--- /dev/null
+++ b/src/api/login/model.d.ts
@@ -0,0 +1,54 @@
+declare namespace API {
+
+ type Menu = {
+ createTime: Date;
+ updateTime: Date;
+ id: number;
+ parentId: number;
+ name: string;
+ router: string;
+ perms: string;
+ /** 当前菜单类型 0: 目录 | 1: 菜单 | 2: 权限 */
+ type: 0 | 1 | 2;
+ icon: string;
+ orderNum: number;
+ viewPath: string;
+ keepalive: boolean;
+ isShow: boolean;
+ /** 是否外链 */
+ isExt?: boolean;
+ /** 外链打开方式
+ * 1: 新窗口打开
+ * 2: iframe
+ */
+ openMode?: 1 | 2;
+ };
+
+ /** 登录参数 */
+ type LoginParams = {
+ captchaId?: string;
+ password: string;
+ username: string;
+ verifyCode?: string;
+ };
+
+ /** 登录成功结果 */
+ type LoginResult = {
+ accessToken: string;
+ expiresTime:string;
+ refreshToken:string;
+ userId:string;
+ };
+
+ /** 获取验证码参数 */
+ type CaptchaParams = {
+ width?: number;
+ height?: number;
+ };
+
+ /** 获取验证码结果 */
+ type CaptchaResult = {
+ img: string;
+ id: string;
+ };
+}
diff --git a/src/api/typings.d.ts b/src/api/typings.d.ts
new file mode 100644
index 0000000..643b9c9
--- /dev/null
+++ b/src/api/typings.d.ts
@@ -0,0 +1,65 @@
+// @ts-ignore
+/* eslint-disable */
+
+declare namespace API {
+
+
+ /** 查询列表参数 */
+ type SearchListParams = {
+ name?: string;
+ };
+
+ /** 查询分页列表参数 */
+ type SearchPageListParams = {
+ model: SearchListParams;
+ current: number;
+ size: number;
+ sort?: string;
+ order?: string;
+ };
+
+ /** 查询列表成功结果 */
+ type SearchListResult = any[]
+
+ /** 查询分页列表成功结果 */
+ type SearchPageListResult = {
+ // code: string;
+ // data: {
+ // list:TenantInfoType[]
+ // total:string
+ // };
+ // msg: string;
+ list:any[]
+ total:string
+ };
+
+ /** 全局通过表格查询返回结果 */
+ type TableListResult = {
+ list: T;
+ pagination?: PaginationResult;
+ };
+
+ /** 全局通用表格分页返回数据结构 */
+ type PaginationResult = {
+ page: number;
+ size: number;
+ total: number;
+ };
+
+ /** 全局通用表格分页请求参数 */
+ type PageParams = {
+ limit?: number;
+ page?: number;
+ } & {
+ [P in keyof T]?: T[P];
+ };
+
+ type ErrorResponse = {
+ /** 业务约定的错误码 */
+ errorCode: string;
+ /** 业务上的错误信息 */
+ errorMessage?: string;
+ /** 业务上的请求是否成功 */
+ success?: boolean;
+ };
+}
diff --git a/src/assets/404.gif b/src/assets/404.gif
new file mode 100644
index 0000000..cd6e0d9
Binary files /dev/null and b/src/assets/404.gif differ
diff --git a/src/assets/analysis.svg b/src/assets/analysis.svg
new file mode 100644
index 0000000..9c2da55
--- /dev/null
+++ b/src/assets/analysis.svg
@@ -0,0 +1 @@
+-
\ No newline at end of file
diff --git a/src/assets/icons/dark.svg b/src/assets/icons/dark.svg
new file mode 100644
index 0000000..f646bd7
--- /dev/null
+++ b/src/assets/icons/dark.svg
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/assets/icons/delete.svg b/src/assets/icons/delete.svg
new file mode 100644
index 0000000..c362eb7
--- /dev/null
+++ b/src/assets/icons/delete.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/edit.svg b/src/assets/icons/edit.svg
new file mode 100644
index 0000000..2572c6c
--- /dev/null
+++ b/src/assets/icons/edit.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/file-type-code.svg b/src/assets/icons/file-type-code.svg
new file mode 100644
index 0000000..3413de1
--- /dev/null
+++ b/src/assets/icons/file-type-code.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/file-type-dir.svg b/src/assets/icons/file-type-dir.svg
new file mode 100644
index 0000000..1bedac3
--- /dev/null
+++ b/src/assets/icons/file-type-dir.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/file-type-docx.svg b/src/assets/icons/file-type-docx.svg
new file mode 100644
index 0000000..4fe7a6c
--- /dev/null
+++ b/src/assets/icons/file-type-docx.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/file-type-excel.svg b/src/assets/icons/file-type-excel.svg
new file mode 100644
index 0000000..cc87c77
--- /dev/null
+++ b/src/assets/icons/file-type-excel.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/file-type-img.svg b/src/assets/icons/file-type-img.svg
new file mode 100644
index 0000000..44feb58
--- /dev/null
+++ b/src/assets/icons/file-type-img.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/file-type-music.svg b/src/assets/icons/file-type-music.svg
new file mode 100644
index 0000000..2677733
--- /dev/null
+++ b/src/assets/icons/file-type-music.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/file-type-office.svg b/src/assets/icons/file-type-office.svg
new file mode 100644
index 0000000..04d37e3
--- /dev/null
+++ b/src/assets/icons/file-type-office.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/file-type-pdf.svg b/src/assets/icons/file-type-pdf.svg
new file mode 100644
index 0000000..799b897
--- /dev/null
+++ b/src/assets/icons/file-type-pdf.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/file-type-ppt.svg b/src/assets/icons/file-type-ppt.svg
new file mode 100644
index 0000000..3766d58
--- /dev/null
+++ b/src/assets/icons/file-type-ppt.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/file-type-psd.svg b/src/assets/icons/file-type-psd.svg
new file mode 100644
index 0000000..61ca32a
--- /dev/null
+++ b/src/assets/icons/file-type-psd.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/file-type-txt.svg b/src/assets/icons/file-type-txt.svg
new file mode 100644
index 0000000..9ca9d93
--- /dev/null
+++ b/src/assets/icons/file-type-txt.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/file-type-unknown.svg b/src/assets/icons/file-type-unknown.svg
new file mode 100644
index 0000000..0629c37
--- /dev/null
+++ b/src/assets/icons/file-type-unknown.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/file-type-video.svg b/src/assets/icons/file-type-video.svg
new file mode 100644
index 0000000..7582c39
--- /dev/null
+++ b/src/assets/icons/file-type-video.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/file-type-zip.svg b/src/assets/icons/file-type-zip.svg
new file mode 100644
index 0000000..84b316c
--- /dev/null
+++ b/src/assets/icons/file-type-zip.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/light.svg b/src/assets/icons/light.svg
new file mode 100644
index 0000000..ab7cc08
--- /dev/null
+++ b/src/assets/icons/light.svg
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/assets/icons/locale.svg b/src/assets/icons/locale.svg
new file mode 100644
index 0000000..c7b2683
--- /dev/null
+++ b/src/assets/icons/locale.svg
@@ -0,0 +1,14 @@
+
+
+
+
diff --git a/src/assets/icons/login.svg b/src/assets/icons/login.svg
new file mode 100644
index 0000000..e3ce2c4
--- /dev/null
+++ b/src/assets/icons/login.svg
@@ -0,0 +1,68 @@
+
+
+ Group 21
+ Created with Sketch.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/icons/logo.svg b/src/assets/icons/logo.svg
new file mode 100644
index 0000000..c8322c4
--- /dev/null
+++ b/src/assets/icons/logo.svg
@@ -0,0 +1,48 @@
+
+
+ 未命名
+ Created with Sketch.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ background
+
+
+
+ Layer 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/assets/icons/moon.svg b/src/assets/icons/moon.svg
new file mode 100644
index 0000000..42ccf14
--- /dev/null
+++ b/src/assets/icons/moon.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/realDark.svg b/src/assets/icons/realDark.svg
new file mode 100644
index 0000000..e0b83c8
--- /dev/null
+++ b/src/assets/icons/realDark.svg
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/assets/icons/searchoutlined.svg b/src/assets/icons/searchoutlined.svg
new file mode 100644
index 0000000..b9c6f25
--- /dev/null
+++ b/src/assets/icons/searchoutlined.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/sidemenu.svg b/src/assets/icons/sidemenu.svg
new file mode 100644
index 0000000..f646bd7
--- /dev/null
+++ b/src/assets/icons/sidemenu.svg
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/assets/icons/sun.svg b/src/assets/icons/sun.svg
new file mode 100644
index 0000000..b09cb77
--- /dev/null
+++ b/src/assets/icons/sun.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/topmenu.svg b/src/assets/icons/topmenu.svg
new file mode 100644
index 0000000..c107d52
--- /dev/null
+++ b/src/assets/icons/topmenu.svg
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/assets/icons/users.svg b/src/assets/icons/users.svg
new file mode 100644
index 0000000..44e8885
--- /dev/null
+++ b/src/assets/icons/users.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/no-preview.png b/src/assets/images/no-preview.png
new file mode 100644
index 0000000..6593a66
Binary files /dev/null and b/src/assets/images/no-preview.png differ
diff --git a/src/assets/images/tool.png b/src/assets/images/tool.png
new file mode 100644
index 0000000..35606c1
Binary files /dev/null and b/src/assets/images/tool.png differ
diff --git a/src/assets/login.svg b/src/assets/login.svg
new file mode 100644
index 0000000..e3ce2c4
--- /dev/null
+++ b/src/assets/login.svg
@@ -0,0 +1,68 @@
+
+
+ Group 21
+ Created with Sketch.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/basic/ContextMenu/index.ts b/src/components/basic/ContextMenu/index.ts
new file mode 100644
index 0000000..ed294d7
--- /dev/null
+++ b/src/components/basic/ContextMenu/index.ts
@@ -0,0 +1,3 @@
+export { createContextMenu, destroyContextMenu } from './src/createContextMenu';
+
+export * from './src/typing';
diff --git a/src/components/basic/ContextMenu/src/ContextMenu.vue b/src/components/basic/ContextMenu/src/ContextMenu.vue
new file mode 100644
index 0000000..c8dbc00
--- /dev/null
+++ b/src/components/basic/ContextMenu/src/ContextMenu.vue
@@ -0,0 +1,209 @@
+
+
diff --git a/src/components/basic/ContextMenu/src/createContextMenu.ts b/src/components/basic/ContextMenu/src/createContextMenu.ts
new file mode 100644
index 0000000..cceef4b
--- /dev/null
+++ b/src/components/basic/ContextMenu/src/createContextMenu.ts
@@ -0,0 +1,83 @@
+import contextMenuVue from './ContextMenu.vue';
+import { isClient } from '@/utils/is';
+import { CreateContextOptions, ContextMenuProps } from './typing';
+import { createVNode, render } from 'vue';
+// import { usePermission } from '@/hooks/web/usePermission';
+import {hasPermission} from '@/utils/permission/hasPermission';
+const menuManager: {
+ domList: Element[];
+ resolve: Fn;
+} = {
+ domList: [],
+ resolve: () => {},
+};
+
+export const createContextMenu = function (options: CreateContextOptions) {
+ const { event } = options || {};
+
+ event && event?.preventDefault();
+
+ if (!isClient) {
+ return;
+ }
+ return new Promise((resolve) => {
+ const body = document.body;
+
+ const container = document.createElement('div');
+ const propsData: Partial = {};
+ if (options.styles) {
+ propsData.styles = options.styles;
+ }
+
+ if (options.items) {
+ // const { isPermission } = usePermission();
+ propsData.items = options.items.filter((item) => {
+ return hasPermission(item.auth as string);
+ // return true;
+ });
+ console.log('propsData.items: ', propsData.items);
+
+ }
+
+ if (options.event) {
+ propsData.customEvent = event;
+ propsData.axis = { x: event.clientX, y: event.clientY };
+ }
+
+ const vm = createVNode(contextMenuVue, propsData);
+ console.log('propsData: ', propsData);
+ render(vm, container);
+
+ const handleClick = function () {
+ menuManager.resolve('');
+ };
+
+ menuManager.domList.push(container);
+
+ const remove = function () {
+ menuManager.domList.forEach((dom: Element) => {
+ try {
+ dom && body.removeChild(dom);
+ } catch (error) {}
+ });
+ body.removeEventListener('click', handleClick);
+ body.removeEventListener('scroll', handleClick);
+ };
+
+ menuManager.resolve = function (arg) {
+ remove();
+ resolve(arg);
+ };
+ remove();
+ body.appendChild(container);
+ body.addEventListener('click', handleClick);
+ body.addEventListener('scroll', handleClick);
+ });
+};
+
+export const destroyContextMenu = function () {
+ if (menuManager) {
+ menuManager.resolve('');
+ menuManager.domList = [];
+ }
+};
diff --git a/src/components/basic/ContextMenu/src/typing.ts b/src/components/basic/ContextMenu/src/typing.ts
new file mode 100644
index 0000000..0ad7e32
--- /dev/null
+++ b/src/components/basic/ContextMenu/src/typing.ts
@@ -0,0 +1,40 @@
+import { PermModeEnum, RoleEnum } from '@/enums/roleEnum';
+
+export interface Axis {
+ x: number;
+ y: number;
+}
+
+export interface ContextMenuItem {
+ label: string;
+ icon?: string;
+ hidden?: boolean;
+ disabled?: boolean;
+ handler?: Fn;
+ divider?: boolean;
+ children?: ContextMenuItem[];
+ auth?: string | string[] | RoleEnum | RoleEnum[];
+ authMode?: PermModeEnum;
+}
+export interface CreateContextOptions {
+ event: MouseEvent;
+ icon?: string;
+ styles?: any;
+ items?: ContextMenuItem[];
+}
+
+export interface ContextMenuProps {
+ event?: MouseEvent;
+ styles?: any;
+ items: ContextMenuItem[];
+ customEvent?: MouseEvent;
+ axis?: Axis;
+ width?: number;
+ showIcon?: boolean;
+}
+
+export interface ItemContentProps {
+ showIcon: boolean | undefined;
+ item: ContextMenuItem;
+ handler: Fn;
+}
diff --git a/src/components/basic/basic-arrow/index.ts b/src/components/basic/basic-arrow/index.ts
new file mode 100644
index 0000000..84b22c1
--- /dev/null
+++ b/src/components/basic/basic-arrow/index.ts
@@ -0,0 +1 @@
+export { default as BasicArrow } from './index.vue';
diff --git a/src/components/basic/basic-arrow/index.vue b/src/components/basic/basic-arrow/index.vue
new file mode 100644
index 0000000..ce04a78
--- /dev/null
+++ b/src/components/basic/basic-arrow/index.vue
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
diff --git a/src/components/basic/basic-help/index.vue b/src/components/basic/basic-help/index.vue
new file mode 100644
index 0000000..22e84da
--- /dev/null
+++ b/src/components/basic/basic-help/index.vue
@@ -0,0 +1,94 @@
+
+
+
diff --git a/src/components/basic/button/button.ts b/src/components/basic/button/button.ts
new file mode 100644
index 0000000..7e70218
--- /dev/null
+++ b/src/components/basic/button/button.ts
@@ -0,0 +1,16 @@
+import buttonProps from 'ant-design-vue/es/button/buttonTypes';
+import type { ButtonType as AButtonType } from 'ant-design-vue/es/button/buttonTypes';
+import type { ExtractPropTypes } from 'vue';
+
+export type ButtonType = AButtonType | 'warning' | 'success';
+
+export declare type ButtonProps = Partial>;
+
+export const typeColorMap = {
+ warning: 'var(--ant-warning-color)',
+ success: 'var(--ant-success-color)',
+} as const;
+
+export const buttonTypes = ['default', 'primary', 'ghost', 'dashed', 'link', 'text'];
+
+export { buttonProps };
diff --git a/src/components/basic/button/button.vue b/src/components/basic/button/button.vue
new file mode 100644
index 0000000..11eceb3
--- /dev/null
+++ b/src/components/basic/button/button.vue
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/basic/button/index.ts b/src/components/basic/button/index.ts
new file mode 100644
index 0000000..a5bf3eb
--- /dev/null
+++ b/src/components/basic/button/index.ts
@@ -0,0 +1,9 @@
+import AButton from './button.vue';
+
+export default AButton;
+
+export const Button = AButton;
+
+export * from './button';
+
+export { AButton };
diff --git a/src/components/basic/check-box/index.vue b/src/components/basic/check-box/index.vue
new file mode 100644
index 0000000..4108816
--- /dev/null
+++ b/src/components/basic/check-box/index.vue
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
diff --git a/src/components/basic/iconfont/icon-font.tsx b/src/components/basic/iconfont/icon-font.tsx
new file mode 100644
index 0000000..fd8f5db
--- /dev/null
+++ b/src/components/basic/iconfont/icon-font.tsx
@@ -0,0 +1,72 @@
+import { defineComponent, unref, computed } from 'vue';
+import { createFromIconfontCN } from '@ant-design/icons-vue';
+import type { PropType } from 'vue';
+import { isString } from '@/utils/is';
+
+let scriptUrls = [`${import.meta.env.BASE_URL}iconfont.js`];
+
+let MyIconFont = createFromIconfontCN({
+ // scriptUrl: '//at.alicdn.com/t/font_8d5l8fzk5b87iudi.js',
+ // scriptUrl: '//at.alicdn.com/t/font_2184398_zflo1kjcemp.js',
+ // iconfont字体图标本地化,详见:/public/iconfont.js
+ scriptUrl: scriptUrls,
+});
+
+export default defineComponent({
+ name: 'IconFont',
+ props: {
+ type: {
+ type: String as PropType,
+ default: '',
+ },
+ prefix: {
+ type: String,
+ default: 'icon-',
+ },
+ color: {
+ type: String as PropType,
+ default: 'unset',
+ },
+ size: {
+ type: [Number, String] as PropType,
+ default: 14,
+ },
+ scriptUrl: {
+ // 阿里图库字体图标路径
+ type: String as PropType,
+ default: '',
+ },
+ },
+ setup(props, { attrs }) {
+ // 如果外部传进来字体图标路径,则覆盖默认的
+ if (props.scriptUrl) {
+ scriptUrls = [...new Set(scriptUrls.concat(props.scriptUrl))];
+ MyIconFont = createFromIconfontCN({
+ scriptUrl: scriptUrls,
+ });
+ }
+
+ const wrapStyleRef = computed(() => {
+ const { color, size } = props;
+
+ const fs = isString(size) ? parseFloat(size) : size;
+
+ return {
+ color,
+ fontSize: `${fs}px`,
+ };
+ });
+
+ return () => {
+ const { type, prefix } = props;
+
+ return type ? (
+
+ ) : null;
+ };
+ },
+});
diff --git a/src/components/basic/iconfont/index.ts b/src/components/basic/iconfont/index.ts
new file mode 100644
index 0000000..88e4de3
--- /dev/null
+++ b/src/components/basic/iconfont/index.ts
@@ -0,0 +1,2 @@
+import IconFont from './icon-font';
+export { IconFont };
diff --git a/src/components/basic/icons-select/icons.json b/src/components/basic/icons-select/icons.json
new file mode 100644
index 0000000..12ed782
--- /dev/null
+++ b/src/components/basic/icons-select/icons.json
@@ -0,0 +1,1311 @@
+{
+ "id": "2184398",
+ "name": "vue3-antd",
+ "font_family": "iconfont",
+ "css_prefix_text": "icon-",
+ "description": "",
+ "glyphs": [
+ {
+ "icon_id": "17331151",
+ "name": "系统参数配置",
+ "font_class": "xitongcanshupeizhi",
+ "unicode": "e603",
+ "unicode_decimal": 58883
+ },
+ {
+ "icon_id": "797154",
+ "name": "客户参数配置",
+ "font_class": "kehucanshupeizhi",
+ "unicode": "e676",
+ "unicode_decimal": 58998
+ },
+ {
+ "icon_id": "14745812",
+ "name": "参数设置",
+ "font_class": "canshushezhi",
+ "unicode": "e694",
+ "unicode_decimal": 59028
+ },
+ {
+ "icon_id": "7339798",
+ "name": "概览",
+ "font_class": "gailan",
+ "unicode": "e69d",
+ "unicode_decimal": 59037
+ },
+ {
+ "icon_id": "18735872",
+ "name": "网盘",
+ "font_class": "wangpan",
+ "unicode": "e74e",
+ "unicode_decimal": 59214
+ },
+ {
+ "icon_id": "27545706",
+ "name": "网盘空间",
+ "font_class": "wangpankongjian",
+ "unicode": "e606",
+ "unicode_decimal": 58886
+ },
+ {
+ "icon_id": "1059047",
+ "name": "读取数据库",
+ "font_class": "duqushujuku",
+ "unicode": "e67f",
+ "unicode_decimal": 59007
+ },
+ {
+ "icon_id": "4347599",
+ "name": "icon_使用文档",
+ "font_class": "icon_shiyongwendang",
+ "unicode": "eb91",
+ "unicode_decimal": 60305
+ },
+ {
+ "icon_id": "7239613",
+ "name": "ant-design",
+ "font_class": "ant-design",
+ "unicode": "e74d",
+ "unicode_decimal": 59213
+ },
+ {
+ "icon_id": "10166326",
+ "name": "guide",
+ "font_class": "guide",
+ "unicode": "e630",
+ "unicode_decimal": 58928
+ },
+ {
+ "icon_id": "12717509",
+ "name": "定时任务管理",
+ "font_class": "dingshirenwuguanli",
+ "unicode": "e611",
+ "unicode_decimal": 58897
+ },
+ {
+ "icon_id": "11371039",
+ "name": "监控",
+ "font_class": "jiankong1",
+ "unicode": "e74c",
+ "unicode_decimal": 59212
+ },
+ {
+ "icon_id": "17426976",
+ "name": "在线用户监控",
+ "font_class": "zaixianyonghujiankong",
+ "unicode": "e60a",
+ "unicode_decimal": 58890
+ },
+ {
+ "icon_id": "20104510",
+ "name": "日志",
+ "font_class": "rizhi1",
+ "unicode": "e617",
+ "unicode_decimal": 58903
+ },
+ {
+ "icon_id": "8605740",
+ "name": "角色权限",
+ "font_class": "jiaosequanxian",
+ "unicode": "e666",
+ "unicode_decimal": 58982
+ },
+ {
+ "icon_id": "15992243",
+ "name": "链接",
+ "font_class": "externa-link",
+ "unicode": "e620",
+ "unicode_decimal": 58912
+ },
+ {
+ "icon_id": "17606379",
+ "name": "柱状图",
+ "font_class": "zhuzhuangtu",
+ "unicode": "e6f5",
+ "unicode_decimal": 59125
+ },
+ {
+ "icon_id": "17606380",
+ "name": "烛型图",
+ "font_class": "zhuxingtu",
+ "unicode": "e6f6",
+ "unicode_decimal": 59126
+ },
+ {
+ "icon_id": "17606381",
+ "name": "BUG",
+ "font_class": "BUG",
+ "unicode": "e6f7",
+ "unicode_decimal": 59127
+ },
+ {
+ "icon_id": "17606382",
+ "name": "桌面",
+ "font_class": "zhuomian",
+ "unicode": "e6f8",
+ "unicode_decimal": 59128
+ },
+ {
+ "icon_id": "17606383",
+ "name": "组件使用",
+ "font_class": "zujianshiyong",
+ "unicode": "e6f9",
+ "unicode_decimal": 59129
+ },
+ {
+ "icon_id": "17606384",
+ "name": "资源",
+ "font_class": "ziyuan",
+ "unicode": "e6fa",
+ "unicode_decimal": 59130
+ },
+ {
+ "icon_id": "17606385",
+ "name": "字段管理",
+ "font_class": "ziduanguanli",
+ "unicode": "e6fb",
+ "unicode_decimal": 59131
+ },
+ {
+ "icon_id": "17606386",
+ "name": "云",
+ "font_class": "yun",
+ "unicode": "e6fc",
+ "unicode_decimal": 59132
+ },
+ {
+ "icon_id": "17606395",
+ "name": "分享",
+ "font_class": "fenxiang",
+ "unicode": "e6fd",
+ "unicode_decimal": 59133
+ },
+ {
+ "icon_id": "17606397",
+ "name": "计算",
+ "font_class": "jisuan",
+ "unicode": "e6fe",
+ "unicode_decimal": 59134
+ },
+ {
+ "icon_id": "17606398",
+ "name": "客户管理",
+ "font_class": "kehuguanli",
+ "unicode": "e6ff",
+ "unicode_decimal": 59135
+ },
+ {
+ "icon_id": "17606399",
+ "name": "决策引擎",
+ "font_class": "jueceyinqing",
+ "unicode": "e700",
+ "unicode_decimal": 59136
+ },
+ {
+ "icon_id": "17606400",
+ "name": "流程",
+ "font_class": "liucheng1",
+ "unicode": "e701",
+ "unicode_decimal": 59137
+ },
+ {
+ "icon_id": "17606401",
+ "name": "脚本",
+ "font_class": "jiaoben",
+ "unicode": "e702",
+ "unicode_decimal": 59138
+ },
+ {
+ "icon_id": "17606402",
+ "name": "工程",
+ "font_class": "gongcheng",
+ "unicode": "e703",
+ "unicode_decimal": 59139
+ },
+ {
+ "icon_id": "17606403",
+ "name": "刷子-2",
+ "font_class": "shuazi-2",
+ "unicode": "e704",
+ "unicode_decimal": 59140
+ },
+ {
+ "icon_id": "17606404",
+ "name": "权限",
+ "font_class": "quanxian",
+ "unicode": "e705",
+ "unicode_decimal": 59141
+ },
+ {
+ "icon_id": "17606405",
+ "name": "刷子-1",
+ "font_class": "shuazi-1",
+ "unicode": "e706",
+ "unicode_decimal": 59142
+ },
+ {
+ "icon_id": "17606406",
+ "name": "文件",
+ "font_class": "wenjian",
+ "unicode": "e707",
+ "unicode_decimal": 59143
+ },
+ {
+ "icon_id": "17606407",
+ "name": "文件-增",
+ "font_class": "wenjian-zeng",
+ "unicode": "e708",
+ "unicode_decimal": 59144
+ },
+ {
+ "icon_id": "17606408",
+ "name": "文件-展开",
+ "font_class": "wenjian-zhankai",
+ "unicode": "e709",
+ "unicode_decimal": 59145
+ },
+ {
+ "icon_id": "17606409",
+ "name": "推送",
+ "font_class": "tuisong",
+ "unicode": "e70a",
+ "unicode_decimal": 59146
+ },
+ {
+ "icon_id": "17606410",
+ "name": "纸箱",
+ "font_class": "zhixiang",
+ "unicode": "e70b",
+ "unicode_decimal": 59147
+ },
+ {
+ "icon_id": "17606411",
+ "name": "运维",
+ "font_class": "yunwei",
+ "unicode": "e70c",
+ "unicode_decimal": 59148
+ },
+ {
+ "icon_id": "17606412",
+ "name": "数据库",
+ "font_class": "shujuku1",
+ "unicode": "e70d",
+ "unicode_decimal": 59149
+ },
+ {
+ "icon_id": "17606413",
+ "name": "文件-展现",
+ "font_class": "wenjian-zhanxian",
+ "unicode": "e70e",
+ "unicode_decimal": 59150
+ },
+ {
+ "icon_id": "17606415",
+ "name": "文档",
+ "font_class": "wendang",
+ "unicode": "e70f",
+ "unicode_decimal": 59151
+ },
+ {
+ "icon_id": "17606797",
+ "name": "复制",
+ "font_class": "fuzhi",
+ "unicode": "e710",
+ "unicode_decimal": 59152
+ },
+ {
+ "icon_id": "17606798",
+ "name": "用户",
+ "font_class": "yonghu1",
+ "unicode": "e711",
+ "unicode_decimal": 59153
+ },
+ {
+ "icon_id": "17606799",
+ "name": "放大",
+ "font_class": "fangda",
+ "unicode": "e712",
+ "unicode_decimal": 59154
+ },
+ {
+ "icon_id": "17606800",
+ "name": "减少",
+ "font_class": "jianshao",
+ "unicode": "e713",
+ "unicode_decimal": 59155
+ },
+ {
+ "icon_id": "17606801",
+ "name": "编辑",
+ "font_class": "bianji",
+ "unicode": "e714",
+ "unicode_decimal": 59156
+ },
+ {
+ "icon_id": "17606802",
+ "name": "缩小",
+ "font_class": "suoxiao",
+ "unicode": "e715",
+ "unicode_decimal": 59157
+ },
+ {
+ "icon_id": "17606803",
+ "name": "删除",
+ "font_class": "shanchu",
+ "unicode": "e716",
+ "unicode_decimal": 59158
+ },
+ {
+ "icon_id": "17606881",
+ "name": "矩形-错误",
+ "font_class": "juxing-cuowu",
+ "unicode": "e717",
+ "unicode_decimal": 59159
+ },
+ {
+ "icon_id": "17606882",
+ "name": "矩形-减",
+ "font_class": "juxing-jian",
+ "unicode": "e718",
+ "unicode_decimal": 59160
+ },
+ {
+ "icon_id": "17606883",
+ "name": "矩形-更多",
+ "font_class": "juxing-gengduo",
+ "unicode": "e719",
+ "unicode_decimal": 59161
+ },
+ {
+ "icon_id": "17606884",
+ "name": "矩形-增",
+ "font_class": "juxing-zeng",
+ "unicode": "e71a",
+ "unicode_decimal": 59162
+ },
+ {
+ "icon_id": "17606885",
+ "name": "矩形-右",
+ "font_class": "juxing-you",
+ "unicode": "e71b",
+ "unicode_decimal": 59163
+ },
+ {
+ "icon_id": "17606886",
+ "name": "矩形-文本",
+ "font_class": "juxing-wenben",
+ "unicode": "e71c",
+ "unicode_decimal": 59164
+ },
+ {
+ "icon_id": "17606887",
+ "name": "矩形-通过",
+ "font_class": "juxing-tongguo",
+ "unicode": "e71d",
+ "unicode_decimal": 59165
+ },
+ {
+ "icon_id": "17606888",
+ "name": "圆环-更多",
+ "font_class": "yuanhuan-gengduo",
+ "unicode": "e71e",
+ "unicode_decimal": 59166
+ },
+ {
+ "icon_id": "17606889",
+ "name": "圆环-确认",
+ "font_class": "yuanhuan-queren",
+ "unicode": "e71f",
+ "unicode_decimal": 59167
+ },
+ {
+ "icon_id": "17606890",
+ "name": "圆环-关闭",
+ "font_class": "yuanhuan-guanbi",
+ "unicode": "e720",
+ "unicode_decimal": 59168
+ },
+ {
+ "icon_id": "17606891",
+ "name": "圆环-减",
+ "font_class": "yuanhuan-jian",
+ "unicode": "e721",
+ "unicode_decimal": 59169
+ },
+ {
+ "icon_id": "17606892",
+ "name": "圆环-消息",
+ "font_class": "yuanhuan-xiaoxi",
+ "unicode": "e722",
+ "unicode_decimal": 59170
+ },
+ {
+ "icon_id": "17606893",
+ "name": "圆环-增",
+ "font_class": "yuanhuan-zeng",
+ "unicode": "e723",
+ "unicode_decimal": 59171
+ },
+ {
+ "icon_id": "17606894",
+ "name": "圆环-暂停",
+ "font_class": "yuanhuan-zanting",
+ "unicode": "e724",
+ "unicode_decimal": 59172
+ },
+ {
+ "icon_id": "17606895",
+ "name": "圆环-左",
+ "font_class": "yuanhuan-zuo",
+ "unicode": "e725",
+ "unicode_decimal": 59173
+ },
+ {
+ "icon_id": "17606896",
+ "name": "矩形-左",
+ "font_class": "juxing-zuo",
+ "unicode": "e726",
+ "unicode_decimal": 59174
+ },
+ {
+ "icon_id": "17606897",
+ "name": "圆环-时间",
+ "font_class": "yuanhuan-shijian",
+ "unicode": "e727",
+ "unicode_decimal": 59175
+ },
+ {
+ "icon_id": "17606898",
+ "name": "圆环-疑问",
+ "font_class": "yuanhuan-yiwen",
+ "unicode": "e728",
+ "unicode_decimal": 59176
+ },
+ {
+ "icon_id": "17606899",
+ "name": "圆环-右",
+ "font_class": "yuanhuan-you",
+ "unicode": "e729",
+ "unicode_decimal": 59177
+ },
+ {
+ "icon_id": "17606931",
+ "name": "圆环-减",
+ "font_class": "yuanhuan-jian1",
+ "unicode": "e72a",
+ "unicode_decimal": 59178
+ },
+ {
+ "icon_id": "17606932",
+ "name": "矩形-右",
+ "font_class": "juxing-you1",
+ "unicode": "e72b",
+ "unicode_decimal": 59179
+ },
+ {
+ "icon_id": "17606933",
+ "name": "矩形-通过",
+ "font_class": "juxing-tongguo1",
+ "unicode": "e72c",
+ "unicode_decimal": 59180
+ },
+ {
+ "icon_id": "17606934",
+ "name": "矩形-错误",
+ "font_class": "juxing-cuowu1",
+ "unicode": "e72d",
+ "unicode_decimal": 59181
+ },
+ {
+ "icon_id": "17606935",
+ "name": "矩形-减",
+ "font_class": "juxing-jian1",
+ "unicode": "e72e",
+ "unicode_decimal": 59182
+ },
+ {
+ "icon_id": "17606936",
+ "name": "矩形-增",
+ "font_class": "juxing-zeng1",
+ "unicode": "e72f",
+ "unicode_decimal": 59183
+ },
+ {
+ "icon_id": "17606937",
+ "name": "圆环-增",
+ "font_class": "yuanhuan-zeng1",
+ "unicode": "e730",
+ "unicode_decimal": 59184
+ },
+ {
+ "icon_id": "17606938",
+ "name": "圆环-左",
+ "font_class": "yuanhuan-zuo1",
+ "unicode": "e731",
+ "unicode_decimal": 59185
+ },
+ {
+ "icon_id": "17606939",
+ "name": "圆环-右",
+ "font_class": "yuanhuan-you1",
+ "unicode": "e732",
+ "unicode_decimal": 59186
+ },
+ {
+ "icon_id": "17606940",
+ "name": "圆环-关闭",
+ "font_class": "yuanhuan-guanbi1",
+ "unicode": "e733",
+ "unicode_decimal": 59187
+ },
+ {
+ "icon_id": "17606941",
+ "name": "矩形-左",
+ "font_class": "juxing-zuo1",
+ "unicode": "e734",
+ "unicode_decimal": 59188
+ },
+ {
+ "icon_id": "17606942",
+ "name": "圆环-确认",
+ "font_class": "yuanhuan-queren1",
+ "unicode": "e735",
+ "unicode_decimal": 59189
+ },
+ {
+ "icon_id": "17606943",
+ "name": "圆环-暂停",
+ "font_class": "yuanhuan-zanting1",
+ "unicode": "e736",
+ "unicode_decimal": 59190
+ },
+ {
+ "icon_id": "17606972",
+ "name": "后退",
+ "font_class": "houtui",
+ "unicode": "e737",
+ "unicode_decimal": 59191
+ },
+ {
+ "icon_id": "17606973",
+ "name": "方向上",
+ "font_class": "fangxiangshang",
+ "unicode": "e738",
+ "unicode_decimal": 59192
+ },
+ {
+ "icon_id": "17606974",
+ "name": "方向右",
+ "font_class": "fangxiangyou",
+ "unicode": "e739",
+ "unicode_decimal": 59193
+ },
+ {
+ "icon_id": "17606975",
+ "name": "方向下",
+ "font_class": "fangxiangxia",
+ "unicode": "e73a",
+ "unicode_decimal": 59194
+ },
+ {
+ "icon_id": "17606976",
+ "name": "菜单左",
+ "font_class": "caidanzuo",
+ "unicode": "e73b",
+ "unicode_decimal": 59195
+ },
+ {
+ "icon_id": "17606977",
+ "name": "快进",
+ "font_class": "kuaijin",
+ "unicode": "e73c",
+ "unicode_decimal": 59196
+ },
+ {
+ "icon_id": "17606978",
+ "name": "上传",
+ "font_class": "shangchuan1",
+ "unicode": "e73d",
+ "unicode_decimal": 59197
+ },
+ {
+ "icon_id": "17606979",
+ "name": "下载",
+ "font_class": "xiazai1",
+ "unicode": "e73e",
+ "unicode_decimal": 59198
+ },
+ {
+ "icon_id": "17606980",
+ "name": "替换",
+ "font_class": "tihuan",
+ "unicode": "e73f",
+ "unicode_decimal": 59199
+ },
+ {
+ "icon_id": "17606981",
+ "name": "方向左",
+ "font_class": "fangxiangzuo",
+ "unicode": "e740",
+ "unicode_decimal": 59200
+ },
+ {
+ "icon_id": "17606982",
+ "name": "收缩",
+ "font_class": "shousuo",
+ "unicode": "e741",
+ "unicode_decimal": 59201
+ },
+ {
+ "icon_id": "17606983",
+ "name": "菜单右",
+ "font_class": "caidanyou",
+ "unicode": "e742",
+ "unicode_decimal": 59202
+ },
+ {
+ "icon_id": "17606984",
+ "name": "展开",
+ "font_class": "zhankai",
+ "unicode": "e743",
+ "unicode_decimal": 59203
+ },
+ {
+ "icon_id": "17607037",
+ "name": "警告",
+ "font_class": "jinggao",
+ "unicode": "e744",
+ "unicode_decimal": 59204
+ },
+ {
+ "icon_id": "17607038",
+ "name": "提醒-警告",
+ "font_class": "tixing-jinggao",
+ "unicode": "e745",
+ "unicode_decimal": 59205
+ },
+ {
+ "icon_id": "17607039",
+ "name": "错误",
+ "font_class": "cuowu",
+ "unicode": "e746",
+ "unicode_decimal": 59206
+ },
+ {
+ "icon_id": "17607040",
+ "name": "对话-警告",
+ "font_class": "duihua-jinggao",
+ "unicode": "e747",
+ "unicode_decimal": 59207
+ },
+ {
+ "icon_id": "17607506",
+ "name": "同盾",
+ "font_class": "tongdun",
+ "unicode": "e748",
+ "unicode_decimal": 59208
+ },
+ {
+ "icon_id": "17613521",
+ "name": "调用",
+ "font_class": "tiaoyong",
+ "unicode": "e749",
+ "unicode_decimal": 59209
+ },
+ {
+ "icon_id": "17651395",
+ "name": "日志",
+ "font_class": "rizhi",
+ "unicode": "e74a",
+ "unicode_decimal": 59210
+ },
+ {
+ "icon_id": "17651396",
+ "name": "日志-2",
+ "font_class": "rizhi-2",
+ "unicode": "e74b",
+ "unicode_decimal": 59211
+ },
+ {
+ "icon_id": "17606294",
+ "name": "饼图",
+ "font_class": "bingtu",
+ "unicode": "e6a2",
+ "unicode_decimal": 59042
+ },
+ {
+ "icon_id": "17606295",
+ "name": "案件管理",
+ "font_class": "anjianguanli",
+ "unicode": "e6a3",
+ "unicode_decimal": 59043
+ },
+ {
+ "icon_id": "17606296",
+ "name": "布局",
+ "font_class": "buju",
+ "unicode": "e6a4",
+ "unicode_decimal": 59044
+ },
+ {
+ "icon_id": "17606297",
+ "name": "保存",
+ "font_class": "baocun",
+ "unicode": "e6a5",
+ "unicode_decimal": 59045
+ },
+ {
+ "icon_id": "17606298",
+ "name": "定位",
+ "font_class": "dingwei",
+ "unicode": "e6a6",
+ "unicode_decimal": 59046
+ },
+ {
+ "icon_id": "17606299",
+ "name": "灯泡",
+ "font_class": "dengpao",
+ "unicode": "e6a7",
+ "unicode_decimal": 59047
+ },
+ {
+ "icon_id": "17606300",
+ "name": "短信保护",
+ "font_class": "duanxinbaohu",
+ "unicode": "e6a8",
+ "unicode_decimal": 59048
+ },
+ {
+ "icon_id": "17606301",
+ "name": "导出",
+ "font_class": "daochu",
+ "unicode": "e6a9",
+ "unicode_decimal": 59049
+ },
+ {
+ "icon_id": "17606302",
+ "name": "安全",
+ "font_class": "anquan",
+ "unicode": "e6aa",
+ "unicode_decimal": 59050
+ },
+ {
+ "icon_id": "17606303",
+ "name": "分组",
+ "font_class": "fenzu",
+ "unicode": "e6ab",
+ "unicode_decimal": 59051
+ },
+ {
+ "icon_id": "17606304",
+ "name": "购物",
+ "font_class": "gouwu",
+ "unicode": "e6ac",
+ "unicode_decimal": 59052
+ },
+ {
+ "icon_id": "17606305",
+ "name": "表格",
+ "font_class": "biaoge",
+ "unicode": "e6ad",
+ "unicode_decimal": 59053
+ },
+ {
+ "icon_id": "17606306",
+ "name": "导入",
+ "font_class": "daoru",
+ "unicode": "e6ae",
+ "unicode_decimal": 59054
+ },
+ {
+ "icon_id": "17606307",
+ "name": "公告",
+ "font_class": "gonggao",
+ "unicode": "e6af",
+ "unicode_decimal": 59055
+ },
+ {
+ "icon_id": "17606308",
+ "name": "对话-2",
+ "font_class": "duihua-2",
+ "unicode": "e6b0",
+ "unicode_decimal": 59056
+ },
+ {
+ "icon_id": "17606309",
+ "name": "关系图",
+ "font_class": "guanxitu",
+ "unicode": "e6b1",
+ "unicode_decimal": 59057
+ },
+ {
+ "icon_id": "17606310",
+ "name": "对话",
+ "font_class": "duihua",
+ "unicode": "e6b2",
+ "unicode_decimal": 59058
+ },
+ {
+ "icon_id": "17606311",
+ "name": "服务器",
+ "font_class": "fuwuqi",
+ "unicode": "e6b3",
+ "unicode_decimal": 59059
+ },
+ {
+ "icon_id": "17606312",
+ "name": "复杂网络",
+ "font_class": "fuzawangluo",
+ "unicode": "e6b4",
+ "unicode_decimal": 59060
+ },
+ {
+ "icon_id": "17606313",
+ "name": "标签",
+ "font_class": "biaoqian",
+ "unicode": "e6b5",
+ "unicode_decimal": 59061
+ },
+ {
+ "icon_id": "17606314",
+ "name": "工具",
+ "font_class": "gongju",
+ "unicode": "e6b6",
+ "unicode_decimal": 59062
+ },
+ {
+ "icon_id": "17606315",
+ "name": "建模-减",
+ "font_class": "jianmo-jian",
+ "unicode": "e6b7",
+ "unicode_decimal": 59063
+ },
+ {
+ "icon_id": "17606316",
+ "name": "监控",
+ "font_class": "jiankong",
+ "unicode": "e6b8",
+ "unicode_decimal": 59064
+ },
+ {
+ "icon_id": "17606317",
+ "name": "解锁",
+ "font_class": "jiesuo",
+ "unicode": "e6b9",
+ "unicode_decimal": 59065
+ },
+ {
+ "icon_id": "17606318",
+ "name": "建模",
+ "font_class": "jianmo",
+ "unicode": "e6ba",
+ "unicode_decimal": 59066
+ },
+ {
+ "icon_id": "17606319",
+ "name": "缓存",
+ "font_class": "huancun",
+ "unicode": "e6bb",
+ "unicode_decimal": 59067
+ },
+ {
+ "icon_id": "17606320",
+ "name": "尽调精灵",
+ "font_class": "jintiaojingling",
+ "unicode": "e6bc",
+ "unicode_decimal": 59068
+ },
+ {
+ "icon_id": "17606321",
+ "name": "建模-增",
+ "font_class": "jianmo-zeng",
+ "unicode": "e6bd",
+ "unicode_decimal": 59069
+ },
+ {
+ "icon_id": "17606322",
+ "name": "卡片",
+ "font_class": "kapian",
+ "unicode": "e6be",
+ "unicode_decimal": 59070
+ },
+ {
+ "icon_id": "17606323",
+ "name": "警报-2",
+ "font_class": "jingbao-2",
+ "unicode": "e6bf",
+ "unicode_decimal": 59071
+ },
+ {
+ "icon_id": "17606324",
+ "name": "流程",
+ "font_class": "liucheng",
+ "unicode": "e6c0",
+ "unicode_decimal": 59072
+ },
+ {
+ "icon_id": "17606325",
+ "name": "计费管理",
+ "font_class": "jifeiguanli",
+ "unicode": "e6c1",
+ "unicode_decimal": 59073
+ },
+ {
+ "icon_id": "17606326",
+ "name": "链接",
+ "font_class": "lianjie",
+ "unicode": "e6c2",
+ "unicode_decimal": 59074
+ },
+ {
+ "icon_id": "17606327",
+ "name": "接入管理",
+ "font_class": "jieruguanli",
+ "unicode": "e6c3",
+ "unicode_decimal": 59075
+ },
+ {
+ "icon_id": "17606328",
+ "name": "警报",
+ "font_class": "jingbao",
+ "unicode": "e6c4",
+ "unicode_decimal": 59076
+ },
+ {
+ "icon_id": "17606329",
+ "name": "录音",
+ "font_class": "luyin",
+ "unicode": "e6c5",
+ "unicode_decimal": 59077
+ },
+ {
+ "icon_id": "17606330",
+ "name": "雷达图",
+ "font_class": "leidatu",
+ "unicode": "e6c6",
+ "unicode_decimal": 59078
+ },
+ {
+ "icon_id": "17606331",
+ "name": "密码",
+ "font_class": "mima",
+ "unicode": "e6c7",
+ "unicode_decimal": 59079
+ },
+ {
+ "icon_id": "17606332",
+ "name": "流量",
+ "font_class": "liuliang",
+ "unicode": "e6c8",
+ "unicode_decimal": 59080
+ },
+ {
+ "icon_id": "17606333",
+ "name": "倒计时",
+ "font_class": "daojishi",
+ "unicode": "e6c9",
+ "unicode_decimal": 59081
+ },
+ {
+ "icon_id": "17606334",
+ "name": "回收",
+ "font_class": "huishou",
+ "unicode": "e6ca",
+ "unicode_decimal": 59082
+ },
+ {
+ "icon_id": "17606335",
+ "name": "任务",
+ "font_class": "renwu",
+ "unicode": "e6cb",
+ "unicode_decimal": 59083
+ },
+ {
+ "icon_id": "17606336",
+ "name": "日历",
+ "font_class": "rili",
+ "unicode": "e6cc",
+ "unicode_decimal": 59084
+ },
+ {
+ "icon_id": "17606338",
+ "name": "散点图",
+ "font_class": "sandiantu",
+ "unicode": "e6cd",
+ "unicode_decimal": 59085
+ },
+ {
+ "icon_id": "17606340",
+ "name": "内容安全",
+ "font_class": "neironganquan",
+ "unicode": "e6ce",
+ "unicode_decimal": 59086
+ },
+ {
+ "icon_id": "17606341",
+ "name": "漏斗图",
+ "font_class": "loudoutu",
+ "unicode": "e6cf",
+ "unicode_decimal": 59087
+ },
+ {
+ "icon_id": "17606342",
+ "name": "情报监控",
+ "font_class": "qingbaojiankong",
+ "unicode": "e6d0",
+ "unicode_decimal": 59088
+ },
+ {
+ "icon_id": "17606343",
+ "name": "模型管理",
+ "font_class": "moxingguanli",
+ "unicode": "e6d1",
+ "unicode_decimal": 59089
+ },
+ {
+ "icon_id": "17606344",
+ "name": "企智查",
+ "font_class": "qizhicha",
+ "unicode": "e6d2",
+ "unicode_decimal": 59090
+ },
+ {
+ "icon_id": "17606345",
+ "name": "上传",
+ "font_class": "shangchuan",
+ "unicode": "e6d3",
+ "unicode_decimal": 59091
+ },
+ {
+ "icon_id": "17606346",
+ "name": "书签",
+ "font_class": "shuqian",
+ "unicode": "e6d4",
+ "unicode_decimal": 59092
+ },
+ {
+ "icon_id": "17606347",
+ "name": "数据",
+ "font_class": "shuju",
+ "unicode": "e6d5",
+ "unicode_decimal": 59093
+ },
+ {
+ "icon_id": "17606348",
+ "name": "收藏",
+ "font_class": "shoucang",
+ "unicode": "e6d6",
+ "unicode_decimal": 59094
+ },
+ {
+ "icon_id": "17606349",
+ "name": "设置",
+ "font_class": "shezhi",
+ "unicode": "e6d7",
+ "unicode_decimal": 59095
+ },
+ {
+ "icon_id": "17606350",
+ "name": "视觉关闭",
+ "font_class": "shijueguanbi",
+ "unicode": "e6d8",
+ "unicode_decimal": 59096
+ },
+ {
+ "icon_id": "17606351",
+ "name": "视觉显示",
+ "font_class": "shijuexianshi",
+ "unicode": "e6d9",
+ "unicode_decimal": 59097
+ },
+ {
+ "icon_id": "17606352",
+ "name": "首页",
+ "font_class": "shouye",
+ "unicode": "e6da",
+ "unicode_decimal": 59098
+ },
+ {
+ "icon_id": "17606353",
+ "name": "提醒",
+ "font_class": "tixing",
+ "unicode": "e6db",
+ "unicode_decimal": 59099
+ },
+ {
+ "icon_id": "17606354",
+ "name": "刷新-2",
+ "font_class": "shuaxin-2",
+ "unicode": "e6dc",
+ "unicode_decimal": 59100
+ },
+ {
+ "icon_id": "17606355",
+ "name": "搜索",
+ "font_class": "sousuo",
+ "unicode": "e6dd",
+ "unicode_decimal": 59101
+ },
+ {
+ "icon_id": "17606356",
+ "name": "通道",
+ "font_class": "tongdao",
+ "unicode": "e6de",
+ "unicode_decimal": 59102
+ },
+ {
+ "icon_id": "17606357",
+ "name": "条形图",
+ "font_class": "tiaoxingtu",
+ "unicode": "e6df",
+ "unicode_decimal": 59103
+ },
+ {
+ "icon_id": "17606358",
+ "name": "刷新",
+ "font_class": "shuaxin",
+ "unicode": "e6e0",
+ "unicode_decimal": 59104
+ },
+ {
+ "icon_id": "17606359",
+ "name": "数据库",
+ "font_class": "shujuku",
+ "unicode": "e6e1",
+ "unicode_decimal": 59105
+ },
+ {
+ "icon_id": "17606360",
+ "name": "图像",
+ "font_class": "tuxiang",
+ "unicode": "e6e2",
+ "unicode_decimal": 59106
+ },
+ {
+ "icon_id": "17606361",
+ "name": "文件同步",
+ "font_class": "wenjiantongbu",
+ "unicode": "e6e3",
+ "unicode_decimal": 59107
+ },
+ {
+ "icon_id": "17606362",
+ "name": "相机",
+ "font_class": "xiangji",
+ "unicode": "e6e4",
+ "unicode_decimal": 59108
+ },
+ {
+ "icon_id": "17606363",
+ "name": "箱型图",
+ "font_class": "xiangxingtu",
+ "unicode": "e6e5",
+ "unicode_decimal": 59109
+ },
+ {
+ "icon_id": "17606364",
+ "name": "文件搜索",
+ "font_class": "wenjiansousuo",
+ "unicode": "e6e6",
+ "unicode_decimal": 59110
+ },
+ {
+ "icon_id": "17606365",
+ "name": "统计",
+ "font_class": "tongji",
+ "unicode": "e6e7",
+ "unicode_decimal": 59111
+ },
+ {
+ "icon_id": "17606366",
+ "name": "项目",
+ "font_class": "xiangmu",
+ "unicode": "e6e8",
+ "unicode_decimal": 59112
+ },
+ {
+ "icon_id": "17606367",
+ "name": "验证码",
+ "font_class": "yanzhengma",
+ "unicode": "e6e9",
+ "unicode_decimal": 59113
+ },
+ {
+ "icon_id": "17606368",
+ "name": "信息校验",
+ "font_class": "xinxixiaoyan",
+ "unicode": "e6ea",
+ "unicode_decimal": 59114
+ },
+ {
+ "icon_id": "17606369",
+ "name": "下载",
+ "font_class": "xiazai",
+ "unicode": "e6eb",
+ "unicode_decimal": 59115
+ },
+ {
+ "icon_id": "17606370",
+ "name": "移动端",
+ "font_class": "yidongduan",
+ "unicode": "e6ec",
+ "unicode_decimal": 59116
+ },
+ {
+ "icon_id": "17606371",
+ "name": "信贷服务",
+ "font_class": "xindaifuwu",
+ "unicode": "e6ed",
+ "unicode_decimal": 59117
+ },
+ {
+ "icon_id": "17606372",
+ "name": "邮件",
+ "font_class": "youjian",
+ "unicode": "e6ee",
+ "unicode_decimal": 59118
+ },
+ {
+ "icon_id": "17606373",
+ "name": "业务指标",
+ "font_class": "yewuzhibiao",
+ "unicode": "e6ef",
+ "unicode_decimal": 59119
+ },
+ {
+ "icon_id": "17606374",
+ "name": "用户",
+ "font_class": "yonghu",
+ "unicode": "e6f0",
+ "unicode_decimal": 59120
+ },
+ {
+ "icon_id": "17606375",
+ "name": "仪表盘",
+ "font_class": "yibiaopan",
+ "unicode": "e6f1",
+ "unicode_decimal": 59121
+ },
+ {
+ "icon_id": "17606376",
+ "name": "应用中心",
+ "font_class": "yingyongzhongxin",
+ "unicode": "e6f2",
+ "unicode_decimal": 59122
+ },
+ {
+ "icon_id": "17606377",
+ "name": "账户安全",
+ "font_class": "zhanghuanquan",
+ "unicode": "e6f3",
+ "unicode_decimal": 59123
+ },
+ {
+ "icon_id": "17606378",
+ "name": "折线图",
+ "font_class": "zhexiantu",
+ "unicode": "e6f4",
+ "unicode_decimal": 59124
+ }
+ ]
+}
diff --git a/src/components/basic/icons-select/index.vue b/src/components/basic/icons-select/index.vue
new file mode 100644
index 0000000..e4a38b1
--- /dev/null
+++ b/src/components/basic/icons-select/index.vue
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/basic/locale-picker/index.ts b/src/components/basic/locale-picker/index.ts
new file mode 100644
index 0000000..f85b77f
--- /dev/null
+++ b/src/components/basic/locale-picker/index.ts
@@ -0,0 +1 @@
+export { default as LocalePicker } from './index.vue';
diff --git a/src/components/basic/locale-picker/index.vue b/src/components/basic/locale-picker/index.vue
new file mode 100644
index 0000000..2a22f05
--- /dev/null
+++ b/src/components/basic/locale-picker/index.vue
@@ -0,0 +1,60 @@
+
+
+
+ {{ getLocaleText }}
+
+
+
+ {{ item.icon }} {{ item.label }}
+
+
+
+
+
+
diff --git a/src/components/basic/split-panel/index.ts b/src/components/basic/split-panel/index.ts
new file mode 100644
index 0000000..299cac3
--- /dev/null
+++ b/src/components/basic/split-panel/index.ts
@@ -0,0 +1,3 @@
+import SplitPanel from './index.vue';
+
+export { SplitPanel };
diff --git a/src/components/basic/split-panel/index.vue b/src/components/basic/split-panel/index.vue
new file mode 100644
index 0000000..0d34adc
--- /dev/null
+++ b/src/components/basic/split-panel/index.vue
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
diff --git a/src/components/basic/svg-icon/index.ts b/src/components/basic/svg-icon/index.ts
new file mode 100644
index 0000000..c1804b0
--- /dev/null
+++ b/src/components/basic/svg-icon/index.ts
@@ -0,0 +1,3 @@
+import SvgIcon from './svg-icon.vue';
+
+export { SvgIcon };
diff --git a/src/components/basic/svg-icon/svg-icon.vue b/src/components/basic/svg-icon/svg-icon.vue
new file mode 100644
index 0000000..5d5063b
--- /dev/null
+++ b/src/components/basic/svg-icon/svg-icon.vue
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/basic/title-i18n/index.ts b/src/components/basic/title-i18n/index.ts
new file mode 100644
index 0000000..3382ba1
--- /dev/null
+++ b/src/components/basic/title-i18n/index.ts
@@ -0,0 +1 @@
+export { default as TitleI18n } from './index.vue';
diff --git a/src/components/basic/title-i18n/index.vue b/src/components/basic/title-i18n/index.vue
new file mode 100644
index 0000000..8fe1358
--- /dev/null
+++ b/src/components/basic/title-i18n/index.vue
@@ -0,0 +1,26 @@
+
+
+
+
+
diff --git a/src/components/core/Container/index.ts b/src/components/core/Container/index.ts
new file mode 100644
index 0000000..9f40502
--- /dev/null
+++ b/src/components/core/Container/index.ts
@@ -0,0 +1,6 @@
+import { withInstall } from '@/utils';
+import collapseContainer from './src/collapse/CollapseContainer.vue';
+
+export const CollapseContainer = withInstall(collapseContainer);
+
+export * from './src/typing';
diff --git a/src/components/core/Container/src/collapse/CollapseContainer.vue b/src/components/core/Container/src/collapse/CollapseContainer.vue
new file mode 100644
index 0000000..fcc442f
--- /dev/null
+++ b/src/components/core/Container/src/collapse/CollapseContainer.vue
@@ -0,0 +1,109 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/core/Container/src/collapse/CollapseHeader.vue b/src/components/core/Container/src/collapse/CollapseHeader.vue
new file mode 100644
index 0000000..d5fe36d
--- /dev/null
+++ b/src/components/core/Container/src/collapse/CollapseHeader.vue
@@ -0,0 +1,40 @@
+
+
+
+
+ {{ title }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/core/Container/src/typing.ts b/src/components/core/Container/src/typing.ts
new file mode 100644
index 0000000..86c03be
--- /dev/null
+++ b/src/components/core/Container/src/typing.ts
@@ -0,0 +1,17 @@
+export type ScrollType = 'default' | 'main';
+
+export interface CollapseContainerOptions {
+ canExpand?: boolean;
+ title?: string;
+ helpMessage?: Array | string;
+}
+export interface ScrollContainerOptions {
+ enableScroll?: boolean;
+ type?: ScrollType;
+}
+
+export type ScrollActionType = RefType<{
+ scrollBottom: () => void;
+ getScrollWrap: () => Nullable;
+ scrollTo: (top: number) => void;
+}>;
diff --git a/src/components/core/Transition/index.ts b/src/components/core/Transition/index.ts
new file mode 100644
index 0000000..7eb79b5
--- /dev/null
+++ b/src/components/core/Transition/index.ts
@@ -0,0 +1,27 @@
+import { createSimpleTransition, createJavascriptTransition } from './src/CreateTransition';
+
+import ExpandTransitionGenerator from './src/ExpandTransition';
+
+export { default as CollapseTransition } from './src/CollapseTransition.vue';
+
+export const FadeTransition = createSimpleTransition('fade-transition');
+export const ScaleTransition = createSimpleTransition('scale-transition');
+export const SlideYTransition = createSimpleTransition('slide-y-transition');
+export const ScrollYTransition = createSimpleTransition('scroll-y-transition');
+export const SlideYReverseTransition = createSimpleTransition('slide-y-reverse-transition');
+export const ScrollYReverseTransition = createSimpleTransition('scroll-y-reverse-transition');
+export const SlideXTransition = createSimpleTransition('slide-x-transition');
+export const ScrollXTransition = createSimpleTransition('scroll-x-transition');
+export const SlideXReverseTransition = createSimpleTransition('slide-x-reverse-transition');
+export const ScrollXReverseTransition = createSimpleTransition('scroll-x-reverse-transition');
+export const ScaleRotateTransition = createSimpleTransition('scale-rotate-transition');
+
+export const ExpandXTransition = createJavascriptTransition(
+ 'expand-x-transition',
+ ExpandTransitionGenerator('', true),
+);
+
+export const ExpandTransition = createJavascriptTransition(
+ 'expand-transition',
+ ExpandTransitionGenerator(''),
+);
diff --git a/src/components/core/Transition/src/CollapseTransition.vue b/src/components/core/Transition/src/CollapseTransition.vue
new file mode 100644
index 0000000..719ff03
--- /dev/null
+++ b/src/components/core/Transition/src/CollapseTransition.vue
@@ -0,0 +1,78 @@
+
+
+
+
+
+
diff --git a/src/components/core/Transition/src/CreateTransition.tsx b/src/components/core/Transition/src/CreateTransition.tsx
new file mode 100644
index 0000000..63ceee6
--- /dev/null
+++ b/src/components/core/Transition/src/CreateTransition.tsx
@@ -0,0 +1,73 @@
+import type { PropType } from 'vue';
+
+import { defineComponent, Transition, TransitionGroup } from 'vue';
+import { getSlot } from '@/utils/helper/tsxHelper';
+
+type Mode = 'in-out' | 'out-in' | 'default' | undefined;
+
+export function createSimpleTransition(name: string, origin = 'top center 0', mode?: Mode) {
+ return defineComponent({
+ name,
+ props: {
+ group: {
+ type: Boolean as PropType,
+ default: false,
+ },
+ mode: {
+ type: String as PropType,
+ default: mode,
+ },
+ origin: {
+ type: String as PropType,
+ default: origin,
+ },
+ },
+ setup(props, { slots, attrs }) {
+ const onBeforeEnter = (el: HTMLElement) => {
+ el.style.transformOrigin = props.origin;
+ };
+
+ return () => {
+ const Tag = !props.group ? Transition : TransitionGroup;
+ return (
+
+ {() => getSlot(slots)}
+
+ );
+ };
+ },
+ });
+}
+export function createJavascriptTransition(
+ name: string,
+ functions: Recordable,
+ mode: Mode = 'in-out',
+) {
+ return defineComponent({
+ name,
+ props: {
+ mode: {
+ type: String as PropType,
+ default: mode,
+ },
+ },
+ setup(props, { attrs, slots }) {
+ return () => {
+ return (
+
+ {() => getSlot(slots)}
+
+ );
+ };
+ },
+ });
+}
diff --git a/src/components/core/Transition/src/ExpandTransition.ts b/src/components/core/Transition/src/ExpandTransition.ts
new file mode 100644
index 0000000..2aaef9a
--- /dev/null
+++ b/src/components/core/Transition/src/ExpandTransition.ts
@@ -0,0 +1,89 @@
+/**
+ * Makes the first character of a string uppercase
+ */
+export function upperFirst(str: string): string {
+ return str.charAt(0).toUpperCase() + str.slice(1);
+}
+
+interface HTMLExpandElement extends HTMLElement {
+ _parent?: (Node & ParentNode & HTMLElement) | null;
+ _initialStyle: {
+ transition: string;
+ overflow: string | null;
+ height?: string | null;
+ width?: string | null;
+ };
+}
+
+export default function (expandedParentClass = '', x = false) {
+ const sizeProperty = x ? 'width' : ('height' as 'width' | 'height');
+ const offsetProperty = `offset${upperFirst(sizeProperty)}` as 'offsetHeight' | 'offsetWidth';
+
+ return {
+ beforeEnter(el: HTMLExpandElement) {
+ el._parent = el.parentNode as (Node & ParentNode & HTMLElement) | null;
+ el._initialStyle = {
+ transition: el.style.transition,
+ overflow: el.style.overflow,
+ [sizeProperty]: el.style[sizeProperty],
+ };
+ },
+
+ enter(el: HTMLExpandElement) {
+ const initialStyle = el._initialStyle;
+
+ el.style.setProperty('transition', 'none', 'important');
+ el.style.overflow = 'hidden';
+ // const offset = `${el[offsetProperty]}px`;
+
+ // el.style[sizeProperty] = '0';
+
+ void el.offsetHeight; // force reflow
+
+ el.style.transition = initialStyle.transition;
+
+ if (expandedParentClass && el._parent) {
+ el._parent.classList.add(expandedParentClass);
+ }
+
+ requestAnimationFrame(() => {
+ // el.style[sizeProperty] = offset;
+ });
+ },
+
+ afterEnter: resetStyles,
+ enterCancelled: resetStyles,
+
+ leave(el: HTMLExpandElement) {
+ el._initialStyle = {
+ transition: '',
+ overflow: el.style.overflow,
+ [sizeProperty]: el.style[sizeProperty],
+ };
+
+ el.style.overflow = 'hidden';
+ el.style[sizeProperty] = `${el[offsetProperty]}px`;
+ /* eslint-disable-next-line */
+ void el.offsetHeight; // force reflow
+
+ requestAnimationFrame(() => (el.style[sizeProperty] = '0'));
+ },
+
+ afterLeave,
+ leaveCancelled: afterLeave,
+ };
+
+ function afterLeave(el: HTMLExpandElement) {
+ if (expandedParentClass && el._parent) {
+ el._parent.classList.remove(expandedParentClass);
+ }
+ resetStyles(el);
+ }
+
+ function resetStyles(el: HTMLExpandElement) {
+ const size = el._initialStyle[sizeProperty];
+ el.style.overflow = el._initialStyle.overflow!;
+ if (size != null) el.style[sizeProperty] = size;
+ Reflect.deleteProperty(el, '_initialStyle');
+ }
+}
diff --git a/src/components/core/Tree/index.ts b/src/components/core/Tree/index.ts
new file mode 100644
index 0000000..481cad7
--- /dev/null
+++ b/src/components/core/Tree/index.ts
@@ -0,0 +1,7 @@
+import BasicTree from './src/BasicTree.vue';
+import './style';
+
+export { BasicTree };
+// export type { ContextMenuItem } from '/@/hooks/web/useContextMenu';
+export * from './src/types/tree';
+export { TreeIcon } from './src/TreeIcon';
diff --git a/src/components/core/Tree/src/BasicTree.vue b/src/components/core/Tree/src/BasicTree.vue
new file mode 100644
index 0000000..518dd01
--- /dev/null
+++ b/src/components/core/Tree/src/BasicTree.vue
@@ -0,0 +1,468 @@
+
diff --git a/src/components/core/Tree/src/TreeIcon.ts b/src/components/core/Tree/src/TreeIcon.ts
new file mode 100644
index 0000000..651df4f
--- /dev/null
+++ b/src/components/core/Tree/src/TreeIcon.ts
@@ -0,0 +1,14 @@
+import type { VNode, FunctionalComponent } from 'vue';
+
+import { h } from 'vue';
+import { isString } from '@vue/shared';
+import { IconFont } from '@/components/basic/iconfont';
+
+
+export const TreeIcon: FunctionalComponent = ({ icon }: { icon: VNode | string }) => {
+ if (!icon) return null;
+ if (isString(icon)) {
+ return h(IconFont, { type:icon, class: 'mr-1' });
+ }
+ return IconFont;
+};
diff --git a/src/components/core/Tree/src/components/TreeHeader.vue b/src/components/core/Tree/src/components/TreeHeader.vue
new file mode 100644
index 0000000..ae97202
--- /dev/null
+++ b/src/components/core/Tree/src/components/TreeHeader.vue
@@ -0,0 +1,172 @@
+
+
+
+ {{ title }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/core/Tree/src/hooks/useTree.ts b/src/components/core/Tree/src/hooks/useTree.ts
new file mode 100644
index 0000000..402b398
--- /dev/null
+++ b/src/components/core/Tree/src/hooks/useTree.ts
@@ -0,0 +1,207 @@
+import type { InsertNodeParams, KeyType, FieldNames, TreeItem } from '../types/tree';
+import type { Ref, ComputedRef } from 'vue';
+import type { TreeDataItem } from 'ant-design-vue/es/tree/Tree';
+
+import { cloneDeep } from 'lodash-es';
+import { unref } from 'vue';
+import { forEach } from '@/utils/helper/treeHelper';
+
+export function useTree(treeDataRef: Ref, getFieldNames: ComputedRef) {
+ function getAllKeys(list?: TreeDataItem[]) {
+ const keys: string[] = [];
+ const treeData = list || unref(treeDataRef);
+ const { key: keyField, children: childrenField } = unref(getFieldNames);
+ if (!childrenField || !keyField) return keys;
+
+ for (let index = 0; index < treeData.length; index++) {
+ const node = treeData[index];
+ keys.push(node[keyField]!);
+ const children = node[childrenField];
+ if (children && children.length) {
+ keys.push(...(getAllKeys(children) as string[]));
+ }
+ }
+ return keys as KeyType[];
+ }
+
+ // get keys that can be checked and selected
+ function getEnabledKeys(list?: TreeDataItem[]) {
+ const keys: string[] = [];
+ const treeData = list || unref(treeDataRef);
+ const { key: keyField, children: childrenField } = unref(getFieldNames);
+ if (!childrenField || !keyField) return keys;
+
+ for (let index = 0; index < treeData.length; index++) {
+ const node = treeData[index];
+ node.disabled !== true && node.selectable !== false && keys.push(node[keyField]!);
+ const children = node[childrenField];
+ if (children && children.length) {
+ keys.push(...(getEnabledKeys(children) as string[]));
+ }
+ }
+ return keys as KeyType[];
+ }
+
+ function getChildrenKeys(nodeKey: string | number, list?: TreeDataItem[]) {
+ const keys: KeyType[] = [];
+ const treeData = list || unref(treeDataRef);
+ const { key: keyField, children: childrenField } = unref(getFieldNames);
+ if (!childrenField || !keyField) return keys;
+ for (let index = 0; index < treeData.length; index++) {
+ const node = treeData[index];
+ const children = node[childrenField];
+ if (nodeKey === node[keyField]) {
+ keys.push(node[keyField]!);
+ if (children && children.length) {
+ keys.push(...(getAllKeys(children) as string[]));
+ }
+ } else {
+ if (children && children.length) {
+ keys.push(...getChildrenKeys(nodeKey, children));
+ }
+ }
+ }
+ return keys as KeyType[];
+ }
+
+ // Update node
+ function updateNodeByKey(key: string, node: TreeDataItem, list?: TreeDataItem[]) {
+ if (!key) return;
+ const treeData = list || unref(treeDataRef);
+ const { key: keyField, children: childrenField } = unref(getFieldNames);
+
+ if (!childrenField || !keyField) return;
+
+ for (let index = 0; index < treeData.length; index++) {
+ const element: any = treeData[index];
+ const children = element[childrenField];
+
+ if (element[keyField] === key) {
+ treeData[index] = { ...treeData[index], ...node };
+ break;
+ } else if (children && children.length) {
+ updateNodeByKey(key, node, element[childrenField]);
+ }
+ }
+ }
+
+ // Expand the specified level
+ function filterByLevel(level = 1, list?: TreeDataItem[], currentLevel = 1) {
+ if (!level) {
+ return [];
+ }
+ const res: (string | number)[] = [];
+ const data = list || unref(treeDataRef) || [];
+ for (let index = 0; index < data.length; index++) {
+ const item = data[index];
+
+ const { key: keyField, children: childrenField } = unref(getFieldNames);
+ const key = keyField ? item[keyField] : '';
+ const children = childrenField ? item[childrenField] : [];
+ res.push(key);
+ if (children && children.length && currentLevel < level) {
+ currentLevel += 1;
+ res.push(...filterByLevel(level, children, currentLevel));
+ }
+ }
+ return res as string[] | number[];
+ }
+
+ /**
+ * 添加节点
+ */
+ function insertNodeByKey({ parentKey = null, node, push = 'push' }: InsertNodeParams) {
+ const treeData: any = cloneDeep(unref(treeDataRef));
+ if (!parentKey) {
+ treeData[push](node);
+ treeDataRef.value = treeData;
+ return;
+ }
+ const { key: keyField, children: childrenField } = unref(getFieldNames);
+ if (!childrenField || !keyField) return;
+
+ forEach(treeData, (treeItem) => {
+ if (treeItem[keyField] === parentKey) {
+ treeItem[childrenField] = treeItem[childrenField] || [];
+ treeItem[childrenField][push](node);
+ return true;
+ }
+ });
+ treeDataRef.value = treeData;
+ }
+ /**
+ * 批量添加节点
+ */
+ function insertNodesByKey({ parentKey = null, list, push = 'push' }: InsertNodeParams) {
+ const treeData: any = cloneDeep(unref(treeDataRef));
+ if (!list || list.length < 1) {
+ return;
+ }
+ if (!parentKey) {
+ for (let i = 0; i < list.length; i++) {
+ treeData[push](list[i]);
+ }
+ } else {
+ const { key: keyField, children: childrenField } = unref(getFieldNames);
+ if (!childrenField || !keyField) return;
+
+ forEach(treeData, (treeItem) => {
+ if (treeItem[keyField] === parentKey) {
+ treeItem[childrenField] = treeItem[childrenField] || [];
+ for (let i = 0; i < list.length; i++) {
+ treeItem[childrenField][push](list[i]);
+ }
+ treeDataRef.value = treeData;
+ return true;
+ }
+ });
+ }
+ }
+ // Delete node
+ function deleteNodeByKey(key: string, list?: TreeDataItem[]) {
+ if (!key) return;
+ const treeData = list || unref(treeDataRef);
+ const { key: keyField, children: childrenField } = unref(getFieldNames);
+ if (!childrenField || !keyField) return;
+
+ for (let index = 0; index < treeData.length; index++) {
+ const element: any = treeData[index];
+ const children = element[childrenField];
+
+ if (element[keyField] === key) {
+ treeData.splice(index, 1);
+ break;
+ } else if (children && children.length) {
+ deleteNodeByKey(key, element[childrenField]);
+ }
+ }
+ }
+
+ // Get selected node
+ function getSelectedNode(key: KeyType, list?: TreeItem[], selectedNode?: TreeItem | null) {
+ if (!key && key !== 0) return null;
+ const treeData = list || unref(treeDataRef);
+ treeData.forEach((item) => {
+ if (selectedNode?.key || selectedNode?.key === 0) return selectedNode;
+ if (item.key === key) {
+ selectedNode = item;
+ return;
+ }
+ if (item.children && item.children.length) {
+ selectedNode = getSelectedNode(key, item.children, selectedNode);
+ }
+ });
+ return selectedNode || null;
+ }
+ return {
+ deleteNodeByKey,
+ insertNodeByKey,
+ insertNodesByKey,
+ filterByLevel,
+ updateNodeByKey,
+ getAllKeys,
+ getChildrenKeys,
+ getEnabledKeys,
+ getSelectedNode,
+ };
+}
diff --git a/src/components/core/Tree/src/types/tree.ts b/src/components/core/Tree/src/types/tree.ts
new file mode 100644
index 0000000..2bc093f
--- /dev/null
+++ b/src/components/core/Tree/src/types/tree.ts
@@ -0,0 +1,204 @@
+import type { ExtractPropTypes } from 'vue';
+import type { TreeDataItem } from 'ant-design-vue/es/tree/Tree';
+
+import { buildProps } from '@/utils/props';
+import { RoleEnum } from '@/enums/roleEnum';
+// import { PermModeEnum, RoleEnum } from '/@/enums/roleEnum';
+
+export enum ToolbarEnum {
+ SELECT_ALL,
+ UN_SELECT_ALL,
+ EXPAND_ALL,
+ UN_EXPAND_ALL,
+ CHECK_STRICTLY,
+ CHECK_UN_STRICTLY,
+}
+
+export const treeEmits = [
+ 'update:expandedKeys',
+ 'update:selectedKeys',
+ 'update:value',
+ 'change',
+ 'check',
+ 'update:searchValue',
+];
+
+export interface TreeState {
+ expandedKeys: KeyType[];
+ selectedKeys: KeyType[];
+ checkedKeys: CheckKeys;
+ checkStrictly: boolean;
+}
+
+export interface FieldNames {
+ children?: string;
+ title?: string;
+ key?: string;
+}
+
+export type KeyType = string | number;
+
+export type CheckKeys =
+ | KeyType[]
+ | { checked: string[] | number[]; halfChecked: string[] | number[] };
+
+export const treeProps = buildProps({
+ value: {
+ type: [Object, Array] as PropType,
+ },
+
+ renderIcon: {
+ type: Function as PropType<(params: Recordable) => string>,
+ },
+
+ helpMessage: {
+ type: [String, Array] as PropType,
+ default: '',
+ },
+
+ title: {
+ type: String,
+ default: '',
+ },
+ toolbar: Boolean,
+ search: Boolean,
+ searchValue: {
+ type: String,
+ default: '',
+ },
+ checkStrictly: Boolean,
+ clickRowToExpand: {
+ type: Boolean,
+ default: false,
+ },
+ checkable: Boolean,
+ defaultExpandLevel: {
+ type: [String, Number] as PropType,
+ default: '',
+ },
+ defaultExpandAll: Boolean,
+ // 工具栏是否显示 层级关联
+ toolbarStrictly: {
+ type: Boolean,
+ default: true,
+ },
+ fieldNames: {
+ type: Object as PropType,
+ },
+
+ treeData: {
+ type: Array as PropType,
+ },
+
+ actionList: {
+ type: Array as PropType,
+ default: () => [],
+ },
+
+ expandedKeys: {
+ type: Array as PropType,
+ default: () => [],
+ },
+
+ selectedKeys: {
+ type: Array as PropType,
+ default: () => [],
+ },
+
+ checkedKeys: {
+ type: Array as PropType,
+ default: () => [],
+ },
+
+ beforeRightClick: {
+ type: Function as PropType<(...arg: any) => ContextMenuItem[] | ContextMenuOptions>,
+ default: undefined,
+ },
+
+ rightMenuList: {
+ type: Array as PropType,
+ },
+ // 自定义数据过滤判断方法(注: 不是整个过滤方法,而是内置过滤的判断方法,用于增强原本仅能通过title进行过滤的方式)
+ filterFn: {
+ type: Function as PropType<
+ (searchValue: any, node: TreeItem, fieldNames: FieldNames) => boolean
+ >,
+ default: undefined,
+ },
+ // 高亮搜索值,仅高亮具体匹配值(通过title)值为true时使用默认色值,值为#xxx时使用此值替代且高亮开启
+ highlight: {
+ type: [Boolean, String] as PropType,
+ default: false,
+ },
+ // 搜索完成时自动展开结果
+ expandOnSearch: Boolean,
+ // 搜索完成自动选中所有结果,当且仅当 checkable===true 时生效
+ checkOnSearch: Boolean,
+ // 搜索完成自动select所有结果
+ selectedOnSearch: Boolean,
+ loading: {
+ type: Boolean,
+ default: false,
+ },
+ treeWrapperClassName: String,
+});
+
+export type TreeProps = ExtractPropTypes;
+
+export interface ContextMenuItem {
+ label: string;
+ icon?: string;
+ hidden?: boolean;
+ disabled?: boolean;
+ handler?: Fn;
+ divider?: boolean;
+ children?: ContextMenuItem[];
+ auth?: string | string[] | RoleEnum | RoleEnum[];
+}
+
+export interface ContextMenuOptions {
+ icon?: string;
+ styles?: any;
+ items?: ContextMenuItem[];
+}
+
+export interface TreeItem extends TreeDataItem {
+ icon?: any;
+}
+
+export interface TreeActionItem {
+ render: (record: Recordable) => any;
+ show?: boolean | ((record: Recordable) => boolean);
+ auth?: string | string[] | RoleEnum | RoleEnum[];
+ // authMode?: PermModeEnum;
+}
+
+export interface InsertNodeParams {
+ parentKey: string | null;
+ node: TreeDataItem;
+ list?: TreeDataItem[];
+ push?: 'push' | 'unshift';
+}
+
+export interface TreeActionType {
+ checkAll: (checkAll: boolean) => void;
+ expandAll: (expandAll: boolean) => void;
+ setExpandedKeys: (keys: KeyType[]) => void;
+ getExpandedKeys: () => KeyType[];
+ setSelectedKeys: (keys: KeyType[]) => void;
+ getSelectedKeys: () => KeyType[];
+ setCheckedKeys: (keys: CheckKeys) => void;
+ getCheckedKeys: () => CheckKeys;
+ filterByLevel: (level: number) => void;
+ insertNodeByKey: (opt: InsertNodeParams) => void;
+ insertNodesByKey: (opt: InsertNodeParams) => void;
+ deleteNodeByKey: (key: string) => void;
+ updateNodeByKey: (key: string, node: Omit) => void;
+ setSearchValue: (value: string) => void;
+ getSearchValue: () => string;
+ getSelectedNode: (
+ key: KeyType,
+ treeList?: TreeItem[],
+ selectNode?: TreeItem | null,
+ ) => TreeItem | null;
+}
diff --git a/src/components/core/Tree/style/index.less b/src/components/core/Tree/style/index.less
new file mode 100644
index 0000000..21e9343
--- /dev/null
+++ b/src/components/core/Tree/style/index.less
@@ -0,0 +1,46 @@
+.tree {
+ background-color: #fff;
+ .ant-tree-node-content-wrapper {
+ position: relative;
+
+ .ant-tree-title {
+ position: absolute;
+ left: 0;
+ width: 100%;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ }
+ }
+
+ &-title {
+ position: relative;
+ display: flex;
+ align-items: center;
+ width: 100%;
+ padding-right: 10px;
+ &:hover {
+ .action {
+ visibility: visible;
+ }
+ }
+ }
+
+ &__content {
+ overflow: hidden;
+ }
+
+ &-actions {
+ position: absolute;
+ right: 10px;
+ display: flex;
+ .action {
+ margin-left: 4px;
+ visibility: hidden;
+ }
+ }
+
+ &-header {
+ border-bottom: 1px solid @border-color-base;
+ }
+}
diff --git a/src/components/core/Tree/style/index.ts b/src/components/core/Tree/style/index.ts
new file mode 100644
index 0000000..d74e52e
--- /dev/null
+++ b/src/components/core/Tree/style/index.ts
@@ -0,0 +1 @@
+import './index.less';
diff --git a/src/components/core/draggable-modal/index.ts b/src/components/core/draggable-modal/index.ts
new file mode 100644
index 0000000..96898a9
--- /dev/null
+++ b/src/components/core/draggable-modal/index.ts
@@ -0,0 +1 @@
+export { default as DraggableModal } from './index.vue';
diff --git a/src/components/core/draggable-modal/index.vue b/src/components/core/draggable-modal/index.vue
new file mode 100644
index 0000000..8aadb64
--- /dev/null
+++ b/src/components/core/draggable-modal/index.vue
@@ -0,0 +1,354 @@
+
+
+
+
+
+ {{ $attrs.title || '标题' }}
+
+
+
+
+
+
+
+
+
+
+
+ ① 窗口可以拖动;
+ ② 窗口可以通过八个方向改变大小;
+ ③ 窗口可以最小化、最大化、还原、关闭;
+ ④ 限制窗口最小宽度/高度。
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/core/dynamic-table/index.ts b/src/components/core/dynamic-table/index.ts
new file mode 100644
index 0000000..f5ffbd2
--- /dev/null
+++ b/src/components/core/dynamic-table/index.ts
@@ -0,0 +1,13 @@
+import DynamicTable from './src/dynamic-table.vue';
+import type { DefineComponent, Ref } from 'vue';
+import type { DynamicTableInstance, DynamicTableProps } from './src/dynamic-table';
+export { DynamicTable };
+
+export * from './src/types/';
+export * from './src/hooks/';
+export * from './src/dynamic-table';
+
+export type DynamicTableRef = Ref;
+
+// TODO 暂时是为了解决ts error(如果你有解决方法 请务必联系我~): JSX element type 'DynamicTable' does not have any construct or call signatures.
+export default DynamicTable as unknown as DefineComponent>;
diff --git a/src/components/core/dynamic-table/src/components/editable-cell/index.vue b/src/components/core/dynamic-table/src/components/editable-cell/index.vue
new file mode 100644
index 0000000..c9a4b81
--- /dev/null
+++ b/src/components/core/dynamic-table/src/components/editable-cell/index.vue
@@ -0,0 +1,190 @@
+
+
+
+
+
+
+ {{ err }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/core/dynamic-table/src/components/index.ts b/src/components/core/dynamic-table/src/components/index.ts
new file mode 100644
index 0000000..850a591
--- /dev/null
+++ b/src/components/core/dynamic-table/src/components/index.ts
@@ -0,0 +1,3 @@
+export { default as TableAction } from './table-action.vue';
+export { default as ToolBar } from './tool-bar/index.vue';
+export { default as EditableCell } from './editable-cell/index.vue';
diff --git a/src/components/core/dynamic-table/src/components/table-action.vue b/src/components/core/dynamic-table/src/components/table-action.vue
new file mode 100644
index 0000000..e7016ca
--- /dev/null
+++ b/src/components/core/dynamic-table/src/components/table-action.vue
@@ -0,0 +1,130 @@
+
+
+
+
+
+
+
+
+ {{ actionItem.label }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/core/dynamic-table/src/components/table-settings/column-setting.vue b/src/components/core/dynamic-table/src/components/table-settings/column-setting.vue
new file mode 100644
index 0000000..794c9d7
--- /dev/null
+++ b/src/components/core/dynamic-table/src/components/table-settings/column-setting.vue
@@ -0,0 +1,194 @@
+
+
+
+ {{ $t('component.table.settingColumn') }}
+
+
+
+
+
+ {{ $t('component.table.settingColumnShow') }}
+
+
+ {{ $t('component.table.settingIndexColumnShow') }}
+
+
+ {{ $t('component.table.settingBordered') }}
+
+
+ {{ $t('common.resetText') }}
+
+
+
+
+
+
+
+
+
+
+ {{ item.title }}
+
+
+
+
+ {{ $t('component.table.settingFixedLeft') }}
+
+
+
+
+ {{ $t('component.table.settingFixedRight') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/core/dynamic-table/src/components/table-settings/index.vue b/src/components/core/dynamic-table/src/components/table-settings/index.vue
new file mode 100644
index 0000000..a496f3a
--- /dev/null
+++ b/src/components/core/dynamic-table/src/components/table-settings/index.vue
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/core/dynamic-table/src/components/table-settings/refresh-setting.vue b/src/components/core/dynamic-table/src/components/table-settings/refresh-setting.vue
new file mode 100644
index 0000000..7be112f
--- /dev/null
+++ b/src/components/core/dynamic-table/src/components/table-settings/refresh-setting.vue
@@ -0,0 +1,19 @@
+
+
+
+ {{ $t('common.redo') }}
+
+
+
+
+
diff --git a/src/components/core/dynamic-table/src/components/table-settings/size-setting.vue b/src/components/core/dynamic-table/src/components/table-settings/size-setting.vue
new file mode 100644
index 0000000..561fe1f
--- /dev/null
+++ b/src/components/core/dynamic-table/src/components/table-settings/size-setting.vue
@@ -0,0 +1,45 @@
+
+
+
+ {{ $t('component.table.settingDens') }}
+
+
+
+
+
+
+
+ {{ $t('component.table.settingDensDefault') }}
+
+
+ {{ $t('component.table.settingDensMiddle') }}
+
+
+ {{ $t('component.table.settingDensSmall') }}
+
+
+
+
+
+
+
diff --git a/src/components/core/dynamic-table/src/components/tool-bar/index.vue b/src/components/core/dynamic-table/src/components/tool-bar/index.vue
new file mode 100644
index 0000000..f95d57d
--- /dev/null
+++ b/src/components/core/dynamic-table/src/components/tool-bar/index.vue
@@ -0,0 +1,66 @@
+
+
+
+
+ {{ title }}
+
+
+
+
+
+
+
+
+
+
+ 导出
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/core/dynamic-table/src/dynamic-table.ts b/src/components/core/dynamic-table/src/dynamic-table.ts
new file mode 100644
index 0000000..57234d0
--- /dev/null
+++ b/src/components/core/dynamic-table/src/dynamic-table.ts
@@ -0,0 +1,130 @@
+import { tableProps } from 'ant-design-vue/es/table';
+import type DynamicTable from './dynamic-table.vue';
+import type { PropType, ExtractPropTypes } from 'vue';
+import type { BookType } from 'xlsx';
+import type {
+ LoadDataParams,
+ TableColumn,
+ OnChangeCallbackParams,
+ EditableType,
+ OnSave,
+ OnCancel,
+} from './types/';
+import type { SchemaFormProps } from '@/components/core/schema-form';
+import type { GetRowKey } from 'ant-design-vue/es/table/interface';
+import { isBoolean } from '@/utils/is';
+
+export const dynamicTableProps = {
+ ...tableProps(),
+ rowKey: {
+ type: [String, Function] as PropType>,
+ default: 'id',
+ },
+ /** 是否显示搜索表单 */
+ search: {
+ type: Boolean as PropType,
+ default: true,
+ },
+ /** 表单属性配置 */
+ formProps: {
+ type: Object as PropType,
+ default: () => ({}),
+ },
+ /** 表格列配置 */
+ columns: {
+ type: Array as PropType,
+ required: true,
+ default: () => [],
+ },
+ /** 表格数据请求函数 */
+ dataRequest: {
+ // 获取列表数据函数API
+ type: Function as PropType<
+ (
+ params?: LoadDataParams,
+ onChangeParams?: OnChangeCallbackParams,
+ ) => Promise
+ >,
+ },
+ /** 是否显示索引号 */
+ showIndex: {
+ type: Boolean as PropType,
+ default: false,
+ },
+ /** 索引列属性配置 */
+ indexColumnProps: {
+ type: Object as PropType>,
+ default: () => ({}),
+ },
+ /** 是否显示表格工具栏 */
+ showToolBar: {
+ type: Boolean as PropType,
+ default: true,
+ },
+ /** 是否显示表格设置 */
+ showTableSetting: {
+ type: Boolean as PropType,
+ default: true,
+ },
+ /** 表格标题 */
+ headerTitle: String as PropType,
+ /** 表格标题提示信息 */
+ titleTooltip: String as PropType,
+ /** 表格自适应高度 */
+ autoHeight: Boolean as PropType,
+ // excel导出配置
+ /** 导出的文件名 */
+ exportFileName: {
+ type: String as PropType,
+ },
+ /** xlsx的booktype */
+ exportBookType: {
+ type: String as PropType,
+ default: 'xlsx',
+ },
+ /** 自动宽度 */
+ exportAutoWidth: {
+ type: Boolean as PropType,
+ default: true,
+ },
+ /** 自定义数据导出格式函数 */
+ exportFormatter: {
+ type: Function as PropType<
+ (columns: TableColumn[], tableData: any[]) => { header: string[]; data: any[] }
+ >,
+ default: null,
+ },
+ /** 编辑行类型
+ * @const `single`: 只能同时编辑一行
+ * @const `multiple`: 同时编辑多行
+ * @const `cell`: 可编辑单元格
+ * @defaultValue `single`
+ */
+ editableType: {
+ type: String as PropType,
+ default: 'single',
+ },
+ /** 单元格保存编辑回调 */
+ onSave: {
+ type: Function as PropType,
+ },
+ /** 单元格取消编辑回调 */
+ onCancel: {
+ type: Function as PropType,
+ },
+ /** 只能编辑一行的的提示 */
+ onlyOneLineEditorAlertMessage: String,
+} as const;
+
+export type DynamicTableProps = ExtractPropTypes;
+
+export const dynamicTableEmits = {
+ change: (...rest: OnChangeCallbackParams) => rest.length === 4,
+ 'toggle-advanced': (isAdvanced: boolean) => isBoolean(isAdvanced),
+};
+
+export type DynamicTableEmits = typeof dynamicTableEmits;
+
+export type DynamicTableEmitFn = EmitFn;
+// @ts-ignore
+export type DynamicTableInstance = InstanceType;
diff --git a/src/components/core/dynamic-table/src/dynamic-table.vue b/src/components/core/dynamic-table/src/dynamic-table.vue
new file mode 100644
index 0000000..5a4e37e
--- /dev/null
+++ b/src/components/core/dynamic-table/src/dynamic-table.vue
@@ -0,0 +1,165 @@
+
+
+
$emit('toggle-advanced', e)"
+ @submit="handleSubmit"
+ >
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/core/dynamic-table/src/hooks/index.ts b/src/components/core/dynamic-table/src/hooks/index.ts
new file mode 100644
index 0000000..399237b
--- /dev/null
+++ b/src/components/core/dynamic-table/src/hooks/index.ts
@@ -0,0 +1,19 @@
+import type { TableState } from './useTableState';
+import type { TableMethods } from './useTableMethods';
+import type { ExportData2Excel } from './useExportData2Excel';
+import type { DynamicTableProps, DynamicTableEmitFn } from '../dynamic-table';
+
+export * from './useTable';
+export * from './useTableContext';
+export * from './useExportData2Excel';
+export * from './useTableForm';
+export * from './useTableState';
+export * from './useTableMethods';
+export * from './useColumns';
+export * from './useEditable';
+export * from './useScroll';
+
+export type DynamicTableType = DynamicTableProps &
+ TableState &
+ TableMethods &
+ ExportData2Excel & { emit: DynamicTableEmitFn };
diff --git a/src/components/core/dynamic-table/src/hooks/useColumns.tsx b/src/components/core/dynamic-table/src/hooks/useColumns.tsx
new file mode 100644
index 0000000..a510dc3
--- /dev/null
+++ b/src/components/core/dynamic-table/src/hooks/useColumns.tsx
@@ -0,0 +1,155 @@
+import { ref, watchEffect, unref, useSlots } from 'vue';
+import { cloneDeep, isFunction, mergeWith } from 'lodash-es';
+import { EditableCell } from '../components/';
+import { ColumnKeyFlag, CustomRenderParams } from '../types/column';
+import type { Slots } from 'vue';
+import type {
+ TableActionType,
+ TableColumn,
+ TableMethods,
+ TableState,
+ DynamicTableProps,
+} from '@/components/core/dynamic-table';
+import type { FormSchema } from '@/components/core/schema-form';
+import { isBoolean } from '@/utils/is';
+import { TableAction } from '@/components/core/dynamic-table/src/components';
+
+export type UseTableColumnsContext = {
+ state: TableState;
+ props: DynamicTableProps;
+ methods: TableMethods;
+ tableAction: TableActionType;
+ slots: Slots;
+};
+
+export const useColumns = ({ state, methods, props, tableAction }: UseTableColumnsContext) => {
+ const slots = useSlots();
+ const innerColumns = ref(props.columns);
+ const { getColumnKey } = methods;
+ const { getProps } = state;
+ const { isEditable } = tableAction;
+
+ watchEffect(() => {
+ const innerProps = { ...unref(getProps) };
+ const ColumnKeyFlags = Object.keys(ColumnKeyFlag);
+ const columns = cloneDeep(innerProps!.columns!.filter((n) => !n.hideInTable));
+
+ // 是否添加序号列
+ if (innerProps?.showIndex) {
+ columns.unshift({
+ dataIndex: 'ACTION',
+ title: '序号',
+ width: 60,
+ align: 'center',
+ fixed: 'left',
+ ...innerProps?.indexColumnProps,
+ customRender: ({ index }) => {
+ const getPagination = unref(state.paginationRef);
+ if (isBoolean(getPagination)) {
+ return index + 1;
+ }
+ const { current = 1, pageSize = 10 } = getPagination!;
+ return ((current < 1 ? 1 : current) - 1) * pageSize + index + 1;
+ },
+ } as TableColumn);
+ }
+
+ innerColumns.value = columns.map((item) => {
+ const customRender = item.customRender;
+
+ const rowKey = props.rowKey as string;
+ const columnKey = getColumnKey(item) as string;
+
+ item.customRender = (options) => {
+ const { record, index, text } = options as CustomRenderParams>;
+ /** 当前行是否开启了编辑行模式 */
+ const isEditableRow = isEditable(record[rowKey]);
+ /** 是否开启了单元格编辑模式 */
+ const isEditableCell = innerProps.editableType === 'cell';
+ /** 当前单元格是否允许被编辑 */
+ const isCellEditable = isBoolean(item.editable)
+ ? item.editable
+ : item.editable?.(options) ?? true;
+ /** 是否允许被编辑 */
+ const isShowEditable =
+ (isEditableRow || isEditableCell) &&
+ isCellEditable &&
+ !ColumnKeyFlags.includes(columnKey);
+
+ return isShowEditable ? (
+
+ {customRender?.(options) ?? text}
+
+ ) : (
+ customRender?.(options)
+ );
+ };
+
+ // 操作列
+ if (item.actions && columnKey === ColumnKeyFlag.ACTION) {
+ item.customRender = (options) => {
+ const { record, index } = options;
+ return (
+
+ );
+ };
+ }
+ return {
+ key: item.key ?? (item.dataIndex as Key),
+ dataIndex: item.dataIndex ?? (item.key as Key),
+ ...item,
+ } as TableColumn;
+ });
+ });
+
+ function mergeCustomizer(objValue, srcValue, key) {
+ /** 这里着重处理 `componentProps` 为函数时的合并处理 */
+ if (key === 'componentProps') {
+ return (...rest) => {
+ return {
+ ...(isFunction(objValue) ? objValue(...rest) : objValue),
+ ...(isFunction(srcValue) ? srcValue(...rest) : srcValue),
+ };
+ };
+ }
+ }
+
+ /** 获取当前行的form schema */
+ const getColumnFormSchema = (item: TableColumn, record: Recordable): FormSchema => {
+ const key = getColumnKey(item) as string;
+ /** 是否继承搜索表单的属性 */
+ const isExtendSearchFormProps = !Object.is(
+ item.editFormItemProps?.extendSearchFormProps,
+ false,
+ );
+
+ return {
+ field: `${record[props.rowKey as string]}.${item.searchField ?? key}`,
+ component: 'Input',
+ defaultValue: record[key],
+ colProps: {
+ span: unref(getProps).editableType === 'cell' ? 20 : 24,
+ },
+ formItemProps: {
+ help: '',
+ },
+ ...(isExtendSearchFormProps
+ ? mergeWith(cloneDeep(item.formItemProps), item.editFormItemProps, mergeCustomizer)
+ : item.editFormItemProps),
+ };
+ };
+
+ return {
+ innerColumns,
+ };
+};
diff --git a/src/components/core/dynamic-table/src/hooks/useEditable.ts b/src/components/core/dynamic-table/src/hooks/useEditable.ts
new file mode 100644
index 0000000..6779ec4
--- /dev/null
+++ b/src/components/core/dynamic-table/src/hooks/useEditable.ts
@@ -0,0 +1,172 @@
+import { nextTick, watch } from 'vue';
+import { cloneDeep } from 'lodash-es';
+import { message } from 'ant-design-vue';
+import type { DynamicTableProps } from '../dynamic-table';
+import type { TableState } from './useTableState';
+import type { TableColumn } from '@/components/core/dynamic-table/src/types/column';
+
+type UseTableMethodsContext = {
+ state: TableState;
+ props: DynamicTableProps;
+};
+
+export type UseEditableType = ReturnType;
+
+export const useEditable = ({ state, props }: UseTableMethodsContext) => {
+ const {
+ tableData,
+ editFormModel,
+ editTableFormRef,
+ editFormErrorMsgs,
+ editableCellKeys,
+ editableRowKeys,
+ } = state;
+
+ watch(
+ () => props.editableType,
+ (type) => {
+ if (type === 'cell') {
+ editableRowKeys.value.clear();
+ } else {
+ editableCellKeys.value.clear();
+ }
+ },
+ );
+
+ /** 设置表单值 */
+ const setEditFormModel = (recordKey: Key, editValue: Recordable) => {
+ Reflect.set(editFormModel.value, recordKey, editValue);
+ nextTick(() => {
+ editTableFormRef.value?.setFormModel(recordKey, editValue);
+ });
+ };
+
+ /** 获取要编辑的值 */
+ const getEditValue = (
+ recordKey: Key,
+ currentRow?: Recordable,
+ columns?: TableColumn>[],
+ ) => {
+ // 克隆当前行数据作为临时编辑的表单数据,避免直接修改原数据
+ const editValue = cloneDeep(
+ currentRow ?? tableData.value.find((n) => n[String(props.rowKey)] === recordKey),
+ );
+ // 用户设置的默认值优先
+ columns?.forEach((item) => {
+ const { formItemProps, editFormItemProps } = item;
+ const field = (item.dataIndex || item.key) as string;
+ if (
+ !Object.is(editFormItemProps?.extendSearchFormProps, false) &&
+ formItemProps &&
+ Reflect.has(formItemProps, 'defaultValue')
+ ) {
+ editValue[field] = formItemProps.defaultValue;
+ }
+ if (editFormItemProps && Reflect.has(editFormItemProps, 'defaultValue')) {
+ editValue[field] = editFormItemProps.defaultValue;
+ }
+ });
+ return editValue;
+ };
+
+ /**
+ * @description 进入编辑行状态
+ *
+ * @param recordKey 当前行id,即table的rowKey
+ * @param currentRow 当前行数据
+ */
+ const startEditable = (recordKey: Key, currentRow?: Recordable) => {
+ editableCellKeys.value.clear();
+ console.log('startEditable editFormModel', editFormModel);
+ // 如果是单行的话,不允许多行编辑
+ if (editableRowKeys.value.size > 0 && props.editableType === 'single') {
+ message.warn(props.onlyOneLineEditorAlertMessage || '只能同时编辑一行');
+ return false;
+ }
+ const editValue = getEditValue(recordKey, currentRow, props.columns);
+ setEditFormModel(recordKey, editValue);
+ editableRowKeys.value.add(recordKey);
+ return true;
+ };
+
+ /** 进入编辑单元格状态 */
+ const startCellEditable = (recordKey: Key, dataIndex: Key, currentRow?: Recordable) => {
+ editableRowKeys.value.clear();
+ const targetColumn = props.columns.filter((n) => n.dataIndex === dataIndex);
+ const editValue = getEditValue(recordKey, currentRow, targetColumn);
+
+ editableCellKeys.value.add(`${recordKey}.${dataIndex}`);
+ setEditFormModel(recordKey, {
+ ...(getEditFormModel(recordKey) || editValue),
+ [dataIndex]: editValue[dataIndex],
+ });
+ };
+
+ /** 取消编辑单元格 */
+ const cancelCellEditable = (recordKey: Key, dataIndex: Key) => {
+ editableCellKeys.value.delete(`${recordKey}.${dataIndex}`);
+ const editFormModel = getEditFormModel(recordKey);
+ const record = tableData.value.find((n) => n[String(props.rowKey)] === recordKey);
+ if (record) {
+ // 取消编辑,还原默认值
+ Reflect.set(editFormModel, dataIndex, record[dataIndex]);
+ }
+ /** 表单项的校验错误信息也清掉 */
+ editFormErrorMsgs.value.delete(`${recordKey}.${dataIndex}`);
+ };
+
+ /**
+ * 退出编辑行状态
+ *
+ * @param recordKey
+ */
+ const cancelEditable = (recordKey: Key) => {
+ const formModel = getEditFormModel(recordKey);
+ /** 表单项的校验错误信息也清掉 */
+ Object.keys(formModel).forEach((field) =>
+ editFormErrorMsgs.value.delete(`${recordKey}.${field}`),
+ );
+
+ nextTick(() => {
+ editTableFormRef.value?.delFormModel?.(recordKey);
+ });
+
+ editableRowKeys.value.delete(recordKey);
+ return Reflect.deleteProperty(editFormModel.value, recordKey);
+ };
+
+ /** 这行是不是编辑状态 */
+ const isEditable = (recordKey: Key) => editableRowKeys.value.has(recordKey);
+
+ /** 获取表单编辑后的值 */
+ const getEditFormModel = (recordKey: Key) => Reflect.get(editFormModel.value, recordKey);
+
+ /** 行编辑表单是否校验通过 */
+ const validateRow = async (recordKey: Key) => {
+ const nameList = Object.keys(getEditFormModel(recordKey)).map((n) => [String(recordKey), n]);
+ const result = await editTableFormRef.value?.validateFields(nameList);
+ return result?.[recordKey] ?? result;
+ };
+
+ /**
+ * 单元格表单是否校验通过
+ * @param recordKey 当前行ID
+ * @param dataIndex 当前单元格字段名, eg: `column.dataIndex`
+ * */
+ const validateCell = async (recordKey: Key, dataIndex: Key) => {
+ const result = await editTableFormRef.value?.validateFields([[String(recordKey), dataIndex]]);
+ return result?.[recordKey] ?? result;
+ };
+
+ return {
+ setEditFormModel,
+ startEditable,
+ startCellEditable,
+ cancelCellEditable,
+ cancelEditable,
+ isEditable,
+ validateRow,
+ validateCell,
+ getEditFormModel,
+ };
+};
diff --git a/src/components/core/dynamic-table/src/hooks/useExportData2Excel.ts b/src/components/core/dynamic-table/src/hooks/useExportData2Excel.ts
new file mode 100644
index 0000000..5e2ca96
--- /dev/null
+++ b/src/components/core/dynamic-table/src/hooks/useExportData2Excel.ts
@@ -0,0 +1,49 @@
+import { get, isEmpty } from 'lodash-es';
+import type { DynamicTableProps } from '../dynamic-table';
+import type { TableMethods, TableState } from './index';
+import { exportJson2Excel } from '@/utils/Export2Excel';
+
+export type UseExportData2ExcelContext = {
+ state: TableState;
+ methods: TableMethods;
+ props: DynamicTableProps;
+};
+
+export type ExportData2Excel = ReturnType;
+
+/**
+ * 导出表格Excel
+ */
+export const useExportData2Excel = ({ props, state, methods }: UseExportData2ExcelContext) => {
+ const exportData2Excel = () => {
+ const { columns, exportFormatter, exportFileName, exportBookType, exportAutoWidth } = props;
+ const { getColumnKey } = methods;
+ const { tableData } = state;
+
+ const theaders = columns.filter((n) => getColumnKey(n) && getColumnKey(n) !== 'INDEX');
+
+ if (exportFormatter) {
+ const { header, data } = exportFormatter(theaders, tableData.value);
+ if (isEmpty(header) || isEmpty(data)) {
+ return;
+ } else {
+ exportJson2Excel({
+ header,
+ data,
+ filename: exportFileName,
+ bookType: exportBookType,
+ autoWidth: exportAutoWidth,
+ });
+ }
+ } else {
+ exportJson2Excel({
+ header: theaders.map((n) => n.title as string),
+ data: tableData.value.map((v) => theaders.map((header) => get(v, getColumnKey(header)!))),
+ filename: exportFileName,
+ bookType: exportBookType,
+ autoWidth: exportAutoWidth,
+ });
+ }
+ };
+ return { exportData2Excel };
+};
diff --git a/src/components/core/dynamic-table/src/hooks/useScroll.ts b/src/components/core/dynamic-table/src/hooks/useScroll.ts
new file mode 100644
index 0000000..576c876
--- /dev/null
+++ b/src/components/core/dynamic-table/src/hooks/useScroll.ts
@@ -0,0 +1,56 @@
+import { computed, getCurrentInstance, ref, onBeforeUnmount } from 'vue';
+import { debounce } from 'lodash-es';
+import type { DynamicTableProps } from '../dynamic-table';
+
+type UseScrollParams = {
+ props: DynamicTableProps;
+};
+
+export type UseScrollType = ReturnType;
+
+// 获取元素到顶部距离-通用方法
+export const getPositionTop = (node: HTMLElement) => {
+ let top = node.offsetTop;
+ let parent = node.offsetParent as HTMLElement;
+ while (parent != null) {
+ top += parent.offsetTop;
+ parent = parent.offsetParent as HTMLElement;
+ }
+ return top; // 所有的父元素top和
+};
+
+export const useScroll = ({ props }: UseScrollParams) => {
+ const currIns = getCurrentInstance();
+ const scrollY = ref();
+
+ const scroll = computed(() => {
+ return {
+ y: scrollY.value,
+ ...props.scroll,
+ };
+ });
+
+ const getScrollY = debounce(() => {
+ if (!props.autoHeight) return;
+ const compRootEl = currIns?.proxy?.$el as HTMLDivElement;
+ const el =
+ compRootEl?.querySelector('.ant-table-body') || compRootEl?.querySelector('.ant-table-tbody');
+ if (el) {
+ const y = document.documentElement.offsetHeight - getPositionTop(el as HTMLDivElement);
+ // 简单粗糙的实现
+ scrollY.value = y - 30;
+ }
+ // console.log('innerScroll.value', el, scrollY.value);
+ });
+
+ setTimeout(getScrollY);
+ window.addEventListener('resize', getScrollY);
+
+ onBeforeUnmount(() => {
+ window.removeEventListener('resize', getScrollY);
+ });
+
+ return {
+ scroll,
+ };
+};
diff --git a/src/components/core/dynamic-table/src/hooks/useTable.tsx b/src/components/core/dynamic-table/src/hooks/useTable.tsx
new file mode 100644
index 0000000..2ade587
--- /dev/null
+++ b/src/components/core/dynamic-table/src/hooks/useTable.tsx
@@ -0,0 +1,63 @@
+import { nextTick, ref, unref, watch } from 'vue';
+import { isEmpty } from 'lodash-es';
+import DynamicTable from '../../index';
+import type { Ref, SetupContext } from 'vue';
+import type { DynamicTableInstance, DynamicTableProps } from '../dynamic-table';
+
+export function useTable(props?: Partial) {
+ const dynamicTableRef = ref({} as DynamicTableInstance);
+
+ async function getTableInstance() {
+ await nextTick();
+ const table = unref(dynamicTableRef);
+ if (isEmpty(table)) {
+ console.error('未获取表格实例!');
+ }
+ return table;
+ }
+ watch(
+ () => props,
+ async () => {
+ if (props) {
+ // console.log('table onMounted');
+ await nextTick();
+ const tableInstance = await getTableInstance();
+ tableInstance?.setProps?.(props);
+ }
+ },
+ {
+ immediate: true,
+ deep: true,
+ },
+ );
+
+ const methods = new Proxy[>(dynamicTableRef, {
+ get(target, key) {
+ if (Reflect.has(target, key)) {
+ return unref(target);
+ }
+ if (target.value && Reflect.has(target.value, key)) {
+ return Reflect.get(target.value, key);
+ }
+ return async (...rest) => {
+ const table = await getTableInstance();
+ return table?.[key]?.(...rest);
+ };
+ },
+ });
+
+ const DynamicTableRender = (
+ compProps: Partial],
+ { attrs, slots }: SetupContext,
+ ) => {
+ return (
+
+ );
+ };
+
+ return [DynamicTableRender, unref(methods)] as const;
+}
diff --git a/src/components/core/dynamic-table/src/hooks/useTableContext.ts b/src/components/core/dynamic-table/src/hooks/useTableContext.ts
new file mode 100644
index 0000000..6cf03d6
--- /dev/null
+++ b/src/components/core/dynamic-table/src/hooks/useTableContext.ts
@@ -0,0 +1,12 @@
+import { provide, inject } from 'vue';
+import type { DynamicTableType } from './index';
+
+const key = Symbol('dynamic-table');
+
+export function createTableContext(instance: DynamicTableType) {
+ provide(key, instance);
+}
+
+export function useTableContext() {
+ return inject(key) as DynamicTableType;
+}
diff --git a/src/components/core/dynamic-table/src/hooks/useTableForm.ts b/src/components/core/dynamic-table/src/hooks/useTableForm.ts
new file mode 100644
index 0000000..e4dae76
--- /dev/null
+++ b/src/components/core/dynamic-table/src/hooks/useTableForm.ts
@@ -0,0 +1,75 @@
+import { unref, computed, watchEffect } from 'vue';
+import { ColumnKeyFlag } from '../types/column';
+import type { TableMethods } from './useTableMethods';
+import type { TableState } from './useTableState';
+import type { ComputedRef, Slots } from 'vue';
+import type { FormSchema, SchemaFormProps } from '@/components/core/schema-form';
+
+export type UseTableFormContext = {
+ tableState: TableState;
+ tableMethods: TableMethods;
+ slots: Slots;
+};
+
+export function useTableForm({ tableState, slots, tableMethods }: UseTableFormContext) {
+ const { getProps, loadingRef } = tableState;
+ const { getColumnKey, getQueryFormRef } = tableMethods;
+
+ const getFormProps = computed((): SchemaFormProps => {
+ const { formProps } = unref(getProps);
+ const { submitButtonOptions } = formProps || {};
+ return {
+ showAdvancedButton: true,
+ layout: 'horizontal',
+ labelWidth: 100,
+ ...formProps,
+ schemas: formProps.schemas ?? unref(formSchemas),
+ submitButtonOptions: { loading: unref(loadingRef), ...submitButtonOptions },
+ compact: true,
+ };
+ });
+
+ const formSchemas = computed(() => {
+ const columnKeyFlags = Object.keys(ColumnKeyFlag);
+ return unref(getProps)
+ .columns.filter((n) => {
+ const field = getColumnKey(n);
+ return !n.hideInSearch && !!field && !columnKeyFlags.includes(field as string);
+ })
+ .map((n) => {
+ return {
+ field: n.searchField ?? (getColumnKey(n) as string),
+ component: 'Input',
+ label: n.title as string,
+ colProps: {
+ span: 8,
+ },
+ ...n.formItemProps,
+ };
+ })
+ .sort((a, b) => Number(a?.order) - Number(b?.order)) as FormSchema[];
+ });
+
+ // 同步外部对props的修改
+ watchEffect(() => getQueryFormRef()?.setSchemaFormProps(unref(getFormProps)), {
+ flush: 'post',
+ });
+
+ const getFormSlotKeys: ComputedRef = computed(() => {
+ const keys = Object.keys(slots);
+ return keys
+ .map((item) => (item.startsWith('form-') ? item : null))
+ .filter((item): item is string => !!item);
+ });
+
+ function replaceFormSlotKey(key: string) {
+ if (!key) return '';
+ return key?.replace?.(/form-/, '') ?? '';
+ }
+
+ return {
+ getFormProps,
+ replaceFormSlotKey,
+ getFormSlotKeys,
+ };
+}
diff --git a/src/components/core/dynamic-table/src/hooks/useTableMethods.tsx b/src/components/core/dynamic-table/src/hooks/useTableMethods.tsx
new file mode 100644
index 0000000..a171873
--- /dev/null
+++ b/src/components/core/dynamic-table/src/hooks/useTableMethods.tsx
@@ -0,0 +1,192 @@
+import { unref, nextTick, getCurrentInstance } from 'vue';
+import { isObject, isFunction } from 'lodash-es';
+import { useInfiniteScroll } from '@vueuse/core';
+import { useEditable } from './useEditable';
+import type { DynamicTableProps, DynamicTableEmitFn } from '../dynamic-table';
+import type { OnChangeCallbackParams, TableColumn } from '../types/';
+import type { Pagination, TableState } from './useTableState';
+import { isAsyncFunction, isBoolean } from '@/utils/is';
+
+export type UseInfiniteScrollParams = Parameters;
+
+export type TableMethods = ReturnType;
+
+export type UseTableMethodsContext = {
+ state: TableState;
+ props: DynamicTableProps;
+ emit: DynamicTableEmitFn;
+};
+
+let retryFetchCount = 2;
+
+export const useTableMethods = ({ state, props, emit }: UseTableMethodsContext) => {
+ const { innerPropsRef, tableData, loadingRef, queryFormRef, paginationRef, editFormErrorMsgs } =
+ state;
+ // 可编辑行
+ const editableMethods = useEditable({ state, props });
+
+ const setProps = (props: Partial) => {
+ innerPropsRef.value = { ...unref(innerPropsRef), ...props };
+ };
+
+ /**
+ * @description 表格查询
+ */
+ const handleSubmit = (params, page = 1) => {
+ params.page = page;
+ fetchData(params);
+ };
+
+ /**
+ * @param {object} params 表格查询参数
+ * @param {boolean} flush 是否将页数重置到第一页
+ * @description 获取表格数据
+ */
+ const fetchData = async (params = {}, rest?: OnChangeCallbackParams) => {
+ const [pagination] = rest || [];
+ // 如果用户没有提供dataSource并且dataRequest是一个函数,那就进行接口请求
+ if (
+ Object.is(props.dataSource, undefined) &&
+ (isFunction(props.dataRequest) || isAsyncFunction(props.dataRequest))
+ ) {
+ await nextTick();
+ if (queryFormRef.value) {
+ const values = await queryFormRef.value.validate();
+ params = {
+ ...queryFormRef.value.handleFormValues(values),
+ ...params,
+ };
+ }
+ const _pagination = unref(paginationRef)!;
+ // 是否启用了分页
+ const enablePagination = isObject(_pagination);
+ const queryParams = {
+ ...params,
+ };
+ if (enablePagination) {
+ Object.assign(queryParams, {
+ page: _pagination.current,
+ limit: _pagination.pageSize,
+ ...queryParams,
+ });
+ }
+ loadingRef.value = true;
+ const data = await props
+ ?.dataRequest?.(queryParams, rest)
+ .finally(() => (loadingRef.value = false));
+
+ if (data?.pagination) {
+ const { page, size, total } = data.pagination;
+
+ if (enablePagination && _pagination?.current && retryFetchCount-- > 0) {
+ // 有分页时,删除当前页最后一条数据时 自动往前一页查询
+ if (data?.list.length === 0 && total > 0 && page > 1) {
+ _pagination.current--;
+ return reload();
+ }
+ }
+
+ updatePagination({
+ current: page,
+ pageSize: size,
+ total,
+ });
+ } else {
+ updatePagination(pagination);
+ }
+ if (Array.isArray(data?.list)) {
+ tableData.value = data!.list;
+ } else if (Array.isArray(data)) {
+ tableData.value = data;
+ } else {
+ tableData.value = [];
+ }
+ } else {
+ updatePagination(pagination);
+ }
+
+ retryFetchCount = 2;
+ return tableData;
+ };
+
+ /**
+ * @description 刷新表格
+ */
+ const reload = async (resetPageIndex = false) => {
+ const pagination = unref(paginationRef);
+ if (Object.is(resetPageIndex, true) && isObject(pagination)) {
+ pagination.current = 1;
+ }
+ return await fetchData();
+ };
+
+ /**
+ * @description 分页改变
+ */
+ const handleTableChange = async (...rest: OnChangeCallbackParams) => {
+ // const [pagination, filters, sorter] = rest;
+ const [pagination] = rest;
+ if (queryFormRef.value) {
+ await queryFormRef.value.validate();
+ }
+ updatePagination(pagination);
+ await fetchData({}, rest);
+ emit('change', ...rest);
+ };
+
+ // dataIndex 可以为 a.b.c
+ // const getDataIndexVal = (dataIndex, record) => dataIndex.split('.').reduce((pre, curr) => pre[curr], record)
+
+ // 获取表格列key
+ const getColumnKey = (column: TableColumn) => {
+ return (column?.key || column?.dataIndex) as string;
+ };
+
+ /** 编辑表单验证失败回调 */
+ const handleEditFormValidate = (name: string[], status, errorMsgs) => {
+ // console.log('errorInfo', editFormErrorMsgs);
+ if (status) {
+ editFormErrorMsgs.value.delete(name.join('.'));
+ } else {
+ editFormErrorMsgs.value.set(name.join('.'), errorMsgs);
+ }
+ };
+
+ /** 更新表格分页信息 */
+ const updatePagination = (info: Pagination = paginationRef.value) => {
+ if (isBoolean(info)) {
+ paginationRef.value = info;
+ } else if (isObject(paginationRef.value)) {
+ paginationRef.value = {
+ ...paginationRef.value,
+ ...info,
+ };
+ }
+ };
+ /** 表格无限滚动 */
+ const onInfiniteScroll = (
+ callback: UseInfiniteScrollParams[1],
+ options?: UseInfiniteScrollParams[2],
+ ) => {
+ const el = getCurrentInstance()?.proxy?.$el.querySelector('.ant-table-body');
+ useInfiniteScroll(el, callback, options);
+ };
+
+ /**
+ * @description当外部需要动态改变搜索表单的值或选项时,需要调用此方法获取dynamicFormRef实例
+ */
+ const getQueryFormRef = () => queryFormRef.value;
+
+ return {
+ ...editableMethods,
+ setProps,
+ handleSubmit,
+ handleTableChange,
+ getColumnKey,
+ fetchData,
+ getQueryFormRef,
+ reload,
+ onInfiniteScroll,
+ handleEditFormValidate,
+ };
+};
diff --git a/src/components/core/dynamic-table/src/hooks/useTableState.tsx b/src/components/core/dynamic-table/src/hooks/useTableState.tsx
new file mode 100644
index 0000000..bf4bd20
--- /dev/null
+++ b/src/components/core/dynamic-table/src/hooks/useTableState.tsx
@@ -0,0 +1,127 @@
+import { computed, ref, unref, watch } from 'vue';
+import { omit } from 'lodash-es';
+import { useScroll } from './useScroll';
+import type { Slots } from 'vue';
+import type { DynamicTableProps } from '../dynamic-table';
+import type { SchemaFormInstance } from '@/components/core/schema-form';
+import type { TableProps, Table } from 'ant-design-vue';
+import { useI18n } from '@/hooks/useI18n';
+
+export type Pagination = TableProps['pagination'];
+export type TableState = ReturnType;
+
+export type UseTableStateParams = {
+ props: DynamicTableProps;
+ slots: Slots;
+};
+
+export const useTableState = ({ props, slots }: UseTableStateParams) => {
+ const { t } = useI18n();
+ const { scroll } = useScroll({ props });
+ /** 表格实例 */
+ const tableRef = ref>();
+ /** 查询表单实例 */
+ const queryFormRef = ref();
+ /** 编辑表格的表单实例 */
+ const editTableFormRef = ref();
+ /** 表格数据 */
+ const tableData = ref([]);
+ /** 内部属性 */
+ const innerPropsRef = ref>();
+ /** 分页配置参数 */
+ const paginationRef = ref>(false);
+ /** 表格加载 */
+ const loadingRef = ref(!!props.loading);
+ /** 编辑表单model */
+ const editFormModel = ref({});
+ /** 所有验证不通过的表单项 */
+ const editFormErrorMsgs = ref(new Map());
+ /** 当前所有正在被编辑的行key的格式为:`${recordKey}` */
+ const editableRowKeys = ref(new Set());
+ /** 当前所有正在被编辑的单元格key的格式为:`${recordKey}.${dataIndex}`,仅`editableType`为`cell`时有效 */
+ const editableCellKeys = ref(new Set());
+
+ if (!Object.is(props.pagination, false)) {
+ paginationRef.value = {
+ current: 1,
+ pageSize: 10,
+ total: 0,
+ pageSizeOptions: ['10', '20', '50', '100'],
+ showQuickJumper: true,
+ showSizeChanger: true, // 显示可改变每页数量
+ showTotal: (total) => t('component.table.total', { total }), // 显示总数
+ // onChange: (current, pageSize) => pageOption?.pageChange?.(current, pageSize),
+ // onShowSizeChange: (current, pageSize) => pageOption?.pageChange?.(current, pageSize),
+ ...props.pagination,
+ };
+ }
+
+ const getProps = computed(() => {
+ return { ...props, ...unref(innerPropsRef) };
+ });
+
+ const getBindValues = computed(() => {
+ const props = unref(getProps);
+
+ let propsData: Recordable = {
+ ...props,
+ rowKey: props.rowKey ?? 'id',
+ loading: props.loading ?? unref(loadingRef),
+ pagination: unref(paginationRef),
+ tableLayout: props.tableLayout ?? 'fixed',
+ scroll: unref(scroll),
+ };
+ if (slots.expandedRowRender) {
+ propsData = omit(propsData, 'scroll');
+ }
+
+ propsData = omit(propsData, ['class', 'onChange', 'columns']);
+ return propsData;
+ });
+
+ // 如果外界设置了dataSource,那就直接用外界提供的数据
+ watch(
+ () => props.dataSource,
+ (val) => {
+ if (val) {
+ tableData.value = val;
+ }
+ },
+ {
+ immediate: true,
+ deep: true,
+ },
+ );
+
+ watch(
+ () => props.columns,
+ (val) => {
+ if (val) {
+ innerPropsRef.value = {
+ ...innerPropsRef.value,
+ columns: val,
+ };
+ }
+ },
+ {
+ immediate: true,
+ deep: true,
+ },
+ );
+
+ return {
+ tableRef,
+ editTableFormRef,
+ loadingRef,
+ tableData,
+ queryFormRef,
+ innerPropsRef,
+ getProps,
+ getBindValues,
+ paginationRef,
+ editFormModel,
+ editFormErrorMsgs,
+ editableCellKeys,
+ editableRowKeys,
+ };
+};
diff --git a/src/components/core/dynamic-table/src/types/column.ts b/src/components/core/dynamic-table/src/types/column.ts
new file mode 100644
index 0000000..82472d2
--- /dev/null
+++ b/src/components/core/dynamic-table/src/types/column.ts
@@ -0,0 +1,67 @@
+import type { ColumnsType } from 'ant-design-vue/es/table';
+import type { FormSchema } from '@/components/core/schema-form';
+import type { ActionItem } from './tableAction';
+import type { TableActionType } from '@/components/core/dynamic-table/src/types';
+import type { DataIndex } from 'ant-design-vue/es/vc-table/interface';
+
+export type ColumnType = ColumnsType[number];
+
+export type CustomRenderParams = Omit<
+ Parameters['customRender']>>[number],
+ 'column'
+> & { column: TableColumn };
+
+// export type EditableConfig = {
+// /** 可编辑表格的类型,`单行编辑` | `多行编辑` | `可编辑单元格` */
+// type: 'single' | 'multiple' | 'cell';
+// /** 传递给 Form.Item 的配置,可以配置 rules */
+// formProps?: Partial>;
+// /** 行保存的时候 */
+// onSave?: (
+// /** 行 id,一般是唯一id */
+// key: Key,
+// /** 当前修改的行的值,只有 form 在内的会被设置 */
+// record: T,
+// /** 原始值,可以用于判断是否修改 */
+// originRow: T,
+// ) => Promise;
+// };
+
+/**
+ * 表格属性
+ */
+export type TableColumn = ColumnType & {
+ dataIndex?: keyof T | ColumnKeyFlagType | Omit;
+ /** 指定搜索的字段 */
+ searchField?: string;
+ /** 在查询表单中不展示此项 */
+ hideInSearch?: boolean;
+ /** 在 Table 中不展示此列 */
+ hideInTable?: boolean;
+ /** 传递给搜索表单 Form.Item 的配置,可以配置 rules */
+ formItemProps?: Partial>;
+ /** 传递给可编辑表格 Form.Item 的配置,可以配置 rules */
+ editFormItemProps?: Partial> & {
+ /**
+ * 是否继承于搜索表单`TableColumn.formItemProps`的所有属性,为深拷贝合并
+ * 值为`true`时的行为伪代码如下:
+ * ```js
+ * Object.assign({}, TableColumn.formItemProps, TableColumn.editFormItemProps)
+ * ```
+ * @defaultValue 默认值为`true`
+ * */
+ extendSearchFormProps?: boolean;
+ };
+ /** 操作列,一般用于对表格某一行数据进行操作 */
+ actions?: (params: CustomRenderParams, action: TableActionType) => ActionItem[];
+ /** 当前单元格是否允许被编辑 */
+ editable?: boolean | ((params: CustomRenderParams) => boolean);
+ /** 当前单元格是否默认开启编辑,仅 `editableType`为`cell`时有效 */
+ defaultEditable?: boolean;
+};
+
+export enum ColumnKeyFlag {
+ ACTION = 'ACTION',
+ INDEX = 'INDEX',
+}
+export type ColumnKeyFlagType = `${ColumnKeyFlag}`;
diff --git a/src/components/core/dynamic-table/src/types/index.ts b/src/components/core/dynamic-table/src/types/index.ts
new file mode 100644
index 0000000..34816be
--- /dev/null
+++ b/src/components/core/dynamic-table/src/types/index.ts
@@ -0,0 +1,3 @@
+export * from './table';
+export * from './column';
+export * from './tableAction';
diff --git a/src/components/core/dynamic-table/src/types/table.ts b/src/components/core/dynamic-table/src/types/table.ts
new file mode 100644
index 0000000..f14cc90
--- /dev/null
+++ b/src/components/core/dynamic-table/src/types/table.ts
@@ -0,0 +1,41 @@
+import type { TableProps } from 'ant-design-vue';
+import type { TablePaginationConfig } from 'ant-design-vue/es/table';
+
+/**
+ * 加载表格数据的参数
+ */
+export type LoadDataParams = TablePaginationConfig & {
+ /** 根据自己业务需求定义页码 */
+ page?: number;
+ /** 根据自己业务需求定义页数据条数 */
+ limit?: number;
+};
+
+/** 表格onChange事件回调参数 */
+export type OnChangeCallbackParams = Parameters>;
+
+/** 表格onChange事件回调函数 */
+export type OnChangeCallback = TableProps['onChange'];
+
+/** 编辑行类型 */
+export type EditableType = 'single' | 'multiple' | 'cell';
+
+/** 单元格保存回调 */
+export type OnSave = (
+ /** 行 id,一般是唯一id */
+ key: Key,
+ /** 当前修改的行的值,只有 form 在内的会被设置 */
+ record: T,
+ /** 原始值,可以用于判断是否修改 */
+ originRow: T,
+) => Promise;
+
+/** 单元格取消保存回调 */
+export type OnCancel = (
+ /** 行 id,一般是唯一id */
+ key: Key,
+ /** 当前修改的行的值,只有 form 在内的会被设置 */
+ record: T,
+ /** 原始值,可以用于判断是否修改 */
+ originRow: T,
+) => any | void;
diff --git a/src/components/core/dynamic-table/src/types/tableAction.ts b/src/components/core/dynamic-table/src/types/tableAction.ts
new file mode 100644
index 0000000..66f5b3a
--- /dev/null
+++ b/src/components/core/dynamic-table/src/types/tableAction.ts
@@ -0,0 +1,76 @@
+import type { Ref } from 'vue';
+import type { CustomRenderParams } from './column';
+import type { PopconfirmProps } from 'ant-design-vue/es/popconfirm';
+import type { ButtonProps, TooltipProps } from 'ant-design-vue/es/components';
+import type { PermissionType } from '@/core/permission/modules/types';
+import type { TableMethods, UseEditableType } from '../hooks/';
+import { RoleEnum } from '@/enums/roleEnum';
+
+export type ActionItem = Omit & {
+ onClick?: Fn;
+ label?: string;
+ size?: string;
+ color?: 'success' | 'error' | 'warning' | string;
+ loading?: Ref | ButtonProps['loading'];
+ icon?: string;
+ popConfirm?: PopConfirm;
+ disabled?: boolean;
+ divider?: boolean;
+ // 权限编码控制是否显示
+ // auth?: RoleEnum | RoleEnum[] | string | string[];
+ // 业务控制是否显示
+ ifShow?: boolean | ((action: ActionItem) => boolean);
+ tooltip?: string | TooltipProps;
+ /** 设置按钮权限, effect不传默认为disable */
+ auth?:
+ | PermissionType
+ | {
+ perm: PermissionType | RoleEnum | RoleEnum[] | string | string[];
+ effect?: 'delete' | 'disable';
+ }
+ | RoleEnum
+ | RoleEnum[]
+ | string
+ | string[];
+};
+
+export type PopConfirm = PopconfirmProps & {
+ title: string;
+ okText?: string;
+ cancelText?: string;
+ onConfirm: Fn;
+ onCancel?: Fn;
+ icon?: string;
+ placement?:
+ | 'top'
+ | 'left'
+ | 'right'
+ | 'bottom'
+ | 'topLeft'
+ | 'topRight'
+ | 'leftTop'
+ | 'leftBottom'
+ | 'rightTop'
+ | 'rightBottom'
+ | 'bottomLeft'
+ | 'bottomRight';
+};
+
+export type TableActionType = {
+ /** 刷新并清空,页码也会重置,不包括搜索表单 */
+ reload: TableMethods['reload'];
+ /** 设置动态表格属性 */
+ setProps: TableMethods['setProps'];
+ /** 获取远程数据 */
+ fetchData: TableMethods['fetchData'];
+ /** 进入编辑状态 */
+ startEditable: UseEditableType['startEditable'];
+ /** 取消编辑 */
+ cancelEditable: UseEditableType['cancelEditable'];
+ /** 获取编辑后表单的值 */
+ getEditFormModel: UseEditableType['getEditFormModel'];
+ /** 当前行是否处于编辑状态 */
+ isEditable: UseEditableType['isEditable'];
+ /** 行编辑表单是否校验通过 */
+ validateRow: UseEditableType['validateRow'];
+};
diff --git a/src/components/core/schema-form/index.ts b/src/components/core/schema-form/index.ts
new file mode 100644
index 0000000..2c85591
--- /dev/null
+++ b/src/components/core/schema-form/index.ts
@@ -0,0 +1,15 @@
+import SchemaForm from './src/schema-form.vue';
+import SchemaFormItem from './src/schema-form-item.vue';
+import type { DefineComponent } from 'vue';
+import type { SchemaFormProps } from './src/schema-form';
+
+export * from './src/types/';
+export * from './src/schema-form';
+export * from './src/schema-form-item';
+export * from './src/hooks/';
+export * from './src/components/';
+
+export { SchemaForm, SchemaFormItem };
+
+// TODO 暂时是为了解决ts error(如果你有解决方法 请务必联系我~): JSX element type 'SchemaForm' does not have any construct or call signatures.
+export default SchemaForm as unknown as DefineComponent>;
diff --git a/src/components/core/schema-form/src/componentMap.ts b/src/components/core/schema-form/src/componentMap.ts
new file mode 100644
index 0000000..7f96484
--- /dev/null
+++ b/src/components/core/schema-form/src/componentMap.ts
@@ -0,0 +1,53 @@
+/**
+ * Component list, register here to setting it in the form
+ */
+import {
+ Input,
+ Select,
+ Radio,
+ Checkbox,
+ AutoComplete,
+ Cascader,
+ DatePicker,
+ InputNumber,
+ Switch,
+ TimePicker,
+ TreeSelect,
+ Tree,
+ Slider,
+ Rate,
+ Divider,
+ Upload,
+} from 'ant-design-vue';
+
+const componentMap = {
+ Input,
+ InputGroup: Input.Group,
+ InputPassword: Input.Password,
+ InputSearch: Input.Search,
+ InputTextArea: Input.TextArea,
+ InputNumber,
+ AutoComplete,
+ Select,
+ TreeSelect,
+ Tree,
+ Switch,
+ RadioGroup: Radio.Group,
+ Checkbox,
+ CheckboxGroup: Checkbox.Group,
+ Cascader,
+ Slider,
+ Rate,
+ DatePicker,
+ MonthPicker: DatePicker.MonthPicker,
+ RangePicker: DatePicker.RangePicker,
+ WeekPicker: DatePicker.WeekPicker,
+ TimePicker,
+ Upload,
+
+ Divider,
+};
+
+export type ComponentMapType = keyof typeof componentMap;
+
+export { componentMap };
diff --git a/src/components/core/schema-form/src/components/ApiSelect.vue b/src/components/core/schema-form/src/components/ApiSelect.vue
new file mode 100644
index 0000000..10d3c5b
--- /dev/null
+++ b/src/components/core/schema-form/src/components/ApiSelect.vue
@@ -0,0 +1,142 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ t('component.form.apiSelectNotFound') }}
+
+
+
+
+
diff --git a/src/components/core/schema-form/src/components/form-action.vue b/src/components/core/schema-form/src/components/form-action.vue
new file mode 100644
index 0000000..95e691f
--- /dev/null
+++ b/src/components/core/schema-form/src/components/form-action.vue
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+ {{ getResetBtnOptions.text }}
+
+
+
+
+ {{ getSubmitBtnOptions.text }}
+
+
+
+
+ {{ isAdvanced ? t('component.form.putAway') : t('component.form.unfold') }}
+
+
+
+
+
+
+
+
diff --git a/src/components/core/schema-form/src/components/index.ts b/src/components/core/schema-form/src/components/index.ts
new file mode 100644
index 0000000..9137b58
--- /dev/null
+++ b/src/components/core/schema-form/src/components/index.ts
@@ -0,0 +1 @@
+export { default as ApiSelect } from './ApiSelect.vue';
diff --git a/src/components/core/schema-form/src/helper.ts b/src/components/core/schema-form/src/helper.ts
new file mode 100644
index 0000000..b62497d
--- /dev/null
+++ b/src/components/core/schema-form/src/helper.ts
@@ -0,0 +1,70 @@
+import dayjs from 'dayjs';
+import type { RuleObject } from 'ant-design-vue/es/form/';
+import type { ComponentMapType } from './types/component';
+import { isNumber } from '@/utils/is';
+import { useI18n } from '@/hooks/useI18n';
+
+/**
+ * @description: 生成placeholder
+ */
+export function createPlaceholderMessage(component: ComponentMapType, label = '') {
+ const { t } = useI18n();
+
+ if (component.includes('Input') || component.includes('Complete')) {
+ return `${t('common.inputText')}${label}`;
+ }
+ const chooseTypes: ComponentMapType[] = [
+ 'Select',
+ 'Cascader',
+ 'Checkbox',
+ 'CheckboxGroup',
+ 'Switch',
+ 'TreeSelect',
+ ];
+ if (component.includes('Picker') || chooseTypes.includes(component)) {
+ return `${t('common.chooseText')}${label}`;
+ }
+ return '';
+}
+
+const DATE_TYPE = ['DatePicker', 'MonthPicker', 'WeekPicker', 'TimePicker'];
+
+function genType() {
+ return [...DATE_TYPE, 'RangePicker'];
+}
+
+export function setComponentRuleType(
+ rule: RuleObject,
+ component: ComponentMapType,
+ valueFormat: string,
+) {
+ if (['DatePicker', 'MonthPicker', 'WeekPicker', 'TimePicker'].includes(component)) {
+ rule.type = valueFormat ? 'string' : 'object';
+ } else if (['RangePicker', 'Upload', 'CheckboxGroup', 'TimePicker'].includes(component)) {
+ rule.type = 'array';
+ } else if (['InputNumber'].includes(component)) {
+ rule.type = 'number';
+ }
+}
+
+export function processDateValue(attr: Recordable, component: string) {
+ const { valueFormat, value } = attr;
+ if (valueFormat) {
+ // attr.value = isObject(value) ? dayjs(value).format(valueFormat) : value
+ } else if (DATE_TYPE.includes(component) && value) {
+ attr.value = dayjs(attr.value);
+ }
+}
+
+export function handleInputNumberValue(component?: ComponentMapType, val?: any) {
+ if (!component) return val;
+ if (['Input', 'InputPassword', 'InputSearch', 'InputTextArea'].includes(component)) {
+ return val && isNumber(val) ? `${val}` : val;
+ }
+ return val;
+}
+
+/**
+ * 时间字段
+ */
+export const dateItemType = genType();
diff --git a/src/components/core/schema-form/src/hooks/index.ts b/src/components/core/schema-form/src/hooks/index.ts
new file mode 100644
index 0000000..d3a2358
--- /dev/null
+++ b/src/components/core/schema-form/src/hooks/index.ts
@@ -0,0 +1,13 @@
+import type { FormState } from './useFormState';
+import type { FormEvents } from './useFormEvents';
+import type { FormMethods } from './useFormMethods';
+
+export * from './useForm';
+export * from './useFormState';
+export * from './useFormContext';
+export * from './useFormEvents';
+export * from './useFormMethods';
+export * from './useLabelWidth';
+export * from './useAdvanced';
+
+export type SchemaFormType = FormState & FormEvents & FormMethods;
diff --git a/src/components/core/schema-form/src/hooks/useAdvanced.ts b/src/components/core/schema-form/src/hooks/useAdvanced.ts
new file mode 100644
index 0000000..c6b34f4
--- /dev/null
+++ b/src/components/core/schema-form/src/hooks/useAdvanced.ts
@@ -0,0 +1,152 @@
+import { computed, unref, watch } from 'vue';
+import type { SchemaFormEmitFn } from '../schema-form';
+import type { ColEx } from '../types/component';
+import type { SchemaFormType } from './';
+import { isBoolean, isFunction, isNumber, isObject } from '@/utils/is';
+import { useBreakpoint } from '@/hooks/event/useBreakpoint';
+
+const BASIC_COL_LEN = 24;
+
+type UseAdvancedContext = {
+ instance: SchemaFormType;
+ emit: SchemaFormEmitFn;
+};
+
+export const useAdvanced = ({ instance, emit }: UseAdvancedContext) => {
+ const { realWidthRef, screenEnum, screenRef } = useBreakpoint();
+ const { advanceState, getFormProps, formSchemasRef, formModel, defaultFormValues } = instance;
+ const getEmptySpan = computed((): number => {
+ if (!advanceState.isAdvanced) {
+ return 0;
+ }
+ // For some special cases, you need to manually specify additional blank lines
+ const emptySpan = unref(getFormProps).emptySpan || 0;
+
+ if (isNumber(emptySpan)) {
+ return emptySpan;
+ }
+ if (isObject(emptySpan)) {
+ const { span = 0 } = emptySpan;
+ const screen = unref(screenRef) as string;
+
+ const screenSpan = (emptySpan as any)[screen.toLowerCase()];
+ return screenSpan || span || 0;
+ }
+ return 0;
+ });
+
+ watch(
+ [formSchemasRef, () => advanceState.isAdvanced, () => unref(realWidthRef)],
+ () => {
+ const { showAdvancedButton } = unref(getFormProps);
+ if (showAdvancedButton) {
+ updateAdvanced();
+ }
+ },
+ { immediate: true },
+ );
+
+ function getAdvanced(itemCol: Partial, itemColSum = 0, isLastAction = false) {
+ const width = unref(realWidthRef);
+
+ const mdWidth =
+ parseInt(itemCol.md as string) ||
+ parseInt(itemCol.xs as string) ||
+ parseInt(itemCol.sm as string) ||
+ (itemCol.span as number) ||
+ BASIC_COL_LEN;
+
+ const lgWidth = parseInt(itemCol.lg as string) || mdWidth;
+ const xlWidth = parseInt(itemCol.xl as string) || lgWidth;
+ const xxlWidth = parseInt(itemCol.xxl as string) || xlWidth;
+ if (width <= screenEnum.LG) {
+ itemColSum += mdWidth;
+ } else if (width < screenEnum.XL) {
+ itemColSum += lgWidth;
+ } else if (width < screenEnum.XXL) {
+ itemColSum += xlWidth;
+ } else {
+ itemColSum += xxlWidth;
+ }
+
+ if (isLastAction) {
+ advanceState.hideAdvanceBtn = false;
+ if (itemColSum <= BASIC_COL_LEN * 2) {
+ // When less than or equal to 2 lines, the collapse and expand buttons are not displayed
+ advanceState.hideAdvanceBtn = true;
+ advanceState.isAdvanced = true;
+ } else if (
+ itemColSum > BASIC_COL_LEN * 2 &&
+ itemColSum <= BASIC_COL_LEN * (unref(getFormProps).autoAdvancedLine || 3)
+ ) {
+ advanceState.hideAdvanceBtn = false;
+
+ // More than 3 lines collapsed by default
+ } else if (!advanceState.isLoad) {
+ advanceState.isLoad = true;
+ advanceState.isAdvanced = !advanceState.isAdvanced;
+ }
+ return { isAdvanced: advanceState.isAdvanced, itemColSum };
+ }
+ if (itemColSum > BASIC_COL_LEN * (unref(getFormProps).alwaysShowLines || 1)) {
+ return { isAdvanced: advanceState.isAdvanced, itemColSum };
+ } else {
+ // The first line is always displayed
+ return { isAdvanced: true, itemColSum };
+ }
+ }
+
+ function updateAdvanced() {
+ let itemColSum = 0;
+ let realItemColSum = 0;
+ const { baseColProps = {} } = unref(getFormProps);
+
+ for (const schema of unref(formSchemasRef)) {
+ const { vShow, colProps } = schema;
+ let isShow = true;
+
+ if (isBoolean(vShow)) {
+ isShow = vShow;
+ }
+
+ if (isFunction(vShow)) {
+ isShow = vShow({
+ schema,
+ formModel,
+ field: schema.field,
+ formInstance: instance,
+ values: {
+ ...unref(defaultFormValues),
+ ...formModel,
+ },
+ });
+ }
+
+ if (isShow && (colProps || baseColProps)) {
+ const { itemColSum: sum, isAdvanced } = getAdvanced(
+ { ...baseColProps, ...colProps },
+ itemColSum,
+ );
+
+ itemColSum = sum || 0;
+ if (isAdvanced) {
+ realItemColSum = itemColSum;
+ }
+
+ schema.isAdvanced = isAdvanced;
+ }
+ }
+
+ advanceState.actionSpan = (realItemColSum % BASIC_COL_LEN) + unref(getEmptySpan);
+
+ getAdvanced(unref(getFormProps).actionColOptions || { span: BASIC_COL_LEN }, itemColSum, true);
+
+ emit('advanced-change');
+ }
+
+ function handleToggleAdvanced() {
+ advanceState.isAdvanced = !advanceState.isAdvanced;
+ }
+
+ return { handleToggleAdvanced };
+};
diff --git a/src/components/core/schema-form/src/hooks/useForm.tsx b/src/components/core/schema-form/src/hooks/useForm.tsx
new file mode 100644
index 0000000..86d5f90
--- /dev/null
+++ b/src/components/core/schema-form/src/hooks/useForm.tsx
@@ -0,0 +1,64 @@
+import { nextTick, ref, unref, watch } from 'vue';
+import { isEmpty } from 'lodash-es';
+import SchemaForm from '../../index';
+import type { Ref, SetupContext } from 'vue';
+import type { SchemaFormInstance, SchemaFormProps } from '../schema-form';
+
+export function useForm(props?: Partial) {
+ const formRef = ref({} as SchemaFormInstance);
+
+ async function getFormInstance() {
+ await nextTick();
+ const form = unref(formRef);
+ if (isEmpty(form)) {
+ console.error('未获取表单实例!');
+ }
+ return form;
+ }
+ watch(
+ () => props,
+ async () => {
+ if (props) {
+ await nextTick();
+ const formInstance = await getFormInstance();
+ // console.log('form onMounted');
+ formInstance.setSchemaFormProps?.(props);
+ }
+ },
+ {
+ immediate: true,
+ deep: true,
+ flush: 'post',
+ },
+ );
+
+ const methods = new Proxy[>(formRef, {
+ get(target, key) {
+ if (Reflect.has(target, key)) {
+ return unref(target);
+ }
+ if (target.value && Reflect.has(target.value, key)) {
+ return Reflect.get(target.value, key);
+ }
+ return async (...rest) => {
+ const form = await getFormInstance();
+ return form?.[key]?.(...rest);
+ };
+ },
+ });
+
+ const SchemaFormRender = (
+ compProps: Partial],
+ { attrs, slots }: SetupContext,
+ ) => {
+ return (
+
+ );
+ };
+
+ return [SchemaFormRender, unref(methods)] as const;
+}
diff --git a/src/components/core/schema-form/src/hooks/useFormContext.ts b/src/components/core/schema-form/src/hooks/useFormContext.ts
new file mode 100644
index 0000000..0430377
--- /dev/null
+++ b/src/components/core/schema-form/src/hooks/useFormContext.ts
@@ -0,0 +1,12 @@
+import { provide, inject } from 'vue';
+import type { SchemaFormType } from './';
+
+const key = Symbol('schema-form');
+
+export async function createFormContext(instance: SchemaFormType) {
+ provide(key, instance);
+}
+
+export function useFormContext(formProps = {}) {
+ return inject(key, formProps) as SchemaFormType;
+}
diff --git a/src/components/core/schema-form/src/hooks/useFormEvents.ts b/src/components/core/schema-form/src/hooks/useFormEvents.ts
new file mode 100644
index 0000000..cb6bdb3
--- /dev/null
+++ b/src/components/core/schema-form/src/hooks/useFormEvents.ts
@@ -0,0 +1,285 @@
+import { unref, toRaw } from 'vue';
+import { cloneDeep, uniqBy } from 'lodash-es';
+import dayjs from 'dayjs';
+import { dateItemType, handleInputNumberValue } from '../helper';
+import type { FormSchema } from '../types/form';
+import type { NamePath } from 'ant-design-vue/lib/form/interface';
+import type { FormState, FormMethods } from './index';
+import type { SchemaFormEmitFn } from '../schema-form';
+import { isArray, isFunction, isObject, isString } from '@/utils/is';
+import { deepMerge } from '@/utils';
+
+type UseFormActionContext = FormState & {
+ emit: SchemaFormEmitFn;
+ handleFormValues: FormMethods['handleFormValues'];
+};
+
+export type FormEvents = ReturnType;
+
+export function useFormEvents(formActionContext: UseFormActionContext) {
+ const {
+ emit,
+ formPropsRef,
+ formSchemasRef,
+ formModel,
+ cacheFormModel,
+ getFormProps,
+ schemaFormRef,
+ defaultFormValues,
+ originComponentPropsFnMap,
+ handleFormValues,
+ } = formActionContext;
+
+ function getFieldsValue(): Recordable {
+ const formEl = unref(schemaFormRef);
+ if (!formEl) return {};
+ return handleFormValues(toRaw(unref(formModel)));
+ }
+
+ /**
+ * @description: Is it time
+ */
+ function itemIsDateType(key: string) {
+ return unref(formPropsRef).schemas?.some((item) => {
+ return item.field === key && isString(item.component)
+ ? dateItemType.includes(item.component)
+ : false;
+ });
+ }
+
+ /**
+ * @description: 设置表单字段值
+ */
+ async function setFieldsValue(values: Recordable): Promise {
+ const schemas = unref(formSchemasRef);
+ const fields = schemas.map((item) => item.field).filter(Boolean);
+
+ Object.assign(cacheFormModel, values);
+
+ const validKeys: string[] = [];
+ Object.keys(values).forEach((key) => {
+ const schema = schemas.find((item) => item.field === key);
+ let value = values[key];
+
+ const hasKey = Reflect.has(values, key);
+ if (isString(schema?.component)) {
+ value = handleInputNumberValue(schema?.component, value);
+ }
+ // 0| '' is allow
+ if (hasKey && fields.includes(key)) {
+ // time type
+ if (itemIsDateType(key)) {
+ if (Array.isArray(value)) {
+ const arr: any[] = [];
+ for (const ele of value) {
+ arr.push(ele ? dayjs(ele) : null);
+ }
+ formModel[key] = arr;
+ } else {
+ const { componentProps } = schema || {};
+ let _props = componentProps as any;
+ if (isFunction(componentProps)) {
+ _props = _props({ formPropsRef, formModel });
+ }
+ formModel[key] = value ? (_props?.valueFormat ? value : dayjs(value)) : null;
+ }
+ } else {
+ formModel[key] = value;
+ }
+ validKeys.push(key);
+ }
+ });
+ validateFields(validKeys);
+ }
+
+ async function resetSchema(data: Partial | Partial[]) {
+ let updateData: Partial[] = [];
+ if (isObject(data)) {
+ updateData.push(data as FormSchema);
+ }
+ if (isArray(data)) {
+ updateData = [...data];
+ }
+ // @ts-ignore
+ unref(formPropsRef).schemas = updateData as FormSchema[];
+ }
+
+ /**
+ * @description: 插入到指定 filed 后面,如果没传指定 field,则插入到最后,当 first = true 时插入到第一个位置
+ */
+ async function appendSchemaByField(schemaItem: FormSchema, prefixField?: string, first = false) {
+ const schemaList = cloneDeep(unref(formSchemasRef));
+
+ const index = schemaList.findIndex((schema) => schema.field === prefixField);
+
+ if (!prefixField || index === -1 || first) {
+ first ? schemaList.unshift(schemaItem) : schemaList.push(schemaItem);
+ formModel[schemaItem.field] = schemaItem.defaultValue;
+ formPropsRef.value.schemas = schemaList;
+ return;
+ }
+ if (index !== -1) {
+ schemaList.splice(index + 1, 0, schemaItem);
+ }
+ formModel[schemaItem.field] = schemaItem.defaultValue;
+ formPropsRef.value.schemas = schemaList;
+ }
+
+ /**
+ * @description: 根据 field 删除 Schema
+ */
+ function removeSchemaByFiled(fields: string | string[]) {
+ const schemaList = cloneDeep(unref(formSchemasRef));
+
+ if (!fields) {
+ return;
+ }
+
+ let fieldList: string[] = isString(fields) ? [fields] : fields;
+ if (isString(fields)) {
+ fieldList = [fields];
+ }
+ for (const field of fieldList) {
+ if (isString(field)) {
+ const index = schemaList.findIndex((schema) => schema.field === field);
+ if (index !== -1) {
+ Reflect.deleteProperty(formModel, field);
+ schemaList.splice(index, 1);
+ }
+ }
+ }
+ formPropsRef.value.schemas = schemaList;
+ }
+
+ /**
+ * @description: 根据 field 查找 Schema
+ */
+ function getSchemaByFiled(fields: string | string[]): FormSchema | undefined {
+ const schemaList = unref(formSchemasRef);
+ const fieldList = ([] as string[]).concat(fields);
+ return schemaList.find((schema) => fieldList.includes(schema.field));
+ }
+
+ /**
+ * @description 更新formItemSchema
+ */
+ const updateSchema = (data: Partial | Partial[]) => {
+ let updateData: Partial[] = [];
+ if (isObject(data)) {
+ updateData.push(data as FormSchema);
+ }
+ if (isArray(data)) {
+ updateData = [...data];
+ }
+
+ const hasField = updateData.every(
+ (item) => item.component === 'Divider' || (Reflect.has(item, 'field') && item.field),
+ );
+
+ if (!hasField) {
+ console.error(
+ 'All children of the form Schema array that need to be updated must contain the `field` field',
+ );
+ return;
+ }
+ const schemas: FormSchema[] = [];
+ updateData.forEach((item) => {
+ unref(formSchemasRef).forEach((val) => {
+ if (val.field === item.field) {
+ const newSchema = deepMerge(val, item);
+ if (originComponentPropsFnMap.has(val.field)) {
+ const originCompPropsFn = originComponentPropsFnMap.get(val.field)!;
+ const compProps = { ...newSchema.componentProps };
+ newSchema.componentProps = (opt) => {
+ const res = {
+ ...originCompPropsFn(opt),
+ ...compProps,
+ };
+ return res;
+ };
+ }
+ schemas.push(newSchema);
+ } else {
+ schemas.push(val);
+ }
+ });
+ });
+
+ unref(formPropsRef).schemas = uniqBy(schemas, 'field');
+ };
+
+ async function resetFields(): Promise {
+ const { resetFunc, submitOnReset } = unref(getFormProps);
+ resetFunc && isFunction(resetFunc) && (await resetFunc());
+
+ Object.keys(formModel).forEach((key) => {
+ formModel[key] = defaultFormValues[key];
+ });
+
+ emit('reset', formModel);
+ submitOnReset && handleSubmit();
+ setTimeout(clearValidate);
+ }
+
+ async function validateFields(nameList?: NamePath[] | undefined) {
+ return schemaFormRef.value?.validateFields(nameList);
+ }
+
+ async function validate(nameList?: NamePath[] | undefined) {
+ return await schemaFormRef.value?.validate(nameList)!;
+ }
+
+ async function clearValidate(name?: string | string[]) {
+ await schemaFormRef.value?.clearValidate(name);
+ }
+
+ async function scrollToField(name: NamePath, options?: ScrollOptions | undefined) {
+ await schemaFormRef.value?.scrollToField(name, options);
+ }
+
+ async function handleSubmit(e?: Event): Promise {
+ e && e.preventDefault();
+ const { submitFunc } = unref(getFormProps);
+ if (submitFunc && isFunction(submitFunc)) {
+ await submitFunc();
+ return;
+ }
+ const formEl = unref(schemaFormRef);
+ if (!formEl) return;
+ try {
+ const values = await validate();
+ const res = handleFormValues(values);
+ emit('submit', res);
+ } catch (error: any) {
+ return Promise.reject(error);
+ }
+ }
+
+ const handleEnterPress = (e: KeyboardEvent) => {
+ const { autoSubmitOnEnter } = unref(formPropsRef);
+ if (!autoSubmitOnEnter) return;
+ if (e.key === 'Enter' && e.target && e.target instanceof HTMLElement) {
+ const target: HTMLElement = e.target as HTMLElement;
+ if (target && target.tagName && target.tagName.toUpperCase() == 'INPUT') {
+ handleSubmit(e);
+ }
+ }
+ };
+
+ return {
+ submit: handleSubmit,
+ handleEnterPress,
+ clearValidate,
+ validate,
+ validateFields,
+ getFieldsValue,
+ updateSchema,
+ resetSchema,
+ getSchemaByFiled,
+ appendSchemaByField,
+ removeSchemaByFiled,
+ resetFields,
+ setFieldsValue,
+ scrollToField,
+ };
+}
diff --git a/src/components/core/schema-form/src/hooks/useFormMethods.ts b/src/components/core/schema-form/src/hooks/useFormMethods.ts
new file mode 100644
index 0000000..30ec642
--- /dev/null
+++ b/src/components/core/schema-form/src/hooks/useFormMethods.ts
@@ -0,0 +1,126 @@
+import { unref } from 'vue';
+import { set } from 'lodash-es';
+import type { FormState } from './useFormState';
+import type { SchemaFormProps } from '../schema-form';
+import { deepMerge } from '@/utils/';
+import { isFunction, isNullOrUnDef, isObject, isArray, isString } from '@/utils/is';
+import { dateUtil } from '@/utils/dateUtil';
+
+type UseFormMethodsContext = FormState;
+
+export type FormMethods = ReturnType;
+
+export const useFormMethods = (formMethodsContext: UseFormMethodsContext) => {
+ const {
+ compRefMap,
+ formModel,
+ formPropsRef,
+ cacheFormModel,
+ defaultFormValues,
+ schemaFormRef,
+ getFormProps,
+ } = formMethodsContext;
+
+ // 将所有的表单组件实例保存起来, 方便外面通过表单组件实例操作
+ const setItemRef = (field: string) => {
+ return (el) => {
+ if (el) {
+ compRefMap.set(field, el);
+ }
+ };
+ };
+
+ // 设置某个字段的值
+ const setFormModel = (key: Key, value: any) => {
+ formModel[key] = value;
+ cacheFormModel[key] = value;
+ const { validateTrigger } = unref(getFormProps);
+ if (!validateTrigger || validateTrigger === 'change') {
+ schemaFormRef.value?.validateFields([key]);
+ }
+ };
+
+ // 删除某个字段
+ const delFormModel = (key: Key) => {
+ return Reflect.deleteProperty(formModel, key);
+ };
+
+ const setSchemaFormProps = (formProps: Partial) => {
+ formPropsRef.value = deepMerge(unref(formPropsRef) || {}, formProps);
+ };
+
+ // Processing form values
+ function handleFormValues(values: Recordable) {
+ if (!isObject(values)) {
+ return {};
+ }
+ const res: Recordable = {};
+ for (const item of Object.entries(values)) {
+ let [, value] = item;
+ const [key] = item;
+ if (!key || (isArray(value) && value.length === 0) || isFunction(value)) {
+ continue;
+ }
+ const transformDateFunc = unref(getFormProps).transformDateFunc;
+ if (isObject(value)) {
+ value = transformDateFunc?.(value);
+ }
+
+ if (isArray(value) && value[0]?.format && value[1]?.format) {
+ value = value.map((item) => transformDateFunc?.(item));
+ }
+ // Remove spaces
+ if (isString(value)) {
+ value = value.trim();
+ }
+ set(res, key, value);
+ }
+ return handleRangeTimeValue(res);
+ }
+
+ /**
+ * @description: Processing time interval parameters
+ */
+ function handleRangeTimeValue(values: Recordable) {
+ const fieldMapToTime = unref(getFormProps).fieldMapToTime;
+
+ if (!fieldMapToTime || !Array.isArray(fieldMapToTime)) {
+ return values;
+ }
+
+ for (const [field, [startTimeKey, endTimeKey], format = 'YYYY-MM-DD'] of fieldMapToTime) {
+ if (!field || !startTimeKey || !endTimeKey || !values[field]) {
+ continue;
+ }
+
+ const [startTime, endTime]: string[] = values[field];
+
+ values[startTimeKey] = dateUtil(startTime).format(format);
+ values[endTimeKey] = dateUtil(endTime).format(format);
+ Reflect.deleteProperty(values, field);
+ }
+
+ return values;
+ }
+
+ // 初始化数据
+ const initFormValues = () => {
+ unref(formPropsRef).schemas?.forEach((item) => {
+ const { defaultValue } = item;
+ if (!isNullOrUnDef(defaultValue)) {
+ formModel[item.field] = defaultValue;
+ defaultFormValues[item.field] = defaultValue;
+ cacheFormModel[item.field] = defaultValue;
+ }
+ });
+ };
+
+ return {
+ setItemRef,
+ initFormValues,
+ setFormModel,
+ delFormModel,
+ setSchemaFormProps,
+ handleFormValues,
+ };
+};
diff --git a/src/components/core/schema-form/src/hooks/useFormState.ts b/src/components/core/schema-form/src/hooks/useFormState.ts
new file mode 100644
index 0000000..dead423
--- /dev/null
+++ b/src/components/core/schema-form/src/hooks/useFormState.ts
@@ -0,0 +1,86 @@
+import { computed, reactive, ref, unref, watchEffect } from 'vue';
+import { cloneDeep } from 'lodash-es';
+import type { SetupContext, DefineComponent } from 'vue';
+import type { AdvanceState } from '../types/hooks';
+import type { SchemaFormProps } from '../schema-form';
+import type { FormInstance } from 'ant-design-vue';
+import type { ComponentProps, RenderCallbackParams } from '../types';
+import { isFunction } from '@/utils/is';
+
+export type FormState = ReturnType;
+
+export type useFormStateParams = {
+ props: SchemaFormProps;
+ attrs: SetupContext['attrs'];
+};
+
+export const useFormState = ({ props, attrs }: useFormStateParams) => {
+ // TODO 将formSchema克隆一份,避免修改原有的formSchema
+ const formPropsRef = ref(cloneDeep(props));
+ /** 表单项数据 */
+ const formModel = reactive({ ...props.initialValues });
+ // 表单默认数据
+ const defaultFormValues = reactive({ ...props.initialValues });
+ // 表单实例
+ const schemaFormRef = ref();
+ // 缓存的表单值,用于恢复form-item v-if为true后的值
+ const cacheFormModel = { ...props.initialValues };
+ // 将所有的表单组件实例保存起来
+ const compRefMap = new Map>();
+ // 初始时的componentProps,用于updateSchema更新时不覆盖componentProps为函数时的值
+ const originComponentPropsFnMap = new Map<
+ string,
+ (opt: RenderCallbackParams) => ComponentProps
+ >();
+
+ const advanceState = reactive({
+ isAdvanced: true,
+ hideAdvanceBtn: false,
+ isLoad: false,
+ actionSpan: 6,
+ });
+
+ // 获取表单所有属性
+ const getFormProps = computed(() => {
+ return {
+ ...attrs,
+ ...formPropsRef.value,
+ } as SchemaFormProps;
+ });
+
+ // 获取栅栏Row配置
+ const getRowConfig = computed((): Recordable => {
+ const { baseRowStyle = {}, rowProps } = unref(getFormProps);
+ return {
+ style: baseRowStyle,
+ ...rowProps,
+ };
+ });
+
+ const getFormActionBindProps = computed(
+ (): Recordable => ({ ...getFormProps.value, ...advanceState }),
+ );
+
+ watchEffect(() => {
+ formPropsRef.value.schemas?.forEach((item) => {
+ if (!originComponentPropsFnMap.has(item.field) && isFunction(item.componentProps)) {
+ originComponentPropsFnMap.set(item.field, item.componentProps);
+ }
+ });
+ });
+
+ return {
+ formModel,
+ defaultFormValues,
+ schemaFormRef,
+ formPropsRef,
+ cacheFormModel,
+ compRefMap,
+ getFormProps,
+ advanceState,
+ getRowConfig,
+ getFormActionBindProps,
+ originComponentPropsFnMap,
+ formSchemasRef: computed(() => unref(formPropsRef).schemas || []),
+ };
+};
diff --git a/src/components/core/schema-form/src/hooks/useLabelWidth.ts b/src/components/core/schema-form/src/hooks/useLabelWidth.ts
new file mode 100644
index 0000000..1aa12da
--- /dev/null
+++ b/src/components/core/schema-form/src/hooks/useLabelWidth.ts
@@ -0,0 +1,39 @@
+import { computed, unref } from 'vue';
+import type { Ref } from 'vue';
+import type { FormSchema } from '../types/form';
+import type { SchemaFormProps } from '../schema-form';
+import { isNumber } from '@/utils/is';
+
+export function useItemLabelWidth(schemaRef: Ref, formPropsRef: Ref) {
+ return computed(() => {
+ const schemaItem = unref(schemaRef);
+ const { labelCol = {}, wrapperCol = {} } = schemaItem.formItemProps || {};
+ const { labelWidth, disabledLabelWidth } = schemaItem;
+
+ const {
+ labelWidth: globalLabelWidth,
+ labelCol: globalLabelCol,
+ wrapperCol: globWrapperCol,
+ } = unref(formPropsRef);
+
+ // 如果labelWidth是全局设置的,则会设置所有项
+ if ((!globalLabelWidth && !labelWidth && !globalLabelCol) || disabledLabelWidth) {
+ labelCol.style = {
+ textAlign: 'left',
+ };
+ return { labelCol, wrapperCol };
+ }
+ let width = labelWidth || globalLabelWidth;
+ const col = { ...globalLabelCol, ...labelCol };
+ const wrapCol = { ...globWrapperCol, ...wrapperCol };
+
+ if (width) {
+ width = isNumber(width) ? `${width}px` : width;
+ }
+
+ return {
+ labelCol: { style: { width }, ...col },
+ wrapperCol: { style: { width: `calc(100% - ${width})` }, ...wrapCol },
+ };
+ });
+}
diff --git a/src/components/core/schema-form/src/schema-form-item.ts b/src/components/core/schema-form/src/schema-form-item.ts
new file mode 100644
index 0000000..1de636b
--- /dev/null
+++ b/src/components/core/schema-form/src/schema-form-item.ts
@@ -0,0 +1,23 @@
+import type { TableActionType } from '@/components/core/dynamic-table';
+import type { FormSchema } from './types';
+
+export const schemaFormItemProps = {
+ formModel: {
+ type: Object as PropType>,
+ default: () => ({}),
+ },
+ schema: {
+ type: Object as PropType,
+ default: () => ({}),
+ },
+ // 动态表格实例
+ tableInstance: {
+ type: Object as PropType,
+ },
+ // 动态表格rowKey
+ tableRowKey: {
+ type: [String, Number] as PropType,
+ },
+};
+
+export type SchemaFormItemProps = typeof schemaFormItemProps;
diff --git a/src/components/core/schema-form/src/schema-form-item.vue b/src/components/core/schema-form/src/schema-form-item.vue
new file mode 100644
index 0000000..603d053
--- /dev/null
+++ b/src/components/core/schema-form/src/schema-form-item.vue
@@ -0,0 +1,420 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/core/schema-form/src/schema-form.ts b/src/components/core/schema-form/src/schema-form.ts
new file mode 100644
index 0000000..c032f2d
--- /dev/null
+++ b/src/components/core/schema-form/src/schema-form.ts
@@ -0,0 +1,125 @@
+import { formProps, type FormProps } from 'ant-design-vue/es/form';
+import type SchemaForm from './schema-form.vue';
+import type { ColEx } from './types/component';
+import type { ExtractPropTypes, ComponentInternalInstance, CSSProperties } from 'vue';
+import type { FieldMapToTime, FormSchema, RowProps } from './types/form';
+import type { ButtonProps } from '@/components/basic/button';
+import type { TableActionType } from '@/components/core/dynamic-table';
+import { isObject } from '@/utils/is';
+
+export const aFormPropKeys = Object.keys(formProps());
+
+export const schemaFormProps = {
+ ...formProps(),
+ layout: {
+ type: String as PropType,
+ default: 'horizontal',
+ },
+ /** 预置字段默认值 */
+ initialValues: {
+ type: Object as PropType,
+ default: () => ({}),
+ },
+ // 标签宽度 固定宽度
+ labelWidth: {
+ type: [Number, String] as PropType,
+ default: 0,
+ },
+ fieldMapToTime: {
+ type: Array as PropType,
+ default: () => [],
+ },
+ compact: { type: Boolean as PropType },
+ /** 表单配置规则 */
+ schemas: {
+ type: [Array] as PropType,
+ default: () => [],
+ },
+ mergeDynamicData: {
+ type: Object as PropType,
+ default: null,
+ },
+ baseRowStyle: {
+ type: Object as PropType,
+ },
+ baseColProps: {
+ type: Object as PropType>,
+ },
+ autoSetPlaceHolder: { type: Boolean as PropType, default: true },
+ /** 在INPUT组件上单击回车时,是否自动提交 */
+ autoSubmitOnEnter: { type: Boolean as PropType, default: false },
+ submitOnReset: { type: Boolean as PropType },
+ submitOnChange: { type: Boolean as PropType },
+ /** 禁用表单 */
+ disabled: { type: Boolean as PropType },
+ emptySpan: {
+ type: [Number, Object] as PropType,
+ default: 0,
+ },
+ /** 是否显示收起展开按钮 */
+ showAdvancedButton: { type: Boolean as PropType },
+ /** 转化时间 */
+ transformDateFunc: {
+ type: Function as PropType,
+ default: (date: any) => {
+ return date?.format?.('YYYY-MM-DD HH:mm:ss') ?? date;
+ },
+ },
+ rulesMessageJoinLabel: { type: Boolean as PropType, default: true },
+ /** 超过3行自动折叠 */
+ autoAdvancedLine: {
+ type: Number as PropType,
+ default: 3,
+ },
+ /** 不受折叠影响的行数 */
+ alwaysShowLines: {
+ type: Number as PropType,
+ default: 1,
+ },
+
+ /** 是否显示操作按钮 */
+ showActionButtonGroup: { type: Boolean as PropType, default: true },
+ /** 操作列Col配置 */
+ actionColOptions: Object as PropType>,
+ /** 显示重置按钮 */
+ showResetButton: { type: Boolean as PropType, default: true },
+ /** 是否聚焦第一个输入框,只在第一个表单项为input的时候作用 */
+ autoFocusFirstItem: { type: Boolean as PropType },
+ /** 重置按钮配置 */
+ resetButtonOptions: Object as PropType>,
+
+ /** 显示确认按钮 */
+ showSubmitButton: { type: Boolean as PropType, default: true },
+ /** 确认按钮配置 */
+ submitButtonOptions: Object as PropType>,
+
+ /** 自定义重置函数 */
+ resetFunc: Function as PropType<() => Promise>,
+ submitFunc: Function as PropType<() => Promise>,
+ /** 动态表格实例 */
+ tableInstance: {
+ type: Object as PropType,
+ },
+
+ rowProps: Object as PropType,
+};
+
+export const schemaFormEmits = {
+ register: (exposed: ComponentInternalInstance['exposed']) => isObject(exposed),
+ reset: (formModel: Recordable) => isObject(formModel),
+ submit: (formModel: Recordable) => isObject(formModel),
+ 'advanced-change': () => true,
+};
+
+export type SchemaFormEmits = typeof schemaFormEmits;
+
+export type SchemaFormEmitFn = EmitFn;
+
+export type SchemaFormProps = Partial<
+ ExtractPropTypes & {
+ schemas: FormSchema[];
+ }
+>;
+
+// @ts-ignore:next-line
+export type SchemaFormInstance = InstanceType;
diff --git a/src/components/core/schema-form/src/schema-form.vue b/src/components/core/schema-form/src/schema-form.vue
new file mode 100644
index 0000000..8b26c44
--- /dev/null
+++ b/src/components/core/schema-form/src/schema-form.vue
@@ -0,0 +1,106 @@
+
+
+
+
+
diff --git a/src/components/core/schema-form/src/types/component.ts b/src/components/core/schema-form/src/types/component.ts
new file mode 100644
index 0000000..71eaa05
--- /dev/null
+++ b/src/components/core/schema-form/src/types/component.ts
@@ -0,0 +1,149 @@
+import type { CSSProperties, WatchOptions } from 'vue';
+import type {
+ InputNumberProps,
+ InputProps,
+ SliderProps,
+ SelectProps,
+ CascaderProps,
+ SwitchProps,
+ RateProps,
+ DividerProps,
+ TimePickerProps,
+ TreeProps,
+ TreeSelectProps,
+ RadioGroupProps,
+ RadioProps,
+ UploadProps,
+ DatePickerProps,
+ CheckboxProps,
+} from 'ant-design-vue';
+import type { RenderCallbackParams } from './form';
+
+export type { ComponentMapType } from '../componentMap';
+
+type ColSpanType = number | string;
+
+/** 组件异步请求配置 */
+type RequestConfig =
+ | PromiseFn
+ | {
+ /** 指定监听的字段名, 当该字段值发生变化时会调用 callback */
+ watchFields: string[];
+ callback: PromiseFn;
+ options?: WatchOptions;
+ /** debounce 请求防抖 */
+ wait?: number;
+ };
+
+/** 组件属性 */
+export type ComponentProps = (
+ | InputProps
+ | InputNumberProps
+ | SelectProps
+ | CascaderProps
+ | SwitchProps
+ | RateProps
+ | DividerProps
+ | TimePickerProps
+ | TreeProps
+ | TreeSelectProps
+ | RadioGroupProps
+ | RadioProps
+ | UploadProps
+ | DatePickerProps
+ | CheckboxProps
+ | SliderProps
+) & {
+ /** 组件异步请求数据 */
+ request?: RequestConfig;
+ /** 组件异步请求数据结果 */
+ requestResult?: any;
+ style?: CSSProperties;
+ /** 手动指定v-model绑定的key */
+ vModelKey?: string;
+ [key: string]: any;
+};
+
+/** 所有组件属性集合 */
+export type AllComponentProps = UnionToIntersection;
+
+export interface ColEx {
+ style?: any;
+ /**
+ * raster number of cells to occupy, 0 corresponds to display: none
+ * @default none (0)
+ * @type ColSpanType
+ */
+ span?: ColSpanType;
+
+ /**
+ * raster order, used in flex layout mode
+ * @default 0
+ * @type ColSpanType
+ */
+ order?: ColSpanType;
+
+ /**
+ * the layout fill of flex
+ * @default none
+ * @type ColSpanType
+ */
+ flex?: ColSpanType;
+
+ /**
+ * the number of cells to offset Col from the left
+ * @default 0
+ * @type ColSpanType
+ */
+ offset?: ColSpanType;
+
+ /**
+ * the number of cells that raster is moved to the right
+ * @default 0
+ * @type ColSpanType
+ */
+ push?: ColSpanType;
+
+ /**
+ * the number of cells that raster is moved to the left
+ * @default 0
+ * @type ColSpanType
+ */
+ pull?: ColSpanType;
+
+ /**
+ * <576px and also default setting, could be a span value or an object containing above props
+ * @type { span: ColSpanType, offset: ColSpanType } | ColSpanType
+ */
+ xs?: { span: ColSpanType; offset: ColSpanType } | ColSpanType;
+
+ /**
+ * ≥576px, could be a span value or an object containing above props
+ * @type { span: ColSpanType, offset: ColSpanType } | ColSpanType
+ */
+ sm?: { span: ColSpanType; offset: ColSpanType } | ColSpanType;
+
+ /**
+ * ≥768px, could be a span value or an object containing above props
+ * @type { span: ColSpanType, offset: ColSpanType } | ColSpanType
+ */
+ md?: { span: ColSpanType; offset: ColSpanType } | ColSpanType;
+
+ /**
+ * ≥992px, could be a span value or an object containing above props
+ * @type { span: ColSpanType, offset: ColSpanType } | ColSpanType
+ */
+ lg?: { span: ColSpanType; offset: ColSpanType } | ColSpanType;
+
+ /**
+ * ≥1200px, could be a span value or an object containing above props
+ * @type { span: ColSpanType, offset: ColSpanType } | ColSpanType
+ */
+ xl?: { span: ColSpanType; offset: ColSpanType } | ColSpanType;
+
+ /**
+ * ≥1600px, could be a span value or an object containing above props
+ * @type { span: ColSpanType, offset: ColSpanType } | ColSpanType
+ */
+ xxl?: { span: ColSpanType; offset: ColSpanType } | ColSpanType;
+}
diff --git a/src/components/core/schema-form/src/types/form.ts b/src/components/core/schema-form/src/types/form.ts
new file mode 100644
index 0000000..05dd8d3
--- /dev/null
+++ b/src/components/core/schema-form/src/types/form.ts
@@ -0,0 +1,164 @@
+import type { RowProps } from 'ant-design-vue';
+import type { NamePath, RuleObject } from 'ant-design-vue/es/form/interface';
+import type { FormItemProps } from 'ant-design-vue/es/form/FormItem';
+import type { Component, VNode } from 'vue';
+import type { ButtonProps as AntdButtonProps } from '@/components/basic/button';
+import type { ColEx, ComponentMapType, ComponentProps } from './component';
+// import type { TableActionType } from '/@/components/Table/src/types/table'
+import type { SchemaFormInstance } from '../schema-form';
+import type { SchemaFormType } from '../hooks';
+import type { TableActionType } from '@/components/core/dynamic-table';
+
+export type { RowProps };
+
+export type FieldMapToTime = [string, [string, string], string?][];
+
+export type Rule = RuleObject & {
+ trigger?: 'blur' | 'change' | ['change', 'blur'];
+};
+
+/** 获取所有字段名 */
+export type GetFieldKeys = Exclude;
+
+export interface RenderCallbackParams {
+ schema: FormSchema;
+ formModel: T extends string ? Recordable : Record, any>;
+ field: T extends string ? string : GetFieldKeys;
+ values: any;
+ /** 动态表单实例 */
+ formInstance: SchemaFormType;
+ /** 动态表格实例 */
+ tableInstance?: TableActionType;
+ /** 动态表格rowKey */
+ tableRowKey?: Key;
+ /** 作用域插槽数据 */
+ slotData?: Recordable;
+}
+/** 自定义VNode渲染器 */
+export type CustomRenderFn = (
+ renderCallbackParams: RenderCallbackParams,
+) => VNode | VNode[] | string;
+
+export interface ButtonProps extends AntdButtonProps {
+ text?: string;
+}
+
+export interface FormActionType {
+ formModel?: Recordable;
+ submit: () => Promise;
+ setFieldsValue: (values: T) => Promise;
+ resetFields: () => Promise;
+ getFieldsValue: () => any;
+ clearValidate: (name?: string | string[]) => Promise;
+ updateSchema: (data: Partial | Partial[]) => Promise;
+ resetSchema: (data: Partial | Partial[]) => Promise;
+ setSchemaFormProps: (formProps: Partial) => Promise;
+ removeSchemaByFiled: (field: string | string[]) => Promise;
+ appendSchemaByField: (
+ schema: FormSchema,
+ prefixField: string | undefined,
+ first?: boolean | undefined,
+ ) => Promise;
+ validateFields: (nameList?: NamePath[]) => Promise;
+ validate: (nameList?: NamePath[]) => Promise;
+ scrollToField: (name: NamePath, options?: ScrollOptions) => Promise;
+}
+
+export type RegisterFn = (formInstance: SchemaFormInstance) => void;
+
+/** 表单项 */
+export interface FormSchema {
+ /** 字段名 */
+ field: T extends string ? string : GetFieldKeys;
+ // Event name triggered by internal value change, default change
+ changeEvent?: string;
+ // Variable name bound to v-model Default value
+ valueField?: string;
+ // Label name
+ label?: string;
+ // Auxiliary text
+ subLabel?: string;
+ // Help text on the right side of the text
+ helpMessage?:
+ | string
+ | string[]
+ | ((renderCallbackParams: RenderCallbackParams) => string | string[]);
+ // BaseHelp component props
+ helpComponentProps?: Partial;
+ // Label width, if it is passed, the labelCol and WrapperCol configured by itemProps will be invalid
+ labelWidth?: string | number;
+ // Disable the adjustment of labelWidth with global settings of formModel, and manually set labelCol and wrapperCol by yourself
+ disabledLabelWidth?: boolean;
+ /** 表单项对应的组件,eg: Input */
+ component?: ComponentMapType | CustomRenderFn | ((opt: RenderCallbackParams) => Component);
+ /** 表单组件属性 */
+ componentProps?:
+ | ComponentProps
+ | {
+ (opt: RenderCallbackParams): ComponentProps;
+ requestResult: ComponentProps['requestResult'];
+ };
+ /** 表单组件slots,例如 a-input 的 suffix slot 可以写成:{ suffix: () => VNode } */
+ componentSlots?:
+ | ((renderCallbackParams: RenderCallbackParams) => Recordable>)
+ | Recordable>
+ | ReturnType;
+ // Required
+ required?: boolean | ((renderCallbackParams: RenderCallbackParams) => boolean);
+
+ suffix?: string | number | ((values: RenderCallbackParams) => string | number);
+
+ // Validation rules
+ rules?: Rule[];
+ // Check whether the information is added to the label
+ rulesMessageJoinLabel?: boolean;
+ /** 组件加载状态 */
+ loading?: boolean;
+
+ // Reference formModelItem
+ formItemProps?: Partial;
+
+ // col configuration outside formModelItem
+ colProps?: Partial;
+
+ /** 搜索表单项排序 */
+ order?: number;
+ // 默认值
+ defaultValue?: any;
+ isAdvanced?: boolean;
+
+ // Matching details components
+ span?: number;
+ /** 作用同v-show */
+ vShow?: boolean | ((renderCallbackParams: RenderCallbackParams) => boolean);
+ /** 作用同v-if */
+ vIf?: boolean | ((renderCallbackParams: RenderCallbackParams) => boolean);
+
+ // 渲染col内容需要外层包装form-item
+ renderColContent?: CustomRenderFn;
+
+ // Custom slot, in from-item
+ slot?: string;
+
+ // 自定义槽,类似renderColContent
+ colSlot?: string;
+
+ dynamicDisabled?: boolean | ((renderCallbackParams: RenderCallbackParams) => boolean);
+
+ dynamicRules?: (renderCallbackParams: RenderCallbackParams) => Rule[];
+}
+export interface HelpComponentProps {
+ maxWidth: string;
+ // Whether to display the serial number
+ showIndex: boolean;
+ // Text list
+ text: any;
+ // colour
+ color: string;
+ // font size
+ fontSize: string;
+ icon: string;
+ absolute: boolean;
+ // Positioning
+ position: any;
+}
diff --git a/src/components/core/schema-form/src/types/hooks.ts b/src/components/core/schema-form/src/types/hooks.ts
new file mode 100644
index 0000000..0308e73
--- /dev/null
+++ b/src/components/core/schema-form/src/types/hooks.ts
@@ -0,0 +1,6 @@
+export interface AdvanceState {
+ isAdvanced: boolean;
+ hideAdvanceBtn: boolean;
+ isLoad: boolean;
+ actionSpan: number;
+}
diff --git a/src/components/core/schema-form/src/types/index.ts b/src/components/core/schema-form/src/types/index.ts
new file mode 100644
index 0000000..f3c2f44
--- /dev/null
+++ b/src/components/core/schema-form/src/types/index.ts
@@ -0,0 +1,3 @@
+export * from './form';
+export * from './component';
+export * from './hooks';
diff --git a/src/components/iframe-page/index.ts b/src/components/iframe-page/index.ts
new file mode 100644
index 0000000..dbce602
--- /dev/null
+++ b/src/components/iframe-page/index.ts
@@ -0,0 +1,4 @@
+import IFramePage from './index.vue';
+import type { DefineComponent } from 'vue';
+
+export default IFramePage as unknown as DefineComponent<{ src: string }>;
diff --git a/src/components/iframe-page/index.vue b/src/components/iframe-page/index.vue
new file mode 100644
index 0000000..71fb117
--- /dev/null
+++ b/src/components/iframe-page/index.vue
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/core/permission/index.ts b/src/core/permission/index.ts
new file mode 100644
index 0000000..659ae54
--- /dev/null
+++ b/src/core/permission/index.ts
@@ -0,0 +1,62 @@
+/**
+ * example
+ * path -> ./modules/user
+ * Button
+ * path -> ./modules/sys/user
+ * Button
+ */
+// import type { DataNode } from 'rc-tree-select/es/interface'
+
+import { permissions } from './modules/';
+import type { TreeSelectProps } from 'ant-design-vue';
+import type { App } from 'vue';
+import type { PermissionType } from './modules/types';
+import { useUserStore } from '@/store/modules/user';
+
+type DataNode = NonNullable[number];
+
+/**
+ * @description 将权限列表转成级联选择器要求的数据格式
+ */
+export const formarPermsToCascader = () => {
+ return Object.keys(permissions).reduce((prev, moduleKey) => {
+ const module = permissions[moduleKey];
+ Object.keys(module).forEach((key) => {
+ module[key].split(':').reduce((p, k, currentIndex, arr) => {
+ const value = arr.slice(0, currentIndex + 1).join(':');
+ const index = p.findIndex((item) => item?.value === value);
+ if (Number.isInteger(index) && index !== -1) {
+ return p[index].children;
+ } else {
+ const item: DataNode = {
+ // key: k,
+ title: k,
+ label: k,
+ value,
+ children: [],
+ };
+ p.push(item);
+ return item.children!;
+ }
+ }, prev);
+ });
+ return prev;
+ }, []);
+};
+
+/**
+ * 验证权限
+ * @param {PermissionType} perm 权限码
+ * @returns {boolean} true | false
+ */
+export const verifyAuth = (perm: PermissionType) => {
+ const permissionList = useUserStore().perms;
+
+ return permissionList.some((n) => n === perm);
+};
+
+export default {
+ install(app: App) {
+ app.config.globalProperties.$auth = verifyAuth;
+ },
+};
diff --git a/src/core/permission/modules/index.ts b/src/core/permission/modules/index.ts
new file mode 100644
index 0000000..f9ff541
--- /dev/null
+++ b/src/core/permission/modules/index.ts
@@ -0,0 +1,42 @@
+interface Permissions {
+ [key: string]: {
+ [key: string]: string;
+ };
+}
+
+const modulesPermissionFiles = import.meta.glob('./**/*.ts', { eager: true });
+/**
+ * 根据接口路径生成接口权限码, eg: sys/user/add => sys:user:add
+ * @param str 接口路径
+ * @returns {string}
+ */
+export const generatePermCode = (str: string) => str.replace(/\//g, ':');
+
+const filterDirs = ['/index.ts', './types.ts'];
+
+/**
+ * @description 权限列表
+ */
+export const permissions: Permissions = Object.keys(modulesPermissionFiles).reduce(
+ (modules, modulePath) => {
+ if (filterDirs.some((n) => modulePath.includes(n))) return modules;
+ // set './app.js' => 'app'
+ // set './sys/app.js' => 'sysApp'
+ const moduleName = modulePath
+ .replace(/^\.\/(.*)\.\w+$/, '$1')
+ .replace(/[-_/][a-z]/gi, (s) => s.substring(1).toUpperCase());
+ const value = modulesPermissionFiles[modulePath].default;
+
+ // pass sys/user/add => sys:user:add
+ const permissionModule = Object.keys(value).reduce((obj, key) => {
+ obj[key] = generatePermCode(value[key]);
+ return obj;
+ }, {});
+
+ modules[moduleName] = permissionModule;
+ // console.log('permissions modules', modules);
+ return modules;
+ },
+ {},
+);
+console.log('permissions', permissions);
diff --git a/src/core/permission/modules/netdisk/index.ts b/src/core/permission/modules/netdisk/index.ts
new file mode 100644
index 0000000..a2ddb4b
--- /dev/null
+++ b/src/core/permission/modules/netdisk/index.ts
@@ -0,0 +1,3 @@
+import type { NetdiskMangePerms } from './manage';
+
+export type NetdiskPermissionType = NetdiskMangePerms;
diff --git a/src/core/permission/modules/netdisk/manage.ts b/src/core/permission/modules/netdisk/manage.ts
new file mode 100644
index 0000000..9e31556
--- /dev/null
+++ b/src/core/permission/modules/netdisk/manage.ts
@@ -0,0 +1,19 @@
+export const netdiskMange = {
+ list: 'netdisk/manage/list',
+ mkdir: 'netdisk/manage/mkdir',
+ token: 'netdisk/manage/token',
+ rename: 'netdisk/manage/rename',
+ download: 'netdisk/manage/download',
+ delete: 'netdisk/manage/delete',
+ check: 'netdisk/manage/check',
+ info: 'netdisk/manage/info',
+ mark: 'netdisk/manage/mark',
+ cut: 'netdisk/manage/cut',
+ copy: 'netdisk/manage/copy',
+} as const;
+
+export const values = Object.values(netdiskMange);
+
+export type NetdiskMangePerms = typeof values[number];
+
+export default netdiskMange;
diff --git a/src/core/permission/modules/sys/dept.ts b/src/core/permission/modules/sys/dept.ts
new file mode 100644
index 0000000..984bf02
--- /dev/null
+++ b/src/core/permission/modules/sys/dept.ts
@@ -0,0 +1,18 @@
+export const sysDept = {
+ /** 获取部门列表 */
+ list: 'sys/dept/list',
+ /** 移动部门 */
+ move: 'sys/dept/move',
+ /** 更新部门 */
+ update: 'sys/dept/update',
+ delete: 'sys/dept/delete',
+ add: 'sys/dept/add',
+ info: 'sys/dept/info',
+ transfer: 'sys/dept/transfer',
+} as const;
+
+export const values = Object.values(sysDept);
+
+export type SysDeptPerms = typeof values[number];
+
+export default sysDept;
diff --git a/src/core/permission/modules/sys/index.ts b/src/core/permission/modules/sys/index.ts
new file mode 100644
index 0000000..0ac2fb3
--- /dev/null
+++ b/src/core/permission/modules/sys/index.ts
@@ -0,0 +1,20 @@
+import type { SysLogPerms } from './log';
+import type { SysDeptPerms } from './dept';
+import type { SysMenuPerms } from './menu';
+import type { SysOnlinePerms } from './online';
+import type { SysRolePerms } from './role';
+import type { SysTaskPerms } from './task';
+import type { SysUserPerms } from './user';
+import type { SysServePerms } from './serve';
+import type { SysParamConfigPerms } from './param-config';
+
+export type SysPermissionType =
+ | SysLogPerms
+ | SysDeptPerms
+ | SysMenuPerms
+ | SysOnlinePerms
+ | SysRolePerms
+ | SysTaskPerms
+ | SysServePerms
+ | SysUserPerms
+ | SysParamConfigPerms;
diff --git a/src/core/permission/modules/sys/log.ts b/src/core/permission/modules/sys/log.ts
new file mode 100644
index 0000000..28e3948
--- /dev/null
+++ b/src/core/permission/modules/sys/log.ts
@@ -0,0 +1,11 @@
+export const sysLog = {
+ req: 'sys/log/req/page',
+ login: 'sys/log/login/page',
+ task: 'sys/log/task/page',
+} as const;
+
+export const values = Object.values(sysLog);
+
+export type SysLogPerms = typeof values[number];
+
+export default sysLog;
diff --git a/src/core/permission/modules/sys/menu.ts b/src/core/permission/modules/sys/menu.ts
new file mode 100644
index 0000000..e22aec9
--- /dev/null
+++ b/src/core/permission/modules/sys/menu.ts
@@ -0,0 +1,13 @@
+export const sysMenu = {
+ list: 'sys/menu/list',
+ add: 'sys/menu/add',
+ update: 'sys/menu/update',
+ info: 'sys/menu/info',
+ delete: 'sys/menu/delete',
+} as const;
+
+export const deptValues = Object.values(sysMenu);
+
+export type SysMenuPerms = typeof deptValues[number];
+
+export default sysMenu;
diff --git a/src/core/permission/modules/sys/online.ts b/src/core/permission/modules/sys/online.ts
new file mode 100644
index 0000000..9f18a13
--- /dev/null
+++ b/src/core/permission/modules/sys/online.ts
@@ -0,0 +1,10 @@
+export const sysOnline = {
+ list: 'sys/online/list',
+ kick: 'sys/online/kick',
+} as const;
+
+export const values = Object.values(sysOnline);
+
+export type SysOnlinePerms = typeof values[number];
+
+export default sysOnline;
diff --git a/src/core/permission/modules/sys/param-config.ts b/src/core/permission/modules/sys/param-config.ts
new file mode 100644
index 0000000..e910a29
--- /dev/null
+++ b/src/core/permission/modules/sys/param-config.ts
@@ -0,0 +1,13 @@
+export const sysParamConfig = {
+ page: 'sys/param-config/page',
+ info: 'sys/param-config/info',
+ add: 'sys/param-config/add',
+ update: 'sys/param-config/update',
+ delete: 'sys/param-config/delete',
+} as const;
+
+export const values = Object.values(sysParamConfig);
+
+export type SysParamConfigPerms = typeof values[number];
+
+export default sysParamConfig;
diff --git a/src/core/permission/modules/sys/role.ts b/src/core/permission/modules/sys/role.ts
new file mode 100644
index 0000000..6efb837
--- /dev/null
+++ b/src/core/permission/modules/sys/role.ts
@@ -0,0 +1,14 @@
+export const sysRole = {
+ list: 'sys/role/list',
+ page: 'sys/role/page',
+ add: 'sys/role/add',
+ update: 'sys/role/update',
+ delete: 'sys/role/delete',
+ info: 'sys/role/info',
+} as const;
+
+export const values = Object.values(sysRole);
+
+export type SysRolePerms = typeof values[number];
+
+export default sysRole;
diff --git a/src/core/permission/modules/sys/serve.ts b/src/core/permission/modules/sys/serve.ts
new file mode 100644
index 0000000..8b2008a
--- /dev/null
+++ b/src/core/permission/modules/sys/serve.ts
@@ -0,0 +1,9 @@
+export const sysServe = {
+ stat: 'sys/serve/stat',
+} as const;
+
+export const values = Object.values(sysServe);
+
+export type SysServePerms = typeof values[number];
+
+export default sysServe;
diff --git a/src/core/permission/modules/sys/task.ts b/src/core/permission/modules/sys/task.ts
new file mode 100644
index 0000000..833f289
--- /dev/null
+++ b/src/core/permission/modules/sys/task.ts
@@ -0,0 +1,16 @@
+export const sysTask = {
+ page: 'sys/task/page',
+ add: 'sys/task/add',
+ update: 'sys/task/update',
+ delete: 'sys/task/delete',
+ once: 'sys/task/once',
+ start: 'sys/task/start',
+ stop: 'sys/task/stop',
+ info: 'sys/task/info',
+} as const;
+
+export const values = Object.values(sysTask);
+
+export type SysTaskPerms = typeof values[number];
+
+export default sysTask;
diff --git a/src/core/permission/modules/sys/user.ts b/src/core/permission/modules/sys/user.ts
new file mode 100644
index 0000000..8a01d05
--- /dev/null
+++ b/src/core/permission/modules/sys/user.ts
@@ -0,0 +1,14 @@
+export const sysUser = {
+ add: 'sys/user/add',
+ page: 'sys/user/page',
+ info: 'sys/user/info',
+ update: 'sys/user/update',
+ delete: 'sys/user/delete',
+ password: 'sys/user/password',
+} as const;
+
+export const values = Object.values(sysUser);
+
+export type SysUserPerms = typeof values[number];
+
+export default sysUser;
diff --git a/src/core/permission/modules/types.ts b/src/core/permission/modules/types.ts
new file mode 100644
index 0000000..ef56aa4
--- /dev/null
+++ b/src/core/permission/modules/types.ts
@@ -0,0 +1,4 @@
+import type { SysPermissionType } from './sys';
+import type { NetdiskPermissionType } from './netdisk';
+
+export type PermissionType = ReplaceAll;
diff --git a/src/core/permission/utils.ts b/src/core/permission/utils.ts
new file mode 100644
index 0000000..11bc354
--- /dev/null
+++ b/src/core/permission/utils.ts
@@ -0,0 +1,85 @@
+import type { TreeDataItem as ATreeDataItem } from 'ant-design-vue/es/tree/Tree';
+
+export interface TreeDataItem extends ATreeDataItem {
+ children: any;
+}
+
+/**
+ * 渲染部门至树形控件
+ * @param {Array} depts 所有部门
+ * @param {Number | null} parentId 父级部门ID
+ * @param {number[]|string[]} keyPath ID路径
+ */
+export const formatDept2Tree = (
+ depts: API.SysDeptListResult[],
+ parentId: number | null = null,
+ keyPath: (string | number)[] = [],
+): TreeDataItem[] => {
+ return depts
+ .filter((item) => item.parentId === parentId)
+ .map((item) => {
+ const _keyPath = keyPath.concat(parentId || []);
+ const arr = formatDept2Tree(depts, item.id, _keyPath);
+ return Object.assign(item, {
+ keyPath: _keyPath,
+ title: item.name,
+ key: item.id,
+ value: item.id,
+ formData: item,
+ children: arr.length ? arr : null,
+ });
+ });
+};
+
+/**
+ * 渲染菜单至树形控件
+ * @param {Array} menus 所有菜单
+ * @param {Number | null} parentId 父级菜单ID
+ * @param {number[]|string[]} keyPath ID路径
+ */
+export const formatMenu2Tree = (
+ menus: API.MenuListResult,
+ parentId: number | null = null,
+ keyPath: (string | number)[] = [],
+): TreeDataItem[] => {
+ return menus
+ .filter((item) => item.parentId === parentId)
+ .map((item) => {
+ const _keyPath = keyPath.concat(parentId || []);
+ const arr = formatMenu2Tree(menus, item.id, _keyPath);
+ return Object.assign(item, {
+ keyPath: _keyPath,
+ title: item.name,
+ key: item.id,
+ value: item.id,
+ formData: item,
+ children: arr.length ? arr : null,
+ });
+ });
+};
+
+/**
+ * 在树中根据ID找child
+ * @param {string|number} id
+ * @param {any[]} treeData 树形数据
+ * @param {string} keyName 指定ID的属性名,默认是id
+ * @param {string} children 指定children的属性名,默认是children
+ */
+export const findChildById = (
+ id,
+ treeData: T[] = [],
+ keyName = 'id',
+ children = 'children',
+) => {
+ return treeData.reduce((prev, curr) => {
+ if (curr[keyName] === id) {
+ return curr;
+ }
+ if (prev) {
+ return prev;
+ }
+ if (curr[children]?.length) {
+ return findChildById(id, curr[children], keyName, children);
+ }
+ }, undefined);
+};
diff --git a/src/core/socket/event-type.ts b/src/core/socket/event-type.ts
new file mode 100644
index 0000000..11a7ad3
--- /dev/null
+++ b/src/core/socket/event-type.ts
@@ -0,0 +1,9 @@
+/**
+ * Socket事件名定义
+ */
+
+/** 强制踢下线 */
+export const EVENT_KICK = 'kick';
+
+/** 当前用户的角色权限或所拥有的菜单信息被更新时 重新获取最新的权限菜单 */
+export const EVENT_UPDATE_MENU = 'update_menu';
diff --git a/src/core/socket/socket-io.ts b/src/core/socket/socket-io.ts
new file mode 100644
index 0000000..4a33ad7
--- /dev/null
+++ b/src/core/socket/socket-io.ts
@@ -0,0 +1,264 @@
+import { isEmpty, isFunction } from 'lodash-es';
+import IO, { type Socket } from 'socket.io-client';
+import { useUserStore } from '@/store/modules/user';
+import { useWsStore } from '@/store/modules/ws';
+
+/**
+ * Socket连接状态
+ */
+export enum SocketStatus {
+ // 连接中
+ CONNECTING = 'CONNECTING',
+ // 已连接
+ CONNECTED = 'CONNECTED',
+ // 已关闭
+ CLOSE = 'CLOSE',
+}
+
+export type SocketStatusType = keyof typeof SocketStatus;
+
+export type SocketIOWrapperType = InstanceType;
+
+export class SocketIOWrapper {
+ /**
+ * socket.io-client reserved event keywords
+ * @type {string[]}
+ */
+ static staticEvents = [
+ // socket instance listen
+ 'connect',
+ 'connect_error',
+ 'disconnect',
+ 'disconnecting',
+ 'newListener',
+ 'removeListener',
+ // Manager listen
+ 'error',
+ 'reconnect',
+ 'reconnect_attempt',
+ 'reconnect_error',
+ 'reconnect_failed',
+ 'ping',
+ 'pong',
+ ] as const;
+ socketInstance: Socket | null;
+ emitQueue: any[];
+ closeByServer: boolean;
+ waiting: boolean;
+ flushing: boolean;
+ handleIndex: number;
+ runningQueue: any[];
+ wsStore = useWsStore();
+
+ constructor() {
+ // socket io client instance
+ this.socketInstance = null;
+ // emit cache queue
+ this.emitQueue = [];
+ // flush will using
+ this.runningQueue = [];
+ this.handleIndex = 0;
+ this.flushing = false;
+ this.waiting = false;
+ // is server disconnect
+ this.closeByServer = false;
+ // init
+ this._init();
+ }
+
+ /**
+ * 获取当前连接的clientid
+ */
+ getClientId() {
+ if (this.socketInstance) {
+ return this.socketInstance.id;
+ }
+ return undefined;
+ }
+
+ /**
+ * 获取真实的Socket连接状态
+ */
+ isConnected() {
+ return this.socketInstance?.connected;
+ }
+
+ /**
+ * 主动关闭连接
+ */
+ close() {
+ if (this.socketInstance) {
+ this.socketInstance.close();
+ }
+ this.socketInstance = null;
+ }
+
+ /**
+ * SocketIO 初始化
+ */
+ _init() {
+ if (this.socketInstance && this.socketInstance.connected) {
+ throw new Error('socket is connecting');
+ }
+ // auth token
+ const token = useUserStore().token;
+ console.log('token', token);
+ if (isEmpty(token)) {
+ // 未登录状态则直接关闭连接
+ this.close();
+ return;
+ }
+ this.changeStatus(SocketStatus.CONNECTING);
+
+ // 初始化SocketIO实例
+ this.socketInstance = IO(import.meta.env.VITE_BASE_SOCKET_NSP, {
+ path: import.meta.env.VITE_BASE_SOCKET_PATH,
+ transports: ['websocket'],
+ query: { token },
+ });
+ // register default event
+ this.socketInstance.on(SocketIOWrapper.staticEvents[0], this.handleConnectEvent.bind(this));
+ this.socketInstance.on(SocketIOWrapper.staticEvents[1], this.handleErrorEvent.bind(this));
+ this.socketInstance.on(SocketIOWrapper.staticEvents[2], this.handleDisconnectEvent.bind(this));
+ // reconnecting
+ this.socketInstance.io.on(
+ SocketIOWrapper.staticEvents[8],
+ this.handleReconnectAttemptEvent.bind(this),
+ );
+ }
+
+ /**
+ * on custom event
+ */
+ subscribe(eventName, fn) {
+ if (isEmpty(eventName) || !isFunction(fn)) {
+ throw new TypeError('param must correct type');
+ }
+ // register
+ this.socketInstance?.on(eventName, fn);
+ }
+
+ /**
+ * off custom event
+ */
+ unsubscribe(eventName, fn) {
+ if (isEmpty(eventName)) {
+ throw new TypeError('param must correct type');
+ }
+ if (SocketIOWrapper.staticEvents.includes(eventName) && !isFunction(fn)) {
+ throw new Error('default event remove must has second param');
+ }
+ this.socketInstance?.off(eventName, fn);
+ }
+
+ /**
+ * 派发事件通知Socket状态
+ */
+ changeStatus(status) {
+ this.wsStore.setStatus(status);
+ }
+
+ /**
+ * 默认事件处理
+ */
+ handleConnectEvent() {
+ this.changeStatus(SocketStatus.CONNECTED);
+ // flush queue
+ if (this.emitQueue.length > 0) {
+ // copy
+ const queue = this.emitQueue.slice();
+ // clean
+ this.emitQueue = [];
+ for (let i = 0; i < queue.length; i++) {
+ this.queueEmit(queue[i]);
+ }
+ }
+ }
+
+ /**
+ * 默认事件处理
+ */
+ handleReconnectAttemptEvent() {
+ this.changeStatus(SocketStatus.CONNECTING);
+ }
+
+ /**
+ * 默认事件处理
+ */
+ handleDisconnectEvent(reason) {
+ if (reason === 'io server disconnect') {
+ this.closeByServer = true;
+ this.changeStatus(SocketStatus.CLOSE);
+ }
+ }
+
+ /**
+ * 默认事件处理
+ */
+ handleErrorEvent() {
+ if (this.closeByServer) {
+ this.changeStatus(SocketStatus.CLOSE);
+ }
+ }
+
+ /**
+ * client emit
+ * The following events are reserved and should not be used as event names by your application:
+ * connect、connect_error、connect_timeout、error、disconnect、
+ * disconnecting、newListener、reconnect_attempt、reconnecting、reconnect_error、
+ * reconnect_failed、removeListener、ping、pong
+ */
+ emit(eventName, data) {
+ // 检查event名称
+ if (isEmpty(eventName) || SocketIOWrapper.staticEvents.includes(eventName)) {
+ throw new TypeError('event is not allow emit');
+ }
+ if (!this.isConnected()) {
+ // 未连接状态,则缓存,在重新连接时则会执行该队列
+ this.emitQueue.push({ eventName, data });
+ } else {
+ // 连接成功状态
+ this.socketInstance?.emit(eventName, data);
+ }
+ }
+
+ /**
+ * 重置队列标志状态
+ */
+ resetState() {
+ this.handleIndex = 0;
+ this.runningQueue = [];
+ this.waiting = this.flushing = false;
+ }
+
+ queueEmit(item) {
+ if (!this.flushing) {
+ this.runningQueue.push(item);
+ } else {
+ // if flushing
+ let i = this.runningQueue.length - 1;
+ while (i > this.handleIndex) {
+ i--;
+ }
+ this.runningQueue.splice(i + 1, 0, item);
+ }
+ // queue the flush
+ if (!this.waiting) {
+ this.waiting = true;
+ setTimeout(this.flushQueue.bind(this), 0);
+ }
+ }
+
+ flushQueue() {
+ this.flushing = true;
+ let item;
+ // emit
+ for (this.handleIndex = 0; this.handleIndex < this.runningQueue.length; this.handleIndex++) {
+ item = this.runningQueue[this.handleIndex];
+ // re emit
+ this.emit(item.eventName, item.data);
+ }
+
+ this.resetState();
+ }
+}
diff --git a/src/core/socket/useSocket.ts b/src/core/socket/useSocket.ts
new file mode 100644
index 0000000..2e915cf
--- /dev/null
+++ b/src/core/socket/useSocket.ts
@@ -0,0 +1,31 @@
+import { onMounted, onBeforeUnmount, watch } from 'vue';
+import { useWsStore } from '@/store/modules/ws';
+
+export const useSocket = (socketHooks = {}) => {
+ const socketClient = useWsStore().client;
+
+ // cache wrapper func
+ const socketMap = new Map();
+
+ const registerSocketEvent = () => {
+ Object.keys(socketHooks).forEach((e) => {
+ if (socketClient) {
+ // bind this
+ const wrapFunc = socketHooks[e];
+ socketMap.set(e, wrapFunc);
+ socketClient.subscribe(e, wrapFunc);
+ }
+ });
+ };
+ const unregisterSocketEvent = () => {
+ Object.keys(socketHooks).forEach((e) => {
+ // 增加判断避免被移除掉所有事件
+ if (socketClient && socketMap.has(e)) {
+ socketClient.unsubscribe(e, socketMap.get(e));
+ }
+ });
+ };
+ watch(() => socketClient, registerSocketEvent);
+ onMounted(registerSocketEvent);
+ onBeforeUnmount(unregisterSocketEvent);
+};
diff --git a/src/directives/permission.ts b/src/directives/permission.ts
new file mode 100644
index 0000000..a2c0835
--- /dev/null
+++ b/src/directives/permission.ts
@@ -0,0 +1,24 @@
+import type { ObjectDirective } from 'vue';
+import { hasPermission } from '@/utils/permission/hasPermission';
+
+export const permission: ObjectDirective = {
+ mounted(el: HTMLButtonElement, binding) {
+ if (binding.value == undefined) return;
+
+ const { action, effect } = binding.value;
+ // 如果action不传,则认为不需要授权认证
+ if (action == undefined) {
+ return;
+ }
+ // console.log(vnode.ref.i.ctx.hasPermission(action), '虚拟')
+ if (!hasPermission(action)) {
+ if (effect == 'disabled') {
+ el.disabled = true;
+ el.setAttribute('title', '没有权限');
+ } else {
+ el.remove();
+ }
+ console.log(action, effect);
+ }
+ },
+};
diff --git a/src/enums/biz/base.ts b/src/enums/biz/base.ts
new file mode 100644
index 0000000..2dd4944
--- /dev/null
+++ b/src/enums/biz/base.ts
@@ -0,0 +1,88 @@
+export enum DictClassifyEnum {
+ SYSTEM = '10',
+ BUSINESS = '20',
+}
+
+export enum LogTypeEnum {
+ OPT = 'OPT',
+ EX = 'EX',
+}
+
+export enum DataTypeEnum {
+ SYSTEM = '10',
+ BUSINESS = '20',
+}
+
+export enum OrgTypeEnum {
+ COMPANY = '10',
+ DEPT = '20',
+}
+
+// 角色类别
+export enum RoleCategoryEnum {
+ FUNCTION = '10',
+ DESKTOP = '20',
+ DATA_SCOPE = '30',
+}
+
+// 绑定范围类型
+export enum ScopeTypeEnum {
+ EMPLOYEE = '1',
+ ORG = '2',
+}
+
+export const categoryMap = new Map();
+categoryMap.set(RoleCategoryEnum.FUNCTION, 'success');
+categoryMap.set(RoleCategoryEnum.DATA_SCOPE, 'error');
+categoryMap.set(RoleCategoryEnum.DESKTOP, 'processing');
+
+// 项目类型
+export enum ProjectTypeEnum {
+ CLOUD = 'CLOUD',
+ BOOT = 'BOOT',
+}
+
+export enum InterfaceExecModeEnum {
+ IMPL_CLASS = '01',
+ SCRIPT = '02',
+}
+
+export enum MsgTemplateTypeEnum {
+ SMS = '01',
+ EMAIL = '02',
+ NOTICE = '03',
+}
+
+//[01-待办 02-预警 03-提醒]
+export enum NoticeRemindModeEnum {
+ TO_DO = '01',
+ EARLY_WARNING = '02',
+ NOTICE = '03',
+}
+
+//发送渠道
+export enum SourceTypeEnum {
+ // 应用
+ APP = 'APP',
+ // 服务
+ SERVICE = 'SERVICE',
+}
+
+// 执行日志状态 [01-初始化 02-成功 03-失败]
+export enum MsgInterfaceLoggingStatusEnum {
+ INIT = '01',
+ SUCCESS = '02',
+ FAIL = '03',
+}
+
+//执行状态
+export enum TaskStatusEnum {
+ //草稿
+ DRAFT = 'DRAFT',
+ //等待执行
+ WAITING = 'WAITING',
+ //执行成功
+ SUCCESS = 'SUCCESS',
+ //执行失败
+ FAIL = 'FAIL',
+}
diff --git a/src/enums/biz/tenant.ts b/src/enums/biz/tenant.ts
new file mode 100644
index 0000000..a474d33
--- /dev/null
+++ b/src/enums/biz/tenant.ts
@@ -0,0 +1,152 @@
+export enum TenantStatusEnum {
+ NORMAL = '05',
+ WAIT_INIT_SCHEMA = '10',
+ WAIT_INIT_DATASOURCE = '15',
+ WITHDRAW = '20',
+ WAITING = '25',
+ REFUSE = '30',
+ AGREED = '35',
+}
+
+export enum TenantTypeEnum {
+ CREATE = 'CREATE',
+ REGISTER = 'REGISTER',
+}
+
+export enum TenantConnectTypeEnum {
+ SYSTEM = 'SYSTEM',
+ CUSTOM = 'CUSTOM',
+}
+
+export enum MultiTenantTypeEnum {
+ NONE = 'NONE',
+ COLUMN = 'COLUMN',
+ SCHEMA = 'SCHEMA',
+ DATASOURCE = 'DATASOURCE',
+ DATASOURCE_COLUMN = 'DATASOURCE_COLUMN',
+}
+
+// 20-菜单 30-视图 40-功能 50-字段 60-数据
+export enum ResourceTypeEnum {
+ MENU = '20',
+ VIEW = '30',
+ FUNCTION = '40',
+ FIELD = '50',
+ DATA = '60',
+}
+
+// 01-内部组件 02-内链 03-外链
+export enum ResourceOpenWithEnum {
+ INNER_COMPONENT = '01',
+ INNER_CHAIN = '02',
+ OUTER_CHAIN = '03',
+}
+
+// 10-应用授权 20-应用续期 30-取消授权
+export enum ApplicationGrantTypeEnum {
+ GRANT = '10',
+ RENEWAL = '20',
+ CANCEL = '30',
+}
+
+/**
+ * 路由名称
+ * 【运营平台】-【应用管理】-【资源维护】 中的“名称” 字段保持一致
+ *
+ * 注意:【运营平台】-【应用管理】-【资源维护】中配置的资源名称,在某个应用下需要全局唯一!
+ */
+export enum RouteEnum {
+ DICT_ITEM = '字典项维护',
+ APPLICATION_RESOURCE = '应用资源维护',
+ APPLICATION_GRANT_MANAGE = '应用资源授权',
+ APPLICATION_GRANT = '应用授权',
+
+ BASIC_DICT_ITEM = '个性字典项',
+ BASIC_MSG_ADD = '发布消息',
+ BASIC_MY_MSG = '我的消息',
+ BASIC_MY_MSG_VIEW = '查看我的消息',
+ BASIC_MSG = '消息管理',
+ BASIC_MSG_PROPERTY = '接口设置',
+ BASIC_MSG_INTERFACE_LOGGING = '日志执行记录',
+ TENANT_VIEW = '查看企业信息',
+ CODE_GENERATOR_EDIT = '修改代码配置',
+}
+
+//0-过期 1-有效
+export enum ExpireStateEnum {
+ EFFECTIVE = '1',
+ EXPIRED = '0',
+}
+
+// 登录状态
+export enum LoginStatusEnum {
+ SUCCESS = '01',
+ CAPTCHA_ERROR = '02',
+ PASSWORD_ERROR = '03',
+ USER_ERROR = '04',
+}
+
+// 数据范围
+export enum DataScopeEnum {
+ ALL = '01',
+ SELF_COMPANY_CHILDREN = '02',
+ SELF_COMPANY = '03',
+ SELF_DEPT_CHILDREN = '04',
+ SELF_DEPT = '05',
+ SELF = '06',
+ CUSTOM = '07',
+}
+
+// 代码生成方式
+export enum GenTypeEnum {
+ GEN = 'GEN',
+ ZIP = 'ZIP',
+}
+
+// 弹窗方式
+export enum PopupTypeEnum {
+ MODAL = 'MODAL',
+ DRAWER = 'DRAWER',
+}
+
+// 父类实体类型
+export enum EntitySuperClassEnum {
+ SUPER_ENTITY = 'SUPER_ENTITY',
+ ENTITY = 'ENTITY',
+ TREE_ENTITY = 'TREE_ENTITY',
+ NONE = 'NONE',
+}
+
+// "SQL 比较条件常量定义类"
+export enum SqlConditionEnum {
+ EQUAL = 'EQUAL',
+ NOT_EQUAL = 'NOT_EQUAL',
+ LIKE = 'LIKE',
+ ORACLE_LIKE = 'ORACLE_LIKE',
+ LIKE_LEFT = 'LIKE_LEFT',
+ LIKE_RIGHT = 'LIKE_RIGHT',
+}
+
+// 父类
+export enum SuperClassEnum {
+ SUPER_CLASS = 'SUPER_CLASS',
+ SUPER_POI_CLASS = 'SUPER_POI_CLASS',
+ SUPER_CACHE_CLASS = 'SUPER_CACHE_CLASS',
+ SUPER_SIMPLE_CLASS = 'SUPER_SIMPLE_CLASS',
+ SUPER_READ_CLASS = 'SUPER_READ_CLASS',
+ NONE_CS = 'NONE_CS',
+ NONE = 'NONE',
+}
+
+// 模板类型
+export enum TplEnum {
+ SIMPLE = 'SIMPLE',
+ TREE = 'TREE',
+ MAIN_SUB = 'MAIN_SUB',
+}
+
+//代码模板
+export enum TemplateEnum {
+ BACKEND = 'BACKEND',
+ WEB_PLUS = 'WEB_PLUS',
+}
diff --git a/src/enums/breakpointEnum.ts b/src/enums/breakpointEnum.ts
new file mode 100644
index 0000000..93acc1a
--- /dev/null
+++ b/src/enums/breakpointEnum.ts
@@ -0,0 +1,28 @@
+export enum sizeEnum {
+ XS = 'XS',
+ SM = 'SM',
+ MD = 'MD',
+ LG = 'LG',
+ XL = 'XL',
+ XXL = 'XXL',
+}
+
+export enum screenEnum {
+ XS = 480,
+ SM = 576,
+ MD = 768,
+ LG = 992,
+ XL = 1200,
+ XXL = 1600,
+}
+
+const screenMap = new Map();
+
+screenMap.set(sizeEnum.XS, screenEnum.XS);
+screenMap.set(sizeEnum.SM, screenEnum.SM);
+screenMap.set(sizeEnum.MD, screenEnum.MD);
+screenMap.set(sizeEnum.LG, screenEnum.LG);
+screenMap.set(sizeEnum.XL, screenEnum.XL);
+screenMap.set(sizeEnum.XXL, screenEnum.XXL);
+
+export { screenMap };
diff --git a/src/enums/cacheEnum.ts b/src/enums/cacheEnum.ts
new file mode 100644
index 0000000..bfce2a5
--- /dev/null
+++ b/src/enums/cacheEnum.ts
@@ -0,0 +1,18 @@
+/** 用户token */
+export const ACCESS_TOKEN_KEY = 'ACCESS_TOKEN';
+
+/** 国际化 */
+export const LOCALE_KEY = 'LOCALE__';
+
+/** 主题色 */
+export const THEME_KEY = 'THEME__';
+
+/** 用户信息 */
+export const USER_INFO_KEY = 'USER__INFO__';
+
+// role info key
+export const ROLES_KEY = 'ROLES__KEY__';
+/** 是否锁屏 */
+export const IS_LOCKSCREEN = 'IS_LOCKSCREEN';
+/** 标签页 */
+export const TABS_ROUTES = 'TABS_ROUTES';
diff --git a/src/enums/commonEnum.ts b/src/enums/commonEnum.ts
new file mode 100644
index 0000000..980026e
--- /dev/null
+++ b/src/enums/commonEnum.ts
@@ -0,0 +1,155 @@
+/**
+ * 后端服务请求 前缀
+ */
+export enum ServicePrefixEnum {
+ // 系统服务
+ TENANT = '/system',
+ // 文件服务
+ FILE = '/base',
+ // 消息服务
+ MSG = '/base',
+ // 网关
+ GATEWAY = '/gateway',
+ // 认证服务
+ OAUTH = '/admin-api',
+ // 基础服务
+ BASE = '/base',
+ // 系统服务
+ SYSTEM = '/system',
+ // 代码生成器服务
+ GENERATOR = '/generator',
+ // 工作流
+ ACTIVITI = '/activiti',
+}
+
+/**
+ * 操作列 类型
+ */
+export enum ActionEnum {
+ // 新增
+ ADD = 'add',
+ // 编辑
+ EDIT = 'edit',
+ // 复制
+ COPY = 'copy',
+ // 删除
+ DELETE = 'delete',
+ // 详情
+ VIEW = 'view',
+}
+
+export const VALIDATE_API = {
+ [ActionEnum.ADD]: 'Save',
+ [ActionEnum.EDIT]: 'Update',
+ [ActionEnum.COPY]: 'Save',
+};
+
+/**
+ * 文件的业务 类型
+ */
+export enum FileBizTypeEnum {
+ // 默认库 租户logo
+ DEF_TENANT_LOGO = 'DEF__TENANT__LOGO',
+ // 默认库 应用logo
+ DEF_APPLICATION_LOGO = 'DEF__APPLICATION__LOGO',
+ // 基础库 用户头像
+ BASE_USER_AVATAR = 'DEF__USER__AVATAR',
+ // 基础库 文件中心
+ BASE_FILE = 'BASE__FILE',
+ // 扩展库 消息内容附件
+ EXTEND_MSG_CONTENT = 'EXTEND__MSG__CONTENT',
+}
+
+/**
+ * 文件的 桶 (需要提前跟后端约定,并让后端配置到OSS中)
+ */
+export enum FileBucketEnum {
+ // 需要自行在华为云或minio等第三方对象存储提前创建 公开读写的桶
+ public = 'tt-public',
+}
+
+export enum EnumEnum {
+ // msg
+ TaskStatus = 'TaskStatus',
+ SendStatus = 'SendStatus',
+ SourceType = 'SourceType',
+ ProviderType = 'ProviderType',
+ MsgBizType = 'MsgBizType',
+ MsgType = 'MsgType',
+ // file
+ FileType = 'FileType',
+ FileStorageType = 'FileStorageType',
+ // tenant
+ TenantConnectTypeEnum = 'TenantConnectTypeEnum',
+ // authority
+ ApplicationAppTypeEnum = 'ApplicationAppTypeEnum',
+ TenantStatusEnum = 'TenantStatusEnum',
+ TenantTypeEnum = 'TenantTypeEnum',
+ Sex = 'Sex',
+ AuthorizeType = 'AuthorizeType',
+ LogType = 'LogType',
+ LoginStatusEnum = 'LoginStatusEnum',
+ DataScopeType = 'DataScopeType',
+ HttpMethod = 'HttpMethod',
+
+ DateType = 'DateType',
+ PopupTypeEnum = 'PopupTypeEnum',
+ TplEnum = 'TplEnum',
+ EntitySuperClassEnum = 'EntitySuperClassEnum',
+ GenTypeEnum = 'GenTypeEnum',
+ SqlConditionEnum = 'SqlConditionEnum',
+ SuperClassEnum = 'SuperClassEnum',
+ ComponentEnum = 'ComponentEnum',
+ ProjectTypeEnum = 'ProjectTypeEnum',
+ TemplateEnum = 'TemplateEnum',
+ FileOverrideStrategyEnum = 'FileOverrideStrategyEnum',
+
+ // test
+ ProductType = 'ProductType',
+ DefGenTestSimpleType2Enum = 'DefGenTestSimpleType2Enum',
+ DefGenTestTreeType2Enum = 'DefGenTestTreeType2Enum',
+}
+export enum DictEnum {
+ // 全局
+ GLOBAL_SEX = 'GLOBAL_SEX',
+ AREA_LEVEL = 'GLOBAL_AREA_LEVEL',
+ NATION = 'GLOBAL_NATION',
+ SEX = 'GLOBAL_SEX',
+ EDUCATION = 'GLOBAL_EDUCATION',
+
+ // base
+ POSITION_STATUS = 'BASE_POSITION_STATUS',
+ ORG_TYPE = 'BASE_ORG_TYPE',
+ ROLE_CATEGORY = 'BASE_ROLE_CATEGORY',
+ EchoDictType_Base_INTERFACE_EXEC_MODE = 'INTERFACE_EXEC_MODE',
+ EchoDictType_Base_MSG_TEMPLATE_TYPE = 'MSG_TEMPLATE_TYPE',
+ EchoDictType_Base_NOTICE_TARGET = 'NOTICE_TARGET',
+ EchoDictType_Base_NOTICE_REMIND_MODE = 'NOTICE_REMIND_MODE',
+ EchoDictType_Base_MSG_INTERFACE_LOGGING_STATUS = 'MSG_INTERFACE_LOGGING_STATUS',
+ // tenant
+ RESOURCE_TYPE = 'TENANT_RESOURCE_TYPE',
+ RESOURCE_DATA_SCOPE = 'TENANT_RESOURCE_DATA_SCOPE',
+ RESOURCE_OPEN_WITH = 'TENANT_RESOURCE_OPEN_WITH',
+ RESOURCE_TRANSITION_NAME = 'TENANT_RESOURCE_TRANSITION_NAME',
+ DICT_TYPE = 'TENANT_DICT_TYPE',
+ DICT_CLASSIFY = 'TENANT_DICT_CLASSIFY',
+ PARAMETER_TYPE = 'TENANT_PARAMETER_TYPE',
+ APPLICATION_TYPE = 'TENANT_APPLICATION_TYPE',
+ CLIENT_TYPE = 'TENANT_CLIENT_TYPE',
+ AREA_SOURCE = 'TENANT_AREA_SOURCE',
+ DictionaryType_Global_EDUCATION = 'GLOBAL_EDUCATION',
+ DictionaryType_Global_DATA_TYPE = 'DATA_TYPE',
+
+ TENANT_LOGIN_STATUS = 'TENANT_LOGIN_STATUS',
+}
+
+export enum MsgTemplateCodeEnum {
+ // 注册短信
+ REGISTER_SMS = 'REGISTER_SMS',
+ // 注册邮件验证码
+ REGISTER_EMAIL = 'REGISTER_EMAIL',
+ //手机登录短信
+ MOBILE_LOGIN = 'MOBILE_LOGIN',
+ MOBILE_EDIT = 'MOBILE_EDIT',
+ EMAIL_EDIT = 'EMAIL_EDIT',
+}
diff --git a/src/enums/httpEnum.ts b/src/enums/httpEnum.ts
new file mode 100644
index 0000000..ed1e4a7
--- /dev/null
+++ b/src/enums/httpEnum.ts
@@ -0,0 +1,34 @@
+/**
+ * @description: 请求结果集
+ */
+export enum ResultEnum {
+ SUCCESS = 0,
+ ERROR = -1,
+ TIMEOUT = 10042,
+ TYPE = 'success',
+}
+
+/**
+ * @description: 请求方法
+ */
+export enum RequestEnum {
+ GET = 'GET',
+ POST = 'POST',
+ PATCH = 'PATCH',
+ PUT = 'PUT',
+ DELETE = 'DELETE',
+}
+
+/**
+ * @description: 常用的contentTyp类型
+ */
+export enum ContentTypeEnum {
+ // json
+ JSON = 'application/json;charset=UTF-8',
+ // json
+ TEXT = 'text/plain;charset=UTF-8',
+ // form-data 一般配合qs
+ FORM_URLENCODED = 'application/x-www-form-urlencoded;charset=UTF-8',
+ // form-data 上传
+ FORM_DATA = 'multipart/form-data;charset=UTF-8',
+}
diff --git a/src/enums/roleEnum.ts b/src/enums/roleEnum.ts
new file mode 100644
index 0000000..15f3a4d
--- /dev/null
+++ b/src/enums/roleEnum.ts
@@ -0,0 +1,210 @@
+export enum RoleEnum {
+ // super admin
+ SUPER = 'super',
+
+ // tester
+ TEST = 'test',
+
+ // 运营系统
+ // 数据源维护
+ TENANT_DATASOURCE_CONFIG_ADD = 'tenant:tenant:datasourceConfig:add',
+ TENANT_DATASOURCE_CONFIG_EDIT = 'tenant:tenant:datasourceConfig:edit',
+ TENANT_DATASOURCE_CONFIG_DELETE = 'tenant:tenant:datasourceConfig:delete',
+ TENANT_DATASOURCE_CONFIG_VIEW = 'tenant:tenant:datasourceConfig:view',
+ TENANT_DATASOURCE_CONFIG_DEBUG = 'tenant:tenant:datasourceConfig:test',
+
+ // 租户维护
+ TENANT_TENANT_ADD = 'tenant:tenant:tenant:add',
+ TENANT_TENANT_EDIT = 'tenant:tenant:tenant:edit',
+ TENANT_TENANT_DELETE = 'tenant:tenant:tenant:delete',
+ TENANT_TENANT_VIEW = 'tenant:tenant:tenant:view',
+ TENANT_TENANT_INIT_DATA = 'tenant:tenant:tenant:initData',
+ TENANT_TENANT_INIT_DATA_SOURCE = 'tenant:tenant:tenant:initDataSource',
+ TENANT_TENANT_BIND_USER = 'tenant:tenant:tenant:bindUser',
+ TENANT_TENANT_TO_EXAMINE = 'tenant:tenant:tenant:toExamine',
+ TENANT_TENANT_VIEW_UNBIND = 'tenant:tenant:tenant:view:unBind',
+
+ // 用户维护
+ TENANT_USER_ADD = 'tenant:tenant:user:add',
+ TENANT_USER_EDIT = 'tenant:tenant:user:edit',
+ TENANT_USER_DELETE = 'tenant:tenant:user:delete',
+ TENANT_USER_VIEW = 'tenant:tenant:user:view',
+ TENANT_USER_RESET_PWD = 'tenant:tenant:user:reset:password',
+
+ // 应用
+ APPLICATION_ADD = 'tenant:application:application:add',
+ APPLICATION_DELETE = 'tenant:application:application:delete',
+ APPLICATION_EDIT = 'tenant:application:application:edit',
+ APPLICATION_COPY = 'tenant:application:application:copy',
+ APPLICATION_RESOURCE = 'tenant:application:application:resource',
+ APPLICATION_IS_VISIBLE = 'tenant:application:application:isVisible',
+ // 应用资源
+ APPLICATION_RESOURCE_ADD = 'tenant:application:application:resource:add',
+ APPLICATION_RESOURCE_MOVE = 'tenant:application:application:resource:move',
+ APPLICATION_RESOURCE_EDIT = 'tenant:application:application:resource:edit',
+ APPLICATION_RESOURCE_DELETE = 'tenant:application:application:resource:delete',
+ // 资源
+ RESOURCE_MOVE = 'tenant:application:resource:move',
+ RESOURCE_ADD = 'tenant:application:resource:add',
+ RESOURCE_EDIT = 'tenant:application:resource:edit',
+ RESOURCE_DELETE = 'tenant:application:resource:delete',
+ // 应用授权
+ APPLICATION_AUTHORIZE_GRANT = 'tenant:application:authorize:grant',
+ APPLICATION_AUTHORIZE_RENEWAL = 'tenant:application:authorize:renewal',
+ APPLICATION_AUTHORIZE_CANCEL = 'tenant:application:authorize:cancel',
+
+ // 字典
+ SYSTEM_DICT_ADD = 'tenant:system:dict:add',
+ SYSTEM_DICT_EDIT = 'tenant:system:dict:edit',
+ SYSTEM_DICT_DELETE = 'tenant:system:dict:delete',
+ SYSTEM_DICT_ADD_ITEM = 'tenant:system:dict:addItem',
+ SYSTEM_DICT_EDIT_ITEM = 'tenant:system:dict:editItem',
+ SYSTEM_DICT_DELETE_ITEM = 'tenant:system:dict:deleteItem',
+ // 参数维护
+ SYSTEM_PARAM_ADD = 'tenant:system:param:add',
+ SYSTEM_PARAM_EDIT = 'tenant:system:param:edit',
+ SYSTEM_PARAM_DELETE = 'tenant:system:param:delete',
+ SYSTEM_PARAM_VIEW = 'tenant:system:param:view',
+ // 地区维护
+ SYSTEM_AREA_ADD = 'tenant:system:area:add',
+ SYSTEM_AREA_EDIT = 'tenant:system:area:edit',
+ SYSTEM_AREA_DELETE = 'tenant:system:area:delete',
+ // 客户端维护
+ SYSTEM_CLIENT_ADD = 'tenant:system:client:add',
+ SYSTEM_CLIENT_EDIT = 'tenant:system:client:edit',
+ SYSTEM_CLIENT_DELETE = 'tenant:system:client:delete',
+ SYSTEM_CLIENT_VIEW = 'tenant:system:client:view',
+ // 客户端维护
+ SYSTEM_LOGIN_LOG_DELETE = 'tenant:system:loginLog:delete',
+ SYSTEM_LOGIN_LOG_VIEW = 'tenant:system:loginLog:view',
+
+ // 代码生成
+ TENANT_DEVELOPER_TOOLS_GENERATOR_EDIT = 'tenant:developer:tools:generator:edit',
+ TENANT_DEVELOPER_TOOLS_GENERATOR_IMPORT = 'tenant:developer:tools:generator:import',
+ TENANT_DEVELOPER_TOOLS_GENERATOR_SYNC = 'tenant:developer:tools:generator:sync',
+ TENANT_DEVELOPER_TOOLS_GENERATOR_DELETE = 'tenant:developer:tools:generator:delete',
+ TENANT_DEVELOPER_TOOLS_GENERATOR_PREVIEW = 'tenant:developer:tools:generator:preview',
+ TENANT_DEVELOPER_TOOLS_GENERATOR_EDIT_DELETE = 'tenant:developer:tools:generator:edit:delete',
+ TENANT_DEVELOPER_TOOLS_GENERATOR_EDIT_EDIT = 'tenant:developer:tools:generator:edit:edit',
+ TENANT_DEVELOPER_TOOLS_GENERATOR_EDIT_SYNC = 'tenant:developer:tools:generator:edit:sync',
+
+ // 运维平台-接口管理
+ TENANT_OPS_INTERFACES_ADD = 'tenant:ops:interfaces:add',
+ TENANT_OPS_INTERFACES_EDIT = 'tenant:ops:interfaces:edit',
+ TENANT_OPS_INTERFACES_DELETE = 'tenant:ops:interfaces:delete',
+ TENANT_OPS_INTERFACES_VIEW = 'tenant:ops:interfaces:view',
+ TENANT_OPS_INTERFACES_PROPERTY = 'tenant:ops:interfaces:property',
+ // 运维平台-模板管理
+ TENANT_OPS_TEMPLATE_ADD = 'tenant:ops:template:add',
+ TENANT_OPS_TEMPLATE_EDIT = 'tenant:ops:template:edit',
+ TENANT_OPS_TEMPLATE_DELETE = 'tenant:ops:template:delete',
+ TENANT_OPS_TEMPLATE_VIEW = 'tenant:ops:template:view',
+ // 运维平台-接口日志
+ TENANT_OPS_INTERFACES_LOG_DELETE = 'tenant:ops:interfaces:log:delete',
+ TENANT_OPS_INTERFACES_LOG_LOGGING = 'tenant:ops:interfaces:log:logging',
+ TENANT_OPS_INTERFACES_LOG_LOGGING_DELETE = 'tenant:ops:interfaces:log:logging:delete',
+
+ // 附件管理
+ TENANT_SYSTEM_FILE_UPLOAD = 'tenant:system:file:upload',
+ TENANT_SYSTEM_FILE_DEBUG_UPLOAD = 'tenant:system:file:debug:upload',
+ TENANT_SYSTEM_FILE_DOWNLOAD = 'tenant:system:file:download',
+ TENANT_SYSTEM_FILE_DELETE = 'tenant:system:file:delete',
+
+ // 基础平台
+ // 消息中心-消息管理
+ BASIC_MSG_MSG_ADD = 'basic:msg:msg:add',
+ BASIC_MSG_MSG_EDIT = 'basic:msg:msg:edit',
+ BASIC_MSG_MSG_DELETE = 'basic:msg:msg:delete',
+ BASIC_MSG_MSG_VIEW = 'basic:msg:msg:view',
+
+ // 消息中心-个性模板
+ BASIC_MSG_TEMPLATE_IMPORT = 'basic:msg:template:import',
+ BASIC_MSG_TEMPLATE_EDIT = 'basic:msg:template:edit',
+ BASIC_MSG_TEMPLATE_DELETE = 'basic:msg:template:delete',
+ BASIC_MSG_TEMPLATE_VIEW = 'basic:msg:template:view',
+
+ // 消息中心-我的消息
+ BASIC_MSG_NOTICE_DELETE = 'basic:msg:myMsg:delete',
+ BASIC_MSG_NOTICE_VIEW = 'basic:msg:myMsg:edit',
+
+ // 员工维护
+ EMPLOYEE_ADD = 'basic:user:employee:add',
+ EMPLOYEE_REST_PWD = 'basic:user:employee:rest:pwd',
+ EMPLOYEE_EDIT = 'basic:user:employee:edit',
+ EMPLOYEE_DELETE = 'basic:user:employee:delete',
+ EMPLOYEE_VIEW = 'basic:user:employee:view',
+ EMPLOYEE_BIND_ROLE = 'basic:user:employee:bindRole',
+ INVITATION_USER = 'basic:user:employee:invitation',
+
+ // 机构维护
+ ORG_ADD = 'basic:user:org:add',
+ ORG_EDIT = 'basic:user:org:edit',
+ ORG_DELETE = 'basic:user:org:delete',
+ ORG_SWITCH = 'basic:user:org:switch',
+ ORG_BIND_ROLE = 'basic:user:org:bind',
+
+ // 岗位维护
+ POSITION_ADD = 'basic:user:position:add',
+ POSITION_EDIT = 'basic:user:position:edit',
+ POSITION_DELETE = 'basic:user:position:delete',
+ POSITION_VIEW = 'basic:user:position:view',
+
+ // 个性字典
+ BASIC_DICT_IMPORT = 'basic:base:dict:import',
+ BASIC_DICT_EDIT = 'basic:base:dict:edit',
+ BASIC_DICT_DELETE = 'basic:base:dict:delete',
+ BASIC_DICT_VIEW = 'basic:base:dict:view',
+ BASIC_DICT_ITEM_ADD = 'basic:base:dict:addItem',
+ BASIC_DICT_ITEM_EDIT = 'basic:base:dict:editItem',
+ BASIC_DICT_ITEM_DELETE = 'basic:base:dict:deleteItem',
+
+ // 个性参数
+ PARAMETER_ADD = 'basic:base:parameter:add',
+ PARAMETER_EDIT = 'basic:base:parameter:edit',
+ PARAMETER_DELETE = 'basic:base:parameter:delete',
+ PARAMETER_VIEW = 'basic:base:parameter:view',
+
+ // 角色权限维护
+ ROLE_ADD = 'basic:system:role:add',
+ ROLE_EDIT = 'basic:system:role:edit',
+ ROLE_DELETE = 'basic:system:role:delete',
+ ROLE_BING_USER = 'basic:system:role:bindUser',
+ ROLE_BIND_RESOURCE = 'basic:system:role:bindResource',
+
+ // 附件管理
+ SYSTEM_APPENDIX_UPLOAD = 'basic:system:appendix:upload',
+ SYSTEM_APPENDIX_DEBUG_UPLOAD = 'basic:system:appendix:debug:upload',
+ SYSTEM_APPENDIX_DOWNLOAD = 'basic:system:appendix:download',
+ SYSTEM_APPENDIX_DELETE = 'basic:system:appendix:delete',
+
+ // 操作日志
+ SYSTEM_WEB_LOG_DELETE = 'basic:system:webLog:delete',
+ SYSTEM_WEB_LOG_VIEW = 'basic:system:webLog:view',
+ // 登录日志
+ BASIC_SYSTEM_LOGIN_LOG_DELETE = 'basic:system:loginLog:delete',
+ BASIC_SYSTEM_LOGIN_LOG_VIEW = 'basic:system:loginLog:view',
+ // 工作流-流程管理
+ BASIC_FLOW_ACTIVITI_DEPLOYMENT_UPLOAD = 'basic:flow:activiti:deployment:upload',
+ BASIC_FLOW_ACTIVITI_DEPLOYMENT_TRAN = 'basic:flow:activiti:deployment:tran',
+ BASIC_FLOW_ACTIVITI_DEPLOYMENT_STATE = 'basic:flow:activiti:deployment:state',
+ BASIC_FLOW_ACTIVITI_DEPLOYMENT_DRAW = 'basic:flow:activiti:deployment:draw',
+ BASIC_FLOW_ACTIVITI_DEPLOYMENT_XML = 'basic:flow:activiti:deployment:xml',
+ BASIC_FLOW_ACTIVITI_DEPLOYMENT_DELETE = 'basic:flow:activiti:deployment:delete',
+ // 工作流-模型管理
+ BASIC_FLOW_ACTIVITI_MODEL_ADD = 'basic:flow:activiti:model:add',
+ BASIC_FLOW_ACTIVITI_MODEL_EDIT = 'basic:flow:activiti:model:edit',
+ BASIC_FLOW_ACTIVITI_MODEL_PUBLISH = 'basic:flow:activiti:model:publish',
+ BASIC_FLOW_ACTIVITI_MODEL_DOWNLOAD = 'basic:flow:activiti:model:download',
+ BASIC_FLOW_ACTIVITI_MODEL_DELETE = 'basic:flow:activiti:model:delete',
+}
+
+export enum PermModeEnum {
+ // 拥有所有
+ Has = 'Has',
+ // 拥有任意一个
+ HasAny = 'HasAny',
+ // 没有所有
+ Without = 'Without',
+ // 没有任意一个
+ WithoutAny = 'WithoutAny',
+}
diff --git a/src/env.d.ts b/src/env.d.ts
new file mode 100644
index 0000000..aafef95
--- /dev/null
+++ b/src/env.d.ts
@@ -0,0 +1,8 @@
+///
+
+declare module '*.vue' {
+ import type { DefineComponent } from 'vue'
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types
+ const component: DefineComponent<{}, {}, any>
+ export default component
+}
diff --git a/src/global.d.ts b/src/global.d.ts
new file mode 100644
index 0000000..66194e3
--- /dev/null
+++ b/src/global.d.ts
@@ -0,0 +1,13 @@
+interface HTMLElement {
+ webkitRequestFullScreen(options?: FullscreenOptions): Promise;
+ mozRequestFullScreen(options?: FullscreenOptions): Promise;
+}
+
+interface Document {
+ mozFullScreen: boolean;
+ webkitIsFullScreen: boolean;
+ webkitFullScreen: boolean;
+
+ mozCancelFullScreen(): Promise;
+ webkitCancelFullScreen(): Promise;
+}
\ No newline at end of file
diff --git a/src/hooks/event/useBreakpoint.ts b/src/hooks/event/useBreakpoint.ts
new file mode 100644
index 0000000..f6922b1
--- /dev/null
+++ b/src/hooks/event/useBreakpoint.ts
@@ -0,0 +1,90 @@
+import { ref, computed, unref } from 'vue';
+import type { ComputedRef } from 'vue';
+import { useEventListener } from '@/hooks/event/useEventListener';
+import { screenMap, sizeEnum, screenEnum } from '@/enums/breakpointEnum';
+
+let globalScreenRef: ComputedRef;
+let globalWidthRef: ComputedRef;
+let globalRealWidthRef: ComputedRef;
+
+export interface CreateCallbackParams {
+ screen: ComputedRef;
+ width: ComputedRef;
+ realWidth: ComputedRef;
+ screenEnum: typeof screenEnum;
+ screenMap: Map;
+ sizeEnum: typeof sizeEnum;
+}
+
+export function useBreakpoint() {
+ return {
+ screenRef: computed(() => unref(globalScreenRef)),
+ widthRef: globalWidthRef,
+ screenEnum,
+ realWidthRef: globalRealWidthRef,
+ };
+}
+
+// Just call it once
+export function createBreakpointListen(fn?: (opt: CreateCallbackParams) => void) {
+ const screenRef = ref(sizeEnum.XL);
+ const realWidthRef = ref(window.innerWidth);
+
+ function getWindowWidth() {
+ const width = document.body.clientWidth;
+ const xs = screenMap.get(sizeEnum.XS)!;
+ const sm = screenMap.get(sizeEnum.SM)!;
+ const md = screenMap.get(sizeEnum.MD)!;
+ const lg = screenMap.get(sizeEnum.LG)!;
+ const xl = screenMap.get(sizeEnum.XL)!;
+ if (width < xs) {
+ screenRef.value = sizeEnum.XS;
+ } else if (width < sm) {
+ screenRef.value = sizeEnum.SM;
+ } else if (width < md) {
+ screenRef.value = sizeEnum.MD;
+ } else if (width < lg) {
+ screenRef.value = sizeEnum.LG;
+ } else if (width < xl) {
+ screenRef.value = sizeEnum.XL;
+ } else {
+ screenRef.value = sizeEnum.XXL;
+ }
+ realWidthRef.value = width;
+ }
+
+ useEventListener({
+ el: window,
+ name: 'resize',
+
+ listener: () => {
+ getWindowWidth();
+ resizeFn();
+ },
+ // wait: 100,
+ });
+
+ getWindowWidth();
+ globalScreenRef = computed(() => unref(screenRef));
+ globalWidthRef = computed((): number => screenMap.get(unref(screenRef)!)!);
+ globalRealWidthRef = computed((): number => unref(realWidthRef));
+
+ function resizeFn() {
+ fn?.({
+ screen: globalScreenRef,
+ width: globalWidthRef,
+ realWidth: globalRealWidthRef,
+ screenEnum,
+ screenMap,
+ sizeEnum,
+ });
+ }
+
+ resizeFn();
+ return {
+ screenRef: globalScreenRef,
+ screenEnum,
+ widthRef: globalWidthRef,
+ realWidthRef: globalRealWidthRef,
+ };
+}
diff --git a/src/hooks/event/useEventListener.ts b/src/hooks/event/useEventListener.ts
new file mode 100644
index 0000000..7aa92eb
--- /dev/null
+++ b/src/hooks/event/useEventListener.ts
@@ -0,0 +1,58 @@
+import { ref, watch, unref } from 'vue';
+import { useThrottleFn, useDebounceFn } from '@vueuse/core';
+import type { Ref } from 'vue';
+
+export type RemoveEventFn = () => void;
+export interface UseEventParams {
+ el?: Element | Ref | Window | any;
+ name: string;
+ listener: EventListener;
+ options?: boolean | AddEventListenerOptions;
+ autoRemove?: boolean;
+ isDebounce?: boolean;
+ wait?: number;
+}
+export function useEventListener({
+ el = window,
+ name,
+ listener,
+ options,
+ autoRemove = true,
+ isDebounce = true,
+ wait = 80,
+}: UseEventParams): { removeEvent: RemoveEventFn } {
+ /* eslint-disable-next-line */
+ let remove: RemoveEventFn = () => {};
+ const isAddRef = ref(false);
+
+ if (el) {
+ const element = ref(el as Element) as Ref