├── .gitignore
├── .prettierrc
├── .vscode
└── extensions.json
├── README.md
├── index.html
├── package-lock.json
├── package.json
├── public
└── vite.svg
├── src
├── App.vue
├── assets
│ ├── 箭头_向上.svg
│ └── 箭头_向下.svg
├── components
│ ├── Content.vue
│ └── Sidebar.vue
├── doubleEndedDiff
│ └── index.js
├── main.js
└── store.js
└── vite.config.js
/.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 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | semi: false
2 | singleQuote: true
3 | printWidth: 80
4 | trailingComma: 'none'
5 | arrowParens: 'avoid'
--------------------------------------------------------------------------------
/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": ["Vue.volar"]
3 | }
4 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 | # 虚拟DOM的diff算法动画演示
3 |
4 | 目前只支持双端diff算法,后续会增加快速diff算法。
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Vite + Vue
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vnode-visualization",
3 | "version": "0.0.0",
4 | "lockfileVersion": 2,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "vnode-visualization",
9 | "version": "0.0.0",
10 | "dependencies": {
11 | "codemirror": "^5.65.9",
12 | "pinia": "^2.0.23",
13 | "vue": "^3.2.37"
14 | },
15 | "devDependencies": {
16 | "@vitejs/plugin-vue": "^3.1.0",
17 | "less": "^4.1.3",
18 | "less-loader": "^11.1.0",
19 | "vite": "^3.1.0"
20 | }
21 | },
22 | "node_modules/@babel/parser": {
23 | "version": "7.20.0",
24 | "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.20.0.tgz",
25 | "integrity": "sha512-G9VgAhEaICnz8iiJeGJQyVl6J2nTjbW0xeisva0PK6XcKsga7BIaqm4ZF8Rg1Wbaqmy6znspNqhPaPkyukujzg==",
26 | "bin": {
27 | "parser": "bin/babel-parser.js"
28 | },
29 | "engines": {
30 | "node": ">=6.0.0"
31 | }
32 | },
33 | "node_modules/@esbuild/android-arm": {
34 | "version": "0.15.12",
35 | "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.15.12.tgz",
36 | "integrity": "sha512-IC7TqIqiyE0MmvAhWkl/8AEzpOtbhRNDo7aph47We1NbE5w2bt/Q+giAhe0YYeVpYnIhGMcuZY92qDK6dQauvA==",
37 | "cpu": [
38 | "arm"
39 | ],
40 | "dev": true,
41 | "optional": true,
42 | "os": [
43 | "android"
44 | ],
45 | "engines": {
46 | "node": ">=12"
47 | }
48 | },
49 | "node_modules/@esbuild/linux-loong64": {
50 | "version": "0.15.12",
51 | "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.15.12.tgz",
52 | "integrity": "sha512-tZEowDjvU7O7I04GYvWQOS4yyP9E/7YlsB0jjw1Ycukgr2ycEzKyIk5tms5WnLBymaewc6VmRKnn5IJWgK4eFw==",
53 | "cpu": [
54 | "loong64"
55 | ],
56 | "dev": true,
57 | "optional": true,
58 | "os": [
59 | "linux"
60 | ],
61 | "engines": {
62 | "node": ">=12"
63 | }
64 | },
65 | "node_modules/@jridgewell/gen-mapping": {
66 | "version": "0.3.2",
67 | "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
68 | "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
69 | "dev": true,
70 | "peer": true,
71 | "dependencies": {
72 | "@jridgewell/set-array": "^1.0.1",
73 | "@jridgewell/sourcemap-codec": "^1.4.10",
74 | "@jridgewell/trace-mapping": "^0.3.9"
75 | },
76 | "engines": {
77 | "node": ">=6.0.0"
78 | }
79 | },
80 | "node_modules/@jridgewell/resolve-uri": {
81 | "version": "3.1.0",
82 | "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
83 | "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
84 | "dev": true,
85 | "peer": true,
86 | "engines": {
87 | "node": ">=6.0.0"
88 | }
89 | },
90 | "node_modules/@jridgewell/set-array": {
91 | "version": "1.1.2",
92 | "resolved": "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.1.2.tgz",
93 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
94 | "dev": true,
95 | "peer": true,
96 | "engines": {
97 | "node": ">=6.0.0"
98 | }
99 | },
100 | "node_modules/@jridgewell/source-map": {
101 | "version": "0.3.2",
102 | "resolved": "https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.2.tgz",
103 | "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==",
104 | "dev": true,
105 | "peer": true,
106 | "dependencies": {
107 | "@jridgewell/gen-mapping": "^0.3.0",
108 | "@jridgewell/trace-mapping": "^0.3.9"
109 | }
110 | },
111 | "node_modules/@jridgewell/sourcemap-codec": {
112 | "version": "1.4.14",
113 | "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
114 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
115 | "dev": true,
116 | "peer": true
117 | },
118 | "node_modules/@jridgewell/trace-mapping": {
119 | "version": "0.3.17",
120 | "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
121 | "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
122 | "dev": true,
123 | "peer": true,
124 | "dependencies": {
125 | "@jridgewell/resolve-uri": "3.1.0",
126 | "@jridgewell/sourcemap-codec": "1.4.14"
127 | }
128 | },
129 | "node_modules/@types/eslint": {
130 | "version": "8.4.8",
131 | "resolved": "https://registry.npmmirror.com/@types/eslint/-/eslint-8.4.8.tgz",
132 | "integrity": "sha512-zUCKQI1bUCTi+0kQs5ZQzQ/XILWRLIlh15FXWNykJ+NG3TMKMVvwwC6GP3DR1Ylga15fB7iAExSzc4PNlR5i3w==",
133 | "dev": true,
134 | "peer": true,
135 | "dependencies": {
136 | "@types/estree": "*",
137 | "@types/json-schema": "*"
138 | }
139 | },
140 | "node_modules/@types/eslint-scope": {
141 | "version": "3.7.4",
142 | "resolved": "https://registry.npmmirror.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz",
143 | "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==",
144 | "dev": true,
145 | "peer": true,
146 | "dependencies": {
147 | "@types/eslint": "*",
148 | "@types/estree": "*"
149 | }
150 | },
151 | "node_modules/@types/estree": {
152 | "version": "0.0.51",
153 | "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-0.0.51.tgz",
154 | "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==",
155 | "dev": true,
156 | "peer": true
157 | },
158 | "node_modules/@types/json-schema": {
159 | "version": "7.0.11",
160 | "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.11.tgz",
161 | "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
162 | "dev": true,
163 | "peer": true
164 | },
165 | "node_modules/@types/node": {
166 | "version": "18.11.7",
167 | "resolved": "https://registry.npmmirror.com/@types/node/-/node-18.11.7.tgz",
168 | "integrity": "sha512-LhFTglglr63mNXUSRYD8A+ZAIu5sFqNJ4Y2fPuY7UlrySJH87rRRlhtVmMHplmfk5WkoJGmDjE9oiTfyX94CpQ==",
169 | "dev": true,
170 | "peer": true
171 | },
172 | "node_modules/@vitejs/plugin-vue": {
173 | "version": "3.2.0",
174 | "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-3.2.0.tgz",
175 | "integrity": "sha512-E0tnaL4fr+qkdCNxJ+Xd0yM31UwMkQje76fsDVBBUCoGOUPexu2VDUYHL8P4CwV+zMvWw6nlRw19OnRKmYAJpw==",
176 | "dev": true,
177 | "engines": {
178 | "node": "^14.18.0 || >=16.0.0"
179 | },
180 | "peerDependencies": {
181 | "vite": "^3.0.0",
182 | "vue": "^3.2.25"
183 | }
184 | },
185 | "node_modules/@vue/compiler-core": {
186 | "version": "3.2.41",
187 | "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.41.tgz",
188 | "integrity": "sha512-oA4mH6SA78DT+96/nsi4p9DX97PHcNROxs51lYk7gb9Z4BPKQ3Mh+BLn6CQZBw857Iuhu28BfMSRHAlPvD4vlw==",
189 | "dependencies": {
190 | "@babel/parser": "^7.16.4",
191 | "@vue/shared": "3.2.41",
192 | "estree-walker": "^2.0.2",
193 | "source-map": "^0.6.1"
194 | }
195 | },
196 | "node_modules/@vue/compiler-dom": {
197 | "version": "3.2.41",
198 | "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.41.tgz",
199 | "integrity": "sha512-xe5TbbIsonjENxJsYRbDJvthzqxLNk+tb3d/c47zgREDa/PCp6/Y4gC/skM4H6PIuX5DAxm7fFJdbjjUH2QTMw==",
200 | "dependencies": {
201 | "@vue/compiler-core": "3.2.41",
202 | "@vue/shared": "3.2.41"
203 | }
204 | },
205 | "node_modules/@vue/compiler-sfc": {
206 | "version": "3.2.41",
207 | "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.41.tgz",
208 | "integrity": "sha512-+1P2m5kxOeaxVmJNXnBskAn3BenbTmbxBxWOtBq3mQTCokIreuMULFantBUclP0+KnzNCMOvcnKinqQZmiOF8w==",
209 | "dependencies": {
210 | "@babel/parser": "^7.16.4",
211 | "@vue/compiler-core": "3.2.41",
212 | "@vue/compiler-dom": "3.2.41",
213 | "@vue/compiler-ssr": "3.2.41",
214 | "@vue/reactivity-transform": "3.2.41",
215 | "@vue/shared": "3.2.41",
216 | "estree-walker": "^2.0.2",
217 | "magic-string": "^0.25.7",
218 | "postcss": "^8.1.10",
219 | "source-map": "^0.6.1"
220 | }
221 | },
222 | "node_modules/@vue/compiler-ssr": {
223 | "version": "3.2.41",
224 | "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.41.tgz",
225 | "integrity": "sha512-Y5wPiNIiaMz/sps8+DmhaKfDm1xgj6GrH99z4gq2LQenfVQcYXmHIOBcs5qPwl7jaW3SUQWjkAPKMfQemEQZwQ==",
226 | "dependencies": {
227 | "@vue/compiler-dom": "3.2.41",
228 | "@vue/shared": "3.2.41"
229 | }
230 | },
231 | "node_modules/@vue/devtools-api": {
232 | "version": "6.4.5",
233 | "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.4.5.tgz",
234 | "integrity": "sha512-JD5fcdIuFxU4fQyXUu3w2KpAJHzTVdN+p4iOX2lMWSHMOoQdMAcpFLZzm9Z/2nmsoZ1a96QEhZ26e50xLBsgOQ=="
235 | },
236 | "node_modules/@vue/reactivity": {
237 | "version": "3.2.41",
238 | "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.41.tgz",
239 | "integrity": "sha512-9JvCnlj8uc5xRiQGZ28MKGjuCoPhhTwcoAdv3o31+cfGgonwdPNuvqAXLhlzu4zwqavFEG5tvaoINQEfxz+l6g==",
240 | "dependencies": {
241 | "@vue/shared": "3.2.41"
242 | }
243 | },
244 | "node_modules/@vue/reactivity-transform": {
245 | "version": "3.2.41",
246 | "resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.41.tgz",
247 | "integrity": "sha512-mK5+BNMsL4hHi+IR3Ft/ho6Za+L3FA5j8WvreJ7XzHrqkPq8jtF/SMo7tuc9gHjLDwKZX1nP1JQOKo9IEAn54A==",
248 | "dependencies": {
249 | "@babel/parser": "^7.16.4",
250 | "@vue/compiler-core": "3.2.41",
251 | "@vue/shared": "3.2.41",
252 | "estree-walker": "^2.0.2",
253 | "magic-string": "^0.25.7"
254 | }
255 | },
256 | "node_modules/@vue/runtime-core": {
257 | "version": "3.2.41",
258 | "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.41.tgz",
259 | "integrity": "sha512-0LBBRwqnI0p4FgIkO9q2aJBBTKDSjzhnxrxHYengkAF6dMOjeAIZFDADAlcf2h3GDALWnblbeprYYpItiulSVQ==",
260 | "dependencies": {
261 | "@vue/reactivity": "3.2.41",
262 | "@vue/shared": "3.2.41"
263 | }
264 | },
265 | "node_modules/@vue/runtime-dom": {
266 | "version": "3.2.41",
267 | "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.41.tgz",
268 | "integrity": "sha512-U7zYuR1NVIP8BL6jmOqmapRAHovEFp7CSw4pR2FacqewXNGqZaRfHoNLQsqQvVQ8yuZNZtxSZy0FFyC70YXPpA==",
269 | "dependencies": {
270 | "@vue/runtime-core": "3.2.41",
271 | "@vue/shared": "3.2.41",
272 | "csstype": "^2.6.8"
273 | }
274 | },
275 | "node_modules/@vue/server-renderer": {
276 | "version": "3.2.41",
277 | "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.41.tgz",
278 | "integrity": "sha512-7YHLkfJdTlsZTV0ae5sPwl9Gn/EGr2hrlbcS/8naXm2CDpnKUwC68i1wGlrYAfIgYWL7vUZwk2GkYLQH5CvFig==",
279 | "dependencies": {
280 | "@vue/compiler-ssr": "3.2.41",
281 | "@vue/shared": "3.2.41"
282 | },
283 | "peerDependencies": {
284 | "vue": "3.2.41"
285 | }
286 | },
287 | "node_modules/@vue/shared": {
288 | "version": "3.2.41",
289 | "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.41.tgz",
290 | "integrity": "sha512-W9mfWLHmJhkfAmV+7gDjcHeAWALQtgGT3JErxULl0oz6R6+3ug91I7IErs93eCFhPCZPHBs4QJS7YWEV7A3sxw=="
291 | },
292 | "node_modules/@webassemblyjs/ast": {
293 | "version": "1.11.1",
294 | "resolved": "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.11.1.tgz",
295 | "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==",
296 | "dev": true,
297 | "peer": true,
298 | "dependencies": {
299 | "@webassemblyjs/helper-numbers": "1.11.1",
300 | "@webassemblyjs/helper-wasm-bytecode": "1.11.1"
301 | }
302 | },
303 | "node_modules/@webassemblyjs/floating-point-hex-parser": {
304 | "version": "1.11.1",
305 | "resolved": "https://registry.npmmirror.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz",
306 | "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==",
307 | "dev": true,
308 | "peer": true
309 | },
310 | "node_modules/@webassemblyjs/helper-api-error": {
311 | "version": "1.11.1",
312 | "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz",
313 | "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==",
314 | "dev": true,
315 | "peer": true
316 | },
317 | "node_modules/@webassemblyjs/helper-buffer": {
318 | "version": "1.11.1",
319 | "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz",
320 | "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==",
321 | "dev": true,
322 | "peer": true
323 | },
324 | "node_modules/@webassemblyjs/helper-numbers": {
325 | "version": "1.11.1",
326 | "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz",
327 | "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==",
328 | "dev": true,
329 | "peer": true,
330 | "dependencies": {
331 | "@webassemblyjs/floating-point-hex-parser": "1.11.1",
332 | "@webassemblyjs/helper-api-error": "1.11.1",
333 | "@xtuc/long": "4.2.2"
334 | }
335 | },
336 | "node_modules/@webassemblyjs/helper-wasm-bytecode": {
337 | "version": "1.11.1",
338 | "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz",
339 | "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==",
340 | "dev": true,
341 | "peer": true
342 | },
343 | "node_modules/@webassemblyjs/helper-wasm-section": {
344 | "version": "1.11.1",
345 | "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz",
346 | "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==",
347 | "dev": true,
348 | "peer": true,
349 | "dependencies": {
350 | "@webassemblyjs/ast": "1.11.1",
351 | "@webassemblyjs/helper-buffer": "1.11.1",
352 | "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
353 | "@webassemblyjs/wasm-gen": "1.11.1"
354 | }
355 | },
356 | "node_modules/@webassemblyjs/ieee754": {
357 | "version": "1.11.1",
358 | "resolved": "https://registry.npmmirror.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz",
359 | "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==",
360 | "dev": true,
361 | "peer": true,
362 | "dependencies": {
363 | "@xtuc/ieee754": "^1.2.0"
364 | }
365 | },
366 | "node_modules/@webassemblyjs/leb128": {
367 | "version": "1.11.1",
368 | "resolved": "https://registry.npmmirror.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz",
369 | "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==",
370 | "dev": true,
371 | "peer": true,
372 | "dependencies": {
373 | "@xtuc/long": "4.2.2"
374 | }
375 | },
376 | "node_modules/@webassemblyjs/utf8": {
377 | "version": "1.11.1",
378 | "resolved": "https://registry.npmmirror.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz",
379 | "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==",
380 | "dev": true,
381 | "peer": true
382 | },
383 | "node_modules/@webassemblyjs/wasm-edit": {
384 | "version": "1.11.1",
385 | "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz",
386 | "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==",
387 | "dev": true,
388 | "peer": true,
389 | "dependencies": {
390 | "@webassemblyjs/ast": "1.11.1",
391 | "@webassemblyjs/helper-buffer": "1.11.1",
392 | "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
393 | "@webassemblyjs/helper-wasm-section": "1.11.1",
394 | "@webassemblyjs/wasm-gen": "1.11.1",
395 | "@webassemblyjs/wasm-opt": "1.11.1",
396 | "@webassemblyjs/wasm-parser": "1.11.1",
397 | "@webassemblyjs/wast-printer": "1.11.1"
398 | }
399 | },
400 | "node_modules/@webassemblyjs/wasm-gen": {
401 | "version": "1.11.1",
402 | "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz",
403 | "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==",
404 | "dev": true,
405 | "peer": true,
406 | "dependencies": {
407 | "@webassemblyjs/ast": "1.11.1",
408 | "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
409 | "@webassemblyjs/ieee754": "1.11.1",
410 | "@webassemblyjs/leb128": "1.11.1",
411 | "@webassemblyjs/utf8": "1.11.1"
412 | }
413 | },
414 | "node_modules/@webassemblyjs/wasm-opt": {
415 | "version": "1.11.1",
416 | "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz",
417 | "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==",
418 | "dev": true,
419 | "peer": true,
420 | "dependencies": {
421 | "@webassemblyjs/ast": "1.11.1",
422 | "@webassemblyjs/helper-buffer": "1.11.1",
423 | "@webassemblyjs/wasm-gen": "1.11.1",
424 | "@webassemblyjs/wasm-parser": "1.11.1"
425 | }
426 | },
427 | "node_modules/@webassemblyjs/wasm-parser": {
428 | "version": "1.11.1",
429 | "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz",
430 | "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==",
431 | "dev": true,
432 | "peer": true,
433 | "dependencies": {
434 | "@webassemblyjs/ast": "1.11.1",
435 | "@webassemblyjs/helper-api-error": "1.11.1",
436 | "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
437 | "@webassemblyjs/ieee754": "1.11.1",
438 | "@webassemblyjs/leb128": "1.11.1",
439 | "@webassemblyjs/utf8": "1.11.1"
440 | }
441 | },
442 | "node_modules/@webassemblyjs/wast-printer": {
443 | "version": "1.11.1",
444 | "resolved": "https://registry.npmmirror.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz",
445 | "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==",
446 | "dev": true,
447 | "peer": true,
448 | "dependencies": {
449 | "@webassemblyjs/ast": "1.11.1",
450 | "@xtuc/long": "4.2.2"
451 | }
452 | },
453 | "node_modules/@xtuc/ieee754": {
454 | "version": "1.2.0",
455 | "resolved": "https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
456 | "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
457 | "dev": true,
458 | "peer": true
459 | },
460 | "node_modules/@xtuc/long": {
461 | "version": "4.2.2",
462 | "resolved": "https://registry.npmmirror.com/@xtuc/long/-/long-4.2.2.tgz",
463 | "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
464 | "dev": true,
465 | "peer": true
466 | },
467 | "node_modules/acorn": {
468 | "version": "8.8.1",
469 | "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.8.1.tgz",
470 | "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==",
471 | "dev": true,
472 | "peer": true,
473 | "bin": {
474 | "acorn": "bin/acorn"
475 | },
476 | "engines": {
477 | "node": ">=0.4.0"
478 | }
479 | },
480 | "node_modules/acorn-import-assertions": {
481 | "version": "1.8.0",
482 | "resolved": "https://registry.npmmirror.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz",
483 | "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==",
484 | "dev": true,
485 | "peer": true,
486 | "peerDependencies": {
487 | "acorn": "^8"
488 | }
489 | },
490 | "node_modules/ajv": {
491 | "version": "6.12.6",
492 | "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz",
493 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
494 | "dev": true,
495 | "peer": true,
496 | "dependencies": {
497 | "fast-deep-equal": "^3.1.1",
498 | "fast-json-stable-stringify": "^2.0.0",
499 | "json-schema-traverse": "^0.4.1",
500 | "uri-js": "^4.2.2"
501 | }
502 | },
503 | "node_modules/ajv-keywords": {
504 | "version": "3.5.2",
505 | "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
506 | "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
507 | "dev": true,
508 | "peer": true,
509 | "peerDependencies": {
510 | "ajv": "^6.9.1"
511 | }
512 | },
513 | "node_modules/browserslist": {
514 | "version": "4.21.4",
515 | "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.21.4.tgz",
516 | "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==",
517 | "dev": true,
518 | "peer": true,
519 | "dependencies": {
520 | "caniuse-lite": "^1.0.30001400",
521 | "electron-to-chromium": "^1.4.251",
522 | "node-releases": "^2.0.6",
523 | "update-browserslist-db": "^1.0.9"
524 | },
525 | "bin": {
526 | "browserslist": "cli.js"
527 | },
528 | "engines": {
529 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
530 | }
531 | },
532 | "node_modules/buffer-from": {
533 | "version": "1.1.2",
534 | "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz",
535 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
536 | "dev": true,
537 | "peer": true
538 | },
539 | "node_modules/caniuse-lite": {
540 | "version": "1.0.30001426",
541 | "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001426.tgz",
542 | "integrity": "sha512-n7cosrHLl8AWt0wwZw/PJZgUg3lV0gk9LMI7ikGJwhyhgsd2Nb65vKvmSexCqq/J7rbH3mFG6yZZiPR5dLPW5A==",
543 | "dev": true,
544 | "peer": true
545 | },
546 | "node_modules/chrome-trace-event": {
547 | "version": "1.0.3",
548 | "resolved": "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
549 | "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
550 | "dev": true,
551 | "peer": true,
552 | "engines": {
553 | "node": ">=6.0"
554 | }
555 | },
556 | "node_modules/codemirror": {
557 | "version": "5.65.9",
558 | "resolved": "https://registry.npmmirror.com/codemirror/-/codemirror-5.65.9.tgz",
559 | "integrity": "sha512-19Jox5sAKpusTDgqgKB5dawPpQcY+ipQK7xoEI+MVucEF9qqFaXpeqY1KaoyGBso/wHQoDa4HMMxMjdsS3Zzzw=="
560 | },
561 | "node_modules/commander": {
562 | "version": "2.20.3",
563 | "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz",
564 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
565 | "dev": true,
566 | "peer": true
567 | },
568 | "node_modules/copy-anything": {
569 | "version": "2.0.6",
570 | "resolved": "https://registry.npmmirror.com/copy-anything/-/copy-anything-2.0.6.tgz",
571 | "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==",
572 | "dev": true,
573 | "dependencies": {
574 | "is-what": "^3.14.1"
575 | }
576 | },
577 | "node_modules/csstype": {
578 | "version": "2.6.21",
579 | "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz",
580 | "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w=="
581 | },
582 | "node_modules/debug": {
583 | "version": "3.2.7",
584 | "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz",
585 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
586 | "dev": true,
587 | "optional": true,
588 | "dependencies": {
589 | "ms": "^2.1.1"
590 | }
591 | },
592 | "node_modules/electron-to-chromium": {
593 | "version": "1.4.284",
594 | "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz",
595 | "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==",
596 | "dev": true,
597 | "peer": true
598 | },
599 | "node_modules/enhanced-resolve": {
600 | "version": "5.10.0",
601 | "resolved": "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz",
602 | "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==",
603 | "dev": true,
604 | "peer": true,
605 | "dependencies": {
606 | "graceful-fs": "^4.2.4",
607 | "tapable": "^2.2.0"
608 | },
609 | "engines": {
610 | "node": ">=10.13.0"
611 | }
612 | },
613 | "node_modules/errno": {
614 | "version": "0.1.8",
615 | "resolved": "https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz",
616 | "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
617 | "dev": true,
618 | "optional": true,
619 | "dependencies": {
620 | "prr": "~1.0.1"
621 | },
622 | "bin": {
623 | "errno": "cli.js"
624 | }
625 | },
626 | "node_modules/es-module-lexer": {
627 | "version": "0.9.3",
628 | "resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz",
629 | "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==",
630 | "dev": true,
631 | "peer": true
632 | },
633 | "node_modules/esbuild": {
634 | "version": "0.15.12",
635 | "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.15.12.tgz",
636 | "integrity": "sha512-PcT+/wyDqJQsRVhaE9uX/Oq4XLrFh0ce/bs2TJh4CSaw9xuvI+xFrH2nAYOADbhQjUgAhNWC5LKoUsakm4dxng==",
637 | "dev": true,
638 | "hasInstallScript": true,
639 | "bin": {
640 | "esbuild": "bin/esbuild"
641 | },
642 | "engines": {
643 | "node": ">=12"
644 | },
645 | "optionalDependencies": {
646 | "@esbuild/android-arm": "0.15.12",
647 | "@esbuild/linux-loong64": "0.15.12",
648 | "esbuild-android-64": "0.15.12",
649 | "esbuild-android-arm64": "0.15.12",
650 | "esbuild-darwin-64": "0.15.12",
651 | "esbuild-darwin-arm64": "0.15.12",
652 | "esbuild-freebsd-64": "0.15.12",
653 | "esbuild-freebsd-arm64": "0.15.12",
654 | "esbuild-linux-32": "0.15.12",
655 | "esbuild-linux-64": "0.15.12",
656 | "esbuild-linux-arm": "0.15.12",
657 | "esbuild-linux-arm64": "0.15.12",
658 | "esbuild-linux-mips64le": "0.15.12",
659 | "esbuild-linux-ppc64le": "0.15.12",
660 | "esbuild-linux-riscv64": "0.15.12",
661 | "esbuild-linux-s390x": "0.15.12",
662 | "esbuild-netbsd-64": "0.15.12",
663 | "esbuild-openbsd-64": "0.15.12",
664 | "esbuild-sunos-64": "0.15.12",
665 | "esbuild-windows-32": "0.15.12",
666 | "esbuild-windows-64": "0.15.12",
667 | "esbuild-windows-arm64": "0.15.12"
668 | }
669 | },
670 | "node_modules/esbuild-android-64": {
671 | "version": "0.15.12",
672 | "resolved": "https://registry.npmmirror.com/esbuild-android-64/-/esbuild-android-64-0.15.12.tgz",
673 | "integrity": "sha512-MJKXwvPY9g0rGps0+U65HlTsM1wUs9lbjt5CU19RESqycGFDRijMDQsh68MtbzkqWSRdEtiKS1mtPzKneaAI0Q==",
674 | "cpu": [
675 | "x64"
676 | ],
677 | "dev": true,
678 | "optional": true,
679 | "os": [
680 | "android"
681 | ],
682 | "engines": {
683 | "node": ">=12"
684 | }
685 | },
686 | "node_modules/esbuild-android-arm64": {
687 | "version": "0.15.12",
688 | "resolved": "https://registry.npmmirror.com/esbuild-android-arm64/-/esbuild-android-arm64-0.15.12.tgz",
689 | "integrity": "sha512-Hc9SEcZbIMhhLcvhr1DH+lrrec9SFTiRzfJ7EGSBZiiw994gfkVV6vG0sLWqQQ6DD7V4+OggB+Hn0IRUdDUqvA==",
690 | "cpu": [
691 | "arm64"
692 | ],
693 | "dev": true,
694 | "optional": true,
695 | "os": [
696 | "android"
697 | ],
698 | "engines": {
699 | "node": ">=12"
700 | }
701 | },
702 | "node_modules/esbuild-darwin-64": {
703 | "version": "0.15.12",
704 | "resolved": "https://registry.npmmirror.com/esbuild-darwin-64/-/esbuild-darwin-64-0.15.12.tgz",
705 | "integrity": "sha512-qkmqrTVYPFiePt5qFjP8w/S+GIUMbt6k8qmiPraECUWfPptaPJUGkCKrWEfYFRWB7bY23FV95rhvPyh/KARP8Q==",
706 | "cpu": [
707 | "x64"
708 | ],
709 | "dev": true,
710 | "optional": true,
711 | "os": [
712 | "darwin"
713 | ],
714 | "engines": {
715 | "node": ">=12"
716 | }
717 | },
718 | "node_modules/esbuild-darwin-arm64": {
719 | "version": "0.15.12",
720 | "resolved": "https://registry.npmmirror.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.12.tgz",
721 | "integrity": "sha512-z4zPX02tQ41kcXMyN3c/GfZpIjKoI/BzHrdKUwhC/Ki5BAhWv59A9M8H+iqaRbwpzYrYidTybBwiZAIWCLJAkw==",
722 | "cpu": [
723 | "arm64"
724 | ],
725 | "dev": true,
726 | "optional": true,
727 | "os": [
728 | "darwin"
729 | ],
730 | "engines": {
731 | "node": ">=12"
732 | }
733 | },
734 | "node_modules/esbuild-freebsd-64": {
735 | "version": "0.15.12",
736 | "resolved": "https://registry.npmmirror.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.12.tgz",
737 | "integrity": "sha512-XFL7gKMCKXLDiAiBjhLG0XECliXaRLTZh6hsyzqUqPUf/PY4C6EJDTKIeqqPKXaVJ8+fzNek88285krSz1QECw==",
738 | "cpu": [
739 | "x64"
740 | ],
741 | "dev": true,
742 | "optional": true,
743 | "os": [
744 | "freebsd"
745 | ],
746 | "engines": {
747 | "node": ">=12"
748 | }
749 | },
750 | "node_modules/esbuild-freebsd-arm64": {
751 | "version": "0.15.12",
752 | "resolved": "https://registry.npmmirror.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.12.tgz",
753 | "integrity": "sha512-jwEIu5UCUk6TjiG1X+KQnCGISI+ILnXzIzt9yDVrhjug2fkYzlLbl0K43q96Q3KB66v6N1UFF0r5Ks4Xo7i72g==",
754 | "cpu": [
755 | "arm64"
756 | ],
757 | "dev": true,
758 | "optional": true,
759 | "os": [
760 | "freebsd"
761 | ],
762 | "engines": {
763 | "node": ">=12"
764 | }
765 | },
766 | "node_modules/esbuild-linux-32": {
767 | "version": "0.15.12",
768 | "resolved": "https://registry.npmmirror.com/esbuild-linux-32/-/esbuild-linux-32-0.15.12.tgz",
769 | "integrity": "sha512-uSQuSEyF1kVzGzuIr4XM+v7TPKxHjBnLcwv2yPyCz8riV8VUCnO/C4BF3w5dHiVpCd5Z1cebBtZJNlC4anWpwA==",
770 | "cpu": [
771 | "ia32"
772 | ],
773 | "dev": true,
774 | "optional": true,
775 | "os": [
776 | "linux"
777 | ],
778 | "engines": {
779 | "node": ">=12"
780 | }
781 | },
782 | "node_modules/esbuild-linux-64": {
783 | "version": "0.15.12",
784 | "resolved": "https://registry.npmmirror.com/esbuild-linux-64/-/esbuild-linux-64-0.15.12.tgz",
785 | "integrity": "sha512-QcgCKb7zfJxqT9o5z9ZUeGH1k8N6iX1Y7VNsEi5F9+HzN1OIx7ESxtQXDN9jbeUSPiRH1n9cw6gFT3H4qbdvcA==",
786 | "cpu": [
787 | "x64"
788 | ],
789 | "dev": true,
790 | "optional": true,
791 | "os": [
792 | "linux"
793 | ],
794 | "engines": {
795 | "node": ">=12"
796 | }
797 | },
798 | "node_modules/esbuild-linux-arm": {
799 | "version": "0.15.12",
800 | "resolved": "https://registry.npmmirror.com/esbuild-linux-arm/-/esbuild-linux-arm-0.15.12.tgz",
801 | "integrity": "sha512-Wf7T0aNylGcLu7hBnzMvsTfEXdEdJY/hY3u36Vla21aY66xR0MS5I1Hw8nVquXjTN0A6fk/vnr32tkC/C2lb0A==",
802 | "cpu": [
803 | "arm"
804 | ],
805 | "dev": true,
806 | "optional": true,
807 | "os": [
808 | "linux"
809 | ],
810 | "engines": {
811 | "node": ">=12"
812 | }
813 | },
814 | "node_modules/esbuild-linux-arm64": {
815 | "version": "0.15.12",
816 | "resolved": "https://registry.npmmirror.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.12.tgz",
817 | "integrity": "sha512-HtNq5xm8fUpZKwWKS2/YGwSfTF+339L4aIA8yphNKYJckd5hVdhfdl6GM2P3HwLSCORS++++7++//ApEwXEuAQ==",
818 | "cpu": [
819 | "arm64"
820 | ],
821 | "dev": true,
822 | "optional": true,
823 | "os": [
824 | "linux"
825 | ],
826 | "engines": {
827 | "node": ">=12"
828 | }
829 | },
830 | "node_modules/esbuild-linux-mips64le": {
831 | "version": "0.15.12",
832 | "resolved": "https://registry.npmmirror.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.12.tgz",
833 | "integrity": "sha512-Qol3+AvivngUZkTVFgLpb0H6DT+N5/zM3V1YgTkryPYFeUvuT5JFNDR3ZiS6LxhyF8EE+fiNtzwlPqMDqVcc6A==",
834 | "cpu": [
835 | "mips64el"
836 | ],
837 | "dev": true,
838 | "optional": true,
839 | "os": [
840 | "linux"
841 | ],
842 | "engines": {
843 | "node": ">=12"
844 | }
845 | },
846 | "node_modules/esbuild-linux-ppc64le": {
847 | "version": "0.15.12",
848 | "resolved": "https://registry.npmmirror.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.12.tgz",
849 | "integrity": "sha512-4D8qUCo+CFKaR0cGXtGyVsOI7w7k93Qxb3KFXWr75An0DHamYzq8lt7TNZKoOq/Gh8c40/aKaxvcZnTgQ0TJNg==",
850 | "cpu": [
851 | "ppc64"
852 | ],
853 | "dev": true,
854 | "optional": true,
855 | "os": [
856 | "linux"
857 | ],
858 | "engines": {
859 | "node": ">=12"
860 | }
861 | },
862 | "node_modules/esbuild-linux-riscv64": {
863 | "version": "0.15.12",
864 | "resolved": "https://registry.npmmirror.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.12.tgz",
865 | "integrity": "sha512-G9w6NcuuCI6TUUxe6ka0enjZHDnSVK8bO+1qDhMOCtl7Tr78CcZilJj8SGLN00zO5iIlwNRZKHjdMpfFgNn1VA==",
866 | "cpu": [
867 | "riscv64"
868 | ],
869 | "dev": true,
870 | "optional": true,
871 | "os": [
872 | "linux"
873 | ],
874 | "engines": {
875 | "node": ">=12"
876 | }
877 | },
878 | "node_modules/esbuild-linux-s390x": {
879 | "version": "0.15.12",
880 | "resolved": "https://registry.npmmirror.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.12.tgz",
881 | "integrity": "sha512-Lt6BDnuXbXeqSlVuuUM5z18GkJAZf3ERskGZbAWjrQoi9xbEIsj/hEzVnSAFLtkfLuy2DE4RwTcX02tZFunXww==",
882 | "cpu": [
883 | "s390x"
884 | ],
885 | "dev": true,
886 | "optional": true,
887 | "os": [
888 | "linux"
889 | ],
890 | "engines": {
891 | "node": ">=12"
892 | }
893 | },
894 | "node_modules/esbuild-netbsd-64": {
895 | "version": "0.15.12",
896 | "resolved": "https://registry.npmmirror.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.12.tgz",
897 | "integrity": "sha512-jlUxCiHO1dsqoURZDQts+HK100o0hXfi4t54MNRMCAqKGAV33JCVvMplLAa2FwviSojT/5ZG5HUfG3gstwAG8w==",
898 | "cpu": [
899 | "x64"
900 | ],
901 | "dev": true,
902 | "optional": true,
903 | "os": [
904 | "netbsd"
905 | ],
906 | "engines": {
907 | "node": ">=12"
908 | }
909 | },
910 | "node_modules/esbuild-openbsd-64": {
911 | "version": "0.15.12",
912 | "resolved": "https://registry.npmmirror.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.12.tgz",
913 | "integrity": "sha512-1o1uAfRTMIWNOmpf8v7iudND0L6zRBYSH45sofCZywrcf7NcZA+c7aFsS1YryU+yN7aRppTqdUK1PgbZVaB1Dw==",
914 | "cpu": [
915 | "x64"
916 | ],
917 | "dev": true,
918 | "optional": true,
919 | "os": [
920 | "openbsd"
921 | ],
922 | "engines": {
923 | "node": ">=12"
924 | }
925 | },
926 | "node_modules/esbuild-sunos-64": {
927 | "version": "0.15.12",
928 | "resolved": "https://registry.npmmirror.com/esbuild-sunos-64/-/esbuild-sunos-64-0.15.12.tgz",
929 | "integrity": "sha512-nkl251DpoWoBO9Eq9aFdoIt2yYmp4I3kvQjba3jFKlMXuqQ9A4q+JaqdkCouG3DHgAGnzshzaGu6xofGcXyPXg==",
930 | "cpu": [
931 | "x64"
932 | ],
933 | "dev": true,
934 | "optional": true,
935 | "os": [
936 | "sunos"
937 | ],
938 | "engines": {
939 | "node": ">=12"
940 | }
941 | },
942 | "node_modules/esbuild-windows-32": {
943 | "version": "0.15.12",
944 | "resolved": "https://registry.npmmirror.com/esbuild-windows-32/-/esbuild-windows-32-0.15.12.tgz",
945 | "integrity": "sha512-WlGeBZHgPC00O08luIp5B2SP4cNCp/PcS+3Pcg31kdcJPopHxLkdCXtadLU9J82LCfw4TVls21A6lilQ9mzHrw==",
946 | "cpu": [
947 | "ia32"
948 | ],
949 | "dev": true,
950 | "optional": true,
951 | "os": [
952 | "win32"
953 | ],
954 | "engines": {
955 | "node": ">=12"
956 | }
957 | },
958 | "node_modules/esbuild-windows-64": {
959 | "version": "0.15.12",
960 | "resolved": "https://registry.npmmirror.com/esbuild-windows-64/-/esbuild-windows-64-0.15.12.tgz",
961 | "integrity": "sha512-VActO3WnWZSN//xjSfbiGOSyC+wkZtI8I4KlgrTo5oHJM6z3MZZBCuFaZHd8hzf/W9KPhF0lY8OqlmWC9HO5AA==",
962 | "cpu": [
963 | "x64"
964 | ],
965 | "dev": true,
966 | "optional": true,
967 | "os": [
968 | "win32"
969 | ],
970 | "engines": {
971 | "node": ">=12"
972 | }
973 | },
974 | "node_modules/esbuild-windows-arm64": {
975 | "version": "0.15.12",
976 | "resolved": "https://registry.npmmirror.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.12.tgz",
977 | "integrity": "sha512-Of3MIacva1OK/m4zCNIvBfz8VVROBmQT+gRX6pFTLPngFYcj6TFH/12VveAqq1k9VB2l28EoVMNMUCcmsfwyuA==",
978 | "cpu": [
979 | "arm64"
980 | ],
981 | "dev": true,
982 | "optional": true,
983 | "os": [
984 | "win32"
985 | ],
986 | "engines": {
987 | "node": ">=12"
988 | }
989 | },
990 | "node_modules/escalade": {
991 | "version": "3.1.1",
992 | "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz",
993 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
994 | "dev": true,
995 | "peer": true,
996 | "engines": {
997 | "node": ">=6"
998 | }
999 | },
1000 | "node_modules/eslint-scope": {
1001 | "version": "5.1.1",
1002 | "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz",
1003 | "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
1004 | "dev": true,
1005 | "peer": true,
1006 | "dependencies": {
1007 | "esrecurse": "^4.3.0",
1008 | "estraverse": "^4.1.1"
1009 | },
1010 | "engines": {
1011 | "node": ">=8.0.0"
1012 | }
1013 | },
1014 | "node_modules/esrecurse": {
1015 | "version": "4.3.0",
1016 | "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz",
1017 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
1018 | "dev": true,
1019 | "peer": true,
1020 | "dependencies": {
1021 | "estraverse": "^5.2.0"
1022 | },
1023 | "engines": {
1024 | "node": ">=4.0"
1025 | }
1026 | },
1027 | "node_modules/esrecurse/node_modules/estraverse": {
1028 | "version": "5.3.0",
1029 | "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz",
1030 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
1031 | "dev": true,
1032 | "peer": true,
1033 | "engines": {
1034 | "node": ">=4.0"
1035 | }
1036 | },
1037 | "node_modules/estraverse": {
1038 | "version": "4.3.0",
1039 | "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz",
1040 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
1041 | "dev": true,
1042 | "peer": true,
1043 | "engines": {
1044 | "node": ">=4.0"
1045 | }
1046 | },
1047 | "node_modules/estree-walker": {
1048 | "version": "2.0.2",
1049 | "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
1050 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
1051 | },
1052 | "node_modules/events": {
1053 | "version": "3.3.0",
1054 | "resolved": "https://registry.npmmirror.com/events/-/events-3.3.0.tgz",
1055 | "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
1056 | "dev": true,
1057 | "peer": true,
1058 | "engines": {
1059 | "node": ">=0.8.x"
1060 | }
1061 | },
1062 | "node_modules/fast-deep-equal": {
1063 | "version": "3.1.3",
1064 | "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
1065 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
1066 | "dev": true,
1067 | "peer": true
1068 | },
1069 | "node_modules/fast-json-stable-stringify": {
1070 | "version": "2.1.0",
1071 | "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
1072 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
1073 | "dev": true,
1074 | "peer": true
1075 | },
1076 | "node_modules/fsevents": {
1077 | "version": "2.3.2",
1078 | "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz",
1079 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
1080 | "dev": true,
1081 | "hasInstallScript": true,
1082 | "optional": true,
1083 | "os": [
1084 | "darwin"
1085 | ],
1086 | "engines": {
1087 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
1088 | }
1089 | },
1090 | "node_modules/function-bind": {
1091 | "version": "1.1.1",
1092 | "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz",
1093 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
1094 | "dev": true
1095 | },
1096 | "node_modules/glob-to-regexp": {
1097 | "version": "0.4.1",
1098 | "resolved": "https://registry.npmmirror.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
1099 | "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
1100 | "dev": true,
1101 | "peer": true
1102 | },
1103 | "node_modules/graceful-fs": {
1104 | "version": "4.2.10",
1105 | "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz",
1106 | "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
1107 | "dev": true
1108 | },
1109 | "node_modules/has": {
1110 | "version": "1.0.3",
1111 | "resolved": "https://registry.npmmirror.com/has/-/has-1.0.3.tgz",
1112 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
1113 | "dev": true,
1114 | "dependencies": {
1115 | "function-bind": "^1.1.1"
1116 | },
1117 | "engines": {
1118 | "node": ">= 0.4.0"
1119 | }
1120 | },
1121 | "node_modules/has-flag": {
1122 | "version": "4.0.0",
1123 | "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
1124 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
1125 | "dev": true,
1126 | "peer": true,
1127 | "engines": {
1128 | "node": ">=8"
1129 | }
1130 | },
1131 | "node_modules/iconv-lite": {
1132 | "version": "0.6.3",
1133 | "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz",
1134 | "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
1135 | "dev": true,
1136 | "optional": true,
1137 | "dependencies": {
1138 | "safer-buffer": ">= 2.1.2 < 3.0.0"
1139 | },
1140 | "engines": {
1141 | "node": ">=0.10.0"
1142 | }
1143 | },
1144 | "node_modules/image-size": {
1145 | "version": "0.5.5",
1146 | "resolved": "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz",
1147 | "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==",
1148 | "dev": true,
1149 | "optional": true,
1150 | "bin": {
1151 | "image-size": "bin/image-size.js"
1152 | },
1153 | "engines": {
1154 | "node": ">=0.10.0"
1155 | }
1156 | },
1157 | "node_modules/is-core-module": {
1158 | "version": "2.11.0",
1159 | "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.11.0.tgz",
1160 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
1161 | "dev": true,
1162 | "dependencies": {
1163 | "has": "^1.0.3"
1164 | }
1165 | },
1166 | "node_modules/is-what": {
1167 | "version": "3.14.1",
1168 | "resolved": "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz",
1169 | "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==",
1170 | "dev": true
1171 | },
1172 | "node_modules/jest-worker": {
1173 | "version": "27.5.1",
1174 | "resolved": "https://registry.npmmirror.com/jest-worker/-/jest-worker-27.5.1.tgz",
1175 | "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
1176 | "dev": true,
1177 | "peer": true,
1178 | "dependencies": {
1179 | "@types/node": "*",
1180 | "merge-stream": "^2.0.0",
1181 | "supports-color": "^8.0.0"
1182 | },
1183 | "engines": {
1184 | "node": ">= 10.13.0"
1185 | }
1186 | },
1187 | "node_modules/json-parse-even-better-errors": {
1188 | "version": "2.3.1",
1189 | "resolved": "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
1190 | "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
1191 | "dev": true,
1192 | "peer": true
1193 | },
1194 | "node_modules/json-schema-traverse": {
1195 | "version": "0.4.1",
1196 | "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
1197 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
1198 | "dev": true,
1199 | "peer": true
1200 | },
1201 | "node_modules/klona": {
1202 | "version": "2.0.5",
1203 | "resolved": "https://registry.npmmirror.com/klona/-/klona-2.0.5.tgz",
1204 | "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==",
1205 | "dev": true,
1206 | "engines": {
1207 | "node": ">= 8"
1208 | }
1209 | },
1210 | "node_modules/less": {
1211 | "version": "4.1.3",
1212 | "resolved": "https://registry.npmmirror.com/less/-/less-4.1.3.tgz",
1213 | "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==",
1214 | "dev": true,
1215 | "dependencies": {
1216 | "copy-anything": "^2.0.1",
1217 | "parse-node-version": "^1.0.1",
1218 | "tslib": "^2.3.0"
1219 | },
1220 | "bin": {
1221 | "lessc": "bin/lessc"
1222 | },
1223 | "engines": {
1224 | "node": ">=6"
1225 | },
1226 | "optionalDependencies": {
1227 | "errno": "^0.1.1",
1228 | "graceful-fs": "^4.1.2",
1229 | "image-size": "~0.5.0",
1230 | "make-dir": "^2.1.0",
1231 | "mime": "^1.4.1",
1232 | "needle": "^3.1.0",
1233 | "source-map": "~0.6.0"
1234 | }
1235 | },
1236 | "node_modules/less-loader": {
1237 | "version": "11.1.0",
1238 | "resolved": "https://registry.npmmirror.com/less-loader/-/less-loader-11.1.0.tgz",
1239 | "integrity": "sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==",
1240 | "dev": true,
1241 | "dependencies": {
1242 | "klona": "^2.0.4"
1243 | },
1244 | "engines": {
1245 | "node": ">= 14.15.0"
1246 | },
1247 | "peerDependencies": {
1248 | "less": "^3.5.0 || ^4.0.0",
1249 | "webpack": "^5.0.0"
1250 | }
1251 | },
1252 | "node_modules/loader-runner": {
1253 | "version": "4.3.0",
1254 | "resolved": "https://registry.npmmirror.com/loader-runner/-/loader-runner-4.3.0.tgz",
1255 | "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
1256 | "dev": true,
1257 | "peer": true,
1258 | "engines": {
1259 | "node": ">=6.11.5"
1260 | }
1261 | },
1262 | "node_modules/magic-string": {
1263 | "version": "0.25.9",
1264 | "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz",
1265 | "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
1266 | "dependencies": {
1267 | "sourcemap-codec": "^1.4.8"
1268 | }
1269 | },
1270 | "node_modules/make-dir": {
1271 | "version": "2.1.0",
1272 | "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz",
1273 | "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
1274 | "dev": true,
1275 | "optional": true,
1276 | "dependencies": {
1277 | "pify": "^4.0.1",
1278 | "semver": "^5.6.0"
1279 | },
1280 | "engines": {
1281 | "node": ">=6"
1282 | }
1283 | },
1284 | "node_modules/merge-stream": {
1285 | "version": "2.0.0",
1286 | "resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz",
1287 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
1288 | "dev": true,
1289 | "peer": true
1290 | },
1291 | "node_modules/mime": {
1292 | "version": "1.6.0",
1293 | "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz",
1294 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
1295 | "dev": true,
1296 | "optional": true,
1297 | "bin": {
1298 | "mime": "cli.js"
1299 | },
1300 | "engines": {
1301 | "node": ">=4"
1302 | }
1303 | },
1304 | "node_modules/mime-db": {
1305 | "version": "1.52.0",
1306 | "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz",
1307 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
1308 | "dev": true,
1309 | "peer": true,
1310 | "engines": {
1311 | "node": ">= 0.6"
1312 | }
1313 | },
1314 | "node_modules/mime-types": {
1315 | "version": "2.1.35",
1316 | "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz",
1317 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
1318 | "dev": true,
1319 | "peer": true,
1320 | "dependencies": {
1321 | "mime-db": "1.52.0"
1322 | },
1323 | "engines": {
1324 | "node": ">= 0.6"
1325 | }
1326 | },
1327 | "node_modules/ms": {
1328 | "version": "2.1.3",
1329 | "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz",
1330 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
1331 | "dev": true,
1332 | "optional": true
1333 | },
1334 | "node_modules/nanoid": {
1335 | "version": "3.3.4",
1336 | "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.4.tgz",
1337 | "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
1338 | "bin": {
1339 | "nanoid": "bin/nanoid.cjs"
1340 | },
1341 | "engines": {
1342 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
1343 | }
1344 | },
1345 | "node_modules/needle": {
1346 | "version": "3.1.0",
1347 | "resolved": "https://registry.npmmirror.com/needle/-/needle-3.1.0.tgz",
1348 | "integrity": "sha512-gCE9weDhjVGCRqS8dwDR/D3GTAeyXLXuqp7I8EzH6DllZGXSUyxuqqLh+YX9rMAWaaTFyVAg6rHGL25dqvczKw==",
1349 | "dev": true,
1350 | "optional": true,
1351 | "dependencies": {
1352 | "debug": "^3.2.6",
1353 | "iconv-lite": "^0.6.3",
1354 | "sax": "^1.2.4"
1355 | },
1356 | "bin": {
1357 | "needle": "bin/needle"
1358 | },
1359 | "engines": {
1360 | "node": ">= 4.4.x"
1361 | }
1362 | },
1363 | "node_modules/neo-async": {
1364 | "version": "2.6.2",
1365 | "resolved": "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz",
1366 | "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
1367 | "dev": true,
1368 | "peer": true
1369 | },
1370 | "node_modules/node-releases": {
1371 | "version": "2.0.6",
1372 | "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.6.tgz",
1373 | "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==",
1374 | "dev": true,
1375 | "peer": true
1376 | },
1377 | "node_modules/parse-node-version": {
1378 | "version": "1.0.1",
1379 | "resolved": "https://registry.npmmirror.com/parse-node-version/-/parse-node-version-1.0.1.tgz",
1380 | "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==",
1381 | "dev": true,
1382 | "engines": {
1383 | "node": ">= 0.10"
1384 | }
1385 | },
1386 | "node_modules/path-parse": {
1387 | "version": "1.0.7",
1388 | "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz",
1389 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
1390 | "dev": true
1391 | },
1392 | "node_modules/picocolors": {
1393 | "version": "1.0.0",
1394 | "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz",
1395 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
1396 | },
1397 | "node_modules/pify": {
1398 | "version": "4.0.1",
1399 | "resolved": "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz",
1400 | "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
1401 | "dev": true,
1402 | "optional": true,
1403 | "engines": {
1404 | "node": ">=6"
1405 | }
1406 | },
1407 | "node_modules/pinia": {
1408 | "version": "2.0.23",
1409 | "resolved": "https://registry.npmmirror.com/pinia/-/pinia-2.0.23.tgz",
1410 | "integrity": "sha512-N15hFf4o5STrxpNrib1IEb1GOArvPYf1zPvQVRGOO1G1d74Ak0J0lVyalX/SmrzdT4Q0nlEFjbURsmBmIGUR5Q==",
1411 | "dependencies": {
1412 | "@vue/devtools-api": "^6.4.4",
1413 | "vue-demi": "*"
1414 | },
1415 | "peerDependencies": {
1416 | "@vue/composition-api": "^1.4.0",
1417 | "typescript": ">=4.4.4",
1418 | "vue": "^2.6.14 || ^3.2.0"
1419 | },
1420 | "peerDependenciesMeta": {
1421 | "@vue/composition-api": {
1422 | "optional": true
1423 | },
1424 | "typescript": {
1425 | "optional": true
1426 | }
1427 | }
1428 | },
1429 | "node_modules/pinia/node_modules/vue-demi": {
1430 | "version": "0.13.11",
1431 | "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.11.tgz",
1432 | "integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==",
1433 | "hasInstallScript": true,
1434 | "bin": {
1435 | "vue-demi-fix": "bin/vue-demi-fix.js",
1436 | "vue-demi-switch": "bin/vue-demi-switch.js"
1437 | },
1438 | "engines": {
1439 | "node": ">=12"
1440 | },
1441 | "peerDependencies": {
1442 | "@vue/composition-api": "^1.0.0-rc.1",
1443 | "vue": "^3.0.0-0 || ^2.6.0"
1444 | },
1445 | "peerDependenciesMeta": {
1446 | "@vue/composition-api": {
1447 | "optional": true
1448 | }
1449 | }
1450 | },
1451 | "node_modules/postcss": {
1452 | "version": "8.4.18",
1453 | "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.18.tgz",
1454 | "integrity": "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==",
1455 | "dependencies": {
1456 | "nanoid": "^3.3.4",
1457 | "picocolors": "^1.0.0",
1458 | "source-map-js": "^1.0.2"
1459 | },
1460 | "engines": {
1461 | "node": "^10 || ^12 || >=14"
1462 | }
1463 | },
1464 | "node_modules/prr": {
1465 | "version": "1.0.1",
1466 | "resolved": "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz",
1467 | "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
1468 | "dev": true,
1469 | "optional": true
1470 | },
1471 | "node_modules/punycode": {
1472 | "version": "2.1.1",
1473 | "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.1.1.tgz",
1474 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
1475 | "dev": true,
1476 | "peer": true,
1477 | "engines": {
1478 | "node": ">=6"
1479 | }
1480 | },
1481 | "node_modules/randombytes": {
1482 | "version": "2.1.0",
1483 | "resolved": "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz",
1484 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
1485 | "dev": true,
1486 | "peer": true,
1487 | "dependencies": {
1488 | "safe-buffer": "^5.1.0"
1489 | }
1490 | },
1491 | "node_modules/resolve": {
1492 | "version": "1.22.1",
1493 | "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.1.tgz",
1494 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
1495 | "dev": true,
1496 | "dependencies": {
1497 | "is-core-module": "^2.9.0",
1498 | "path-parse": "^1.0.7",
1499 | "supports-preserve-symlinks-flag": "^1.0.0"
1500 | },
1501 | "bin": {
1502 | "resolve": "bin/resolve"
1503 | }
1504 | },
1505 | "node_modules/rollup": {
1506 | "version": "2.79.1",
1507 | "resolved": "https://registry.npmmirror.com/rollup/-/rollup-2.79.1.tgz",
1508 | "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==",
1509 | "dev": true,
1510 | "bin": {
1511 | "rollup": "dist/bin/rollup"
1512 | },
1513 | "engines": {
1514 | "node": ">=10.0.0"
1515 | },
1516 | "optionalDependencies": {
1517 | "fsevents": "~2.3.2"
1518 | }
1519 | },
1520 | "node_modules/safe-buffer": {
1521 | "version": "5.2.1",
1522 | "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz",
1523 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
1524 | "dev": true,
1525 | "peer": true
1526 | },
1527 | "node_modules/safer-buffer": {
1528 | "version": "2.1.2",
1529 | "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz",
1530 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
1531 | "dev": true,
1532 | "optional": true
1533 | },
1534 | "node_modules/sax": {
1535 | "version": "1.2.4",
1536 | "resolved": "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz",
1537 | "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
1538 | "dev": true,
1539 | "optional": true
1540 | },
1541 | "node_modules/schema-utils": {
1542 | "version": "3.1.1",
1543 | "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.1.1.tgz",
1544 | "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
1545 | "dev": true,
1546 | "peer": true,
1547 | "dependencies": {
1548 | "@types/json-schema": "^7.0.8",
1549 | "ajv": "^6.12.5",
1550 | "ajv-keywords": "^3.5.2"
1551 | },
1552 | "engines": {
1553 | "node": ">= 10.13.0"
1554 | }
1555 | },
1556 | "node_modules/semver": {
1557 | "version": "5.7.1",
1558 | "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz",
1559 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
1560 | "dev": true,
1561 | "optional": true,
1562 | "bin": {
1563 | "semver": "bin/semver"
1564 | }
1565 | },
1566 | "node_modules/serialize-javascript": {
1567 | "version": "6.0.0",
1568 | "resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
1569 | "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
1570 | "dev": true,
1571 | "peer": true,
1572 | "dependencies": {
1573 | "randombytes": "^2.1.0"
1574 | }
1575 | },
1576 | "node_modules/source-map": {
1577 | "version": "0.6.1",
1578 | "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
1579 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
1580 | "engines": {
1581 | "node": ">=0.10.0"
1582 | }
1583 | },
1584 | "node_modules/source-map-js": {
1585 | "version": "1.0.2",
1586 | "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz",
1587 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
1588 | "engines": {
1589 | "node": ">=0.10.0"
1590 | }
1591 | },
1592 | "node_modules/source-map-support": {
1593 | "version": "0.5.21",
1594 | "resolved": "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz",
1595 | "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
1596 | "dev": true,
1597 | "peer": true,
1598 | "dependencies": {
1599 | "buffer-from": "^1.0.0",
1600 | "source-map": "^0.6.0"
1601 | }
1602 | },
1603 | "node_modules/sourcemap-codec": {
1604 | "version": "1.4.8",
1605 | "resolved": "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
1606 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA=="
1607 | },
1608 | "node_modules/supports-color": {
1609 | "version": "8.1.1",
1610 | "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz",
1611 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
1612 | "dev": true,
1613 | "peer": true,
1614 | "dependencies": {
1615 | "has-flag": "^4.0.0"
1616 | },
1617 | "engines": {
1618 | "node": ">=10"
1619 | }
1620 | },
1621 | "node_modules/supports-preserve-symlinks-flag": {
1622 | "version": "1.0.0",
1623 | "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
1624 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
1625 | "dev": true,
1626 | "engines": {
1627 | "node": ">= 0.4"
1628 | }
1629 | },
1630 | "node_modules/tapable": {
1631 | "version": "2.2.1",
1632 | "resolved": "https://registry.npmmirror.com/tapable/-/tapable-2.2.1.tgz",
1633 | "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
1634 | "dev": true,
1635 | "peer": true,
1636 | "engines": {
1637 | "node": ">=6"
1638 | }
1639 | },
1640 | "node_modules/terser": {
1641 | "version": "5.15.1",
1642 | "resolved": "https://registry.npmmirror.com/terser/-/terser-5.15.1.tgz",
1643 | "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==",
1644 | "dev": true,
1645 | "peer": true,
1646 | "dependencies": {
1647 | "@jridgewell/source-map": "^0.3.2",
1648 | "acorn": "^8.5.0",
1649 | "commander": "^2.20.0",
1650 | "source-map-support": "~0.5.20"
1651 | },
1652 | "bin": {
1653 | "terser": "bin/terser"
1654 | },
1655 | "engines": {
1656 | "node": ">=10"
1657 | }
1658 | },
1659 | "node_modules/terser-webpack-plugin": {
1660 | "version": "5.3.6",
1661 | "resolved": "https://registry.npmmirror.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz",
1662 | "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==",
1663 | "dev": true,
1664 | "peer": true,
1665 | "dependencies": {
1666 | "@jridgewell/trace-mapping": "^0.3.14",
1667 | "jest-worker": "^27.4.5",
1668 | "schema-utils": "^3.1.1",
1669 | "serialize-javascript": "^6.0.0",
1670 | "terser": "^5.14.1"
1671 | },
1672 | "engines": {
1673 | "node": ">= 10.13.0"
1674 | },
1675 | "peerDependencies": {
1676 | "webpack": "^5.1.0"
1677 | },
1678 | "peerDependenciesMeta": {
1679 | "@swc/core": {
1680 | "optional": true
1681 | },
1682 | "esbuild": {
1683 | "optional": true
1684 | },
1685 | "uglify-js": {
1686 | "optional": true
1687 | }
1688 | }
1689 | },
1690 | "node_modules/tslib": {
1691 | "version": "2.4.0",
1692 | "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.4.0.tgz",
1693 | "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==",
1694 | "dev": true
1695 | },
1696 | "node_modules/update-browserslist-db": {
1697 | "version": "1.0.10",
1698 | "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz",
1699 | "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==",
1700 | "dev": true,
1701 | "peer": true,
1702 | "dependencies": {
1703 | "escalade": "^3.1.1",
1704 | "picocolors": "^1.0.0"
1705 | },
1706 | "bin": {
1707 | "browserslist-lint": "cli.js"
1708 | },
1709 | "peerDependencies": {
1710 | "browserslist": ">= 4.21.0"
1711 | }
1712 | },
1713 | "node_modules/uri-js": {
1714 | "version": "4.4.1",
1715 | "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz",
1716 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
1717 | "dev": true,
1718 | "peer": true,
1719 | "dependencies": {
1720 | "punycode": "^2.1.0"
1721 | }
1722 | },
1723 | "node_modules/vite": {
1724 | "version": "3.2.1",
1725 | "resolved": "https://registry.npmmirror.com/vite/-/vite-3.2.1.tgz",
1726 | "integrity": "sha512-ADtMkfHuWq4tskJsri2n2FZkORO8ZyhI+zIz7zTrDAgDEtct1jdxOg3YsZBfHhKjmMoWLOSCr+64qrEDGo/DbQ==",
1727 | "dev": true,
1728 | "dependencies": {
1729 | "esbuild": "^0.15.9",
1730 | "postcss": "^8.4.18",
1731 | "resolve": "^1.22.1",
1732 | "rollup": "^2.79.1"
1733 | },
1734 | "bin": {
1735 | "vite": "bin/vite.js"
1736 | },
1737 | "engines": {
1738 | "node": "^14.18.0 || >=16.0.0"
1739 | },
1740 | "optionalDependencies": {
1741 | "fsevents": "~2.3.2"
1742 | },
1743 | "peerDependencies": {
1744 | "less": "*",
1745 | "sass": "*",
1746 | "stylus": "*",
1747 | "sugarss": "*",
1748 | "terser": "^5.4.0"
1749 | },
1750 | "peerDependenciesMeta": {
1751 | "less": {
1752 | "optional": true
1753 | },
1754 | "sass": {
1755 | "optional": true
1756 | },
1757 | "stylus": {
1758 | "optional": true
1759 | },
1760 | "sugarss": {
1761 | "optional": true
1762 | },
1763 | "terser": {
1764 | "optional": true
1765 | }
1766 | }
1767 | },
1768 | "node_modules/vue": {
1769 | "version": "3.2.41",
1770 | "resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.41.tgz",
1771 | "integrity": "sha512-uuuvnrDXEeZ9VUPljgHkqB5IaVO8SxhPpqF2eWOukVrBnRBx2THPSGQBnVRt0GrIG1gvCmFXMGbd7FqcT1ixNQ==",
1772 | "dependencies": {
1773 | "@vue/compiler-dom": "3.2.41",
1774 | "@vue/compiler-sfc": "3.2.41",
1775 | "@vue/runtime-dom": "3.2.41",
1776 | "@vue/server-renderer": "3.2.41",
1777 | "@vue/shared": "3.2.41"
1778 | }
1779 | },
1780 | "node_modules/watchpack": {
1781 | "version": "2.4.0",
1782 | "resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-2.4.0.tgz",
1783 | "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==",
1784 | "dev": true,
1785 | "peer": true,
1786 | "dependencies": {
1787 | "glob-to-regexp": "^0.4.1",
1788 | "graceful-fs": "^4.1.2"
1789 | },
1790 | "engines": {
1791 | "node": ">=10.13.0"
1792 | }
1793 | },
1794 | "node_modules/webpack": {
1795 | "version": "5.74.0",
1796 | "resolved": "https://registry.npmmirror.com/webpack/-/webpack-5.74.0.tgz",
1797 | "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==",
1798 | "dev": true,
1799 | "peer": true,
1800 | "dependencies": {
1801 | "@types/eslint-scope": "^3.7.3",
1802 | "@types/estree": "^0.0.51",
1803 | "@webassemblyjs/ast": "1.11.1",
1804 | "@webassemblyjs/wasm-edit": "1.11.1",
1805 | "@webassemblyjs/wasm-parser": "1.11.1",
1806 | "acorn": "^8.7.1",
1807 | "acorn-import-assertions": "^1.7.6",
1808 | "browserslist": "^4.14.5",
1809 | "chrome-trace-event": "^1.0.2",
1810 | "enhanced-resolve": "^5.10.0",
1811 | "es-module-lexer": "^0.9.0",
1812 | "eslint-scope": "5.1.1",
1813 | "events": "^3.2.0",
1814 | "glob-to-regexp": "^0.4.1",
1815 | "graceful-fs": "^4.2.9",
1816 | "json-parse-even-better-errors": "^2.3.1",
1817 | "loader-runner": "^4.2.0",
1818 | "mime-types": "^2.1.27",
1819 | "neo-async": "^2.6.2",
1820 | "schema-utils": "^3.1.0",
1821 | "tapable": "^2.1.1",
1822 | "terser-webpack-plugin": "^5.1.3",
1823 | "watchpack": "^2.4.0",
1824 | "webpack-sources": "^3.2.3"
1825 | },
1826 | "bin": {
1827 | "webpack": "bin/webpack.js"
1828 | },
1829 | "engines": {
1830 | "node": ">=10.13.0"
1831 | },
1832 | "peerDependenciesMeta": {
1833 | "webpack-cli": {
1834 | "optional": true
1835 | }
1836 | }
1837 | },
1838 | "node_modules/webpack-sources": {
1839 | "version": "3.2.3",
1840 | "resolved": "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz",
1841 | "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
1842 | "dev": true,
1843 | "peer": true,
1844 | "engines": {
1845 | "node": ">=10.13.0"
1846 | }
1847 | }
1848 | },
1849 | "dependencies": {
1850 | "@babel/parser": {
1851 | "version": "7.20.0",
1852 | "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.20.0.tgz",
1853 | "integrity": "sha512-G9VgAhEaICnz8iiJeGJQyVl6J2nTjbW0xeisva0PK6XcKsga7BIaqm4ZF8Rg1Wbaqmy6znspNqhPaPkyukujzg=="
1854 | },
1855 | "@esbuild/android-arm": {
1856 | "version": "0.15.12",
1857 | "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.15.12.tgz",
1858 | "integrity": "sha512-IC7TqIqiyE0MmvAhWkl/8AEzpOtbhRNDo7aph47We1NbE5w2bt/Q+giAhe0YYeVpYnIhGMcuZY92qDK6dQauvA==",
1859 | "dev": true,
1860 | "optional": true
1861 | },
1862 | "@esbuild/linux-loong64": {
1863 | "version": "0.15.12",
1864 | "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.15.12.tgz",
1865 | "integrity": "sha512-tZEowDjvU7O7I04GYvWQOS4yyP9E/7YlsB0jjw1Ycukgr2ycEzKyIk5tms5WnLBymaewc6VmRKnn5IJWgK4eFw==",
1866 | "dev": true,
1867 | "optional": true
1868 | },
1869 | "@jridgewell/gen-mapping": {
1870 | "version": "0.3.2",
1871 | "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
1872 | "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
1873 | "dev": true,
1874 | "peer": true,
1875 | "requires": {
1876 | "@jridgewell/set-array": "^1.0.1",
1877 | "@jridgewell/sourcemap-codec": "^1.4.10",
1878 | "@jridgewell/trace-mapping": "^0.3.9"
1879 | }
1880 | },
1881 | "@jridgewell/resolve-uri": {
1882 | "version": "3.1.0",
1883 | "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
1884 | "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
1885 | "dev": true,
1886 | "peer": true
1887 | },
1888 | "@jridgewell/set-array": {
1889 | "version": "1.1.2",
1890 | "resolved": "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.1.2.tgz",
1891 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
1892 | "dev": true,
1893 | "peer": true
1894 | },
1895 | "@jridgewell/source-map": {
1896 | "version": "0.3.2",
1897 | "resolved": "https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.2.tgz",
1898 | "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==",
1899 | "dev": true,
1900 | "peer": true,
1901 | "requires": {
1902 | "@jridgewell/gen-mapping": "^0.3.0",
1903 | "@jridgewell/trace-mapping": "^0.3.9"
1904 | }
1905 | },
1906 | "@jridgewell/sourcemap-codec": {
1907 | "version": "1.4.14",
1908 | "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
1909 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
1910 | "dev": true,
1911 | "peer": true
1912 | },
1913 | "@jridgewell/trace-mapping": {
1914 | "version": "0.3.17",
1915 | "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
1916 | "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
1917 | "dev": true,
1918 | "peer": true,
1919 | "requires": {
1920 | "@jridgewell/resolve-uri": "3.1.0",
1921 | "@jridgewell/sourcemap-codec": "1.4.14"
1922 | }
1923 | },
1924 | "@types/eslint": {
1925 | "version": "8.4.8",
1926 | "resolved": "https://registry.npmmirror.com/@types/eslint/-/eslint-8.4.8.tgz",
1927 | "integrity": "sha512-zUCKQI1bUCTi+0kQs5ZQzQ/XILWRLIlh15FXWNykJ+NG3TMKMVvwwC6GP3DR1Ylga15fB7iAExSzc4PNlR5i3w==",
1928 | "dev": true,
1929 | "peer": true,
1930 | "requires": {
1931 | "@types/estree": "*",
1932 | "@types/json-schema": "*"
1933 | }
1934 | },
1935 | "@types/eslint-scope": {
1936 | "version": "3.7.4",
1937 | "resolved": "https://registry.npmmirror.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz",
1938 | "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==",
1939 | "dev": true,
1940 | "peer": true,
1941 | "requires": {
1942 | "@types/eslint": "*",
1943 | "@types/estree": "*"
1944 | }
1945 | },
1946 | "@types/estree": {
1947 | "version": "0.0.51",
1948 | "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-0.0.51.tgz",
1949 | "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==",
1950 | "dev": true,
1951 | "peer": true
1952 | },
1953 | "@types/json-schema": {
1954 | "version": "7.0.11",
1955 | "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.11.tgz",
1956 | "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
1957 | "dev": true,
1958 | "peer": true
1959 | },
1960 | "@types/node": {
1961 | "version": "18.11.7",
1962 | "resolved": "https://registry.npmmirror.com/@types/node/-/node-18.11.7.tgz",
1963 | "integrity": "sha512-LhFTglglr63mNXUSRYD8A+ZAIu5sFqNJ4Y2fPuY7UlrySJH87rRRlhtVmMHplmfk5WkoJGmDjE9oiTfyX94CpQ==",
1964 | "dev": true,
1965 | "peer": true
1966 | },
1967 | "@vitejs/plugin-vue": {
1968 | "version": "3.2.0",
1969 | "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-3.2.0.tgz",
1970 | "integrity": "sha512-E0tnaL4fr+qkdCNxJ+Xd0yM31UwMkQje76fsDVBBUCoGOUPexu2VDUYHL8P4CwV+zMvWw6nlRw19OnRKmYAJpw==",
1971 | "dev": true,
1972 | "requires": {}
1973 | },
1974 | "@vue/compiler-core": {
1975 | "version": "3.2.41",
1976 | "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.41.tgz",
1977 | "integrity": "sha512-oA4mH6SA78DT+96/nsi4p9DX97PHcNROxs51lYk7gb9Z4BPKQ3Mh+BLn6CQZBw857Iuhu28BfMSRHAlPvD4vlw==",
1978 | "requires": {
1979 | "@babel/parser": "^7.16.4",
1980 | "@vue/shared": "3.2.41",
1981 | "estree-walker": "^2.0.2",
1982 | "source-map": "^0.6.1"
1983 | }
1984 | },
1985 | "@vue/compiler-dom": {
1986 | "version": "3.2.41",
1987 | "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.41.tgz",
1988 | "integrity": "sha512-xe5TbbIsonjENxJsYRbDJvthzqxLNk+tb3d/c47zgREDa/PCp6/Y4gC/skM4H6PIuX5DAxm7fFJdbjjUH2QTMw==",
1989 | "requires": {
1990 | "@vue/compiler-core": "3.2.41",
1991 | "@vue/shared": "3.2.41"
1992 | }
1993 | },
1994 | "@vue/compiler-sfc": {
1995 | "version": "3.2.41",
1996 | "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.41.tgz",
1997 | "integrity": "sha512-+1P2m5kxOeaxVmJNXnBskAn3BenbTmbxBxWOtBq3mQTCokIreuMULFantBUclP0+KnzNCMOvcnKinqQZmiOF8w==",
1998 | "requires": {
1999 | "@babel/parser": "^7.16.4",
2000 | "@vue/compiler-core": "3.2.41",
2001 | "@vue/compiler-dom": "3.2.41",
2002 | "@vue/compiler-ssr": "3.2.41",
2003 | "@vue/reactivity-transform": "3.2.41",
2004 | "@vue/shared": "3.2.41",
2005 | "estree-walker": "^2.0.2",
2006 | "magic-string": "^0.25.7",
2007 | "postcss": "^8.1.10",
2008 | "source-map": "^0.6.1"
2009 | }
2010 | },
2011 | "@vue/compiler-ssr": {
2012 | "version": "3.2.41",
2013 | "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.41.tgz",
2014 | "integrity": "sha512-Y5wPiNIiaMz/sps8+DmhaKfDm1xgj6GrH99z4gq2LQenfVQcYXmHIOBcs5qPwl7jaW3SUQWjkAPKMfQemEQZwQ==",
2015 | "requires": {
2016 | "@vue/compiler-dom": "3.2.41",
2017 | "@vue/shared": "3.2.41"
2018 | }
2019 | },
2020 | "@vue/devtools-api": {
2021 | "version": "6.4.5",
2022 | "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.4.5.tgz",
2023 | "integrity": "sha512-JD5fcdIuFxU4fQyXUu3w2KpAJHzTVdN+p4iOX2lMWSHMOoQdMAcpFLZzm9Z/2nmsoZ1a96QEhZ26e50xLBsgOQ=="
2024 | },
2025 | "@vue/reactivity": {
2026 | "version": "3.2.41",
2027 | "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.41.tgz",
2028 | "integrity": "sha512-9JvCnlj8uc5xRiQGZ28MKGjuCoPhhTwcoAdv3o31+cfGgonwdPNuvqAXLhlzu4zwqavFEG5tvaoINQEfxz+l6g==",
2029 | "requires": {
2030 | "@vue/shared": "3.2.41"
2031 | }
2032 | },
2033 | "@vue/reactivity-transform": {
2034 | "version": "3.2.41",
2035 | "resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.41.tgz",
2036 | "integrity": "sha512-mK5+BNMsL4hHi+IR3Ft/ho6Za+L3FA5j8WvreJ7XzHrqkPq8jtF/SMo7tuc9gHjLDwKZX1nP1JQOKo9IEAn54A==",
2037 | "requires": {
2038 | "@babel/parser": "^7.16.4",
2039 | "@vue/compiler-core": "3.2.41",
2040 | "@vue/shared": "3.2.41",
2041 | "estree-walker": "^2.0.2",
2042 | "magic-string": "^0.25.7"
2043 | }
2044 | },
2045 | "@vue/runtime-core": {
2046 | "version": "3.2.41",
2047 | "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.41.tgz",
2048 | "integrity": "sha512-0LBBRwqnI0p4FgIkO9q2aJBBTKDSjzhnxrxHYengkAF6dMOjeAIZFDADAlcf2h3GDALWnblbeprYYpItiulSVQ==",
2049 | "requires": {
2050 | "@vue/reactivity": "3.2.41",
2051 | "@vue/shared": "3.2.41"
2052 | }
2053 | },
2054 | "@vue/runtime-dom": {
2055 | "version": "3.2.41",
2056 | "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.41.tgz",
2057 | "integrity": "sha512-U7zYuR1NVIP8BL6jmOqmapRAHovEFp7CSw4pR2FacqewXNGqZaRfHoNLQsqQvVQ8yuZNZtxSZy0FFyC70YXPpA==",
2058 | "requires": {
2059 | "@vue/runtime-core": "3.2.41",
2060 | "@vue/shared": "3.2.41",
2061 | "csstype": "^2.6.8"
2062 | }
2063 | },
2064 | "@vue/server-renderer": {
2065 | "version": "3.2.41",
2066 | "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.41.tgz",
2067 | "integrity": "sha512-7YHLkfJdTlsZTV0ae5sPwl9Gn/EGr2hrlbcS/8naXm2CDpnKUwC68i1wGlrYAfIgYWL7vUZwk2GkYLQH5CvFig==",
2068 | "requires": {
2069 | "@vue/compiler-ssr": "3.2.41",
2070 | "@vue/shared": "3.2.41"
2071 | }
2072 | },
2073 | "@vue/shared": {
2074 | "version": "3.2.41",
2075 | "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.41.tgz",
2076 | "integrity": "sha512-W9mfWLHmJhkfAmV+7gDjcHeAWALQtgGT3JErxULl0oz6R6+3ug91I7IErs93eCFhPCZPHBs4QJS7YWEV7A3sxw=="
2077 | },
2078 | "@webassemblyjs/ast": {
2079 | "version": "1.11.1",
2080 | "resolved": "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.11.1.tgz",
2081 | "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==",
2082 | "dev": true,
2083 | "peer": true,
2084 | "requires": {
2085 | "@webassemblyjs/helper-numbers": "1.11.1",
2086 | "@webassemblyjs/helper-wasm-bytecode": "1.11.1"
2087 | }
2088 | },
2089 | "@webassemblyjs/floating-point-hex-parser": {
2090 | "version": "1.11.1",
2091 | "resolved": "https://registry.npmmirror.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz",
2092 | "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==",
2093 | "dev": true,
2094 | "peer": true
2095 | },
2096 | "@webassemblyjs/helper-api-error": {
2097 | "version": "1.11.1",
2098 | "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz",
2099 | "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==",
2100 | "dev": true,
2101 | "peer": true
2102 | },
2103 | "@webassemblyjs/helper-buffer": {
2104 | "version": "1.11.1",
2105 | "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz",
2106 | "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==",
2107 | "dev": true,
2108 | "peer": true
2109 | },
2110 | "@webassemblyjs/helper-numbers": {
2111 | "version": "1.11.1",
2112 | "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz",
2113 | "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==",
2114 | "dev": true,
2115 | "peer": true,
2116 | "requires": {
2117 | "@webassemblyjs/floating-point-hex-parser": "1.11.1",
2118 | "@webassemblyjs/helper-api-error": "1.11.1",
2119 | "@xtuc/long": "4.2.2"
2120 | }
2121 | },
2122 | "@webassemblyjs/helper-wasm-bytecode": {
2123 | "version": "1.11.1",
2124 | "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz",
2125 | "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==",
2126 | "dev": true,
2127 | "peer": true
2128 | },
2129 | "@webassemblyjs/helper-wasm-section": {
2130 | "version": "1.11.1",
2131 | "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz",
2132 | "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==",
2133 | "dev": true,
2134 | "peer": true,
2135 | "requires": {
2136 | "@webassemblyjs/ast": "1.11.1",
2137 | "@webassemblyjs/helper-buffer": "1.11.1",
2138 | "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
2139 | "@webassemblyjs/wasm-gen": "1.11.1"
2140 | }
2141 | },
2142 | "@webassemblyjs/ieee754": {
2143 | "version": "1.11.1",
2144 | "resolved": "https://registry.npmmirror.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz",
2145 | "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==",
2146 | "dev": true,
2147 | "peer": true,
2148 | "requires": {
2149 | "@xtuc/ieee754": "^1.2.0"
2150 | }
2151 | },
2152 | "@webassemblyjs/leb128": {
2153 | "version": "1.11.1",
2154 | "resolved": "https://registry.npmmirror.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz",
2155 | "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==",
2156 | "dev": true,
2157 | "peer": true,
2158 | "requires": {
2159 | "@xtuc/long": "4.2.2"
2160 | }
2161 | },
2162 | "@webassemblyjs/utf8": {
2163 | "version": "1.11.1",
2164 | "resolved": "https://registry.npmmirror.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz",
2165 | "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==",
2166 | "dev": true,
2167 | "peer": true
2168 | },
2169 | "@webassemblyjs/wasm-edit": {
2170 | "version": "1.11.1",
2171 | "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz",
2172 | "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==",
2173 | "dev": true,
2174 | "peer": true,
2175 | "requires": {
2176 | "@webassemblyjs/ast": "1.11.1",
2177 | "@webassemblyjs/helper-buffer": "1.11.1",
2178 | "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
2179 | "@webassemblyjs/helper-wasm-section": "1.11.1",
2180 | "@webassemblyjs/wasm-gen": "1.11.1",
2181 | "@webassemblyjs/wasm-opt": "1.11.1",
2182 | "@webassemblyjs/wasm-parser": "1.11.1",
2183 | "@webassemblyjs/wast-printer": "1.11.1"
2184 | }
2185 | },
2186 | "@webassemblyjs/wasm-gen": {
2187 | "version": "1.11.1",
2188 | "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz",
2189 | "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==",
2190 | "dev": true,
2191 | "peer": true,
2192 | "requires": {
2193 | "@webassemblyjs/ast": "1.11.1",
2194 | "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
2195 | "@webassemblyjs/ieee754": "1.11.1",
2196 | "@webassemblyjs/leb128": "1.11.1",
2197 | "@webassemblyjs/utf8": "1.11.1"
2198 | }
2199 | },
2200 | "@webassemblyjs/wasm-opt": {
2201 | "version": "1.11.1",
2202 | "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz",
2203 | "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==",
2204 | "dev": true,
2205 | "peer": true,
2206 | "requires": {
2207 | "@webassemblyjs/ast": "1.11.1",
2208 | "@webassemblyjs/helper-buffer": "1.11.1",
2209 | "@webassemblyjs/wasm-gen": "1.11.1",
2210 | "@webassemblyjs/wasm-parser": "1.11.1"
2211 | }
2212 | },
2213 | "@webassemblyjs/wasm-parser": {
2214 | "version": "1.11.1",
2215 | "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz",
2216 | "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==",
2217 | "dev": true,
2218 | "peer": true,
2219 | "requires": {
2220 | "@webassemblyjs/ast": "1.11.1",
2221 | "@webassemblyjs/helper-api-error": "1.11.1",
2222 | "@webassemblyjs/helper-wasm-bytecode": "1.11.1",
2223 | "@webassemblyjs/ieee754": "1.11.1",
2224 | "@webassemblyjs/leb128": "1.11.1",
2225 | "@webassemblyjs/utf8": "1.11.1"
2226 | }
2227 | },
2228 | "@webassemblyjs/wast-printer": {
2229 | "version": "1.11.1",
2230 | "resolved": "https://registry.npmmirror.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz",
2231 | "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==",
2232 | "dev": true,
2233 | "peer": true,
2234 | "requires": {
2235 | "@webassemblyjs/ast": "1.11.1",
2236 | "@xtuc/long": "4.2.2"
2237 | }
2238 | },
2239 | "@xtuc/ieee754": {
2240 | "version": "1.2.0",
2241 | "resolved": "https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
2242 | "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
2243 | "dev": true,
2244 | "peer": true
2245 | },
2246 | "@xtuc/long": {
2247 | "version": "4.2.2",
2248 | "resolved": "https://registry.npmmirror.com/@xtuc/long/-/long-4.2.2.tgz",
2249 | "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
2250 | "dev": true,
2251 | "peer": true
2252 | },
2253 | "acorn": {
2254 | "version": "8.8.1",
2255 | "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.8.1.tgz",
2256 | "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==",
2257 | "dev": true,
2258 | "peer": true
2259 | },
2260 | "acorn-import-assertions": {
2261 | "version": "1.8.0",
2262 | "resolved": "https://registry.npmmirror.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz",
2263 | "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==",
2264 | "dev": true,
2265 | "peer": true,
2266 | "requires": {}
2267 | },
2268 | "ajv": {
2269 | "version": "6.12.6",
2270 | "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz",
2271 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
2272 | "dev": true,
2273 | "peer": true,
2274 | "requires": {
2275 | "fast-deep-equal": "^3.1.1",
2276 | "fast-json-stable-stringify": "^2.0.0",
2277 | "json-schema-traverse": "^0.4.1",
2278 | "uri-js": "^4.2.2"
2279 | }
2280 | },
2281 | "ajv-keywords": {
2282 | "version": "3.5.2",
2283 | "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
2284 | "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
2285 | "dev": true,
2286 | "peer": true,
2287 | "requires": {}
2288 | },
2289 | "browserslist": {
2290 | "version": "4.21.4",
2291 | "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.21.4.tgz",
2292 | "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==",
2293 | "dev": true,
2294 | "peer": true,
2295 | "requires": {
2296 | "caniuse-lite": "^1.0.30001400",
2297 | "electron-to-chromium": "^1.4.251",
2298 | "node-releases": "^2.0.6",
2299 | "update-browserslist-db": "^1.0.9"
2300 | }
2301 | },
2302 | "buffer-from": {
2303 | "version": "1.1.2",
2304 | "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz",
2305 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
2306 | "dev": true,
2307 | "peer": true
2308 | },
2309 | "caniuse-lite": {
2310 | "version": "1.0.30001426",
2311 | "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001426.tgz",
2312 | "integrity": "sha512-n7cosrHLl8AWt0wwZw/PJZgUg3lV0gk9LMI7ikGJwhyhgsd2Nb65vKvmSexCqq/J7rbH3mFG6yZZiPR5dLPW5A==",
2313 | "dev": true,
2314 | "peer": true
2315 | },
2316 | "chrome-trace-event": {
2317 | "version": "1.0.3",
2318 | "resolved": "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
2319 | "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
2320 | "dev": true,
2321 | "peer": true
2322 | },
2323 | "codemirror": {
2324 | "version": "5.65.9",
2325 | "resolved": "https://registry.npmmirror.com/codemirror/-/codemirror-5.65.9.tgz",
2326 | "integrity": "sha512-19Jox5sAKpusTDgqgKB5dawPpQcY+ipQK7xoEI+MVucEF9qqFaXpeqY1KaoyGBso/wHQoDa4HMMxMjdsS3Zzzw=="
2327 | },
2328 | "commander": {
2329 | "version": "2.20.3",
2330 | "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz",
2331 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
2332 | "dev": true,
2333 | "peer": true
2334 | },
2335 | "copy-anything": {
2336 | "version": "2.0.6",
2337 | "resolved": "https://registry.npmmirror.com/copy-anything/-/copy-anything-2.0.6.tgz",
2338 | "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==",
2339 | "dev": true,
2340 | "requires": {
2341 | "is-what": "^3.14.1"
2342 | }
2343 | },
2344 | "csstype": {
2345 | "version": "2.6.21",
2346 | "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz",
2347 | "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w=="
2348 | },
2349 | "debug": {
2350 | "version": "3.2.7",
2351 | "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz",
2352 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
2353 | "dev": true,
2354 | "optional": true,
2355 | "requires": {
2356 | "ms": "^2.1.1"
2357 | }
2358 | },
2359 | "electron-to-chromium": {
2360 | "version": "1.4.284",
2361 | "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz",
2362 | "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==",
2363 | "dev": true,
2364 | "peer": true
2365 | },
2366 | "enhanced-resolve": {
2367 | "version": "5.10.0",
2368 | "resolved": "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz",
2369 | "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==",
2370 | "dev": true,
2371 | "peer": true,
2372 | "requires": {
2373 | "graceful-fs": "^4.2.4",
2374 | "tapable": "^2.2.0"
2375 | }
2376 | },
2377 | "errno": {
2378 | "version": "0.1.8",
2379 | "resolved": "https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz",
2380 | "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
2381 | "dev": true,
2382 | "optional": true,
2383 | "requires": {
2384 | "prr": "~1.0.1"
2385 | }
2386 | },
2387 | "es-module-lexer": {
2388 | "version": "0.9.3",
2389 | "resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz",
2390 | "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==",
2391 | "dev": true,
2392 | "peer": true
2393 | },
2394 | "esbuild": {
2395 | "version": "0.15.12",
2396 | "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.15.12.tgz",
2397 | "integrity": "sha512-PcT+/wyDqJQsRVhaE9uX/Oq4XLrFh0ce/bs2TJh4CSaw9xuvI+xFrH2nAYOADbhQjUgAhNWC5LKoUsakm4dxng==",
2398 | "dev": true,
2399 | "requires": {
2400 | "@esbuild/android-arm": "0.15.12",
2401 | "@esbuild/linux-loong64": "0.15.12",
2402 | "esbuild-android-64": "0.15.12",
2403 | "esbuild-android-arm64": "0.15.12",
2404 | "esbuild-darwin-64": "0.15.12",
2405 | "esbuild-darwin-arm64": "0.15.12",
2406 | "esbuild-freebsd-64": "0.15.12",
2407 | "esbuild-freebsd-arm64": "0.15.12",
2408 | "esbuild-linux-32": "0.15.12",
2409 | "esbuild-linux-64": "0.15.12",
2410 | "esbuild-linux-arm": "0.15.12",
2411 | "esbuild-linux-arm64": "0.15.12",
2412 | "esbuild-linux-mips64le": "0.15.12",
2413 | "esbuild-linux-ppc64le": "0.15.12",
2414 | "esbuild-linux-riscv64": "0.15.12",
2415 | "esbuild-linux-s390x": "0.15.12",
2416 | "esbuild-netbsd-64": "0.15.12",
2417 | "esbuild-openbsd-64": "0.15.12",
2418 | "esbuild-sunos-64": "0.15.12",
2419 | "esbuild-windows-32": "0.15.12",
2420 | "esbuild-windows-64": "0.15.12",
2421 | "esbuild-windows-arm64": "0.15.12"
2422 | }
2423 | },
2424 | "esbuild-android-64": {
2425 | "version": "0.15.12",
2426 | "resolved": "https://registry.npmmirror.com/esbuild-android-64/-/esbuild-android-64-0.15.12.tgz",
2427 | "integrity": "sha512-MJKXwvPY9g0rGps0+U65HlTsM1wUs9lbjt5CU19RESqycGFDRijMDQsh68MtbzkqWSRdEtiKS1mtPzKneaAI0Q==",
2428 | "dev": true,
2429 | "optional": true
2430 | },
2431 | "esbuild-android-arm64": {
2432 | "version": "0.15.12",
2433 | "resolved": "https://registry.npmmirror.com/esbuild-android-arm64/-/esbuild-android-arm64-0.15.12.tgz",
2434 | "integrity": "sha512-Hc9SEcZbIMhhLcvhr1DH+lrrec9SFTiRzfJ7EGSBZiiw994gfkVV6vG0sLWqQQ6DD7V4+OggB+Hn0IRUdDUqvA==",
2435 | "dev": true,
2436 | "optional": true
2437 | },
2438 | "esbuild-darwin-64": {
2439 | "version": "0.15.12",
2440 | "resolved": "https://registry.npmmirror.com/esbuild-darwin-64/-/esbuild-darwin-64-0.15.12.tgz",
2441 | "integrity": "sha512-qkmqrTVYPFiePt5qFjP8w/S+GIUMbt6k8qmiPraECUWfPptaPJUGkCKrWEfYFRWB7bY23FV95rhvPyh/KARP8Q==",
2442 | "dev": true,
2443 | "optional": true
2444 | },
2445 | "esbuild-darwin-arm64": {
2446 | "version": "0.15.12",
2447 | "resolved": "https://registry.npmmirror.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.12.tgz",
2448 | "integrity": "sha512-z4zPX02tQ41kcXMyN3c/GfZpIjKoI/BzHrdKUwhC/Ki5BAhWv59A9M8H+iqaRbwpzYrYidTybBwiZAIWCLJAkw==",
2449 | "dev": true,
2450 | "optional": true
2451 | },
2452 | "esbuild-freebsd-64": {
2453 | "version": "0.15.12",
2454 | "resolved": "https://registry.npmmirror.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.12.tgz",
2455 | "integrity": "sha512-XFL7gKMCKXLDiAiBjhLG0XECliXaRLTZh6hsyzqUqPUf/PY4C6EJDTKIeqqPKXaVJ8+fzNek88285krSz1QECw==",
2456 | "dev": true,
2457 | "optional": true
2458 | },
2459 | "esbuild-freebsd-arm64": {
2460 | "version": "0.15.12",
2461 | "resolved": "https://registry.npmmirror.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.12.tgz",
2462 | "integrity": "sha512-jwEIu5UCUk6TjiG1X+KQnCGISI+ILnXzIzt9yDVrhjug2fkYzlLbl0K43q96Q3KB66v6N1UFF0r5Ks4Xo7i72g==",
2463 | "dev": true,
2464 | "optional": true
2465 | },
2466 | "esbuild-linux-32": {
2467 | "version": "0.15.12",
2468 | "resolved": "https://registry.npmmirror.com/esbuild-linux-32/-/esbuild-linux-32-0.15.12.tgz",
2469 | "integrity": "sha512-uSQuSEyF1kVzGzuIr4XM+v7TPKxHjBnLcwv2yPyCz8riV8VUCnO/C4BF3w5dHiVpCd5Z1cebBtZJNlC4anWpwA==",
2470 | "dev": true,
2471 | "optional": true
2472 | },
2473 | "esbuild-linux-64": {
2474 | "version": "0.15.12",
2475 | "resolved": "https://registry.npmmirror.com/esbuild-linux-64/-/esbuild-linux-64-0.15.12.tgz",
2476 | "integrity": "sha512-QcgCKb7zfJxqT9o5z9ZUeGH1k8N6iX1Y7VNsEi5F9+HzN1OIx7ESxtQXDN9jbeUSPiRH1n9cw6gFT3H4qbdvcA==",
2477 | "dev": true,
2478 | "optional": true
2479 | },
2480 | "esbuild-linux-arm": {
2481 | "version": "0.15.12",
2482 | "resolved": "https://registry.npmmirror.com/esbuild-linux-arm/-/esbuild-linux-arm-0.15.12.tgz",
2483 | "integrity": "sha512-Wf7T0aNylGcLu7hBnzMvsTfEXdEdJY/hY3u36Vla21aY66xR0MS5I1Hw8nVquXjTN0A6fk/vnr32tkC/C2lb0A==",
2484 | "dev": true,
2485 | "optional": true
2486 | },
2487 | "esbuild-linux-arm64": {
2488 | "version": "0.15.12",
2489 | "resolved": "https://registry.npmmirror.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.12.tgz",
2490 | "integrity": "sha512-HtNq5xm8fUpZKwWKS2/YGwSfTF+339L4aIA8yphNKYJckd5hVdhfdl6GM2P3HwLSCORS++++7++//ApEwXEuAQ==",
2491 | "dev": true,
2492 | "optional": true
2493 | },
2494 | "esbuild-linux-mips64le": {
2495 | "version": "0.15.12",
2496 | "resolved": "https://registry.npmmirror.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.12.tgz",
2497 | "integrity": "sha512-Qol3+AvivngUZkTVFgLpb0H6DT+N5/zM3V1YgTkryPYFeUvuT5JFNDR3ZiS6LxhyF8EE+fiNtzwlPqMDqVcc6A==",
2498 | "dev": true,
2499 | "optional": true
2500 | },
2501 | "esbuild-linux-ppc64le": {
2502 | "version": "0.15.12",
2503 | "resolved": "https://registry.npmmirror.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.12.tgz",
2504 | "integrity": "sha512-4D8qUCo+CFKaR0cGXtGyVsOI7w7k93Qxb3KFXWr75An0DHamYzq8lt7TNZKoOq/Gh8c40/aKaxvcZnTgQ0TJNg==",
2505 | "dev": true,
2506 | "optional": true
2507 | },
2508 | "esbuild-linux-riscv64": {
2509 | "version": "0.15.12",
2510 | "resolved": "https://registry.npmmirror.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.12.tgz",
2511 | "integrity": "sha512-G9w6NcuuCI6TUUxe6ka0enjZHDnSVK8bO+1qDhMOCtl7Tr78CcZilJj8SGLN00zO5iIlwNRZKHjdMpfFgNn1VA==",
2512 | "dev": true,
2513 | "optional": true
2514 | },
2515 | "esbuild-linux-s390x": {
2516 | "version": "0.15.12",
2517 | "resolved": "https://registry.npmmirror.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.12.tgz",
2518 | "integrity": "sha512-Lt6BDnuXbXeqSlVuuUM5z18GkJAZf3ERskGZbAWjrQoi9xbEIsj/hEzVnSAFLtkfLuy2DE4RwTcX02tZFunXww==",
2519 | "dev": true,
2520 | "optional": true
2521 | },
2522 | "esbuild-netbsd-64": {
2523 | "version": "0.15.12",
2524 | "resolved": "https://registry.npmmirror.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.12.tgz",
2525 | "integrity": "sha512-jlUxCiHO1dsqoURZDQts+HK100o0hXfi4t54MNRMCAqKGAV33JCVvMplLAa2FwviSojT/5ZG5HUfG3gstwAG8w==",
2526 | "dev": true,
2527 | "optional": true
2528 | },
2529 | "esbuild-openbsd-64": {
2530 | "version": "0.15.12",
2531 | "resolved": "https://registry.npmmirror.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.12.tgz",
2532 | "integrity": "sha512-1o1uAfRTMIWNOmpf8v7iudND0L6zRBYSH45sofCZywrcf7NcZA+c7aFsS1YryU+yN7aRppTqdUK1PgbZVaB1Dw==",
2533 | "dev": true,
2534 | "optional": true
2535 | },
2536 | "esbuild-sunos-64": {
2537 | "version": "0.15.12",
2538 | "resolved": "https://registry.npmmirror.com/esbuild-sunos-64/-/esbuild-sunos-64-0.15.12.tgz",
2539 | "integrity": "sha512-nkl251DpoWoBO9Eq9aFdoIt2yYmp4I3kvQjba3jFKlMXuqQ9A4q+JaqdkCouG3DHgAGnzshzaGu6xofGcXyPXg==",
2540 | "dev": true,
2541 | "optional": true
2542 | },
2543 | "esbuild-windows-32": {
2544 | "version": "0.15.12",
2545 | "resolved": "https://registry.npmmirror.com/esbuild-windows-32/-/esbuild-windows-32-0.15.12.tgz",
2546 | "integrity": "sha512-WlGeBZHgPC00O08luIp5B2SP4cNCp/PcS+3Pcg31kdcJPopHxLkdCXtadLU9J82LCfw4TVls21A6lilQ9mzHrw==",
2547 | "dev": true,
2548 | "optional": true
2549 | },
2550 | "esbuild-windows-64": {
2551 | "version": "0.15.12",
2552 | "resolved": "https://registry.npmmirror.com/esbuild-windows-64/-/esbuild-windows-64-0.15.12.tgz",
2553 | "integrity": "sha512-VActO3WnWZSN//xjSfbiGOSyC+wkZtI8I4KlgrTo5oHJM6z3MZZBCuFaZHd8hzf/W9KPhF0lY8OqlmWC9HO5AA==",
2554 | "dev": true,
2555 | "optional": true
2556 | },
2557 | "esbuild-windows-arm64": {
2558 | "version": "0.15.12",
2559 | "resolved": "https://registry.npmmirror.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.12.tgz",
2560 | "integrity": "sha512-Of3MIacva1OK/m4zCNIvBfz8VVROBmQT+gRX6pFTLPngFYcj6TFH/12VveAqq1k9VB2l28EoVMNMUCcmsfwyuA==",
2561 | "dev": true,
2562 | "optional": true
2563 | },
2564 | "escalade": {
2565 | "version": "3.1.1",
2566 | "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz",
2567 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
2568 | "dev": true,
2569 | "peer": true
2570 | },
2571 | "eslint-scope": {
2572 | "version": "5.1.1",
2573 | "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz",
2574 | "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
2575 | "dev": true,
2576 | "peer": true,
2577 | "requires": {
2578 | "esrecurse": "^4.3.0",
2579 | "estraverse": "^4.1.1"
2580 | }
2581 | },
2582 | "esrecurse": {
2583 | "version": "4.3.0",
2584 | "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz",
2585 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
2586 | "dev": true,
2587 | "peer": true,
2588 | "requires": {
2589 | "estraverse": "^5.2.0"
2590 | },
2591 | "dependencies": {
2592 | "estraverse": {
2593 | "version": "5.3.0",
2594 | "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz",
2595 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
2596 | "dev": true,
2597 | "peer": true
2598 | }
2599 | }
2600 | },
2601 | "estraverse": {
2602 | "version": "4.3.0",
2603 | "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz",
2604 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
2605 | "dev": true,
2606 | "peer": true
2607 | },
2608 | "estree-walker": {
2609 | "version": "2.0.2",
2610 | "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
2611 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
2612 | },
2613 | "events": {
2614 | "version": "3.3.0",
2615 | "resolved": "https://registry.npmmirror.com/events/-/events-3.3.0.tgz",
2616 | "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
2617 | "dev": true,
2618 | "peer": true
2619 | },
2620 | "fast-deep-equal": {
2621 | "version": "3.1.3",
2622 | "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
2623 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
2624 | "dev": true,
2625 | "peer": true
2626 | },
2627 | "fast-json-stable-stringify": {
2628 | "version": "2.1.0",
2629 | "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
2630 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
2631 | "dev": true,
2632 | "peer": true
2633 | },
2634 | "fsevents": {
2635 | "version": "2.3.2",
2636 | "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz",
2637 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
2638 | "dev": true,
2639 | "optional": true
2640 | },
2641 | "function-bind": {
2642 | "version": "1.1.1",
2643 | "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz",
2644 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
2645 | "dev": true
2646 | },
2647 | "glob-to-regexp": {
2648 | "version": "0.4.1",
2649 | "resolved": "https://registry.npmmirror.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
2650 | "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
2651 | "dev": true,
2652 | "peer": true
2653 | },
2654 | "graceful-fs": {
2655 | "version": "4.2.10",
2656 | "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz",
2657 | "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
2658 | "dev": true
2659 | },
2660 | "has": {
2661 | "version": "1.0.3",
2662 | "resolved": "https://registry.npmmirror.com/has/-/has-1.0.3.tgz",
2663 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
2664 | "dev": true,
2665 | "requires": {
2666 | "function-bind": "^1.1.1"
2667 | }
2668 | },
2669 | "has-flag": {
2670 | "version": "4.0.0",
2671 | "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
2672 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
2673 | "dev": true,
2674 | "peer": true
2675 | },
2676 | "iconv-lite": {
2677 | "version": "0.6.3",
2678 | "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz",
2679 | "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
2680 | "dev": true,
2681 | "optional": true,
2682 | "requires": {
2683 | "safer-buffer": ">= 2.1.2 < 3.0.0"
2684 | }
2685 | },
2686 | "image-size": {
2687 | "version": "0.5.5",
2688 | "resolved": "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz",
2689 | "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==",
2690 | "dev": true,
2691 | "optional": true
2692 | },
2693 | "is-core-module": {
2694 | "version": "2.11.0",
2695 | "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.11.0.tgz",
2696 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
2697 | "dev": true,
2698 | "requires": {
2699 | "has": "^1.0.3"
2700 | }
2701 | },
2702 | "is-what": {
2703 | "version": "3.14.1",
2704 | "resolved": "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz",
2705 | "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==",
2706 | "dev": true
2707 | },
2708 | "jest-worker": {
2709 | "version": "27.5.1",
2710 | "resolved": "https://registry.npmmirror.com/jest-worker/-/jest-worker-27.5.1.tgz",
2711 | "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
2712 | "dev": true,
2713 | "peer": true,
2714 | "requires": {
2715 | "@types/node": "*",
2716 | "merge-stream": "^2.0.0",
2717 | "supports-color": "^8.0.0"
2718 | }
2719 | },
2720 | "json-parse-even-better-errors": {
2721 | "version": "2.3.1",
2722 | "resolved": "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
2723 | "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
2724 | "dev": true,
2725 | "peer": true
2726 | },
2727 | "json-schema-traverse": {
2728 | "version": "0.4.1",
2729 | "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
2730 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
2731 | "dev": true,
2732 | "peer": true
2733 | },
2734 | "klona": {
2735 | "version": "2.0.5",
2736 | "resolved": "https://registry.npmmirror.com/klona/-/klona-2.0.5.tgz",
2737 | "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==",
2738 | "dev": true
2739 | },
2740 | "less": {
2741 | "version": "4.1.3",
2742 | "resolved": "https://registry.npmmirror.com/less/-/less-4.1.3.tgz",
2743 | "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==",
2744 | "dev": true,
2745 | "requires": {
2746 | "copy-anything": "^2.0.1",
2747 | "errno": "^0.1.1",
2748 | "graceful-fs": "^4.1.2",
2749 | "image-size": "~0.5.0",
2750 | "make-dir": "^2.1.0",
2751 | "mime": "^1.4.1",
2752 | "needle": "^3.1.0",
2753 | "parse-node-version": "^1.0.1",
2754 | "source-map": "~0.6.0",
2755 | "tslib": "^2.3.0"
2756 | }
2757 | },
2758 | "less-loader": {
2759 | "version": "11.1.0",
2760 | "resolved": "https://registry.npmmirror.com/less-loader/-/less-loader-11.1.0.tgz",
2761 | "integrity": "sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==",
2762 | "dev": true,
2763 | "requires": {
2764 | "klona": "^2.0.4"
2765 | }
2766 | },
2767 | "loader-runner": {
2768 | "version": "4.3.0",
2769 | "resolved": "https://registry.npmmirror.com/loader-runner/-/loader-runner-4.3.0.tgz",
2770 | "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
2771 | "dev": true,
2772 | "peer": true
2773 | },
2774 | "magic-string": {
2775 | "version": "0.25.9",
2776 | "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz",
2777 | "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
2778 | "requires": {
2779 | "sourcemap-codec": "^1.4.8"
2780 | }
2781 | },
2782 | "make-dir": {
2783 | "version": "2.1.0",
2784 | "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz",
2785 | "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
2786 | "dev": true,
2787 | "optional": true,
2788 | "requires": {
2789 | "pify": "^4.0.1",
2790 | "semver": "^5.6.0"
2791 | }
2792 | },
2793 | "merge-stream": {
2794 | "version": "2.0.0",
2795 | "resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz",
2796 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
2797 | "dev": true,
2798 | "peer": true
2799 | },
2800 | "mime": {
2801 | "version": "1.6.0",
2802 | "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz",
2803 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
2804 | "dev": true,
2805 | "optional": true
2806 | },
2807 | "mime-db": {
2808 | "version": "1.52.0",
2809 | "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz",
2810 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
2811 | "dev": true,
2812 | "peer": true
2813 | },
2814 | "mime-types": {
2815 | "version": "2.1.35",
2816 | "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz",
2817 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
2818 | "dev": true,
2819 | "peer": true,
2820 | "requires": {
2821 | "mime-db": "1.52.0"
2822 | }
2823 | },
2824 | "ms": {
2825 | "version": "2.1.3",
2826 | "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz",
2827 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
2828 | "dev": true,
2829 | "optional": true
2830 | },
2831 | "nanoid": {
2832 | "version": "3.3.4",
2833 | "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.4.tgz",
2834 | "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw=="
2835 | },
2836 | "needle": {
2837 | "version": "3.1.0",
2838 | "resolved": "https://registry.npmmirror.com/needle/-/needle-3.1.0.tgz",
2839 | "integrity": "sha512-gCE9weDhjVGCRqS8dwDR/D3GTAeyXLXuqp7I8EzH6DllZGXSUyxuqqLh+YX9rMAWaaTFyVAg6rHGL25dqvczKw==",
2840 | "dev": true,
2841 | "optional": true,
2842 | "requires": {
2843 | "debug": "^3.2.6",
2844 | "iconv-lite": "^0.6.3",
2845 | "sax": "^1.2.4"
2846 | }
2847 | },
2848 | "neo-async": {
2849 | "version": "2.6.2",
2850 | "resolved": "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz",
2851 | "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
2852 | "dev": true,
2853 | "peer": true
2854 | },
2855 | "node-releases": {
2856 | "version": "2.0.6",
2857 | "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.6.tgz",
2858 | "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==",
2859 | "dev": true,
2860 | "peer": true
2861 | },
2862 | "parse-node-version": {
2863 | "version": "1.0.1",
2864 | "resolved": "https://registry.npmmirror.com/parse-node-version/-/parse-node-version-1.0.1.tgz",
2865 | "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==",
2866 | "dev": true
2867 | },
2868 | "path-parse": {
2869 | "version": "1.0.7",
2870 | "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz",
2871 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
2872 | "dev": true
2873 | },
2874 | "picocolors": {
2875 | "version": "1.0.0",
2876 | "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz",
2877 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
2878 | },
2879 | "pify": {
2880 | "version": "4.0.1",
2881 | "resolved": "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz",
2882 | "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
2883 | "dev": true,
2884 | "optional": true
2885 | },
2886 | "pinia": {
2887 | "version": "2.0.23",
2888 | "resolved": "https://registry.npmmirror.com/pinia/-/pinia-2.0.23.tgz",
2889 | "integrity": "sha512-N15hFf4o5STrxpNrib1IEb1GOArvPYf1zPvQVRGOO1G1d74Ak0J0lVyalX/SmrzdT4Q0nlEFjbURsmBmIGUR5Q==",
2890 | "requires": {
2891 | "@vue/devtools-api": "^6.4.4",
2892 | "vue-demi": "*"
2893 | },
2894 | "dependencies": {
2895 | "vue-demi": {
2896 | "version": "0.13.11",
2897 | "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.11.tgz",
2898 | "integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==",
2899 | "requires": {}
2900 | }
2901 | }
2902 | },
2903 | "postcss": {
2904 | "version": "8.4.18",
2905 | "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.18.tgz",
2906 | "integrity": "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==",
2907 | "requires": {
2908 | "nanoid": "^3.3.4",
2909 | "picocolors": "^1.0.0",
2910 | "source-map-js": "^1.0.2"
2911 | }
2912 | },
2913 | "prr": {
2914 | "version": "1.0.1",
2915 | "resolved": "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz",
2916 | "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
2917 | "dev": true,
2918 | "optional": true
2919 | },
2920 | "punycode": {
2921 | "version": "2.1.1",
2922 | "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.1.1.tgz",
2923 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
2924 | "dev": true,
2925 | "peer": true
2926 | },
2927 | "randombytes": {
2928 | "version": "2.1.0",
2929 | "resolved": "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz",
2930 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
2931 | "dev": true,
2932 | "peer": true,
2933 | "requires": {
2934 | "safe-buffer": "^5.1.0"
2935 | }
2936 | },
2937 | "resolve": {
2938 | "version": "1.22.1",
2939 | "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.1.tgz",
2940 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
2941 | "dev": true,
2942 | "requires": {
2943 | "is-core-module": "^2.9.0",
2944 | "path-parse": "^1.0.7",
2945 | "supports-preserve-symlinks-flag": "^1.0.0"
2946 | }
2947 | },
2948 | "rollup": {
2949 | "version": "2.79.1",
2950 | "resolved": "https://registry.npmmirror.com/rollup/-/rollup-2.79.1.tgz",
2951 | "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==",
2952 | "dev": true,
2953 | "requires": {
2954 | "fsevents": "~2.3.2"
2955 | }
2956 | },
2957 | "safe-buffer": {
2958 | "version": "5.2.1",
2959 | "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz",
2960 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
2961 | "dev": true,
2962 | "peer": true
2963 | },
2964 | "safer-buffer": {
2965 | "version": "2.1.2",
2966 | "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz",
2967 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
2968 | "dev": true,
2969 | "optional": true
2970 | },
2971 | "sax": {
2972 | "version": "1.2.4",
2973 | "resolved": "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz",
2974 | "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
2975 | "dev": true,
2976 | "optional": true
2977 | },
2978 | "schema-utils": {
2979 | "version": "3.1.1",
2980 | "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.1.1.tgz",
2981 | "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
2982 | "dev": true,
2983 | "peer": true,
2984 | "requires": {
2985 | "@types/json-schema": "^7.0.8",
2986 | "ajv": "^6.12.5",
2987 | "ajv-keywords": "^3.5.2"
2988 | }
2989 | },
2990 | "semver": {
2991 | "version": "5.7.1",
2992 | "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz",
2993 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
2994 | "dev": true,
2995 | "optional": true
2996 | },
2997 | "serialize-javascript": {
2998 | "version": "6.0.0",
2999 | "resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
3000 | "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
3001 | "dev": true,
3002 | "peer": true,
3003 | "requires": {
3004 | "randombytes": "^2.1.0"
3005 | }
3006 | },
3007 | "source-map": {
3008 | "version": "0.6.1",
3009 | "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
3010 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
3011 | },
3012 | "source-map-js": {
3013 | "version": "1.0.2",
3014 | "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz",
3015 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw=="
3016 | },
3017 | "source-map-support": {
3018 | "version": "0.5.21",
3019 | "resolved": "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz",
3020 | "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
3021 | "dev": true,
3022 | "peer": true,
3023 | "requires": {
3024 | "buffer-from": "^1.0.0",
3025 | "source-map": "^0.6.0"
3026 | }
3027 | },
3028 | "sourcemap-codec": {
3029 | "version": "1.4.8",
3030 | "resolved": "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
3031 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA=="
3032 | },
3033 | "supports-color": {
3034 | "version": "8.1.1",
3035 | "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz",
3036 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
3037 | "dev": true,
3038 | "peer": true,
3039 | "requires": {
3040 | "has-flag": "^4.0.0"
3041 | }
3042 | },
3043 | "supports-preserve-symlinks-flag": {
3044 | "version": "1.0.0",
3045 | "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
3046 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
3047 | "dev": true
3048 | },
3049 | "tapable": {
3050 | "version": "2.2.1",
3051 | "resolved": "https://registry.npmmirror.com/tapable/-/tapable-2.2.1.tgz",
3052 | "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
3053 | "dev": true,
3054 | "peer": true
3055 | },
3056 | "terser": {
3057 | "version": "5.15.1",
3058 | "resolved": "https://registry.npmmirror.com/terser/-/terser-5.15.1.tgz",
3059 | "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==",
3060 | "dev": true,
3061 | "peer": true,
3062 | "requires": {
3063 | "@jridgewell/source-map": "^0.3.2",
3064 | "acorn": "^8.5.0",
3065 | "commander": "^2.20.0",
3066 | "source-map-support": "~0.5.20"
3067 | }
3068 | },
3069 | "terser-webpack-plugin": {
3070 | "version": "5.3.6",
3071 | "resolved": "https://registry.npmmirror.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz",
3072 | "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==",
3073 | "dev": true,
3074 | "peer": true,
3075 | "requires": {
3076 | "@jridgewell/trace-mapping": "^0.3.14",
3077 | "jest-worker": "^27.4.5",
3078 | "schema-utils": "^3.1.1",
3079 | "serialize-javascript": "^6.0.0",
3080 | "terser": "^5.14.1"
3081 | }
3082 | },
3083 | "tslib": {
3084 | "version": "2.4.0",
3085 | "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.4.0.tgz",
3086 | "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==",
3087 | "dev": true
3088 | },
3089 | "update-browserslist-db": {
3090 | "version": "1.0.10",
3091 | "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz",
3092 | "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==",
3093 | "dev": true,
3094 | "peer": true,
3095 | "requires": {
3096 | "escalade": "^3.1.1",
3097 | "picocolors": "^1.0.0"
3098 | }
3099 | },
3100 | "uri-js": {
3101 | "version": "4.4.1",
3102 | "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz",
3103 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
3104 | "dev": true,
3105 | "peer": true,
3106 | "requires": {
3107 | "punycode": "^2.1.0"
3108 | }
3109 | },
3110 | "vite": {
3111 | "version": "3.2.1",
3112 | "resolved": "https://registry.npmmirror.com/vite/-/vite-3.2.1.tgz",
3113 | "integrity": "sha512-ADtMkfHuWq4tskJsri2n2FZkORO8ZyhI+zIz7zTrDAgDEtct1jdxOg3YsZBfHhKjmMoWLOSCr+64qrEDGo/DbQ==",
3114 | "dev": true,
3115 | "requires": {
3116 | "esbuild": "^0.15.9",
3117 | "fsevents": "~2.3.2",
3118 | "postcss": "^8.4.18",
3119 | "resolve": "^1.22.1",
3120 | "rollup": "^2.79.1"
3121 | }
3122 | },
3123 | "vue": {
3124 | "version": "3.2.41",
3125 | "resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.41.tgz",
3126 | "integrity": "sha512-uuuvnrDXEeZ9VUPljgHkqB5IaVO8SxhPpqF2eWOukVrBnRBx2THPSGQBnVRt0GrIG1gvCmFXMGbd7FqcT1ixNQ==",
3127 | "requires": {
3128 | "@vue/compiler-dom": "3.2.41",
3129 | "@vue/compiler-sfc": "3.2.41",
3130 | "@vue/runtime-dom": "3.2.41",
3131 | "@vue/server-renderer": "3.2.41",
3132 | "@vue/shared": "3.2.41"
3133 | }
3134 | },
3135 | "watchpack": {
3136 | "version": "2.4.0",
3137 | "resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-2.4.0.tgz",
3138 | "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==",
3139 | "dev": true,
3140 | "peer": true,
3141 | "requires": {
3142 | "glob-to-regexp": "^0.4.1",
3143 | "graceful-fs": "^4.1.2"
3144 | }
3145 | },
3146 | "webpack": {
3147 | "version": "5.74.0",
3148 | "resolved": "https://registry.npmmirror.com/webpack/-/webpack-5.74.0.tgz",
3149 | "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==",
3150 | "dev": true,
3151 | "peer": true,
3152 | "requires": {
3153 | "@types/eslint-scope": "^3.7.3",
3154 | "@types/estree": "^0.0.51",
3155 | "@webassemblyjs/ast": "1.11.1",
3156 | "@webassemblyjs/wasm-edit": "1.11.1",
3157 | "@webassemblyjs/wasm-parser": "1.11.1",
3158 | "acorn": "^8.7.1",
3159 | "acorn-import-assertions": "^1.7.6",
3160 | "browserslist": "^4.14.5",
3161 | "chrome-trace-event": "^1.0.2",
3162 | "enhanced-resolve": "^5.10.0",
3163 | "es-module-lexer": "^0.9.0",
3164 | "eslint-scope": "5.1.1",
3165 | "events": "^3.2.0",
3166 | "glob-to-regexp": "^0.4.1",
3167 | "graceful-fs": "^4.2.9",
3168 | "json-parse-even-better-errors": "^2.3.1",
3169 | "loader-runner": "^4.2.0",
3170 | "mime-types": "^2.1.27",
3171 | "neo-async": "^2.6.2",
3172 | "schema-utils": "^3.1.0",
3173 | "tapable": "^2.1.1",
3174 | "terser-webpack-plugin": "^5.1.3",
3175 | "watchpack": "^2.4.0",
3176 | "webpack-sources": "^3.2.3"
3177 | }
3178 | },
3179 | "webpack-sources": {
3180 | "version": "3.2.3",
3181 | "resolved": "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz",
3182 | "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
3183 | "dev": true,
3184 | "peer": true
3185 | }
3186 | }
3187 | }
3188 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vnode-visualization",
3 | "private": true,
4 | "version": "0.0.0",
5 | "type": "module",
6 | "scripts": {
7 | "dev": "vite",
8 | "build": "vite build",
9 | "preview": "vite preview"
10 | },
11 | "dependencies": {
12 | "codemirror": "^5.65.9",
13 | "pinia": "^2.0.23",
14 | "vue": "^3.2.37"
15 | },
16 | "devDependencies": {
17 | "@vitejs/plugin-vue": "^3.1.0",
18 | "less": "^4.1.3",
19 | "less-loader": "^11.1.0",
20 | "vite": "^3.1.0"
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/public/vite.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/App.vue:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
27 |
34 |
--------------------------------------------------------------------------------
/src/assets/箭头_向上.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/箭头_向下.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/components/Content.vue:
--------------------------------------------------------------------------------
1 |
196 |
197 |
198 |
199 |
200 |
214 |
215 |
216 |
217 |
218 |
219 |
225 |
{{ item.name }}
226 |
{{ item.value }}
227 |

228 |
229 |
230 |
231 |
232 |
233 |
旧的VNode列表
234 |
235 |
236 |
249 |
{{ item ? item.children : '空' }}
250 |
251 |
252 |
253 |
254 |
255 |
256 |
新的VNode列表
257 |
258 |
259 |
272 |
{{ item.children }}
273 |
274 |
275 |
276 |
277 |
278 |
{{ info }}
279 |
280 |
281 |
282 |
288 |

289 |
{{ item.value }}
290 |
{{ item.name }}
291 |
292 |
293 |
294 |
295 |
真实DOM列表
296 |
297 |
298 |
303 |
{{ item.children }}
304 |
305 |
306 |
307 |
308 |
309 |
310 |
311 |
316 | {{ item.children }}
317 |
318 |
319 |
320 |
321 |
322 |
323 |
324 |
325 |
340 |
517 |
--------------------------------------------------------------------------------
/src/components/Sidebar.vue:
--------------------------------------------------------------------------------
1 |
50 |
51 |
52 |
71 |
72 |
73 |
120 |
--------------------------------------------------------------------------------
/src/doubleEndedDiff/index.js:
--------------------------------------------------------------------------------
1 | let callbacks = {}
2 | let time = 3000
3 |
4 | /**
5 | * javascript comment
6 | * @Author: 王林25
7 | * @Date: 2022-10-26 09:55:20
8 | * @Desc: 等待函数
9 | */
10 | const wait = t => {
11 | return new Promise(resolve => {
12 | setTimeout(
13 | () => {
14 | resolve()
15 | },
16 | t === undefined ? time : t
17 | )
18 | })
19 | }
20 |
21 | /**
22 | * javascript comment
23 | * @Author: 王林25
24 | * @Date: 2021-06-28 14:05:31
25 | * @Desc: 创建vNode对象
26 | */
27 | export const h = (tag, data = {}, children) => {
28 | let text = ''
29 | let el
30 | let key
31 | // 文本节点
32 | if (typeof children === 'string' || typeof children === 'number') {
33 | text = children
34 | children = undefined
35 | } else if (!Array.isArray(children)) {
36 | children = undefined
37 | }
38 | if (data && data.key) {
39 | key = data.key
40 | }
41 | return {
42 | tag, // 元素标签
43 | children, // 子元素
44 | text, // 文本节点的文本
45 | el, // 真实dom
46 | key,
47 | data
48 | }
49 | }
50 |
51 | /**
52 | * javascript comment
53 | * @Author: 王林25
54 | * @Date: 2021-06-28 16:24:56
55 | * @Desc: vnode->dom
56 | */
57 | const createEl = vnode => {
58 | let el = document.createElement(vnode.tag)
59 | vnode.el = el
60 | if (vnode.children && vnode.children.length > 0) {
61 | vnode.children.forEach(item => {
62 | el.appendChild(createEl(item))
63 | })
64 | }
65 | if (vnode.text) {
66 | el.appendChild(document.createTextNode(vnode.text))
67 | }
68 | return el
69 | }
70 |
71 | /**
72 | * javascript comment
73 | * @Author: 王林25
74 | * @Date: 2021-06-29 13:42:55
75 | * @Desc: 判断是否是同一个节点
76 | */
77 | const isSameNode = (a, b) => {
78 | return a.key === b.key && a.tag === b.tag
79 | }
80 |
81 | /**
82 | * javascript comment
83 | * @Author: 王林25
84 | * @Date: 2021-06-29 15:12:24
85 | * @Desc: 在节点列表里寻找同个节点,返回索引
86 | */
87 | const findSameNode = (list, node) => {
88 | return list.findIndex(item => {
89 | return item && isSameNode(item, node)
90 | })
91 | }
92 |
93 | /**
94 | * javascript comment
95 | * @Author: 王林25
96 | * @Date: 2021-06-29 09:28:42
97 | * @Desc: diff算法
98 | */
99 | const diff = async (el, oldChildren, newChildren) => {
100 | // 指针
101 | let oldStartIdx = 0
102 | let oldEndIdx = oldChildren.length - 1
103 | let newStartIdx = 0
104 | let newEndIdx = newChildren.length - 1
105 | // 节点
106 | let oldStartVNode = oldChildren[oldStartIdx]
107 | let oldEndVNode = oldChildren[oldEndIdx]
108 | let newStartVNode = newChildren[newStartIdx]
109 | let newEndVNode = newChildren[newEndIdx]
110 | callbacks.updatePointers(oldStartIdx, oldEndIdx, newStartIdx, newEndIdx)
111 | while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {
112 | let stop = false
113 | let _isSameNode = false
114 | if (oldStartVNode === null) {
115 | callbacks.updateInfo('')
116 | oldStartVNode = oldChildren[++oldStartIdx]
117 | stop = true
118 | }
119 | if (!stop && oldEndVNode === null) {
120 | callbacks.updateInfo('')
121 | oldEndVNode = oldChildren[--oldEndIdx]
122 | stop = true
123 | }
124 | if (!stop && newStartVNode === null) {
125 | callbacks.updateInfo('')
126 | newStartVNode = oldChildren[++newStartIdx]
127 | stop = true
128 | }
129 | if (!stop && newEndVNode === null) {
130 | callbacks.updateInfo('')
131 | newEndVNode = oldChildren[--newEndIdx]
132 | stop = true
133 | }
134 | if (!stop) {
135 | callbacks.updateInfo('头-头比较')
136 | callbacks.updateCompareNodes(oldStartIdx, newStartIdx)
137 | _isSameNode = isSameNode(oldStartVNode, newStartVNode)
138 | if (_isSameNode) {
139 | callbacks.updateInfo(
140 | 'key值相同,可以复用,进行patch打补丁操作。新旧节点位置相同,不需要移动对应的真实DOM节点'
141 | )
142 | }
143 | await wait()
144 | }
145 | if (!stop && _isSameNode) {
146 | // 头-头
147 | patchVNode(oldStartVNode, newStartVNode)
148 | // 更新指针
149 | oldStartVNode = oldChildren[++oldStartIdx]
150 | newStartVNode = newChildren[++newStartIdx]
151 | stop = true
152 | }
153 | if (!stop) {
154 | callbacks.updateInfo('头-尾比较')
155 | callbacks.updateCompareNodes(oldStartIdx, newEndIdx)
156 | _isSameNode = isSameNode(oldStartVNode, newEndVNode)
157 | if (_isSameNode) {
158 | callbacks.updateInfo(
159 | 'key值相同,可以复用,进行patch打补丁操作。新旧节点位置不同,需要移动对应的真实DOM节点'
160 | )
161 | }
162 | await wait()
163 | }
164 | if (!stop && _isSameNode) {
165 | // 头-尾
166 | patchVNode(oldStartVNode, newEndVNode)
167 | // 把oldStartVNode节点移动到最后
168 | el.insertBefore(oldStartVNode.el, oldEndVNode.el.nextSibling)
169 | callbacks.moveNode(oldStartIdx, oldEndIdx + 1)
170 | // 更新指针
171 | oldStartVNode = oldChildren[++oldStartIdx]
172 | newEndVNode = newChildren[--newEndIdx]
173 | stop = true
174 | }
175 | if (!stop) {
176 | callbacks.updateInfo('尾-头比较')
177 | callbacks.updateCompareNodes(oldEndIdx, newStartIdx)
178 | _isSameNode = isSameNode(oldEndVNode, newStartVNode)
179 | if (_isSameNode) {
180 | callbacks.updateInfo(
181 | 'key值相同,可以复用,进行patch打补丁操作。新旧节点位置不同,需要移动对应的真实DOM节点'
182 | )
183 | }
184 | await wait()
185 | }
186 | if (!stop && _isSameNode) {
187 | // 尾-头
188 | patchVNode(oldEndVNode, newStartVNode)
189 | // 把oldEndVNode节点移动到oldStartVNode前
190 | el.insertBefore(oldEndVNode.el, oldStartVNode.el)
191 | callbacks.moveNode(oldEndIdx, oldStartIdx)
192 | // 更新指针
193 | oldEndVNode = oldChildren[--oldEndIdx]
194 | newStartVNode = newChildren[++newStartIdx]
195 | stop = true
196 | }
197 | if (!stop) {
198 | callbacks.updateInfo('尾-尾比较')
199 | callbacks.updateCompareNodes(oldEndIdx, newEndIdx)
200 | _isSameNode = isSameNode(oldEndVNode, newEndVNode)
201 | if (_isSameNode) {
202 | callbacks.updateInfo(
203 | 'key值相同,可以复用,进行patch打补丁操作。新旧节点位置相同,不需要移动对应的真实DOM节点'
204 | )
205 | }
206 | await wait()
207 | }
208 | if (!stop && _isSameNode) {
209 | // 尾-尾
210 | patchVNode(oldEndVNode, newEndVNode)
211 | // 更新指针
212 | oldEndVNode = oldChildren[--oldEndIdx]
213 | newEndVNode = newChildren[--newEndIdx]
214 | stop = true
215 | }
216 | callbacks.updateCompareNodes(-1, -1)
217 | if (!stop) {
218 | callbacks.updateInfo(
219 | '头尾比较没有找到可复用节点,直接在旧的VNode列表里搜索是否有可复用节点'
220 | )
221 | callbacks.updateCompareNodes(-1, newStartIdx)
222 | await wait()
223 | let findIndex = findSameNode(oldChildren, newStartVNode)
224 | // newStartVNode在旧列表里不存在,那么是新节点,创建插入
225 | if (findIndex === -1) {
226 | callbacks.updateInfo('该节点在旧列表里不存在,需要创建DOM节点并插入')
227 | await wait()
228 | el.insertBefore(createEl(newStartVNode), oldStartVNode.el)
229 | callbacks.insertNode(newStartVNode, oldStartIdx)
230 | await wait()
231 | } else {
232 | // 在旧列表里存在,那么进行patch,并且移动到oldStartVNode前
233 | callbacks.updateInfo(
234 | '该节点在旧的VNode列表里存在可复用节点,进行path打补丁操作,并且移动对应的真实DOM节点。然后将该VNode置空'
235 | )
236 | callbacks.updateCompareNodes(findIndex, newStartIdx)
237 | await wait()
238 | callbacks.updateCompareNodes(-1, -1)
239 | let oldVNode = oldChildren[findIndex]
240 | patchVNode(oldVNode, newStartVNode)
241 | el.insertBefore(oldVNode.el, oldStartVNode.el)
242 | callbacks.moveNode(findIndex, oldStartIdx, true)
243 | oldChildren[findIndex] = null
244 | await wait()
245 | }
246 | newStartVNode = newChildren[++newStartIdx]
247 | }
248 | callbacks.updateCompareNodes(-1, -1)
249 | callbacks.updateInfo('')
250 | callbacks.updatePointers(oldStartIdx, oldEndIdx, newStartIdx, newEndIdx)
251 | await wait()
252 | }
253 | // 旧列表里存在新列表里没有的节点,需要删除
254 | if (oldStartIdx <= oldEndIdx) {
255 | callbacks.updateInfo(
256 | '新的VNode列表已比较完毕,开始删除旧的VNode列表里不再需要的节点'
257 | )
258 | await wait()
259 | for (let i = oldStartIdx; i <= oldEndIdx; i++) {
260 | if (oldChildren[i]) {
261 | callbacks.updateInfo('该节点在新列表里不存在,需要删除')
262 | callbacks.updateDeleteNode(i)
263 | await wait()
264 | callbacks.updateInfo('')
265 | callbacks.updateDeleteNode(-1)
266 | removeEvent(oldChildren[i])
267 | el.removeChild(oldChildren[i].el)
268 | callbacks.removeChild(i)
269 | } else {
270 | callbacks.updateInfo('空的VNode,跳过')
271 | callbacks.updateDeleteNode(i)
272 | await wait()
273 | callbacks.updateInfo('')
274 | callbacks.updateDeleteNode(-1)
275 | }
276 | }
277 | } else if (newStartIdx <= newEndIdx) {
278 | callbacks.updateInfo(
279 | '旧的VNode列表已比较完毕,开始添加旧的VNode列表里不存在的节点'
280 | )
281 | await wait()
282 | let before = newChildren[newEndIdx + 1]
283 | ? newChildren[newEndIdx + 1].el
284 | : null
285 | for (let i = newStartIdx; i <= newEndIdx; i++) {
286 | callbacks.updateInfo('该节点在旧列表里不存在,需要添加')
287 | callbacks.updateAddNode(i)
288 | await wait()
289 | callbacks.updateInfo('')
290 | callbacks.updateAddNode(-1)
291 | el.insertBefore(createEl(newChildren[i]), before)
292 | callbacks.insertNode(newChildren[i], before ? newEndIdx + 1 : -1, true)
293 | }
294 | }
295 | callbacks.updateDeleteNode(-1)
296 | callbacks.updateAddNode(-1)
297 | callbacks.updateInfo('大功告成')
298 | callbacks.done()
299 | }
300 |
301 | /**
302 | * javascript comment
303 | * @Author: 王林25
304 | * @Date: 2021-06-29 16:58:44
305 | * @Desc: 更新类名
306 | */
307 | const updateClass = (el, newVNode) => {
308 | if (!el) {
309 | return
310 | }
311 | el.className = ''
312 | if (newVNode.data && newVNode.data.class) {
313 | let className = ''
314 | Object.keys(newVNode.data.class).forEach(cla => {
315 | if (newVNode.data.class[cla]) {
316 | className += cla + ' '
317 | }
318 | })
319 | el.className = className
320 | }
321 | }
322 |
323 | /**
324 | * javascript comment
325 | * @Author: 王林25
326 | * @Date: 2021-06-29 17:10:21
327 | * @Desc: 更新样式
328 | */
329 | const updateStyle = (el, oldVNode, newVNode) => {
330 | if (!el) {
331 | return
332 | }
333 | let oldStyle = (oldVNode && oldVNode.data.style) || {}
334 | let newStyle = newVNode.data.style || {}
335 | // 移除旧节点里存在新节点里不存在的样式
336 | Object.keys(oldStyle).forEach(item => {
337 | if (newStyle[item] === undefined || newStyle[item] === '') {
338 | el.style[item] = ''
339 | }
340 | })
341 | // 添加旧节点不存在的新样式
342 | Object.keys(newStyle).forEach(item => {
343 | if (oldStyle[item] !== newStyle[item]) {
344 | el.style[item] = newStyle[item]
345 | }
346 | })
347 | }
348 |
349 | /**
350 | * javascript comment
351 | * @Author: 王林25
352 | * @Date: 2021-06-29 17:23:51
353 | * @Desc: 更新属性
354 | */
355 | const updateAttr = (el, oldVNode, newVNode) => {
356 | if (!el) {
357 | return
358 | }
359 | let oldAttr = oldVNode && oldVNode.data.attr ? oldVNode.data.attr : {}
360 | let newAttr = newVNode.data.attr || {}
361 | // 移除旧节点里存在新节点里不存在的属性
362 | Object.keys(oldAttr).forEach(item => {
363 | if (newAttr[item] === undefined || newAttr[item] === '') {
364 | el.removeAttribute(item)
365 | }
366 | })
367 | // 添加旧节点不存在的新属性
368 | Object.keys(newAttr).forEach(item => {
369 | if (oldAttr[item] !== newAttr[item]) {
370 | el.setAttribute(item, newAttr[item])
371 | }
372 | })
373 | }
374 |
375 | /**
376 | * javascript comment
377 | * @Author: 王林25
378 | * @Date: 2021-06-29 17:44:01
379 | * @Desc: 移除所有事件
380 | */
381 | const removeEvent = oldVNode => {
382 | if (oldVNode && oldVNode.data && oldVNode.data.event) {
383 | Object.keys(oldVNode.data.event).forEach(item => {
384 | oldVNode.el.removeEventListener(item, oldVNode.data.event[item])
385 | })
386 | }
387 | }
388 |
389 | /**
390 | * javascript comment
391 | * @Author: 王林25
392 | * @Date: 2021-06-29 17:41:37
393 | * @Desc: 更新事件
394 | */
395 | const updateEvent = (el, oldVNode, newVNode) => {
396 | if (!el) {
397 | return
398 | }
399 | let oldEvent = oldVNode && oldVNode.data.event ? oldVNode.data.event : {}
400 | let newEvent = newVNode.data.event || {}
401 | // 移除旧节点里存在新节点里不存在的事件
402 | Object.keys(oldEvent).forEach(item => {
403 | if (newEvent[item] === undefined || oldEvent[item] !== newEvent[item]) {
404 | el.removeEventListener(item, oldEvent[item])
405 | }
406 | })
407 | // 添加旧节点不存在的新事件
408 | Object.keys(newEvent).forEach(item => {
409 | if (oldEvent[item] !== newEvent[item]) {
410 | el.addEventListener(item, newEvent[item])
411 | }
412 | })
413 | }
414 |
415 | /**
416 | * javascript comment
417 | * @Author: 王林25
418 | * @Date: 2021-06-28 16:42:15
419 | * @Desc: 打补丁
420 | */
421 | const patchVNode = (oldVNode, newVNode) => {
422 | if (oldVNode === newVNode) {
423 | return
424 | }
425 | // 元素标签相同,进行patch
426 | if (oldVNode.tag === newVNode.tag) {
427 | // 元素类型相同,那么旧元素肯定是进行复用的
428 | let el = (newVNode.el = oldVNode.el)
429 | updateClass(el, newVNode)
430 | updateStyle(el, oldVNode, newVNode)
431 | updateAttr(el, oldVNode, newVNode)
432 | updateEvent(el, oldVNode, newVNode)
433 | // 新节点的子节点是文本节点
434 | if (newVNode.text) {
435 | // 移除旧节点的子节点
436 | if (oldVNode.children) {
437 | oldVNode.children.forEach(item => {
438 | removeEvent(item)
439 | el.removeChild(item.el)
440 | })
441 | }
442 | // 文本内容不相同则更新文本
443 | if (oldVNode.text !== newVNode.text) {
444 | el.textContent = newVNode.text
445 | }
446 | } else {
447 | // 新旧节点都存在子节点,那么就要进行diff
448 | if (oldVNode.children && newVNode.children) {
449 | diff(el, oldVNode.children, newVNode.children)
450 | } else if (oldVNode.children) {
451 | // 新节点不存在子节点,那么移除旧节点的所有子节点
452 | oldVNode.children.forEach(item => {
453 | removeEvent(item)
454 | el.removeChild(item.el)
455 | })
456 | } else if (newVNode.children) {
457 | // 新节点存在子节点
458 | // 旧节点存在文本节点则移除
459 | if (oldVNode.text) {
460 | el.textContent = ''
461 | }
462 | // 添加新节点的子节点
463 | newVNode.children.forEach(item => {
464 | el.appendChild(createEl(item))
465 | })
466 | } else if (oldVNode.text) {
467 | // 新节点啥也没有,旧节点存在文本节点
468 | el.textContent = ''
469 | }
470 | }
471 | } else {
472 | // 不同使用newNode替换oldNode
473 | let newEl = createEl(newVNode)
474 | updateClass(newEl, newVNode)
475 | updateStyle(newEl, null, newVNode)
476 | updateAttr(newEl, null, newVNode)
477 | removeEvent(oldNode)
478 | updateEvent(newEl, null, newVNode)
479 | let parent = oldVNode.el.parentNode
480 | parent.insertBefore(newEl, oldVNode.el)
481 | parent.removeChild(oldVNode.el)
482 | }
483 | }
484 |
485 | /**
486 | * javascript comment
487 | * @Author: 王林25
488 | * @Date: 2021-06-28 15:55:23
489 | * @Desc: 入口方法
490 | */
491 | export const patch = (oldVNode, newVNode, handles, speed) => {
492 | callbacks = handles
493 | time = speed
494 | // dom元素转换成vnode
495 | if (!oldVNode.tag) {
496 | let el = oldVNode
497 | el.innerHTML = ''
498 | oldVNode = h(oldVNode.tagName.toLowerCase())
499 | oldVNode.el = el
500 | }
501 | patchVNode(oldVNode, newVNode)
502 | return newVNode
503 | }
504 |
505 | /*
506 |
507 | let preVNode = patch(document.getElementById('app'), h('div',{
508 | class: {
509 | btn: true
510 | },
511 | style: {
512 | fontSize: '30px'
513 | },
514 | attr: {
515 | id: 'a'
516 | },
517 | event: {
518 | mouseover: () => {
519 | alert('移入我')
520 | }
521 | }
522 | }, '旧'))
523 | setTimeout(() => {
524 | let newVNode = h('div', {
525 | class: {
526 | btn: true,
527 | warning: false,
528 | bg: true
529 | },
530 | style: {
531 | fontWeight: 'bold',
532 | fontStyle: 'italic'
533 | },
534 | event: {
535 | click: () => {
536 | alert('点了我')
537 | }
538 | }
539 | }, '新')
540 | console.log(preVNode, newVNode)
541 | patch(preVNode, newVNode)
542 | }, 10000);
543 | */
544 |
--------------------------------------------------------------------------------
/src/main.js:
--------------------------------------------------------------------------------
1 | import { createApp } from 'vue'
2 | import App from './App.vue'
3 | import { createPinia } from 'pinia'
4 |
5 | const pinia = createPinia()
6 | const app = createApp(App)
7 |
8 | app.use(pinia)
9 | app.mount('#app')
10 |
--------------------------------------------------------------------------------
/src/store.js:
--------------------------------------------------------------------------------
1 | import { defineStore } from 'pinia'
2 |
3 | export const useStore = defineStore('store', {
4 | state: () => {
5 | return {
6 | oldVNode: `[
7 | {
8 | "tag": "div",
9 | "children": "a",
10 | "data": {
11 | "key": 1
12 | }
13 | },
14 | {
15 | "tag": "div",
16 | "children": "b",
17 | "data": {
18 | "key": 2
19 | }
20 | },
21 | {
22 | "tag": "div",
23 | "children": "g",
24 | "data": {
25 | "key": 3
26 | }
27 | },
28 | {
29 | "tag": "div",
30 | "children": "c",
31 | "data": {
32 | "key": 4
33 | }
34 | },
35 | {
36 | "tag": "div",
37 | "children": "d",
38 | "data": {
39 | "key": 5
40 | }
41 | },
42 | {
43 | "tag": "div",
44 | "children": "h",
45 | "data": {
46 | "key": 6
47 | }
48 | },
49 | {
50 | "tag": "div",
51 | "children": "e",
52 | "data": {
53 | "key": 7
54 | }
55 | },
56 | {
57 | "tag": "div",
58 | "children": "f",
59 | "data": {
60 | "key": 8
61 | }
62 | }
63 | ]`,
64 | newVNode: `[
65 | {
66 | "tag": "div",
67 | "children": "b",
68 | "data": {
69 | "key": 2
70 | }
71 | },
72 | {
73 | "tag": "div",
74 | "children": "e",
75 | "data": {
76 | "key": 7
77 | }
78 | },
79 | {
80 | "tag": "div",
81 | "children": "c",
82 | "data": {
83 | "key": 4
84 | }
85 | },
86 | {
87 | "tag": "div",
88 | "children": "d",
89 | "data": {
90 | "key": 5
91 | }
92 | },
93 | {
94 | "tag": "div",
95 | "children": "i",
96 | "data": {
97 | "key": 9
98 | }
99 | },
100 | {
101 | "tag": "div",
102 | "children": "a",
103 | "data": {
104 | "key": 1
105 | }
106 | },
107 | {
108 | "tag": "div",
109 | "children": "f",
110 | "data": {
111 | "key": 8
112 | }
113 | }
114 | ]`
115 | }
116 | }
117 | })
118 |
--------------------------------------------------------------------------------
/vite.config.js:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vite'
2 | import vue from '@vitejs/plugin-vue'
3 |
4 | // https://vitejs.dev/config/
5 | export default defineConfig({
6 | plugins: [vue()]
7 | })
8 |
--------------------------------------------------------------------------------