├── .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 | 12 | 13 | 27 | 34 | -------------------------------------------------------------------------------- /src/assets/箭头_向上.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/箭头_向下.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/Content.vue: -------------------------------------------------------------------------------- 1 | 196 | 197 | 324 | 325 | 340 | 517 | -------------------------------------------------------------------------------- /src/components/Sidebar.vue: -------------------------------------------------------------------------------- 1 | 50 | 51 | 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 | --------------------------------------------------------------------------------