├── .eslintignore
├── .eslintrc.js
├── .gitignore
├── .prettierignore
├── .prettierrc.js
├── .vscode
└── extensions.json
├── README.md
├── index.html
├── package.json
├── pnpm-lock.yaml
├── public
└── vite.svg
├── src
├── App.vue
├── assets
│ └── vue.svg
├── components
│ ├── EditTable.vue
│ ├── EditTableColumn.vue
│ └── GridList.vue
├── constants
│ └── mime-type.ts
├── hooks
│ ├── useCommandComponent.ts
│ ├── useEventListener.ts
│ ├── useExport.ts
│ ├── useHotKey.ts
│ ├── useReadFileContent.ts
│ ├── useRouterCache.ts
│ ├── useSelectFile.ts
│ └── useVirtualGridList.ts
├── layout
│ └── index.vue
├── main.ts
├── router
│ ├── index.ts
│ └── types.ts
├── style.css
├── utils
│ ├── error.ts
│ ├── file.ts
│ └── index.ts
├── views
│ ├── command-dialog
│ │ ├── README.md
│ │ ├── components
│ │ │ ├── Comp.vue
│ │ │ └── MyDialog.vue
│ │ └── index.vue
│ ├── edit-table
│ │ ├── README.md
│ │ └── index.vue
│ ├── grid-list
│ │ ├── README.md
│ │ └── index.vue
│ └── hot-key
│ │ └── index.vue
└── vite-env.d.ts
├── tsconfig.json
├── tsconfig.node.json
└── vite.config.ts
/.eslintignore:
--------------------------------------------------------------------------------
1 | dist
2 | coverage
3 | node_modules
4 | dest
5 | types
6 | lib
7 | public/
8 |
--------------------------------------------------------------------------------
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | const { defineConfig } = require('eslint-define-config');
2 |
3 | module.exports = defineConfig({
4 | root: true,
5 | env: {
6 | node: true,
7 | browser: true,
8 | es2022: true,
9 | },
10 | globals: {
11 | describe: true,
12 | it: true,
13 | expect: true,
14 | beforeEach: true,
15 | NodeJS: true,
16 | },
17 | extends: ['plugin:vue/vue3-recommended', 'eslint:recommended', 'plugin:prettier/recommended'],
18 | parser: 'vue-eslint-parser',
19 | parserOptions: {
20 | ecmaVersion: 12,
21 | parser: '@typescript-eslint/parser',
22 | extraFileExtensions: ['.vue'],
23 | sourceType: 'module',
24 | project: ['./tsconfig.json'],
25 | },
26 | plugins: ['vue', '@typescript-eslint', 'simple-import-sort', 'prettier'],
27 | ignorePatterns: ['.eslintrc.js'],
28 | rules: {
29 | // eslint (http://eslint.cn/docs/rules)
30 | 'no-var': ['error'],
31 | 'no-multiple-empty-lines': ['error', { max: 1 }],
32 | 'no-debugger': ['error'],
33 | 'no-extra-bind': ['error'],
34 |
35 | // typescript (http://typescript-eslint.io/rules)
36 | '@typescript-eslint/no-unused-vars': ['error'],
37 | '@typescript-eslint/class-literal-property-style': ['error', 'getters'],
38 | '@typescript-eslint/no-empty-function': ['off'],
39 | '@typescript-eslint/no-require-imports': ['off'],
40 | '@typescript-eslint/no-misused-promises': [
41 | 'error',
42 | {
43 | checksVoidReturn: false,
44 | },
45 | ],
46 |
47 | // vue (http://eslint.vuejs.org/rules)
48 | 'vue/one-component-per-file': ['error'],
49 | 'vue/require-default-prop': ['off'],
50 | 'vue/no-mutating-props': ['off'],
51 | 'vue/multi-word-component-names': ['off'],
52 | 'vue/padding-line-between-blocks': ['error'],
53 | 'vue/require-component-is': ['error'],
54 | 'vue/component-definition-name-casing': ['error', 'PascalCase'],
55 | 'vue/component-name-in-template-casing': ['error', 'PascalCase'],
56 | 'vue/component-options-name-casing': ['error', 'PascalCase'],
57 | 'vue/no-reserved-component-names': ['error', { disallowVue3BuiltInComponents: true }],
58 | 'vue/component-tags-order': ['error', { order: ['script:not([setup])', 'script[setup]', 'template', 'style'] }],
59 | 'vue/block-lang': ['error', { script: { lang: 'ts' } }],
60 | 'vue/no-template-shadow': ['off'],
61 | 'vue/attributes-order': [
62 | 'error',
63 | {
64 | order: [
65 | 'LIST_RENDERING',
66 | 'CONDITIONALS',
67 | 'RENDER_MODIFIERS',
68 | 'GLOBAL',
69 | 'UNIQUE',
70 | 'TWO_WAY_BINDING',
71 | 'DEFINITION',
72 | 'OTHER_ATTR',
73 | 'EVENTS',
74 | 'CONTENT',
75 | ],
76 | },
77 | ],
78 | 'vue/order-in-components': [
79 | 'error',
80 | {
81 | order: [
82 | 'name',
83 | ['components', 'directives'],
84 | ['mixins', 'provide', 'inject'],
85 | 'props',
86 | 'emits',
87 | 'data',
88 | 'computed',
89 | 'watch',
90 | 'LIFECYCLE_HOOKS',
91 | 'methods',
92 | ['template', 'render'],
93 | 'renderError',
94 | ],
95 | },
96 | ],
97 | 'vue/valid-attribute-name': ['off'],
98 | 'vue/no-v-html': ['error'],
99 | 'vue/no-unused-refs': ['error'],
100 | 'vue/no-unused-vars': ['error'],
101 | 'vue/no-undef-properties': ['error'],
102 | 'vue/no-lone-template': ['error'],
103 | 'vue/v-on-function-call': ['error'],
104 | 'vue/v-on-event-hyphenation': ['error', 'always', { autofix: true }],
105 |
106 | 'simple-import-sort/imports': [
107 | 'error',
108 | {
109 | groups: [
110 | ['./polyfills'],
111 | // Node.js builtins. You could also generate this regex if you use a `.js` config.
112 | // For example: `^(${require("module").builtinModules.join("|")})(/|$)`
113 | [
114 | '^(assert|buffer|child_process|cluster|console|constants|crypto|dgram|dns|domain|events|fs|http|https|module|net|os|path|punycode|querystring|readline|repl|stream|string_decoder|sys|timers|tls|tty|url|util|vm|zlib|freelist|v8|process|async_hooks|http2|perf_hooks)(/.*|$)',
115 | ],
116 | // Packages. `react|vue` related packages come first.
117 | ['^(react|vue|vite)', '^@?\\w'],
118 | ['^(@tmagic)(/.*|$)'],
119 | // Internal packages.
120 | ['^(@|@editor)(/.*|$)'],
121 | // Side effect imports.
122 | ['^\\u0000'],
123 | // Parent imports. Put `..` last.
124 | ['^\\.\\.(?!/?$)', '^\\.\\./?$'],
125 | // Other relative imports. Put same-folder imports and `.` last.
126 | ['^\\./(?=.*/)(?!/?$)', '^\\.(?!/?$)', '^\\./?$'],
127 | // Style imports.
128 | ['^.+\\.s?css$'],
129 | ],
130 | },
131 | ],
132 |
133 | 'prettier/prettier': [
134 | 'error',
135 | {
136 | singleQuote: true,
137 | trailingComma: 'es5',
138 | semi: true,
139 | arrowParens: 'always',
140 | bracketSpacing: true,
141 | printWidth: 120,
142 | tabWidth: 2,
143 | useTabs: false,
144 | endOfLine: 'auto',
145 | vueIndentScriptAndStyle: false,
146 | vueIndentHTML: false,
147 | },
148 | ],
149 | },
150 | });
151 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 |
15 | # Editor directories and files
16 | .vscode/*
17 | !.vscode/extensions.json
18 | .idea
19 | .DS_Store
20 | *.suo
21 | *.ntvs*
22 | *.njsproj
23 | *.sln
24 | *.sw?
25 |
--------------------------------------------------------------------------------
/.prettierignore:
--------------------------------------------------------------------------------
1 | dist
2 | coverage
3 | node_modules
4 | dest
5 | types
6 |
7 | *.mjs
8 | *.mjs.map
9 | *.umd.js
10 | *.umd.js.map
11 |
--------------------------------------------------------------------------------
/.prettierrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | singleQuote: true,
3 | trailingComma: 'es5',
4 | semi: true,
5 | arrowParens: 'always',
6 | bracketSpacing: true,
7 | printWidth: 120,
8 | tabWidth: 2,
9 | useTabs: false,
10 | endOfLine: 'auto',
11 | vueIndentScriptAndStyle: false,
12 | vueIndentHTML: false,
13 | };
14 |
--------------------------------------------------------------------------------
/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"]
3 | }
4 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Vue aide
2 |
3 | ## Components
4 |
5 | ### EditTable
6 |
7 | 阅读[《极致舒适的 Vue 可编辑表格》](https://juejin.cn/post/7242140832379584567)获取更多 EditTable 的信息
8 |
9 | #### 无编辑效果
10 |
11 | 
12 |
13 | #### 可编辑效果
14 |
15 | 
16 |
17 | #### 删除效果
18 |
19 | 
20 |
21 | #### 新增效果
22 |
23 | 
24 |
25 | #### 表单校验效果
26 |
27 | 
28 |
29 | #### 获取编辑结果
30 |
31 | 
32 |
33 | ### GridList
34 |
35 | 阅读[《极致舒适的 Vue 高性能列表》](https://juejin.cn/post/7248606302896832570)获取更多 GridList 的信息
36 |
37 | #### Grid 布局预览
38 |
39 | 
40 |
41 | #### 单列布局预览
42 |
43 | 
44 |
45 | #### 分页加载预览
46 |
47 | 
48 |
49 | #### 虚拟列表效果
50 |
51 | 
52 |
53 | ## Hooks
54 |
55 | ### useHotkey
56 |
57 | ### useExport
58 |
59 | ### useSelectFile
60 |
61 | ### useExport
62 |
63 | ### useHotKey
64 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Vite + Vue + TS
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "edit-table",
3 | "private": true,
4 | "version": "0.0.0",
5 | "scripts": {
6 | "dev": "vite",
7 | "build": "vite build",
8 | "build:github": "npm run build && npm run github",
9 | "preview": "vite preview",
10 | "lint": "eslint . --ext .js,.vue,.ts,.tsx",
11 | "lint:fix": "eslint . --fix --ext .js,.vue,.ts,.tsx",
12 | "github": "gh-pages -d dist -r https://github.com/JessYan0913/vue-aide.git"
13 | },
14 | "dependencies": {
15 | "element-plus": "^2.2.28",
16 | "vue": "^3.3.4",
17 | "vue-router": "^4.2.4"
18 | },
19 | "devDependencies": {
20 | "@types/node": "^18.11.18",
21 | "@typescript-eslint/eslint-plugin": "^5.48.0",
22 | "@typescript-eslint/parser": "^5.48.0",
23 | "@typescript-eslint/typescript-estree": "^5.48.0",
24 | "@vitejs/plugin-vue": "^4.1.0",
25 | "eslint": "^8.31.0",
26 | "eslint-config-prettier": "^8.6.0",
27 | "eslint-define-config": "^1.13.0",
28 | "eslint-plugin-import": "^2.26.0",
29 | "eslint-plugin-prettier": "^4.2.1",
30 | "eslint-plugin-simple-import-sort": "^8.0.0",
31 | "eslint-plugin-vue": "^9.8.0",
32 | "gh-pages": "^6.0.0",
33 | "prettier": "^2.8.2",
34 | "sass": "^1.63.3",
35 | "typescript": "^5.0.2",
36 | "vite": "^4.3.9",
37 | "vue-tsc": "^1.4.2"
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: 5.4
2 |
3 | specifiers:
4 | '@types/node': ^18.11.18
5 | '@typescript-eslint/eslint-plugin': ^5.48.0
6 | '@typescript-eslint/parser': ^5.48.0
7 | '@typescript-eslint/typescript-estree': ^5.48.0
8 | '@vitejs/plugin-vue': ^4.1.0
9 | element-plus: ^2.2.28
10 | eslint: ^8.31.0
11 | eslint-config-prettier: ^8.6.0
12 | eslint-define-config: ^1.13.0
13 | eslint-plugin-import: ^2.26.0
14 | eslint-plugin-prettier: ^4.2.1
15 | eslint-plugin-simple-import-sort: ^8.0.0
16 | eslint-plugin-vue: ^9.8.0
17 | gh-pages: ^6.0.0
18 | prettier: ^2.8.2
19 | sass: ^1.63.3
20 | typescript: ^5.0.2
21 | vite: ^4.3.9
22 | vue: ^3.3.4
23 | vue-router: ^4.2.4
24 | vue-tsc: ^1.4.2
25 |
26 | dependencies:
27 | element-plus: 2.3.6_vue@3.3.4
28 | vue: 3.3.4
29 | vue-router: 4.2.4_vue@3.3.4
30 |
31 | devDependencies:
32 | '@types/node': 18.17.13
33 | '@typescript-eslint/eslint-plugin': 5.62.0_udpy2hvbsts6xtoymztsifbu7e
34 | '@typescript-eslint/parser': 5.62.0_jkonsiqll5kf7uvjobvewtpypa
35 | '@typescript-eslint/typescript-estree': 5.62.0_typescript@5.1.3
36 | '@vitejs/plugin-vue': 4.2.3_vite@4.3.9+vue@3.3.4
37 | eslint: 8.48.0
38 | eslint-config-prettier: 8.10.0_eslint@8.48.0
39 | eslint-define-config: 1.23.0
40 | eslint-plugin-import: 2.28.1_ean2qamlavtp6bo3zeco4caumq
41 | eslint-plugin-prettier: 4.2.1_b7j5i5eung22avfvwixh6yzuzu
42 | eslint-plugin-simple-import-sort: 8.0.0_eslint@8.48.0
43 | eslint-plugin-vue: 9.17.0_eslint@8.48.0
44 | gh-pages: 6.0.0
45 | prettier: 2.8.8
46 | sass: 1.63.3
47 | typescript: 5.1.3
48 | vite: 4.3.9_3hkcy4cv6b7vyfga2q67aben5q
49 | vue-tsc: 1.6.5_typescript@5.1.3
50 |
51 | packages:
52 |
53 | /@aashutoshrathi/word-wrap/1.2.6:
54 | resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==}
55 | engines: {node: '>=0.10.0'}
56 | dev: true
57 |
58 | /@babel/helper-string-parser/7.22.5:
59 | resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==}
60 | engines: {node: '>=6.9.0'}
61 |
62 | /@babel/helper-validator-identifier/7.22.5:
63 | resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==}
64 | engines: {node: '>=6.9.0'}
65 |
66 | /@babel/parser/7.22.5:
67 | resolution: {integrity: sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==}
68 | engines: {node: '>=6.0.0'}
69 | hasBin: true
70 | dependencies:
71 | '@babel/types': 7.22.5
72 |
73 | /@babel/types/7.22.5:
74 | resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==}
75 | engines: {node: '>=6.9.0'}
76 | dependencies:
77 | '@babel/helper-string-parser': 7.22.5
78 | '@babel/helper-validator-identifier': 7.22.5
79 | to-fast-properties: 2.0.0
80 |
81 | /@ctrl/tinycolor/3.6.0:
82 | resolution: {integrity: sha512-/Z3l6pXthq0JvMYdUFyX9j0MaCltlIn6mfh9jLyQwg5aPKxkyNa0PTHtU1AlFXLNk55ZuAeJRcpvq+tmLfKmaQ==}
83 | engines: {node: '>=10'}
84 | dev: false
85 |
86 | /@element-plus/icons-vue/2.1.0_vue@3.3.4:
87 | resolution: {integrity: sha512-PSBn3elNoanENc1vnCfh+3WA9fimRC7n+fWkf3rE5jvv+aBohNHABC/KAR5KWPecxWxDTVT1ERpRbOMRcOV/vA==}
88 | peerDependencies:
89 | vue: ^3.2.0
90 | dependencies:
91 | vue: 3.3.4
92 | dev: false
93 |
94 | /@esbuild/android-arm/0.17.19:
95 | resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==}
96 | engines: {node: '>=12'}
97 | cpu: [arm]
98 | os: [android]
99 | requiresBuild: true
100 | dev: true
101 | optional: true
102 |
103 | /@esbuild/android-arm64/0.17.19:
104 | resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==}
105 | engines: {node: '>=12'}
106 | cpu: [arm64]
107 | os: [android]
108 | requiresBuild: true
109 | dev: true
110 | optional: true
111 |
112 | /@esbuild/android-x64/0.17.19:
113 | resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==}
114 | engines: {node: '>=12'}
115 | cpu: [x64]
116 | os: [android]
117 | requiresBuild: true
118 | dev: true
119 | optional: true
120 |
121 | /@esbuild/darwin-arm64/0.17.19:
122 | resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==}
123 | engines: {node: '>=12'}
124 | cpu: [arm64]
125 | os: [darwin]
126 | requiresBuild: true
127 | dev: true
128 | optional: true
129 |
130 | /@esbuild/darwin-x64/0.17.19:
131 | resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==}
132 | engines: {node: '>=12'}
133 | cpu: [x64]
134 | os: [darwin]
135 | requiresBuild: true
136 | dev: true
137 | optional: true
138 |
139 | /@esbuild/freebsd-arm64/0.17.19:
140 | resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==}
141 | engines: {node: '>=12'}
142 | cpu: [arm64]
143 | os: [freebsd]
144 | requiresBuild: true
145 | dev: true
146 | optional: true
147 |
148 | /@esbuild/freebsd-x64/0.17.19:
149 | resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==}
150 | engines: {node: '>=12'}
151 | cpu: [x64]
152 | os: [freebsd]
153 | requiresBuild: true
154 | dev: true
155 | optional: true
156 |
157 | /@esbuild/linux-arm/0.17.19:
158 | resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==}
159 | engines: {node: '>=12'}
160 | cpu: [arm]
161 | os: [linux]
162 | requiresBuild: true
163 | dev: true
164 | optional: true
165 |
166 | /@esbuild/linux-arm64/0.17.19:
167 | resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==}
168 | engines: {node: '>=12'}
169 | cpu: [arm64]
170 | os: [linux]
171 | requiresBuild: true
172 | dev: true
173 | optional: true
174 |
175 | /@esbuild/linux-ia32/0.17.19:
176 | resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==}
177 | engines: {node: '>=12'}
178 | cpu: [ia32]
179 | os: [linux]
180 | requiresBuild: true
181 | dev: true
182 | optional: true
183 |
184 | /@esbuild/linux-loong64/0.17.19:
185 | resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==}
186 | engines: {node: '>=12'}
187 | cpu: [loong64]
188 | os: [linux]
189 | requiresBuild: true
190 | dev: true
191 | optional: true
192 |
193 | /@esbuild/linux-mips64el/0.17.19:
194 | resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==}
195 | engines: {node: '>=12'}
196 | cpu: [mips64el]
197 | os: [linux]
198 | requiresBuild: true
199 | dev: true
200 | optional: true
201 |
202 | /@esbuild/linux-ppc64/0.17.19:
203 | resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==}
204 | engines: {node: '>=12'}
205 | cpu: [ppc64]
206 | os: [linux]
207 | requiresBuild: true
208 | dev: true
209 | optional: true
210 |
211 | /@esbuild/linux-riscv64/0.17.19:
212 | resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==}
213 | engines: {node: '>=12'}
214 | cpu: [riscv64]
215 | os: [linux]
216 | requiresBuild: true
217 | dev: true
218 | optional: true
219 |
220 | /@esbuild/linux-s390x/0.17.19:
221 | resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==}
222 | engines: {node: '>=12'}
223 | cpu: [s390x]
224 | os: [linux]
225 | requiresBuild: true
226 | dev: true
227 | optional: true
228 |
229 | /@esbuild/linux-x64/0.17.19:
230 | resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==}
231 | engines: {node: '>=12'}
232 | cpu: [x64]
233 | os: [linux]
234 | requiresBuild: true
235 | dev: true
236 | optional: true
237 |
238 | /@esbuild/netbsd-x64/0.17.19:
239 | resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==}
240 | engines: {node: '>=12'}
241 | cpu: [x64]
242 | os: [netbsd]
243 | requiresBuild: true
244 | dev: true
245 | optional: true
246 |
247 | /@esbuild/openbsd-x64/0.17.19:
248 | resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==}
249 | engines: {node: '>=12'}
250 | cpu: [x64]
251 | os: [openbsd]
252 | requiresBuild: true
253 | dev: true
254 | optional: true
255 |
256 | /@esbuild/sunos-x64/0.17.19:
257 | resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==}
258 | engines: {node: '>=12'}
259 | cpu: [x64]
260 | os: [sunos]
261 | requiresBuild: true
262 | dev: true
263 | optional: true
264 |
265 | /@esbuild/win32-arm64/0.17.19:
266 | resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==}
267 | engines: {node: '>=12'}
268 | cpu: [arm64]
269 | os: [win32]
270 | requiresBuild: true
271 | dev: true
272 | optional: true
273 |
274 | /@esbuild/win32-ia32/0.17.19:
275 | resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==}
276 | engines: {node: '>=12'}
277 | cpu: [ia32]
278 | os: [win32]
279 | requiresBuild: true
280 | dev: true
281 | optional: true
282 |
283 | /@esbuild/win32-x64/0.17.19:
284 | resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==}
285 | engines: {node: '>=12'}
286 | cpu: [x64]
287 | os: [win32]
288 | requiresBuild: true
289 | dev: true
290 | optional: true
291 |
292 | /@eslint-community/eslint-utils/4.4.0_eslint@8.48.0:
293 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
294 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
295 | peerDependencies:
296 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
297 | dependencies:
298 | eslint: 8.48.0
299 | eslint-visitor-keys: 3.4.3
300 | dev: true
301 |
302 | /@eslint-community/regexpp/4.8.0:
303 | resolution: {integrity: sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==}
304 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
305 | dev: true
306 |
307 | /@eslint/eslintrc/2.1.2:
308 | resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==}
309 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
310 | dependencies:
311 | ajv: 6.12.6
312 | debug: 4.3.4
313 | espree: 9.6.1
314 | globals: 13.21.0
315 | ignore: 5.2.4
316 | import-fresh: 3.3.0
317 | js-yaml: 4.1.0
318 | minimatch: 3.1.2
319 | strip-json-comments: 3.1.1
320 | transitivePeerDependencies:
321 | - supports-color
322 | dev: true
323 |
324 | /@eslint/js/8.48.0:
325 | resolution: {integrity: sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==}
326 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
327 | dev: true
328 |
329 | /@floating-ui/core/1.2.6:
330 | resolution: {integrity: sha512-EvYTiXet5XqweYGClEmpu3BoxmsQ4hkj3QaYA6qEnigCWffTP3vNRwBReTdrwDwo7OoJ3wM8Uoe9Uk4n+d4hfg==}
331 | dev: false
332 |
333 | /@floating-ui/dom/1.2.9:
334 | resolution: {integrity: sha512-sosQxsqgxMNkV3C+3UqTS6LxP7isRLwX8WMepp843Rb3/b0Wz8+MdUkxJksByip3C2WwLugLHN1b4ibn//zKwQ==}
335 | dependencies:
336 | '@floating-ui/core': 1.2.6
337 | dev: false
338 |
339 | /@humanwhocodes/config-array/0.11.11:
340 | resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==}
341 | engines: {node: '>=10.10.0'}
342 | dependencies:
343 | '@humanwhocodes/object-schema': 1.2.1
344 | debug: 4.3.4
345 | minimatch: 3.1.2
346 | transitivePeerDependencies:
347 | - supports-color
348 | dev: true
349 |
350 | /@humanwhocodes/module-importer/1.0.1:
351 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
352 | engines: {node: '>=12.22'}
353 | dev: true
354 |
355 | /@humanwhocodes/object-schema/1.2.1:
356 | resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==}
357 | dev: true
358 |
359 | /@jridgewell/sourcemap-codec/1.4.15:
360 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
361 |
362 | /@nodelib/fs.scandir/2.1.5:
363 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
364 | engines: {node: '>= 8'}
365 | dependencies:
366 | '@nodelib/fs.stat': 2.0.5
367 | run-parallel: 1.2.0
368 | dev: true
369 |
370 | /@nodelib/fs.stat/2.0.5:
371 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
372 | engines: {node: '>= 8'}
373 | dev: true
374 |
375 | /@nodelib/fs.walk/1.2.8:
376 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
377 | engines: {node: '>= 8'}
378 | dependencies:
379 | '@nodelib/fs.scandir': 2.1.5
380 | fastq: 1.15.0
381 | dev: true
382 |
383 | /@sxzz/popperjs-es/2.11.7:
384 | resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==}
385 | dev: false
386 |
387 | /@types/json-schema/7.0.12:
388 | resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==}
389 | dev: true
390 |
391 | /@types/json5/0.0.29:
392 | resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
393 | dev: true
394 |
395 | /@types/lodash-es/4.17.7:
396 | resolution: {integrity: sha512-z0ptr6UI10VlU6l5MYhGwS4mC8DZyYer2mCoyysZtSF7p26zOX8UpbrV0YpNYLGS8K4PUFIyEr62IMFFjveSiQ==}
397 | dependencies:
398 | '@types/lodash': 4.14.195
399 | dev: false
400 |
401 | /@types/lodash/4.14.195:
402 | resolution: {integrity: sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg==}
403 | dev: false
404 |
405 | /@types/node/18.17.13:
406 | resolution: {integrity: sha512-SlLPDDe6YQl1JnQQy4hgsuJeo5q5c1TBU4be4jeBLXsqpjoDbfb0HesSfhMwnaxfSJ4txtfzJzW5/x/43fkkfQ==}
407 | dev: true
408 |
409 | /@types/semver/7.5.1:
410 | resolution: {integrity: sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==}
411 | dev: true
412 |
413 | /@types/web-bluetooth/0.0.16:
414 | resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==}
415 | dev: false
416 |
417 | /@typescript-eslint/eslint-plugin/5.62.0_udpy2hvbsts6xtoymztsifbu7e:
418 | resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==}
419 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
420 | peerDependencies:
421 | '@typescript-eslint/parser': ^5.0.0
422 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
423 | typescript: '*'
424 | peerDependenciesMeta:
425 | typescript:
426 | optional: true
427 | dependencies:
428 | '@eslint-community/regexpp': 4.8.0
429 | '@typescript-eslint/parser': 5.62.0_jkonsiqll5kf7uvjobvewtpypa
430 | '@typescript-eslint/scope-manager': 5.62.0
431 | '@typescript-eslint/type-utils': 5.62.0_jkonsiqll5kf7uvjobvewtpypa
432 | '@typescript-eslint/utils': 5.62.0_jkonsiqll5kf7uvjobvewtpypa
433 | debug: 4.3.4
434 | eslint: 8.48.0
435 | graphemer: 1.4.0
436 | ignore: 5.2.4
437 | natural-compare-lite: 1.4.0
438 | semver: 7.5.1
439 | tsutils: 3.21.0_typescript@5.1.3
440 | typescript: 5.1.3
441 | transitivePeerDependencies:
442 | - supports-color
443 | dev: true
444 |
445 | /@typescript-eslint/parser/5.62.0_jkonsiqll5kf7uvjobvewtpypa:
446 | resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==}
447 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
448 | peerDependencies:
449 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
450 | typescript: '*'
451 | peerDependenciesMeta:
452 | typescript:
453 | optional: true
454 | dependencies:
455 | '@typescript-eslint/scope-manager': 5.62.0
456 | '@typescript-eslint/types': 5.62.0
457 | '@typescript-eslint/typescript-estree': 5.62.0_typescript@5.1.3
458 | debug: 4.3.4
459 | eslint: 8.48.0
460 | typescript: 5.1.3
461 | transitivePeerDependencies:
462 | - supports-color
463 | dev: true
464 |
465 | /@typescript-eslint/scope-manager/5.62.0:
466 | resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==}
467 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
468 | dependencies:
469 | '@typescript-eslint/types': 5.62.0
470 | '@typescript-eslint/visitor-keys': 5.62.0
471 | dev: true
472 |
473 | /@typescript-eslint/type-utils/5.62.0_jkonsiqll5kf7uvjobvewtpypa:
474 | resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==}
475 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
476 | peerDependencies:
477 | eslint: '*'
478 | typescript: '*'
479 | peerDependenciesMeta:
480 | typescript:
481 | optional: true
482 | dependencies:
483 | '@typescript-eslint/typescript-estree': 5.62.0_typescript@5.1.3
484 | '@typescript-eslint/utils': 5.62.0_jkonsiqll5kf7uvjobvewtpypa
485 | debug: 4.3.4
486 | eslint: 8.48.0
487 | tsutils: 3.21.0_typescript@5.1.3
488 | typescript: 5.1.3
489 | transitivePeerDependencies:
490 | - supports-color
491 | dev: true
492 |
493 | /@typescript-eslint/types/5.62.0:
494 | resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==}
495 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
496 | dev: true
497 |
498 | /@typescript-eslint/typescript-estree/5.62.0_typescript@5.1.3:
499 | resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==}
500 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
501 | peerDependencies:
502 | typescript: '*'
503 | peerDependenciesMeta:
504 | typescript:
505 | optional: true
506 | dependencies:
507 | '@typescript-eslint/types': 5.62.0
508 | '@typescript-eslint/visitor-keys': 5.62.0
509 | debug: 4.3.4
510 | globby: 11.1.0
511 | is-glob: 4.0.3
512 | semver: 7.5.1
513 | tsutils: 3.21.0_typescript@5.1.3
514 | typescript: 5.1.3
515 | transitivePeerDependencies:
516 | - supports-color
517 | dev: true
518 |
519 | /@typescript-eslint/utils/5.62.0_jkonsiqll5kf7uvjobvewtpypa:
520 | resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==}
521 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
522 | peerDependencies:
523 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
524 | dependencies:
525 | '@eslint-community/eslint-utils': 4.4.0_eslint@8.48.0
526 | '@types/json-schema': 7.0.12
527 | '@types/semver': 7.5.1
528 | '@typescript-eslint/scope-manager': 5.62.0
529 | '@typescript-eslint/types': 5.62.0
530 | '@typescript-eslint/typescript-estree': 5.62.0_typescript@5.1.3
531 | eslint: 8.48.0
532 | eslint-scope: 5.1.1
533 | semver: 7.5.4
534 | transitivePeerDependencies:
535 | - supports-color
536 | - typescript
537 | dev: true
538 |
539 | /@typescript-eslint/visitor-keys/5.62.0:
540 | resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==}
541 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
542 | dependencies:
543 | '@typescript-eslint/types': 5.62.0
544 | eslint-visitor-keys: 3.4.3
545 | dev: true
546 |
547 | /@vitejs/plugin-vue/4.2.3_vite@4.3.9+vue@3.3.4:
548 | resolution: {integrity: sha512-R6JDUfiZbJA9cMiguQ7jxALsgiprjBeHL5ikpXfJCH62pPHtI+JdJ5xWj6Ev73yXSlYl86+blXn1kZHQ7uElxw==}
549 | engines: {node: ^14.18.0 || >=16.0.0}
550 | peerDependencies:
551 | vite: ^4.0.0
552 | vue: ^3.2.25
553 | dependencies:
554 | vite: 4.3.9_3hkcy4cv6b7vyfga2q67aben5q
555 | vue: 3.3.4
556 | dev: true
557 |
558 | /@volar/language-core/1.4.1:
559 | resolution: {integrity: sha512-EIY+Swv+TjsWpxOxujjMf1ZXqOjg9MT2VMXZ+1dKva0wD8W0L6EtptFFcCJdBbcKmGMFkr57Qzz9VNMWhs3jXQ==}
560 | dependencies:
561 | '@volar/source-map': 1.4.1
562 | dev: true
563 |
564 | /@volar/source-map/1.4.1:
565 | resolution: {integrity: sha512-bZ46ad72dsbzuOWPUtJjBXkzSQzzSejuR3CT81+GvTEI2E994D8JPXzM3tl98zyCNnjgs4OkRyliImL1dvJ5BA==}
566 | dependencies:
567 | muggle-string: 0.2.2
568 | dev: true
569 |
570 | /@volar/typescript/1.4.1-patch.2_typescript@5.1.3:
571 | resolution: {integrity: sha512-lPFYaGt8OdMEzNGJJChF40uYqMO4Z/7Q9fHPQC/NRVtht43KotSXLrkPandVVMf9aPbiJ059eAT+fwHGX16k4w==}
572 | peerDependencies:
573 | typescript: '*'
574 | dependencies:
575 | '@volar/language-core': 1.4.1
576 | typescript: 5.1.3
577 | dev: true
578 |
579 | /@volar/vue-language-core/1.6.5:
580 | resolution: {integrity: sha512-IF2b6hW4QAxfsLd5mePmLgtkXzNi+YnH6ltCd80gb7+cbdpFMjM1I+w+nSg2kfBTyfu+W8useCZvW89kPTBpzg==}
581 | dependencies:
582 | '@volar/language-core': 1.4.1
583 | '@volar/source-map': 1.4.1
584 | '@vue/compiler-dom': 3.3.4
585 | '@vue/compiler-sfc': 3.3.4
586 | '@vue/reactivity': 3.3.4
587 | '@vue/shared': 3.3.4
588 | minimatch: 9.0.1
589 | muggle-string: 0.2.2
590 | vue-template-compiler: 2.7.14
591 | dev: true
592 |
593 | /@volar/vue-typescript/1.6.5_typescript@5.1.3:
594 | resolution: {integrity: sha512-er9rVClS4PHztMUmtPMDTl+7c7JyrxweKSAEe/o/Noeq2bQx6v3/jZHVHBe8ZNUti5ubJL/+Tg8L3bzmlalV8A==}
595 | peerDependencies:
596 | typescript: '*'
597 | dependencies:
598 | '@volar/typescript': 1.4.1-patch.2_typescript@5.1.3
599 | '@volar/vue-language-core': 1.6.5
600 | typescript: 5.1.3
601 | dev: true
602 |
603 | /@vue/compiler-core/3.3.4:
604 | resolution: {integrity: sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==}
605 | dependencies:
606 | '@babel/parser': 7.22.5
607 | '@vue/shared': 3.3.4
608 | estree-walker: 2.0.2
609 | source-map-js: 1.0.2
610 |
611 | /@vue/compiler-dom/3.3.4:
612 | resolution: {integrity: sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==}
613 | dependencies:
614 | '@vue/compiler-core': 3.3.4
615 | '@vue/shared': 3.3.4
616 |
617 | /@vue/compiler-sfc/3.3.4:
618 | resolution: {integrity: sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==}
619 | dependencies:
620 | '@babel/parser': 7.22.5
621 | '@vue/compiler-core': 3.3.4
622 | '@vue/compiler-dom': 3.3.4
623 | '@vue/compiler-ssr': 3.3.4
624 | '@vue/reactivity-transform': 3.3.4
625 | '@vue/shared': 3.3.4
626 | estree-walker: 2.0.2
627 | magic-string: 0.30.0
628 | postcss: 8.4.24
629 | source-map-js: 1.0.2
630 |
631 | /@vue/compiler-ssr/3.3.4:
632 | resolution: {integrity: sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==}
633 | dependencies:
634 | '@vue/compiler-dom': 3.3.4
635 | '@vue/shared': 3.3.4
636 |
637 | /@vue/devtools-api/6.5.0:
638 | resolution: {integrity: sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==}
639 | dev: false
640 |
641 | /@vue/reactivity-transform/3.3.4:
642 | resolution: {integrity: sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==}
643 | dependencies:
644 | '@babel/parser': 7.22.5
645 | '@vue/compiler-core': 3.3.4
646 | '@vue/shared': 3.3.4
647 | estree-walker: 2.0.2
648 | magic-string: 0.30.0
649 |
650 | /@vue/reactivity/3.3.4:
651 | resolution: {integrity: sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==}
652 | dependencies:
653 | '@vue/shared': 3.3.4
654 |
655 | /@vue/runtime-core/3.3.4:
656 | resolution: {integrity: sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==}
657 | dependencies:
658 | '@vue/reactivity': 3.3.4
659 | '@vue/shared': 3.3.4
660 |
661 | /@vue/runtime-dom/3.3.4:
662 | resolution: {integrity: sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==}
663 | dependencies:
664 | '@vue/runtime-core': 3.3.4
665 | '@vue/shared': 3.3.4
666 | csstype: 3.1.2
667 |
668 | /@vue/server-renderer/3.3.4_vue@3.3.4:
669 | resolution: {integrity: sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==}
670 | peerDependencies:
671 | vue: 3.3.4
672 | dependencies:
673 | '@vue/compiler-ssr': 3.3.4
674 | '@vue/shared': 3.3.4
675 | vue: 3.3.4
676 |
677 | /@vue/shared/3.3.4:
678 | resolution: {integrity: sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==}
679 |
680 | /@vueuse/core/9.13.0_vue@3.3.4:
681 | resolution: {integrity: sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==}
682 | dependencies:
683 | '@types/web-bluetooth': 0.0.16
684 | '@vueuse/metadata': 9.13.0
685 | '@vueuse/shared': 9.13.0_vue@3.3.4
686 | vue-demi: 0.14.5_vue@3.3.4
687 | transitivePeerDependencies:
688 | - '@vue/composition-api'
689 | - vue
690 | dev: false
691 |
692 | /@vueuse/metadata/9.13.0:
693 | resolution: {integrity: sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==}
694 | dev: false
695 |
696 | /@vueuse/shared/9.13.0_vue@3.3.4:
697 | resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==}
698 | dependencies:
699 | vue-demi: 0.14.5_vue@3.3.4
700 | transitivePeerDependencies:
701 | - '@vue/composition-api'
702 | - vue
703 | dev: false
704 |
705 | /acorn-jsx/5.3.2_acorn@8.10.0:
706 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
707 | peerDependencies:
708 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
709 | dependencies:
710 | acorn: 8.10.0
711 | dev: true
712 |
713 | /acorn/8.10.0:
714 | resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==}
715 | engines: {node: '>=0.4.0'}
716 | hasBin: true
717 | dev: true
718 |
719 | /ajv/6.12.6:
720 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
721 | dependencies:
722 | fast-deep-equal: 3.1.3
723 | fast-json-stable-stringify: 2.1.0
724 | json-schema-traverse: 0.4.1
725 | uri-js: 4.4.1
726 | dev: true
727 |
728 | /ansi-regex/5.0.1:
729 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
730 | engines: {node: '>=8'}
731 | dev: true
732 |
733 | /ansi-styles/4.3.0:
734 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
735 | engines: {node: '>=8'}
736 | dependencies:
737 | color-convert: 2.0.1
738 | dev: true
739 |
740 | /anymatch/3.1.3:
741 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
742 | engines: {node: '>= 8'}
743 | dependencies:
744 | normalize-path: 3.0.0
745 | picomatch: 2.3.1
746 | dev: true
747 |
748 | /argparse/2.0.1:
749 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
750 | dev: true
751 |
752 | /array-buffer-byte-length/1.0.0:
753 | resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==}
754 | dependencies:
755 | call-bind: 1.0.2
756 | is-array-buffer: 3.0.2
757 | dev: true
758 |
759 | /array-includes/3.1.6:
760 | resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==}
761 | engines: {node: '>= 0.4'}
762 | dependencies:
763 | call-bind: 1.0.2
764 | define-properties: 1.2.0
765 | es-abstract: 1.22.1
766 | get-intrinsic: 1.2.1
767 | is-string: 1.0.7
768 | dev: true
769 |
770 | /array-union/1.0.2:
771 | resolution: {integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==}
772 | engines: {node: '>=0.10.0'}
773 | dependencies:
774 | array-uniq: 1.0.3
775 | dev: true
776 |
777 | /array-union/2.1.0:
778 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
779 | engines: {node: '>=8'}
780 | dev: true
781 |
782 | /array-uniq/1.0.3:
783 | resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==}
784 | engines: {node: '>=0.10.0'}
785 | dev: true
786 |
787 | /array.prototype.findlastindex/1.2.3:
788 | resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==}
789 | engines: {node: '>= 0.4'}
790 | dependencies:
791 | call-bind: 1.0.2
792 | define-properties: 1.2.0
793 | es-abstract: 1.22.1
794 | es-shim-unscopables: 1.0.0
795 | get-intrinsic: 1.2.1
796 | dev: true
797 |
798 | /array.prototype.flat/1.3.1:
799 | resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==}
800 | engines: {node: '>= 0.4'}
801 | dependencies:
802 | call-bind: 1.0.2
803 | define-properties: 1.2.0
804 | es-abstract: 1.22.1
805 | es-shim-unscopables: 1.0.0
806 | dev: true
807 |
808 | /array.prototype.flatmap/1.3.1:
809 | resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==}
810 | engines: {node: '>= 0.4'}
811 | dependencies:
812 | call-bind: 1.0.2
813 | define-properties: 1.2.0
814 | es-abstract: 1.22.1
815 | es-shim-unscopables: 1.0.0
816 | dev: true
817 |
818 | /arraybuffer.prototype.slice/1.0.1:
819 | resolution: {integrity: sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==}
820 | engines: {node: '>= 0.4'}
821 | dependencies:
822 | array-buffer-byte-length: 1.0.0
823 | call-bind: 1.0.2
824 | define-properties: 1.2.0
825 | get-intrinsic: 1.2.1
826 | is-array-buffer: 3.0.2
827 | is-shared-array-buffer: 1.0.2
828 | dev: true
829 |
830 | /async-validator/4.2.5:
831 | resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==}
832 | dev: false
833 |
834 | /async/3.2.4:
835 | resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==}
836 | dev: true
837 |
838 | /available-typed-arrays/1.0.5:
839 | resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==}
840 | engines: {node: '>= 0.4'}
841 | dev: true
842 |
843 | /balanced-match/1.0.2:
844 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
845 | dev: true
846 |
847 | /binary-extensions/2.2.0:
848 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
849 | engines: {node: '>=8'}
850 | dev: true
851 |
852 | /boolbase/1.0.0:
853 | resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
854 | dev: true
855 |
856 | /brace-expansion/1.1.11:
857 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
858 | dependencies:
859 | balanced-match: 1.0.2
860 | concat-map: 0.0.1
861 | dev: true
862 |
863 | /brace-expansion/2.0.1:
864 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
865 | dependencies:
866 | balanced-match: 1.0.2
867 | dev: true
868 |
869 | /braces/3.0.2:
870 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
871 | engines: {node: '>=8'}
872 | dependencies:
873 | fill-range: 7.0.1
874 | dev: true
875 |
876 | /call-bind/1.0.2:
877 | resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==}
878 | dependencies:
879 | function-bind: 1.1.1
880 | get-intrinsic: 1.2.1
881 | dev: true
882 |
883 | /callsites/3.1.0:
884 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
885 | engines: {node: '>=6'}
886 | dev: true
887 |
888 | /chalk/4.1.2:
889 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
890 | engines: {node: '>=10'}
891 | dependencies:
892 | ansi-styles: 4.3.0
893 | supports-color: 7.2.0
894 | dev: true
895 |
896 | /chokidar/3.5.3:
897 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
898 | engines: {node: '>= 8.10.0'}
899 | dependencies:
900 | anymatch: 3.1.3
901 | braces: 3.0.2
902 | glob-parent: 5.1.2
903 | is-binary-path: 2.1.0
904 | is-glob: 4.0.3
905 | normalize-path: 3.0.0
906 | readdirp: 3.6.0
907 | optionalDependencies:
908 | fsevents: 2.3.2
909 | dev: true
910 |
911 | /color-convert/2.0.1:
912 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
913 | engines: {node: '>=7.0.0'}
914 | dependencies:
915 | color-name: 1.1.4
916 | dev: true
917 |
918 | /color-name/1.1.4:
919 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
920 | dev: true
921 |
922 | /commander/11.0.0:
923 | resolution: {integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==}
924 | engines: {node: '>=16'}
925 | dev: true
926 |
927 | /commondir/1.0.1:
928 | resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==}
929 | dev: true
930 |
931 | /concat-map/0.0.1:
932 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
933 | dev: true
934 |
935 | /cross-spawn/7.0.3:
936 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
937 | engines: {node: '>= 8'}
938 | dependencies:
939 | path-key: 3.1.1
940 | shebang-command: 2.0.0
941 | which: 2.0.2
942 | dev: true
943 |
944 | /cssesc/3.0.0:
945 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
946 | engines: {node: '>=4'}
947 | hasBin: true
948 | dev: true
949 |
950 | /csstype/3.1.2:
951 | resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==}
952 |
953 | /dayjs/1.11.8:
954 | resolution: {integrity: sha512-LcgxzFoWMEPO7ggRv1Y2N31hUf2R0Vj7fuy/m+Bg1K8rr+KAs1AEy4y9jd5DXe8pbHgX+srkHNS7TH6Q6ZhYeQ==}
955 | dev: false
956 |
957 | /de-indent/1.0.2:
958 | resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==}
959 | dev: true
960 |
961 | /debug/3.2.7:
962 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
963 | peerDependencies:
964 | supports-color: '*'
965 | peerDependenciesMeta:
966 | supports-color:
967 | optional: true
968 | dependencies:
969 | ms: 2.1.3
970 | dev: true
971 |
972 | /debug/4.3.4:
973 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
974 | engines: {node: '>=6.0'}
975 | peerDependencies:
976 | supports-color: '*'
977 | peerDependenciesMeta:
978 | supports-color:
979 | optional: true
980 | dependencies:
981 | ms: 2.1.2
982 | dev: true
983 |
984 | /deep-is/0.1.4:
985 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
986 | dev: true
987 |
988 | /define-properties/1.2.0:
989 | resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==}
990 | engines: {node: '>= 0.4'}
991 | dependencies:
992 | has-property-descriptors: 1.0.0
993 | object-keys: 1.1.1
994 | dev: true
995 |
996 | /dir-glob/3.0.1:
997 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
998 | engines: {node: '>=8'}
999 | dependencies:
1000 | path-type: 4.0.0
1001 | dev: true
1002 |
1003 | /doctrine/2.1.0:
1004 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
1005 | engines: {node: '>=0.10.0'}
1006 | dependencies:
1007 | esutils: 2.0.3
1008 | dev: true
1009 |
1010 | /doctrine/3.0.0:
1011 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
1012 | engines: {node: '>=6.0.0'}
1013 | dependencies:
1014 | esutils: 2.0.3
1015 | dev: true
1016 |
1017 | /element-plus/2.3.6_vue@3.3.4:
1018 | resolution: {integrity: sha512-GLz0pXUYI2zRfIgyI6W7SWmHk6dSEikP9yR++hsQUyy63+WjutoiGpA3SZD4cGPSXUzRFeKfVr8CnYhK5LqXZw==}
1019 | peerDependencies:
1020 | vue: ^3.2.0
1021 | dependencies:
1022 | '@ctrl/tinycolor': 3.6.0
1023 | '@element-plus/icons-vue': 2.1.0_vue@3.3.4
1024 | '@floating-ui/dom': 1.2.9
1025 | '@popperjs/core': /@sxzz/popperjs-es/2.11.7
1026 | '@types/lodash': 4.14.195
1027 | '@types/lodash-es': 4.17.7
1028 | '@vueuse/core': 9.13.0_vue@3.3.4
1029 | async-validator: 4.2.5
1030 | dayjs: 1.11.8
1031 | escape-html: 1.0.3
1032 | lodash: 4.17.21
1033 | lodash-es: 4.17.21
1034 | lodash-unified: 1.0.3_tknf7errc3xdqocd3ryzzla7vq
1035 | memoize-one: 6.0.0
1036 | normalize-wheel-es: 1.2.0
1037 | vue: 3.3.4
1038 | transitivePeerDependencies:
1039 | - '@vue/composition-api'
1040 | dev: false
1041 |
1042 | /email-addresses/5.0.0:
1043 | resolution: {integrity: sha512-4OIPYlA6JXqtVn8zpHpGiI7vE6EQOAg16aGnDMIAlZVinnoZ8208tW1hAbjWydgN/4PLTT9q+O1K6AH/vALJGw==}
1044 | dev: true
1045 |
1046 | /es-abstract/1.22.1:
1047 | resolution: {integrity: sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==}
1048 | engines: {node: '>= 0.4'}
1049 | dependencies:
1050 | array-buffer-byte-length: 1.0.0
1051 | arraybuffer.prototype.slice: 1.0.1
1052 | available-typed-arrays: 1.0.5
1053 | call-bind: 1.0.2
1054 | es-set-tostringtag: 2.0.1
1055 | es-to-primitive: 1.2.1
1056 | function.prototype.name: 1.1.6
1057 | get-intrinsic: 1.2.1
1058 | get-symbol-description: 1.0.0
1059 | globalthis: 1.0.3
1060 | gopd: 1.0.1
1061 | has: 1.0.3
1062 | has-property-descriptors: 1.0.0
1063 | has-proto: 1.0.1
1064 | has-symbols: 1.0.3
1065 | internal-slot: 1.0.5
1066 | is-array-buffer: 3.0.2
1067 | is-callable: 1.2.7
1068 | is-negative-zero: 2.0.2
1069 | is-regex: 1.1.4
1070 | is-shared-array-buffer: 1.0.2
1071 | is-string: 1.0.7
1072 | is-typed-array: 1.1.12
1073 | is-weakref: 1.0.2
1074 | object-inspect: 1.12.3
1075 | object-keys: 1.1.1
1076 | object.assign: 4.1.4
1077 | regexp.prototype.flags: 1.5.0
1078 | safe-array-concat: 1.0.0
1079 | safe-regex-test: 1.0.0
1080 | string.prototype.trim: 1.2.7
1081 | string.prototype.trimend: 1.0.6
1082 | string.prototype.trimstart: 1.0.6
1083 | typed-array-buffer: 1.0.0
1084 | typed-array-byte-length: 1.0.0
1085 | typed-array-byte-offset: 1.0.0
1086 | typed-array-length: 1.0.4
1087 | unbox-primitive: 1.0.2
1088 | which-typed-array: 1.1.11
1089 | dev: true
1090 |
1091 | /es-set-tostringtag/2.0.1:
1092 | resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==}
1093 | engines: {node: '>= 0.4'}
1094 | dependencies:
1095 | get-intrinsic: 1.2.1
1096 | has: 1.0.3
1097 | has-tostringtag: 1.0.0
1098 | dev: true
1099 |
1100 | /es-shim-unscopables/1.0.0:
1101 | resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==}
1102 | dependencies:
1103 | has: 1.0.3
1104 | dev: true
1105 |
1106 | /es-to-primitive/1.2.1:
1107 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==}
1108 | engines: {node: '>= 0.4'}
1109 | dependencies:
1110 | is-callable: 1.2.7
1111 | is-date-object: 1.0.5
1112 | is-symbol: 1.0.4
1113 | dev: true
1114 |
1115 | /esbuild/0.17.19:
1116 | resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==}
1117 | engines: {node: '>=12'}
1118 | hasBin: true
1119 | requiresBuild: true
1120 | optionalDependencies:
1121 | '@esbuild/android-arm': 0.17.19
1122 | '@esbuild/android-arm64': 0.17.19
1123 | '@esbuild/android-x64': 0.17.19
1124 | '@esbuild/darwin-arm64': 0.17.19
1125 | '@esbuild/darwin-x64': 0.17.19
1126 | '@esbuild/freebsd-arm64': 0.17.19
1127 | '@esbuild/freebsd-x64': 0.17.19
1128 | '@esbuild/linux-arm': 0.17.19
1129 | '@esbuild/linux-arm64': 0.17.19
1130 | '@esbuild/linux-ia32': 0.17.19
1131 | '@esbuild/linux-loong64': 0.17.19
1132 | '@esbuild/linux-mips64el': 0.17.19
1133 | '@esbuild/linux-ppc64': 0.17.19
1134 | '@esbuild/linux-riscv64': 0.17.19
1135 | '@esbuild/linux-s390x': 0.17.19
1136 | '@esbuild/linux-x64': 0.17.19
1137 | '@esbuild/netbsd-x64': 0.17.19
1138 | '@esbuild/openbsd-x64': 0.17.19
1139 | '@esbuild/sunos-x64': 0.17.19
1140 | '@esbuild/win32-arm64': 0.17.19
1141 | '@esbuild/win32-ia32': 0.17.19
1142 | '@esbuild/win32-x64': 0.17.19
1143 | dev: true
1144 |
1145 | /escape-html/1.0.3:
1146 | resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
1147 | dev: false
1148 |
1149 | /escape-string-regexp/1.0.5:
1150 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
1151 | engines: {node: '>=0.8.0'}
1152 | dev: true
1153 |
1154 | /escape-string-regexp/4.0.0:
1155 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
1156 | engines: {node: '>=10'}
1157 | dev: true
1158 |
1159 | /eslint-config-prettier/8.10.0_eslint@8.48.0:
1160 | resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==}
1161 | hasBin: true
1162 | peerDependencies:
1163 | eslint: '>=7.0.0'
1164 | dependencies:
1165 | eslint: 8.48.0
1166 | dev: true
1167 |
1168 | /eslint-define-config/1.23.0:
1169 | resolution: {integrity: sha512-4mMyu0JuBkQHsCtR+42irIQdFLmLIW+pMAVcyOV/gZRL4O1R8iuH0eMG3oL3Cbi1eo9fDAfT5CIHVHgdyxcf6w==}
1170 | engines: {node: ^16.13.0 || >=18.0.0, npm: '>=7.0.0', pnpm: '>= 8.6.0'}
1171 | dev: true
1172 |
1173 | /eslint-import-resolver-node/0.3.9:
1174 | resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==}
1175 | dependencies:
1176 | debug: 3.2.7
1177 | is-core-module: 2.13.0
1178 | resolve: 1.22.4
1179 | transitivePeerDependencies:
1180 | - supports-color
1181 | dev: true
1182 |
1183 | /eslint-module-utils/2.8.0_n4v6wwusattt7fppostwrfgz5a:
1184 | resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==}
1185 | engines: {node: '>=4'}
1186 | peerDependencies:
1187 | '@typescript-eslint/parser': '*'
1188 | eslint: '*'
1189 | eslint-import-resolver-node: '*'
1190 | eslint-import-resolver-typescript: '*'
1191 | eslint-import-resolver-webpack: '*'
1192 | peerDependenciesMeta:
1193 | '@typescript-eslint/parser':
1194 | optional: true
1195 | eslint:
1196 | optional: true
1197 | eslint-import-resolver-node:
1198 | optional: true
1199 | eslint-import-resolver-typescript:
1200 | optional: true
1201 | eslint-import-resolver-webpack:
1202 | optional: true
1203 | dependencies:
1204 | '@typescript-eslint/parser': 5.62.0_jkonsiqll5kf7uvjobvewtpypa
1205 | debug: 3.2.7
1206 | eslint: 8.48.0
1207 | eslint-import-resolver-node: 0.3.9
1208 | transitivePeerDependencies:
1209 | - supports-color
1210 | dev: true
1211 |
1212 | /eslint-plugin-import/2.28.1_ean2qamlavtp6bo3zeco4caumq:
1213 | resolution: {integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==}
1214 | engines: {node: '>=4'}
1215 | peerDependencies:
1216 | '@typescript-eslint/parser': '*'
1217 | eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8
1218 | peerDependenciesMeta:
1219 | '@typescript-eslint/parser':
1220 | optional: true
1221 | dependencies:
1222 | '@typescript-eslint/parser': 5.62.0_jkonsiqll5kf7uvjobvewtpypa
1223 | array-includes: 3.1.6
1224 | array.prototype.findlastindex: 1.2.3
1225 | array.prototype.flat: 1.3.1
1226 | array.prototype.flatmap: 1.3.1
1227 | debug: 3.2.7
1228 | doctrine: 2.1.0
1229 | eslint: 8.48.0
1230 | eslint-import-resolver-node: 0.3.9
1231 | eslint-module-utils: 2.8.0_n4v6wwusattt7fppostwrfgz5a
1232 | has: 1.0.3
1233 | is-core-module: 2.13.0
1234 | is-glob: 4.0.3
1235 | minimatch: 3.1.2
1236 | object.fromentries: 2.0.7
1237 | object.groupby: 1.0.1
1238 | object.values: 1.1.7
1239 | semver: 6.3.1
1240 | tsconfig-paths: 3.14.2
1241 | transitivePeerDependencies:
1242 | - eslint-import-resolver-typescript
1243 | - eslint-import-resolver-webpack
1244 | - supports-color
1245 | dev: true
1246 |
1247 | /eslint-plugin-prettier/4.2.1_b7j5i5eung22avfvwixh6yzuzu:
1248 | resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==}
1249 | engines: {node: '>=12.0.0'}
1250 | peerDependencies:
1251 | eslint: '>=7.28.0'
1252 | eslint-config-prettier: '*'
1253 | prettier: '>=2.0.0'
1254 | peerDependenciesMeta:
1255 | eslint-config-prettier:
1256 | optional: true
1257 | dependencies:
1258 | eslint: 8.48.0
1259 | eslint-config-prettier: 8.10.0_eslint@8.48.0
1260 | prettier: 2.8.8
1261 | prettier-linter-helpers: 1.0.0
1262 | dev: true
1263 |
1264 | /eslint-plugin-simple-import-sort/8.0.0_eslint@8.48.0:
1265 | resolution: {integrity: sha512-bXgJQ+lqhtQBCuWY/FUWdB27j4+lqcvXv5rUARkzbeWLwea+S5eBZEQrhnO+WgX3ZoJHVj0cn943iyXwByHHQw==}
1266 | peerDependencies:
1267 | eslint: '>=5.0.0'
1268 | dependencies:
1269 | eslint: 8.48.0
1270 | dev: true
1271 |
1272 | /eslint-plugin-vue/9.17.0_eslint@8.48.0:
1273 | resolution: {integrity: sha512-r7Bp79pxQk9I5XDP0k2dpUC7Ots3OSWgvGZNu3BxmKK6Zg7NgVtcOB6OCna5Kb9oQwJPl5hq183WD0SY5tZtIQ==}
1274 | engines: {node: ^14.17.0 || >=16.0.0}
1275 | peerDependencies:
1276 | eslint: ^6.2.0 || ^7.0.0 || ^8.0.0
1277 | dependencies:
1278 | '@eslint-community/eslint-utils': 4.4.0_eslint@8.48.0
1279 | eslint: 8.48.0
1280 | natural-compare: 1.4.0
1281 | nth-check: 2.1.1
1282 | postcss-selector-parser: 6.0.13
1283 | semver: 7.5.4
1284 | vue-eslint-parser: 9.3.1_eslint@8.48.0
1285 | xml-name-validator: 4.0.0
1286 | transitivePeerDependencies:
1287 | - supports-color
1288 | dev: true
1289 |
1290 | /eslint-scope/5.1.1:
1291 | resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
1292 | engines: {node: '>=8.0.0'}
1293 | dependencies:
1294 | esrecurse: 4.3.0
1295 | estraverse: 4.3.0
1296 | dev: true
1297 |
1298 | /eslint-scope/7.2.2:
1299 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
1300 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1301 | dependencies:
1302 | esrecurse: 4.3.0
1303 | estraverse: 5.3.0
1304 | dev: true
1305 |
1306 | /eslint-visitor-keys/3.4.3:
1307 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
1308 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1309 | dev: true
1310 |
1311 | /eslint/8.48.0:
1312 | resolution: {integrity: sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==}
1313 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1314 | hasBin: true
1315 | dependencies:
1316 | '@eslint-community/eslint-utils': 4.4.0_eslint@8.48.0
1317 | '@eslint-community/regexpp': 4.8.0
1318 | '@eslint/eslintrc': 2.1.2
1319 | '@eslint/js': 8.48.0
1320 | '@humanwhocodes/config-array': 0.11.11
1321 | '@humanwhocodes/module-importer': 1.0.1
1322 | '@nodelib/fs.walk': 1.2.8
1323 | ajv: 6.12.6
1324 | chalk: 4.1.2
1325 | cross-spawn: 7.0.3
1326 | debug: 4.3.4
1327 | doctrine: 3.0.0
1328 | escape-string-regexp: 4.0.0
1329 | eslint-scope: 7.2.2
1330 | eslint-visitor-keys: 3.4.3
1331 | espree: 9.6.1
1332 | esquery: 1.5.0
1333 | esutils: 2.0.3
1334 | fast-deep-equal: 3.1.3
1335 | file-entry-cache: 6.0.1
1336 | find-up: 5.0.0
1337 | glob-parent: 6.0.2
1338 | globals: 13.21.0
1339 | graphemer: 1.4.0
1340 | ignore: 5.2.4
1341 | imurmurhash: 0.1.4
1342 | is-glob: 4.0.3
1343 | is-path-inside: 3.0.3
1344 | js-yaml: 4.1.0
1345 | json-stable-stringify-without-jsonify: 1.0.1
1346 | levn: 0.4.1
1347 | lodash.merge: 4.6.2
1348 | minimatch: 3.1.2
1349 | natural-compare: 1.4.0
1350 | optionator: 0.9.3
1351 | strip-ansi: 6.0.1
1352 | text-table: 0.2.0
1353 | transitivePeerDependencies:
1354 | - supports-color
1355 | dev: true
1356 |
1357 | /espree/9.6.1:
1358 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
1359 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1360 | dependencies:
1361 | acorn: 8.10.0
1362 | acorn-jsx: 5.3.2_acorn@8.10.0
1363 | eslint-visitor-keys: 3.4.3
1364 | dev: true
1365 |
1366 | /esquery/1.5.0:
1367 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==}
1368 | engines: {node: '>=0.10'}
1369 | dependencies:
1370 | estraverse: 5.3.0
1371 | dev: true
1372 |
1373 | /esrecurse/4.3.0:
1374 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
1375 | engines: {node: '>=4.0'}
1376 | dependencies:
1377 | estraverse: 5.3.0
1378 | dev: true
1379 |
1380 | /estraverse/4.3.0:
1381 | resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==}
1382 | engines: {node: '>=4.0'}
1383 | dev: true
1384 |
1385 | /estraverse/5.3.0:
1386 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
1387 | engines: {node: '>=4.0'}
1388 | dev: true
1389 |
1390 | /estree-walker/2.0.2:
1391 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
1392 |
1393 | /esutils/2.0.3:
1394 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
1395 | engines: {node: '>=0.10.0'}
1396 | dev: true
1397 |
1398 | /fast-deep-equal/3.1.3:
1399 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
1400 | dev: true
1401 |
1402 | /fast-diff/1.3.0:
1403 | resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==}
1404 | dev: true
1405 |
1406 | /fast-glob/3.3.1:
1407 | resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==}
1408 | engines: {node: '>=8.6.0'}
1409 | dependencies:
1410 | '@nodelib/fs.stat': 2.0.5
1411 | '@nodelib/fs.walk': 1.2.8
1412 | glob-parent: 5.1.2
1413 | merge2: 1.4.1
1414 | micromatch: 4.0.5
1415 | dev: true
1416 |
1417 | /fast-json-stable-stringify/2.1.0:
1418 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
1419 | dev: true
1420 |
1421 | /fast-levenshtein/2.0.6:
1422 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
1423 | dev: true
1424 |
1425 | /fastq/1.15.0:
1426 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==}
1427 | dependencies:
1428 | reusify: 1.0.4
1429 | dev: true
1430 |
1431 | /file-entry-cache/6.0.1:
1432 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
1433 | engines: {node: ^10.12.0 || >=12.0.0}
1434 | dependencies:
1435 | flat-cache: 3.1.0
1436 | dev: true
1437 |
1438 | /filename-reserved-regex/2.0.0:
1439 | resolution: {integrity: sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==}
1440 | engines: {node: '>=4'}
1441 | dev: true
1442 |
1443 | /filenamify/4.3.0:
1444 | resolution: {integrity: sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==}
1445 | engines: {node: '>=8'}
1446 | dependencies:
1447 | filename-reserved-regex: 2.0.0
1448 | strip-outer: 1.0.1
1449 | trim-repeated: 1.0.0
1450 | dev: true
1451 |
1452 | /fill-range/7.0.1:
1453 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
1454 | engines: {node: '>=8'}
1455 | dependencies:
1456 | to-regex-range: 5.0.1
1457 | dev: true
1458 |
1459 | /find-cache-dir/3.3.2:
1460 | resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==}
1461 | engines: {node: '>=8'}
1462 | dependencies:
1463 | commondir: 1.0.1
1464 | make-dir: 3.1.0
1465 | pkg-dir: 4.2.0
1466 | dev: true
1467 |
1468 | /find-up/4.1.0:
1469 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
1470 | engines: {node: '>=8'}
1471 | dependencies:
1472 | locate-path: 5.0.0
1473 | path-exists: 4.0.0
1474 | dev: true
1475 |
1476 | /find-up/5.0.0:
1477 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
1478 | engines: {node: '>=10'}
1479 | dependencies:
1480 | locate-path: 6.0.0
1481 | path-exists: 4.0.0
1482 | dev: true
1483 |
1484 | /flat-cache/3.1.0:
1485 | resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==}
1486 | engines: {node: '>=12.0.0'}
1487 | dependencies:
1488 | flatted: 3.2.7
1489 | keyv: 4.5.3
1490 | rimraf: 3.0.2
1491 | dev: true
1492 |
1493 | /flatted/3.2.7:
1494 | resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==}
1495 | dev: true
1496 |
1497 | /for-each/0.3.3:
1498 | resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
1499 | dependencies:
1500 | is-callable: 1.2.7
1501 | dev: true
1502 |
1503 | /fs-extra/11.1.1:
1504 | resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==}
1505 | engines: {node: '>=14.14'}
1506 | dependencies:
1507 | graceful-fs: 4.2.11
1508 | jsonfile: 6.1.0
1509 | universalify: 2.0.0
1510 | dev: true
1511 |
1512 | /fs.realpath/1.0.0:
1513 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
1514 | dev: true
1515 |
1516 | /fsevents/2.3.2:
1517 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
1518 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
1519 | os: [darwin]
1520 | requiresBuild: true
1521 | dev: true
1522 | optional: true
1523 |
1524 | /function-bind/1.1.1:
1525 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
1526 | dev: true
1527 |
1528 | /function.prototype.name/1.1.6:
1529 | resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==}
1530 | engines: {node: '>= 0.4'}
1531 | dependencies:
1532 | call-bind: 1.0.2
1533 | define-properties: 1.2.0
1534 | es-abstract: 1.22.1
1535 | functions-have-names: 1.2.3
1536 | dev: true
1537 |
1538 | /functions-have-names/1.2.3:
1539 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
1540 | dev: true
1541 |
1542 | /get-intrinsic/1.2.1:
1543 | resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==}
1544 | dependencies:
1545 | function-bind: 1.1.1
1546 | has: 1.0.3
1547 | has-proto: 1.0.1
1548 | has-symbols: 1.0.3
1549 | dev: true
1550 |
1551 | /get-symbol-description/1.0.0:
1552 | resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==}
1553 | engines: {node: '>= 0.4'}
1554 | dependencies:
1555 | call-bind: 1.0.2
1556 | get-intrinsic: 1.2.1
1557 | dev: true
1558 |
1559 | /gh-pages/6.0.0:
1560 | resolution: {integrity: sha512-FXZWJRsvP/fK2HJGY+Di6FRNHvqFF6gOIELaopDjXXgjeOYSNURcuYwEO/6bwuq6koP5Lnkvnr5GViXzuOB89g==}
1561 | engines: {node: '>=10'}
1562 | hasBin: true
1563 | dependencies:
1564 | async: 3.2.4
1565 | commander: 11.0.0
1566 | email-addresses: 5.0.0
1567 | filenamify: 4.3.0
1568 | find-cache-dir: 3.3.2
1569 | fs-extra: 11.1.1
1570 | globby: 6.1.0
1571 | dev: true
1572 |
1573 | /glob-parent/5.1.2:
1574 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
1575 | engines: {node: '>= 6'}
1576 | dependencies:
1577 | is-glob: 4.0.3
1578 | dev: true
1579 |
1580 | /glob-parent/6.0.2:
1581 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
1582 | engines: {node: '>=10.13.0'}
1583 | dependencies:
1584 | is-glob: 4.0.3
1585 | dev: true
1586 |
1587 | /glob/7.2.3:
1588 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
1589 | dependencies:
1590 | fs.realpath: 1.0.0
1591 | inflight: 1.0.6
1592 | inherits: 2.0.4
1593 | minimatch: 3.1.2
1594 | once: 1.4.0
1595 | path-is-absolute: 1.0.1
1596 | dev: true
1597 |
1598 | /globals/13.21.0:
1599 | resolution: {integrity: sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==}
1600 | engines: {node: '>=8'}
1601 | dependencies:
1602 | type-fest: 0.20.2
1603 | dev: true
1604 |
1605 | /globalthis/1.0.3:
1606 | resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==}
1607 | engines: {node: '>= 0.4'}
1608 | dependencies:
1609 | define-properties: 1.2.0
1610 | dev: true
1611 |
1612 | /globby/11.1.0:
1613 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
1614 | engines: {node: '>=10'}
1615 | dependencies:
1616 | array-union: 2.1.0
1617 | dir-glob: 3.0.1
1618 | fast-glob: 3.3.1
1619 | ignore: 5.2.4
1620 | merge2: 1.4.1
1621 | slash: 3.0.0
1622 | dev: true
1623 |
1624 | /globby/6.1.0:
1625 | resolution: {integrity: sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==}
1626 | engines: {node: '>=0.10.0'}
1627 | dependencies:
1628 | array-union: 1.0.2
1629 | glob: 7.2.3
1630 | object-assign: 4.1.1
1631 | pify: 2.3.0
1632 | pinkie-promise: 2.0.1
1633 | dev: true
1634 |
1635 | /gopd/1.0.1:
1636 | resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
1637 | dependencies:
1638 | get-intrinsic: 1.2.1
1639 | dev: true
1640 |
1641 | /graceful-fs/4.2.11:
1642 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
1643 | dev: true
1644 |
1645 | /graphemer/1.4.0:
1646 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
1647 | dev: true
1648 |
1649 | /has-bigints/1.0.2:
1650 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
1651 | dev: true
1652 |
1653 | /has-flag/4.0.0:
1654 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
1655 | engines: {node: '>=8'}
1656 | dev: true
1657 |
1658 | /has-property-descriptors/1.0.0:
1659 | resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==}
1660 | dependencies:
1661 | get-intrinsic: 1.2.1
1662 | dev: true
1663 |
1664 | /has-proto/1.0.1:
1665 | resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==}
1666 | engines: {node: '>= 0.4'}
1667 | dev: true
1668 |
1669 | /has-symbols/1.0.3:
1670 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
1671 | engines: {node: '>= 0.4'}
1672 | dev: true
1673 |
1674 | /has-tostringtag/1.0.0:
1675 | resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==}
1676 | engines: {node: '>= 0.4'}
1677 | dependencies:
1678 | has-symbols: 1.0.3
1679 | dev: true
1680 |
1681 | /has/1.0.3:
1682 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
1683 | engines: {node: '>= 0.4.0'}
1684 | dependencies:
1685 | function-bind: 1.1.1
1686 | dev: true
1687 |
1688 | /he/1.2.0:
1689 | resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
1690 | hasBin: true
1691 | dev: true
1692 |
1693 | /ignore/5.2.4:
1694 | resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==}
1695 | engines: {node: '>= 4'}
1696 | dev: true
1697 |
1698 | /immutable/4.3.0:
1699 | resolution: {integrity: sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==}
1700 | dev: true
1701 |
1702 | /import-fresh/3.3.0:
1703 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
1704 | engines: {node: '>=6'}
1705 | dependencies:
1706 | parent-module: 1.0.1
1707 | resolve-from: 4.0.0
1708 | dev: true
1709 |
1710 | /imurmurhash/0.1.4:
1711 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
1712 | engines: {node: '>=0.8.19'}
1713 | dev: true
1714 |
1715 | /inflight/1.0.6:
1716 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
1717 | dependencies:
1718 | once: 1.4.0
1719 | wrappy: 1.0.2
1720 | dev: true
1721 |
1722 | /inherits/2.0.4:
1723 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
1724 | dev: true
1725 |
1726 | /internal-slot/1.0.5:
1727 | resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==}
1728 | engines: {node: '>= 0.4'}
1729 | dependencies:
1730 | get-intrinsic: 1.2.1
1731 | has: 1.0.3
1732 | side-channel: 1.0.4
1733 | dev: true
1734 |
1735 | /is-array-buffer/3.0.2:
1736 | resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==}
1737 | dependencies:
1738 | call-bind: 1.0.2
1739 | get-intrinsic: 1.2.1
1740 | is-typed-array: 1.1.12
1741 | dev: true
1742 |
1743 | /is-bigint/1.0.4:
1744 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==}
1745 | dependencies:
1746 | has-bigints: 1.0.2
1747 | dev: true
1748 |
1749 | /is-binary-path/2.1.0:
1750 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
1751 | engines: {node: '>=8'}
1752 | dependencies:
1753 | binary-extensions: 2.2.0
1754 | dev: true
1755 |
1756 | /is-boolean-object/1.1.2:
1757 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
1758 | engines: {node: '>= 0.4'}
1759 | dependencies:
1760 | call-bind: 1.0.2
1761 | has-tostringtag: 1.0.0
1762 | dev: true
1763 |
1764 | /is-callable/1.2.7:
1765 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
1766 | engines: {node: '>= 0.4'}
1767 | dev: true
1768 |
1769 | /is-core-module/2.13.0:
1770 | resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==}
1771 | dependencies:
1772 | has: 1.0.3
1773 | dev: true
1774 |
1775 | /is-date-object/1.0.5:
1776 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
1777 | engines: {node: '>= 0.4'}
1778 | dependencies:
1779 | has-tostringtag: 1.0.0
1780 | dev: true
1781 |
1782 | /is-extglob/2.1.1:
1783 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
1784 | engines: {node: '>=0.10.0'}
1785 | dev: true
1786 |
1787 | /is-glob/4.0.3:
1788 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
1789 | engines: {node: '>=0.10.0'}
1790 | dependencies:
1791 | is-extglob: 2.1.1
1792 | dev: true
1793 |
1794 | /is-negative-zero/2.0.2:
1795 | resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==}
1796 | engines: {node: '>= 0.4'}
1797 | dev: true
1798 |
1799 | /is-number-object/1.0.7:
1800 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==}
1801 | engines: {node: '>= 0.4'}
1802 | dependencies:
1803 | has-tostringtag: 1.0.0
1804 | dev: true
1805 |
1806 | /is-number/7.0.0:
1807 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
1808 | engines: {node: '>=0.12.0'}
1809 | dev: true
1810 |
1811 | /is-path-inside/3.0.3:
1812 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
1813 | engines: {node: '>=8'}
1814 | dev: true
1815 |
1816 | /is-regex/1.1.4:
1817 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
1818 | engines: {node: '>= 0.4'}
1819 | dependencies:
1820 | call-bind: 1.0.2
1821 | has-tostringtag: 1.0.0
1822 | dev: true
1823 |
1824 | /is-shared-array-buffer/1.0.2:
1825 | resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==}
1826 | dependencies:
1827 | call-bind: 1.0.2
1828 | dev: true
1829 |
1830 | /is-string/1.0.7:
1831 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==}
1832 | engines: {node: '>= 0.4'}
1833 | dependencies:
1834 | has-tostringtag: 1.0.0
1835 | dev: true
1836 |
1837 | /is-symbol/1.0.4:
1838 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==}
1839 | engines: {node: '>= 0.4'}
1840 | dependencies:
1841 | has-symbols: 1.0.3
1842 | dev: true
1843 |
1844 | /is-typed-array/1.1.12:
1845 | resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==}
1846 | engines: {node: '>= 0.4'}
1847 | dependencies:
1848 | which-typed-array: 1.1.11
1849 | dev: true
1850 |
1851 | /is-weakref/1.0.2:
1852 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==}
1853 | dependencies:
1854 | call-bind: 1.0.2
1855 | dev: true
1856 |
1857 | /isarray/2.0.5:
1858 | resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
1859 | dev: true
1860 |
1861 | /isexe/2.0.0:
1862 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
1863 | dev: true
1864 |
1865 | /js-yaml/4.1.0:
1866 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
1867 | hasBin: true
1868 | dependencies:
1869 | argparse: 2.0.1
1870 | dev: true
1871 |
1872 | /json-buffer/3.0.1:
1873 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
1874 | dev: true
1875 |
1876 | /json-schema-traverse/0.4.1:
1877 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
1878 | dev: true
1879 |
1880 | /json-stable-stringify-without-jsonify/1.0.1:
1881 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
1882 | dev: true
1883 |
1884 | /json5/1.0.2:
1885 | resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
1886 | hasBin: true
1887 | dependencies:
1888 | minimist: 1.2.8
1889 | dev: true
1890 |
1891 | /jsonfile/6.1.0:
1892 | resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
1893 | dependencies:
1894 | universalify: 2.0.0
1895 | optionalDependencies:
1896 | graceful-fs: 4.2.11
1897 | dev: true
1898 |
1899 | /keyv/4.5.3:
1900 | resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==}
1901 | dependencies:
1902 | json-buffer: 3.0.1
1903 | dev: true
1904 |
1905 | /levn/0.4.1:
1906 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
1907 | engines: {node: '>= 0.8.0'}
1908 | dependencies:
1909 | prelude-ls: 1.2.1
1910 | type-check: 0.4.0
1911 | dev: true
1912 |
1913 | /locate-path/5.0.0:
1914 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
1915 | engines: {node: '>=8'}
1916 | dependencies:
1917 | p-locate: 4.1.0
1918 | dev: true
1919 |
1920 | /locate-path/6.0.0:
1921 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
1922 | engines: {node: '>=10'}
1923 | dependencies:
1924 | p-locate: 5.0.0
1925 | dev: true
1926 |
1927 | /lodash-es/4.17.21:
1928 | resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==}
1929 | dev: false
1930 |
1931 | /lodash-unified/1.0.3_tknf7errc3xdqocd3ryzzla7vq:
1932 | resolution: {integrity: sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==}
1933 | peerDependencies:
1934 | '@types/lodash-es': '*'
1935 | lodash: '*'
1936 | lodash-es: '*'
1937 | dependencies:
1938 | '@types/lodash-es': 4.17.7
1939 | lodash: 4.17.21
1940 | lodash-es: 4.17.21
1941 | dev: false
1942 |
1943 | /lodash.merge/4.6.2:
1944 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
1945 | dev: true
1946 |
1947 | /lodash/4.17.21:
1948 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
1949 |
1950 | /lru-cache/6.0.0:
1951 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
1952 | engines: {node: '>=10'}
1953 | dependencies:
1954 | yallist: 4.0.0
1955 | dev: true
1956 |
1957 | /magic-string/0.30.0:
1958 | resolution: {integrity: sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==}
1959 | engines: {node: '>=12'}
1960 | dependencies:
1961 | '@jridgewell/sourcemap-codec': 1.4.15
1962 |
1963 | /make-dir/3.1.0:
1964 | resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
1965 | engines: {node: '>=8'}
1966 | dependencies:
1967 | semver: 6.3.1
1968 | dev: true
1969 |
1970 | /memoize-one/6.0.0:
1971 | resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==}
1972 | dev: false
1973 |
1974 | /merge2/1.4.1:
1975 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
1976 | engines: {node: '>= 8'}
1977 | dev: true
1978 |
1979 | /micromatch/4.0.5:
1980 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
1981 | engines: {node: '>=8.6'}
1982 | dependencies:
1983 | braces: 3.0.2
1984 | picomatch: 2.3.1
1985 | dev: true
1986 |
1987 | /minimatch/3.1.2:
1988 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
1989 | dependencies:
1990 | brace-expansion: 1.1.11
1991 | dev: true
1992 |
1993 | /minimatch/9.0.1:
1994 | resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==}
1995 | engines: {node: '>=16 || 14 >=14.17'}
1996 | dependencies:
1997 | brace-expansion: 2.0.1
1998 | dev: true
1999 |
2000 | /minimist/1.2.8:
2001 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
2002 | dev: true
2003 |
2004 | /ms/2.1.2:
2005 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
2006 | dev: true
2007 |
2008 | /ms/2.1.3:
2009 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
2010 | dev: true
2011 |
2012 | /muggle-string/0.2.2:
2013 | resolution: {integrity: sha512-YVE1mIJ4VpUMqZObFndk9CJu6DBJR/GB13p3tXuNbwD4XExaI5EOuRl6BHeIDxIqXZVxSfAC+y6U1Z/IxCfKUg==}
2014 | dev: true
2015 |
2016 | /nanoid/3.3.6:
2017 | resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==}
2018 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
2019 | hasBin: true
2020 |
2021 | /natural-compare-lite/1.4.0:
2022 | resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==}
2023 | dev: true
2024 |
2025 | /natural-compare/1.4.0:
2026 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
2027 | dev: true
2028 |
2029 | /normalize-path/3.0.0:
2030 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
2031 | engines: {node: '>=0.10.0'}
2032 | dev: true
2033 |
2034 | /normalize-wheel-es/1.2.0:
2035 | resolution: {integrity: sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==}
2036 | dev: false
2037 |
2038 | /nth-check/2.1.1:
2039 | resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
2040 | dependencies:
2041 | boolbase: 1.0.0
2042 | dev: true
2043 |
2044 | /object-assign/4.1.1:
2045 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
2046 | engines: {node: '>=0.10.0'}
2047 | dev: true
2048 |
2049 | /object-inspect/1.12.3:
2050 | resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==}
2051 | dev: true
2052 |
2053 | /object-keys/1.1.1:
2054 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
2055 | engines: {node: '>= 0.4'}
2056 | dev: true
2057 |
2058 | /object.assign/4.1.4:
2059 | resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==}
2060 | engines: {node: '>= 0.4'}
2061 | dependencies:
2062 | call-bind: 1.0.2
2063 | define-properties: 1.2.0
2064 | has-symbols: 1.0.3
2065 | object-keys: 1.1.1
2066 | dev: true
2067 |
2068 | /object.fromentries/2.0.7:
2069 | resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==}
2070 | engines: {node: '>= 0.4'}
2071 | dependencies:
2072 | call-bind: 1.0.2
2073 | define-properties: 1.2.0
2074 | es-abstract: 1.22.1
2075 | dev: true
2076 |
2077 | /object.groupby/1.0.1:
2078 | resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==}
2079 | dependencies:
2080 | call-bind: 1.0.2
2081 | define-properties: 1.2.0
2082 | es-abstract: 1.22.1
2083 | get-intrinsic: 1.2.1
2084 | dev: true
2085 |
2086 | /object.values/1.1.7:
2087 | resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==}
2088 | engines: {node: '>= 0.4'}
2089 | dependencies:
2090 | call-bind: 1.0.2
2091 | define-properties: 1.2.0
2092 | es-abstract: 1.22.1
2093 | dev: true
2094 |
2095 | /once/1.4.0:
2096 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
2097 | dependencies:
2098 | wrappy: 1.0.2
2099 | dev: true
2100 |
2101 | /optionator/0.9.3:
2102 | resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==}
2103 | engines: {node: '>= 0.8.0'}
2104 | dependencies:
2105 | '@aashutoshrathi/word-wrap': 1.2.6
2106 | deep-is: 0.1.4
2107 | fast-levenshtein: 2.0.6
2108 | levn: 0.4.1
2109 | prelude-ls: 1.2.1
2110 | type-check: 0.4.0
2111 | dev: true
2112 |
2113 | /p-limit/2.3.0:
2114 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
2115 | engines: {node: '>=6'}
2116 | dependencies:
2117 | p-try: 2.2.0
2118 | dev: true
2119 |
2120 | /p-limit/3.1.0:
2121 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
2122 | engines: {node: '>=10'}
2123 | dependencies:
2124 | yocto-queue: 0.1.0
2125 | dev: true
2126 |
2127 | /p-locate/4.1.0:
2128 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
2129 | engines: {node: '>=8'}
2130 | dependencies:
2131 | p-limit: 2.3.0
2132 | dev: true
2133 |
2134 | /p-locate/5.0.0:
2135 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
2136 | engines: {node: '>=10'}
2137 | dependencies:
2138 | p-limit: 3.1.0
2139 | dev: true
2140 |
2141 | /p-try/2.2.0:
2142 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
2143 | engines: {node: '>=6'}
2144 | dev: true
2145 |
2146 | /parent-module/1.0.1:
2147 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
2148 | engines: {node: '>=6'}
2149 | dependencies:
2150 | callsites: 3.1.0
2151 | dev: true
2152 |
2153 | /path-exists/4.0.0:
2154 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
2155 | engines: {node: '>=8'}
2156 | dev: true
2157 |
2158 | /path-is-absolute/1.0.1:
2159 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
2160 | engines: {node: '>=0.10.0'}
2161 | dev: true
2162 |
2163 | /path-key/3.1.1:
2164 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
2165 | engines: {node: '>=8'}
2166 | dev: true
2167 |
2168 | /path-parse/1.0.7:
2169 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
2170 | dev: true
2171 |
2172 | /path-type/4.0.0:
2173 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
2174 | engines: {node: '>=8'}
2175 | dev: true
2176 |
2177 | /picocolors/1.0.0:
2178 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
2179 |
2180 | /picomatch/2.3.1:
2181 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
2182 | engines: {node: '>=8.6'}
2183 | dev: true
2184 |
2185 | /pify/2.3.0:
2186 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
2187 | engines: {node: '>=0.10.0'}
2188 | dev: true
2189 |
2190 | /pinkie-promise/2.0.1:
2191 | resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==}
2192 | engines: {node: '>=0.10.0'}
2193 | dependencies:
2194 | pinkie: 2.0.4
2195 | dev: true
2196 |
2197 | /pinkie/2.0.4:
2198 | resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==}
2199 | engines: {node: '>=0.10.0'}
2200 | dev: true
2201 |
2202 | /pkg-dir/4.2.0:
2203 | resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==}
2204 | engines: {node: '>=8'}
2205 | dependencies:
2206 | find-up: 4.1.0
2207 | dev: true
2208 |
2209 | /postcss-selector-parser/6.0.13:
2210 | resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==}
2211 | engines: {node: '>=4'}
2212 | dependencies:
2213 | cssesc: 3.0.0
2214 | util-deprecate: 1.0.2
2215 | dev: true
2216 |
2217 | /postcss/8.4.24:
2218 | resolution: {integrity: sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==}
2219 | engines: {node: ^10 || ^12 || >=14}
2220 | dependencies:
2221 | nanoid: 3.3.6
2222 | picocolors: 1.0.0
2223 | source-map-js: 1.0.2
2224 |
2225 | /prelude-ls/1.2.1:
2226 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
2227 | engines: {node: '>= 0.8.0'}
2228 | dev: true
2229 |
2230 | /prettier-linter-helpers/1.0.0:
2231 | resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==}
2232 | engines: {node: '>=6.0.0'}
2233 | dependencies:
2234 | fast-diff: 1.3.0
2235 | dev: true
2236 |
2237 | /prettier/2.8.8:
2238 | resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==}
2239 | engines: {node: '>=10.13.0'}
2240 | hasBin: true
2241 | dev: true
2242 |
2243 | /punycode/2.3.0:
2244 | resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==}
2245 | engines: {node: '>=6'}
2246 | dev: true
2247 |
2248 | /queue-microtask/1.2.3:
2249 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
2250 | dev: true
2251 |
2252 | /readdirp/3.6.0:
2253 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
2254 | engines: {node: '>=8.10.0'}
2255 | dependencies:
2256 | picomatch: 2.3.1
2257 | dev: true
2258 |
2259 | /regexp.prototype.flags/1.5.0:
2260 | resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==}
2261 | engines: {node: '>= 0.4'}
2262 | dependencies:
2263 | call-bind: 1.0.2
2264 | define-properties: 1.2.0
2265 | functions-have-names: 1.2.3
2266 | dev: true
2267 |
2268 | /resolve-from/4.0.0:
2269 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
2270 | engines: {node: '>=4'}
2271 | dev: true
2272 |
2273 | /resolve/1.22.4:
2274 | resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==}
2275 | hasBin: true
2276 | dependencies:
2277 | is-core-module: 2.13.0
2278 | path-parse: 1.0.7
2279 | supports-preserve-symlinks-flag: 1.0.0
2280 | dev: true
2281 |
2282 | /reusify/1.0.4:
2283 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
2284 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
2285 | dev: true
2286 |
2287 | /rimraf/3.0.2:
2288 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
2289 | hasBin: true
2290 | dependencies:
2291 | glob: 7.2.3
2292 | dev: true
2293 |
2294 | /rollup/3.24.1:
2295 | resolution: {integrity: sha512-REHe5dx30ERBRFS0iENPHy+t6wtSEYkjrhwNsLyh3qpRaZ1+aylvMUdMBUHWUD/RjjLmLzEvY8Z9XRlpcdIkHA==}
2296 | engines: {node: '>=14.18.0', npm: '>=8.0.0'}
2297 | hasBin: true
2298 | optionalDependencies:
2299 | fsevents: 2.3.2
2300 | dev: true
2301 |
2302 | /run-parallel/1.2.0:
2303 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
2304 | dependencies:
2305 | queue-microtask: 1.2.3
2306 | dev: true
2307 |
2308 | /safe-array-concat/1.0.0:
2309 | resolution: {integrity: sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==}
2310 | engines: {node: '>=0.4'}
2311 | dependencies:
2312 | call-bind: 1.0.2
2313 | get-intrinsic: 1.2.1
2314 | has-symbols: 1.0.3
2315 | isarray: 2.0.5
2316 | dev: true
2317 |
2318 | /safe-regex-test/1.0.0:
2319 | resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==}
2320 | dependencies:
2321 | call-bind: 1.0.2
2322 | get-intrinsic: 1.2.1
2323 | is-regex: 1.1.4
2324 | dev: true
2325 |
2326 | /sass/1.63.3:
2327 | resolution: {integrity: sha512-ySdXN+DVpfwq49jG1+hmtDslYqpS7SkOR5GpF6o2bmb1RL/xS+wvPmegMvMywyfsmAV6p7TgwXYGrCZIFFbAHg==}
2328 | engines: {node: '>=14.0.0'}
2329 | hasBin: true
2330 | dependencies:
2331 | chokidar: 3.5.3
2332 | immutable: 4.3.0
2333 | source-map-js: 1.0.2
2334 | dev: true
2335 |
2336 | /semver/6.3.1:
2337 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
2338 | hasBin: true
2339 | dev: true
2340 |
2341 | /semver/7.5.1:
2342 | resolution: {integrity: sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==}
2343 | engines: {node: '>=10'}
2344 | hasBin: true
2345 | dependencies:
2346 | lru-cache: 6.0.0
2347 | dev: true
2348 |
2349 | /semver/7.5.4:
2350 | resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==}
2351 | engines: {node: '>=10'}
2352 | hasBin: true
2353 | dependencies:
2354 | lru-cache: 6.0.0
2355 | dev: true
2356 |
2357 | /shebang-command/2.0.0:
2358 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
2359 | engines: {node: '>=8'}
2360 | dependencies:
2361 | shebang-regex: 3.0.0
2362 | dev: true
2363 |
2364 | /shebang-regex/3.0.0:
2365 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
2366 | engines: {node: '>=8'}
2367 | dev: true
2368 |
2369 | /side-channel/1.0.4:
2370 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
2371 | dependencies:
2372 | call-bind: 1.0.2
2373 | get-intrinsic: 1.2.1
2374 | object-inspect: 1.12.3
2375 | dev: true
2376 |
2377 | /slash/3.0.0:
2378 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
2379 | engines: {node: '>=8'}
2380 | dev: true
2381 |
2382 | /source-map-js/1.0.2:
2383 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
2384 | engines: {node: '>=0.10.0'}
2385 |
2386 | /string.prototype.trim/1.2.7:
2387 | resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==}
2388 | engines: {node: '>= 0.4'}
2389 | dependencies:
2390 | call-bind: 1.0.2
2391 | define-properties: 1.2.0
2392 | es-abstract: 1.22.1
2393 | dev: true
2394 |
2395 | /string.prototype.trimend/1.0.6:
2396 | resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==}
2397 | dependencies:
2398 | call-bind: 1.0.2
2399 | define-properties: 1.2.0
2400 | es-abstract: 1.22.1
2401 | dev: true
2402 |
2403 | /string.prototype.trimstart/1.0.6:
2404 | resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==}
2405 | dependencies:
2406 | call-bind: 1.0.2
2407 | define-properties: 1.2.0
2408 | es-abstract: 1.22.1
2409 | dev: true
2410 |
2411 | /strip-ansi/6.0.1:
2412 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
2413 | engines: {node: '>=8'}
2414 | dependencies:
2415 | ansi-regex: 5.0.1
2416 | dev: true
2417 |
2418 | /strip-bom/3.0.0:
2419 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
2420 | engines: {node: '>=4'}
2421 | dev: true
2422 |
2423 | /strip-json-comments/3.1.1:
2424 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
2425 | engines: {node: '>=8'}
2426 | dev: true
2427 |
2428 | /strip-outer/1.0.1:
2429 | resolution: {integrity: sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==}
2430 | engines: {node: '>=0.10.0'}
2431 | dependencies:
2432 | escape-string-regexp: 1.0.5
2433 | dev: true
2434 |
2435 | /supports-color/7.2.0:
2436 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
2437 | engines: {node: '>=8'}
2438 | dependencies:
2439 | has-flag: 4.0.0
2440 | dev: true
2441 |
2442 | /supports-preserve-symlinks-flag/1.0.0:
2443 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
2444 | engines: {node: '>= 0.4'}
2445 | dev: true
2446 |
2447 | /text-table/0.2.0:
2448 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
2449 | dev: true
2450 |
2451 | /to-fast-properties/2.0.0:
2452 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
2453 | engines: {node: '>=4'}
2454 |
2455 | /to-regex-range/5.0.1:
2456 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
2457 | engines: {node: '>=8.0'}
2458 | dependencies:
2459 | is-number: 7.0.0
2460 | dev: true
2461 |
2462 | /trim-repeated/1.0.0:
2463 | resolution: {integrity: sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==}
2464 | engines: {node: '>=0.10.0'}
2465 | dependencies:
2466 | escape-string-regexp: 1.0.5
2467 | dev: true
2468 |
2469 | /tsconfig-paths/3.14.2:
2470 | resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==}
2471 | dependencies:
2472 | '@types/json5': 0.0.29
2473 | json5: 1.0.2
2474 | minimist: 1.2.8
2475 | strip-bom: 3.0.0
2476 | dev: true
2477 |
2478 | /tslib/1.14.1:
2479 | resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
2480 | dev: true
2481 |
2482 | /tsutils/3.21.0_typescript@5.1.3:
2483 | resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
2484 | engines: {node: '>= 6'}
2485 | peerDependencies:
2486 | typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
2487 | dependencies:
2488 | tslib: 1.14.1
2489 | typescript: 5.1.3
2490 | dev: true
2491 |
2492 | /type-check/0.4.0:
2493 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
2494 | engines: {node: '>= 0.8.0'}
2495 | dependencies:
2496 | prelude-ls: 1.2.1
2497 | dev: true
2498 |
2499 | /type-fest/0.20.2:
2500 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
2501 | engines: {node: '>=10'}
2502 | dev: true
2503 |
2504 | /typed-array-buffer/1.0.0:
2505 | resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==}
2506 | engines: {node: '>= 0.4'}
2507 | dependencies:
2508 | call-bind: 1.0.2
2509 | get-intrinsic: 1.2.1
2510 | is-typed-array: 1.1.12
2511 | dev: true
2512 |
2513 | /typed-array-byte-length/1.0.0:
2514 | resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==}
2515 | engines: {node: '>= 0.4'}
2516 | dependencies:
2517 | call-bind: 1.0.2
2518 | for-each: 0.3.3
2519 | has-proto: 1.0.1
2520 | is-typed-array: 1.1.12
2521 | dev: true
2522 |
2523 | /typed-array-byte-offset/1.0.0:
2524 | resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==}
2525 | engines: {node: '>= 0.4'}
2526 | dependencies:
2527 | available-typed-arrays: 1.0.5
2528 | call-bind: 1.0.2
2529 | for-each: 0.3.3
2530 | has-proto: 1.0.1
2531 | is-typed-array: 1.1.12
2532 | dev: true
2533 |
2534 | /typed-array-length/1.0.4:
2535 | resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==}
2536 | dependencies:
2537 | call-bind: 1.0.2
2538 | for-each: 0.3.3
2539 | is-typed-array: 1.1.12
2540 | dev: true
2541 |
2542 | /typescript/5.1.3:
2543 | resolution: {integrity: sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==}
2544 | engines: {node: '>=14.17'}
2545 | hasBin: true
2546 | dev: true
2547 |
2548 | /unbox-primitive/1.0.2:
2549 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
2550 | dependencies:
2551 | call-bind: 1.0.2
2552 | has-bigints: 1.0.2
2553 | has-symbols: 1.0.3
2554 | which-boxed-primitive: 1.0.2
2555 | dev: true
2556 |
2557 | /universalify/2.0.0:
2558 | resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==}
2559 | engines: {node: '>= 10.0.0'}
2560 | dev: true
2561 |
2562 | /uri-js/4.4.1:
2563 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
2564 | dependencies:
2565 | punycode: 2.3.0
2566 | dev: true
2567 |
2568 | /util-deprecate/1.0.2:
2569 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
2570 | dev: true
2571 |
2572 | /vite/4.3.9_3hkcy4cv6b7vyfga2q67aben5q:
2573 | resolution: {integrity: sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==}
2574 | engines: {node: ^14.18.0 || >=16.0.0}
2575 | hasBin: true
2576 | peerDependencies:
2577 | '@types/node': '>= 14'
2578 | less: '*'
2579 | sass: '*'
2580 | stylus: '*'
2581 | sugarss: '*'
2582 | terser: ^5.4.0
2583 | peerDependenciesMeta:
2584 | '@types/node':
2585 | optional: true
2586 | less:
2587 | optional: true
2588 | sass:
2589 | optional: true
2590 | stylus:
2591 | optional: true
2592 | sugarss:
2593 | optional: true
2594 | terser:
2595 | optional: true
2596 | dependencies:
2597 | '@types/node': 18.17.13
2598 | esbuild: 0.17.19
2599 | postcss: 8.4.24
2600 | rollup: 3.24.1
2601 | sass: 1.63.3
2602 | optionalDependencies:
2603 | fsevents: 2.3.2
2604 | dev: true
2605 |
2606 | /vue-demi/0.14.5_vue@3.3.4:
2607 | resolution: {integrity: sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==}
2608 | engines: {node: '>=12'}
2609 | hasBin: true
2610 | requiresBuild: true
2611 | peerDependencies:
2612 | '@vue/composition-api': ^1.0.0-rc.1
2613 | vue: ^3.0.0-0 || ^2.6.0
2614 | peerDependenciesMeta:
2615 | '@vue/composition-api':
2616 | optional: true
2617 | dependencies:
2618 | vue: 3.3.4
2619 | dev: false
2620 |
2621 | /vue-eslint-parser/9.3.1_eslint@8.48.0:
2622 | resolution: {integrity: sha512-Clr85iD2XFZ3lJ52/ppmUDG/spxQu6+MAeHXjjyI4I1NUYZ9xmenQp4N0oaHJhrA8OOxltCVxMRfANGa70vU0g==}
2623 | engines: {node: ^14.17.0 || >=16.0.0}
2624 | peerDependencies:
2625 | eslint: '>=6.0.0'
2626 | dependencies:
2627 | debug: 4.3.4
2628 | eslint: 8.48.0
2629 | eslint-scope: 7.2.2
2630 | eslint-visitor-keys: 3.4.3
2631 | espree: 9.6.1
2632 | esquery: 1.5.0
2633 | lodash: 4.17.21
2634 | semver: 7.5.4
2635 | transitivePeerDependencies:
2636 | - supports-color
2637 | dev: true
2638 |
2639 | /vue-router/4.2.4_vue@3.3.4:
2640 | resolution: {integrity: sha512-9PISkmaCO02OzPVOMq2w82ilty6+xJmQrarYZDkjZBfl4RvYAlt4PKnEX21oW4KTtWfa9OuO/b3qk1Od3AEdCQ==}
2641 | peerDependencies:
2642 | vue: ^3.2.0
2643 | dependencies:
2644 | '@vue/devtools-api': 6.5.0
2645 | vue: 3.3.4
2646 | dev: false
2647 |
2648 | /vue-template-compiler/2.7.14:
2649 | resolution: {integrity: sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==}
2650 | dependencies:
2651 | de-indent: 1.0.2
2652 | he: 1.2.0
2653 | dev: true
2654 |
2655 | /vue-tsc/1.6.5_typescript@5.1.3:
2656 | resolution: {integrity: sha512-Wtw3J7CC+JM2OR56huRd5iKlvFWpvDiU+fO1+rqyu4V2nMTotShz4zbOZpW5g9fUOcjnyZYfBo5q5q+D/q27JA==}
2657 | hasBin: true
2658 | peerDependencies:
2659 | typescript: '*'
2660 | dependencies:
2661 | '@volar/vue-language-core': 1.6.5
2662 | '@volar/vue-typescript': 1.6.5_typescript@5.1.3
2663 | semver: 7.5.1
2664 | typescript: 5.1.3
2665 | dev: true
2666 |
2667 | /vue/3.3.4:
2668 | resolution: {integrity: sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==}
2669 | dependencies:
2670 | '@vue/compiler-dom': 3.3.4
2671 | '@vue/compiler-sfc': 3.3.4
2672 | '@vue/runtime-dom': 3.3.4
2673 | '@vue/server-renderer': 3.3.4_vue@3.3.4
2674 | '@vue/shared': 3.3.4
2675 |
2676 | /which-boxed-primitive/1.0.2:
2677 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
2678 | dependencies:
2679 | is-bigint: 1.0.4
2680 | is-boolean-object: 1.1.2
2681 | is-number-object: 1.0.7
2682 | is-string: 1.0.7
2683 | is-symbol: 1.0.4
2684 | dev: true
2685 |
2686 | /which-typed-array/1.1.11:
2687 | resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==}
2688 | engines: {node: '>= 0.4'}
2689 | dependencies:
2690 | available-typed-arrays: 1.0.5
2691 | call-bind: 1.0.2
2692 | for-each: 0.3.3
2693 | gopd: 1.0.1
2694 | has-tostringtag: 1.0.0
2695 | dev: true
2696 |
2697 | /which/2.0.2:
2698 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
2699 | engines: {node: '>= 8'}
2700 | hasBin: true
2701 | dependencies:
2702 | isexe: 2.0.0
2703 | dev: true
2704 |
2705 | /wrappy/1.0.2:
2706 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
2707 | dev: true
2708 |
2709 | /xml-name-validator/4.0.0:
2710 | resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==}
2711 | engines: {node: '>=12'}
2712 | dev: true
2713 |
2714 | /yallist/4.0.0:
2715 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
2716 | dev: true
2717 |
2718 | /yocto-queue/0.1.0:
2719 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
2720 | engines: {node: '>=10'}
2721 | dev: true
2722 |
--------------------------------------------------------------------------------
/public/vite.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/App.vue:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 |
15 |
--------------------------------------------------------------------------------
/src/assets/vue.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/components/EditTable.vue:
--------------------------------------------------------------------------------
1 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
--------------------------------------------------------------------------------
/src/components/EditTableColumn.vue:
--------------------------------------------------------------------------------
1 |
68 |
69 |
70 |
71 |
72 |
73 |
80 | {{ calculateColumnDefaultValue(scope) }}
81 |
82 |
83 |
90 | {{ calculateColumnDefaultValue(scope) }}
91 |
92 |
93 |
94 |
95 |
--------------------------------------------------------------------------------
/src/components/GridList.vue:
--------------------------------------------------------------------------------
1 |
140 |
141 |
142 |
143 |
144 | No Data
145 |
146 |
147 |
148 |
149 | {{ item }}
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
190 |
--------------------------------------------------------------------------------
/src/constants/mime-type.ts:
--------------------------------------------------------------------------------
1 | export const enum MimeType {
2 | HTML = 'text/html',
3 | CSS = 'text/css',
4 | JPEG = 'image/jpeg',
5 | PNG = 'image/png',
6 | GIF = 'image/gif',
7 | MPEG = 'audio/mpeg',
8 | OGG = 'audio/ogg',
9 | MP4 = 'video/mp4',
10 | JSON = 'application/json',
11 | JAVASCRIPT = 'application/javascript',
12 | ECMASCRIPT = 'application/ecmascript',
13 | EXCEL = 'application/vnb.ms-excel',
14 | CSV = 'application/x-csv',
15 | ZIP = 'application/zip',
16 | TGZ = 'application/x-gtar',
17 | TAR_GZ = 'application/x-gzip',
18 | XML = 'text/xml',
19 | TEXT = 'text/plain',
20 | SVG = 'image/svg+xml',
21 | }
22 |
--------------------------------------------------------------------------------
/src/hooks/useCommandComponent.ts:
--------------------------------------------------------------------------------
1 | import { AppContext, Component, ComponentPublicInstance, createVNode, getCurrentInstance, render, VNode } from 'vue';
2 |
3 | export interface Options {
4 | visible?: boolean;
5 | onClose?: () => void;
6 | appendTo?: HTMLElement | string;
7 | [key: string]: unknown;
8 | }
9 |
10 | export interface CommandComponent {
11 | (options: Options): VNode;
12 | close: () => void;
13 | }
14 |
15 | const getAppendToElement = (props: Options): HTMLElement => {
16 | let appendTo: HTMLElement | null = document.body;
17 | if (props.appendTo) {
18 | if (typeof props.appendTo === 'string') {
19 | appendTo = document.querySelector(props.appendTo);
20 | }
21 | if (props.appendTo instanceof HTMLElement) {
22 | appendTo = props.appendTo;
23 | }
24 | if (!(appendTo instanceof HTMLElement)) {
25 | appendTo = document.body;
26 | }
27 | }
28 | return appendTo;
29 | };
30 |
31 | const initInstance = (
32 | Component: T,
33 | props: Options,
34 | container: HTMLElement,
35 | appContext: AppContext | null = null
36 | ) => {
37 | const vNode = createVNode(Component, props);
38 | vNode.appContext = appContext;
39 | render(vNode, container);
40 |
41 | getAppendToElement(props).appendChild(container);
42 | return vNode;
43 | };
44 |
45 | export const useCommandComponent = (Component: T): CommandComponent => {
46 | const appContext = getCurrentInstance()?.appContext;
47 | if (appContext) {
48 | const currentProvides = (getCurrentInstance() as any)?.provides;
49 | Reflect.set(appContext, 'provides', { ...appContext.provides, ...currentProvides });
50 | }
51 |
52 | const container = document.createElement('div');
53 |
54 | const close = () => {
55 | render(null, container);
56 | container.parentNode?.removeChild(container);
57 | };
58 |
59 | const CommandComponent = (options: Options): VNode => {
60 | if (!Reflect.has(options, 'visible')) {
61 | options.visible = true;
62 | }
63 | if (typeof options.onClose !== 'function') {
64 | options.onClose = close;
65 | } else {
66 | const originOnClose = options.onClose;
67 | options.onClose = () => {
68 | originOnClose();
69 | close();
70 | };
71 | }
72 | const vNode = initInstance(Component, options, container, appContext);
73 | const vm = vNode.component?.proxy as ComponentPublicInstance;
74 | for (const prop in options) {
75 | if (Reflect.has(options, prop) && !Reflect.has(vm.$props, prop)) {
76 | vm[prop as keyof ComponentPublicInstance] = options[prop];
77 | }
78 | }
79 | return vNode;
80 | };
81 |
82 | CommandComponent.close = close;
83 |
84 | return CommandComponent;
85 | };
86 |
87 | export default useCommandComponent;
88 |
--------------------------------------------------------------------------------
/src/hooks/useEventListener.ts:
--------------------------------------------------------------------------------
1 | import { isRef, onMounted, onUnmounted, Ref, unref, watch } from 'vue';
2 |
3 | type EventMap = HTMLElementEventMap & DocumentEventMap & WindowEventMap & MediaQueryListEventMap;
4 |
5 | export const useEventListener = (
6 | target: Ref | EventTarget,
7 | event: K,
8 | handler: (event: EventMap[K]) => void
9 | ): (() => void) => {
10 | const eventHandler = (event: Event) => {
11 | handler(event as EventMap[K]);
12 | };
13 | if (isRef(target)) {
14 | watch(target, (value, oldValue) => {
15 | oldValue?.removeEventListener(event, eventHandler);
16 | value?.addEventListener(event, eventHandler);
17 | });
18 | } else {
19 | onMounted(() => {
20 | target.addEventListener(event, eventHandler);
21 | });
22 | }
23 |
24 | const removeEventListener = () => {
25 | unref(target)?.removeEventListener(event, eventHandler);
26 | };
27 |
28 | onUnmounted(() => {
29 | removeEventListener();
30 | });
31 |
32 | return removeEventListener;
33 | };
34 |
35 | export default useEventListener;
36 |
--------------------------------------------------------------------------------
/src/hooks/useExport.ts:
--------------------------------------------------------------------------------
1 | import { ref } from 'vue';
2 |
3 | import { MimeType } from '../constants/mime-type';
4 |
5 | class ExportError extends Error {
6 | constructor(fileName: string, e: any) {
7 | super(`${fileName} 导出失败`, { cause: e.cause });
8 | }
9 | }
10 |
11 | export type FileName = string | ((data?: T) => string);
12 |
13 | export const useExport = >(
14 | requestFunc: (data?: T) => string | Promise,
15 | fileName: FileName = 'file',
16 | mimeType: MimeType = MimeType.TEXT,
17 | charset: string = 'utf-8',
18 | isURL: boolean = false
19 | ) => {
20 | const loading = ref(false);
21 |
22 | const error = ref();
23 |
24 | const execute = async (data?: T): Promise => {
25 | loading.value = true;
26 | if (typeof fileName === 'function') {
27 | fileName = fileName(data);
28 | }
29 | try {
30 | const res = await Promise.resolve(requestFunc(data));
31 | const link = document.createElement('a');
32 | if (isURL) {
33 | link.href = res;
34 | } else {
35 | const blob = new Blob([res], { type: `${mimeType};charset=${charset}` });
36 | link.href = window.URL.createObjectURL(blob);
37 | }
38 | link.download = fileName;
39 | link.click();
40 | window.URL.revokeObjectURL(link.href);
41 | } catch (e) {
42 | error.value = new ExportError(fileName, e);
43 | throw error.value;
44 | } finally {
45 | loading.value = false;
46 | }
47 | };
48 |
49 | return {
50 | execute,
51 | loading,
52 | error,
53 | };
54 | };
55 |
56 | export default useExport;
57 |
--------------------------------------------------------------------------------
/src/hooks/useHotKey.ts:
--------------------------------------------------------------------------------
1 | import { Ref, unref } from 'vue';
2 |
3 | import useEventListener from './useEventListener';
4 |
5 | export interface HotKeyOptions {
6 | key: string | string[];
7 | target: Ref | EventTarget | null;
8 | directions: string;
9 | shiftKey: boolean;
10 | ctrlKey: boolean;
11 | exact: boolean; // 当 exact 设置为 true 时,表示在判断快捷键是否匹配时,不仅要考虑按下的按键是否匹配,还需要考虑是否同时满足 Ctrl 键和 Shift 键的状态
12 | }
13 |
14 | export interface HotKeyFunction {
15 | (...args: any[]): any;
16 | hotKey?: (string | string[])[];
17 | directions?: string;
18 | pause?: () => void;
19 | unpause?: () => void;
20 | removeListener?: () => void;
21 | }
22 |
23 | export const useHotKey = (hotKeyFunction: HotKeyFunction, opts?: Partial): HotKeyFunction => {
24 | const target = opts?.target ?? window;
25 | const isMacOS = navigator.userAgent.toLowerCase().includes('mac');
26 | let paused: boolean = false;
27 | let key = opts?.key;
28 |
29 | const getHotKey = (): (string | string[])[] => {
30 | const options = opts || {};
31 | const keyCombination = [];
32 | if (options.ctrlKey) keyCombination.push(isMacOS ? 'Cmd' : 'Ctrl');
33 | if (options.shiftKey) keyCombination.push(isMacOS ? 'Option' : 'Shift');
34 | if (key) {
35 | keyCombination.push(key);
36 | }
37 |
38 | return keyCombination;
39 | };
40 |
41 | const handleKeydownEvent = (event: KeyboardEvent) => {
42 | event.stopPropagation();
43 | const options = opts || {};
44 | if (paused || !key) {
45 | return;
46 | }
47 | key = typeof key === 'string' ? [key] : key;
48 | if (key.includes(event.key.toLowerCase()) && matchKeyScheme(options, event)) {
49 | event.preventDefault();
50 | const result = hotKeyFunction();
51 | if (typeof result !== 'function') {
52 | return;
53 | }
54 | const targetElement: EventTarget = unref(target) ?? window;
55 | const handleKeyup = (event: Event) => {
56 | event.preventDefault();
57 | result();
58 | targetElement.removeEventListener('keyup', handleKeyup);
59 | };
60 | targetElement.addEventListener('keyup', handleKeyup);
61 | }
62 | };
63 |
64 | const removeListener = useEventListener(target, 'keydown', handleKeydownEvent);
65 |
66 | hotKeyFunction.hotKey = getHotKey();
67 | hotKeyFunction.directions = opts?.directions ?? '';
68 | hotKeyFunction.removeListener = removeListener;
69 | hotKeyFunction.pause = () => (paused = true);
70 | hotKeyFunction.unpause = () => (paused = false);
71 | return hotKeyFunction;
72 | };
73 |
74 | const matchKeyScheme = (
75 | opts: Pick, 'shiftKey' | 'ctrlKey' | 'exact'>,
76 | event: KeyboardEvent
77 | ): boolean => {
78 | const ctrlKey = opts.ctrlKey ?? false;
79 | const shiftKey = opts.shiftKey ?? false;
80 | if (opts.exact) {
81 | return (ctrlKey === event.metaKey || ctrlKey === event.ctrlKey) && shiftKey === event.shiftKey;
82 | }
83 | const satisfiedKeys: boolean[] = [];
84 | satisfiedKeys.push(ctrlKey === event.metaKey || ctrlKey === event.ctrlKey);
85 | satisfiedKeys.push(shiftKey === event.shiftKey);
86 | return satisfiedKeys.every((item) => item);
87 | };
88 |
89 | export default useHotKey;
90 |
--------------------------------------------------------------------------------
/src/hooks/useReadFileContent.ts:
--------------------------------------------------------------------------------
1 | import { ref, watch } from 'vue';
2 |
3 | import { FileSelectCancelError, IllegalFileError } from '../utils';
4 |
5 | import useSelectFile from './useSelectFile';
6 |
7 | export const useReadFileContent = () => {
8 | const loading = ref(false);
9 |
10 | const error = ref();
11 |
12 | const { error: selectFileError, execute: selectFileExecute } = useSelectFile();
13 |
14 | watch(
15 | () => selectFileError.value,
16 | (e) => {
17 | error.value = e;
18 | }
19 | );
20 |
21 | const execute = async (accepts: string[] = ['*']): Promise => {
22 | try {
23 | loading.value = true;
24 | const files = (await selectFileExecute(accepts)) ?? [];
25 | const fileReader = new FileReader();
26 | return new Promise((resolve, reject) => {
27 | fileReader.onload = ({ target }) => {
28 | resolve(target?.result as string);
29 | };
30 | fileReader.onerror = (e) => {
31 | error.value = e;
32 | reject(error.value);
33 | };
34 | fileReader.readAsText(files[0]);
35 | });
36 | } catch (e) {
37 | error.value = e;
38 | } finally {
39 | loading.value = false;
40 | }
41 | };
42 |
43 | return {
44 | loading,
45 | error,
46 | execute,
47 | };
48 | };
49 |
50 | export default useReadFileContent;
51 |
--------------------------------------------------------------------------------
/src/hooks/useRouterCache.ts:
--------------------------------------------------------------------------------
1 | import { computed, ref } from 'vue';
2 | import { RouteLocationNormalized } from 'vue-router';
3 |
4 | const cacheComps = ref>(new Set());
5 |
6 | export const useRouterCache = () => {
7 | const keepAliveComps = computed>(() => [...cacheComps.value]);
8 | const cacheRouter = (from: RouteLocationNormalized, to: RouteLocationNormalized) => {
9 | if (
10 | Array.isArray(from.meta.leaveCaches) &&
11 | from.meta.leaveCaches.includes(to.path) &&
12 | typeof from.name === 'string'
13 | ) {
14 | cacheComps.value.add(from.name);
15 | }
16 | if (Array.isArray(to.meta.leaveCaches) && !to.meta.leaveCaches.includes(from.path) && typeof to.name === 'string') {
17 | cacheComps.value.delete(to.name);
18 | }
19 | };
20 | return { keepAliveComps, cacheRouter };
21 | };
22 |
23 | export default useRouterCache;
24 |
--------------------------------------------------------------------------------
/src/hooks/useSelectFile.ts:
--------------------------------------------------------------------------------
1 | import { ref } from 'vue';
2 |
3 | import { FileSelectCancelError, IllegalFileError, selectFile } from '../utils';
4 |
5 | export const useSelectFile = () => {
6 | const loading = ref(false);
7 |
8 | const error = ref();
9 |
10 | const execute = async (accepts: string[] = ['*'], multiple: boolean = false): Promise => {
11 | try {
12 | loading.value = true;
13 | const files = await selectFile(accepts, multiple);
14 | return files;
15 | } catch (e) {
16 | if (e instanceof FileSelectCancelError || e instanceof IllegalFileError) {
17 | error.value = e;
18 | }
19 | throw e;
20 | } finally {
21 | loading.value = false;
22 | }
23 | };
24 |
25 | return {
26 | loading,
27 | error,
28 | execute,
29 | };
30 | };
31 |
32 | export default useSelectFile;
33 |
--------------------------------------------------------------------------------
/src/hooks/useVirtualGridList.ts:
--------------------------------------------------------------------------------
1 | import type { Ref } from 'vue';
2 | import { computed, nextTick, onMounted, onUnmounted, ref, watch, watchEffect } from 'vue';
3 |
4 | export interface VirtualGridListConfig {
5 | containerRef: Ref;
6 | data: Ref;
7 | itemMinWidth: Ref;
8 | itemMinHeight: Ref;
9 | rowGap: Ref;
10 | columnGap: Ref;
11 | }
12 |
13 | export const useVirtualGridList = ({
14 | containerRef,
15 | itemMinWidth,
16 | itemMinHeight,
17 | rowGap,
18 | columnGap,
19 | data,
20 | }: VirtualGridListConfig) => {
21 | const phantomElement = document.createElement('div');
22 | phantomElement.style.position = 'absolute';
23 | phantomElement.style.left = '0';
24 | phantomElement.style.top = '0';
25 | phantomElement.style.right = '0';
26 | phantomElement.style.zIndex = '-1';
27 |
28 | const containerHeight = ref(0);
29 | const containerWidth = ref(0);
30 | const startIndex = ref(0);
31 | const endIndex = ref(0);
32 | const startOffset = ref(0);
33 |
34 | /** 计算列数 */
35 | const columnNum = computed(
36 | () => Math.floor((containerWidth.value - itemMinWidth.value) / (itemMinWidth.value + columnGap.value)) + 1
37 | );
38 | /** 计算行数 */
39 | const rowNum = computed(() => Math.ceil(data.value.length / columnNum.value));
40 | /** 计算总高度 */
41 | const listHeight = computed(() =>
42 | Math.max(rowNum.value * itemMinHeight.value + (rowNum.value - 1) * rowGap.value, 0)
43 | );
44 | /** 可见行数 */
45 | const visibleRowNum = computed(
46 | () => Math.ceil((containerHeight.value - itemMinHeight.value) / (itemMinHeight.value + rowGap.value)) + 1
47 | );
48 | /** 可见item数量 */
49 | const visibleCount = computed(() => visibleRowNum.value * columnNum.value);
50 |
51 | watch(
52 | () => listHeight.value,
53 | () => {
54 | phantomElement.style.height = `${listHeight.value}px`;
55 | }
56 | );
57 |
58 | watchEffect(() => {
59 | endIndex.value = startIndex.value + visibleCount.value;
60 | });
61 |
62 | const handleContainerResize = () => {
63 | nextTick(() => {
64 | if (containerRef.value) {
65 | containerHeight.value = containerRef.value.clientHeight;
66 | containerWidth.value = containerRef.value.clientWidth;
67 | }
68 | });
69 | };
70 |
71 | const handleScroll = () => {
72 | if (!containerRef.value) {
73 | return;
74 | }
75 | const scrollTop = containerRef.value.scrollTop;
76 | const startRowNum = Math.ceil((scrollTop - itemMinHeight.value) / (itemMinHeight.value + rowGap.value));
77 | startIndex.value = startRowNum * columnNum.value;
78 | startOffset.value = scrollTop - (scrollTop % (itemMinHeight.value + rowGap.value));
79 | };
80 |
81 | const resizeObserver = new ResizeObserver(handleContainerResize);
82 |
83 | onMounted(() => {
84 | if (containerRef.value) {
85 | containerRef.value.appendChild(phantomElement);
86 | resizeObserver.observe(containerRef.value);
87 | containerRef.value.addEventListener('scroll', (event: Event) => {
88 | event.preventDefault();
89 | handleScroll();
90 | });
91 | handleScroll();
92 | }
93 | });
94 |
95 | onUnmounted(() => {
96 | resizeObserver.disconnect();
97 | });
98 |
99 | return {
100 | startIndex,
101 | endIndex,
102 | startOffset,
103 | listHeight,
104 | };
105 | };
106 |
107 | export default useVirtualGridList;
108 |
--------------------------------------------------------------------------------
/src/layout/index.vue:
--------------------------------------------------------------------------------
1 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/main.ts:
--------------------------------------------------------------------------------
1 | import { createApp } from 'vue';
2 | import ElementPlus from 'element-plus';
3 |
4 | import App from './App.vue';
5 | import router from './router';
6 |
7 | import './style.css';
8 | import 'element-plus/theme-chalk/index.css';
9 |
10 | const app = createApp(App);
11 | app.use(ElementPlus);
12 | app.use(router);
13 | app.mount('#app');
14 |
--------------------------------------------------------------------------------
/src/router/index.ts:
--------------------------------------------------------------------------------
1 | import {
2 | createRouter,
3 | createWebHashHistory,
4 | NavigationGuardNext,
5 | RouteLocationNormalized,
6 | RouteRecordRaw,
7 | } from 'vue-router';
8 |
9 | import { useRouterCache } from '../hooks/useRouterCache';
10 |
11 | export const routes: RouteRecordRaw[] = [
12 | {
13 | path: '/edit-table',
14 | name: 'EditTable',
15 | component: () => import('../views/edit-table/index.vue'),
16 | },
17 | {
18 | path: '/grid-list',
19 | name: 'GridList',
20 | component: () => import('../views/grid-list/index.vue'),
21 | },
22 | {
23 | path: '/command-dialog',
24 | name: 'CommandDialog',
25 | component: () => import('../views/command-dialog/index.vue'),
26 | },
27 | {
28 | path: '/hotkey',
29 | name: 'HotKey',
30 | component: () => import('../views/hot-key/index.vue'),
31 | },
32 | ];
33 |
34 | const router = createRouter({
35 | history: createWebHashHistory(import.meta.env.VITE_BASE_URL),
36 | routes: [
37 | {
38 | path: '/',
39 | name: 'index',
40 | component: () => import('../layout/index.vue'),
41 | children: routes,
42 | },
43 | ],
44 | });
45 |
46 | const { cacheRouter } = useRouterCache();
47 | router.beforeEach((to: RouteLocationNormalized, from: RouteLocationNormalized, next: NavigationGuardNext) => {
48 | console.log('=====', to.path);
49 |
50 | cacheRouter(from, to);
51 | next();
52 | });
53 |
54 | export default router;
55 |
--------------------------------------------------------------------------------
/src/router/types.ts:
--------------------------------------------------------------------------------
1 | import 'vue-router';
2 |
3 | export type LeaveCaches = string[];
4 |
5 | declare module 'vue-router' {
6 | interface RouteMeta {
7 | leaveCaches?: LeaveCaches;
8 | menu?: boolean | string;
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/style.css:
--------------------------------------------------------------------------------
1 | :root {
2 | font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;
3 | line-height: 1.5;
4 | font-weight: 400;
5 |
6 | color-scheme: light dark;
7 | color: rgba(255, 255, 255, 0.87);
8 | background-color: #242424;
9 |
10 | font-synthesis: none;
11 | text-rendering: optimizeLegibility;
12 | -webkit-font-smoothing: antialiased;
13 | -moz-osx-font-smoothing: grayscale;
14 | -webkit-text-size-adjust: 100%;
15 | }
16 |
17 | a {
18 | font-weight: 500;
19 | color: #646cff;
20 | text-decoration: inherit;
21 | }
22 | a:hover {
23 | color: #535bf2;
24 | }
25 |
26 | body {
27 | margin: 0;
28 | display: flex;
29 | place-items: center;
30 | min-width: 320px;
31 | height: 100%;
32 | position: absolute;
33 | width: 100%;
34 | }
35 |
36 | h1 {
37 | font-size: 3.2em;
38 | line-height: 1.1;
39 | }
40 |
41 | button {
42 | border-radius: 8px;
43 | border: 1px solid transparent;
44 | padding: 0.6em 1.2em;
45 | font-size: 1em;
46 | font-weight: 500;
47 | font-family: inherit;
48 | background-color: #1a1a1a;
49 | cursor: pointer;
50 | transition: border-color 0.25s;
51 | }
52 | button:hover {
53 | border-color: #646cff;
54 | }
55 | button:focus,
56 | button:focus-visible {
57 | outline: 4px auto -webkit-focus-ring-color;
58 | }
59 |
60 | .card {
61 | padding: 2em;
62 | }
63 |
64 | #app {
65 | width: 100%;
66 | height: 100%;
67 | margin: 0 auto;
68 | text-align: center;
69 | background-color: rgb(35, 35, 126);
70 | color: rgba(255, 255, 255, 0.87);
71 | }
72 |
73 | @media (prefers-color-scheme: light) {
74 | :root {
75 | color: #213547;
76 | background-color: #ffffff;
77 | }
78 | a:hover {
79 | color: #747bff;
80 | }
81 | button {
82 | background-color: #f9f9f9;
83 | }
84 | }
85 |
--------------------------------------------------------------------------------
/src/utils/error.ts:
--------------------------------------------------------------------------------
1 | export class BaseError extends Error {
2 | cause?: Error;
3 |
4 | constructor(message: string, options?: ErrorOptions) {
5 | super(message, options);
6 | this.name = this.constructor.name;
7 | }
8 | }
9 |
10 | export class EnvironmentError extends BaseError {
11 | constructor() {
12 | super('This is not a browser environment');
13 | }
14 | }
15 |
16 | export class FileSelectCancelError extends BaseError {
17 | constructor() {
18 | super('Cancel select');
19 | }
20 | }
21 |
22 | export class IllegalFileError extends BaseError {
23 | accepts: string[];
24 |
25 | constructor(accepts: string[]) {
26 | super(`Please select files in ${accepts} format`);
27 | this.accepts = accepts;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/utils/file.ts:
--------------------------------------------------------------------------------
1 | import { EnvironmentError, FileSelectCancelError, IllegalFileError } from './error';
2 |
3 | /**
4 | * 获取文件后缀
5 | *
6 | * @param file 文件或文件名
7 | * @returns
8 | */
9 | export const getFileExtension = (file: File | string): string => {
10 | let fileName: string;
11 | if (file instanceof File) {
12 | fileName = file.name;
13 | } else {
14 | fileName = file;
15 | }
16 | return fileName.match(/\.([0-9a-z]+)(?:[\\?#]|$)/i)![1] ?? '';
17 | };
18 |
19 | /**
20 | * 选择系统文件
21 | *
22 | * @param accepts 可选文件后缀
23 | * @param multiple 是否多选
24 | * @returns
25 | */
26 | export const selectFile = (accepts: string[] = ['*'], multiple?: boolean): Promise => {
27 | if (!globalThis.document || !(globalThis.document instanceof Document)) {
28 | throw new EnvironmentError();
29 | }
30 | const inputElement = globalThis.document.createElement('input');
31 | inputElement.setAttribute('type', 'file');
32 | inputElement.setAttribute('visibility', 'hidden');
33 | if (Array.isArray(accepts) && accepts.length > 0) {
34 | inputElement.setAttribute('accept', accepts.join(','));
35 | }
36 | if (multiple) {
37 | inputElement.setAttribute('multiple', 'true');
38 | }
39 | inputElement.click();
40 |
41 | return new Promise((resolve, reject) => {
42 | globalThis.addEventListener(
43 | 'focus',
44 | () => {
45 | setTimeout(() => {
46 | if (!inputElement.files || inputElement.files?.length === 0) {
47 | reject(new FileSelectCancelError());
48 | }
49 | }, 1000);
50 | },
51 | { once: true }
52 | );
53 | inputElement.addEventListener('change', () => {
54 | if (!inputElement.files || inputElement.files?.length === 0) {
55 | reject(new FileSelectCancelError());
56 | } else {
57 | const files = Array.from(inputElement.files);
58 | if (illegalFiles(files)) {
59 | reject(new IllegalFileError(accepts));
60 | }
61 | resolve(files);
62 | }
63 | });
64 | });
65 |
66 | function illegalFiles(files: File[]): boolean {
67 | return !accepts.includes('*') && files.some((file) => !accepts.includes(`.${getFileExtension(file)}`));
68 | }
69 | };
70 |
71 | export const isImage = (file: File): boolean => {
72 | return /^image\//.test(file.type);
73 | };
74 |
75 | export const isVideo = (file: File): boolean => {
76 | return /^video\//.test(file.type);
77 | };
78 |
79 | export const isAudio = (file: File): boolean => {
80 | return /^audio\//.test(file.type);
81 | };
82 |
83 | export const isWordDocument = (file: File): boolean => {
84 | return /^application\/(?:vnd\.openxmlformats-officedocument\.wordprocessingml\.document|msword|vnd\.ms-word\.document\.macroenabled\.12|vnd\.openxmlformats-officedocument\.wordprocessingml\.template|vnd\.ms-word\.template\.macroenabled\.12)$/.test(
85 | file.type
86 | );
87 | };
88 |
89 | export const isExcelDocument = (file: File): boolean => {
90 | return /^application\/(?:vnd\.openxmlformats-officedocument\.spreadsheetml\.sheet|vnd\.ms-excel|vnd\.ms-excel\.sheet\.macroenabled\.12|vnd\.openxmlformats-officedocument\.spreadsheetml\.template|vnd\.ms-excel\.template\.macroenabled\.12)$/.test(
91 | file.type
92 | );
93 | };
94 |
95 | export const isPowerPointDocument = (file: File): boolean => {
96 | return /^application\/(?:vnd\.ms-powerpoint|vnd\.openxmlformats-officedocument\.presentationml\.presentation|vnd\.ms-powerpoint\.presentation\.macroenabled\.12|vnd\.openxmlformats-officedocument\.presentationml\.template|vnd\.ms-powerpoint\.template\.macroenabled\.12)$/.test(
97 | file.type
98 | );
99 | };
100 |
101 | export const isJsonDocument = (file: File): boolean => {
102 | return /^application\/json$/.test(file.type);
103 | };
104 |
105 | export const isXmlDocument = (file: File): boolean => {
106 | return /^(?:application|text)\/(?:xml|xhtml\+xml)$/.test(file.type);
107 | };
108 |
109 | export interface FileHandler {
110 | (fileRender: FileReader): void;
111 | }
112 |
113 | export const readeFile = (fileHandler: FileHandler): Promise => {
114 | const reader = new FileReader();
115 | return new Promise((resolve, reject) => {
116 | reader.addEventListener('progress', (event: FileReaderEventMap['progress']) => {
117 | const size = '(' + Math.floor(event.total / 1000) + ' KB)';
118 | const progress = Math.floor((event.loaded / event.total) * 100) + '%';
119 |
120 | console.log(`Loading size: ${size} progress: ${progress}`);
121 | });
122 |
123 | reader.addEventListener('load', (event: FileReaderEventMap['load']) => {
124 | resolve(event.target?.result as T);
125 | });
126 |
127 | reader.addEventListener('error', (event: FileReaderEventMap['error']) => {
128 | reject(event);
129 | });
130 |
131 | fileHandler(reader);
132 | });
133 | };
134 |
--------------------------------------------------------------------------------
/src/utils/index.ts:
--------------------------------------------------------------------------------
1 | export * from './error';
2 | export * from './file';
3 |
--------------------------------------------------------------------------------
/src/views/command-dialog/README.md:
--------------------------------------------------------------------------------
1 | ## useCommandComponent
2 |
3 | 阅读[《极致舒适的 Vue 弹窗使用方案》](https://juejin.cn/post/7253062314306322491)获取更多 useCommandComponent 的信息
4 |
--------------------------------------------------------------------------------
/src/views/command-dialog/components/Comp.vue:
--------------------------------------------------------------------------------
1 |
14 |
15 |
16 |
17 | {{ props.text }}
18 | 提交(需确认)
19 |
20 |
21 |
--------------------------------------------------------------------------------
/src/views/command-dialog/components/MyDialog.vue:
--------------------------------------------------------------------------------
1 |
27 |
28 |
29 |
30 | This is a message
31 |
32 |
33 | Cancel
34 | Confirm
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/src/views/command-dialog/index.vue:
--------------------------------------------------------------------------------
1 |
11 |
12 |
13 |
14 | 打开弹窗
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/views/edit-table/README.md:
--------------------------------------------------------------------------------
1 | ## EditTable
2 |
3 | 阅读[《极致舒适的 Vue 可编辑表格》](https://juejin.cn/post/7242140832379584567)获取更多 EditTable 的信息
4 |
5 | ### 效果演示
6 |
7 | #### 无编辑效果
8 |
9 | 
10 |
11 | #### 可编辑效果
12 |
13 | 
14 |
15 | #### 删除效果
16 |
17 | 
18 |
19 | #### 新增效果
20 |
21 | 
22 |
23 | #### 表单校验效果
24 |
25 | 
26 |
27 | #### 获取编辑结果
28 |
29 | 
30 |
31 | ### 配置说明
32 |
33 | #### EditTable 属性
34 |
35 | | 属性名 | 说明 | 类型 | 可选值 | 默认值 |
36 | | ----------- | ------------------------------------------------------------------------- | -------- | ------ | ------ |
37 | | data-source | 显示的数据 | array | — | — |
38 | | request | 动态数据,如果同时配置了 data-source 和 request,则最终渲染为两个数据的和 | function | — | — |
39 |
40 | 其他属性参考:[ElementPlusTable](https://element-plus.gitee.io/zh-CN/component/table.html#table-%E5%B1%9E%E6%80%A7)
41 |
42 | #### EditTable 方法
43 |
44 | | 方法名 | 说明 | 参数 |
45 | | -------------------------- | ------------------------------------------------------------------ | ------ |
46 | | editActions.addRow | 增加一行可编辑态的行 | row |
47 | | editActions.deleteRow | 删除指定行,不论该行是编辑态还是非编辑态都会被删除 | $index |
48 | | editActions.startEditable | 指定行变为编辑态 | $index |
49 | | editActions.saveEditable | 保存编辑态并触发表单校验,如果校验通过,编辑数据会被更新到表格中。 | $index |
50 | | editActions.cancelEditable | 指定行取消编辑态 | $index |
51 |
52 | 其他方法参考: [ElementPlusTable](https://element-plus.gitee.io/zh-CN/component/table.html#table-%E6%96%B9%E6%B3%95)
53 |
54 | #### EditTableColumn 插槽
55 |
56 | | 插槽名 | 说明 | 作用域 |
57 | | ------- | ---------------------- | ---------------------------------------------------------------------------------------------------------------- |
58 | | default | 自定义列的内容 | `{$index, row, column, actions}`,actions 包括了`addRow, deleteRow, startEditable, saveEditable, cancelEditable` |
59 | | edit | 编辑态的自定义列的内容 | 同上 |
60 |
--------------------------------------------------------------------------------
/src/views/edit-table/index.vue:
--------------------------------------------------------------------------------
1 |
36 |
37 |
38 |
39 |
40 | 无编辑效果
41 |
42 |
43 |
44 |
45 |
46 |
47 |
76 |
107 |
139 |
183 |
228 |
229 | 另一种数据源配置
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 |
263 |
--------------------------------------------------------------------------------
/src/views/grid-list/README.md:
--------------------------------------------------------------------------------
1 | ## GridList
2 |
3 | 阅读[《极致舒适的 Vue 高性能列表》](https://juejin.cn/post/7248606302896832570)获取更多 GridList 的信息
4 |
5 | ### 效果演示
6 |
7 | #### Grid 布局预览
8 |
9 | 
10 |
11 | #### 单列布局预览
12 |
13 | 
14 |
15 | #### 分页加载预览
16 |
17 | 
18 |
19 | #### 虚拟列表效果
20 |
21 | 
22 |
--------------------------------------------------------------------------------
/src/views/grid-list/index.vue:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
21 | 暂无数据
22 |
23 |
24 | {{ item }}
25 |
26 |
27 | 加载中...
28 |
29 |
30 | 没有更多了
31 |
32 |
33 |
34 |
35 |
53 |
--------------------------------------------------------------------------------
/src/views/hot-key/index.vue:
--------------------------------------------------------------------------------
1 |
128 |
129 |
130 |
131 |
132 |
133 |
快捷键绑定区域
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
快捷键消息
145 |
{{ message }}
146 |
147 |
148 |
149 |
159 |
--------------------------------------------------------------------------------
/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "esnext",
4 | "module": "esnext",
5 | "strict": true,
6 | "jsx": "preserve",
7 | "moduleResolution": "node",
8 | "skipLibCheck": true,
9 | "esModuleInterop": true,
10 | "allowSyntheticDefaultImports": true,
11 | "importHelpers": true,
12 | "experimentalDecorators": true,
13 | "emitDecoratorMetadata": true,
14 | "resolveJsonModule": true,
15 | "sourceMap": true,
16 | "baseUrl": ".",
17 | "lib": ["esnext", "dom", "dom.iterable", "scripthost"],
18 | "paths": {
19 | "third-lib": ["node_modules/third-lib"]
20 | },
21 | "types": ["node", "vite/client"]
22 | },
23 | "exclude": ["**/dist/**/*", "**/node_modules/**/*"]
24 | }
25 |
--------------------------------------------------------------------------------
/tsconfig.node.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "composite": true,
4 | "skipLibCheck": true,
5 | "module": "ESNext",
6 | "moduleResolution": "bundler",
7 | "allowSyntheticDefaultImports": true
8 | },
9 | "include": ["vite.config.ts"]
10 | }
11 |
--------------------------------------------------------------------------------
/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { join } from 'path';
2 |
3 | import { defineConfig } from 'vite';
4 | import vue from '@vitejs/plugin-vue';
5 |
6 | // https://vitejs.dev/config/
7 | export default defineConfig({
8 | base: '/vue-aide',
9 | plugins: [vue()],
10 | build: {
11 | emptyOutDir: true,
12 | },
13 | resolve: {
14 | alias: [{ find: '@', replacement: join(__dirname, './src') }],
15 | },
16 | optimizeDeps: {
17 | esbuildOptions: {
18 | define: {
19 | global: 'globalThis',
20 | },
21 | },
22 | },
23 | server: {
24 | fs: {
25 | strict: false,
26 | },
27 | host: '0.0.0.0',
28 | port: 8000,
29 | strictPort: true,
30 | },
31 | });
32 |
--------------------------------------------------------------------------------