From 7356d18cc73dd4cc1c9955b4c7f1ab3a50966fb4 Mon Sep 17 00:00:00 2001 From: Austin Cavanagh Date: Tue, 2 Jan 2024 13:56:36 -0800 Subject: [PATCH 1/2] combined changes, added vue and svelte example, and refactored extension --- package/examples/example-3/client/.gitignore | 24 + .../example-3/client/.vscode/extensions.json | 3 + package/examples/example-3/client/README.md | 18 + package/examples/example-3/client/index.html | 14 + .../example-3/client/package-lock.json | 1196 +++ .../examples/example-3/client/package.json | 21 + package/examples/example-3/client/src/App.vue | 61 + .../client/src/components/PostsOne.vue | 303 + .../client/src/components/PostsThree.vue | 304 + .../client/src/components/PostsTwo.vue | 304 + .../client/src/functions/formatTimestamp.ts | 11 + .../client/src/link/Subscription.vue | 42 + .../example-3/client/src/link/TimeTravel.vue | 36 + .../example-3/client/src/link/formatData.ts | 39 + .../example-3/client/src/link/index.vue | 47 + .../example-3/client/src/link/types.d.ts | 11 + package/examples/example-3/client/src/main.ts | 22 + .../examples/example-3/client/src/styles.css | 189 + .../examples/example-3/client/src/types.d.ts | 24 + .../example-3/client/src/vite-env.d.ts | 1 + .../example-3/client/src/vue-shims.d.ts | 5 + .../examples/example-3/client/tsconfig.json | 25 + .../example-3/client/tsconfig.node.json | 10 + .../examples/example-3/client/vite.config.ts | 7 + package/examples/example-3/package-lock.json | 1317 ++++ package/examples/example-3/package.json | 17 + package/examples/example-3/server/.gitignore | 1 + .../server/controllers/postsController.ts | 164 + .../server/models/postsOne copy.json | 30 + .../example-3/server/models/postsOne.json | 11 + .../example-3/server/models/postsThree.json | 11 + .../example-3/server/models/postsTwo.json | 11 + .../example-3/server/package-lock.json | 823 +++ .../examples/example-3/server/package.json | 24 + package/examples/example-3/server/routes.ts | 42 + package/examples/example-3/server/server.ts | 21 + .../examples/example-3/server/tsconfig.json | 13 + package/examples/example-4/client/.gitignore | 24 + package/examples/example-4/client/.prettierrc | 5 + .../example-4/client/.vscode/extensions.json | 3 + package/examples/example-4/client/README.md | 47 + package/examples/example-4/client/index.html | 13 + .../example-4/client/package-lock.json | 1804 +++++ .../examples/example-4/client/package.json | 26 + .../examples/example-4/client/public/vite.svg | 1 + .../examples/example-4/client/src/App.svelte | 60 + .../client/src/components/PostsOne.svelte | 324 + .../client/src/components/PostsThree.svelte | 324 + .../client/src/components/PostsTwo.svelte | 324 + .../client/src/functions/formatTimestamp.ts | 13 + .../client/src/link/Subscription.svelte | 32 + .../client/src/link/SvelteQueryRewind.svelte | 38 + .../client/src/link/TimeTravel.svelte | 29 + .../example-4/client/src/link/formatData.ts | 38 + .../example-4/client/src/link/types.d.ts | 11 + package/examples/example-4/client/src/main.ts | 8 + .../examples/example-4/client/src/styles.css | 192 + .../examples/example-4/client/src/types.d.ts | 28 + .../example-4/client/src/vite-env.d.ts | 2 + .../example-4/client/svelte.config.js | 7 + .../examples/example-4/client/tsconfig.json | 20 + .../example-4/client/tsconfig.node.json | 9 + .../examples/example-4/client/vite.config.ts | 7 + package/examples/example-4/package-lock.json | 1317 ++++ package/examples/example-4/package.json | 17 + package/examples/example-4/server/.gitignore | 1 + .../server/controllers/postsController.ts | 164 + .../server/models/postsOne copy.json | 30 + .../example-4/server/models/postsOne.json | 11 + .../example-4/server/models/postsThree.json | 11 + .../example-4/server/models/postsTwo.json | 11 + .../example-4/server/package-lock.json | 823 +++ .../examples/example-4/server/package.json | 24 + package/examples/example-4/server/routes.ts | 42 + package/examples/example-4/server/server.ts | 21 + .../examples/example-4/server/tsconfig.json | 13 + test-extension/.gitignore | 3 + test-extension/README.md | 0 test-extension/background.ts | 100 + test-extension/content_scripts/content.ts | 76 + test-extension/content_scripts/inject.ts | 0 test-extension/devtools/devtools.html | 13 + test-extension/devtools/devtools.ts | 8 + test-extension/images/icon.png | Bin 0 -> 338377 bytes test-extension/manifest.json | 29 + test-extension/package-lock.json | 6576 +++++++++++++++++ test-extension/package.json | 43 + test-extension/public/index.html | 15 + test-extension/src/App.tsx | 84 + .../src/components/ContinuousSlider.tsx | 29 + .../src/components/CustomTabPanel.tsx | 35 + test-extension/src/components/JsonDiff.tsx | 56 + .../src/components/JsonFormatter.tsx | 27 + test-extension/src/components/MultiSelect.tsx | 80 + .../src/components/ProfilingToggle.tsx | 90 + .../src/components/SliderSection.tsx | 138 + test-extension/src/components/Tree.tsx | 114 + test-extension/src/containers/DiffTab.tsx | 57 + test-extension/src/containers/MetricsTab.tsx | 79 + test-extension/src/containers/ParentTab.tsx | 66 + test-extension/src/containers/QueriesTab.tsx | 218 + test-extension/src/containers/StateTab.tsx | 52 + test-extension/src/css/jsonDiff.css | 149 + test-extension/src/css/styles.css | 16 + test-extension/src/functions/a11yProps.ts | 8 + .../src/functions/createDisplayArray.ts | 42 + .../src/functions/saveSelectedQueryKeys.ts | 65 + .../src/functions/treeHelperFuncs.tsx | 106 + test-extension/src/index.tsx | 18 + test-extension/src/theme.ts | 25 + test-extension/src/types.d.ts | 85 + test-extension/tsconfig.json | 21 + test-extension/webpack.config.js | 83 + 113 files changed, 19682 insertions(+) create mode 100644 package/examples/example-3/client/.gitignore create mode 100644 package/examples/example-3/client/.vscode/extensions.json create mode 100644 package/examples/example-3/client/README.md create mode 100644 package/examples/example-3/client/index.html create mode 100644 package/examples/example-3/client/package-lock.json create mode 100644 package/examples/example-3/client/package.json create mode 100644 package/examples/example-3/client/src/App.vue create mode 100644 package/examples/example-3/client/src/components/PostsOne.vue create mode 100644 package/examples/example-3/client/src/components/PostsThree.vue create mode 100644 package/examples/example-3/client/src/components/PostsTwo.vue create mode 100644 package/examples/example-3/client/src/functions/formatTimestamp.ts create mode 100644 package/examples/example-3/client/src/link/Subscription.vue create mode 100644 package/examples/example-3/client/src/link/TimeTravel.vue create mode 100644 package/examples/example-3/client/src/link/formatData.ts create mode 100644 package/examples/example-3/client/src/link/index.vue create mode 100644 package/examples/example-3/client/src/link/types.d.ts create mode 100644 package/examples/example-3/client/src/main.ts create mode 100644 package/examples/example-3/client/src/styles.css create mode 100644 package/examples/example-3/client/src/types.d.ts create mode 100644 package/examples/example-3/client/src/vite-env.d.ts create mode 100644 package/examples/example-3/client/src/vue-shims.d.ts create mode 100644 package/examples/example-3/client/tsconfig.json create mode 100644 package/examples/example-3/client/tsconfig.node.json create mode 100644 package/examples/example-3/client/vite.config.ts create mode 100644 package/examples/example-3/package-lock.json create mode 100644 package/examples/example-3/package.json create mode 100644 package/examples/example-3/server/.gitignore create mode 100644 package/examples/example-3/server/controllers/postsController.ts create mode 100644 package/examples/example-3/server/models/postsOne copy.json create mode 100644 package/examples/example-3/server/models/postsOne.json create mode 100644 package/examples/example-3/server/models/postsThree.json create mode 100644 package/examples/example-3/server/models/postsTwo.json create mode 100644 package/examples/example-3/server/package-lock.json create mode 100644 package/examples/example-3/server/package.json create mode 100644 package/examples/example-3/server/routes.ts create mode 100644 package/examples/example-3/server/server.ts create mode 100644 package/examples/example-3/server/tsconfig.json create mode 100644 package/examples/example-4/client/.gitignore create mode 100644 package/examples/example-4/client/.prettierrc create mode 100644 package/examples/example-4/client/.vscode/extensions.json create mode 100644 package/examples/example-4/client/README.md create mode 100644 package/examples/example-4/client/index.html create mode 100644 package/examples/example-4/client/package-lock.json create mode 100644 package/examples/example-4/client/package.json create mode 100644 package/examples/example-4/client/public/vite.svg create mode 100644 package/examples/example-4/client/src/App.svelte create mode 100644 package/examples/example-4/client/src/components/PostsOne.svelte create mode 100644 package/examples/example-4/client/src/components/PostsThree.svelte create mode 100644 package/examples/example-4/client/src/components/PostsTwo.svelte create mode 100644 package/examples/example-4/client/src/functions/formatTimestamp.ts create mode 100644 package/examples/example-4/client/src/link/Subscription.svelte create mode 100644 package/examples/example-4/client/src/link/SvelteQueryRewind.svelte create mode 100644 package/examples/example-4/client/src/link/TimeTravel.svelte create mode 100644 package/examples/example-4/client/src/link/formatData.ts create mode 100644 package/examples/example-4/client/src/link/types.d.ts create mode 100644 package/examples/example-4/client/src/main.ts create mode 100644 package/examples/example-4/client/src/styles.css create mode 100644 package/examples/example-4/client/src/types.d.ts create mode 100644 package/examples/example-4/client/src/vite-env.d.ts create mode 100644 package/examples/example-4/client/svelte.config.js create mode 100644 package/examples/example-4/client/tsconfig.json create mode 100644 package/examples/example-4/client/tsconfig.node.json create mode 100644 package/examples/example-4/client/vite.config.ts create mode 100644 package/examples/example-4/package-lock.json create mode 100644 package/examples/example-4/package.json create mode 100644 package/examples/example-4/server/.gitignore create mode 100644 package/examples/example-4/server/controllers/postsController.ts create mode 100644 package/examples/example-4/server/models/postsOne copy.json create mode 100644 package/examples/example-4/server/models/postsOne.json create mode 100644 package/examples/example-4/server/models/postsThree.json create mode 100644 package/examples/example-4/server/models/postsTwo.json create mode 100644 package/examples/example-4/server/package-lock.json create mode 100644 package/examples/example-4/server/package.json create mode 100644 package/examples/example-4/server/routes.ts create mode 100644 package/examples/example-4/server/server.ts create mode 100644 package/examples/example-4/server/tsconfig.json create mode 100644 test-extension/.gitignore create mode 100644 test-extension/README.md create mode 100644 test-extension/background.ts create mode 100644 test-extension/content_scripts/content.ts create mode 100644 test-extension/content_scripts/inject.ts create mode 100644 test-extension/devtools/devtools.html create mode 100644 test-extension/devtools/devtools.ts create mode 100644 test-extension/images/icon.png create mode 100644 test-extension/manifest.json create mode 100644 test-extension/package-lock.json create mode 100644 test-extension/package.json create mode 100644 test-extension/public/index.html create mode 100644 test-extension/src/App.tsx create mode 100644 test-extension/src/components/ContinuousSlider.tsx create mode 100644 test-extension/src/components/CustomTabPanel.tsx create mode 100644 test-extension/src/components/JsonDiff.tsx create mode 100644 test-extension/src/components/JsonFormatter.tsx create mode 100644 test-extension/src/components/MultiSelect.tsx create mode 100644 test-extension/src/components/ProfilingToggle.tsx create mode 100644 test-extension/src/components/SliderSection.tsx create mode 100644 test-extension/src/components/Tree.tsx create mode 100644 test-extension/src/containers/DiffTab.tsx create mode 100644 test-extension/src/containers/MetricsTab.tsx create mode 100644 test-extension/src/containers/ParentTab.tsx create mode 100644 test-extension/src/containers/QueriesTab.tsx create mode 100644 test-extension/src/containers/StateTab.tsx create mode 100644 test-extension/src/css/jsonDiff.css create mode 100644 test-extension/src/css/styles.css create mode 100644 test-extension/src/functions/a11yProps.ts create mode 100644 test-extension/src/functions/createDisplayArray.ts create mode 100644 test-extension/src/functions/saveSelectedQueryKeys.ts create mode 100644 test-extension/src/functions/treeHelperFuncs.tsx create mode 100644 test-extension/src/index.tsx create mode 100644 test-extension/src/theme.ts create mode 100644 test-extension/src/types.d.ts create mode 100644 test-extension/tsconfig.json create mode 100644 test-extension/webpack.config.js diff --git a/package/examples/example-3/client/.gitignore b/package/examples/example-3/client/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/package/examples/example-3/client/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/package/examples/example-3/client/.vscode/extensions.json b/package/examples/example-3/client/.vscode/extensions.json new file mode 100644 index 0000000..c0a6e5a --- /dev/null +++ b/package/examples/example-3/client/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"] +} diff --git a/package/examples/example-3/client/README.md b/package/examples/example-3/client/README.md new file mode 100644 index 0000000..ef72fd5 --- /dev/null +++ b/package/examples/example-3/client/README.md @@ -0,0 +1,18 @@ +# Vue 3 + TypeScript + Vite + +This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 ` + + diff --git a/package/examples/example-3/client/package-lock.json b/package/examples/example-3/client/package-lock.json new file mode 100644 index 0000000..dad010d --- /dev/null +++ b/package/examples/example-3/client/package-lock.json @@ -0,0 +1,1196 @@ +{ + "name": "client", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "client", + "version": "0.0.0", + "dependencies": { + "@tanstack/vue-query": "^5.15.0", + "vue": "^3.3.11" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^4.5.2", + "typescript": "^5.2.2", + "vite": "^5.0.8", + "vue-tsc": "^1.8.25" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", + "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.10.tgz", + "integrity": "sha512-Q+mk96KJ+FZ30h9fsJl+67IjNJm3x2eX+GBWGmocAKgzp27cowCOOqSdscX80s0SpdFXZnIv/+1xD1EctFx96Q==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.10.tgz", + "integrity": "sha512-7W0bK7qfkw1fc2viBfrtAEkDKHatYfHzr/jKAHNr9BvkYDXPcC6bodtm8AyLJNNuqClLNaeTLuwURt4PRT9d7w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.10.tgz", + "integrity": "sha512-1X4CClKhDgC3by7k8aOWZeBXQX8dHT5QAMCAQDArCLaYfkppoARvh0fit3X2Qs+MXDngKcHv6XXyQCpY0hkK1Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.10.tgz", + "integrity": "sha512-O/nO/g+/7NlitUxETkUv/IvADKuZXyH4BHf/g/7laqKC4i/7whLpB0gvpPc2zpF0q9Q6FXS3TS75QHac9MvVWw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.10.tgz", + "integrity": "sha512-YSRRs2zOpwypck+6GL3wGXx2gNP7DXzetmo5pHXLrY/VIMsS59yKfjPizQ4lLt5vEI80M41gjm2BxrGZ5U+VMA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.10.tgz", + "integrity": "sha512-alfGtT+IEICKtNE54hbvPg13xGBe4GkVxyGWtzr+yHO7HIiRJppPDhOKq3zstTcVf8msXb/t4eavW3jCDpMSmA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.10.tgz", + "integrity": "sha512-dMtk1wc7FSH8CCkE854GyGuNKCewlh+7heYP/sclpOG6Cectzk14qdUIY5CrKDbkA/OczXq9WesqnPl09mj5dg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.10.tgz", + "integrity": "sha512-G5UPPspryHu1T3uX8WiOEUa6q6OlQh6gNl4CO4Iw5PS+Kg5bVggVFehzXBJY6X6RSOMS8iXDv2330VzaObm4Ag==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.10.tgz", + "integrity": "sha512-j6gUW5aAaPgD416Hk9FHxn27On28H4eVI9rJ4az7oCGTFW48+LcgNDBN+9f8rKZz7EEowo889CPKyeaD0iw9Kg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.10.tgz", + "integrity": "sha512-QxaouHWZ+2KWEj7cGJmvTIHVALfhpGxo3WLmlYfJ+dA5fJB6lDEIg+oe/0//FuyVHuS3l79/wyBxbHr0NgtxJQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.10.tgz", + "integrity": "sha512-4ub1YwXxYjj9h1UIZs2hYbnTZBtenPw5NfXCRgEkGb0b6OJ2gpkMvDqRDYIDRjRdWSe/TBiZltm3Y3Q8SN1xNg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.10.tgz", + "integrity": "sha512-lo3I9k+mbEKoxtoIbM0yC/MZ1i2wM0cIeOejlVdZ3D86LAcFXFRdeuZmh91QJvUTW51bOK5W2BznGNIl4+mDaA==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.10.tgz", + "integrity": "sha512-J4gH3zhHNbdZN0Bcr1QUGVNkHTdpijgx5VMxeetSk6ntdt+vR1DqGmHxQYHRmNb77tP6GVvD+K0NyO4xjd7y4A==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.10.tgz", + "integrity": "sha512-tgT/7u+QhV6ge8wFMzaklOY7KqiyitgT1AUHMApau32ZlvTB/+efeCtMk4eXS+uEymYK249JsoiklZN64xt6oQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.10.tgz", + "integrity": "sha512-0f/spw0PfBMZBNqtKe5FLzBDGo0SKZKvMl5PHYQr3+eiSscfJ96XEknCe+JoOayybWUFQbcJTrk946i3j9uYZA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.10.tgz", + "integrity": "sha512-pZFe0OeskMHzHa9U38g+z8Yx5FNCLFtUnJtQMpwhS+r4S566aK2ci3t4NCP4tjt6d5j5uo4h7tExZMjeKoehAA==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.10.tgz", + "integrity": "sha512-SpYNEqg/6pZYoc+1zLCjVOYvxfZVZj6w0KROZ3Fje/QrM3nfvT2llI+wmKSrWuX6wmZeTapbarvuNNK/qepSgA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.10.tgz", + "integrity": "sha512-ACbZ0vXy9zksNArWlk2c38NdKg25+L9pr/mVaj9SUq6lHZu/35nx2xnQVRGLrC1KKQqJKRIB0q8GspiHI3J80Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.10.tgz", + "integrity": "sha512-PxcgvjdSjtgPMiPQrM3pwSaG4kGphP+bLSb+cihuP0LYdZv1epbAIecHVl5sD3npkfYBZ0ZnOjR878I7MdJDFg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.10.tgz", + "integrity": "sha512-ZkIOtrRL8SEJjr+VHjmW0znkPs+oJXhlJbNwfI37rvgeMtk3sxOQevXPXjmAPZPigVTncvFqLMd+uV0IBSEzqA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.10.tgz", + "integrity": "sha512-+Sa4oTDbpBfGpl3Hn3XiUe4f8TU2JF7aX8cOfqFYMMjXp6ma6NJDztl5FDG8Ezx0OjwGikIHw+iA54YLDNNVfw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.10.tgz", + "integrity": "sha512-EOGVLK1oWMBXgfttJdPHDTiivYSjX6jDNaATeNOaCOFEVcfMjtbx7WVQwPSE1eIfCp/CaSF2nSrDtzc4I9f8TQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.10.tgz", + "integrity": "sha512-whqLG6Sc70AbU73fFYvuYzaE4MNMBIlR1Y/IrUeOXFrWHxBEjjbZaQ3IXIQS8wJdAzue2GwYZCjOrgrU1oUHoA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.1.tgz", + "integrity": "sha512-6vMdBZqtq1dVQ4CWdhFwhKZL6E4L1dV6jUjuBvsavvNJSppzi6dLBbuV+3+IyUREaj9ZFvQefnQm28v4OCXlig==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.1.tgz", + "integrity": "sha512-Jto9Fl3YQ9OLsTDWtLFPtaIMSL2kwGyGoVCmPC8Gxvym9TCZm4Sie+cVeblPO66YZsYH8MhBKDMGZ2NDxuk/XQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.1.tgz", + "integrity": "sha512-LtYcLNM+bhsaKAIGwVkh5IOWhaZhjTfNOkGzGqdHvhiCUVuJDalvDxEdSnhFzAn+g23wgsycmZk1vbnaibZwwA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.1.tgz", + "integrity": "sha512-KyP/byeXu9V+etKO6Lw3E4tW4QdcnzDG/ake031mg42lob5tN+5qfr+lkcT/SGZaH2PdW4Z1NX9GHEkZ8xV7og==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.1.tgz", + "integrity": "sha512-Yqz/Doumf3QTKplwGNrCHe/B2p9xqDghBZSlAY0/hU6ikuDVQuOUIpDP/YcmoT+447tsZTmirmjgG3znvSCR0Q==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.1.tgz", + "integrity": "sha512-u3XkZVvxcvlAOlQJ3UsD1rFvLWqu4Ef/Ggl40WAVCuogf4S1nJPHh5RTgqYFpCOvuGJ7H5yGHabjFKEZGExk5Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.1.tgz", + "integrity": "sha512-0XSYN/rfWShW+i+qjZ0phc6vZ7UWI8XWNz4E/l+6edFt+FxoEghrJHjX1EY/kcUGCnZzYYRCl31SNdfOi450Aw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.1.tgz", + "integrity": "sha512-LmYIO65oZVfFt9t6cpYkbC4d5lKHLYv5B4CSHRpnANq0VZUQXGcCPXHzbCXCz4RQnx7jvlYB1ISVNCE/omz5cw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.1.tgz", + "integrity": "sha512-kr8rEPQ6ns/Lmr/hiw8sEVj9aa07gh1/tQF2Y5HrNCCEPiCBGnBUt9tVusrcBBiJfIt1yNaXN6r1CCmpbFEDpg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.1.tgz", + "integrity": "sha512-t4QSR7gN+OEZLG0MiCgPqMWZGwmeHhsM4AkegJ0Kiy6TnJ9vZ8dEIwHw1LcZKhbHxTY32hp9eVCMdR3/I8MGRw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.1.tgz", + "integrity": "sha512-7XI4ZCBN34cb+BH557FJPmh0kmNz2c25SCQeT9OiFWEgf8+dL6ZwJ8f9RnUIit+j01u07Yvrsuu1rZGxJCc51g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.1.tgz", + "integrity": "sha512-yE5c2j1lSWOH5jp+Q0qNL3Mdhr8WuqCNVjc6BxbVfS5cAS6zRmdiw7ktb8GNpDCEUJphILY6KACoFoRtKoqNQg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.1.tgz", + "integrity": "sha512-PyJsSsafjmIhVgaI1Zdj7m8BB8mMckFah/xbpplObyHfiXzKcI5UOUXRyOdHW7nz4DpMCuzLnF7v5IWHenCwYA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@tanstack/match-sorter-utils": { + "version": "8.8.4", + "resolved": "https://registry.npmjs.org/@tanstack/match-sorter-utils/-/match-sorter-utils-8.8.4.tgz", + "integrity": "sha512-rKH8LjZiszWEvmi01NR72QWZ8m4xmXre0OOwlRGnjU01Eqz/QnN+cqpty2PJ0efHblq09+KilvyR7lsbzmXVEw==", + "dependencies": { + "remove-accents": "0.4.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kentcdodds" + } + }, + "node_modules/@tanstack/query-core": { + "version": "5.14.2", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.14.2.tgz", + "integrity": "sha512-QmoJvC72sSWs3hgGis8JdmlDvqLfYGWUK4UG6OR9Q6t28JMN9m2FDwKPqoSJ9YVocELCSjMt/FGjEiLfk8000Q==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/vue-query": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@tanstack/vue-query/-/vue-query-5.15.0.tgz", + "integrity": "sha512-gcsWmuY9Ogqk+8EzM+ktQgcb7aYDWbBF2Da01yteGUQ5yUYmuNuHfe/hzfdtgLb2RDzyL4tZBFOPNuWnqT2Wqg==", + "dependencies": { + "@tanstack/match-sorter-utils": "^8.8.4", + "@tanstack/query-core": "5.14.2", + "@vue/devtools-api": "^6.5.1", + "vue-demi": "^0.14.6" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "@vue/composition-api": "^1.1.2", + "vue": "^2.6.0 || ^3.3.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/@tanstack/vue-query/node_modules/vue-demi": { + "version": "0.14.6", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", + "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/@vitejs/plugin-vue": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.6.0.tgz", + "integrity": "sha512-XHuyFdAikWRmHuAd89FOyUGIjrBU5KlxJtyi2hVeR9ySGFxQwE0bl5xAQju/ArMq5azdBivY4d+D2yPKwoYWUg==", + "dev": true, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.0.0 || ^5.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@volar/language-core": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-1.11.1.tgz", + "integrity": "sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==", + "dev": true, + "dependencies": { + "@volar/source-map": "1.11.1" + } + }, + "node_modules/@volar/source-map": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-1.11.1.tgz", + "integrity": "sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==", + "dev": true, + "dependencies": { + "muggle-string": "^0.3.1" + } + }, + "node_modules/@volar/typescript": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-1.11.1.tgz", + "integrity": "sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==", + "dev": true, + "dependencies": { + "@volar/language-core": "1.11.1", + "path-browserify": "^1.0.1" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.3.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.13.tgz", + "integrity": "sha512-bwi9HShGu7uaZLOErZgsH2+ojsEdsjerbf2cMXPwmvcgZfVPZ2BVZzCVnwZBxTAYd6Mzbmf6izcUNDkWnBBQ6A==", + "dependencies": { + "@babel/parser": "^7.23.5", + "@vue/shared": "3.3.13", + "estree-walker": "^2.0.2", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.3.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.13.tgz", + "integrity": "sha512-EYRDpbLadGtNL0Gph+HoKiYqXLqZ0xSSpR5Dvnu/Ep7ggaCbjRDIus1MMxTS2Qm0koXED4xSlvTZaTnI8cYAsw==", + "dependencies": { + "@vue/compiler-core": "3.3.13", + "@vue/shared": "3.3.13" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.3.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.13.tgz", + "integrity": "sha512-DQVmHEy/EKIgggvnGRLx21hSqnr1smUS9Aq8tfxiiot8UR0/pXKHN9k78/qQ7etyQTFj5em5nruODON7dBeumw==", + "dependencies": { + "@babel/parser": "^7.23.5", + "@vue/compiler-core": "3.3.13", + "@vue/compiler-dom": "3.3.13", + "@vue/compiler-ssr": "3.3.13", + "@vue/reactivity-transform": "3.3.13", + "@vue/shared": "3.3.13", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.5", + "postcss": "^8.4.32", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.3.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.13.tgz", + "integrity": "sha512-d/P3bCeUGmkJNS1QUZSAvoCIW4fkOKK3l2deE7zrp0ypJEy+En2AcypIkqvcFQOcw3F0zt2VfMvNsA9JmExTaw==", + "dependencies": { + "@vue/compiler-dom": "3.3.13", + "@vue/shared": "3.3.13" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.1.tgz", + "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==" + }, + "node_modules/@vue/language-core": { + "version": "1.8.27", + "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-1.8.27.tgz", + "integrity": "sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==", + "dev": true, + "dependencies": { + "@volar/language-core": "~1.11.1", + "@volar/source-map": "~1.11.1", + "@vue/compiler-dom": "^3.3.0", + "@vue/shared": "^3.3.0", + "computeds": "^0.0.1", + "minimatch": "^9.0.3", + "muggle-string": "^0.3.1", + "path-browserify": "^1.0.1", + "vue-template-compiler": "^2.7.14" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/reactivity": { + "version": "3.3.13", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.13.tgz", + "integrity": "sha512-fjzCxceMahHhi4AxUBzQqqVhuA21RJ0COaWTbIBl1PruGW1CeY97louZzLi4smpYx+CHfFPPU/CS8NybbGvPKQ==", + "dependencies": { + "@vue/shared": "3.3.13" + } + }, + "node_modules/@vue/reactivity-transform": { + "version": "3.3.13", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.13.tgz", + "integrity": "sha512-oWnydGH0bBauhXvh5KXUy61xr9gKaMbtsMHk40IK9M4gMuKPJ342tKFarY0eQ6jef8906m35q37wwA8DMZOm5Q==", + "dependencies": { + "@babel/parser": "^7.23.5", + "@vue/compiler-core": "3.3.13", + "@vue/shared": "3.3.13", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.5" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.3.13", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.13.tgz", + "integrity": "sha512-1TzA5TvGuh2zUwMJgdfvrBABWZ7y8kBwBhm7BXk8rvdx2SsgcGfz2ruv2GzuGZNvL1aKnK8CQMV/jFOrxNQUMA==", + "dependencies": { + "@vue/reactivity": "3.3.13", + "@vue/shared": "3.3.13" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.3.13", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.13.tgz", + "integrity": "sha512-JJkpE8R/hJKXqVTgUoODwS5wqKtOsmJPEqmp90PDVGygtJ4C0PtOkcEYXwhiVEmef6xeXcIlrT3Yo5aQ4qkHhQ==", + "dependencies": { + "@vue/runtime-core": "3.3.13", + "@vue/shared": "3.3.13", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.3.13", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.13.tgz", + "integrity": "sha512-vSnN+nuf6iSqTL3Qgx/9A+BT+0Zf/VJOgF5uMZrKjYPs38GMYyAU1coDyBNHauehXDaP+zl73VhwWv0vBRBHcg==", + "dependencies": { + "@vue/compiler-ssr": "3.3.13", + "@vue/shared": "3.3.13" + }, + "peerDependencies": { + "vue": "3.3.13" + } + }, + "node_modules/@vue/shared": { + "version": "3.3.13", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.13.tgz", + "integrity": "sha512-/zYUwiHD8j7gKx2argXEMCUXVST6q/21DFU0sTfNX0URJroCe3b1UF6vLJ3lQDfLNIiiRl2ONp7Nh5UVWS6QnA==" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/computeds": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz", + "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==", + "dev": true + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.10.tgz", + "integrity": "sha512-S1Y27QGt/snkNYrRcswgRFqZjaTG5a5xM3EQo97uNBnH505pdzSNe/HLBq1v0RO7iK/ngdbhJB6mDAp0OK+iUA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.10", + "@esbuild/android-arm": "0.19.10", + "@esbuild/android-arm64": "0.19.10", + "@esbuild/android-x64": "0.19.10", + "@esbuild/darwin-arm64": "0.19.10", + "@esbuild/darwin-x64": "0.19.10", + "@esbuild/freebsd-arm64": "0.19.10", + "@esbuild/freebsd-x64": "0.19.10", + "@esbuild/linux-arm": "0.19.10", + "@esbuild/linux-arm64": "0.19.10", + "@esbuild/linux-ia32": "0.19.10", + "@esbuild/linux-loong64": "0.19.10", + "@esbuild/linux-mips64el": "0.19.10", + "@esbuild/linux-ppc64": "0.19.10", + "@esbuild/linux-riscv64": "0.19.10", + "@esbuild/linux-s390x": "0.19.10", + "@esbuild/linux-x64": "0.19.10", + "@esbuild/netbsd-x64": "0.19.10", + "@esbuild/openbsd-x64": "0.19.10", + "@esbuild/sunos-x64": "0.19.10", + "@esbuild/win32-arm64": "0.19.10", + "@esbuild/win32-ia32": "0.19.10", + "@esbuild/win32-x64": "0.19.10" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/magic-string": { + "version": "0.30.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", + "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/muggle-string": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.3.1.tgz", + "integrity": "sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/postcss": { + "version": "8.4.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", + "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/remove-accents": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.4.2.tgz", + "integrity": "sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA==" + }, + "node_modules/rollup": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.1.tgz", + "integrity": "sha512-pgPO9DWzLoW/vIhlSoDByCzcpX92bKEorbgXuZrqxByte3JFk2xSW2JEeAcyLc9Ru9pqcNNW+Ob7ntsk2oT/Xw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.9.1", + "@rollup/rollup-android-arm64": "4.9.1", + "@rollup/rollup-darwin-arm64": "4.9.1", + "@rollup/rollup-darwin-x64": "4.9.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.9.1", + "@rollup/rollup-linux-arm64-gnu": "4.9.1", + "@rollup/rollup-linux-arm64-musl": "4.9.1", + "@rollup/rollup-linux-riscv64-gnu": "4.9.1", + "@rollup/rollup-linux-x64-gnu": "4.9.1", + "@rollup/rollup-linux-x64-musl": "4.9.1", + "@rollup/rollup-win32-arm64-msvc": "4.9.1", + "@rollup/rollup-win32-ia32-msvc": "4.9.1", + "@rollup/rollup-win32-x64-msvc": "4.9.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/typescript": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "devOptional": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/vite": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.10.tgz", + "integrity": "sha512-2P8J7WWgmc355HUMlFrwofacvr98DAjoE52BfdbwQtyLH06XKwaL/FMnmKM2crF0iX4MpmMKoDlNCB1ok7zHCw==", + "dev": true, + "dependencies": { + "esbuild": "^0.19.3", + "postcss": "^8.4.32", + "rollup": "^4.2.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vue": { + "version": "3.3.13", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.13.tgz", + "integrity": "sha512-LDnUpQvDgsfc0u/YgtAgTMXJlJQqjkxW1PVcOnJA5cshPleULDjHi7U45pl2VJYazSSvLH8UKcid/kzH8I0a0Q==", + "dependencies": { + "@vue/compiler-dom": "3.3.13", + "@vue/compiler-sfc": "3.3.13", + "@vue/runtime-dom": "3.3.13", + "@vue/server-renderer": "3.3.13", + "@vue/shared": "3.3.13" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-template-compiler": { + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz", + "integrity": "sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==", + "dev": true, + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, + "node_modules/vue-tsc": { + "version": "1.8.27", + "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.8.27.tgz", + "integrity": "sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==", + "dev": true, + "dependencies": { + "@volar/typescript": "~1.11.1", + "@vue/language-core": "1.8.27", + "semver": "^7.5.4" + }, + "bin": { + "vue-tsc": "bin/vue-tsc.js" + }, + "peerDependencies": { + "typescript": "*" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } +} diff --git a/package/examples/example-3/client/package.json b/package/examples/example-3/client/package.json new file mode 100644 index 0000000..9074296 --- /dev/null +++ b/package/examples/example-3/client/package.json @@ -0,0 +1,21 @@ +{ + "name": "client", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vue-tsc && vite build", + "preview": "vite preview" + }, + "dependencies": { + "@tanstack/vue-query": "^5.15.0", + "vue": "^3.3.11" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^4.5.2", + "typescript": "^5.2.2", + "vite": "^5.0.8", + "vue-tsc": "^1.8.25" + } +} diff --git a/package/examples/example-3/client/src/App.vue b/package/examples/example-3/client/src/App.vue new file mode 100644 index 0000000..e123553 --- /dev/null +++ b/package/examples/example-3/client/src/App.vue @@ -0,0 +1,61 @@ + + + + + diff --git a/package/examples/example-3/client/src/components/PostsOne.vue b/package/examples/example-3/client/src/components/PostsOne.vue new file mode 100644 index 0000000..12955d1 --- /dev/null +++ b/package/examples/example-3/client/src/components/PostsOne.vue @@ -0,0 +1,303 @@ + + + + + diff --git a/package/examples/example-3/client/src/components/PostsThree.vue b/package/examples/example-3/client/src/components/PostsThree.vue new file mode 100644 index 0000000..7f997bc --- /dev/null +++ b/package/examples/example-3/client/src/components/PostsThree.vue @@ -0,0 +1,304 @@ + + + + + diff --git a/package/examples/example-3/client/src/components/PostsTwo.vue b/package/examples/example-3/client/src/components/PostsTwo.vue new file mode 100644 index 0000000..c16f556 --- /dev/null +++ b/package/examples/example-3/client/src/components/PostsTwo.vue @@ -0,0 +1,304 @@ + + + + + diff --git a/package/examples/example-3/client/src/functions/formatTimestamp.ts b/package/examples/example-3/client/src/functions/formatTimestamp.ts new file mode 100644 index 0000000..d30db71 --- /dev/null +++ b/package/examples/example-3/client/src/functions/formatTimestamp.ts @@ -0,0 +1,11 @@ +export const formatTimestamp = () => { + const now = new Date(); + let hours = now.getHours(); + const minutes = now.getMinutes(); + const ampm = hours >= 12 ? 'PM' : 'AM'; + hours = hours % 12; + hours = hours || 12; // the hour '0' should be '12' + const minutesStr = minutes < 10 ? '0' + minutes : minutes; + + return `${hours}:${minutesStr} ${ampm}`; +}; diff --git a/package/examples/example-3/client/src/link/Subscription.vue b/package/examples/example-3/client/src/link/Subscription.vue new file mode 100644 index 0000000..fc751f5 --- /dev/null +++ b/package/examples/example-3/client/src/link/Subscription.vue @@ -0,0 +1,42 @@ + + + + + diff --git a/package/examples/example-3/client/src/link/TimeTravel.vue b/package/examples/example-3/client/src/link/TimeTravel.vue new file mode 100644 index 0000000..0e2a857 --- /dev/null +++ b/package/examples/example-3/client/src/link/TimeTravel.vue @@ -0,0 +1,36 @@ + + + + + diff --git a/package/examples/example-3/client/src/link/formatData.ts b/package/examples/example-3/client/src/link/formatData.ts new file mode 100644 index 0000000..d97a1c3 --- /dev/null +++ b/package/examples/example-3/client/src/link/formatData.ts @@ -0,0 +1,39 @@ +import { + QueryCacheNotifyEvent, + QueryClient, + QueryKey, +} from '@tanstack/vue-query'; + +export function formatData( + event: QueryCacheNotifyEvent, + queryClient: QueryClient +) { + const eventType = event.type; + const queryKey: QueryKey = event.query.queryKey; + const queryHash = event.query.queryHash; + const timestamp = new Date(event.query.state.dataUpdatedAt); + + if (queryHash === '["test-data"]') return; + + if (eventType === 'updated' && event.action?.type === 'success') { + const queryData = queryClient.getQueryData(queryKey); + return { + eventType, + queryKey, + queryHash, + timestamp, + queryData, + }; + } + + if (eventType === 'removed') { + return { + eventType, + queryKey, + queryHash, + timestamp, + }; + } + + return null; +} diff --git a/package/examples/example-3/client/src/link/index.vue b/package/examples/example-3/client/src/link/index.vue new file mode 100644 index 0000000..86aed3c --- /dev/null +++ b/package/examples/example-3/client/src/link/index.vue @@ -0,0 +1,47 @@ + + + + + + + diff --git a/package/examples/example-3/client/src/link/types.d.ts b/package/examples/example-3/client/src/link/types.d.ts new file mode 100644 index 0000000..f3c8343 --- /dev/null +++ b/package/examples/example-3/client/src/link/types.d.ts @@ -0,0 +1,11 @@ +declare global { + interface WindowEventMap { + UpdateUI: CustomEvent; + TimeTravel: CustomEvent; + } +} + +export type QueryDisplay = { + queryKey: string; + queryData: any; +}; diff --git a/package/examples/example-3/client/src/main.ts b/package/examples/example-3/client/src/main.ts new file mode 100644 index 0000000..c443a5b --- /dev/null +++ b/package/examples/example-3/client/src/main.ts @@ -0,0 +1,22 @@ +import { createApp } from 'vue'; +import { VueQueryPlugin, QueryClient } from '@tanstack/vue-query'; +import App from './App.vue'; +import './styles.css'; + +const queryClient = new QueryClient({ + defaultOptions: { + queries: { + staleTime: 5 * 60 * 1000, // 5 mins + gcTime: 10 * 60 * 1000, // 10 mins + }, + }, +}); + +// creating a new Vue app instance with app as the root component +const app = createApp(App); + +// installing the vue query plugin into the app +app.use(VueQueryPlugin, { queryClient }); + +// mounts vue app to DOM with id app +app.mount('#app'); diff --git a/package/examples/example-3/client/src/styles.css b/package/examples/example-3/client/src/styles.css new file mode 100644 index 0000000..27dafe1 --- /dev/null +++ b/package/examples/example-3/client/src/styles.css @@ -0,0 +1,189 @@ +* { + box-sizing: border-box; + margin: 0; + padding: 0; + border: none; + font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-size: 1.1rem; +} + +html { + overflow: hidden; + font-family: Arial, sans-serif; +} + +.window { + height: 100vh; + width: 100%; + display: flex; + flex-direction: column; + justify-content: top; + align-items: center; + background-color: #f0f0f0; + overflow-y: auto; +} + +.nav-bar { + height: 6rem; + width: 100%; + background-color: #007bff; + display: flex; + justify-content: space-between; + align-items: center; + position: fixed; + box-shadow: 0 6px 8px 0 rgba(0, 0, 0, 0.2); +} + +.title { + font-weight: bold; + font-size: 2rem; + color: white; + margin-left: 2rem; +} + +.nav-options { + display: flex; +} + +.nav-option { + font-weight: bold; + font-size: 1.5rem; + color: white; + margin-right: 2rem; + cursor: pointer; +} + +.nav-option:hover { + text-decoration: underline; + text-decoration-thickness: 0.22rem; + text-underline-offset: 0.3rem; +} + +.nav-option.active { + text-decoration: underline; + text-decoration-thickness: 0.22rem; + text-underline-offset: 0.3rem; +} + +.posts-container { + height: auto; + width: auto; + margin-top: 6rem; +} + +.create-post-container { + background-color: #e2e6ea; + display: flex; + align-items: center; + padding: 1rem; + margin-top: 1rem; + border-radius: 1rem; + box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2); +} + +.create-post-container-2 { + display: flex; + align-items: center; + padding: 1rem; +} + +.input { + height: 2rem; + width: 20rem; + padding: 0.25rem 0.5rem; + border: 1px solid #ccc; + border-radius: 4px; + outline: none; /* Removes the default focus outline */ + margin-right: 0.8rem; +} + +.input:focus { + border-color: #007bff; /* Blue border on focus */ + box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.25); /* Soft blue glow */ +} + +.input-2 { + height: 2rem; + width: 20rem; + padding: 0.25rem 0.5rem; + border: 1px solid #ccc; + border-radius: 4px; + outline: none; /* Removes the default focus outline */ + margin-right: 0.8rem; +} + +.input-2:focus { + border-color: #007bff; /* Blue border on focus */ + box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.25); /* Soft blue glow */ +} + +.button { + height: 2rem; + padding: 0 0.8rem; + background-color: #007bff; /* Blue background */ + border: 1px solid #007bff; + border-radius: 4px; + color: white; + cursor: pointer; + transition: background-color 0.3s, border-color 0.3s; +} + +.button:hover { + background-color: #0056b3; /* Slightly darker blue on hover */ + border-color: #0056b3; +} + +.post-container { + height: auto; + width: 100%; + background-color: blue; + display: flex; + flex-direction: column; + justify-content: center; + align-items: left; + margin-top: 1rem; + border-radius: 1rem; + box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.2); +} + +.post-text { + color: black; + padding: 1rem; +} + +.like-comment-container { + padding: 1rem; +} + +.left-margin { + margin-left: 1rem; +} + +.red { + background-color: lightcoral; + border: 1px solid lightcoral; +} + +.button.red:hover { + background-color: red; /* Color when hovered */ + border-color: red; +} + +.green { + background-color: #b0c4de; +} + +.blue { + background-color: #e2e6ea; +} + +.post-content { + display: flex; + justify-content: space-between; + align-items: center; +} + +.post-timestamp { + opacity: 0.7; + padding: 1rem; +} diff --git a/package/examples/example-3/client/src/types.d.ts b/package/examples/example-3/client/src/types.d.ts new file mode 100644 index 0000000..bc8733f --- /dev/null +++ b/package/examples/example-3/client/src/types.d.ts @@ -0,0 +1,24 @@ +export type Post = { + text: string; + liked: boolean; + comments: string[]; + createComment: boolean; + timestamp: string; +}; + +export type CreateCommentParams = { + index: number; + comment: string; +}; + +declare global { + interface WindowEventMap { + UpdateUI: CustomEvent; + TimeTravel: CustomEvent; + } +} + +export type QueryDisplay = { + queryKey: string; + queryData: any; +}; diff --git a/package/examples/example-3/client/src/vite-env.d.ts b/package/examples/example-3/client/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/package/examples/example-3/client/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/package/examples/example-3/client/src/vue-shims.d.ts b/package/examples/example-3/client/src/vue-shims.d.ts new file mode 100644 index 0000000..506bf2e --- /dev/null +++ b/package/examples/example-3/client/src/vue-shims.d.ts @@ -0,0 +1,5 @@ +declare module '*.vue' { + import { DefineComponent } from 'vue'; + const component: DefineComponent<{}, {}, any>; + export default component; +} diff --git a/package/examples/example-3/client/tsconfig.json b/package/examples/example-3/client/tsconfig.json new file mode 100644 index 0000000..f82888f --- /dev/null +++ b/package/examples/example-3/client/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "preserve", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/package/examples/example-3/client/tsconfig.node.json b/package/examples/example-3/client/tsconfig.node.json new file mode 100644 index 0000000..42872c5 --- /dev/null +++ b/package/examples/example-3/client/tsconfig.node.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/package/examples/example-3/client/vite.config.ts b/package/examples/example-3/client/vite.config.ts new file mode 100644 index 0000000..05c1740 --- /dev/null +++ b/package/examples/example-3/client/vite.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [vue()], +}) diff --git a/package/examples/example-3/package-lock.json b/package/examples/example-3/package-lock.json new file mode 100644 index 0000000..42aca71 --- /dev/null +++ b/package/examples/example-3/package-lock.json @@ -0,0 +1,1317 @@ +{ + "name": "example-2", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "example-2", + "version": "1.0.0", + "license": "ISC", + "devDependencies": { + "npm-run-all": "^4.1.5" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/call-bind": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.5", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.2", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.12", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + }, + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dev": true, + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-array-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", + "dev": true + }, + "node_modules/string.prototype.padend": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.5.tgz", + "integrity": "sha512-DOB27b/2UTTD+4myKUFh+/fXWcu/UDyASIXfg+7VzoCNNGOfWvoyU/x5pvVHr++ztyt/oSYI1BcWBBG/hmlNjA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.4", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + } + } +} diff --git a/package/examples/example-3/package.json b/package/examples/example-3/package.json new file mode 100644 index 0000000..7affd1d --- /dev/null +++ b/package/examples/example-3/package.json @@ -0,0 +1,17 @@ +{ + "name": "example-2", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "example-3-client": "cd client && npm run dev", + "example-3-server": "cd server && npm run server", + "example-3": "npm-run-all --parallel example-3-server example-3-client" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "npm-run-all": "^4.1.5" + } +} diff --git a/package/examples/example-3/server/.gitignore b/package/examples/example-3/server/.gitignore new file mode 100644 index 0000000..c2658d7 --- /dev/null +++ b/package/examples/example-3/server/.gitignore @@ -0,0 +1 @@ +node_modules/ diff --git a/package/examples/example-3/server/controllers/postsController.ts b/package/examples/example-3/server/controllers/postsController.ts new file mode 100644 index 0000000..6ac11a3 --- /dev/null +++ b/package/examples/example-3/server/controllers/postsController.ts @@ -0,0 +1,164 @@ +import fs from 'fs/promises'; +import path from 'path'; +import { Request, Response, NextFunction } from 'express'; + +type PostsController = { + fetchData: (req: Request, res: Response, next: NextFunction) => Promise; + createPost: ( + req: Request, + res: Response, + next: NextFunction + ) => Promise; + likePost: (req: Request, res: Response, next: NextFunction) => Promise; + deletePost: ( + req: Request, + res: Response, + next: NextFunction + ) => Promise; + createComment: ( + req: Request, + res: Response, + next: NextFunction + ) => Promise; + openComment: ( + req: Request, + res: Response, + next: NextFunction + ) => Promise; +}; + +const postsController: PostsController = { + fetchData: async (req, res, next) => { + try { + const database = req.query.database; + + const data = await fs.readFile( + path.join(__dirname, `../../models/${database}.json`), + 'utf8' + ); + const db = JSON.parse(data); + + res.locals.fetchData = db.posts; + + next(); + } catch (err) { + console.error('Error reading from database.json:', err); + res.status(500).send('Error reading data'); + } + }, + + createPost: async (req, res, next) => { + try { + const { newPost, database } = req.body; + + const dbPath = path.join(__dirname, `../../models/${database}.json`); + const data = await fs.readFile(dbPath, 'utf8'); + const db = JSON.parse(data); + + db.posts.unshift(newPost); + + await fs.writeFile(dbPath, JSON.stringify(db, null, 2), 'utf8'); + + res.locals.createPost = db.posts; + + next(); + } catch (err) { + console.error('Error updating database.json:', err); + res.status(500).send('Error saving data'); + } + }, + + likePost: async (req, res, next) => { + try { + const { database, index } = req.body; + const postIndex = parseInt(index, 10); + + const dbPath = path.join(__dirname, `../../models/${database}.json`); + const data = await fs.readFile(dbPath, 'utf8'); + const db = JSON.parse(data); + + db.posts[postIndex].liked = !db.posts[postIndex].liked; + + await fs.writeFile(dbPath, JSON.stringify(db, null, 2), 'utf8'); + + res.locals.likePost = db.posts; + + next(); + } catch (err) { + console.error('Error updating database.json:', err); + res.status(500).send('Error saving data'); + } + }, + + deletePost: async (req, res, next) => { + try { + const { database, index } = req.body; + const postIndex = parseInt(index, 10); + + const dbPath = path.join(__dirname, `../../models/${database}.json`); + const data = await fs.readFile(dbPath, 'utf8'); + const db = JSON.parse(data); + + const updatedPostsArray = db.posts.filter((_, curIndex) => { + return curIndex !== postIndex; + }); + + db.posts = updatedPostsArray; + + await fs.writeFile(dbPath, JSON.stringify(db, null, 2), 'utf8'); + + res.locals.deletePost = db.posts; + + next(); + } catch (err) { + console.error('Error updating database.json:', err); + res.status(500).send('Error saving data'); + } + }, + + createComment: async (req, res, next) => { + try { + const { database, index, comment } = req.body; + const postIndex = parseInt(index, 10); + + const dbPath = path.join(__dirname, `../../models/${database}.json`); + const data = await fs.readFile(dbPath, 'utf8'); + const db = JSON.parse(data); + + db.posts[postIndex].comments.push(comment); + + await fs.writeFile(dbPath, JSON.stringify(db, null, 2), 'utf8'); + + res.locals.createComment = db.posts; + + next(); + } catch (err) { + console.error('Error updating database.json:', err); + res.status(500).send('Error saving data'); + } + }, + + openComment: async (req, res, next) => { + try { + const { database, index } = req.body; + const postIndex = parseInt(index, 10); + + const dbPath = path.join(__dirname, `../../models/${database}.json`); + const data = await fs.readFile(dbPath, 'utf8'); + const db = JSON.parse(data); + + db.posts[postIndex].createComment = !db.posts[postIndex].createComment; + + await fs.writeFile(dbPath, JSON.stringify(db, null, 2), 'utf8'); + + res.locals.openComment = db.posts; + + next(); + } catch (err) { + console.error('Error updating database.json:', err); + res.status(500).send('Error saving data'); + } + }, +}; + +export default postsController; diff --git a/package/examples/example-3/server/models/postsOne copy.json b/package/examples/example-3/server/models/postsOne copy.json new file mode 100644 index 0000000..a55fb78 --- /dev/null +++ b/package/examples/example-3/server/models/postsOne copy.json @@ -0,0 +1,30 @@ +{ + "posts": [ + { + "id": 1, + "text": "Feed 1 - First Post", + "liked": false, + "comments": [ + "First comment on first post", + "Second comment on first post" + ], + "createComment": false + }, + { + "id": 2, + "text": "Feed 1 - Second Post", + "liked": false, + "comments": [ + "Only comment on second post" + ], + "createComment": false + }, + { + "id": 3, + "text": "Feed 1 - Third Post", + "liked": false, + "comments": [], + "createComment": false + } + ] +} \ No newline at end of file diff --git a/package/examples/example-3/server/models/postsOne.json b/package/examples/example-3/server/models/postsOne.json new file mode 100644 index 0000000..2c4dd33 --- /dev/null +++ b/package/examples/example-3/server/models/postsOne.json @@ -0,0 +1,11 @@ +{ + "posts": [ + { + "text": "Feed 1 – Post 1", + "liked": false, + "comments": [], + "createComment": false, + "timestamp": "6:09 PM" + } + ] +} \ No newline at end of file diff --git a/package/examples/example-3/server/models/postsThree.json b/package/examples/example-3/server/models/postsThree.json new file mode 100644 index 0000000..6056252 --- /dev/null +++ b/package/examples/example-3/server/models/postsThree.json @@ -0,0 +1,11 @@ +{ + "posts": [ + { + "text": "Feed 3 – Post 1", + "liked": false, + "comments": [], + "createComment": false, + "timestamp": "8:42 PM" + } + ] +} \ No newline at end of file diff --git a/package/examples/example-3/server/models/postsTwo.json b/package/examples/example-3/server/models/postsTwo.json new file mode 100644 index 0000000..d496dea --- /dev/null +++ b/package/examples/example-3/server/models/postsTwo.json @@ -0,0 +1,11 @@ +{ + "posts": [ + { + "text": "Feed 2 – Post 1", + "liked": false, + "comments": [], + "createComment": false, + "timestamp": "8:41 PM" + } + ] +} \ No newline at end of file diff --git a/package/examples/example-3/server/package-lock.json b/package/examples/example-3/server/package-lock.json new file mode 100644 index 0000000..9861878 --- /dev/null +++ b/package/examples/example-3/server/package-lock.json @@ -0,0 +1,823 @@ +{ + "name": "example-3-server", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "example-3-server", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@types/express": "^4.17.21", + "cors": "^2.8.5", + "express": "^4.18.2", + "fs": "^0.0.1-security", + "path": "^0.12.7" + }, + "devDependencies": { + "typescript": "^5.3.3" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.41", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.41.tgz", + "integrity": "sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==" + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" + }, + "node_modules/@types/node": { + "version": "20.10.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.0.tgz", + "integrity": "sha512-D0WfRmU9TQ8I9PFx9Yc+EBHw+vSpIub4IDvQivcp26PtPrdMGAq5SDcpXEo/epqa/DXotVpekHiLNTg3iaKXBQ==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/qs": { + "version": "6.9.10", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.10.tgz", + "integrity": "sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw==" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" + }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", + "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", + "dependencies": { + "@types/http-errors": "*", + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "dependencies": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", + "integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==" + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "dependencies": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path": { + "version": "0.12.7", + "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", + "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==", + "dependencies": { + "process": "^0.11.1", + "util": "^0.10.3" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typescript": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dependencies": { + "inherits": "2.0.3" + } + }, + "node_modules/util/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + } + } +} diff --git a/package/examples/example-3/server/package.json b/package/examples/example-3/server/package.json new file mode 100644 index 0000000..091ac59 --- /dev/null +++ b/package/examples/example-3/server/package.json @@ -0,0 +1,24 @@ +{ + "name": "example-3-server", + "version": "1.0.0", + "description": "", + "main": "dist/server.js", + "scripts": { + "build": "tsc", + "start": "node dist/server.js", + "server": "tsc && node dist/server.js" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "@types/express": "^4.17.21", + "cors": "^2.8.5", + "express": "^4.18.2", + "fs": "^0.0.1-security", + "path": "^0.12.7" + }, + "devDependencies": { + "typescript": "^5.3.3" + } +} diff --git a/package/examples/example-3/server/routes.ts b/package/examples/example-3/server/routes.ts new file mode 100644 index 0000000..305f114 --- /dev/null +++ b/package/examples/example-3/server/routes.ts @@ -0,0 +1,42 @@ +import express from 'express'; +import fs from 'fs/promises'; +import path from 'path'; +import postsController from './controllers/postsController'; + +const router = express.Router(); + +// fetching starting data +router.get('/fetch-data', postsController.fetchData, async (req, res) => { + res.status(200).json(res.locals.fetchData); +}); + +// create post +router.post('/create-post', postsController.createPost, async (req, res) => { + res.status(201).json(res.locals.createPost); +}); + +// like post +router.post('/like-post', postsController.likePost, async (req, res) => { + res.status(201).json(res.locals.likePost); +}); + +// delete post +router.post('/delete-post', postsController.deletePost, async (req, res) => { + res.status(201).json(res.locals.deletePost); +}); + +// create commment +router.post( + '/create-comment', + postsController.createComment, + async (req, res) => { + res.status(201).json(res.locals.createComment); + } +); + +// open comment +router.post('/open-comment', postsController.openComment, async (req, res) => { + res.status(201).json(res.locals.openComment); +}); + +export default router; diff --git a/package/examples/example-3/server/server.ts b/package/examples/example-3/server/server.ts new file mode 100644 index 0000000..19932c9 --- /dev/null +++ b/package/examples/example-3/server/server.ts @@ -0,0 +1,21 @@ +import express from 'express'; +import cors from 'cors'; +import router from './routes'; + +const app = express(); +const PORT = 3000; + +app.use(cors()); +app.use(express.json()); +app.use(express.urlencoded({ extended: true })); +app.use(router); + +app.use('*', (req, res) => { + res.status(404).send('Not Found'); +}); + +app.listen(PORT, () => { + console.log(`Server is listening on port ${PORT}`); +}); + +export default express; diff --git a/package/examples/example-3/server/tsconfig.json b/package/examples/example-3/server/tsconfig.json new file mode 100644 index 0000000..a6dd7f9 --- /dev/null +++ b/package/examples/example-3/server/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "outDir": "./dist", // Specifies the output directory for compiled files + "rootDir": "./", // Specifies the root directory of input files + "module": "CommonJS", + "target": "ES2019", + "moduleResolution": "Node", + "esModuleInterop": true + // Add any other compiler options as needed + }, + "include": ["./**/*.ts"], // Include all TypeScript files in the project + "exclude": ["node_modules", "dist"] // Exclude node_modules and dist from the compilation +} diff --git a/package/examples/example-4/client/.gitignore b/package/examples/example-4/client/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/package/examples/example-4/client/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/package/examples/example-4/client/.prettierrc b/package/examples/example-4/client/.prettierrc new file mode 100644 index 0000000..ca43d6f --- /dev/null +++ b/package/examples/example-4/client/.prettierrc @@ -0,0 +1,5 @@ +{ + "plugins": ["prettier-plugin-svelte"], + "pluginSearchDirs": ["."], + "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] +} diff --git a/package/examples/example-4/client/.vscode/extensions.json b/package/examples/example-4/client/.vscode/extensions.json new file mode 100644 index 0000000..bdef820 --- /dev/null +++ b/package/examples/example-4/client/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["svelte.svelte-vscode"] +} diff --git a/package/examples/example-4/client/README.md b/package/examples/example-4/client/README.md new file mode 100644 index 0000000..e6cd94f --- /dev/null +++ b/package/examples/example-4/client/README.md @@ -0,0 +1,47 @@ +# Svelte + TS + Vite + +This template should help get you started developing with Svelte and TypeScript in Vite. + +## Recommended IDE Setup + +[VS Code](https://code.visualstudio.com/) + [Svelte](https://marketplace.visualstudio.com/items?itemName=svelte.svelte-vscode). + +## Need an official Svelte framework? + +Check out [SvelteKit](https://github.com/sveltejs/kit#readme), which is also powered by Vite. Deploy anywhere with its serverless-first approach and adapt to various platforms, with out of the box support for TypeScript, SCSS, and Less, and easily-added support for mdsvex, GraphQL, PostCSS, Tailwind CSS, and more. + +## Technical considerations + +**Why use this over SvelteKit?** + +- It brings its own routing solution which might not be preferable for some users. +- It is first and foremost a framework that just happens to use Vite under the hood, not a Vite app. + +This template contains as little as possible to get started with Vite + TypeScript + Svelte, while taking into account the developer experience with regards to HMR and intellisense. It demonstrates capabilities on par with the other `create-vite` templates and is a good starting point for beginners dipping their toes into a Vite + Svelte project. + +Should you later need the extended capabilities and extensibility provided by SvelteKit, the template has been structured similarly to SvelteKit so that it is easy to migrate. + +**Why `global.d.ts` instead of `compilerOptions.types` inside `jsconfig.json` or `tsconfig.json`?** + +Setting `compilerOptions.types` shuts out all other types not explicitly listed in the configuration. Using triple-slash references keeps the default TypeScript setting of accepting type information from the entire workspace, while also adding `svelte` and `vite/client` type information. + +**Why include `.vscode/extensions.json`?** + +Other templates indirectly recommend extensions via the README, but this file allows VS Code to prompt the user to install the recommended extension upon opening the project. + +**Why enable `allowJs` in the TS template?** + +While `allowJs: false` would indeed prevent the use of `.js` files in the project, it does not prevent the use of JavaScript syntax in `.svelte` files. In addition, it would force `checkJs: false`, bringing the worst of both worlds: not being able to guarantee the entire codebase is TypeScript, and also having worse typechecking for the existing JavaScript. In addition, there are valid use cases in which a mixed codebase may be relevant. + +**Why is HMR not preserving my local component state?** + +HMR state preservation comes with a number of gotchas! It has been disabled by default in both `svelte-hmr` and `@sveltejs/vite-plugin-svelte` due to its often surprising behavior. You can read the details [here](https://github.com/rixo/svelte-hmr#svelte-hmr). + +If you have state that's important to retain within a component, consider creating an external store which would not be replaced by HMR. + +```ts +// store.ts +// An extremely simple external store +import { writable } from 'svelte/store' +export default writable(0) +``` diff --git a/package/examples/example-4/client/index.html b/package/examples/example-4/client/index.html new file mode 100644 index 0000000..707a507 --- /dev/null +++ b/package/examples/example-4/client/index.html @@ -0,0 +1,13 @@ + + + + + + Svelte Query Rewind + + +
+ + + + diff --git a/package/examples/example-4/client/package-lock.json b/package/examples/example-4/client/package-lock.json new file mode 100644 index 0000000..8ad093d --- /dev/null +++ b/package/examples/example-4/client/package-lock.json @@ -0,0 +1,1804 @@ +{ + "name": "client", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "client", + "version": "0.0.0", + "dependencies": { + "@tanstack/svelte-query": "^5.15.0" + }, + "devDependencies": { + "@sveltejs/vite-plugin-svelte": "^3.0.1", + "@tsconfig/svelte": "^5.0.2", + "prettier": "^3.1.1", + "prettier-plugin-svelte": "^3.1.2", + "svelte": "^4.2.8", + "svelte-check": "^3.6.2", + "tslib": "^2.6.2", + "typescript": "^5.2.2", + "vite": "^5.0.8" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.10.tgz", + "integrity": "sha512-Q+mk96KJ+FZ30h9fsJl+67IjNJm3x2eX+GBWGmocAKgzp27cowCOOqSdscX80s0SpdFXZnIv/+1xD1EctFx96Q==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.10.tgz", + "integrity": "sha512-7W0bK7qfkw1fc2viBfrtAEkDKHatYfHzr/jKAHNr9BvkYDXPcC6bodtm8AyLJNNuqClLNaeTLuwURt4PRT9d7w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.10.tgz", + "integrity": "sha512-1X4CClKhDgC3by7k8aOWZeBXQX8dHT5QAMCAQDArCLaYfkppoARvh0fit3X2Qs+MXDngKcHv6XXyQCpY0hkK1Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.10.tgz", + "integrity": "sha512-O/nO/g+/7NlitUxETkUv/IvADKuZXyH4BHf/g/7laqKC4i/7whLpB0gvpPc2zpF0q9Q6FXS3TS75QHac9MvVWw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.10.tgz", + "integrity": "sha512-YSRRs2zOpwypck+6GL3wGXx2gNP7DXzetmo5pHXLrY/VIMsS59yKfjPizQ4lLt5vEI80M41gjm2BxrGZ5U+VMA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.10.tgz", + "integrity": "sha512-alfGtT+IEICKtNE54hbvPg13xGBe4GkVxyGWtzr+yHO7HIiRJppPDhOKq3zstTcVf8msXb/t4eavW3jCDpMSmA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.10.tgz", + "integrity": "sha512-dMtk1wc7FSH8CCkE854GyGuNKCewlh+7heYP/sclpOG6Cectzk14qdUIY5CrKDbkA/OczXq9WesqnPl09mj5dg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.10.tgz", + "integrity": "sha512-G5UPPspryHu1T3uX8WiOEUa6q6OlQh6gNl4CO4Iw5PS+Kg5bVggVFehzXBJY6X6RSOMS8iXDv2330VzaObm4Ag==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.10.tgz", + "integrity": "sha512-j6gUW5aAaPgD416Hk9FHxn27On28H4eVI9rJ4az7oCGTFW48+LcgNDBN+9f8rKZz7EEowo889CPKyeaD0iw9Kg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.10.tgz", + "integrity": "sha512-QxaouHWZ+2KWEj7cGJmvTIHVALfhpGxo3WLmlYfJ+dA5fJB6lDEIg+oe/0//FuyVHuS3l79/wyBxbHr0NgtxJQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.10.tgz", + "integrity": "sha512-4ub1YwXxYjj9h1UIZs2hYbnTZBtenPw5NfXCRgEkGb0b6OJ2gpkMvDqRDYIDRjRdWSe/TBiZltm3Y3Q8SN1xNg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.10.tgz", + "integrity": "sha512-lo3I9k+mbEKoxtoIbM0yC/MZ1i2wM0cIeOejlVdZ3D86LAcFXFRdeuZmh91QJvUTW51bOK5W2BznGNIl4+mDaA==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.10.tgz", + "integrity": "sha512-J4gH3zhHNbdZN0Bcr1QUGVNkHTdpijgx5VMxeetSk6ntdt+vR1DqGmHxQYHRmNb77tP6GVvD+K0NyO4xjd7y4A==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.10.tgz", + "integrity": "sha512-tgT/7u+QhV6ge8wFMzaklOY7KqiyitgT1AUHMApau32ZlvTB/+efeCtMk4eXS+uEymYK249JsoiklZN64xt6oQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.10.tgz", + "integrity": "sha512-0f/spw0PfBMZBNqtKe5FLzBDGo0SKZKvMl5PHYQr3+eiSscfJ96XEknCe+JoOayybWUFQbcJTrk946i3j9uYZA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.10.tgz", + "integrity": "sha512-pZFe0OeskMHzHa9U38g+z8Yx5FNCLFtUnJtQMpwhS+r4S566aK2ci3t4NCP4tjt6d5j5uo4h7tExZMjeKoehAA==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.10.tgz", + "integrity": "sha512-SpYNEqg/6pZYoc+1zLCjVOYvxfZVZj6w0KROZ3Fje/QrM3nfvT2llI+wmKSrWuX6wmZeTapbarvuNNK/qepSgA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.10.tgz", + "integrity": "sha512-ACbZ0vXy9zksNArWlk2c38NdKg25+L9pr/mVaj9SUq6lHZu/35nx2xnQVRGLrC1KKQqJKRIB0q8GspiHI3J80Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.10.tgz", + "integrity": "sha512-PxcgvjdSjtgPMiPQrM3pwSaG4kGphP+bLSb+cihuP0LYdZv1epbAIecHVl5sD3npkfYBZ0ZnOjR878I7MdJDFg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.10.tgz", + "integrity": "sha512-ZkIOtrRL8SEJjr+VHjmW0znkPs+oJXhlJbNwfI37rvgeMtk3sxOQevXPXjmAPZPigVTncvFqLMd+uV0IBSEzqA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.10.tgz", + "integrity": "sha512-+Sa4oTDbpBfGpl3Hn3XiUe4f8TU2JF7aX8cOfqFYMMjXp6ma6NJDztl5FDG8Ezx0OjwGikIHw+iA54YLDNNVfw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.10.tgz", + "integrity": "sha512-EOGVLK1oWMBXgfttJdPHDTiivYSjX6jDNaATeNOaCOFEVcfMjtbx7WVQwPSE1eIfCp/CaSF2nSrDtzc4I9f8TQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.10.tgz", + "integrity": "sha512-whqLG6Sc70AbU73fFYvuYzaE4MNMBIlR1Y/IrUeOXFrWHxBEjjbZaQ3IXIQS8wJdAzue2GwYZCjOrgrU1oUHoA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.1.tgz", + "integrity": "sha512-6vMdBZqtq1dVQ4CWdhFwhKZL6E4L1dV6jUjuBvsavvNJSppzi6dLBbuV+3+IyUREaj9ZFvQefnQm28v4OCXlig==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.1.tgz", + "integrity": "sha512-Jto9Fl3YQ9OLsTDWtLFPtaIMSL2kwGyGoVCmPC8Gxvym9TCZm4Sie+cVeblPO66YZsYH8MhBKDMGZ2NDxuk/XQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.1.tgz", + "integrity": "sha512-LtYcLNM+bhsaKAIGwVkh5IOWhaZhjTfNOkGzGqdHvhiCUVuJDalvDxEdSnhFzAn+g23wgsycmZk1vbnaibZwwA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.1.tgz", + "integrity": "sha512-KyP/byeXu9V+etKO6Lw3E4tW4QdcnzDG/ake031mg42lob5tN+5qfr+lkcT/SGZaH2PdW4Z1NX9GHEkZ8xV7og==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.1.tgz", + "integrity": "sha512-Yqz/Doumf3QTKplwGNrCHe/B2p9xqDghBZSlAY0/hU6ikuDVQuOUIpDP/YcmoT+447tsZTmirmjgG3znvSCR0Q==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.1.tgz", + "integrity": "sha512-u3XkZVvxcvlAOlQJ3UsD1rFvLWqu4Ef/Ggl40WAVCuogf4S1nJPHh5RTgqYFpCOvuGJ7H5yGHabjFKEZGExk5Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.1.tgz", + "integrity": "sha512-0XSYN/rfWShW+i+qjZ0phc6vZ7UWI8XWNz4E/l+6edFt+FxoEghrJHjX1EY/kcUGCnZzYYRCl31SNdfOi450Aw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.1.tgz", + "integrity": "sha512-LmYIO65oZVfFt9t6cpYkbC4d5lKHLYv5B4CSHRpnANq0VZUQXGcCPXHzbCXCz4RQnx7jvlYB1ISVNCE/omz5cw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.1.tgz", + "integrity": "sha512-kr8rEPQ6ns/Lmr/hiw8sEVj9aa07gh1/tQF2Y5HrNCCEPiCBGnBUt9tVusrcBBiJfIt1yNaXN6r1CCmpbFEDpg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.1.tgz", + "integrity": "sha512-t4QSR7gN+OEZLG0MiCgPqMWZGwmeHhsM4AkegJ0Kiy6TnJ9vZ8dEIwHw1LcZKhbHxTY32hp9eVCMdR3/I8MGRw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.1.tgz", + "integrity": "sha512-7XI4ZCBN34cb+BH557FJPmh0kmNz2c25SCQeT9OiFWEgf8+dL6ZwJ8f9RnUIit+j01u07Yvrsuu1rZGxJCc51g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.1.tgz", + "integrity": "sha512-yE5c2j1lSWOH5jp+Q0qNL3Mdhr8WuqCNVjc6BxbVfS5cAS6zRmdiw7ktb8GNpDCEUJphILY6KACoFoRtKoqNQg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.1.tgz", + "integrity": "sha512-PyJsSsafjmIhVgaI1Zdj7m8BB8mMckFah/xbpplObyHfiXzKcI5UOUXRyOdHW7nz4DpMCuzLnF7v5IWHenCwYA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@sveltejs/vite-plugin-svelte": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-3.0.1.tgz", + "integrity": "sha512-CGURX6Ps+TkOovK6xV+Y2rn8JKa8ZPUHPZ/NKgCxAmgBrXReavzFl8aOSCj3kQ1xqT7yGJj53hjcV/gqwDAaWA==", + "dev": true, + "dependencies": { + "@sveltejs/vite-plugin-svelte-inspector": "^2.0.0-next.0 || ^2.0.0", + "debug": "^4.3.4", + "deepmerge": "^4.3.1", + "kleur": "^4.1.5", + "magic-string": "^0.30.5", + "svelte-hmr": "^0.15.3", + "vitefu": "^0.2.5" + }, + "engines": { + "node": "^18.0.0 || >=20" + }, + "peerDependencies": { + "svelte": "^4.0.0 || ^5.0.0-next.0", + "vite": "^5.0.0" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte-inspector": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-2.0.0.tgz", + "integrity": "sha512-gjr9ZFg1BSlIpfZ4PRewigrvYmHWbDrq2uvvPB1AmTWKuM+dI1JXQSUu2pIrYLb/QncyiIGkFDFKTwJ0XqQZZg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.0.0 || >=20" + }, + "peerDependencies": { + "@sveltejs/vite-plugin-svelte": "^3.0.0", + "svelte": "^4.0.0 || ^5.0.0-next.0", + "vite": "^5.0.0" + } + }, + "node_modules/@tanstack/query-core": { + "version": "5.14.2", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.14.2.tgz", + "integrity": "sha512-QmoJvC72sSWs3hgGis8JdmlDvqLfYGWUK4UG6OR9Q6t28JMN9m2FDwKPqoSJ9YVocELCSjMt/FGjEiLfk8000Q==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/svelte-query": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@tanstack/svelte-query/-/svelte-query-5.15.0.tgz", + "integrity": "sha512-HlDg8uN9heF8ZJH6oJtZlBQjV++jdvyS3Rd4B+bp86RVxgrAjrr4LmKNqBhfOjNWHGmLTNEmzpdvg8QtzGZKhg==", + "dependencies": { + "@tanstack/query-core": "5.14.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "svelte": "^3.54.0 || ^4.0.0 || ^5.0.0-next.0" + } + }, + "node_modules/@tsconfig/svelte": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@tsconfig/svelte/-/svelte-5.0.2.tgz", + "integrity": "sha512-BRbo1fOtyVbhfLyuCWw6wAWp+U8UQle+ZXu84MYYWzYSEB28dyfnRBIE99eoG+qdAC0po6L2ScIEivcT07UaMA==", + "dev": true + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + }, + "node_modules/@types/pug": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.10.tgz", + "integrity": "sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/axobject-query": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", + "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/code-red": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz", + "integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15", + "@types/estree": "^1.0.1", + "acorn": "^8.10.0", + "estree-walker": "^3.0.3", + "periscopic": "^3.1.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.10.tgz", + "integrity": "sha512-S1Y27QGt/snkNYrRcswgRFqZjaTG5a5xM3EQo97uNBnH505pdzSNe/HLBq1v0RO7iK/ngdbhJB6mDAp0OK+iUA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.10", + "@esbuild/android-arm": "0.19.10", + "@esbuild/android-arm64": "0.19.10", + "@esbuild/android-x64": "0.19.10", + "@esbuild/darwin-arm64": "0.19.10", + "@esbuild/darwin-x64": "0.19.10", + "@esbuild/freebsd-arm64": "0.19.10", + "@esbuild/freebsd-x64": "0.19.10", + "@esbuild/linux-arm": "0.19.10", + "@esbuild/linux-arm64": "0.19.10", + "@esbuild/linux-ia32": "0.19.10", + "@esbuild/linux-loong64": "0.19.10", + "@esbuild/linux-mips64el": "0.19.10", + "@esbuild/linux-ppc64": "0.19.10", + "@esbuild/linux-riscv64": "0.19.10", + "@esbuild/linux-s390x": "0.19.10", + "@esbuild/linux-x64": "0.19.10", + "@esbuild/netbsd-x64": "0.19.10", + "@esbuild/openbsd-x64": "0.19.10", + "@esbuild/sunos-x64": "0.19.10", + "@esbuild/win32-arm64": "0.19.10", + "@esbuild/win32-ia32": "0.19.10", + "@esbuild/win32-x64": "0.19.10" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fastq": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz", + "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-reference": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz", + "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/locate-character": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", + "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==" + }, + "node_modules/magic-string": { + "version": "0.30.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", + "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/periscopic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", + "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^3.0.0", + "is-reference": "^3.0.0" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.4.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", + "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prettier": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.1.tgz", + "integrity": "sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-plugin-svelte": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.1.2.tgz", + "integrity": "sha512-7xfMZtwgAWHMT0iZc8jN4o65zgbAQ3+O32V6W7pXrqNvKnHnkoyQCGCbKeUyXKZLbYE0YhFRnamfxfkEGxm8qA==", + "dev": true, + "peerDependencies": { + "prettier": "^3.0.0", + "svelte": "^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/rollup": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.1.tgz", + "integrity": "sha512-pgPO9DWzLoW/vIhlSoDByCzcpX92bKEorbgXuZrqxByte3JFk2xSW2JEeAcyLc9Ru9pqcNNW+Ob7ntsk2oT/Xw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.9.1", + "@rollup/rollup-android-arm64": "4.9.1", + "@rollup/rollup-darwin-arm64": "4.9.1", + "@rollup/rollup-darwin-x64": "4.9.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.9.1", + "@rollup/rollup-linux-arm64-gnu": "4.9.1", + "@rollup/rollup-linux-arm64-musl": "4.9.1", + "@rollup/rollup-linux-riscv64-gnu": "4.9.1", + "@rollup/rollup-linux-x64-gnu": "4.9.1", + "@rollup/rollup-linux-x64-musl": "4.9.1", + "@rollup/rollup-win32-arm64-msvc": "4.9.1", + "@rollup/rollup-win32-ia32-msvc": "4.9.1", + "@rollup/rollup-win32-x64-msvc": "4.9.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dev": true, + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/sander": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz", + "integrity": "sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==", + "dev": true, + "dependencies": { + "es6-promise": "^3.1.2", + "graceful-fs": "^4.1.3", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.2" + } + }, + "node_modules/sorcery": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.11.0.tgz", + "integrity": "sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.14", + "buffer-crc32": "^0.2.5", + "minimist": "^1.2.0", + "sander": "^0.5.0" + }, + "bin": { + "sorcery": "bin/sorcery" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/svelte": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.8.tgz", + "integrity": "sha512-hU6dh1MPl8gh6klQZwK/n73GiAHiR95IkFsesLPbMeEZi36ydaXL/ZAb4g9sayT0MXzpxyZjR28yderJHxcmYA==", + "dependencies": { + "@ampproject/remapping": "^2.2.1", + "@jridgewell/sourcemap-codec": "^1.4.15", + "@jridgewell/trace-mapping": "^0.3.18", + "acorn": "^8.9.0", + "aria-query": "^5.3.0", + "axobject-query": "^3.2.1", + "code-red": "^1.0.3", + "css-tree": "^2.3.1", + "estree-walker": "^3.0.3", + "is-reference": "^3.0.1", + "locate-character": "^3.0.0", + "magic-string": "^0.30.4", + "periscopic": "^3.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/svelte-check": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-3.6.2.tgz", + "integrity": "sha512-E6iFh4aUCGJLRz6QZXH3gcN/VFfkzwtruWSRmlKrLWQTiO6VzLsivR6q02WYLGNAGecV3EocqZuCDrC2uttZ0g==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.17", + "chokidar": "^3.4.1", + "fast-glob": "^3.2.7", + "import-fresh": "^3.2.1", + "picocolors": "^1.0.0", + "sade": "^1.7.4", + "svelte-preprocess": "^5.1.0", + "typescript": "^5.0.3" + }, + "bin": { + "svelte-check": "bin/svelte-check" + }, + "peerDependencies": { + "svelte": "^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0" + } + }, + "node_modules/svelte-hmr": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.3.tgz", + "integrity": "sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==", + "dev": true, + "engines": { + "node": "^12.20 || ^14.13.1 || >= 16" + }, + "peerDependencies": { + "svelte": "^3.19.0 || ^4.0.0" + } + }, + "node_modules/svelte-preprocess": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.1.3.tgz", + "integrity": "sha512-xxAkmxGHT+J/GourS5mVJeOXZzne1FR5ljeOUAMXUkfEhkLEllRreXpbl3dIYJlcJRfL1LO1uIAPpBpBfiqGPw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@types/pug": "^2.0.6", + "detect-indent": "^6.1.0", + "magic-string": "^0.30.5", + "sorcery": "^0.11.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">= 16.0.0", + "pnpm": "^8.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.10.2", + "coffeescript": "^2.5.1", + "less": "^3.11.3 || ^4.0.0", + "postcss": "^7 || ^8", + "postcss-load-config": "^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0", + "pug": "^3.0.0", + "sass": "^1.26.8", + "stylus": "^0.55.0", + "sugarss": "^2.0.0 || ^3.0.0 || ^4.0.0", + "svelte": "^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0", + "typescript": ">=3.9.5 || ^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "coffeescript": { + "optional": true + }, + "less": { + "optional": true + }, + "postcss": { + "optional": true + }, + "postcss-load-config": { + "optional": true + }, + "pug": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/typescript": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/vite": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.10.tgz", + "integrity": "sha512-2P8J7WWgmc355HUMlFrwofacvr98DAjoE52BfdbwQtyLH06XKwaL/FMnmKM2crF0iX4MpmMKoDlNCB1ok7zHCw==", + "dev": true, + "dependencies": { + "esbuild": "^0.19.3", + "postcss": "^8.4.32", + "rollup": "^4.2.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vitefu": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz", + "integrity": "sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==", + "dev": true, + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + } + } +} diff --git a/package/examples/example-4/client/package.json b/package/examples/example-4/client/package.json new file mode 100644 index 0000000..3f99f64 --- /dev/null +++ b/package/examples/example-4/client/package.json @@ -0,0 +1,26 @@ +{ + "name": "client", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview", + "check": "svelte-check --tsconfig ./tsconfig.json" + }, + "devDependencies": { + "@sveltejs/vite-plugin-svelte": "^3.0.1", + "@tsconfig/svelte": "^5.0.2", + "prettier": "^3.1.1", + "prettier-plugin-svelte": "^3.1.2", + "svelte": "^4.2.8", + "svelte-check": "^3.6.2", + "tslib": "^2.6.2", + "typescript": "^5.2.2", + "vite": "^5.0.8" + }, + "dependencies": { + "@tanstack/svelte-query": "^5.15.0" + } +} diff --git a/package/examples/example-4/client/public/vite.svg b/package/examples/example-4/client/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/package/examples/example-4/client/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/package/examples/example-4/client/src/App.svelte b/package/examples/example-4/client/src/App.svelte new file mode 100644 index 0000000..8bc0b2e --- /dev/null +++ b/package/examples/example-4/client/src/App.svelte @@ -0,0 +1,60 @@ + + + + + +
+ + + {#if $screenView === "Posts One"} + + {:else if $screenView === "Posts Two"} + + {:else if $screenView === "Posts Three"} + + {/if} +
+
+ + diff --git a/package/examples/example-4/client/src/components/PostsOne.svelte b/package/examples/example-4/client/src/components/PostsOne.svelte new file mode 100644 index 0000000..62bb2d8 --- /dev/null +++ b/package/examples/example-4/client/src/components/PostsOne.svelte @@ -0,0 +1,324 @@ + + +
+
+ + +
+ + + + {#if $postsArray.data} + {#each $postsArray.data as post, index (index)} +
+
+ {post.text} + +
+ + + + {#if post.createComment} +
+
createComment(event, index)} + > + + +
+ {#each post.comments as comment, commentIndex} +
+ {`${commentIndex}) ${comment}`} +
+ {/each} +
+ {/if} +
+ {/each} + {/if} +
+ + diff --git a/package/examples/example-4/client/src/components/PostsThree.svelte b/package/examples/example-4/client/src/components/PostsThree.svelte new file mode 100644 index 0000000..0d812d5 --- /dev/null +++ b/package/examples/example-4/client/src/components/PostsThree.svelte @@ -0,0 +1,324 @@ + + +
+
+ + +
+ + + + {#if $postsArray.data} + {#each $postsArray.data as post, index (index)} +
+
+ {post.text} + +
+ + + + {#if post.createComment} +
+
createComment(event, index)} + > + + +
+ {#each post.comments as comment, commentIndex} +
+ {`${commentIndex}) ${comment}`} +
+ {/each} +
+ {/if} +
+ {/each} + {/if} +
+ + diff --git a/package/examples/example-4/client/src/components/PostsTwo.svelte b/package/examples/example-4/client/src/components/PostsTwo.svelte new file mode 100644 index 0000000..b594669 --- /dev/null +++ b/package/examples/example-4/client/src/components/PostsTwo.svelte @@ -0,0 +1,324 @@ + + +
+
+ + +
+ + + + {#if $postsArray.data} + {#each $postsArray.data as post, index (index)} +
+
+ {post.text} + +
+ + + + {#if post.createComment} +
+
createComment(event, index)} + > + + +
+ {#each post.comments as comment, commentIndex} +
+ {`${commentIndex}) ${comment}`} +
+ {/each} +
+ {/if} +
+ {/each} + {/if} +
+ + diff --git a/package/examples/example-4/client/src/functions/formatTimestamp.ts b/package/examples/example-4/client/src/functions/formatTimestamp.ts new file mode 100644 index 0000000..2bd4320 --- /dev/null +++ b/package/examples/example-4/client/src/functions/formatTimestamp.ts @@ -0,0 +1,13 @@ +const formatTimestamp = () => { + const now = new Date(); + let hours = now.getHours(); + const minutes = now.getMinutes(); + const ampm = hours >= 12 ? "PM" : "AM"; + hours = hours % 12; + hours = hours || 12; // the hour '0' should be '12' + const minutesStr = minutes < 10 ? "0" + minutes : minutes; + + return `${hours}:${minutesStr} ${ampm}`; +}; + +export default formatTimestamp; diff --git a/package/examples/example-4/client/src/link/Subscription.svelte b/package/examples/example-4/client/src/link/Subscription.svelte new file mode 100644 index 0000000..4c6a02d --- /dev/null +++ b/package/examples/example-4/client/src/link/Subscription.svelte @@ -0,0 +1,32 @@ + diff --git a/package/examples/example-4/client/src/link/SvelteQueryRewind.svelte b/package/examples/example-4/client/src/link/SvelteQueryRewind.svelte new file mode 100644 index 0000000..b1c83ca --- /dev/null +++ b/package/examples/example-4/client/src/link/SvelteQueryRewind.svelte @@ -0,0 +1,38 @@ + + +{#if timeTravel} + +{:else} + +{/if} diff --git a/package/examples/example-4/client/src/link/TimeTravel.svelte b/package/examples/example-4/client/src/link/TimeTravel.svelte new file mode 100644 index 0000000..e525ed5 --- /dev/null +++ b/package/examples/example-4/client/src/link/TimeTravel.svelte @@ -0,0 +1,29 @@ + diff --git a/package/examples/example-4/client/src/link/formatData.ts b/package/examples/example-4/client/src/link/formatData.ts new file mode 100644 index 0000000..8180d1b --- /dev/null +++ b/package/examples/example-4/client/src/link/formatData.ts @@ -0,0 +1,38 @@ +import { + QueryClient, + type QueryKey, + type QueryCacheNotifyEvent, +} from "@tanstack/svelte-query"; + +function formatData(event: QueryCacheNotifyEvent, queryClient: QueryClient) { + const eventType = event.type; + const queryKey: QueryKey = event.query.queryKey; + const queryHash = event.query.queryHash; + const timestamp = new Date(event.query.state.dataUpdatedAt); + + if (queryHash === '["test-data"]') return; + + if (eventType === "updated" && event.action?.type === "success") { + const queryData = queryClient.getQueryData(queryKey); + return { + eventType, + queryKey, + queryHash, + timestamp, + queryData, + }; + } + + if (eventType === "removed") { + return { + eventType, + queryKey, + queryHash, + timestamp, + }; + } + + return null; +} + +export default formatData; diff --git a/package/examples/example-4/client/src/link/types.d.ts b/package/examples/example-4/client/src/link/types.d.ts new file mode 100644 index 0000000..f3c8343 --- /dev/null +++ b/package/examples/example-4/client/src/link/types.d.ts @@ -0,0 +1,11 @@ +declare global { + interface WindowEventMap { + UpdateUI: CustomEvent; + TimeTravel: CustomEvent; + } +} + +export type QueryDisplay = { + queryKey: string; + queryData: any; +}; diff --git a/package/examples/example-4/client/src/main.ts b/package/examples/example-4/client/src/main.ts new file mode 100644 index 0000000..30260cf --- /dev/null +++ b/package/examples/example-4/client/src/main.ts @@ -0,0 +1,8 @@ +import App from "./App.svelte"; +import "./styles.css"; + +const app = new App({ + target: document.getElementById("app")!, +}); + +export default app; diff --git a/package/examples/example-4/client/src/styles.css b/package/examples/example-4/client/src/styles.css new file mode 100644 index 0000000..14f3187 --- /dev/null +++ b/package/examples/example-4/client/src/styles.css @@ -0,0 +1,192 @@ +* { + box-sizing: border-box; + margin: 0; + padding: 0; + border: none; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 1.1rem; +} + +html { + overflow: hidden; + font-family: Arial, sans-serif; +} + +.window { + height: 100vh; + width: 100%; + display: flex; + flex-direction: column; + justify-content: top; + align-items: center; + background-color: #f0f0f0; + overflow-y: auto; +} + +.nav-bar { + height: 6rem; + width: 100%; + background-color: #007bff; + display: flex; + justify-content: space-between; + align-items: center; + position: fixed; + box-shadow: 0 6px 8px 0 rgba(0, 0, 0, 0.2); +} + +.title { + font-weight: bold; + font-size: 2rem; + color: white; + margin-left: 2rem; +} + +.nav-options { + display: flex; +} + +button.nav-option { + font-weight: bold; + font-size: 1.5rem; + color: white; + margin-right: 2rem; + cursor: pointer; + background: none; + border: none; + padding: 0; + outline: none; + font-family: inherit; + text-align: left; +} + +button.nav-option:hover, +button.nav-option.active { + text-decoration: underline; + text-decoration-thickness: 0.22rem; + text-underline-offset: 0.3rem; +} + +.posts-container { + height: auto; + width: auto; + margin-top: 6rem; +} + +.create-post-container { + background-color: #e2e6ea; + display: flex; + align-items: center; + padding: 1rem; + margin-top: 1rem; + border-radius: 1rem; + box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2); +} + +.create-post-container-2 { + display: flex; + align-items: center; + padding: 1rem; +} + +.input { + height: 2rem; + width: 20rem; + padding: 0.25rem 0.5rem; + border: 1px solid #ccc; + border-radius: 4px; + outline: none; /* Removes the default focus outline */ + margin-right: 0.8rem; +} + +.input:focus { + border-color: #007bff; /* Blue border on focus */ + box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.25); /* Soft blue glow */ +} + +.input-2 { + height: 2rem; + width: 20rem; + padding: 0.25rem 0.5rem; + border: 1px solid #ccc; + border-radius: 4px; + outline: none; /* Removes the default focus outline */ + margin-right: 0.8rem; +} + +.input-2:focus { + border-color: #007bff; /* Blue border on focus */ + box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.25); /* Soft blue glow */ +} + +.button { + height: 2rem; + padding: 0 0.8rem; + background-color: #007bff; /* Blue background */ + border: 1px solid #007bff; + border-radius: 4px; + color: white; + cursor: pointer; + transition: + background-color 0.3s, + border-color 0.3s; +} + +.button:hover { + background-color: #0056b3; /* Slightly darker blue on hover */ + border-color: #0056b3; +} + +.post-container { + height: auto; + width: 100%; + background-color: blue; + display: flex; + flex-direction: column; + justify-content: center; + align-items: left; + margin-top: 1rem; + border-radius: 1rem; + box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.2); +} + +.post-text { + color: black; + padding: 1rem; +} + +.like-comment-container { + padding: 1rem; +} + +.left-margin { + margin-left: 1rem; +} + +.red { + background-color: lightcoral; + border: 1px solid lightcoral; +} + +.button.red:hover { + background-color: red; /* Color when hovered */ + border-color: red; +} + +.green { + background-color: #b0c4de; +} + +.blue { + background-color: #e2e6ea; +} + +.post-content { + display: flex; + justify-content: space-between; + align-items: center; +} + +.post-timestamp { + opacity: 0.7; + padding: 1rem; +} diff --git a/package/examples/example-4/client/src/types.d.ts b/package/examples/example-4/client/src/types.d.ts new file mode 100644 index 0000000..ea3002d --- /dev/null +++ b/package/examples/example-4/client/src/types.d.ts @@ -0,0 +1,28 @@ +declare module "*.svelte"; + +export type Post = { + text: string; + liked: boolean; + comments: string[]; + createComment: boolean; + timestamp: string; +}; + +export type CreateCommentParams = { + index: number; + comment: string; +}; + +declare global { + interface WindowEventMap { + UpdateUI: CustomEvent; + TimeTravel: CustomEvent; + } +} + +export type QueryDisplay = { + queryKey: string; + queryData: any; +}; + +export type CommentInputsType = { [index: number]: string }; diff --git a/package/examples/example-4/client/src/vite-env.d.ts b/package/examples/example-4/client/src/vite-env.d.ts new file mode 100644 index 0000000..4078e74 --- /dev/null +++ b/package/examples/example-4/client/src/vite-env.d.ts @@ -0,0 +1,2 @@ +/// +/// diff --git a/package/examples/example-4/client/svelte.config.js b/package/examples/example-4/client/svelte.config.js new file mode 100644 index 0000000..b0683fd --- /dev/null +++ b/package/examples/example-4/client/svelte.config.js @@ -0,0 +1,7 @@ +import { vitePreprocess } from '@sveltejs/vite-plugin-svelte' + +export default { + // Consult https://svelte.dev/docs#compile-time-svelte-preprocess + // for more information about preprocessors + preprocess: vitePreprocess(), +} diff --git a/package/examples/example-4/client/tsconfig.json b/package/examples/example-4/client/tsconfig.json new file mode 100644 index 0000000..5fb548f --- /dev/null +++ b/package/examples/example-4/client/tsconfig.json @@ -0,0 +1,20 @@ +{ + "extends": "@tsconfig/svelte/tsconfig.json", + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "module": "ESNext", + "resolveJsonModule": true, + /** + * Typecheck JS in `.svelte` and `.js` files by default. + * Disable checkJs if you'd like to use dynamic types in JS. + * Note that setting allowJs false does not prevent the use + * of JS in `.svelte` files. + */ + "allowJs": true, + "checkJs": true, + "isolatedModules": true + }, + "include": ["src/**/*.ts", "src/**/*.js", "src/**/*.svelte"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/package/examples/example-4/client/tsconfig.node.json b/package/examples/example-4/client/tsconfig.node.json new file mode 100644 index 0000000..494bfe0 --- /dev/null +++ b/package/examples/example-4/client/tsconfig.node.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler" + }, + "include": ["vite.config.ts"] +} diff --git a/package/examples/example-4/client/vite.config.ts b/package/examples/example-4/client/vite.config.ts new file mode 100644 index 0000000..d701969 --- /dev/null +++ b/package/examples/example-4/client/vite.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import { svelte } from '@sveltejs/vite-plugin-svelte' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [svelte()], +}) diff --git a/package/examples/example-4/package-lock.json b/package/examples/example-4/package-lock.json new file mode 100644 index 0000000..3d12b43 --- /dev/null +++ b/package/examples/example-4/package-lock.json @@ -0,0 +1,1317 @@ +{ + "name": "example-4", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "example-4", + "version": "1.0.0", + "license": "ISC", + "devDependencies": { + "npm-run-all": "^4.1.5" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/call-bind": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.5", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.2", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.12", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + }, + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dev": true, + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-array-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", + "dev": true + }, + "node_modules/string.prototype.padend": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.5.tgz", + "integrity": "sha512-DOB27b/2UTTD+4myKUFh+/fXWcu/UDyASIXfg+7VzoCNNGOfWvoyU/x5pvVHr++ztyt/oSYI1BcWBBG/hmlNjA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.4", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + } + } +} diff --git a/package/examples/example-4/package.json b/package/examples/example-4/package.json new file mode 100644 index 0000000..9ae04be --- /dev/null +++ b/package/examples/example-4/package.json @@ -0,0 +1,17 @@ +{ + "name": "example-4", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "example-4-client": "cd client && npm run dev", + "example-4-server": "cd server && npm run server", + "example-4": "npm-run-all --parallel example-4-server example-4-client" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "npm-run-all": "^4.1.5" + } +} diff --git a/package/examples/example-4/server/.gitignore b/package/examples/example-4/server/.gitignore new file mode 100644 index 0000000..c2658d7 --- /dev/null +++ b/package/examples/example-4/server/.gitignore @@ -0,0 +1 @@ +node_modules/ diff --git a/package/examples/example-4/server/controllers/postsController.ts b/package/examples/example-4/server/controllers/postsController.ts new file mode 100644 index 0000000..6ac11a3 --- /dev/null +++ b/package/examples/example-4/server/controllers/postsController.ts @@ -0,0 +1,164 @@ +import fs from 'fs/promises'; +import path from 'path'; +import { Request, Response, NextFunction } from 'express'; + +type PostsController = { + fetchData: (req: Request, res: Response, next: NextFunction) => Promise; + createPost: ( + req: Request, + res: Response, + next: NextFunction + ) => Promise; + likePost: (req: Request, res: Response, next: NextFunction) => Promise; + deletePost: ( + req: Request, + res: Response, + next: NextFunction + ) => Promise; + createComment: ( + req: Request, + res: Response, + next: NextFunction + ) => Promise; + openComment: ( + req: Request, + res: Response, + next: NextFunction + ) => Promise; +}; + +const postsController: PostsController = { + fetchData: async (req, res, next) => { + try { + const database = req.query.database; + + const data = await fs.readFile( + path.join(__dirname, `../../models/${database}.json`), + 'utf8' + ); + const db = JSON.parse(data); + + res.locals.fetchData = db.posts; + + next(); + } catch (err) { + console.error('Error reading from database.json:', err); + res.status(500).send('Error reading data'); + } + }, + + createPost: async (req, res, next) => { + try { + const { newPost, database } = req.body; + + const dbPath = path.join(__dirname, `../../models/${database}.json`); + const data = await fs.readFile(dbPath, 'utf8'); + const db = JSON.parse(data); + + db.posts.unshift(newPost); + + await fs.writeFile(dbPath, JSON.stringify(db, null, 2), 'utf8'); + + res.locals.createPost = db.posts; + + next(); + } catch (err) { + console.error('Error updating database.json:', err); + res.status(500).send('Error saving data'); + } + }, + + likePost: async (req, res, next) => { + try { + const { database, index } = req.body; + const postIndex = parseInt(index, 10); + + const dbPath = path.join(__dirname, `../../models/${database}.json`); + const data = await fs.readFile(dbPath, 'utf8'); + const db = JSON.parse(data); + + db.posts[postIndex].liked = !db.posts[postIndex].liked; + + await fs.writeFile(dbPath, JSON.stringify(db, null, 2), 'utf8'); + + res.locals.likePost = db.posts; + + next(); + } catch (err) { + console.error('Error updating database.json:', err); + res.status(500).send('Error saving data'); + } + }, + + deletePost: async (req, res, next) => { + try { + const { database, index } = req.body; + const postIndex = parseInt(index, 10); + + const dbPath = path.join(__dirname, `../../models/${database}.json`); + const data = await fs.readFile(dbPath, 'utf8'); + const db = JSON.parse(data); + + const updatedPostsArray = db.posts.filter((_, curIndex) => { + return curIndex !== postIndex; + }); + + db.posts = updatedPostsArray; + + await fs.writeFile(dbPath, JSON.stringify(db, null, 2), 'utf8'); + + res.locals.deletePost = db.posts; + + next(); + } catch (err) { + console.error('Error updating database.json:', err); + res.status(500).send('Error saving data'); + } + }, + + createComment: async (req, res, next) => { + try { + const { database, index, comment } = req.body; + const postIndex = parseInt(index, 10); + + const dbPath = path.join(__dirname, `../../models/${database}.json`); + const data = await fs.readFile(dbPath, 'utf8'); + const db = JSON.parse(data); + + db.posts[postIndex].comments.push(comment); + + await fs.writeFile(dbPath, JSON.stringify(db, null, 2), 'utf8'); + + res.locals.createComment = db.posts; + + next(); + } catch (err) { + console.error('Error updating database.json:', err); + res.status(500).send('Error saving data'); + } + }, + + openComment: async (req, res, next) => { + try { + const { database, index } = req.body; + const postIndex = parseInt(index, 10); + + const dbPath = path.join(__dirname, `../../models/${database}.json`); + const data = await fs.readFile(dbPath, 'utf8'); + const db = JSON.parse(data); + + db.posts[postIndex].createComment = !db.posts[postIndex].createComment; + + await fs.writeFile(dbPath, JSON.stringify(db, null, 2), 'utf8'); + + res.locals.openComment = db.posts; + + next(); + } catch (err) { + console.error('Error updating database.json:', err); + res.status(500).send('Error saving data'); + } + }, +}; + +export default postsController; diff --git a/package/examples/example-4/server/models/postsOne copy.json b/package/examples/example-4/server/models/postsOne copy.json new file mode 100644 index 0000000..a55fb78 --- /dev/null +++ b/package/examples/example-4/server/models/postsOne copy.json @@ -0,0 +1,30 @@ +{ + "posts": [ + { + "id": 1, + "text": "Feed 1 - First Post", + "liked": false, + "comments": [ + "First comment on first post", + "Second comment on first post" + ], + "createComment": false + }, + { + "id": 2, + "text": "Feed 1 - Second Post", + "liked": false, + "comments": [ + "Only comment on second post" + ], + "createComment": false + }, + { + "id": 3, + "text": "Feed 1 - Third Post", + "liked": false, + "comments": [], + "createComment": false + } + ] +} \ No newline at end of file diff --git a/package/examples/example-4/server/models/postsOne.json b/package/examples/example-4/server/models/postsOne.json new file mode 100644 index 0000000..21a1780 --- /dev/null +++ b/package/examples/example-4/server/models/postsOne.json @@ -0,0 +1,11 @@ +{ + "posts": [ + { + "text": "Feed 1 – Post 1", + "liked": false, + "comments": [], + "createComment": false, + "timestamp": "7:34 PM" + } + ] +} \ No newline at end of file diff --git a/package/examples/example-4/server/models/postsThree.json b/package/examples/example-4/server/models/postsThree.json new file mode 100644 index 0000000..80e7023 --- /dev/null +++ b/package/examples/example-4/server/models/postsThree.json @@ -0,0 +1,11 @@ +{ + "posts": [ + { + "text": "Feed 3 – Post 1", + "liked": false, + "comments": [], + "createComment": false, + "timestamp": "11:08 PM" + } + ] +} \ No newline at end of file diff --git a/package/examples/example-4/server/models/postsTwo.json b/package/examples/example-4/server/models/postsTwo.json new file mode 100644 index 0000000..5150ccf --- /dev/null +++ b/package/examples/example-4/server/models/postsTwo.json @@ -0,0 +1,11 @@ +{ + "posts": [ + { + "text": "Feed 2 – Post 1", + "liked": false, + "comments": [], + "createComment": false, + "timestamp": "11:08 PM" + } + ] +} \ No newline at end of file diff --git a/package/examples/example-4/server/package-lock.json b/package/examples/example-4/server/package-lock.json new file mode 100644 index 0000000..a36f684 --- /dev/null +++ b/package/examples/example-4/server/package-lock.json @@ -0,0 +1,823 @@ +{ + "name": "example-4-server", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "example-4-server", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@types/express": "^4.17.21", + "cors": "^2.8.5", + "express": "^4.18.2", + "fs": "^0.0.1-security", + "path": "^0.12.7" + }, + "devDependencies": { + "typescript": "^5.3.3" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.41", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.41.tgz", + "integrity": "sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==" + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" + }, + "node_modules/@types/node": { + "version": "20.10.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.0.tgz", + "integrity": "sha512-D0WfRmU9TQ8I9PFx9Yc+EBHw+vSpIub4IDvQivcp26PtPrdMGAq5SDcpXEo/epqa/DXotVpekHiLNTg3iaKXBQ==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/qs": { + "version": "6.9.10", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.10.tgz", + "integrity": "sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw==" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" + }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", + "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", + "dependencies": { + "@types/http-errors": "*", + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "dependencies": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs": { + "version": "0.0.1-security", + "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", + "integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==" + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "dependencies": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path": { + "version": "0.12.7", + "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", + "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==", + "dependencies": { + "process": "^0.11.1", + "util": "^0.10.3" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typescript": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dependencies": { + "inherits": "2.0.3" + } + }, + "node_modules/util/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + } + } +} diff --git a/package/examples/example-4/server/package.json b/package/examples/example-4/server/package.json new file mode 100644 index 0000000..9f659a0 --- /dev/null +++ b/package/examples/example-4/server/package.json @@ -0,0 +1,24 @@ +{ + "name": "example-4-server", + "version": "1.0.0", + "description": "", + "main": "dist/server.js", + "scripts": { + "build": "tsc", + "start": "node dist/server.js", + "server": "tsc && node dist/server.js" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "@types/express": "^4.17.21", + "cors": "^2.8.5", + "express": "^4.18.2", + "fs": "^0.0.1-security", + "path": "^0.12.7" + }, + "devDependencies": { + "typescript": "^5.3.3" + } +} diff --git a/package/examples/example-4/server/routes.ts b/package/examples/example-4/server/routes.ts new file mode 100644 index 0000000..305f114 --- /dev/null +++ b/package/examples/example-4/server/routes.ts @@ -0,0 +1,42 @@ +import express from 'express'; +import fs from 'fs/promises'; +import path from 'path'; +import postsController from './controllers/postsController'; + +const router = express.Router(); + +// fetching starting data +router.get('/fetch-data', postsController.fetchData, async (req, res) => { + res.status(200).json(res.locals.fetchData); +}); + +// create post +router.post('/create-post', postsController.createPost, async (req, res) => { + res.status(201).json(res.locals.createPost); +}); + +// like post +router.post('/like-post', postsController.likePost, async (req, res) => { + res.status(201).json(res.locals.likePost); +}); + +// delete post +router.post('/delete-post', postsController.deletePost, async (req, res) => { + res.status(201).json(res.locals.deletePost); +}); + +// create commment +router.post( + '/create-comment', + postsController.createComment, + async (req, res) => { + res.status(201).json(res.locals.createComment); + } +); + +// open comment +router.post('/open-comment', postsController.openComment, async (req, res) => { + res.status(201).json(res.locals.openComment); +}); + +export default router; diff --git a/package/examples/example-4/server/server.ts b/package/examples/example-4/server/server.ts new file mode 100644 index 0000000..19932c9 --- /dev/null +++ b/package/examples/example-4/server/server.ts @@ -0,0 +1,21 @@ +import express from 'express'; +import cors from 'cors'; +import router from './routes'; + +const app = express(); +const PORT = 3000; + +app.use(cors()); +app.use(express.json()); +app.use(express.urlencoded({ extended: true })); +app.use(router); + +app.use('*', (req, res) => { + res.status(404).send('Not Found'); +}); + +app.listen(PORT, () => { + console.log(`Server is listening on port ${PORT}`); +}); + +export default express; diff --git a/package/examples/example-4/server/tsconfig.json b/package/examples/example-4/server/tsconfig.json new file mode 100644 index 0000000..a6dd7f9 --- /dev/null +++ b/package/examples/example-4/server/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "outDir": "./dist", // Specifies the output directory for compiled files + "rootDir": "./", // Specifies the root directory of input files + "module": "CommonJS", + "target": "ES2019", + "moduleResolution": "Node", + "esModuleInterop": true + // Add any other compiler options as needed + }, + "include": ["./**/*.ts"], // Include all TypeScript files in the project + "exclude": ["node_modules", "dist"] // Exclude node_modules and dist from the compilation +} diff --git a/test-extension/.gitignore b/test-extension/.gitignore new file mode 100644 index 0000000..b973e05 --- /dev/null +++ b/test-extension/.gitignore @@ -0,0 +1,3 @@ +node_modules/ +dist/ +node_modules/ \ No newline at end of file diff --git a/test-extension/README.md b/test-extension/README.md new file mode 100644 index 0000000..e69de29 diff --git a/test-extension/background.ts b/test-extension/background.ts new file mode 100644 index 0000000..dcdb5dc --- /dev/null +++ b/test-extension/background.ts @@ -0,0 +1,100 @@ +console.log('BACKGROUND.TS: Loaded'); + +let devToolsPort: chrome.runtime.Port | null = null; +let tabId: number | undefined = undefined; +let backgroundMessageQueue: any = []; + +// listen for connections from the DevTools panel +chrome.runtime.onConnect.addListener(handleDevToolsConnection); + +function handleDevToolsConnection(port: chrome.runtime.Port) { + if (port.name === 'devtools-panel') { + console.log('BACKGROUND.TS: DevTool Connected'); + devToolsPort = port; + + backgroundMessageQueue.forEach((curMsg: any) => { + if (devToolsPort) { + devToolsPort.postMessage(curMsg); + } + }); + backgroundMessageQueue = []; + + devToolsPort.onMessage.addListener(message => { + if (message.type === 'time-travel') { + console.log('BACKGROUND.TS: TimeTravel Setting Changed'); + messageToContent(tabId, message); + } + + if (message.type === 'update-ui') { + console.log('BACKGROUND.TS: Updated UI'); + messageToContent(tabId, message); + } + }); + + devToolsPort.onDisconnect.addListener(() => { + console.log('BACKGROUND.TS: DevTool Disconnected'); + devToolsPort = null; + }); + } +} + +// listen for messages from content.ts +chrome.runtime.onMessage.addListener(handleMessageFromContent); + +function handleMessageFromContent( + message: any, + sender: chrome.runtime.MessageSender +) { + // handle connection messages from the app + if (message.type === 'app-connected') { + console.log('RECIEVED CONNECTION MESSAGE', message); + + // if initial tabId set it and confirm connection with content.ts + if (tabId === undefined || tabId === sender.tab?.id) { + tabId = sender.tab?.id; + console.log(`BACKGROUND.TS: Content.ts Connected at TabId ${tabId}`); + messageToContent(tabId, { type: 'background-connected' }); + } + // if new tabId refresh the page so data is reset + else if (tabId !== sender.tab?.id && typeof sender.tab?.id === 'number') { + tabId = sender.tab?.id; + console.log(`BACKGROUND.TS: New TabId Detected: ${tabId}`); + chrome.tabs.reload(tabId, {}, () => { + if (chrome.runtime.lastError) { + console.error( + `Error Refreshing Tab: ${chrome.runtime.lastError.message}` + ); + } + }); + } + } else if (devToolsPort && tabId === sender.tab?.id) { + devToolsPort.postMessage(message); + } else if (!devToolsPort && tabId === sender.tab?.id) { + backgroundMessageQueue.push(message); + } +} + +// function to send messages to content.js – retries 3 times after first failed attempt +function messageToContent(tabId: any, message: any, retryCount: number = 0) { + chrome.tabs.sendMessage(tabId, message).catch(err => { + if (retryCount < 3) { + console.error( + `BACKGROUND.TS: Retry ${ + retryCount + 1 + }: Error sending connection message to content.ts`, + err, + message + ); + setTimeout( + () => messageToContent(tabId, message, retryCount + 1), + (retryCount + 1) * 2000 + ); + } else { + console.error( + 'BACKGROUND.TS: Max retries reached. Error sending message to content.ts:', + err, + message + ); + } + }); +} diff --git a/test-extension/content_scripts/content.ts b/test-extension/content_scripts/content.ts new file mode 100644 index 0000000..d749855 --- /dev/null +++ b/test-extension/content_scripts/content.ts @@ -0,0 +1,76 @@ +console.log('CONTENT.TS: Loaded'); + +let appConnected = false; +let backgroundConnected = false; +let contentMessageQueue: any = []; + +// handle messages from npm package +window.addEventListener('message', handleMessage, false); + +function handleMessage(event: MessageEvent) { + if (event.source === window && event.data?.type === 'app-connected') { + console.log('CONTENT.TS: App Connected'); + appConnected = true; + messageToBackground(event.data); + } + + if (event.source === window && event.data?.type === 'event') { + contentMessageQueue.push(event.data); + if (backgroundConnected) { + messageToBackground(event.data); + } + } +} + +const messageToBackground = (message: any, retryCount = 0) => { + chrome.runtime.sendMessage(message).catch(err => { + if (retryCount < 3) { + console.error( + `CONTENT.TS: Retry ${ + retryCount + 1 + }: Error sending message to background.ts:`, + err, + message + ); + setTimeout( + () => messageToBackground(message, retryCount + 1), + (retryCount + 1) * 2000 + ); + } else { + console.error( + 'CONTENT.TS: Max retries reached. Error sending message to background.ts:', + err, + message + ); + } + }); +}; + +// listen for messages from background.ts +chrome.runtime.onMessage.addListener(handleMessageFromBackground); + +function handleMessageFromBackground( + message: any, + sender: any, + sendResponse: any +) { + if (message.type === 'background-connected') { + console.log('CONTENT.TS: Background.ts Connected'); + backgroundConnected = true; + contentMessageQueue.forEach((message: any) => { + messageToBackground(message); + }); + } + + if (message.type === 'time-travel') { + console.log('CONTENT.TS: TimeTravel Setting Changed'); + const event = new CustomEvent('time-travel', { detail: message.payload }); + window.dispatchEvent(event); + } + + if (message.type === 'update-ui') { + console.log('CONTENT.TS: Updated UI'); + const event = new CustomEvent('update-ui', { detail: message.payload }); + window.dispatchEvent(event); + } +} diff --git a/test-extension/content_scripts/inject.ts b/test-extension/content_scripts/inject.ts new file mode 100644 index 0000000..e69de29 diff --git a/test-extension/devtools/devtools.html b/test-extension/devtools/devtools.html new file mode 100644 index 0000000..15c2a33 --- /dev/null +++ b/test-extension/devtools/devtools.html @@ -0,0 +1,13 @@ + + + + + My DevTools Panel + + + +
Loading...
+ + + + diff --git a/test-extension/devtools/devtools.ts b/test-extension/devtools/devtools.ts new file mode 100644 index 0000000..7e2f2ba --- /dev/null +++ b/test-extension/devtools/devtools.ts @@ -0,0 +1,8 @@ +chrome.devtools.panels.create( + 'React Query Rewind', // Title for the panel tab + 'images/icon.png', // Icon for the panel tab + 'panel.html', // HTML file for the panel content + panel => { + // Code to execute on panel creation + } +); diff --git a/test-extension/images/icon.png b/test-extension/images/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..eecc431c4f591dde4f52735782c024020095491c GIT binary patch literal 338377 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 literal 0 HcmV?d00001 diff --git a/test-extension/manifest.json b/test-extension/manifest.json new file mode 100644 index 0000000..1c7e4a4 --- /dev/null +++ b/test-extension/manifest.json @@ -0,0 +1,29 @@ +{ + "manifest_version": 3, + "name": "React Query Rewind", + "description": "State Management DevTool for React Query", + "version": "1.0", + "permissions": ["activeTab", "storage", "scripting"], + "host_permissions": [""], + "background": { + "service_worker": "background.js" + }, + "content_scripts": [ + { + "matches": [""], + "js": ["content.js", "inject.js"] + } + ], + "devtools_page": "devtools.html", + "icons": { + "16": "images/icon.png", + "48": "images/icon.png", + "128": "images/icon.png" + }, + "web_accessible_resources": [ + { + "resources": ["inject.js"], + "matches": [""] + } + ] +} diff --git a/test-extension/package-lock.json b/test-extension/package-lock.json new file mode 100644 index 0000000..7917d63 --- /dev/null +++ b/test-extension/package-lock.json @@ -0,0 +1,6576 @@ +{ + "name": "test-extension", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "test-extension", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@emotion/react": "^11.11.3", + "@emotion/styled": "^11.11.0", + "@mui/icons-material": "^5.15.1", + "@mui/material": "^5.15.1", + "@mui/styled-engine-sc": "^6.0.0-alpha.9", + "@mui/system": "^5.15.1", + "jsondiffpatch": "^0.6.0", + "react": "^18.2.0", + "react-d3-tree": "^3.6.1", + "react-dom": "^18.2.0", + "react-json-tree": "^0.18.0" + }, + "devDependencies": { + "@babel/core": "^7.23.6", + "@babel/preset-env": "^7.23.6", + "@babel/preset-react": "^7.23.3", + "@babel/preset-typescript": "^7.23.3", + "@types/chrome": "^0.0.254", + "@types/react": "^18.2.45", + "@types/react-dom": "^18.2.18", + "babel-loader": "^9.1.3", + "copy-webpack-plugin": "^11.0.0", + "css-loader": "^6.8.1", + "html-webpack-plugin": "^5.6.0", + "rimraf": "^5.0.5", + "style-loader": "^3.3.3", + "ts-loader": "^9.5.1", + "webpack": "^5.89.0", + "webpack-cli": "^5.1.4" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "dependencies": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/code-frame/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/code-frame/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/code-frame/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.6.tgz", + "integrity": "sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.6", + "@babel/parser": "^7.23.6", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.6", + "@babel/types": "^7.23.6", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.6", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.6.tgz", + "integrity": "sha512-cBXU1vZni/CpGF29iTu4YRbOZt3Wat6zCoMDxRF1MayiEc4URxOj31tT65HUM0CRpMowA3HCJaAOVOUnMf96cw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.4.tgz", + "integrity": "sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", + "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.6.tgz", + "integrity": "sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.6", + "@babel/types": "^7.23.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", + "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", + "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", + "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.3.tgz", + "integrity": "sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", + "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", + "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", + "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", + "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", + "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.4.tgz", + "integrity": "sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", + "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", + "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", + "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", + "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", + "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.5.tgz", + "integrity": "sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", + "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", + "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", + "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", + "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", + "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", + "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", + "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz", + "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", + "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", + "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", + "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", + "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", + "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", + "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", + "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz", + "integrity": "sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", + "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", + "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", + "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", + "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz", + "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.23.3", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", + "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", + "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", + "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", + "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", + "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", + "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", + "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz", + "integrity": "sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz", + "integrity": "sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.23.3", + "@babel/types": "^7.23.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", + "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", + "dev": true, + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz", + "integrity": "sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", + "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", + "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", + "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", + "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", + "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", + "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", + "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.6.tgz", + "integrity": "sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.23.6", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-typescript": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", + "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", + "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", + "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", + "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.6.tgz", + "integrity": "sha512-2XPn/BqKkZCpzYhUUNZ1ssXw7DcXfKQEjv/uXZUXgaebCMYmkEsfZ2yY+vv+xtXv50WmL5SGhyB6/xsWxIvvOQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.3", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.23.3", + "@babel/plugin-syntax-import-attributes": "^7.23.3", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.23.3", + "@babel/plugin-transform-async-generator-functions": "^7.23.4", + "@babel/plugin-transform-async-to-generator": "^7.23.3", + "@babel/plugin-transform-block-scoped-functions": "^7.23.3", + "@babel/plugin-transform-block-scoping": "^7.23.4", + "@babel/plugin-transform-class-properties": "^7.23.3", + "@babel/plugin-transform-class-static-block": "^7.23.4", + "@babel/plugin-transform-classes": "^7.23.5", + "@babel/plugin-transform-computed-properties": "^7.23.3", + "@babel/plugin-transform-destructuring": "^7.23.3", + "@babel/plugin-transform-dotall-regex": "^7.23.3", + "@babel/plugin-transform-duplicate-keys": "^7.23.3", + "@babel/plugin-transform-dynamic-import": "^7.23.4", + "@babel/plugin-transform-exponentiation-operator": "^7.23.3", + "@babel/plugin-transform-export-namespace-from": "^7.23.4", + "@babel/plugin-transform-for-of": "^7.23.6", + "@babel/plugin-transform-function-name": "^7.23.3", + "@babel/plugin-transform-json-strings": "^7.23.4", + "@babel/plugin-transform-literals": "^7.23.3", + "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", + "@babel/plugin-transform-member-expression-literals": "^7.23.3", + "@babel/plugin-transform-modules-amd": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-modules-systemjs": "^7.23.3", + "@babel/plugin-transform-modules-umd": "^7.23.3", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.23.3", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", + "@babel/plugin-transform-numeric-separator": "^7.23.4", + "@babel/plugin-transform-object-rest-spread": "^7.23.4", + "@babel/plugin-transform-object-super": "^7.23.3", + "@babel/plugin-transform-optional-catch-binding": "^7.23.4", + "@babel/plugin-transform-optional-chaining": "^7.23.4", + "@babel/plugin-transform-parameters": "^7.23.3", + "@babel/plugin-transform-private-methods": "^7.23.3", + "@babel/plugin-transform-private-property-in-object": "^7.23.4", + "@babel/plugin-transform-property-literals": "^7.23.3", + "@babel/plugin-transform-regenerator": "^7.23.3", + "@babel/plugin-transform-reserved-words": "^7.23.3", + "@babel/plugin-transform-shorthand-properties": "^7.23.3", + "@babel/plugin-transform-spread": "^7.23.3", + "@babel/plugin-transform-sticky-regex": "^7.23.3", + "@babel/plugin-transform-template-literals": "^7.23.3", + "@babel/plugin-transform-typeof-symbol": "^7.23.3", + "@babel/plugin-transform-unicode-escapes": "^7.23.3", + "@babel/plugin-transform-unicode-property-regex": "^7.23.3", + "@babel/plugin-transform-unicode-regex": "^7.23.3", + "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.6", + "babel-plugin-polyfill-corejs3": "^0.8.5", + "babel-plugin-polyfill-regenerator": "^0.5.3", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.23.3.tgz", + "integrity": "sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-transform-react-display-name": "^7.23.3", + "@babel/plugin-transform-react-jsx": "^7.22.15", + "@babel/plugin-transform-react-jsx-development": "^7.22.5", + "@babel/plugin-transform-react-pure-annotations": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz", + "integrity": "sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-syntax-jsx": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-typescript": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, + "node_modules/@babel/runtime": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.6.tgz", + "integrity": "sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.6.tgz", + "integrity": "sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.6", + "@babel/types": "^7.23.6", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", + "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", + "dependencies": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bkrem/react-transition-group": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@bkrem/react-transition-group/-/react-transition-group-1.3.3.tgz", + "integrity": "sha512-nUZaumHu/MMolELv+MhEEQzQtKsnfpbKBHtam/NK53tGICwU19tuffEXW8BLhm9HhQfN1H3+C0bsJv8Z7vzwEA==", + "dependencies": { + "chain-function": "^1.0.0", + "dom-helpers": "^3.3.1", + "loose-envify": "^1.3.1", + "prop-types": "^15.5.6", + "react-lifecycles-compat": "^3.0.4", + "warning": "^3.0.0" + }, + "peerDependencies": { + "react": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@bkrem/react-transition-group/node_modules/dom-helpers": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz", + "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==", + "dependencies": { + "@babel/runtime": "^7.1.2" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@emotion/babel-plugin": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", + "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/serialize": "^1.1.2", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@emotion/cache": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", + "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", + "dependencies": { + "@emotion/memoize": "^0.8.1", + "@emotion/sheet": "^1.2.2", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/hash": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", + "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" + }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz", + "integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==", + "dependencies": { + "@emotion/memoize": "^0.8.1" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" + }, + "node_modules/@emotion/react": { + "version": "11.11.3", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.3.tgz", + "integrity": "sha512-Cnn0kuq4DoONOMcnoVsTOR8E+AdnKFf//6kUWc4LCdnxj31pZWn7rIULd6Y7/Js1PiPHzn7SKCM9vB/jBni8eA==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/cache": "^11.11.0", + "@emotion/serialize": "^1.1.3", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/serialize": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.3.tgz", + "integrity": "sha512-iD4D6QVZFDhcbH0RAG1uVu1CwVLMWUkCvAqqlewO/rxf8+87yIBAlt4+AxMiiKPLs5hFc0owNk/sLLAOROw3cA==", + "dependencies": { + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/unitless": "^0.8.1", + "@emotion/utils": "^1.2.1", + "csstype": "^3.0.2" + } + }, + "node_modules/@emotion/sheet": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", + "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" + }, + "node_modules/@emotion/styled": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.0.tgz", + "integrity": "sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/is-prop-valid": "^1.2.1", + "@emotion/serialize": "^1.1.2", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/unitless": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", + "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" + }, + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", + "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/utils": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", + "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==" + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", + "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" + }, + "node_modules/@floating-ui/core": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.2.tgz", + "integrity": "sha512-Ii3MrfY/GAIN3OhXNzpCKaLxHQfJF9qvwq/kEJYdqDxeIHa01K8sldugal6TmeeXl+WMvhv9cnVzUTaFFJF09A==", + "dependencies": { + "@floating-ui/utils": "^0.1.3" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz", + "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==", + "dependencies": { + "@floating-ui/core": "^1.4.2", + "@floating-ui/utils": "^0.1.3" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.4.tgz", + "integrity": "sha512-CF8k2rgKeh/49UrnIBs4BdxPUV6vize/Db1d/YbCLyp9GiVZ0BEwf5AiDSxJRCr6yOkGqTFHtmrULxkEfYZ7dQ==", + "dependencies": { + "@floating-ui/dom": "^1.5.1" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz", + "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==" + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@mui/base": { + "version": "5.0.0-beta.28", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.28.tgz", + "integrity": "sha512-KIoSc5sUFceeCaZTq5MQBapFzhHqMo4kj+4azWaCAjorduhcRQtN+BCgVHmo+gvEjix74bUfxwTqGifnu2fNTg==", + "dependencies": { + "@babel/runtime": "^7.23.5", + "@floating-ui/react-dom": "^2.0.4", + "@mui/types": "^7.2.11", + "@mui/utils": "^5.15.1", + "@popperjs/core": "^2.11.8", + "clsx": "^2.0.0", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/core-downloads-tracker": { + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.15.1.tgz", + "integrity": "sha512-y/nUEsWHyBzaKYp9zLtqJKrLod/zMNEWpMj488FuQY9QTmqBiyUhI2uh7PVaLqLewXRtdmG6JV0b6T5exyuYRw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + } + }, + "node_modules/@mui/icons-material": { + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.15.1.tgz", + "integrity": "sha512-VPJdBSyap6uOxCb5BLbWbkvd6aeJCp1pQZm8DcZBITCH0NOSv8Mz9c8Zvo8xr4Od7+xyWHUAgvRSL4047pL2WQ==", + "dependencies": { + "@babel/runtime": "^7.23.5" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@mui/material": "^5.0.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/material": { + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.15.1.tgz", + "integrity": "sha512-WA5DVyvacxDakVyAhNqu/rRT28ppuuUFFw1bLpmRzrCJ4uw/zLTATcd4WB3YbB+7MdZNEGG/SJNWTDLEIyn3xQ==", + "dependencies": { + "@babel/runtime": "^7.23.5", + "@mui/base": "5.0.0-beta.28", + "@mui/core-downloads-tracker": "^5.15.1", + "@mui/system": "^5.15.1", + "@mui/types": "^7.2.11", + "@mui/utils": "^5.15.1", + "@types/react-transition-group": "^4.4.10", + "clsx": "^2.0.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1", + "react-is": "^18.2.0", + "react-transition-group": "^4.4.5" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/private-theming": { + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.15.1.tgz", + "integrity": "sha512-wTbzuy5KjSvCPE9UVJktWHJ0b/tD5biavY9wvF+OpYDLPpdXK52vc1hTDxSbdkHIFMkJExzrwO9GvpVAHZBnFQ==", + "dependencies": { + "@babel/runtime": "^7.23.5", + "@mui/utils": "^5.15.1", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/styled-engine": { + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.15.1.tgz", + "integrity": "sha512-7WDZTJLqGexWDjqE9oAgjU8ak6hEtUw2yQU7SIYID5kLVO2Nj/Wi/KicbLsXnTsJNvSqePIlUIWTBSXwWJCPZw==", + "dependencies": { + "@babel/runtime": "^7.23.5", + "@emotion/cache": "^11.11.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + } + }, + "node_modules/@mui/styled-engine-sc": { + "version": "6.0.0-alpha.9", + "resolved": "https://registry.npmjs.org/@mui/styled-engine-sc/-/styled-engine-sc-6.0.0-alpha.9.tgz", + "integrity": "sha512-0Fr2ziMcRrWk+hZlbWzYS1vwLqet0URyvQ7KN3tngcN9Hcq5PnKr2509Ssq/LOBXRm6TVvlcf8qjKBMpJr4hfw==", + "dependencies": { + "@babel/runtime": "^7.23.5", + "csstype": "^3.1.2", + "hoist-non-react-statics": "^3.3.2", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "styled-components": "^6.0.0" + } + }, + "node_modules/@mui/system": { + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.15.1.tgz", + "integrity": "sha512-LAnP0ls69rqW9eBgI29phIx/lppv+WDGI7b3EJN7VZIqw0RezA0GD7NRpV12BgEYJABEii6z5Q9B5tg7dsX0Iw==", + "dependencies": { + "@babel/runtime": "^7.23.5", + "@mui/private-theming": "^5.15.1", + "@mui/styled-engine": "^5.15.1", + "@mui/types": "^7.2.11", + "@mui/utils": "^5.15.1", + "clsx": "^2.0.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/types": { + "version": "7.2.11", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.11.tgz", + "integrity": "sha512-KWe/QTEsFFlFSH+qRYf3zoFEj3z67s+qAuSnMMg+gFwbxG7P96Hm6g300inQL1Wy///gSRb8juX7Wafvp93m3w==", + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils": { + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.15.1.tgz", + "integrity": "sha512-V1/d0E3Bju5YdB59HJf2G0tnHrFEvWLN+f8hAXp9+JSNy/LC2zKyqUfPPahflR6qsI681P8G9r4mEZte/SrrYA==", + "dependencies": { + "@babel/runtime": "^7.23.5", + "@types/prop-types": "^15.7.11", + "prop-types": "^15.8.1", + "react-is": "^18.2.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@types/base16": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/base16/-/base16-1.0.5.tgz", + "integrity": "sha512-OzOWrTluG9cwqidEzC/Q6FAmIPcnZfm8BFRlIx0+UIUqnuAmi5OS88O0RpT3Yz6qdmqObvUhasrbNsCofE4W9A==" + }, + "node_modules/@types/chrome": { + "version": "0.0.254", + "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.254.tgz", + "integrity": "sha512-svkOGKwA+6ZZuk9xtrYun8MYpNY/9hD17rgZ19v3KunhsK1ZOKaMESw12/1AXLh1u3UPA8jQIRi2370DXv9wgw==", + "dev": true, + "dependencies": { + "@types/filesystem": "*", + "@types/har-format": "*" + } + }, + "node_modules/@types/d3-hierarchy": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-1.1.11.tgz", + "integrity": "sha512-lnQiU7jV+Gyk9oQYk0GGYccuexmQPTp08E0+4BidgFdiJivjEvf+esPSdZqCZ2C7UwTWejWpqetVaU8A+eX3FA==" + }, + "node_modules/@types/diff-match-patch": { + "version": "1.0.36", + "resolved": "https://registry.npmjs.org/@types/diff-match-patch/-/diff-match-patch-1.0.36.tgz", + "integrity": "sha512-xFdR6tkm0MWvBfO8xXCSsinYxHcqkQUlcHeSpMC2ukzOb6lwQAfDmW+Qt0AvlGd8HpsS28qKsB+oPeJn9I39jg==" + }, + "node_modules/@types/eslint": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-FlsN0p4FhuYRjIxpbdXovvHQhtlG05O1GG/RNWvdAxTboR438IOTwmrY/vLA+Xfgg06BTkP045M3vpFwTMv1dg==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/@types/filesystem": { + "version": "0.0.35", + "resolved": "https://registry.npmjs.org/@types/filesystem/-/filesystem-0.0.35.tgz", + "integrity": "sha512-1eKvCaIBdrD2mmMgy5dwh564rVvfEhZTWVQQGRNn0Nt4ZEnJ0C8oSUCzvMKRA4lGde5oEVo+q2MrTTbV/GHDCQ==", + "dev": true, + "dependencies": { + "@types/filewriter": "*" + } + }, + "node_modules/@types/filewriter": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/filewriter/-/filewriter-0.0.32.tgz", + "integrity": "sha512-Kpi2GXQyYJdjL8mFclL1eDgihn1SIzorMZjD94kdPZh9E4VxGOeyjPxi5LpsM4Zku7P0reqegZTt2GxhmA9VBg==", + "dev": true + }, + "node_modules/@types/har-format": { + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@types/har-format/-/har-format-1.2.15.tgz", + "integrity": "sha512-RpQH4rXLuvTXKR0zqHq3go0RVXYv/YVqv4TnPH95VbwUxZdQlK1EtcMvQvMpDngHbt13Csh9Z4qT9AbkiQH5BA==", + "dev": true + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/lodash": { + "version": "4.14.202", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz", + "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==" + }, + "node_modules/@types/node": { + "version": "20.10.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.5.tgz", + "integrity": "sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==" + }, + "node_modules/@types/prop-types": { + "version": "15.7.11", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", + "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==" + }, + "node_modules/@types/react": { + "version": "18.2.45", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.45.tgz", + "integrity": "sha512-TtAxCNrlrBp8GoeEp1npd5g+d/OejJHFxS3OWmrPBMFaVQMSN0OFySozJio5BHxTuTeug00AVXVAjfDSfk+lUg==", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.2.18", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.18.tgz", + "integrity": "sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react-transition-group": { + "version": "4.4.10", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.10.tgz", + "integrity": "sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", + "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==" + }, + "node_modules/@types/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@types/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-n4sx2bqL0mW1tvDf/loQ+aMX7GQD3lc3fkCMC55VFNDu/vBOabO+LTIeXKM14xK0ppk5TUGcWRjiSpIlUpghKw==", + "peer": true + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/babel-loader": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", + "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", + "dev": true, + "dependencies": { + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5" + } + }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.7.tgz", + "integrity": "sha512-LidDk/tEGDfuHW2DWh/Hgo4rmnw3cduK6ZkOI1NPFceSK3n/yAGeOsNT7FLnSGHkXj3RHGSEVkN3FsCTY6w2CQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.4.4", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.7.tgz", + "integrity": "sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.4", + "core-js-compat": "^3.33.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.4.tgz", + "integrity": "sha512-S/x2iOCvDaCASLYsOOgWOq4bCfKYVqvO/uxjkaYyZ3rVsVE3CeAI/c84NpyuBBymEgNvHgjEot3a9/Z/kXvqsg==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.4" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base16": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base16/-/base16-1.0.0.tgz", + "integrity": "sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ==" + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", + "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001565", + "electron-to-chromium": "^1.4.601", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/camelize": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz", + "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==", + "peer": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001571", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001571.tgz", + "integrity": "sha512-tYq/6MoXhdezDLFZuCO/TKboTzuQ/xR5cFdgXPfDtM7/kchBO3b4VWghE/OAi/DV7tTdhmLjZiZBZi1fA/GheQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chain-function": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/chain-function/-/chain-function-1.0.1.tgz", + "integrity": "sha512-SxltgMwL9uCko5/ZCLiyG2B7R9fY4pDZUw7hJ4MhirdjBLosoDqkWABi3XMucddHdLiFJMb7PD2MZifZriuMTg==" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/clean-css": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", + "dev": true, + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "dependencies": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/color/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "node_modules/copy-webpack-plugin": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", + "dev": true, + "dependencies": { + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.1", + "globby": "^13.1.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/core-js-compat": { + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.34.0.tgz", + "integrity": "sha512-4ZIyeNbW/Cn1wkMMDy+mvrRUxrwFNjKwbhCfQpDd+eLgYipDqp8oGFGtLmhh18EDPKA0g3VUBYOxQGGwvWLVpA==", + "dev": true, + "dependencies": { + "browserslist": "^4.22.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-color-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", + "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/css-loader": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz", + "integrity": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.21", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.3", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.8" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-to-react-native": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz", + "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==", + "peer": true, + "dependencies": { + "camelize": "^1.0.0", + "css-color-keywords": "^1.0.0", + "postcss-value-parser": "^4.0.2" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-hierarchy": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz", + "integrity": "sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==" + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "dependencies": { + "d3-path": "1" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/diff-match-patch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz", + "integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==" + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.616", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.616.tgz", + "integrity": "sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/enhanced-resolve": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/envinfo": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.0.tgz", + "integrity": "sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-ex/node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "node_modules/es-module-lexer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", + "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==", + "dev": true + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/fastq": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz", + "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-cache-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", + "dev": true, + "dependencies": { + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dev": true, + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/find-cache-dir/node_modules/pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "dev": true, + "dependencies": { + "find-up": "^6.3.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "dev": true, + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dev": true, + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz", + "integrity": "sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==", + "dev": true, + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.20.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsondiffpatch": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/jsondiffpatch/-/jsondiffpatch-0.6.0.tgz", + "integrity": "sha512-3QItJOXp2AP1uv7waBkao5nCvhEv+QmJAd38Ybq7wNI74Q+BBmnLn4EDKz6yI9xGAIQoUF87qHt+kc1IVxB4zQ==", + "dependencies": { + "@types/diff-match-patch": "^1.0.36", + "chalk": "^5.3.0", + "diff-match-patch": "^1.0.5" + }, + "bin": { + "jsondiffpatch": "bin/jsondiffpatch.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, + "node_modules/jsondiffpatch/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.curry": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz", + "integrity": "sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dev": true, + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss": { + "version": "8.4.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", + "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", + "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.1.0.tgz", + "integrity": "sha512-SaIbK8XW+MZbd0xHPf7kdfA/3eOt7vxJ72IRecn3EzuZVLr1r0orzf0MX/pN8m+NMDoo6X/SQd8oeKqGZd8PXg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dev": true, + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-base16-styling": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/react-base16-styling/-/react-base16-styling-0.9.1.tgz", + "integrity": "sha512-1s0CY1zRBOQ5M3T61wetEpvQmsYSNtWEcdYzyZNxKa8t7oDvaOn9d21xrGezGAHFWLM7SHcktPuPTrvoqxSfKw==", + "dependencies": { + "@babel/runtime": "^7.16.7", + "@types/base16": "^1.0.2", + "@types/lodash": "^4.14.178", + "base16": "^1.0.0", + "color": "^3.2.1", + "csstype": "^3.0.10", + "lodash.curry": "^4.1.1" + } + }, + "node_modules/react-d3-tree": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/react-d3-tree/-/react-d3-tree-3.6.1.tgz", + "integrity": "sha512-tl7P3Wg5q/ep6c7z6wPgf3vpqaxZ1yQi/rpvIePj3vt7XGwdP3Vdr9GBIZXw7K2CrMknoyoDIbPSNaZtZZ6MIg==", + "dependencies": { + "@bkrem/react-transition-group": "^1.3.3", + "@types/d3-hierarchy": "^1.1.8", + "clone": "^2.1.1", + "d3-hierarchy": "^1.1.9", + "d3-selection": "^3.0.0", + "d3-shape": "^1.3.7", + "d3-zoom": "^3.0.0", + "dequal": "^2.0.2", + "uuid": "^8.3.1" + }, + "peerDependencies": { + "react": "16.x || 17.x || 18.x", + "react-dom": "16.x || 17.x || 18.x" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + }, + "node_modules/react-json-tree": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/react-json-tree/-/react-json-tree-0.18.0.tgz", + "integrity": "sha512-Qe6HKSXrr++n9Y31nkRJ3XvQMATISpqigH1vEKhLwB56+nk5thTP0ITThpjxY6ZG/ubpVq/aEHIcyLP/OPHxeA==", + "dependencies": { + "@babel/runtime": "^7.20.6", + "@types/lodash": "^4.14.191", + "react-base16-styling": "^0.9.1" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, + "node_modules/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "dev": true, + "dependencies": { + "resolve": "^1.20.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dev": true, + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dev": true, + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", + "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", + "dev": true, + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", + "peer": true + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/style-loader": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.3.tgz", + "integrity": "sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw==", + "dev": true, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/styled-components": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.3.tgz", + "integrity": "sha512-kLerFjTAABuEZ870O4q4dyT/VCOJC/HA08+VeIGhkiOKkwJLP17HAWHCiqZWnUMV19m3axlOKR/+/EbCbuJAZg==", + "peer": true, + "dependencies": { + "@emotion/is-prop-valid": "1.2.1", + "@emotion/unitless": "0.8.0", + "@types/stylis": "4.2.0", + "css-to-react-native": "3.2.0", + "csstype": "3.1.2", + "postcss": "8.4.31", + "shallowequal": "1.1.0", + "stylis": "4.3.0", + "tslib": "2.5.0" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/styled-components" + }, + "peerDependencies": { + "react": ">= 16.8.0", + "react-dom": ">= 16.8.0" + } + }, + "node_modules/styled-components/node_modules/@emotion/unitless": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz", + "integrity": "sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==", + "peer": true + }, + "node_modules/styled-components/node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", + "peer": true + }, + "node_modules/styled-components/node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "peer": true, + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/styled-components/node_modules/stylis": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.0.tgz", + "integrity": "sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ==", + "peer": true + }, + "node_modules/styled-components/node_modules/tslib": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "peer": true + }, + "node_modules/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.26.0.tgz", + "integrity": "sha512-dytTGoE2oHgbNV9nTzgBEPaqAWvcJNl66VZ0BkJqlvp71IjO8CxdBx/ykCNb47cLnCmCvRZ6ZR0tLkqvZCdVBQ==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.17", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-loader": { + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz", + "integrity": "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4", + "source-map": "^0.7.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" + } + }, + "node_modules/ts-loader/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/typescript": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "dev": true, + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", + "dev": true + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", + "integrity": "sha512-jMBt6pUrKn5I+OGgtQ4YZLdhIeJmObddh6CsibPxyQ5yPZm1XExSyzC1LCNX7BzhxWgiHmizBWJTHJIjMjTQYQ==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack": { + "version": "5.89.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz", + "integrity": "sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", + "colorette": "^2.0.14", + "commander": "^10.0.1", + "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/webpack/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/test-extension/package.json b/test-extension/package.json new file mode 100644 index 0000000..9c3a496 --- /dev/null +++ b/test-extension/package.json @@ -0,0 +1,43 @@ +{ + "name": "test-extension", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "build": "rimraf dist && webpack --config webpack.config.js" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "@emotion/react": "^11.11.3", + "@emotion/styled": "^11.11.0", + "@mui/icons-material": "^5.15.1", + "@mui/material": "^5.15.1", + "@mui/styled-engine-sc": "^6.0.0-alpha.9", + "@mui/system": "^5.15.1", + "jsondiffpatch": "^0.6.0", + "react": "^18.2.0", + "react-d3-tree": "^3.6.1", + "react-dom": "^18.2.0", + "react-json-tree": "^0.18.0" + }, + "devDependencies": { + "@babel/core": "^7.23.6", + "@babel/preset-env": "^7.23.6", + "@babel/preset-react": "^7.23.3", + "@babel/preset-typescript": "^7.23.3", + "@types/chrome": "^0.0.254", + "@types/react": "^18.2.45", + "@types/react-dom": "^18.2.18", + "babel-loader": "^9.1.3", + "copy-webpack-plugin": "^11.0.0", + "css-loader": "^6.8.1", + "html-webpack-plugin": "^5.6.0", + "rimraf": "^5.0.5", + "style-loader": "^3.3.3", + "ts-loader": "^9.5.1", + "webpack": "^5.89.0", + "webpack-cli": "^5.1.4" + } +} diff --git a/test-extension/public/index.html b/test-extension/public/index.html new file mode 100644 index 0000000..d014d07 --- /dev/null +++ b/test-extension/public/index.html @@ -0,0 +1,15 @@ + + + + + + Your React App + + + +
+ + + + + diff --git a/test-extension/src/App.tsx b/test-extension/src/App.tsx new file mode 100644 index 0000000..1fff372 --- /dev/null +++ b/test-extension/src/App.tsx @@ -0,0 +1,84 @@ +import './css/styles.css'; +import React, { useState, useEffect } from 'react'; +import ParentTab from './containers/ParentTab'; +import { QueryEvent } from './types'; +import saveSelectedQueryKeys from './functions/saveSelectedQueryKeys'; +import Container from '@mui/material/Container'; +// import { Port } from 'chrome.runtime'; + +type QueryMetrics = { + // [queryKey: ] +}; + +function App() { + // state to store changes to query cache + const [queryEvents, setQueryEvents] = useState([]); + const [queryMetrics, setQueryMetrics] = useState(); + const [selectedQueries, setSelectedQueries] = useState([]); + const [devToolsPort, setDevToolsPort] = useState( + null + ); + + // adds event listeners when component mountsx + useEffect(() => { + // connects to background.js + let port = chrome.runtime.connect({ name: 'devtools-panel' }); + setDevToolsPort(port); + + // listents for messages from npm package + port.onMessage.addListener(message => { + console.log('DEVTOOL: Recieved message from background.ts'); + + if (message.type === 'event') { + setQueryEvents(queryEvents => [...queryEvents, message.payload]); + } + + if (message.type === 'metric') { + // metrics logic + } + }); + + // reloads DevTool panel + // need to define exact function for the listener to be removed in return + const windowReloaded = () => { + window.location.reload(); + }; + + // event listner triggered when user navigates to new tab / reloads page + chrome.devtools.network.onNavigated.addListener(windowReloaded); + + // cleanup 2 listeners on component dismount + return () => { + port.disconnect(); + chrome.devtools.network.onNavigated.removeListener(windowReloaded); + }; + }, []); + + // updates state for selected queries + const handleSelectionChange = (queries: string[]) => { + setSelectedQueries(queries); + saveSelectedQueryKeys(queries); + }; + + return ( + + + + ); +} + +export default App; diff --git a/test-extension/src/components/ContinuousSlider.tsx b/test-extension/src/components/ContinuousSlider.tsx new file mode 100644 index 0000000..90f466e --- /dev/null +++ b/test-extension/src/components/ContinuousSlider.tsx @@ -0,0 +1,29 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import Stack from '@mui/material/Stack'; +import Slider from '@mui/material/Slider'; + +type ContinuousSliderProps = { + value: number; + maxValue: number; + onChange: (newValue: number) => void; +}; + +export default function ContinuousSlider({ + value, + maxValue, + onChange, +}: ContinuousSliderProps) { + const handleChange = (event: Event, newValue: number | number[]) => { + onChange(newValue as number); + }; + + return ( + + ); +} diff --git a/test-extension/src/components/CustomTabPanel.tsx b/test-extension/src/components/CustomTabPanel.tsx new file mode 100644 index 0000000..0d16fa7 --- /dev/null +++ b/test-extension/src/components/CustomTabPanel.tsx @@ -0,0 +1,35 @@ +import React from 'react'; +import { TabPanelProps } from '../types'; + +import Container from '@mui/material/Container'; +import Box from '@mui/material/Box'; + +const CustomTabPanel = ({ + children, + value, + index, + ...other +}: TabPanelProps) => { + return ( + + ); +}; + +export default CustomTabPanel; diff --git a/test-extension/src/components/JsonDiff.tsx b/test-extension/src/components/JsonDiff.tsx new file mode 100644 index 0000000..8594541 --- /dev/null +++ b/test-extension/src/components/JsonDiff.tsx @@ -0,0 +1,56 @@ +import React from 'react'; +import JsonFormatter from './JsonFormatter'; +import Typography from '@mui/material/Typography'; +import Container from '@mui/material/Container'; +import jsondiffpatch from 'jsondiffpatch'; +import '../css/jsonDiff.css'; +import { JsonDiffType } from '../types'; + +const JsonDiff: React.FC = ({ + oldJson, + currentJson, + queryKey, + isHidden, +}) => { + // handle scenario where we're on the first state - getting currentJson but not oldJson + if (currentJson === '') + return ( + + Initial state - no comparison available + + ); + + // get comparison obj + const delta = jsondiffpatch.diff(oldJson, currentJson); + // delta is undefined if the 2 objects are the exact same - not sure how I can render this + // console.log('delta: ', delta); + + if (delta) { + // Use library's html formatter that generates vanilla CSS + const htmlFormatter = (jsondiffpatch as any).formatters.html; + const htmlDiff = htmlFormatter.format(delta, oldJson); + // React-specific functions to handle raw html + const createMarkupHtml = () => ({ __html: htmlDiff }); + + return ( +
+ +
+
+
+ ); + } + + // handle errors - this is appearing when there is no change tho? + return ( + + QueryKey data not modified on this state change + + ); +}; + +export default JsonDiff; diff --git a/test-extension/src/components/JsonFormatter.tsx b/test-extension/src/components/JsonFormatter.tsx new file mode 100644 index 0000000..1be958f --- /dev/null +++ b/test-extension/src/components/JsonFormatter.tsx @@ -0,0 +1,27 @@ +import React from 'react'; +import { JSONTree } from 'react-json-tree'; +import { JsonFormatterType } from '../types'; + + +// https://github.com/reduxjs/redux-devtools/tree/75322b15ee7ba03fddf10ac3399881e302848874/src/react/themes +const theme = { + base00: 'transparent', +}; + +const JsonFormatter: React.FC = ({ jsonData, queryKey, expandNodesFunc }) => { + // update data so that query key is the root + const dataWithKey = { [queryKey]: jsonData }; + + return ( +
+ +
+ ); +}; + +export default JsonFormatter; diff --git a/test-extension/src/components/MultiSelect.tsx b/test-extension/src/components/MultiSelect.tsx new file mode 100644 index 0000000..f31016e --- /dev/null +++ b/test-extension/src/components/MultiSelect.tsx @@ -0,0 +1,80 @@ +import React, { useState, useEffect } from 'react'; +import OutlinedInput from '@mui/material/OutlinedInput'; +import InputLabel from '@mui/material/InputLabel'; +import MenuItem from '@mui/material/MenuItem'; +import FormControl from '@mui/material/FormControl'; +import ListItemText from '@mui/material/ListItemText'; +import Select, { SelectChangeEvent } from '@mui/material/Select'; +import Checkbox from '@mui/material/Checkbox'; +import { QueryEvent } from '../types'; + +interface MultiSelectProps { + handleSelectionChange: (selected: string[]) => void; + queryEvents: QueryEvent[]; +}; + +export default function MultiSelect({ + handleSelectionChange, + queryEvents, +}: MultiSelectProps) { + const [isChecked, setIsChecked] = useState([]); + const [queryOptions, setQueryOptions] = useState([]); + + useEffect(() => { + const newQueryOptions = queryEvents.map((event) => event.queryHash); + const uniqueQueryOptions = Array.from(new Set(newQueryOptions)); + setQueryOptions(uniqueQueryOptions); + // when there are new query options, we need to check with local storage and see if any of them are set + chrome.storage.local.get(['selectedQueries'], (result) => { + // check that data exists and it's an array + // console.log('result when setting queries: ', result); + if (result.selectedQueries && Array.isArray(result.selectedQueries)) { + // console.log('criteria is met'); + // get the queries out of local storage + const arrayQueries = result.selectedQueries; + const intersectionOfStorageAndAvailable: string[] = []; + // iterate through query keys stored in local storage and check if the query key is currently available in the drop-down + arrayQueries.forEach((queryKey: string) => { + if (uniqueQueryOptions.includes(queryKey)) { + intersectionOfStorageAndAvailable.push(queryKey); + } + }); + // invoke functions that 1) set checked values in the UI and 2) set the checked values in state so that the correct data is displayed + setIsChecked(intersectionOfStorageAndAvailable); + handleSelectionChange(intersectionOfStorageAndAvailable); + } + }); + }, [queryEvents]); + + const handleChange = (event: SelectChangeEvent) => { + const { + target: { value }, + } = event; + const newSelection = typeof value === 'string' ? value.split(',') : value; + setIsChecked(newSelection); + handleSelectionChange(newSelection); + }; + + return ( + + Select + + + ); +} diff --git a/test-extension/src/components/ProfilingToggle.tsx b/test-extension/src/components/ProfilingToggle.tsx new file mode 100644 index 0000000..3b2bf02 --- /dev/null +++ b/test-extension/src/components/ProfilingToggle.tsx @@ -0,0 +1,90 @@ +import React, { useState, ReactNode } from 'react'; +import { styled } from '@mui/material/styles'; +import FormGroup from '@mui/material/FormGroup'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import Switch, { SwitchProps } from '@mui/material/Switch'; +import Stack from '@mui/material/Stack'; +import Typography from '@mui/material/Typography'; + +const AntSwitch = styled(Switch)(({ theme }) => ({ + width: 38, + height: 22, + padding: 0, + display: 'flex', + '&:active': { + '& .MuiSwitch-thumb': { + width: 18, + }, + '& .MuiSwitch-switchBase.Mui-checked': { + transform: 'translateX(15px)', + }, + }, + '& .MuiSwitch-switchBase': { + padding: 2, + '&.Mui-checked': { + transform: 'translateX(16px)', + color: '#fff', + '& + .MuiSwitch-track': { + opacity: 1, + // backgroundColor: theme.palette.mode === 'dark' ? '#177ddc' : '#1890ff', + backgroundColor: + theme.palette.mode === 'dark' + ? theme.palette.primary.main + : theme.palette.secondary.main, + }, + }, + }, + '& .MuiSwitch-thumb': { + boxShadow: '0 2px 4px 0 rgb(0 35 11 / 20%)', + width: 16, + height: 16, + borderRadius: '50%', + transition: theme.transitions.create(['width'], { + duration: 200, + }), + }, + '& .MuiSwitch-track': { + borderRadius: 11, + opacity: 1, + backgroundColor: + theme.palette.mode === 'dark' + ? 'rgba(255,255,255,.35)' + : 'rgba(0,0,0,.25)', + boxSizing: 'border-box', + }, +})); + +interface ProfilingToggleProps { + onClick?: () => void; + children?: ReactNode; // Allow children in the component +} + +const ProfilingToggle: React.FC = ({ + onClick, + children, +}) => { + const [checked, setChecked] = useState(false); + + const handleToggle = () => { + setChecked((prev: any) => !prev); + if (onClick) { + onClick(); + } + }; + + // export default function ProfilingToggle() { + return ( + + + + {children} + + + ); +}; + +export default ProfilingToggle; diff --git a/test-extension/src/components/SliderSection.tsx b/test-extension/src/components/SliderSection.tsx new file mode 100644 index 0000000..0a97a3b --- /dev/null +++ b/test-extension/src/components/SliderSection.tsx @@ -0,0 +1,138 @@ +import React from 'react'; + +import IconButton from '@mui/material/IconButton'; +import Box from '@mui/material/Box'; +import KeyboardArrowLeftIcon from '@mui/icons-material/KeyboardArrowLeft'; +import KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight'; +import KeyboardDoubleArrowLeftIcon from '@mui/icons-material/KeyboardDoubleArrowLeft'; +import KeyboardDoubleArrowRightIcon from '@mui/icons-material/KeyboardDoubleArrowRight'; +import ContinuousSlider from './ContinuousSlider'; +import PlayArrowIcon from '@mui/icons-material/PlayArrow'; +import PauseIcon from '@mui/icons-material/Pause'; + +import { SliderSectionProps } from '../types'; + +const SliderSection = ({ + queryDisplay, + currentIndex, + setCurrentIndex, + handleAutoPlay, + selectedQueries, + isPlaying, +}: SliderSectionProps) => { + const playIcon = isPlaying ? ( + + ) : ( + + ); + + return ( + + + {playIcon} + + + + + {selectedQueries.length === 0 + ? '0 / 0' + : `${currentIndex + 1} / ${queryDisplay.length}`} + + setCurrentIndex(newIndex)} + /> + + + setCurrentIndex(0)} + sx={{ + '&:hover': { display: 'flex' }, + '&.MuiIconButton-root': { padding: '0' }, + }} + > + + + + setCurrentIndex(Math.max(currentIndex - 1, 0))} + sx={{ + '&:hover': { display: 'flex' }, + '&.MuiIconButton-root': { padding: '0' }, + }} + > + + + + + setCurrentIndex(Math.min(currentIndex + 1, queryDisplay.length - 1)) + } + sx={{ + '&:hover': { display: 'flex' }, + '&.MuiIconButton-root': { padding: '0' }, + }} + > + + + + setCurrentIndex(queryDisplay.length - 1)} + sx={{ + '&:hover': { display: 'flex' }, + '&.MuiIconButton-root': { padding: '0' }, + }} + > + + + + ); +}; + +export default SliderSection; diff --git a/test-extension/src/components/Tree.tsx b/test-extension/src/components/Tree.tsx new file mode 100644 index 0000000..e967977 --- /dev/null +++ b/test-extension/src/components/Tree.tsx @@ -0,0 +1,114 @@ +import React, { useCallback, useState, useEffect } from 'react'; +import Tree from 'react-d3-tree'; +import '../css/styles.css'; +import DownloadIcon from '@mui/icons-material/Download'; +import IconButton from '@mui/material/IconButton'; +import { + customStringify, + sendData, + saveJSON, +} from '../functions/treeHelperFuncs'; + +interface ComponentTreeProps { + fiberTree: any; // Replace 'any' with the actual type of fiberTree +} + +// set up a centered tree visualization +function ComponentTree({ fiberTree }: ComponentTreeProps) { + const useCenteredTree = ( + defaultTranslate: { x: number; y: number } = { x: 0, y: 0 } + ) => { + const [translate, setTranslate] = useState(defaultTranslate); + const [dimensions, setDimensions] = useState< + { width: number; height: number } | undefined + >(); + + const containerRef = useCallback((containerElem: HTMLDivElement | null) => { + if (containerElem !== null) { + const { width, height } = containerElem.getBoundingClientRect(); + setDimensions({ width, height }); + setTranslate({ x: width / 2, y: height / 12 }); + } + }, []); + + return [dimensions, translate, containerRef] as const; + }; + + const [dimensions, translate, containerRef] = useCenteredTree(); + const [recButton, setRecButton] = useState('START PROFILING'); + const [idk, setIdk] = useState([]); + //state for navigating between tree and charts + //const [view, setView] = useState("treeView"); + //state for recording status, default to false; + const [recStat, setRecStat] = useState(false); + // const [recButton, setRecButton] = useState("START PROFILING"); + const [chartData, setChartData] = useState([]); + + const setStatus = () => { + setRecStat((prevRecStat) => !prevRecStat); + }; + + function sendMessageToContentScript(message: any) { + chrome.tabs.query({ active: true, currentWindow: true }, (tabs: any) => { + chrome.tabs.sendMessage(tabs[0].id, message); + }); + } + + //update recButton according to recStat + useEffect(() => { + if (!recStat) { + setRecButton('Start profiling'); + sendMessageToContentScript({ + message: `Hello from popup! ${idk.length}`, + }); + setChartData([...idk]); + } else { + setRecButton('Stop profiling'); + sendMessageToContentScript({ + message: `Hello from popup! ${idk.length}`, + }); + } + }, [recStat]); + + const stringifiedResult = customStringify(fiberTree); + + return ( + <> + {fiberTree ? ( +
+ saveJSON(fiberTree, 'parseTreeData')} + > + + +
+ +
+
+ ) : ( +

+ COMPONENT TREE - if your component tree isn't rendering, make sure you + have React DevTools installed and try again! +

+ )} + + ); +} + +export default ComponentTree; diff --git a/test-extension/src/containers/DiffTab.tsx b/test-extension/src/containers/DiffTab.tsx new file mode 100644 index 0000000..a80d43e --- /dev/null +++ b/test-extension/src/containers/DiffTab.tsx @@ -0,0 +1,57 @@ +import Typography from '@mui/material/Typography'; +import FormGroup from '@mui/material/FormGroup'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import Switch from '@mui/material/Switch'; +import React, { useState } from 'react'; + +import JsonDiff from '../components/JsonDiff'; + +import { DataTabProps } from '../types'; + +const DiffTab = ({ queryDisplay, currentIndex }: DataTabProps) => { + // state to determine if unchanged are hidden or closed + const [isHidden, setIsHidden] = useState(false); + + // function to hide/show unchanged data + const toggleChangedProperties = () => { + setIsHidden(!isHidden); + }; + + return ( + <> + + } + label={`${isHidden ? 'Show' : 'Hide'} Unchanged Properties `} + /> + {queryDisplay.length > 0 && queryDisplay[currentIndex] && ( +
+ {queryDisplay[currentIndex].map((queryState, i) => ( + <> + + {queryState.queryKey} + + 1 && queryState.queryKey + ? queryDisplay[currentIndex - 1].find( + (obj) => obj.queryKey === queryState.queryKey + )?.queryData + : null + } + /> + + ))} +
+ )} + + ); +}; + +export default DiffTab; diff --git a/test-extension/src/containers/MetricsTab.tsx b/test-extension/src/containers/MetricsTab.tsx new file mode 100644 index 0000000..d42dcf8 --- /dev/null +++ b/test-extension/src/containers/MetricsTab.tsx @@ -0,0 +1,79 @@ +import React, { useEffect, useState } from 'react'; +import Box from '@mui/material/Box'; +import { BasicTabsProps } from '../types'; +import ComponentTree from '../components/Tree'; +import ProfilingToggle from '../components/ProfilingToggle'; + +const MetricsTab = ({ queryEvents }: BasicTabsProps) => { + const [value, setValue] = React.useState(0); + const [selectedQueries, setSelectedQueries] = useState([]); + + const [idk, setIdk] = useState([]); + //state for navigating between tree and charts + const [view, setView] = useState('treeView'); + //state for recording status, default to false; + const [recStat, setRecStat] = useState(false); + const [recButton, setRecButton] = useState('START PROFILING'); + const [chartData, setChartData] = useState([]); + + const setStatus = () => { + setRecStat((prevRecStat) => !prevRecStat); + }; + + function sendMessageToContentScript(message: any) { + chrome.tabs.query({ active: true, currentWindow: true }, (tabs: any) => { + chrome.tabs.sendMessage(tabs[0].id, message); + }); + } + + //update recButton according to recStat + useEffect(() => { + if (!recStat) { + setRecButton('Start profiling'); + sendMessageToContentScript({ + message: `Hello from popup! ${idk.length}`, + }); + setChartData([...idk]); + } else { + setRecButton('Stop profiling'); + sendMessageToContentScript({ + message: `Hello from popup! ${idk.length}`, + }); + } + }, [recStat]); + + useEffect(() => { + const msgListener = (request: any, sender: any, sendResponse: any) => { + if (recStat) { + console.log('inside use effect', JSON.parse(request.data)); + switch (request.action) { + case 'EVENT_LIST': + if (request.data) { + setIdk([...JSON.parse(request.data)]); + } + break; + } + } + }; + + chrome.runtime.onMessage.addListener(msgListener); + + return () => { + chrome.runtime.onMessage.removeListener(msgListener); + }; + }, [recStat]); + + return ( + + setStatus()}> + {recButton} + +
+ {view === 'treeView' && ( + + )} +
+ ); +}; + +export default MetricsTab; diff --git a/test-extension/src/containers/ParentTab.tsx b/test-extension/src/containers/ParentTab.tsx new file mode 100644 index 0000000..31c04c2 --- /dev/null +++ b/test-extension/src/containers/ParentTab.tsx @@ -0,0 +1,66 @@ +import React, { useEffect, useState } from 'react'; +import Tabs from '@mui/material/Tabs'; +import Tab from '@mui/material/Tab'; +import Box from '@mui/material/Box'; +import { ParentTabsProps } from '../types'; +import CustomTabPanel from '../components/CustomTabPanel'; +import a11yProps from '../functions/a11yProps'; +import MetricsTab from './MetricsTab'; +import QueriesTab from './QueriesTab'; + +const ParentTab = ({ + queryEvents, + selectedQueries, + handleSelectionChange, + devToolsPort, +}: ParentTabsProps) => { + const [value, setValue] = React.useState(0); + + const handleChange = (event: React.SyntheticEvent, newValue: number) => { + setValue(newValue); + }; + + return ( + + + + + + + + + + + + + + + + + + + ); +}; + +export default ParentTab; diff --git a/test-extension/src/containers/QueriesTab.tsx b/test-extension/src/containers/QueriesTab.tsx new file mode 100644 index 0000000..09d04c6 --- /dev/null +++ b/test-extension/src/containers/QueriesTab.tsx @@ -0,0 +1,218 @@ +import React, { useState, useEffect } from 'react'; +import { QueryTabProps, QueryDisplay } from '../types'; + +import Box from '@mui/material/Box'; +import PlayArrowIcon from '@mui/icons-material/PlayArrow'; +import PauseIcon from '@mui/icons-material/Pause'; +import createDisplayArray from '../functions/createDisplayArray'; +import CustomTabPanel from '../components/CustomTabPanel'; +import SliderSection from '../components/SliderSection'; +import ToggleButton from '@mui/material/ToggleButton'; +import ToggleButtonGroup from '@mui/material/ToggleButtonGroup'; +import HistoryIcon from '@mui/icons-material/History'; +import Tooltip from '@mui/material/Tooltip'; + +import StateTab from './StateTab'; +import DiffTab from './DiffTab'; +import MultiSelect from '../components/MultiSelect'; + +const QuereisTab = ({ + queryEvents, + selectedQueries, + handleSelectionChange, + devToolsPort, +}: QueryTabProps) => { + const [value, setValue] = React.useState(0); + + const handleChange = (event: React.SyntheticEvent, newValue: number) => { + setValue(newValue); + }; + + // holds all query events based on selected queries and query events + const [queryDisplay, setQueryDisplay] = useState([]); + // current index of above array + const [currentIndex, setCurrentIndex] = useState(0); + + const [isPlaying, setIsPlaying] = useState(false); + + const [intervalId, setIntervalId] = useState(undefined); + + const [playIcon, setPlayIcon] = useState( + + ); + + // state for switching in and out of timetravel mode + const [timeTravel, setTimeTravel] = useState(false); + + // sends message to the background script whenever timeTravel changes + useEffect(() => { + if (devToolsPort) { + devToolsPort.postMessage({ + type: 'time-travel', + payload: timeTravel, + }); + } + + if (!timeTravel && queryDisplay.length > 0) { + setCurrentIndex(queryDisplay.length - 1); + } + }, [timeTravel]); + + const currentQuery = queryDisplay[currentIndex]; + + // sends message to the background script whenever currentIndex changes + useEffect(() => { + if ( + currentQuery && + currentQuery.length !== 0 && + devToolsPort && + timeTravel + ) { + devToolsPort.postMessage({ + type: 'update-ui', + payload: queryDisplay[currentIndex], + }); + } + }, [currentIndex]); + + // creates array of all states based on selected queries + useEffect(() => { + const newQueryDisplay = createDisplayArray(queryEvents, selectedQueries); + setQueryDisplay(newQueryDisplay); + const newIndex = + newQueryDisplay.length > 0 ? newQueryDisplay.length - 1 : 0; + setCurrentIndex(newIndex); + }, [selectedQueries, queryEvents]); + + const handleAutoPlay = () => { + setIsPlaying(prevIsPlaying => { + if (!prevIsPlaying) { + if (currentIndex >= queryDisplay.length - 1) { + setCurrentIndex(0); + } + + const newIntervalId = window.setInterval(() => { + setCurrentIndex(prevIndex => { + if (prevIndex >= queryDisplay.length - 1) { + clearInterval(newIntervalId); + return prevIndex; + } + return prevIndex + 1; + }); + }, 1000); + + setIntervalId(newIntervalId); + return true; + } else { + if (intervalId !== undefined) { + clearInterval(intervalId); + setIntervalId(undefined); + } + return false; + } + }); + }; + + useEffect(() => { + if (currentIndex >= queryDisplay.length - 1 && isPlaying) { + setIsPlaying(false); + } + }, [currentIndex, queryDisplay.length, isPlaying]); + + useEffect(() => { + setPlayIcon( + isPlaying ? ( + + ) : ( + + ) + ); + }, [isPlaying]); + + useEffect(() => { + return () => { + if (intervalId !== undefined) { + clearInterval(intervalId); + } + }; + }, [intervalId]); + + return ( + + + + + + + STATE + + + DIFF + + + + + setTimeTravel(!timeTravel)} + > + + + + + + + + + + + + + + + + + ); +}; + +export default QuereisTab; diff --git a/test-extension/src/containers/StateTab.tsx b/test-extension/src/containers/StateTab.tsx new file mode 100644 index 0000000..a6abefa --- /dev/null +++ b/test-extension/src/containers/StateTab.tsx @@ -0,0 +1,52 @@ +import React from 'react'; +import JsonFormatter from '../components/JsonFormatter'; +import { useState } from 'react'; +import { DataTabProps, ExpandNodesFuncType } from '../types'; + + +const StateTab = ({ queryDisplay, currentIndex }: DataTabProps) => { + // state to handle open nodes + const [openNodes, setOpenNodes] = useState(new Set()); + // each item in the set the keyValue + + // function to expand nodes (types can probably be stored globally so code is more dry) + const expandNodesFunc: ExpandNodesFuncType = ( + keyPath, + value, + layer + ) => { + // Gets recurisved called and traverses the json in depth first search so we could use it to trac the nodes that are open at any given time + // console.log('Func called'); + // console.log('keyPath: ', keyPath); // keyPath: the keyPaths (goes in a recursive, depth first approach) + // console.log('value: ', value); // value: value in that keypath + // console.log('layer: ', layer); // layer: the depth + // expand first level + + if (layer < 2) return true; + return false; + }; + + return ( + <> + {queryDisplay.length > 0 && queryDisplay[currentIndex] && ( +
+ {queryDisplay[currentIndex].map((queryState) => ( + <> + + + ))} +
+ )} + + ); +}; + +export default StateTab; diff --git a/test-extension/src/css/jsonDiff.css b/test-extension/src/css/jsonDiff.css new file mode 100644 index 0000000..4d5db5b --- /dev/null +++ b/test-extension/src/css/jsonDiff.css @@ -0,0 +1,149 @@ +.jsondiffpatch-delta { + font-family: 'Bitstream Vera Sans Mono', 'DejaVu Sans Mono', Monaco, Courier, monospace; + font-size: 14px; + margin: 0; + padding: 0 0 0 12px; + display: inline-block; +} +.jsondiffpatch-delta pre { + font-family: 'Bitstream Vera Sans Mono', 'DejaVu Sans Mono', Monaco, Courier, monospace; + font-size: 14px; + margin: 0; + padding: 0; + display: inline-block; +} +ul.jsondiffpatch-delta { + list-style-type: none; + padding: 0 0 0 20px; + margin: 0; +} +.jsondiffpatch-delta ul { + list-style-type: none; + padding: 0 0 0 20px; + margin: 0; +} +.jsondiffpatch-added .jsondiffpatch-property-name, +.jsondiffpatch-added .jsondiffpatch-value pre, +.jsondiffpatch-modified .jsondiffpatch-right-value pre, +.jsondiffpatch-textdiff-added { + background: #018501; +} +.jsondiffpatch-deleted .jsondiffpatch-property-name, +.jsondiffpatch-deleted pre, +.jsondiffpatch-modified .jsondiffpatch-left-value pre, +.jsondiffpatch-textdiff-deleted { + background: #f70505; + text-decoration: line-through; +} +.jsondiffpatch-unchanged, +.jsondiffpatch-movedestination { + color: rgb(188, 188, 188); +} +.jsondiffpatch-unchanged, +.jsondiffpatch-movedestination > .jsondiffpatch-value { + transition: all 0.5s; + -webkit-transition: all 0.5s; + overflow-y: hidden; +} +.jsondiffpatch-unchanged-showing .jsondiffpatch-unchanged, +.jsondiffpatch-unchanged-showing .jsondiffpatch-movedestination > .jsondiffpatch-value { + max-height: 100px; +} +.jsondiffpatch-unchanged-hidden .jsondiffpatch-unchanged, +.jsondiffpatch-unchanged-hidden .jsondiffpatch-movedestination > .jsondiffpatch-value { + max-height: 0; +} +.jsondiffpatch-unchanged-hiding .jsondiffpatch-movedestination > .jsondiffpatch-value, +.jsondiffpatch-unchanged-hidden .jsondiffpatch-movedestination > .jsondiffpatch-value { + display: block; +} +.jsondiffpatch-unchanged-visible .jsondiffpatch-unchanged, +.jsondiffpatch-unchanged-visible .jsondiffpatch-movedestination > .jsondiffpatch-value { + max-height: 100px; +} +.jsondiffpatch-unchanged-hiding .jsondiffpatch-unchanged, +.jsondiffpatch-unchanged-hiding .jsondiffpatch-movedestination > .jsondiffpatch-value { + max-height: 0; +} +.jsondiffpatch-unchanged-showing .jsondiffpatch-arrow, +.jsondiffpatch-unchanged-hiding .jsondiffpatch-arrow { + display: none; +} +.jsondiffpatch-value { + display: inline-block; +} +.jsondiffpatch-property-name { + display: inline-block; + padding-right: 5px; + vertical-align: top; +} +.jsondiffpatch-property-name:after { + content: ': '; +} +.jsondiffpatch-child-node-type-array > .jsondiffpatch-property-name:after { + content: ': ['; +} +.jsondiffpatch-child-node-type-array:after { + content: '],'; +} +div.jsondiffpatch-child-node-type-array:before { + content: '['; +} +div.jsondiffpatch-child-node-type-array:after { + content: ']'; +} +.jsondiffpatch-child-node-type-object > .jsondiffpatch-property-name:after { + content: ': {'; +} +.jsondiffpatch-child-node-type-object:after { + content: '},'; +} +div.jsondiffpatch-child-node-type-object:before { + content: '{'; +} +div.jsondiffpatch-child-node-type-object:after { + content: '}'; +} +.jsondiffpatch-value pre:after { + content: ','; +} +li:last-child > .jsondiffpatch-value pre:after, +.jsondiffpatch-modified > .jsondiffpatch-left-value pre:after { + content: ''; +} +.jsondiffpatch-modified .jsondiffpatch-value { + display: inline-block; +} +.jsondiffpatch-modified .jsondiffpatch-right-value { + margin-left: 5px; +} +.jsondiffpatch-moved .jsondiffpatch-value { + display: none; +} +.jsondiffpatch-moved .jsondiffpatch-moved-destination { + display: inline-block; + background: #ffffbb; + color: #888; +} +.jsondiffpatch-moved .jsondiffpatch-moved-destination:before { + content: ' => '; +} +ul.jsondiffpatch-textdiff { + padding: 0; +} +.jsondiffpatch-textdiff-location { + color: #bbb; + display: inline-block; + min-width: 60px; +} +.jsondiffpatch-textdiff-line { + display: inline-block; +} +.jsondiffpatch-textdiff-line-number:after { + content: ','; +} +.jsondiffpatch-error { + background: red; + color: white; + font-weight: bold; +} \ No newline at end of file diff --git a/test-extension/src/css/styles.css b/test-extension/src/css/styles.css new file mode 100644 index 0000000..cb7fb23 --- /dev/null +++ b/test-extension/src/css/styles.css @@ -0,0 +1,16 @@ +.node__root > circle { + fill: red; +} + +.node__branch > circle { + fill: yellow; +} + +.node__leaf > circle { + fill: green; + /* Let's also make the radius of leaf nodes larger */ + border-radius: 40; +} +.rd3t-label__title { + fill: #808080 !important; +} diff --git a/test-extension/src/functions/a11yProps.ts b/test-extension/src/functions/a11yProps.ts new file mode 100644 index 0000000..4a70413 --- /dev/null +++ b/test-extension/src/functions/a11yProps.ts @@ -0,0 +1,8 @@ +function a11yProps(index: number) { + return { + id: `simple-tab-${index}`, + 'aria-controls': `simple-tabpanel-${index}`, + }; +} + +export default a11yProps; diff --git a/test-extension/src/functions/createDisplayArray.ts b/test-extension/src/functions/createDisplayArray.ts new file mode 100644 index 0000000..bf5ed96 --- /dev/null +++ b/test-extension/src/functions/createDisplayArray.ts @@ -0,0 +1,42 @@ +import { QueryDisplay, QueryEvent } from '../types'; + +const createDisplayArray = ( + queryEvents: QueryEvent[], + selectedQueries: string[] +) => { + // nested results array to be returned + const allDisplays: QueryDisplay[][] = []; + + // selected queries start with no data + const startDisplay: QueryDisplay[] = selectedQueries.map( + (queryKey: string) => { + return { + queryKey: queryKey, + queryData: '', + }; + } + ); + + allDisplays.push(startDisplay); + + // filter for events of selected queries + const selectedQueryEvents = queryEvents.filter((queryEvent) => + selectedQueries.includes(queryEvent.queryHash) + ); + + // traverse queries and update the relevant query data for that event + selectedQueryEvents.forEach((queryEvent) => { + const prevDisplay = [...allDisplays[allDisplays.length - 1]]; + const newDisplay = prevDisplay.map((display) => { + if (display.queryKey === queryEvent.queryHash) { + return { ...display, queryData: queryEvent.queryData }; + } + return display; + }); + allDisplays.push(newDisplay); + }); + + return allDisplays; +}; + +export default createDisplayArray; diff --git a/test-extension/src/functions/saveSelectedQueryKeys.ts b/test-extension/src/functions/saveSelectedQueryKeys.ts new file mode 100644 index 0000000..5418797 --- /dev/null +++ b/test-extension/src/functions/saveSelectedQueryKeys.ts @@ -0,0 +1,65 @@ +// memoize if the function has been called before +let called = false; + +const saveSelectedQueryKeys = async (queries: string[]) => { + // *** Persisting Query Selection *** + // this is complex because we may store queries that are not yet visible in the drop-down + + // to allow users to remove queries, we separately store the data from the session as "thisSessionsQueries" - this will allow us to see when a query has been removed by comparies the queries that come in as an arguement to the queries that were previously selected + // once we have the query keys that were removed, we update the storage to be: union of what's currently stored and what was added. Less any queries that were removed + + // clear session queries when func first invoked + if (!called) { + await chrome.storage.local.set({ + thisSessionsQueries: [] + }); + called = true; + } + + const queriesSet = new Set(queries); + const sessionResult = await chrome.storage.local.get(['thisSessionsQueries']); + + // if no queries have been stored as part of the session set to an empty array + const sessionQueries: string[] = + sessionResult.thisSessionsQueries ? + sessionResult.thisSessionsQueries : + []; + + // determine the queries that the user removed by finding the difference between the queries passed into the function and the queries stored as SessionQueries + // I'm currently marking queries as removed + const queriesRemoved: string[] = sessionQueries.filter( queryKey => !queriesSet.has(queryKey)) + // update storage for current session's selections now that we've found if any query keys were removed + await chrome.storage.local.set({ + thisSessionsQueries: queries + }); + + + // get the query keys that were selected in previous sessions + const selectedResult = await chrome.storage.local.get(['selectedQueries']) + + // if no queries have been stored as part of previous sessions set to an empty array + const selectedQueries: string[] = + selectedResult.selectedQueries ? + selectedResult.selectedQueries : + []; + + // combine existing queries with the new ones and handle duplicates + const combinedQueries = new Set([...selectedQueries, ...queries]); + + // remove the queries that users unselected + const combinedQueriesWithRemovals: string[] = []; + for (const queryKey of combinedQueries) { + // if queryKey is not in the removals list, add it to be stored + if (!queriesRemoved.includes(queryKey)) { + // store as a set for faster access + combinedQueriesWithRemovals.push(queryKey); + } + } + + // add the combinedQueries into local storage + await chrome.storage.local.set({ + selectedQueries: combinedQueriesWithRemovals, + }); +}; + +export default saveSelectedQueryKeys; \ No newline at end of file diff --git a/test-extension/src/functions/treeHelperFuncs.tsx b/test-extension/src/functions/treeHelperFuncs.tsx new file mode 100644 index 0000000..3eb9904 --- /dev/null +++ b/test-extension/src/functions/treeHelperFuncs.tsx @@ -0,0 +1,106 @@ +//custom function to remove circular object error when passing parsedTree to fetch +export const customStringify = (v: any): string => { + const cache = new Set(); + return JSON.stringify(v, function (key, value) { + if (typeof value === 'object' && value !== null) { + if (cache.has(value)) { + // Circular reference found + try { + // If this value does not reference a parent, it can be deduped + return JSON.parse(JSON.stringify(value)); + } catch (err) { + // Discard key if value cannot be deduped + return; + } + } + // Store value in our set + cache.add(value); + } + return value; + }); +}; + +export const saveJSON = (data: any, saveAs: string): void => { + let stringified = JSON.stringify(data, null, 2); + let blob = new Blob([stringified], { type: "application/json" }); + let url = URL.createObjectURL(blob); + + let a = document.createElement('a'); + a.download = saveAs + '.json'; + a.href = url; + a.id = saveAs; + document.body.appendChild(a); + a.click(); + document.querySelector('#' + a.id)?.remove(); +}; + +export const sendData = (stringifiedResult: string): void => { + console.log("clicked on send data and this is what will be sent", stringifiedResult); + fetch("http://localhost:3000/saveData", { + method: 'POST', + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json' + }, + body: stringifiedResult + }).then((response) => { + // check the response object for result + console.log('response from backend', response); + // ... + }); +}; + + + +// export const customStringify = (v) => { +// const cache = new Set(); +// return JSON.stringify(v, function (key, value) { +// if (typeof value === 'object' && value !== null) { +// if (cache.has(value)) { +// // Circular reference found +// try { +// // If this value does not reference a parent it can be deduped +// return JSON.parse(JSON.stringify(value)); +// } +// catch (err) { +// // discard key if value cannot be deduped +// return; +// } +// } +// // Store value in our set +// cache.add(value); +// } +// return value; +// }); +// }; + +// export const saveJSON = (data, saveAs) => { +// let stringified = JSON.stringify(data, null, 2); +// let blob = new Blob([stringified], {type: "application/json"}); +// let url = URL.createObjectURL(blob); + +// let a = document.createElement('a'); +// a.download = saveAs + '.json'; +// a.href = url; +// a.id = saveAs; +// document.body.appendChild(a); +// a.click(); +// document.querySelector('#' + a.id).remove(); +// } + +// export const sendData = (stringifiedResult) =>{ +// console.log("clicked on send data and this is what will be sent", stringifiedResult) +// fetch("http://localhost:3000/saveData", { +// method: 'POST', +// headers: { +// 'Accept': 'application/json', +// 'Content-Type': 'application/json' +// }, +// body: stringifiedResult +// }).then((response) => { +// // check the response object for result +// console.log('response from backend', response) +// // ... +// }); +// } + \ No newline at end of file diff --git a/test-extension/src/index.tsx b/test-extension/src/index.tsx new file mode 100644 index 0000000..083c7fb --- /dev/null +++ b/test-extension/src/index.tsx @@ -0,0 +1,18 @@ +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import App from './App'; +import theme from './theme'; +import { ThemeProvider, CssBaseline } from '@mui/material'; + +const root = document.createElement('div'); +root.className = 'container'; +document.body.appendChild(root); +const rootDiv = ReactDOM.createRoot(root); +rootDiv.render( + + + + + + +); diff --git a/test-extension/src/theme.ts b/test-extension/src/theme.ts new file mode 100644 index 0000000..ede43bc --- /dev/null +++ b/test-extension/src/theme.ts @@ -0,0 +1,25 @@ +import { ThemeOptions, createTheme } from '@mui/material/styles'; +import { dark, light } from '@mui/material/styles/createPalette'; + +const darkMode = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ? true : false; + +const theme: ThemeOptions = createTheme({ + palette: { + mode: darkMode ? 'dark' : 'light', // dynamically determine mode + primary: { + main: '#ff6f61', + }, + secondary: { + main: '#8a5ff0', + }, + background: { + default: darkMode ? '#282828' : '#ffffff' + }, + text: { + primary: darkMode ? '#ffffff' : '#000000', + secondary: darkMode ? '#dddddd' : '#555555', + }, + }, +}); + +export default theme; \ No newline at end of file diff --git a/test-extension/src/types.d.ts b/test-extension/src/types.d.ts new file mode 100644 index 0000000..dce563c --- /dev/null +++ b/test-extension/src/types.d.ts @@ -0,0 +1,85 @@ +// component prop types + +export type TabPanelProps = { + children?: React.ReactNode; + index: number; + value: number; +}; + +export type BasicTabsProps = { + selectedQueries: string[]; + queryEvents: QueryEvent[]; +}; + +export type ParentTabsProps = { + queryEvents: QueryEvent[]; + selectedQueries: string[]; + handleSelectionChange: (queries: string[]) => void; + devToolsPort: chrome.runtime.Port | null; +}; + +export type QueryTabProps = { + selectedQueries: string[]; + queryEvents: QueryEvent[]; + handleSelectionChange: (queries: string[]) => void; + devToolsPort: chrome.runtime.Port | null; +}; + +export type DataTabProps = { + queryDisplay: QueryDisplay[][]; + currentIndex: number; +}; + +export type SliderSectionProps = { + queryDisplay: QueryDisplay[][]; + currentIndex: number; + setCurrentIndex: (selected: number) => void; + handleAutoPlay: () => void; + selectedQueries: string[]; + isPlaying: boolean; +}; + +export type JsonFormatterType = { + jsonData: JsonDataType; + queryKey: string; + expandNodesFunc?: ExpandNodesFuncType; // this should be required but getting errors when it's not +}; + +export type JsonDiffType = { + oldJson?: JsonDataType | string; // optional in case you're on first state + currentJson: JsonDataType | string; // or string since state gets initialized to an empty string + queryKey: string; + isHidden: boolean; +}; + +// variable types +export type QueryEvent = { + eventType: string; + queryKey: string[]; + queryHash: string; + timestamp: Date; + queryData?: any; +}; + +export type QueryData = { + [queryName: string]: { + updates: QueryEvent[]; + }; +}; + +export type QueryDisplay = { + queryKey: string; + queryData: any; +}; + +export type JsonDataType = { + [key: string]: any; +}; + +// function types + +export type ExpandNodesFuncType = ( + keyPath: ReadonlyArray, + value: any, + layer: number +) => boolean; diff --git a/test-extension/tsconfig.json b/test-extension/tsconfig.json new file mode 100644 index 0000000..4544c04 --- /dev/null +++ b/test-extension/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "target": "ES6", + "lib": ["dom", "dom.iterable", "esnext"], + "module": "esnext", + "moduleResolution": "node", + "jsx": "react-jsx", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "outDir": "./dist", + // "paths": { + // "@mui/styled-engine": ["./node_modules/@mui/styled-engine-sc"] + // }, + "resolveJsonModule": true, + "isolatedModules": true + }, + "include": ["src/**/*.ts", "src/**/*.tsx"], + "exclude": ["node_modules"] +} diff --git a/test-extension/webpack.config.js b/test-extension/webpack.config.js new file mode 100644 index 0000000..3e9d8e6 --- /dev/null +++ b/test-extension/webpack.config.js @@ -0,0 +1,83 @@ +const path = require('path'); +const HtmlWebpackPlugin = require('html-webpack-plugin'); +const CopyPlugin = require('copy-webpack-plugin'); + +module.exports = { + mode: 'production', + + entry: { + background: './background.ts', // distributes background.js + content: './content_scripts/content.ts', // distributes content.js + inject: './content_scripts/inject.ts', // distributes inject.js + devtools: './devtools/devtools.ts', // distributes devtools.js + panel: './src/index.tsx', // distributes panel.js + }, + + output: { + path: path.resolve(__dirname, 'dist'), + filename: '[name].js', + }, + + module: { + rules: [ + { + test: /\.(tsx?|jsx)$/, + exclude: /node_modules/, + use: [ + { + loader: 'babel-loader', + options: { + presets: [ + '@babel/preset-env', + '@babel/preset-react', + '@babel/preset-typescript', + ], + }, + }, + { + loader: 'ts-loader', + options: { + compilerOptions: { noEmit: false }, + }, + }, + ], + }, + { + test: /\.css$/, + use: ['style-loader', 'css-loader'], + }, + ], + }, + + plugins: [ + // distributes panel.html + new HtmlWebpackPlugin({ + template: 'public/index.html', + filename: 'panel.html', + chunks: ['panel'], + excludeChunks: ['devtools'], + }), + // distributes devtools.html + new HtmlWebpackPlugin({ + template: './devtools/devtools.html', + filename: 'devtools.html', + chunks: ['devtools'], + }), + new CopyPlugin({ + patterns: [ + { from: 'manifest.json', to: '.' }, // distributes manifest.json + { from: 'images', to: 'images' }, // distributes images/ + ], + }), + ], + + resolve: { + extensions: ['.tsx', '.ts', '.js', '.jsx'], + // alias: { + // '@mui/styled-engine': '@mui/styled-engine-sc', + // }, + }, + + // source map support for debugging (uncomment when needed) + devtool: 'cheap-module-source-map', +}; From af97b2f6197d1e844067c5b94b0f3a713100ae9e Mon Sep 17 00:00:00 2001 From: Austin Cavanagh Date: Tue, 2 Jan 2024 14:08:03 -0800 Subject: [PATCH 2/2] combined the examples and extension changes --- package/examples/example-3/package.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/package/examples/example-3/package.json b/package/examples/example-3/package.json index 7affd1d..e9ce595 100644 --- a/package/examples/example-3/package.json +++ b/package/examples/example-3/package.json @@ -4,9 +4,10 @@ "description": "", "main": "index.js", "scripts": { - "example-3-client": "cd client && npm run dev", - "example-3-server": "cd server && npm run server", - "example-3": "npm-run-all --parallel example-3-server example-3-client" + "ex-3-client": "cd client && npm run dev", + "ex-3-server": "cd server && npm run server", + "ex-3": "npm-run-all --parallel ex-3-server ex-3-client", + "ex-3-install-all": "(cd server && npm install) && (cd client && npm install)" }, "keywords": [], "author": "",