diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md
index ea5815c19..197753622 100644
--- a/.github/copilot-instructions.md
+++ b/.github/copilot-instructions.md
@@ -38,6 +38,7 @@ Located in the `src/Exceptionless.Web/ClientApp` directory.
- Code can be formatted and linted with `npm run format` and checked for errors with `npm run check` tasks.
- Don't use namespace imports unless importing svelte-shadcn component or from a barrel export index file.
- Limit use of $effect as there is usually a better way to solve the problem like using $derived.
+ - All single-line control statements in JavaScript must be enclosed in curly braces to ensure unambiguous control flow, enhance readability, and prevent potential errors arising from unintended statement grouping.
- **Architecture & Components:**
- Follow the Composite Component Pattern.
diff --git a/.vscode/launch.json b/.vscode/launch.json
index 75a8fa80f..dd21f3400 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -1,12 +1,28 @@
{
"version": "0.2.0",
"configurations": [
+ {
+ "name": "Aspire",
+ "type": "coreclr",
+ "request": "launch",
+ "preLaunchTask": "build",
+ "program": "${workspaceFolder}/src/Exceptionless.AppHost/bin/Debug/net9.0/Exceptionless.AppHost.dll",
+ "args": [],
+ "cwd": "${workspaceFolder}/src/Exceptionless.AppHost",
+ "stopAtEntry": false,
+ "serverReadyAction": {
+ "action": "openExternally",
+ "pattern": "\\bNow listening on:\\s+(https?://\\S+)"
+ },
+ "env": {
+ "AppMode": "Development"
+ }
+ },
{
"name": "Web",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
- // If you have changed target frameworks, make sure to update the program path.
"program": "${workspaceFolder}/src/Exceptionless.Web/bin/Debug/net9.0/Exceptionless.Web.dll",
"args": [],
"cwd": "${workspaceFolder}/src/Exceptionless.Web",
@@ -24,7 +40,6 @@
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
- // If you have changed target frameworks, make sure to update the program path.
"program": "${workspaceFolder}/src/Exceptionless.Job/bin/Debug/net9.0/Exceptionless.Job.dll",
"args": [],
"cwd": "${workspaceFolder}",
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 8a40e8900..bcb7ef541 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -17,6 +17,7 @@
"clsx",
"cmdk",
"colour",
+ "Contoso",
"dockerignore",
"editorconfig",
"elasticsearch",
@@ -43,6 +44,8 @@
"Serilog",
"sessionend",
"shadcn",
+ "shiki",
+ "shikijs",
"sonner",
"standardjs",
"superforms",
@@ -51,6 +54,7 @@
"typeschema",
"WCAG",
"websockets",
+ "Writeline",
"Xunit"
],
"css.customData": [
diff --git a/src/Exceptionless.Web/ClientApp/.npmrc b/src/Exceptionless.Web/ClientApp/.npmrc
index 0c05da457..b6f27f135 100644
--- a/src/Exceptionless.Web/ClientApp/.npmrc
+++ b/src/Exceptionless.Web/ClientApp/.npmrc
@@ -1,2 +1 @@
engine-strict=true
-resolution-mode=highest
diff --git a/src/Exceptionless.Web/ClientApp/package-lock.json b/src/Exceptionless.Web/ClientApp/package-lock.json
index 868eacbfb..ea3672e5d 100644
--- a/src/Exceptionless.Web/ClientApp/package-lock.json
+++ b/src/Exceptionless.Web/ClientApp/package-lock.json
@@ -10,69 +10,71 @@
"dependencies": {
"@exceptionless/browser": "^3.1.0",
"@exceptionless/fetchclient": "^0.40.0",
- "@tanstack/svelte-query": "https://pkg.pr.new/@tanstack/svelte-query@28f98f9",
- "@tanstack/svelte-query-devtools": "https://pkg.pr.new/@tanstack/svelte-query-devtools@28f98f9",
+ "@lucide/svelte": "^0.501.0",
+ "@tanstack/svelte-query": "https://pkg.pr.new/@tanstack/svelte-query@8c9ce9",
+ "@tanstack/svelte-query-devtools": "https://pkg.pr.new/@tanstack/svelte-query-devtools@8c9ce9",
"@tanstack/svelte-table": "^9.0.0-alpha.10",
"@typeschema/class-validator": "^0.3.0",
- "bits-ui": "^1.3.9",
+ "bits-ui": "^1.3.19",
"class-validator": "^0.14.1",
"clsx": "^2.1.1",
- "formsnap": "^2.0.0",
+ "dompurify": "^3.2.5",
+ "formsnap": "^2.0.1",
"kit-query-params": "^0.0.26",
- "lucide-svelte": "^0.479.0",
- "mode-watcher": "^0.5.1",
- "oidc-client-ts": "^3.1.0",
+ "mode-watcher": "^1.0.2",
+ "oidc-client-ts": "^3.2.0",
"pretty-ms": "^9.2.0",
- "runed": "^0.24.0",
+ "runed": "^0.25.0",
+ "shiki": "^3.2.2",
"svelte-sonner": "^0.3.28",
"svelte-time": "^2.0.1",
- "sveltekit-superforms": "^2.24.0",
- "tailwind-merge": "^3.0.2",
+ "sveltekit-superforms": "^2.24.1",
+ "tailwind-merge": "^3.2.0",
"tailwind-variants": "^1.0.0",
- "tailwindcss": "^4.0.12",
+ "tailwindcss": "^4.1.4",
"throttle-debounce": "^5.0.2"
},
"devDependencies": {
- "@chromatic-com/storybook": "^3.2.5",
- "@eslint/compat": "^1.2.7",
- "@eslint/js": "^9.22.0",
- "@iconify-json/lucide": "^1.2.29",
- "@playwright/test": "^1.51.0",
- "@storybook/addon-a11y": "^8.6.4",
- "@storybook/addon-essentials": "^8.6.4",
- "@storybook/addon-interactions": "^8.6.4",
- "@storybook/addon-svelte-csf": "^5.0.0-next.26",
- "@storybook/blocks": "^8.6.4",
- "@storybook/svelte": "^8.6.4",
- "@storybook/sveltekit": "^8.6.4",
- "@storybook/test": "^8.6.4",
+ "@chromatic-com/storybook": "^3.2.6",
+ "@eslint/compat": "^1.2.8",
+ "@eslint/js": "^9.25.0",
+ "@iconify-json/lucide": "^1.2.37",
+ "@playwright/test": "^1.52.0",
+ "@storybook/addon-a11y": "^8.6.12",
+ "@storybook/addon-essentials": "^8.6.12",
+ "@storybook/addon-interactions": "^8.6.12",
+ "@storybook/addon-svelte-csf": "^5.0.0-next.28",
+ "@storybook/blocks": "^8.6.12",
+ "@storybook/svelte": "^8.6.12",
+ "@storybook/sveltekit": "^8.6.12",
+ "@storybook/test": "^8.6.12",
"@sveltejs/adapter-static": "^3.0.8",
- "@sveltejs/kit": "^2.19.0",
+ "@sveltejs/kit": "^2.20.7",
"@sveltejs/vite-plugin-svelte": "^5.0.3",
- "@tailwindcss/vite": "^4.0.12",
+ "@tailwindcss/vite": "^4.1.4",
"@testing-library/jest-dom": "^6.6.3",
"@testing-library/svelte": "^5.2.7",
"@types/eslint": "^9.6.1",
- "@types/node": "^22.13.10",
+ "@types/node": "^22.14.1",
"@types/throttle-debounce": "^5.0.2",
"cross-env": "^7.0.3",
- "eslint": "^9.22.0",
- "eslint-config-prettier": "^10.1.1",
- "eslint-plugin-perfectionist": "^4.10.1",
- "eslint-plugin-svelte": "^3.1.0",
- "jsdom": "^26.0.0",
+ "eslint": "^9.25.0",
+ "eslint-config-prettier": "^10.1.2",
+ "eslint-plugin-perfectionist": "^4.11.0",
+ "eslint-plugin-svelte": "^3.5.1",
+ "jsdom": "^26.1.0",
"prettier": "^3.5.3",
"prettier-plugin-svelte": "^3.3.3",
"prettier-plugin-tailwindcss": "^0.6.11",
- "storybook": "^8.6.4",
- "svelte": "^5.22.6",
- "svelte-check": "^4.1.5",
- "swagger-typescript-api": "^13.0.23",
+ "storybook": "^8.6.12",
+ "svelte": "^5.28.1",
+ "svelte-check": "^4.1.6",
+ "swagger-typescript-api": "^13.1.1",
"tslib": "^2.8.1",
- "typescript": "^5.8.2",
- "typescript-eslint": "^8.26.1",
- "vite": "^6.2.1",
- "vitest": "3.0.8"
+ "typescript": "^5.8.3",
+ "typescript-eslint": "^8.30.1",
+ "vite": "^6.3.2",
+ "vitest": "3.1.1"
}
},
"node_modules/@adobe/css-tools": {
@@ -164,10 +166,40 @@
"node": ">=6.9.0"
}
},
+ "node_modules/@biomejs/js-api": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/@biomejs/js-api/-/js-api-0.7.1.tgz",
+ "integrity": "sha512-VFdgFFZWcyCQxZcAasyv8Enpexn4CblMdWmr6izLYHTLcbd+z9x/LuKU71qnmClABfnYqZjiY7c8DKTVri3Ajw==",
+ "dev": true,
+ "license": "MIT OR Apache-2.0",
+ "peerDependencies": {
+ "@biomejs/wasm-bundler": "^1.9.2",
+ "@biomejs/wasm-nodejs": "^1.9.2",
+ "@biomejs/wasm-web": "^1.9.2"
+ },
+ "peerDependenciesMeta": {
+ "@biomejs/wasm-bundler": {
+ "optional": true
+ },
+ "@biomejs/wasm-nodejs": {
+ "optional": true
+ },
+ "@biomejs/wasm-web": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@biomejs/wasm-nodejs": {
+ "version": "1.9.4",
+ "resolved": "https://registry.npmjs.org/@biomejs/wasm-nodejs/-/wasm-nodejs-1.9.4.tgz",
+ "integrity": "sha512-ZqNlhKcZW6MW1LxWIOfh9YVrBykvzyFad3bOh6JJFraDnNa3NXboRDiaI8dmrbb0ZHXCU1Tsq6WQsKV2Vpp5dw==",
+ "dev": true,
+ "license": "MIT OR Apache-2.0"
+ },
"node_modules/@chromatic-com/storybook": {
- "version": "3.2.5",
- "resolved": "https://registry.npmjs.org/@chromatic-com/storybook/-/storybook-3.2.5.tgz",
- "integrity": "sha512-Y388ft6po5FmGKdkcqz3r2sW6aMF5DSBaatC0jvT5bI/Dh27RJw3gPTmXJcZVNjteNl6tpiP3qxZ9MswAk5luw==",
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/@chromatic-com/storybook/-/storybook-3.2.6.tgz",
+ "integrity": "sha512-FDmn5Ry2DzQdik+eq2sp/kJMMT36Ewe7ONXUXM2Izd97c7r6R/QyGli8eyh/F0iyqVvbLveNYFyF0dBOJNwLqw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -743,9 +775,9 @@
}
},
"node_modules/@eslint/compat": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.2.7.tgz",
- "integrity": "sha512-xvv7hJE32yhegJ8xNAnb62ggiAwTYHBpUCWhRxEj/ksvgDJuSXfoDkBcRYaYNFiJ+jH0IE3K16hd+xXzhBgNbg==",
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.2.8.tgz",
+ "integrity": "sha512-LqCYHdWL/QqKIJuZ/ucMAv8d4luKGs4oCPgpt8mWztQAtPrHfXKQ/XAUc8ljCHAfJCn6SvkpTcGt5Tsh8saowA==",
"dev": true,
"license": "Apache-2.0",
"engines": {
@@ -761,9 +793,9 @@
}
},
"node_modules/@eslint/config-array": {
- "version": "0.19.2",
- "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz",
- "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==",
+ "version": "0.20.0",
+ "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.0.tgz",
+ "integrity": "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
@@ -776,9 +808,9 @@
}
},
"node_modules/@eslint/config-helpers": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.1.0.tgz",
- "integrity": "sha512-kLrdPDJE1ckPo94kmPPf9Hfd0DU0Jw6oKYrhe+pwSC0iTUInmTa+w6fw8sGgcfkFJGNdWOUeOaDM4quW4a7OkA==",
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.1.tgz",
+ "integrity": "sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw==",
"dev": true,
"license": "Apache-2.0",
"engines": {
@@ -786,9 +818,9 @@
}
},
"node_modules/@eslint/core": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz",
- "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==",
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz",
+ "integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
@@ -799,9 +831,9 @@
}
},
"node_modules/@eslint/eslintrc": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.0.tgz",
- "integrity": "sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==",
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz",
+ "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -823,9 +855,9 @@
}
},
"node_modules/@eslint/js": {
- "version": "9.22.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.22.0.tgz",
- "integrity": "sha512-vLFajx9o8d1/oL2ZkpMYbkLv8nDB6yaIwFNt7nI4+I80U/z03SxmfOMsLbvWr3p7C+Wnoh//aOu2pQW8cS0HCQ==",
+ "version": "9.25.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.25.0.tgz",
+ "integrity": "sha512-iWhsUS8Wgxz9AXNfvfOPFSW4VfMXdVhp1hjkZVhXCrpgh/aLcc45rX6MPu+tIVUWDw0HfNwth7O28M1xDxNf9w==",
"dev": true,
"license": "MIT",
"engines": {
@@ -843,13 +875,13 @@
}
},
"node_modules/@eslint/plugin-kit": {
- "version": "0.2.7",
- "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz",
- "integrity": "sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==",
+ "version": "0.2.8",
+ "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.8.tgz",
+ "integrity": "sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "@eslint/core": "^0.12.0",
+ "@eslint/core": "^0.13.0",
"levn": "^0.4.1"
},
"engines": {
@@ -1042,9 +1074,9 @@
}
},
"node_modules/@iconify-json/lucide": {
- "version": "1.2.29",
- "resolved": "https://registry.npmjs.org/@iconify-json/lucide/-/lucide-1.2.29.tgz",
- "integrity": "sha512-bMrbX2zNnm+i601Yd5i7EClpOS4dWCe3q2B9k+f3RUFLOknQP1oj3D9upEN7ATbCJ/AmkKnFW5ND17ppX/Be8Q==",
+ "version": "1.2.37",
+ "resolved": "https://registry.npmjs.org/@iconify-json/lucide/-/lucide-1.2.37.tgz",
+ "integrity": "sha512-fiI8A8prb0WPvc5YDIbW1SVlRKwJpR3YGBe41U0Gen1/B9I41K9miU2yAk1e6NVLEdkj17hG0hdaQrAIbs+2Pw==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -1115,6 +1147,15 @@
"@jridgewell/sourcemap-codec": "^1.4.14"
}
},
+ "node_modules/@lucide/svelte": {
+ "version": "0.501.0",
+ "resolved": "https://registry.npmjs.org/@lucide/svelte/-/svelte-0.501.0.tgz",
+ "integrity": "sha512-W3YWDyANY+Gi1wzf4JKK5bRYGqRQFAIDbNmMR1ujZ/TR+/jT+8rj9txn5XEuxygYn0ioEw5EcaVewDWSUOU/bg==",
+ "license": "ISC",
+ "peerDependencies": {
+ "svelte": "^5"
+ }
+ },
"node_modules/@mdx-js/react": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.0.tgz",
@@ -1172,13 +1213,13 @@
}
},
"node_modules/@playwright/test": {
- "version": "1.51.0",
- "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.51.0.tgz",
- "integrity": "sha512-dJ0dMbZeHhI+wb77+ljx/FeC8VBP6j/rj9OAojO08JI80wTZy6vRk9KvHKiDCUh4iMpEiseMgqRBIeW+eKX6RA==",
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.52.0.tgz",
+ "integrity": "sha512-uh6W7sb55hl7D6vsAeA+V2p5JnlAqzhqFyF0VcJkKZXkgnFcVG9PziERRHQfPLfNGx1C292a4JqbWzhR8L4R1g==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "playwright": "1.51.0"
+ "playwright": "1.52.0"
},
"bin": {
"playwright": "cli.js"
@@ -1204,9 +1245,9 @@
}
},
"node_modules/@rollup/rollup-android-arm-eabi": {
- "version": "4.34.8",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.8.tgz",
- "integrity": "sha512-q217OSE8DTp8AFHuNHXo0Y86e1wtlfVrXiAlwkIvGRQv9zbc6mE3sjIVfwI8sYUyNxwOg0j/Vm1RKM04JcWLJw==",
+ "version": "4.40.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.40.0.tgz",
+ "integrity": "sha512-+Fbls/diZ0RDerhE8kyC6hjADCXA1K4yVNlH0EYfd2XjyH0UGgzaQ8MlT0pCXAThfxv3QUAczHaL+qSv1E4/Cg==",
"cpu": [
"arm"
],
@@ -1217,9 +1258,9 @@
]
},
"node_modules/@rollup/rollup-android-arm64": {
- "version": "4.34.8",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.8.tgz",
- "integrity": "sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q==",
+ "version": "4.40.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.40.0.tgz",
+ "integrity": "sha512-PPA6aEEsTPRz+/4xxAmaoWDqh67N7wFbgFUJGMnanCFs0TV99M0M8QhhaSCks+n6EbQoFvLQgYOGXxlMGQe/6w==",
"cpu": [
"arm64"
],
@@ -1230,9 +1271,9 @@
]
},
"node_modules/@rollup/rollup-darwin-arm64": {
- "version": "4.34.8",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.8.tgz",
- "integrity": "sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q==",
+ "version": "4.40.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.40.0.tgz",
+ "integrity": "sha512-GwYOcOakYHdfnjjKwqpTGgn5a6cUX7+Ra2HeNj/GdXvO2VJOOXCiYYlRFU4CubFM67EhbmzLOmACKEfvp3J1kQ==",
"cpu": [
"arm64"
],
@@ -1243,9 +1284,9 @@
]
},
"node_modules/@rollup/rollup-darwin-x64": {
- "version": "4.34.8",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.8.tgz",
- "integrity": "sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw==",
+ "version": "4.40.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.40.0.tgz",
+ "integrity": "sha512-CoLEGJ+2eheqD9KBSxmma6ld01czS52Iw0e2qMZNpPDlf7Z9mj8xmMemxEucinev4LgHalDPczMyxzbq+Q+EtA==",
"cpu": [
"x64"
],
@@ -1256,9 +1297,9 @@
]
},
"node_modules/@rollup/rollup-freebsd-arm64": {
- "version": "4.34.8",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.8.tgz",
- "integrity": "sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA==",
+ "version": "4.40.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.40.0.tgz",
+ "integrity": "sha512-r7yGiS4HN/kibvESzmrOB/PxKMhPTlz+FcGvoUIKYoTyGd5toHp48g1uZy1o1xQvybwwpqpe010JrcGG2s5nkg==",
"cpu": [
"arm64"
],
@@ -1269,9 +1310,9 @@
]
},
"node_modules/@rollup/rollup-freebsd-x64": {
- "version": "4.34.8",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.8.tgz",
- "integrity": "sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q==",
+ "version": "4.40.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.40.0.tgz",
+ "integrity": "sha512-mVDxzlf0oLzV3oZOr0SMJ0lSDd3xC4CmnWJ8Val8isp9jRGl5Dq//LLDSPFrasS7pSm6m5xAcKaw3sHXhBjoRw==",
"cpu": [
"x64"
],
@@ -1282,9 +1323,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
- "version": "4.34.8",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.8.tgz",
- "integrity": "sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g==",
+ "version": "4.40.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.40.0.tgz",
+ "integrity": "sha512-y/qUMOpJxBMy8xCXD++jeu8t7kzjlOCkoxxajL58G62PJGBZVl/Gwpm7JK9+YvlB701rcQTzjUZ1JgUoPTnoQA==",
"cpu": [
"arm"
],
@@ -1295,9 +1336,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
- "version": "4.34.8",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.8.tgz",
- "integrity": "sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA==",
+ "version": "4.40.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.40.0.tgz",
+ "integrity": "sha512-GoCsPibtVdJFPv/BOIvBKO/XmwZLwaNWdyD8TKlXuqp0veo2sHE+A/vpMQ5iSArRUz/uaoj4h5S6Pn0+PdhRjg==",
"cpu": [
"arm"
],
@@ -1308,9 +1349,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-gnu": {
- "version": "4.34.8",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.8.tgz",
- "integrity": "sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A==",
+ "version": "4.40.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.40.0.tgz",
+ "integrity": "sha512-L5ZLphTjjAD9leJzSLI7rr8fNqJMlGDKlazW2tX4IUF9P7R5TMQPElpH82Q7eNIDQnQlAyiNVfRPfP2vM5Avvg==",
"cpu": [
"arm64"
],
@@ -1321,9 +1362,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-musl": {
- "version": "4.34.8",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.8.tgz",
- "integrity": "sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q==",
+ "version": "4.40.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.40.0.tgz",
+ "integrity": "sha512-ATZvCRGCDtv1Y4gpDIXsS+wfFeFuLwVxyUBSLawjgXK2tRE6fnsQEkE4csQQYWlBlsFztRzCnBvWVfcae/1qxQ==",
"cpu": [
"arm64"
],
@@ -1334,9 +1375,9 @@
]
},
"node_modules/@rollup/rollup-linux-loongarch64-gnu": {
- "version": "4.34.8",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.8.tgz",
- "integrity": "sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ==",
+ "version": "4.40.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.40.0.tgz",
+ "integrity": "sha512-wG9e2XtIhd++QugU5MD9i7OnpaVb08ji3P1y/hNbxrQ3sYEelKJOq1UJ5dXczeo6Hj2rfDEL5GdtkMSVLa/AOg==",
"cpu": [
"loong64"
],
@@ -1347,9 +1388,9 @@
]
},
"node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
- "version": "4.34.8",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.8.tgz",
- "integrity": "sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw==",
+ "version": "4.40.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.40.0.tgz",
+ "integrity": "sha512-vgXfWmj0f3jAUvC7TZSU/m/cOE558ILWDzS7jBhiCAFpY2WEBn5jqgbqvmzlMjtp8KlLcBlXVD2mkTSEQE6Ixw==",
"cpu": [
"ppc64"
],
@@ -1360,9 +1401,22 @@
]
},
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
- "version": "4.34.8",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.8.tgz",
- "integrity": "sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw==",
+ "version": "4.40.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.40.0.tgz",
+ "integrity": "sha512-uJkYTugqtPZBS3Z136arevt/FsKTF/J9dEMTX/cwR7lsAW4bShzI2R0pJVw+hcBTWF4dxVckYh72Hk3/hWNKvA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-musl": {
+ "version": "4.40.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.40.0.tgz",
+ "integrity": "sha512-rKmSj6EXQRnhSkE22+WvrqOqRtk733x3p5sWpZilhmjnkHkpeCgWsFFo0dGnUGeA+OZjRl3+VYq+HyCOEuwcxQ==",
"cpu": [
"riscv64"
],
@@ -1373,9 +1427,9 @@
]
},
"node_modules/@rollup/rollup-linux-s390x-gnu": {
- "version": "4.34.8",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.8.tgz",
- "integrity": "sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA==",
+ "version": "4.40.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.40.0.tgz",
+ "integrity": "sha512-SpnYlAfKPOoVsQqmTFJ0usx0z84bzGOS9anAC0AZ3rdSo3snecihbhFTlJZ8XMwzqAcodjFU4+/SM311dqE5Sw==",
"cpu": [
"s390x"
],
@@ -1386,9 +1440,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.34.8",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.8.tgz",
- "integrity": "sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA==",
+ "version": "4.40.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.40.0.tgz",
+ "integrity": "sha512-RcDGMtqF9EFN8i2RYN2W+64CdHruJ5rPqrlYw+cgM3uOVPSsnAQps7cpjXe9be/yDp8UC7VLoCoKC8J3Kn2FkQ==",
"cpu": [
"x64"
],
@@ -1399,9 +1453,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-musl": {
- "version": "4.34.8",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.8.tgz",
- "integrity": "sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ==",
+ "version": "4.40.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.40.0.tgz",
+ "integrity": "sha512-HZvjpiUmSNx5zFgwtQAV1GaGazT2RWvqeDi0hV+AtC8unqqDSsaFjPxfsO6qPtKRRg25SisACWnJ37Yio8ttaw==",
"cpu": [
"x64"
],
@@ -1412,9 +1466,9 @@
]
},
"node_modules/@rollup/rollup-win32-arm64-msvc": {
- "version": "4.34.8",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.8.tgz",
- "integrity": "sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ==",
+ "version": "4.40.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.40.0.tgz",
+ "integrity": "sha512-UtZQQI5k/b8d7d3i9AZmA/t+Q4tk3hOC0tMOMSq2GlMYOfxbesxG4mJSeDp0EHs30N9bsfwUvs3zF4v/RzOeTQ==",
"cpu": [
"arm64"
],
@@ -1425,9 +1479,9 @@
]
},
"node_modules/@rollup/rollup-win32-ia32-msvc": {
- "version": "4.34.8",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.8.tgz",
- "integrity": "sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w==",
+ "version": "4.40.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.40.0.tgz",
+ "integrity": "sha512-+m03kvI2f5syIqHXCZLPVYplP8pQch9JHyXKZ3AGMKlg8dCyr2PKHjwRLiW53LTrN/Nc3EqHOKxUxzoSPdKddA==",
"cpu": [
"ia32"
],
@@ -1438,9 +1492,9 @@
]
},
"node_modules/@rollup/rollup-win32-x64-msvc": {
- "version": "4.34.8",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.8.tgz",
- "integrity": "sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g==",
+ "version": "4.40.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.40.0.tgz",
+ "integrity": "sha512-lpPE1cLfP5oPzVjKMx10pgBmKELQnFJXHgvtHCtuJWOv8MxqdEIMNtgHgBFf7Ea2/7EuVwa9fodWUfXAlXZLZQ==",
"cpu": [
"x64"
],
@@ -1450,6 +1504,73 @@
"win32"
]
},
+ "node_modules/@shikijs/core": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.2.2.tgz",
+ "integrity": "sha512-yvlSKVMLjddAGBa2Yu+vUZxuu3sClOWW1AG+UtJkvejYuGM5BVL35s6Ijiwb75O9QdEx6IkMxinHZSi8ZyrBaA==",
+ "license": "MIT",
+ "dependencies": {
+ "@shikijs/types": "3.2.2",
+ "@shikijs/vscode-textmate": "^10.0.2",
+ "@types/hast": "^3.0.4",
+ "hast-util-to-html": "^9.0.5"
+ }
+ },
+ "node_modules/@shikijs/engine-javascript": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.2.2.tgz",
+ "integrity": "sha512-tlDKfhWpF4jKLUyVAnmL+ggIC+0VyteNsUpBzh1iwWLZu4i+PelIRr0TNur6pRRo5UZIv3ss/PLMuwahg9S2hg==",
+ "license": "MIT",
+ "dependencies": {
+ "@shikijs/types": "3.2.2",
+ "@shikijs/vscode-textmate": "^10.0.2",
+ "oniguruma-to-es": "^4.1.0"
+ }
+ },
+ "node_modules/@shikijs/engine-oniguruma": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.2.2.tgz",
+ "integrity": "sha512-vyXRnWVCSvokwbaUD/8uPn6Gqsf5Hv7XwcW4AgiU4Z2qwy19sdr6VGzMdheKKN58tJOOe5MIKiNb901bgcUXYQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@shikijs/types": "3.2.2",
+ "@shikijs/vscode-textmate": "^10.0.2"
+ }
+ },
+ "node_modules/@shikijs/langs": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.2.2.tgz",
+ "integrity": "sha512-NY0Urg2dV9ETt3JIOWoMPuoDNwte3geLZ4M1nrPHbkDS8dWMpKcEwlqiEIGqtwZNmt5gKyWpR26ln2Bg2ecPgw==",
+ "license": "MIT",
+ "dependencies": {
+ "@shikijs/types": "3.2.2"
+ }
+ },
+ "node_modules/@shikijs/themes": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.2.2.tgz",
+ "integrity": "sha512-Zuq4lgAxVKkb0FFdhHSdDkALuRpsj1so1JdihjKNQfgM78EHxV2JhO10qPsMrm01FkE3mDRTdF68wfmsqjt6HA==",
+ "license": "MIT",
+ "dependencies": {
+ "@shikijs/types": "3.2.2"
+ }
+ },
+ "node_modules/@shikijs/types": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.2.2.tgz",
+ "integrity": "sha512-a5TiHk7EH5Lso8sHcLHbVNNhWKP0Wi3yVnXnu73g86n3WoDgEra7n3KszyeCGuyoagspQ2fzvy4cpSc8pKhb0A==",
+ "license": "MIT",
+ "dependencies": {
+ "@shikijs/vscode-textmate": "^10.0.2",
+ "@types/hast": "^3.0.4"
+ }
+ },
+ "node_modules/@shikijs/vscode-textmate": {
+ "version": "10.0.2",
+ "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz",
+ "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==",
+ "license": "MIT"
+ },
"node_modules/@sideway/address": {
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz",
@@ -1489,14 +1610,15 @@
"optional": true
},
"node_modules/@storybook/addon-a11y": {
- "version": "8.6.4",
- "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-8.6.4.tgz",
- "integrity": "sha512-B3/d2cRlnpAlE3kh+OBaly6qrWN9DEqwDyZsNeobaiXnNp11xoHZP2OWjEwXldc0pKls41jeOksXyXrILfvTng==",
+ "version": "8.6.12",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-8.6.12.tgz",
+ "integrity": "sha512-H28zHiL8uuv29XsVNf9VjNWsCeht/l66GPYHT7aom1jh+f3fS9+sutrCGEBC/T7cnRpy8ZyuHCtihUqS+RI4pg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@storybook/addon-highlight": "8.6.4",
- "@storybook/test": "8.6.4",
+ "@storybook/addon-highlight": "8.6.12",
+ "@storybook/global": "^5.0.0",
+ "@storybook/test": "8.6.12",
"axe-core": "^4.2.0"
},
"funding": {
@@ -1504,13 +1626,13 @@
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
- "storybook": "^8.6.4"
+ "storybook": "^8.6.12"
}
},
"node_modules/@storybook/addon-actions": {
- "version": "8.6.4",
- "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.6.4.tgz",
- "integrity": "sha512-mCcyfkeb19fJX0dpQqqZCnWBwjVn0/27xcpR0mbm/KW2wTByU6bKFFujgrHsX3ONl97IcIaUnmwwUwBr1ebZXw==",
+ "version": "8.6.12",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.6.12.tgz",
+ "integrity": "sha512-B5kfiRvi35oJ0NIo53CGH66H471A3XTzrfaa6SxXEJsgxxSeKScG5YeXcCvLiZfvANRQ7QDsmzPUgg0o3hdMXw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1525,13 +1647,13 @@
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
- "storybook": "^8.6.4"
+ "storybook": "^8.6.12"
}
},
"node_modules/@storybook/addon-backgrounds": {
- "version": "8.6.4",
- "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-8.6.4.tgz",
- "integrity": "sha512-lRYGumlYdd1RptQJvOTRMx/q2pDmg2MO5GX4la7VfI8KrUyeuC1ZOSRDEcXeTuAZWJztqmtymg6bB7cAAoxCFA==",
+ "version": "8.6.12",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-8.6.12.tgz",
+ "integrity": "sha512-lmIAma9BiiCTbJ8YfdZkXjpnAIrOUcgboLkt1f6XJ78vNEMnLNzD9gnh7Tssz1qrqvm34v9daDjIb+ggdiKp3Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1544,13 +1666,13 @@
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
- "storybook": "^8.6.4"
+ "storybook": "^8.6.12"
}
},
"node_modules/@storybook/addon-controls": {
- "version": "8.6.4",
- "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.6.4.tgz",
- "integrity": "sha512-oMMP9Bj0RMfYmaitjFt6oBSjKH4titUqP+wE6PrZ3v+Om56f4buqfNKXRf80As2OrsZn0pjj95muWzVVHqIhyQ==",
+ "version": "8.6.12",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.6.12.tgz",
+ "integrity": "sha512-9VSRPJWQVb9wLp21uvpxDGNctYptyUX0gbvxIWOHMH3R2DslSoq41lsC/oQ4l4zSHVdL+nq8sCTkhBxIsjKqdQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1563,20 +1685,20 @@
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
- "storybook": "^8.6.4"
+ "storybook": "^8.6.12"
}
},
"node_modules/@storybook/addon-docs": {
- "version": "8.6.4",
- "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.6.4.tgz",
- "integrity": "sha512-+kbcjvEAH0Xs+k+raAwfC0WmJilWhxBYnLLeazP3m5AkVI3sIjbzuuZ78NR0DCdRkw9BpuuXMHv5o4tIvLIUlw==",
+ "version": "8.6.12",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.6.12.tgz",
+ "integrity": "sha512-kEezQjAf/p3SpDzLABgg4fbT48B6dkT2LiZCKTRmCrJVtuReaAr4R9MMM6Jsph6XjbIj/SvOWf3CMeOPXOs9sg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@mdx-js/react": "^3.0.0",
- "@storybook/blocks": "8.6.4",
- "@storybook/csf-plugin": "8.6.4",
- "@storybook/react-dom-shim": "8.6.4",
+ "@storybook/blocks": "8.6.12",
+ "@storybook/csf-plugin": "8.6.12",
+ "@storybook/react-dom-shim": "8.6.12",
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
"ts-dedent": "^2.0.0"
@@ -1586,25 +1708,25 @@
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
- "storybook": "^8.6.4"
+ "storybook": "^8.6.12"
}
},
"node_modules/@storybook/addon-essentials": {
- "version": "8.6.4",
- "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.6.4.tgz",
- "integrity": "sha512-3pF0ZDl5EICqe0eOupPQq6PxeupwkLsfTWANuuJUYTJur82kvJd3Chb7P9vqw0A0QBx6106mL6PIyjrFJJMhLg==",
+ "version": "8.6.12",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.6.12.tgz",
+ "integrity": "sha512-Y/7e8KFlttaNfv7q2zoHMPdX6hPXHdsuQMAjYl5NG9HOAJREu4XBy4KZpbcozRe4ApZ78rYsN/MO1EuA+bNMIA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@storybook/addon-actions": "8.6.4",
- "@storybook/addon-backgrounds": "8.6.4",
- "@storybook/addon-controls": "8.6.4",
- "@storybook/addon-docs": "8.6.4",
- "@storybook/addon-highlight": "8.6.4",
- "@storybook/addon-measure": "8.6.4",
- "@storybook/addon-outline": "8.6.4",
- "@storybook/addon-toolbars": "8.6.4",
- "@storybook/addon-viewport": "8.6.4",
+ "@storybook/addon-actions": "8.6.12",
+ "@storybook/addon-backgrounds": "8.6.12",
+ "@storybook/addon-controls": "8.6.12",
+ "@storybook/addon-docs": "8.6.12",
+ "@storybook/addon-highlight": "8.6.12",
+ "@storybook/addon-measure": "8.6.12",
+ "@storybook/addon-outline": "8.6.12",
+ "@storybook/addon-toolbars": "8.6.12",
+ "@storybook/addon-viewport": "8.6.12",
"ts-dedent": "^2.0.0"
},
"funding": {
@@ -1612,13 +1734,13 @@
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
- "storybook": "^8.6.4"
+ "storybook": "^8.6.12"
}
},
"node_modules/@storybook/addon-highlight": {
- "version": "8.6.4",
- "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.6.4.tgz",
- "integrity": "sha512-jFREXnSE/7VuBR8kbluN+DBVkMXEV7MGuCe8Ytb1/D2Q0ohgJe395dfVgEgSMXErOwsn//NV/NgJp6JNXH2DrA==",
+ "version": "8.6.12",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.6.12.tgz",
+ "integrity": "sha512-9FITVxdoycZ+eXuAZL9ElWyML/0fPPn9UgnnAkrU7zkMi+Segq/Tx7y+WWanC5zfWZrXAuG6WTOYEXeWQdm//w==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1629,19 +1751,19 @@
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
- "storybook": "^8.6.4"
+ "storybook": "^8.6.12"
}
},
"node_modules/@storybook/addon-interactions": {
- "version": "8.6.4",
- "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.6.4.tgz",
- "integrity": "sha512-MZAAZjyvmJXCvM35zEiPpXz7vK+fimovt+WZKAMayAbXy5fT+7El0c9dDyTQ2norNKNj9QU/8hiU/1zARSUELQ==",
+ "version": "8.6.12",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.6.12.tgz",
+ "integrity": "sha512-cTAJlTq6uVZBEbtwdXkXoPQ4jHOAGKQnYSezBT4pfNkdjn/FnEeaQhMBDzf14h2wr5OgBnJa6Lmd8LD9ficz4A==",
"dev": true,
"license": "MIT",
"dependencies": {
"@storybook/global": "^5.0.0",
- "@storybook/instrumenter": "8.6.4",
- "@storybook/test": "8.6.4",
+ "@storybook/instrumenter": "8.6.12",
+ "@storybook/test": "8.6.12",
"polished": "^4.2.2",
"ts-dedent": "^2.2.0"
},
@@ -1650,13 +1772,13 @@
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
- "storybook": "^8.6.4"
+ "storybook": "^8.6.12"
}
},
"node_modules/@storybook/addon-measure": {
- "version": "8.6.4",
- "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.6.4.tgz",
- "integrity": "sha512-IpVL1rTy1tO8sy140eU3GdVB1QJ6J62+V6GSstcmqTLxDJQk5jFfg7hVbPEAZZ2sPFmeyceP9AMoBBo0EB355A==",
+ "version": "8.6.12",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.6.12.tgz",
+ "integrity": "sha512-tACmwqqOvutaQSduw8SMb62wICaT1rWaHtMN3vtWXuxgDPSdJQxLP+wdVyRYMAgpxhLyIO7YRf++Hfha9RHgFg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1668,13 +1790,13 @@
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
- "storybook": "^8.6.4"
+ "storybook": "^8.6.12"
}
},
"node_modules/@storybook/addon-outline": {
- "version": "8.6.4",
- "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.6.4.tgz",
- "integrity": "sha512-28nAslKTy0zWMdxAZcipMDYrEp1TkXVooAsqMGY5AMXMiORi1ObjhmjTLhVt1dXp+aDg0X+M3B6PqoingmHhqQ==",
+ "version": "8.6.12",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.6.12.tgz",
+ "integrity": "sha512-1ylwm+n1s40S91No0v9T4tCjZORu3GbnjINlyjYTDLLhQHyBQd3nWR1Y1eewU4xH4cW9SnSLcMQFS/82xHqU6A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1686,13 +1808,13 @@
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
- "storybook": "^8.6.4"
+ "storybook": "^8.6.12"
}
},
"node_modules/@storybook/addon-svelte-csf": {
- "version": "5.0.0-next.27",
- "resolved": "https://registry.npmjs.org/@storybook/addon-svelte-csf/-/addon-svelte-csf-5.0.0-next.27.tgz",
- "integrity": "sha512-iWEg084pWy2m9Z7jLDg+zXS8cjA2eRBrLe127KV9P1RYtyYzh45ALN72wVNoHmWzLNQl2CAh0ggTCKjMHHEjRg==",
+ "version": "5.0.0-next.28",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-svelte-csf/-/addon-svelte-csf-5.0.0-next.28.tgz",
+ "integrity": "sha512-Ojj6m8xEd3rlVP7PkNYv/0st4M0NZdSYWwnCowhsw3ItBasmyB8jmP5Ht2WmwH+EIUYq0mMfsRI7Rb6Yl63QbQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1713,9 +1835,9 @@
}
},
"node_modules/@storybook/addon-toolbars": {
- "version": "8.6.4",
- "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.6.4.tgz",
- "integrity": "sha512-PU2lvgwCKDn93zpp5MEog103UUmSSugcxDf18xaoa9D15Qtr+YuQHd2hXbxA7+dnYL9lA7MLYsstfxE91ieM4Q==",
+ "version": "8.6.12",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.6.12.tgz",
+ "integrity": "sha512-HEcSzo1DyFtIu5/ikVOmh5h85C1IvK9iFKSzBR6ice33zBOaehVJK+Z5f487MOXxPsZ63uvWUytwPyViGInj+g==",
"dev": true,
"license": "MIT",
"funding": {
@@ -1723,13 +1845,13 @@
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
- "storybook": "^8.6.4"
+ "storybook": "^8.6.12"
}
},
"node_modules/@storybook/addon-viewport": {
- "version": "8.6.4",
- "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.6.4.tgz",
- "integrity": "sha512-O5Ij+SRVg6grY6JOL5lOpsFyopZxuZEl2GHfh2SUf9hfowNS0QAgFpJupqXkwZzRSrlf9uKrLkjB6ulLgN2gOQ==",
+ "version": "8.6.12",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.6.12.tgz",
+ "integrity": "sha512-EXK2LArAnABsPP0leJKy78L/lbMWow+EIJfytEP5fHaW4EhMR6h7Hzaqzre6U0IMMr/jVFa1ci+m0PJ0eQc2bw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1740,13 +1862,13 @@
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
- "storybook": "^8.6.4"
+ "storybook": "^8.6.12"
}
},
"node_modules/@storybook/blocks": {
- "version": "8.6.4",
- "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.6.4.tgz",
- "integrity": "sha512-+oPXwT3KzJzsdkQuGEzBqOKTIFlb6qmlCWWbDwAnP0SEqYHoTVRTAIa44icFP0EZeIe+ypFVAm1E7kWTLmw1hQ==",
+ "version": "8.6.12",
+ "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.6.12.tgz",
+ "integrity": "sha512-DohlTq6HM1jDbHYiXL4ZvZ00VkhpUp5uftzj/CZDLY1fYHRjqtaTwWm2/OpceivMA8zDitLcq5atEZN+f+siTg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1760,7 +1882,7 @@
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
- "storybook": "^8.6.4"
+ "storybook": "^8.6.12"
},
"peerDependenciesMeta": {
"react": {
@@ -1772,13 +1894,13 @@
}
},
"node_modules/@storybook/builder-vite": {
- "version": "8.6.4",
- "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-8.6.4.tgz",
- "integrity": "sha512-FuSP2GhWVVTt6NdX0UJHhPOqhu09X4apSk+KWUf3aITRIJg9gbPYtJDBmxv1vXQEgvfCDdYBYbeG1khiO/Ghfw==",
+ "version": "8.6.12",
+ "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-8.6.12.tgz",
+ "integrity": "sha512-Gju21ud/3Qw4v2vLNaa5SuJECsI9ICNRr2G0UyCCzRvCHg8jpA9lDReu2NqhLDyFIuDG+ZYT38gcaHEUoNQ8KQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@storybook/csf-plugin": "8.6.4",
+ "@storybook/csf-plugin": "8.6.12",
"browser-assert": "^1.2.1",
"ts-dedent": "^2.0.0"
},
@@ -1787,14 +1909,14 @@
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
- "storybook": "^8.6.4",
+ "storybook": "^8.6.12",
"vite": "^4.0.0 || ^5.0.0 || ^6.0.0"
}
},
"node_modules/@storybook/components": {
- "version": "8.6.4",
- "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.6.4.tgz",
- "integrity": "sha512-91VEVFWOgHkEFoNFMk6gs1AuOE9Yp7N283BXQOW+AgP+atpzED6t/fIBPGqJ2ewAuzLJ+cFOrasSzoNwVfg3Jg==",
+ "version": "8.6.12",
+ "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.6.12.tgz",
+ "integrity": "sha512-FiaE8xvCdvKC2arYusgtlDNZ77b8ysr8njAYQZwwaIHjy27TbR2tEpLDCmUwSbANNmivtc/xGEiDDwcNppMWlQ==",
"dev": true,
"license": "MIT",
"funding": {
@@ -1806,13 +1928,13 @@
}
},
"node_modules/@storybook/core": {
- "version": "8.6.4",
- "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.6.4.tgz",
- "integrity": "sha512-glDbjEBi3wokw1T+KQtl93irHO9N0LCwgylWfWVXYDdQjUJ7pGRQGnw73gPX7Ds9tg3myXFC83GjmY94UYSMbA==",
+ "version": "8.6.12",
+ "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.6.12.tgz",
+ "integrity": "sha512-t+ZuDzAlsXKa6tLxNZT81gEAt4GNwsKP/Id2wluhmUWD/lwYW0uum1JiPUuanw8xD6TdakCW/7ULZc7aQUBLCQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@storybook/theming": "8.6.4",
+ "@storybook/theming": "8.6.12",
"better-opn": "^3.0.2",
"browser-assert": "^1.2.1",
"esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0",
@@ -1848,9 +1970,9 @@
}
},
"node_modules/@storybook/csf-plugin": {
- "version": "8.6.4",
- "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.6.4.tgz",
- "integrity": "sha512-7UpEp4PFTy1iKjZiRaYMG7zvnpLIRPyD0+lUJUlLYG4UIemV3onvnIi1Je1tSZ4hfTup+ulom7JLztVSHZGRMg==",
+ "version": "8.6.12",
+ "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.6.12.tgz",
+ "integrity": "sha512-6s8CnP1aoKPb3XtC0jRLUp8M5vTA8RhGAwQDKUsFpCC7g89JR9CaKs9FY2ZSzsNbjR15uASi7b3K8BzeYumYQg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1861,7 +1983,7 @@
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
- "storybook": "^8.6.4"
+ "storybook": "^8.6.12"
}
},
"node_modules/@storybook/global": {
@@ -1886,9 +2008,9 @@
}
},
"node_modules/@storybook/instrumenter": {
- "version": "8.6.4",
- "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.6.4.tgz",
- "integrity": "sha512-8OtIWLhayTUdqJEeXiPm6l3LTdSkWgQzzV2l2HIe4Adedeot+Rkwu6XHmyRDpnb0+Ish6zmMDqtJBxC2PQsy6Q==",
+ "version": "8.6.12",
+ "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.6.12.tgz",
+ "integrity": "sha512-VK5fYAF8jMwWP/u3YsmSwKGh+FeSY8WZn78flzRUwirp2Eg1WWjsqPRubAk7yTpcqcC/km9YMF3KbqfzRv2s/A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1900,13 +2022,13 @@
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
- "storybook": "^8.6.4"
+ "storybook": "^8.6.12"
}
},
"node_modules/@storybook/manager-api": {
- "version": "8.6.4",
- "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.6.4.tgz",
- "integrity": "sha512-w/Nn/VznfbIg2oezDfzZNwSTDY5kBZbzxVBHLCnIcyu2AKt2Yto3pfGi60SikFcTrsClaAKT7D92kMQ9qdQNQQ==",
+ "version": "8.6.12",
+ "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.6.12.tgz",
+ "integrity": "sha512-O0SpISeJLNTQvhSBOsWzzkCgs8vCjOq1578rwqHlC6jWWm4QmtfdyXqnv7rR1Hk08kQ+Dzqh0uhwHx0nfwy4nQ==",
"dev": true,
"license": "MIT",
"funding": {
@@ -1918,9 +2040,9 @@
}
},
"node_modules/@storybook/preview-api": {
- "version": "8.6.4",
- "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.6.4.tgz",
- "integrity": "sha512-5HBfxggzxGz0dg2c61NpPiQJav7UAmzsQlzmI5SzWOS6lkaylcDG8giwKzASVCXVWBxNji9qIDFM++UH090aDg==",
+ "version": "8.6.12",
+ "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.6.12.tgz",
+ "integrity": "sha512-84FE3Hrs0AYKHqpDZOwx1S/ffOfxBdL65lhCoeI8GoWwCkzwa9zEP3kvXBo/BnEDO7nAfxvMhjASTZXbKRJh5Q==",
"dev": true,
"license": "MIT",
"funding": {
@@ -1932,9 +2054,9 @@
}
},
"node_modules/@storybook/react-dom-shim": {
- "version": "8.6.4",
- "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.6.4.tgz",
- "integrity": "sha512-kTGJ3aFdmfCFzYaDFGmZWfTXr9xhbUaf0tJ6+nEjc4tME6mFwMI+tTUT6U/J6mJhZuc2DjvIRA7bM0x77dIDqw==",
+ "version": "8.6.12",
+ "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.6.12.tgz",
+ "integrity": "sha512-51QvoimkBzYs8s3rCYnY5h0cFqLz/Mh0vRcughwYaXckWzDBV8l67WBO5Xf5nBsukCbWyqBVPpEQLww8s7mrLA==",
"dev": true,
"license": "MIT",
"funding": {
@@ -1944,22 +2066,22 @@
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
- "storybook": "^8.6.4"
+ "storybook": "^8.6.12"
}
},
"node_modules/@storybook/svelte": {
- "version": "8.6.4",
- "resolved": "https://registry.npmjs.org/@storybook/svelte/-/svelte-8.6.4.tgz",
- "integrity": "sha512-qar3Ilr2lzcRQe54CVxdkzKv5nFnSrXz4xSlvGvKIaNlAYjvQNw/Vje+M7mm9gXIJC9ogTjL5wbF3llpNBxLdg==",
+ "version": "8.6.12",
+ "resolved": "https://registry.npmjs.org/@storybook/svelte/-/svelte-8.6.12.tgz",
+ "integrity": "sha512-74g07+mUq9Cfm9XStP/jLf1wqOgirPnj4WM0BOHMFolSjUwG58LIsAniB7O5PH7we0tf1+Qvj6Cjws2qUiB9/A==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@storybook/components": "8.6.4",
+ "@storybook/components": "8.6.12",
"@storybook/csf": "0.1.12",
"@storybook/global": "^5.0.0",
- "@storybook/manager-api": "8.6.4",
- "@storybook/preview-api": "8.6.4",
- "@storybook/theming": "8.6.4",
+ "@storybook/manager-api": "8.6.12",
+ "@storybook/preview-api": "8.6.12",
+ "@storybook/theming": "8.6.12",
"sveltedoc-parser": "^4.2.1",
"ts-dedent": "^2.0.0",
"type-fest": "~2.19"
@@ -1972,22 +2094,22 @@
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
- "storybook": "^8.6.4",
+ "storybook": "^8.6.12",
"svelte": "^4.0.0 || ^5.0.0"
}
},
"node_modules/@storybook/svelte-vite": {
- "version": "8.6.4",
- "resolved": "https://registry.npmjs.org/@storybook/svelte-vite/-/svelte-vite-8.6.4.tgz",
- "integrity": "sha512-X2cvQP+3LhRaJdcZIUi/CkCcCDxBrLYNkvMI/zPZwhYk4U2HJCxg/AInZE/wQ2juqJrHIQhv3zR7xW0pat4/+Q==",
+ "version": "8.6.12",
+ "resolved": "https://registry.npmjs.org/@storybook/svelte-vite/-/svelte-vite-8.6.12.tgz",
+ "integrity": "sha512-E9UNwc+4eAXDBOtR98Am1164L3w+JOielRipgmGNGvFD2xfuWzTmE6feERQimbGGcEnM5ImeYA0t2nLE9dCZ0g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@storybook/builder-vite": "8.6.4",
- "@storybook/svelte": "8.6.4",
+ "@storybook/builder-vite": "8.6.12",
+ "@storybook/svelte": "8.6.12",
"magic-string": "^0.30.0",
"svelte-preprocess": "^5.1.1",
- "svelte2tsx": "^0.7.13",
+ "svelte2tsx": "^0.7.35",
"sveltedoc-parser": "^4.2.1",
"ts-dedent": "^2.2.0",
"typescript": "^4.9.4 || ^5.0.0"
@@ -2001,7 +2123,7 @@
},
"peerDependencies": {
"@sveltejs/vite-plugin-svelte": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0",
- "storybook": "^8.6.4",
+ "storybook": "^8.6.12",
"svelte": "^4.0.0 || ^5.0.0",
"vite": "^4.0.0 || ^5.0.0 || ^6.0.0"
}
@@ -2017,16 +2139,16 @@
}
},
"node_modules/@storybook/sveltekit": {
- "version": "8.6.4",
- "resolved": "https://registry.npmjs.org/@storybook/sveltekit/-/sveltekit-8.6.4.tgz",
- "integrity": "sha512-e4OBROBcm754Hg6VJWTlsiyyQVa2FUy6rAqUiaEOIxhtE0mKPSDlBUHrzQQMhq7Wb3Zm7xsZxZY1uWxo+LgtOA==",
+ "version": "8.6.12",
+ "resolved": "https://registry.npmjs.org/@storybook/sveltekit/-/sveltekit-8.6.12.tgz",
+ "integrity": "sha512-QdHDmz3h+CyysvH+/Fmg7mqE5agQWz4pwlzwpuLt/rgOf3lBXCyc3lllPu8osnrG2F4V7z6MIYkoeBkZxIyU7Q==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@storybook/addon-actions": "8.6.4",
- "@storybook/builder-vite": "8.6.4",
- "@storybook/svelte": "8.6.4",
- "@storybook/svelte-vite": "8.6.4"
+ "@storybook/addon-actions": "8.6.12",
+ "@storybook/builder-vite": "8.6.12",
+ "@storybook/svelte": "8.6.12",
+ "@storybook/svelte-vite": "8.6.12"
},
"engines": {
"node": ">=18.0.0"
@@ -2036,20 +2158,20 @@
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
- "storybook": "^8.6.4",
+ "storybook": "^8.6.12",
"svelte": "^4.0.0 || ^5.0.0",
"vite": "^4.0.0 || ^5.0.0 || ^6.0.0"
}
},
"node_modules/@storybook/test": {
- "version": "8.6.4",
- "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.6.4.tgz",
- "integrity": "sha512-JPjfbaMMuCBT47pg3/MDD9vYFF5OGPAOWEB9nJWJ9IjYAb2Nd8OYJQIDoYJQNT+aLkTVLtvzGnVNwdxpouAJcQ==",
+ "version": "8.6.12",
+ "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.6.12.tgz",
+ "integrity": "sha512-0BK1Eg+VD0lNMB1BtxqHE3tP9FdkUmohtvWG7cq6lWvMrbCmAmh3VWai3RMCCDOukPFpjabOr8BBRLVvhNpv2w==",
"dev": true,
"license": "MIT",
"dependencies": {
"@storybook/global": "^5.0.0",
- "@storybook/instrumenter": "8.6.4",
+ "@storybook/instrumenter": "8.6.12",
"@testing-library/dom": "10.4.0",
"@testing-library/jest-dom": "6.5.0",
"@testing-library/user-event": "14.5.2",
@@ -2061,7 +2183,7 @@
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
- "storybook": "^8.6.4"
+ "storybook": "^8.6.12"
}
},
"node_modules/@storybook/test/node_modules/@testing-library/jest-dom": {
@@ -2107,9 +2229,9 @@
"license": "MIT"
},
"node_modules/@storybook/theming": {
- "version": "8.6.4",
- "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.6.4.tgz",
- "integrity": "sha512-g9Ns4uenC9oAWETaJ/tEKEIPMdS+CqjNWZz5Wbw1bLNhXwADZgKrVqawzZi64+bYYtQ+i8VCTjPoFa6s2eHiDQ==",
+ "version": "8.6.12",
+ "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.6.12.tgz",
+ "integrity": "sha512-6VjZg8HJ2Op7+KV7ihJpYrDnFtd9D1jrQnUS8LckcpuBXrIEbaut5+34ObY8ssQnSqkk2GwIZBBBQYQBCVvkOw==",
"dev": true,
"license": "MIT",
"funding": {
@@ -2140,9 +2262,9 @@
}
},
"node_modules/@sveltejs/kit": {
- "version": "2.19.0",
- "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.19.0.tgz",
- "integrity": "sha512-UTx28Ad4sYsLU//gqkEo5aFOPFBRT2uXCmXTsURqhurDCvzkVwXruJgBcHDaMiK6RKKpYRteDUaXYqZyGPgCXQ==",
+ "version": "2.20.7",
+ "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.20.7.tgz",
+ "integrity": "sha512-dVbLMubpJJSLI4OYB+yWYNHGAhgc2bVevWuBjDj8jFUXIJOAnLwYP3vsmtcgoxNGUXoq0rHS5f7MFCsryb6nzg==",
"license": "MIT",
"dependencies": {
"@types/cookie": "^0.6.0",
@@ -2217,44 +2339,46 @@
}
},
"node_modules/@tailwindcss/node": {
- "version": "4.0.12",
- "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.0.12.tgz",
- "integrity": "sha512-a6J11K1Ztdln9OrGfoM75/hChYPcHYGNYimqciMrvKXRmmPaS8XZTHhdvb5a3glz4Kd4ZxE1MnuFE2c0fGGmtg==",
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.4.tgz",
+ "integrity": "sha512-MT5118zaiO6x6hNA04OWInuAiP1YISXql8Z+/Y8iisV5nuhM8VXlyhRuqc2PEviPszcXI66W44bCIk500Oolhw==",
"dev": true,
"license": "MIT",
"dependencies": {
"enhanced-resolve": "^5.18.1",
"jiti": "^2.4.2",
- "tailwindcss": "4.0.12"
+ "lightningcss": "1.29.2",
+ "tailwindcss": "4.1.4"
}
},
"node_modules/@tailwindcss/oxide": {
- "version": "4.0.12",
- "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.0.12.tgz",
- "integrity": "sha512-DWb+myvJB9xJwelwT9GHaMc1qJj6MDXRDR0CS+T8IdkejAtu8ctJAgV4r1drQJLPeS7mNwq2UHW2GWrudTf63A==",
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.4.tgz",
+ "integrity": "sha512-p5wOpXyOJx7mKh5MXh5oKk+kqcz8T+bA3z/5VWWeQwFrmuBItGwz8Y2CHk/sJ+dNb9B0nYFfn0rj/cKHZyjahQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">= 10"
},
"optionalDependencies": {
- "@tailwindcss/oxide-android-arm64": "4.0.12",
- "@tailwindcss/oxide-darwin-arm64": "4.0.12",
- "@tailwindcss/oxide-darwin-x64": "4.0.12",
- "@tailwindcss/oxide-freebsd-x64": "4.0.12",
- "@tailwindcss/oxide-linux-arm-gnueabihf": "4.0.12",
- "@tailwindcss/oxide-linux-arm64-gnu": "4.0.12",
- "@tailwindcss/oxide-linux-arm64-musl": "4.0.12",
- "@tailwindcss/oxide-linux-x64-gnu": "4.0.12",
- "@tailwindcss/oxide-linux-x64-musl": "4.0.12",
- "@tailwindcss/oxide-win32-arm64-msvc": "4.0.12",
- "@tailwindcss/oxide-win32-x64-msvc": "4.0.12"
+ "@tailwindcss/oxide-android-arm64": "4.1.4",
+ "@tailwindcss/oxide-darwin-arm64": "4.1.4",
+ "@tailwindcss/oxide-darwin-x64": "4.1.4",
+ "@tailwindcss/oxide-freebsd-x64": "4.1.4",
+ "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.4",
+ "@tailwindcss/oxide-linux-arm64-gnu": "4.1.4",
+ "@tailwindcss/oxide-linux-arm64-musl": "4.1.4",
+ "@tailwindcss/oxide-linux-x64-gnu": "4.1.4",
+ "@tailwindcss/oxide-linux-x64-musl": "4.1.4",
+ "@tailwindcss/oxide-wasm32-wasi": "4.1.4",
+ "@tailwindcss/oxide-win32-arm64-msvc": "4.1.4",
+ "@tailwindcss/oxide-win32-x64-msvc": "4.1.4"
}
},
"node_modules/@tailwindcss/oxide-android-arm64": {
- "version": "4.0.12",
- "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.0.12.tgz",
- "integrity": "sha512-dAXCaemu3mHLXcA5GwGlQynX8n7tTdvn5i1zAxRvZ5iC9fWLl5bGnjZnzrQqT7ttxCvRwdVf3IHUnMVdDBO/kQ==",
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.4.tgz",
+ "integrity": "sha512-xMMAe/SaCN/vHfQYui3fqaBDEXMu22BVwQ33veLc8ep+DNy7CWN52L+TTG9y1K397w9nkzv+Mw+mZWISiqhmlA==",
"cpu": [
"arm64"
],
@@ -2269,9 +2393,9 @@
}
},
"node_modules/@tailwindcss/oxide-darwin-arm64": {
- "version": "4.0.12",
- "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.0.12.tgz",
- "integrity": "sha512-vPNI+TpJQ7sizselDXIJdYkx9Cu6JBdtmRWujw9pVIxW8uz3O2PjgGGzL/7A0sXI8XDjSyRChrUnEW9rQygmJQ==",
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.4.tgz",
+ "integrity": "sha512-JGRj0SYFuDuAGilWFBlshcexev2hOKfNkoX+0QTksKYq2zgF9VY/vVMq9m8IObYnLna0Xlg+ytCi2FN2rOL0Sg==",
"cpu": [
"arm64"
],
@@ -2286,9 +2410,9 @@
}
},
"node_modules/@tailwindcss/oxide-darwin-x64": {
- "version": "4.0.12",
- "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.0.12.tgz",
- "integrity": "sha512-RL/9jM41Fdq4Efr35C5wgLx98BirnrfwuD+zgMFK6Ir68HeOSqBhW9jsEeC7Y/JcGyPd3MEoJVIU4fAb7YLg7A==",
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.4.tgz",
+ "integrity": "sha512-sdDeLNvs3cYeWsEJ4H1DvjOzaGios4QbBTNLVLVs0XQ0V95bffT3+scptzYGPMjm7xv4+qMhCDrkHwhnUySEzA==",
"cpu": [
"x64"
],
@@ -2303,9 +2427,9 @@
}
},
"node_modules/@tailwindcss/oxide-freebsd-x64": {
- "version": "4.0.12",
- "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.0.12.tgz",
- "integrity": "sha512-7WzWiax+LguJcMEimY0Q4sBLlFXu1tYxVka3+G2M9KmU/3m84J3jAIV4KZWnockbHsbb2XgrEjtlJKVwHQCoRA==",
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.4.tgz",
+ "integrity": "sha512-VHxAqxqdghM83HslPhRsNhHo91McsxRJaEnShJOMu8mHmEj9Ig7ToHJtDukkuLWLzLboh2XSjq/0zO6wgvykNA==",
"cpu": [
"x64"
],
@@ -2320,9 +2444,9 @@
}
},
"node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": {
- "version": "4.0.12",
- "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.0.12.tgz",
- "integrity": "sha512-X9LRC7jjE1QlfIaBbXjY0PGeQP87lz5mEfLSVs2J1yRc9PSg1tEPS9NBqY4BU9v5toZgJgzKeaNltORyTs22TQ==",
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.4.tgz",
+ "integrity": "sha512-OTU/m/eV4gQKxy9r5acuesqaymyeSCnsx1cFto/I1WhPmi5HDxX1nkzb8KYBiwkHIGg7CTfo/AcGzoXAJBxLfg==",
"cpu": [
"arm"
],
@@ -2337,9 +2461,9 @@
}
},
"node_modules/@tailwindcss/oxide-linux-arm64-gnu": {
- "version": "4.0.12",
- "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.0.12.tgz",
- "integrity": "sha512-i24IFNq2402zfDdoWKypXz0ZNS2G4NKaA82tgBlE2OhHIE+4mg2JDb5wVfyP6R+MCm5grgXvurcIcKWvo44QiQ==",
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.4.tgz",
+ "integrity": "sha512-hKlLNvbmUC6z5g/J4H+Zx7f7w15whSVImokLPmP6ff1QqTVE+TxUM9PGuNsjHvkvlHUtGTdDnOvGNSEUiXI1Ww==",
"cpu": [
"arm64"
],
@@ -2354,9 +2478,9 @@
}
},
"node_modules/@tailwindcss/oxide-linux-arm64-musl": {
- "version": "4.0.12",
- "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.0.12.tgz",
- "integrity": "sha512-LmOdshJBfAGIBG0DdBWhI0n5LTMurnGGJCHcsm9F//ISfsHtCnnYIKgYQui5oOz1SUCkqsMGfkAzWyNKZqbGNw==",
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.4.tgz",
+ "integrity": "sha512-X3As2xhtgPTY/m5edUtddmZ8rCruvBvtxYLMw9OsZdH01L2gS2icsHRwxdU0dMItNfVmrBezueXZCHxVeeb7Aw==",
"cpu": [
"arm64"
],
@@ -2371,9 +2495,9 @@
}
},
"node_modules/@tailwindcss/oxide-linux-x64-gnu": {
- "version": "4.0.12",
- "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.0.12.tgz",
- "integrity": "sha512-OSK667qZRH30ep8RiHbZDQfqkXjnzKxdn0oRwWzgCO8CoTxV+MvIkd0BWdQbYtYuM1wrakARV/Hwp0eA/qzdbw==",
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.4.tgz",
+ "integrity": "sha512-2VG4DqhGaDSmYIu6C4ua2vSLXnJsb/C9liej7TuSO04NK+JJJgJucDUgmX6sn7Gw3Cs5ZJ9ZLrnI0QRDOjLfNQ==",
"cpu": [
"x64"
],
@@ -2388,9 +2512,9 @@
}
},
"node_modules/@tailwindcss/oxide-linux-x64-musl": {
- "version": "4.0.12",
- "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.0.12.tgz",
- "integrity": "sha512-uylhWq6OWQ8krV8Jk+v0H/3AZKJW6xYMgNMyNnUbbYXWi7hIVdxRKNUB5UvrlC3RxtgsK5EAV2i1CWTRsNcAnA==",
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.4.tgz",
+ "integrity": "sha512-v+mxVgH2kmur/X5Mdrz9m7TsoVjbdYQT0b4Z+dr+I4RvreCNXyCFELZL/DO0M1RsidZTrm6O1eMnV6zlgEzTMQ==",
"cpu": [
"x64"
],
@@ -2404,10 +2528,40 @@
"node": ">= 10"
}
},
+ "node_modules/@tailwindcss/oxide-wasm32-wasi": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.4.tgz",
+ "integrity": "sha512-2TLe9ir+9esCf6Wm+lLWTMbgklIjiF0pbmDnwmhR9MksVOq+e8aP3TSsXySnBDDvTTVd/vKu1aNttEGj3P6l8Q==",
+ "bundleDependencies": [
+ "@napi-rs/wasm-runtime",
+ "@emnapi/core",
+ "@emnapi/runtime",
+ "@tybys/wasm-util",
+ "@emnapi/wasi-threads",
+ "tslib"
+ ],
+ "cpu": [
+ "wasm32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "@emnapi/core": "^1.4.0",
+ "@emnapi/runtime": "^1.4.0",
+ "@emnapi/wasi-threads": "^1.0.1",
+ "@napi-rs/wasm-runtime": "^0.2.8",
+ "@tybys/wasm-util": "^0.9.0",
+ "tslib": "^2.8.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
"node_modules/@tailwindcss/oxide-win32-arm64-msvc": {
- "version": "4.0.12",
- "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.0.12.tgz",
- "integrity": "sha512-XDLnhMoXZEEOir1LK43/gHHwK84V1GlV8+pAncUAIN2wloeD+nNciI9WRIY/BeFTqES22DhTIGoilSO39xDb2g==",
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.4.tgz",
+ "integrity": "sha512-VlnhfilPlO0ltxW9/BgfLI5547PYzqBMPIzRrk4W7uupgCt8z6Trw/tAj6QUtF2om+1MH281Pg+HHUJoLesmng==",
"cpu": [
"arm64"
],
@@ -2422,9 +2576,9 @@
}
},
"node_modules/@tailwindcss/oxide-win32-x64-msvc": {
- "version": "4.0.12",
- "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.0.12.tgz",
- "integrity": "sha512-I/BbjCLpKDQucvtn6rFuYLst1nfFwSMYyPzkx/095RE+tuzk5+fwXuzQh7T3fIBTcbn82qH/sFka7yPGA50tLw==",
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.4.tgz",
+ "integrity": "sha512-+7S63t5zhYjslUGb8NcgLpFXD+Kq1F/zt5Xv5qTv7HaFTG/DHyHD9GA6ieNAxhgyA4IcKa/zy7Xx4Oad2/wuhw==",
"cpu": [
"x64"
],
@@ -2439,25 +2593,24 @@
}
},
"node_modules/@tailwindcss/vite": {
- "version": "4.0.12",
- "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.0.12.tgz",
- "integrity": "sha512-JM3gp601UJiryIZ9R2bSqalzcOy15RCybQ1Q+BJqDEwVyo4LkWKeqQAcrpHapWXY31OJFTuOUVBFDWMhzHm2Bg==",
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.4.tgz",
+ "integrity": "sha512-4UQeMrONbvrsXKXXp/uxmdEN5JIJ9RkH7YVzs6AMxC/KC1+Np7WZBaNIco7TEjlkthqxZbt8pU/ipD+hKjm80A==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@tailwindcss/node": "4.0.12",
- "@tailwindcss/oxide": "4.0.12",
- "lightningcss": "^1.29.1",
- "tailwindcss": "4.0.12"
+ "@tailwindcss/node": "4.1.4",
+ "@tailwindcss/oxide": "4.1.4",
+ "tailwindcss": "4.1.4"
},
"peerDependencies": {
"vite": "^5.2.0 || ^6"
}
},
"node_modules/@tanstack/query-core": {
- "version": "5.59.17",
- "resolved": "https://pkg.pr.new/TanStack/query/@tanstack/query-core@28f98f9",
- "integrity": "sha512-J4DA5i5gsX/DF1A/0E/w9iXiRIXVLFVXrrhJ1AE4lkr9FMXicqCcg9uLL4sKtOhAyXOnnNdIWv1gitwYqIyJGQ==",
+ "version": "5.66.2",
+ "resolved": "https://pkg.pr.new/TanStack/query/@tanstack/query-core@8c9ce998d84573adafedcbac4488159cd75e2473",
+ "integrity": "sha512-r1OlHRNgRHPwogF38HeX1K2O8FOzyPrrGKzuN17PdNtCv5TK1BBLB0VY5pkl7b2FKZN8accTwQKBaD5eMeEi2Q==",
"license": "MIT",
"funding": {
"type": "github",
@@ -2465,9 +2618,9 @@
}
},
"node_modules/@tanstack/query-devtools": {
- "version": "5.59.19",
- "resolved": "https://pkg.pr.new/TanStack/query/@tanstack/query-devtools@28f98f9",
- "integrity": "sha512-zVNNUroHuD6imCVUglg6OHD4Z7x9zCyhO5eWXjbsqlGaTuDWxxDcSDJjT9tUg7YI4i9QACojE5f0a/CuMWV4dQ==",
+ "version": "5.65.0",
+ "resolved": "https://pkg.pr.new/TanStack/query/@tanstack/query-devtools@8c9ce998d84573adafedcbac4488159cd75e2473",
+ "integrity": "sha512-/B6v/J9KpsMlVvnY+A3mhEF0+xTZIYcEXnl6qLIbGMp3bjPUYFaGueHJRI/iKBrkh3/T55OshXZH+yUXi2xSsg==",
"license": "MIT",
"funding": {
"type": "github",
@@ -2475,12 +2628,12 @@
}
},
"node_modules/@tanstack/svelte-query": {
- "version": "5.59.17",
- "resolved": "https://pkg.pr.new/@tanstack/svelte-query@28f98f9",
- "integrity": "sha512-E4WfeFyrBSXRmbn6Al1+lMQJrteEqIoSFDKVCQ8n/WD/PVMQp7VtYXTaLhXxFStTyDa61dmN80s1TdlnqDzLXg==",
+ "version": "5.66.2",
+ "resolved": "https://pkg.pr.new/@tanstack/svelte-query@8c9ce9",
+ "integrity": "sha512-Mz20bMMAxylhYoXD7cfOxj1lBjqcLfJXbW2Vv8vJSoxvmytALVy734LDcHlZeKdxuR3ukQrhXyW4GPTpabcBYg==",
"license": "MIT",
"dependencies": {
- "@tanstack/query-core": "https://pkg.pr.new/TanStack/query/@tanstack/query-core@28f98f9"
+ "@tanstack/query-core": "https://pkg.pr.new/TanStack/query/@tanstack/query-core@8c9ce998d84573adafedcbac4488159cd75e2473"
},
"funding": {
"type": "github",
@@ -2491,20 +2644,20 @@
}
},
"node_modules/@tanstack/svelte-query-devtools": {
- "version": "5.59.19",
- "resolved": "https://pkg.pr.new/@tanstack/svelte-query-devtools@28f98f9",
- "integrity": "sha512-yaRHSXXABVFhgODkIYmmPkciIXkj7+Ma3MtOPC4xA8tfOxPuFN5B7mLncF8UOLBLRWUYuC9/bd4pDp2/AaNaBA==",
+ "version": "5.66.2",
+ "resolved": "https://pkg.pr.new/@tanstack/svelte-query-devtools@8c9ce9",
+ "integrity": "sha512-3AQRwDuEuf1iXPkqVRK0uf+gSGlA1270ui3LwV0veBFGeiU9gd/zValMDACBYZ9pcEyHQd0SHDyDblUoBjFSmg==",
"license": "MIT",
"dependencies": {
- "@tanstack/query-devtools": "https://pkg.pr.new/TanStack/query/@tanstack/query-devtools@28f98f9",
- "esm-env": "^1.0.0"
+ "@tanstack/query-devtools": "https://pkg.pr.new/TanStack/query/@tanstack/query-devtools@8c9ce998d84573adafedcbac4488159cd75e2473",
+ "esm-env": "^1.2.1"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/tannerlinsley"
},
"peerDependencies": {
- "@tanstack/svelte-query": "^5.59.17",
+ "@tanstack/svelte-query": "^5.66.2",
"svelte": "^5.0.0"
}
},
@@ -2667,11 +2820,20 @@
}
},
"node_modules/@types/estree": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
- "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz",
+ "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==",
"license": "MIT"
},
+ "node_modules/@types/hast": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
+ "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
"node_modules/@types/json-schema": {
"version": "7.0.15",
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
@@ -2679,6 +2841,15 @@
"devOptional": true,
"license": "MIT"
},
+ "node_modules/@types/mdast": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz",
+ "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
"node_modules/@types/mdx": {
"version": "2.0.13",
"resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz",
@@ -2687,13 +2858,13 @@
"license": "MIT"
},
"node_modules/@types/node": {
- "version": "22.13.10",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.10.tgz",
- "integrity": "sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==",
+ "version": "22.14.1",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.1.tgz",
+ "integrity": "sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==",
"devOptional": true,
"license": "MIT",
"dependencies": {
- "undici-types": "~6.20.0"
+ "undici-types": "~6.21.0"
}
},
"node_modules/@types/pug": {
@@ -2704,9 +2875,9 @@
"license": "MIT"
},
"node_modules/@types/react": {
- "version": "19.0.10",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-19.0.10.tgz",
- "integrity": "sha512-JuRQ9KXLEjaUNjTWpzuR231Z2WpIwczOkBEIvbHNCzQefFIT0L8IqE6NV6ULLyC1SI/i234JnDoMkfg+RjQj2g==",
+ "version": "19.1.0",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.0.tgz",
+ "integrity": "sha512-UaicktuQI+9UKyA4njtDOGBD/67t8YEBt2xdfqu8+gP9hqPUPsiXlNPcpS2gVdjmis5GKPG3fCxbQLVgxsQZ8w==",
"dev": true,
"license": "MIT",
"peer": true,
@@ -2728,6 +2899,19 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/@types/trusted-types": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
+ "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/@types/unist": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz",
+ "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==",
+ "license": "MIT"
+ },
"node_modules/@types/uuid": {
"version": "9.0.8",
"resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz",
@@ -2773,17 +2957,17 @@
}
},
"node_modules/@typescript-eslint/eslint-plugin": {
- "version": "8.26.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.26.1.tgz",
- "integrity": "sha512-2X3mwqsj9Bd3Ciz508ZUtoQQYpOhU/kWoUqIf49H8Z0+Vbh6UF/y0OEYp0Q0axOGzaBGs7QxRwq0knSQ8khQNA==",
+ "version": "8.30.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.30.1.tgz",
+ "integrity": "sha512-v+VWphxMjn+1t48/jO4t950D6KR8JaJuNXzi33Ve6P8sEmPr5k6CEXjdGwT6+LodVnEa91EQCtwjWNUCPweo+Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/regexpp": "^4.10.0",
- "@typescript-eslint/scope-manager": "8.26.1",
- "@typescript-eslint/type-utils": "8.26.1",
- "@typescript-eslint/utils": "8.26.1",
- "@typescript-eslint/visitor-keys": "8.26.1",
+ "@typescript-eslint/scope-manager": "8.30.1",
+ "@typescript-eslint/type-utils": "8.30.1",
+ "@typescript-eslint/utils": "8.30.1",
+ "@typescript-eslint/visitor-keys": "8.30.1",
"graphemer": "^1.4.0",
"ignore": "^5.3.1",
"natural-compare": "^1.4.0",
@@ -2803,16 +2987,16 @@
}
},
"node_modules/@typescript-eslint/parser": {
- "version": "8.26.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.26.1.tgz",
- "integrity": "sha512-w6HZUV4NWxqd8BdeFf81t07d7/YV9s7TCWrQQbG5uhuvGUAW+fq1usZ1Hmz9UPNLniFnD8GLSsDpjP0hm1S4lQ==",
+ "version": "8.30.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.30.1.tgz",
+ "integrity": "sha512-H+vqmWwT5xoNrXqWs/fesmssOW70gxFlgcMlYcBaWNPIEWDgLa4W9nkSPmhuOgLnXq9QYgkZ31fhDyLhleCsAg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/scope-manager": "8.26.1",
- "@typescript-eslint/types": "8.26.1",
- "@typescript-eslint/typescript-estree": "8.26.1",
- "@typescript-eslint/visitor-keys": "8.26.1",
+ "@typescript-eslint/scope-manager": "8.30.1",
+ "@typescript-eslint/types": "8.30.1",
+ "@typescript-eslint/typescript-estree": "8.30.1",
+ "@typescript-eslint/visitor-keys": "8.30.1",
"debug": "^4.3.4"
},
"engines": {
@@ -2828,14 +3012,14 @@
}
},
"node_modules/@typescript-eslint/scope-manager": {
- "version": "8.26.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.26.1.tgz",
- "integrity": "sha512-6EIvbE5cNER8sqBu6V7+KeMZIC1664d2Yjt+B9EWUXrsyWpxx4lEZrmvxgSKRC6gX+efDL/UY9OpPZ267io3mg==",
+ "version": "8.30.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.30.1.tgz",
+ "integrity": "sha512-+C0B6ChFXZkuaNDl73FJxRYT0G7ufVPOSQkqkpM/U198wUwUFOtgo1k/QzFh1KjpBitaK7R1tgjVz6o9HmsRPg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.26.1",
- "@typescript-eslint/visitor-keys": "8.26.1"
+ "@typescript-eslint/types": "8.30.1",
+ "@typescript-eslint/visitor-keys": "8.30.1"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -2846,14 +3030,14 @@
}
},
"node_modules/@typescript-eslint/type-utils": {
- "version": "8.26.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.26.1.tgz",
- "integrity": "sha512-Kcj/TagJLwoY/5w9JGEFV0dclQdyqw9+VMndxOJKtoFSjfZhLXhYjzsQEeyza03rwHx2vFEGvrJWJBXKleRvZg==",
+ "version": "8.30.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.30.1.tgz",
+ "integrity": "sha512-64uBF76bfQiJyHgZISC7vcNz3adqQKIccVoKubyQcOnNcdJBvYOILV1v22Qhsw3tw3VQu5ll8ND6hycgAR5fEA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/typescript-estree": "8.26.1",
- "@typescript-eslint/utils": "8.26.1",
+ "@typescript-eslint/typescript-estree": "8.30.1",
+ "@typescript-eslint/utils": "8.30.1",
"debug": "^4.3.4",
"ts-api-utils": "^2.0.1"
},
@@ -2870,9 +3054,9 @@
}
},
"node_modules/@typescript-eslint/types": {
- "version": "8.26.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.26.1.tgz",
- "integrity": "sha512-n4THUQW27VmQMx+3P+B0Yptl7ydfceUj4ON/AQILAASwgYdZ/2dhfymRMh5egRUrvK5lSmaOm77Ry+lmXPOgBQ==",
+ "version": "8.30.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.30.1.tgz",
+ "integrity": "sha512-81KawPfkuulyWo5QdyG/LOKbspyyiW+p4vpn4bYO7DM/hZImlVnFwrpCTnmNMOt8CvLRr5ojI9nU1Ekpw4RcEw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -2884,14 +3068,14 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
- "version": "8.26.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.26.1.tgz",
- "integrity": "sha512-yUwPpUHDgdrv1QJ7YQal3cMVBGWfnuCdKbXw1yyjArax3353rEJP1ZA+4F8nOlQ3RfS2hUN/wze3nlY+ZOhvoA==",
+ "version": "8.30.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.30.1.tgz",
+ "integrity": "sha512-kQQnxymiUy9tTb1F2uep9W6aBiYODgq5EMSk6Nxh4Z+BDUoYUSa029ISs5zTzKBFnexQEh71KqwjKnRz58lusQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.26.1",
- "@typescript-eslint/visitor-keys": "8.26.1",
+ "@typescript-eslint/types": "8.30.1",
+ "@typescript-eslint/visitor-keys": "8.30.1",
"debug": "^4.3.4",
"fast-glob": "^3.3.2",
"is-glob": "^4.0.3",
@@ -2937,16 +3121,16 @@
}
},
"node_modules/@typescript-eslint/utils": {
- "version": "8.26.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.26.1.tgz",
- "integrity": "sha512-V4Urxa/XtSUroUrnI7q6yUTD3hDtfJ2jzVfeT3VK0ciizfK2q/zGC0iDh1lFMUZR8cImRrep6/q0xd/1ZGPQpg==",
+ "version": "8.30.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.30.1.tgz",
+ "integrity": "sha512-T/8q4R9En2tcEsWPQgB5BQ0XJVOtfARcUvOa8yJP3fh9M/mXraLxZrkCfGb6ChrO/V3W+Xbd04RacUEqk1CFEQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.4.0",
- "@typescript-eslint/scope-manager": "8.26.1",
- "@typescript-eslint/types": "8.26.1",
- "@typescript-eslint/typescript-estree": "8.26.1"
+ "@typescript-eslint/scope-manager": "8.30.1",
+ "@typescript-eslint/types": "8.30.1",
+ "@typescript-eslint/typescript-estree": "8.30.1"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -2961,13 +3145,13 @@
}
},
"node_modules/@typescript-eslint/visitor-keys": {
- "version": "8.26.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.26.1.tgz",
- "integrity": "sha512-AjOC3zfnxd6S4Eiy3jwktJPclqhFHNyd8L6Gycf9WUPoKZpgM5PjkxY1X7uSy61xVpiJDhhk7XT2NVsN3ALTWg==",
+ "version": "8.30.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.30.1.tgz",
+ "integrity": "sha512-aEhgas7aJ6vZnNFC7K4/vMGDGyOiqWcYZPpIWrTKuTAlsvDNKy2GFDqh9smL+iq069ZvR0YzEeq0B8NJlLzjFA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.26.1",
+ "@typescript-eslint/types": "8.30.1",
"eslint-visitor-keys": "^4.2.0"
},
"engines": {
@@ -2978,6 +3162,12 @@
"url": "https://opencollective.com/typescript-eslint"
}
},
+ "node_modules/@ungap/structured-clone": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz",
+ "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==",
+ "license": "ISC"
+ },
"node_modules/@vinejs/compiler": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/@vinejs/compiler/-/compiler-3.0.0.tgz",
@@ -3054,13 +3244,13 @@
}
},
"node_modules/@vitest/mocker": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.8.tgz",
- "integrity": "sha512-n3LjS7fcW1BCoF+zWZxG7/5XvuYH+lsFg+BDwwAz0arIwHQJFUEsKBQ0BLU49fCxuM/2HSeBPHQD8WjgrxMfow==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.1.1.tgz",
+ "integrity": "sha512-bmpJJm7Y7i9BBELlLuuM1J1Q6EQ6K5Ye4wcyOpOMXMcePYKSIYlpcrCm4l/O6ja4VJA5G2aMJiuZkZdnxlC3SA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/spy": "3.0.8",
+ "@vitest/spy": "3.1.1",
"estree-walker": "^3.0.3",
"magic-string": "^0.30.17"
},
@@ -3081,9 +3271,9 @@
}
},
"node_modules/@vitest/mocker/node_modules/@vitest/spy": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.8.tgz",
- "integrity": "sha512-MR+PzJa+22vFKYb934CejhR4BeRpMSoxkvNoDit68GQxRLSf11aT6CTj3XaqUU9rxgWJFnqicN/wxw6yBRkI1Q==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.1.1.tgz",
+ "integrity": "sha512-+EmrUOOXbKzLkTDwlsc/xrwOlPDXyVk3Z6P6K4oiCndxz7YLpp/0R0UsWVOKT0IXWjjBJuSMk6D27qipaupcvQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3107,13 +3297,13 @@
}
},
"node_modules/@vitest/runner": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.8.tgz",
- "integrity": "sha512-c7UUw6gEcOzI8fih+uaAXS5DwjlBaCJUo7KJ4VvJcjL95+DSR1kova2hFuRt3w41KZEFcOEiq098KkyrjXeM5w==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.1.1.tgz",
+ "integrity": "sha512-X/d46qzJuEDO8ueyjtKfxffiXraPRfmYasoC4i5+mlLEJ10UvPb0XH5M9C3gWuxd7BAQhpK42cJgJtq53YnWVA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/utils": "3.0.8",
+ "@vitest/utils": "3.1.1",
"pathe": "^2.0.3"
},
"funding": {
@@ -3121,9 +3311,9 @@
}
},
"node_modules/@vitest/runner/node_modules/@vitest/pretty-format": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.8.tgz",
- "integrity": "sha512-BNqwbEyitFhzYMYHUVbIvepOyeQOSFA/NeJMIP9enMntkkxLgOcgABH6fjyXG85ipTgvero6noreavGIqfJcIg==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.1.1.tgz",
+ "integrity": "sha512-dg0CIzNx+hMMYfNmSqJlLSXEmnNhMswcn3sXO7Tpldr0LiGmg3eXdLLhwkv2ZqgHb/d5xg5F7ezNFRA1fA13yA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3134,13 +3324,13 @@
}
},
"node_modules/@vitest/runner/node_modules/@vitest/utils": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.8.tgz",
- "integrity": "sha512-nkBC3aEhfX2PdtQI/QwAWp8qZWwzASsU4Npbcd5RdMPBSSLCpkZp52P3xku3s3uA0HIEhGvEcF8rNkBsz9dQ4Q==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.1.1.tgz",
+ "integrity": "sha512-1XIjflyaU2k3HMArJ50bwSh3wKWPD6Q47wz/NUSmRV0zNywPc4w79ARjg/i/aNINHwA+mIALhUVqD9/aUvZNgg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/pretty-format": "3.0.8",
+ "@vitest/pretty-format": "3.1.1",
"loupe": "^3.1.3",
"tinyrainbow": "^2.0.0"
},
@@ -3159,13 +3349,13 @@
}
},
"node_modules/@vitest/snapshot": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.8.tgz",
- "integrity": "sha512-x8IlMGSEMugakInj44nUrLSILh/zy1f2/BgH0UeHpNyOocG18M9CWVIFBaXPt8TrqVZWmcPjwfG/ht5tnpba8A==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.1.1.tgz",
+ "integrity": "sha512-bByMwaVWe/+1WDf9exFxWWgAixelSdiwo2p33tpqIlM14vW7PRV5ppayVXtfycqze4Qhtwag5sVhX400MLBOOw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/pretty-format": "3.0.8",
+ "@vitest/pretty-format": "3.1.1",
"magic-string": "^0.30.17",
"pathe": "^2.0.3"
},
@@ -3174,9 +3364,9 @@
}
},
"node_modules/@vitest/snapshot/node_modules/@vitest/pretty-format": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.8.tgz",
- "integrity": "sha512-BNqwbEyitFhzYMYHUVbIvepOyeQOSFA/NeJMIP9enMntkkxLgOcgABH6fjyXG85ipTgvero6noreavGIqfJcIg==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.1.1.tgz",
+ "integrity": "sha512-dg0CIzNx+hMMYfNmSqJlLSXEmnNhMswcn3sXO7Tpldr0LiGmg3eXdLLhwkv2ZqgHb/d5xg5F7ezNFRA1fA13yA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3360,13 +3550,6 @@
"node": ">=4"
}
},
- "node_modules/asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/available-typed-arrays": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
@@ -3423,9 +3606,9 @@
}
},
"node_modules/bits-ui": {
- "version": "1.3.9",
- "resolved": "https://registry.npmjs.org/bits-ui/-/bits-ui-1.3.9.tgz",
- "integrity": "sha512-OthauORYH8BXpqHWIktSEkzhB8RX694ashZpio9hNlOyDhsNtHW1Au+ZJ2uqikzeJTLFhjexiWA05Qsg5/9suw==",
+ "version": "1.3.19",
+ "resolved": "https://registry.npmjs.org/bits-ui/-/bits-ui-1.3.19.tgz",
+ "integrity": "sha512-2blb6dkgedHUsDXqCjvmtUi4Advgd9MhaJDT8r7bEWDzHI8HGsOoYsLeh8CxpEWWEYPrlGN+7k+kpxRhIDdFrQ==",
"license": "MIT",
"dependencies": {
"@floating-ui/core": "^1.6.4",
@@ -3509,6 +3692,35 @@
"license": "MIT",
"optional": true
},
+ "node_modules/c12": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/c12/-/c12-3.0.3.tgz",
+ "integrity": "sha512-uC3MacKBb0Z15o5QWCHvHWj5Zv34pGQj9P+iXKSpTuSGFS0KKhUWf4t9AJ+gWjYOdmWCPEGpEzm8sS0iqbpo1w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "chokidar": "^4.0.3",
+ "confbox": "^0.2.2",
+ "defu": "^6.1.4",
+ "dotenv": "^16.4.7",
+ "exsolve": "^1.0.4",
+ "giget": "^2.0.0",
+ "jiti": "^2.4.2",
+ "ohash": "^2.0.11",
+ "pathe": "^2.0.3",
+ "perfect-debounce": "^1.0.0",
+ "pkg-types": "^2.1.0",
+ "rc9": "^2.1.2"
+ },
+ "peerDependencies": {
+ "magicast": "^0.3.5"
+ },
+ "peerDependenciesMeta": {
+ "magicast": {
+ "optional": true
+ }
+ }
+ },
"node_modules/cac": {
"version": "6.7.14",
"resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz",
@@ -3599,6 +3811,16 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/ccount": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz",
+ "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
"node_modules/chai": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz",
@@ -3633,6 +3855,26 @@
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
+ "node_modules/character-entities-html4": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz",
+ "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/character-entities-legacy": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz",
+ "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
"node_modules/check-error": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz",
@@ -3683,6 +3925,16 @@
}
}
},
+ "node_modules/citty": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz",
+ "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "consola": "^3.2.3"
+ }
+ },
"node_modules/class-validator": {
"version": "0.14.1",
"resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.14.1.tgz",
@@ -3751,17 +4003,14 @@
"dev": true,
"license": "MIT"
},
- "node_modules/combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "dev": true,
+ "node_modules/comma-separated-tokens": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
+ "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==",
"license": "MIT",
- "dependencies": {
- "delayed-stream": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
}
},
"node_modules/concat-map": {
@@ -3771,10 +4020,17 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/confbox": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz",
+ "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/consola": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.0.tgz",
- "integrity": "sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA==",
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz",
+ "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -3790,33 +4046,6 @@
"node": ">= 0.6"
}
},
- "node_modules/cosmiconfig": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz",
- "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "env-paths": "^2.2.1",
- "import-fresh": "^3.3.0",
- "js-yaml": "^4.1.0",
- "parse-json": "^5.2.0"
- },
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/d-fischer"
- },
- "peerDependencies": {
- "typescript": ">=4.9.5"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
"node_modules/cross-env": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz",
@@ -4013,26 +4242,29 @@
"node": ">=8"
}
},
- "node_modules/delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "node_modules/defu": {
+ "version": "6.1.4",
+ "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz",
+ "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==",
"dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.4.0"
- }
+ "license": "MIT"
},
"node_modules/dequal": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
"integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=6"
}
},
+ "node_modules/destr": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz",
+ "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/detect-indent": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz",
@@ -4044,16 +4276,13 @@
}
},
"node_modules/detect-libc": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
- "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz",
+ "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==",
"devOptional": true,
"license": "Apache-2.0",
- "bin": {
- "detect-libc": "bin/detect-libc.js"
- },
"engines": {
- "node": ">=0.10"
+ "node": ">=8"
}
},
"node_modules/devalue": {
@@ -4062,12 +4291,18 @@
"integrity": "sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==",
"license": "MIT"
},
- "node_modules/didyoumean": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
- "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
- "dev": true,
- "license": "Apache-2.0"
+ "node_modules/devlop": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz",
+ "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==",
+ "license": "MIT",
+ "dependencies": {
+ "dequal": "^2.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
},
"node_modules/dlv": {
"version": "1.1.3",
@@ -4166,6 +4401,15 @@
"url": "https://github.com/fb55/domhandler?sponsor=1"
}
},
+ "node_modules/dompurify": {
+ "version": "3.2.5",
+ "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.5.tgz",
+ "integrity": "sha512-mLPd29uoRe9HpvwP2TxClGQBzGXeEC/we/q+bFlmPPmj2p2Ugl3r6ATu/UU1v77DXNcehiBg9zsr1dREyA/dJQ==",
+ "license": "(MPL-2.0 OR Apache-2.0)",
+ "optionalDependencies": {
+ "@types/trusted-types": "^2.0.7"
+ }
+ },
"node_modules/domutils": {
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
@@ -4197,6 +4441,19 @@
"url": "https://github.com/fb55/domhandler?sponsor=1"
}
},
+ "node_modules/dotenv": {
+ "version": "16.5.0",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz",
+ "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://dotenvx.com"
+ }
+ },
"node_modules/dunder-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
@@ -4230,6 +4487,12 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/emoji-regex-xs": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz",
+ "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==",
+ "license": "MIT"
+ },
"node_modules/enhanced-resolve": {
"version": "5.18.1",
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz",
@@ -4284,26 +4547,6 @@
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
- "node_modules/env-paths": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
- "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "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,
- "license": "MIT",
- "dependencies": {
- "is-arrayish": "^0.2.1"
- }
- },
"node_modules/error-stack-parser": {
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz",
@@ -4353,26 +4596,10 @@
"node": ">= 0.4"
}
},
- "node_modules/es-set-tostringtag": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
- "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "es-errors": "^1.3.0",
- "get-intrinsic": "^1.2.6",
- "has-tostringtag": "^1.0.2",
- "hasown": "^2.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/es-toolkit": {
- "version": "1.32.0",
- "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.32.0.tgz",
- "integrity": "sha512-ZfSfHP1l6ubgW/B/FRtqb9bYdMvI6jizbOSfbwwJNcOQ1QE6TFsC3jpQkZ900uUPSR3t3SU5Ds7UWKnYz+uP8Q==",
+ "node_modules/es-toolkit": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.32.0.tgz",
+ "integrity": "sha512-ZfSfHP1l6ubgW/B/FRtqb9bYdMvI6jizbOSfbwwJNcOQ1QE6TFsC3jpQkZ900uUPSR3t3SU5Ds7UWKnYz+uP8Q==",
"dev": true,
"license": "MIT",
"workspaces": [
@@ -4488,20 +4715,20 @@
}
},
"node_modules/eslint": {
- "version": "9.22.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.22.0.tgz",
- "integrity": "sha512-9V/QURhsRN40xuHXWjV64yvrzMjcz7ZyNoF2jJFmy9j/SLk0u1OLSZgXi28MrXjymnjEGSR80WCdab3RGMDveQ==",
+ "version": "9.25.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.25.0.tgz",
+ "integrity": "sha512-MsBdObhM4cEwkzCiraDv7A6txFXEqtNXOb877TsSp2FCkBNl8JfVQrmiuDqC1IkejT6JLPzYBXx/xAiYhyzgGA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.12.1",
- "@eslint/config-array": "^0.19.2",
- "@eslint/config-helpers": "^0.1.0",
- "@eslint/core": "^0.12.0",
- "@eslint/eslintrc": "^3.3.0",
- "@eslint/js": "9.22.0",
- "@eslint/plugin-kit": "^0.2.7",
+ "@eslint/config-array": "^0.20.0",
+ "@eslint/config-helpers": "^0.2.1",
+ "@eslint/core": "^0.13.0",
+ "@eslint/eslintrc": "^3.3.1",
+ "@eslint/js": "9.25.0",
+ "@eslint/plugin-kit": "^0.2.8",
"@humanfs/node": "^0.16.6",
"@humanwhocodes/module-importer": "^1.0.1",
"@humanwhocodes/retry": "^0.4.2",
@@ -4548,26 +4775,10 @@
}
}
},
- "node_modules/eslint-compat-utils": {
- "version": "0.6.4",
- "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.6.4.tgz",
- "integrity": "sha512-/u+GQt8NMfXO8w17QendT4gvO5acfxQsAKirAt0LVxDnr2N8YLCVbregaNc/Yhp7NM128DwCaRvr8PLDfeNkQw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "semver": "^7.5.4"
- },
- "engines": {
- "node": ">=12"
- },
- "peerDependencies": {
- "eslint": ">=6.0.0"
- }
- },
"node_modules/eslint-config-prettier": {
- "version": "10.1.1",
- "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.1.tgz",
- "integrity": "sha512-4EQQr6wXwS+ZJSzaR5ZCrYgLxqvUjdXctaEtBqHcbkW944B1NQyO4qpdHQbXBONfwxXdkAY81HH4+LUfrg+zPw==",
+ "version": "10.1.2",
+ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.2.tgz",
+ "integrity": "sha512-Epgp/EofAUeEpIdZkW60MHKvPyru1ruQJxPL+WIycnaPApuseK0Zpkrh/FwL9oIpQvIhJwV7ptOy0DWUjTlCiA==",
"dev": true,
"license": "MIT",
"bin": {
@@ -4578,14 +4789,14 @@
}
},
"node_modules/eslint-plugin-perfectionist": {
- "version": "4.10.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-perfectionist/-/eslint-plugin-perfectionist-4.10.1.tgz",
- "integrity": "sha512-GXwFfL47RfBLZRGQdrvGZw9Ali2T2GPW8p4Gyj2fyWQ9396R/HgJMf0m9kn7D6WXRwrINfTDGLS+QYIeok9qEg==",
+ "version": "4.11.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-perfectionist/-/eslint-plugin-perfectionist-4.11.0.tgz",
+ "integrity": "sha512-5s+ehXydnLPQpLDj5mJ0CnYj2fQe6v6gKA3tS+FZVBLzwMOh8skH+l+1Gni08rG0SdEcNhJyjQp/mEkDYK8czw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "^8.26.0",
- "@typescript-eslint/utils": "^8.26.0",
+ "@typescript-eslint/types": "^8.29.0",
+ "@typescript-eslint/utils": "^8.29.0",
"natural-orderby": "^5.0.0"
},
"engines": {
@@ -4596,22 +4807,21 @@
}
},
"node_modules/eslint-plugin-svelte": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-3.1.0.tgz",
- "integrity": "sha512-hSQyLDkuuHPJby1ixZfUVrfLON42mT0Odf18MbwAgFUPuyIwJlhy3acUY1/bxt+Njucq/dQxR543zYDqkBNLmw==",
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-3.5.1.tgz",
+ "integrity": "sha512-Qn1slddZHfqYiDO6IN8/iN3YL+VuHlgYjm30FT+hh0Jf/TX0jeZMTJXQMajFm5f6f6hURi+XO8P+NPYD+T4jkg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.4.1",
"@jridgewell/sourcemap-codec": "^1.5.0",
- "eslint-compat-utils": "^0.6.4",
"esutils": "^2.0.3",
"known-css-properties": "^0.35.0",
"postcss": "^8.4.49",
"postcss-load-config": "^3.1.4",
"postcss-safe-parser": "^7.0.0",
"semver": "^7.6.3",
- "svelte-eslint-parser": "^1.0.1"
+ "svelte-eslint-parser": "^1.1.1"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -4740,9 +4950,9 @@
}
},
"node_modules/esrap": {
- "version": "1.4.5",
- "resolved": "https://registry.npmjs.org/esrap/-/esrap-1.4.5.tgz",
- "integrity": "sha512-CjNMjkBWWZeHn+VX+gS8YvFwJ5+NDhg8aWZBSFJPR8qQduDNjbJodA2WcwCm7uQa5Rjqj+nZvVmceg1RbHFB9g==",
+ "version": "1.4.6",
+ "resolved": "https://registry.npmjs.org/esrap/-/esrap-1.4.6.tgz",
+ "integrity": "sha512-F/D2mADJ9SHY3IwksD4DAXjTt7qt7GWUf3/8RhCNWmC/67tyb55dpimHmy7EplakFaflV0R/PC+fdSPqrRHAQw==",
"license": "MIT",
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.4.15"
@@ -4805,15 +5015,22 @@
}
},
"node_modules/expect-type": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.1.0.tgz",
- "integrity": "sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.1.tgz",
+ "integrity": "sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==",
"dev": true,
"license": "Apache-2.0",
"engines": {
"node": ">=12.0.0"
}
},
+ "node_modules/exsolve": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.4.tgz",
+ "integrity": "sha512-xsZH6PXaER4XoV+NiT7JHp1bJodJVT+cxeSH1G0f0tlT0lJqYuHUP3bUx2HtfTDvOagMINYp8rsqusxud3RXhw==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/fast-check": {
"version": "3.23.2",
"resolved": "https://registry.npmjs.org/fast-check/-/fast-check-3.23.2.tgz",
@@ -4995,26 +5212,10 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/form-data": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz",
- "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "es-set-tostringtag": "^2.1.0",
- "mime-types": "^2.1.12"
- },
- "engines": {
- "node": ">= 6"
- }
- },
"node_modules/formsnap": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/formsnap/-/formsnap-2.0.0.tgz",
- "integrity": "sha512-W61elddvdzeBEs10nNvwxQnx/FctJFHBXPk9uluNQAckHo1nuSUvSQGIjtLjTKIbQdQnwEOoxqWrk9tuv0U7hA==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/formsnap/-/formsnap-2.0.1.tgz",
+ "integrity": "sha512-iJSe4YKd/W6WhLwKDVJU9FQeaJRpEFuolhju7ZXlRpUVyDdqFdMP8AUBICgnVvQPyP41IPAlBa/v0Eo35iE6wQ==",
"license": "MIT",
"dependencies": {
"svelte-toolbelt": "^0.5.0"
@@ -5023,6 +5224,9 @@
"node": ">=18",
"pnpm": ">=8.7.0"
},
+ "funding": {
+ "url": "https://github.com/sponsors/huntabyte"
+ },
"peerDependencies": {
"svelte": "^5.0.0",
"sveltekit-superforms": "^2.19.0"
@@ -5134,6 +5338,24 @@
"node": ">= 0.4"
}
},
+ "node_modules/giget": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/giget/-/giget-2.0.0.tgz",
+ "integrity": "sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "citty": "^0.1.6",
+ "consola": "^3.4.0",
+ "defu": "^6.1.4",
+ "node-fetch-native": "^1.6.6",
+ "nypm": "^0.6.0",
+ "pathe": "^2.0.3"
+ },
+ "bin": {
+ "giget": "dist/cli.mjs"
+ }
+ },
"node_modules/glob": {
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
@@ -5274,6 +5496,42 @@
"node": ">= 0.4"
}
},
+ "node_modules/hast-util-to-html": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz",
+ "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/unist": "^3.0.0",
+ "ccount": "^2.0.0",
+ "comma-separated-tokens": "^2.0.0",
+ "hast-util-whitespace": "^3.0.0",
+ "html-void-elements": "^3.0.0",
+ "mdast-util-to-hast": "^13.0.0",
+ "property-information": "^7.0.0",
+ "space-separated-tokens": "^2.0.0",
+ "stringify-entities": "^4.0.0",
+ "zwitch": "^2.0.4"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-whitespace": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz",
+ "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
"node_modules/html-encoding-sniffer": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz",
@@ -5287,6 +5545,16 @@
"node": ">=18"
}
},
+ "node_modules/html-void-elements": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz",
+ "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
"node_modules/htmlparser2-svelte": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/htmlparser2-svelte/-/htmlparser2-svelte-4.1.0.tgz",
@@ -5457,13 +5725,6 @@
"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,
- "license": "MIT"
- },
"node_modules/is-callable": {
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
@@ -5681,16 +5942,15 @@
}
},
"node_modules/jsdom": {
- "version": "26.0.0",
- "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-26.0.0.tgz",
- "integrity": "sha512-BZYDGVAIriBWTpIxYzrXjv3E/4u8+/pSG5bQdIYCbNCGOvsPkDQfTVLAIXAf9ETdCpduCVTkDe2NNZ8NIwUVzw==",
+ "version": "26.1.0",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-26.1.0.tgz",
+ "integrity": "sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==",
"dev": true,
"license": "MIT",
"dependencies": {
"cssstyle": "^4.2.1",
"data-urls": "^5.0.0",
- "decimal.js": "^10.4.3",
- "form-data": "^4.0.1",
+ "decimal.js": "^10.5.0",
"html-encoding-sniffer": "^4.0.0",
"http-proxy-agent": "^7.0.2",
"https-proxy-agent": "^7.0.6",
@@ -5700,12 +5960,12 @@
"rrweb-cssom": "^0.8.0",
"saxes": "^6.0.0",
"symbol-tree": "^3.2.4",
- "tough-cookie": "^5.0.0",
+ "tough-cookie": "^5.1.1",
"w3c-xmlserializer": "^5.0.0",
"webidl-conversions": "^7.0.0",
"whatwg-encoding": "^3.1.1",
"whatwg-mimetype": "^4.0.0",
- "whatwg-url": "^14.1.0",
+ "whatwg-url": "^14.1.1",
"ws": "^8.18.0",
"xml-name-validator": "^5.0.0"
},
@@ -5728,13 +5988,6 @@
"dev": true,
"license": "MIT"
},
- "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==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/json-schema-to-ts": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/json-schema-to-ts/-/json-schema-to-ts-3.1.1.tgz",
@@ -5840,13 +6093,13 @@
"license": "MIT"
},
"node_modules/lightningcss": {
- "version": "1.29.1",
- "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.29.1.tgz",
- "integrity": "sha512-FmGoeD4S05ewj+AkhTY+D+myDvXI6eL27FjHIjoyUkO/uw7WZD1fBVs0QxeYWa7E17CUHJaYX/RUGISCtcrG4Q==",
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.29.2.tgz",
+ "integrity": "sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==",
"devOptional": true,
"license": "MPL-2.0",
"dependencies": {
- "detect-libc": "^1.0.3"
+ "detect-libc": "^2.0.3"
},
"engines": {
"node": ">= 12.0.0"
@@ -5856,22 +6109,22 @@
"url": "https://opencollective.com/parcel"
},
"optionalDependencies": {
- "lightningcss-darwin-arm64": "1.29.1",
- "lightningcss-darwin-x64": "1.29.1",
- "lightningcss-freebsd-x64": "1.29.1",
- "lightningcss-linux-arm-gnueabihf": "1.29.1",
- "lightningcss-linux-arm64-gnu": "1.29.1",
- "lightningcss-linux-arm64-musl": "1.29.1",
- "lightningcss-linux-x64-gnu": "1.29.1",
- "lightningcss-linux-x64-musl": "1.29.1",
- "lightningcss-win32-arm64-msvc": "1.29.1",
- "lightningcss-win32-x64-msvc": "1.29.1"
+ "lightningcss-darwin-arm64": "1.29.2",
+ "lightningcss-darwin-x64": "1.29.2",
+ "lightningcss-freebsd-x64": "1.29.2",
+ "lightningcss-linux-arm-gnueabihf": "1.29.2",
+ "lightningcss-linux-arm64-gnu": "1.29.2",
+ "lightningcss-linux-arm64-musl": "1.29.2",
+ "lightningcss-linux-x64-gnu": "1.29.2",
+ "lightningcss-linux-x64-musl": "1.29.2",
+ "lightningcss-win32-arm64-msvc": "1.29.2",
+ "lightningcss-win32-x64-msvc": "1.29.2"
}
},
"node_modules/lightningcss-darwin-arm64": {
- "version": "1.29.1",
- "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.29.1.tgz",
- "integrity": "sha512-HtR5XJ5A0lvCqYAoSv2QdZZyoHNttBpa5EP9aNuzBQeKGfbyH5+UipLWvVzpP4Uml5ej4BYs5I9Lco9u1fECqw==",
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.29.2.tgz",
+ "integrity": "sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==",
"cpu": [
"arm64"
],
@@ -5889,9 +6142,9 @@
}
},
"node_modules/lightningcss-darwin-x64": {
- "version": "1.29.1",
- "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.29.1.tgz",
- "integrity": "sha512-k33G9IzKUpHy/J/3+9MCO4e+PzaFblsgBjSGlpAaFikeBFm8B/CkO3cKU9oI4g+fjS2KlkLM/Bza9K/aw8wsNA==",
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.29.2.tgz",
+ "integrity": "sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==",
"cpu": [
"x64"
],
@@ -5909,9 +6162,9 @@
}
},
"node_modules/lightningcss-freebsd-x64": {
- "version": "1.29.1",
- "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.29.1.tgz",
- "integrity": "sha512-0SUW22fv/8kln2LnIdOCmSuXnxgxVC276W5KLTwoehiO0hxkacBxjHOL5EtHD8BAXg2BvuhsJPmVMasvby3LiQ==",
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.29.2.tgz",
+ "integrity": "sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==",
"cpu": [
"x64"
],
@@ -5929,9 +6182,9 @@
}
},
"node_modules/lightningcss-linux-arm-gnueabihf": {
- "version": "1.29.1",
- "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.29.1.tgz",
- "integrity": "sha512-sD32pFvlR0kDlqsOZmYqH/68SqUMPNj+0pucGxToXZi4XZgZmqeX/NkxNKCPsswAXU3UeYgDSpGhu05eAufjDg==",
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.29.2.tgz",
+ "integrity": "sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==",
"cpu": [
"arm"
],
@@ -5949,9 +6202,9 @@
}
},
"node_modules/lightningcss-linux-arm64-gnu": {
- "version": "1.29.1",
- "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.29.1.tgz",
- "integrity": "sha512-0+vClRIZ6mmJl/dxGuRsE197o1HDEeeRk6nzycSy2GofC2JsY4ifCRnvUWf/CUBQmlrvMzt6SMQNMSEu22csWQ==",
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.29.2.tgz",
+ "integrity": "sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==",
"cpu": [
"arm64"
],
@@ -5969,9 +6222,9 @@
}
},
"node_modules/lightningcss-linux-arm64-musl": {
- "version": "1.29.1",
- "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.29.1.tgz",
- "integrity": "sha512-UKMFrG4rL/uHNgelBsDwJcBqVpzNJbzsKkbI3Ja5fg00sgQnHw/VrzUTEc4jhZ+AN2BvQYz/tkHu4vt1kLuJyw==",
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.29.2.tgz",
+ "integrity": "sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==",
"cpu": [
"arm64"
],
@@ -5989,9 +6242,9 @@
}
},
"node_modules/lightningcss-linux-x64-gnu": {
- "version": "1.29.1",
- "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.29.1.tgz",
- "integrity": "sha512-u1S+xdODy/eEtjADqirA774y3jLcm8RPtYztwReEXoZKdzgsHYPl0s5V52Tst+GKzqjebkULT86XMSxejzfISw==",
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.29.2.tgz",
+ "integrity": "sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==",
"cpu": [
"x64"
],
@@ -6009,9 +6262,9 @@
}
},
"node_modules/lightningcss-linux-x64-musl": {
- "version": "1.29.1",
- "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.29.1.tgz",
- "integrity": "sha512-L0Tx0DtaNUTzXv0lbGCLB/c/qEADanHbu4QdcNOXLIe1i8i22rZRpbT3gpWYsCh9aSL9zFujY/WmEXIatWvXbw==",
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.29.2.tgz",
+ "integrity": "sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==",
"cpu": [
"x64"
],
@@ -6029,9 +6282,9 @@
}
},
"node_modules/lightningcss-win32-arm64-msvc": {
- "version": "1.29.1",
- "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.29.1.tgz",
- "integrity": "sha512-QoOVnkIEFfbW4xPi+dpdft/zAKmgLgsRHfJalEPYuJDOWf7cLQzYg0DEh8/sn737FaeMJxHZRc1oBreiwZCjog==",
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.29.2.tgz",
+ "integrity": "sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==",
"cpu": [
"arm64"
],
@@ -6049,9 +6302,9 @@
}
},
"node_modules/lightningcss-win32-x64-msvc": {
- "version": "1.29.1",
- "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.29.1.tgz",
- "integrity": "sha512-NygcbThNBe4JElP+olyTI/doBNGJvLs3bFCRPdvuCcxZCcCZ71B858IHpdm7L1btZex0FvCmM17FK98Y9MRy1Q==",
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.29.2.tgz",
+ "integrity": "sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==",
"cpu": [
"x64"
],
@@ -6078,13 +6331,6 @@
"node": ">=10"
}
},
- "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==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/locate-character": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz",
@@ -6145,15 +6391,6 @@
"dev": true,
"license": "ISC"
},
- "node_modules/lucide-svelte": {
- "version": "0.479.0",
- "resolved": "https://registry.npmjs.org/lucide-svelte/-/lucide-svelte-0.479.0.tgz",
- "integrity": "sha512-epCj6WL86ykxg7oCQTmPEth5e11pwJUzIfG9ROUsWsTP+WPtb3qat+VmAjfx/r4TRW7memTFcbTPvMrZvKthqw==",
- "license": "ISC",
- "peerDependencies": {
- "svelte": "^3 || ^4 || ^5.0.0-next.42"
- }
- },
"node_modules/lz-string": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz",
@@ -6190,6 +6427,27 @@
"node": ">= 0.4"
}
},
+ "node_modules/mdast-util-to-hast": {
+ "version": "13.2.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz",
+ "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "@ungap/structured-clone": "^1.0.0",
+ "devlop": "^1.0.0",
+ "micromark-util-sanitize-uri": "^2.0.0",
+ "trim-lines": "^3.0.0",
+ "unist-util-position": "^5.0.0",
+ "unist-util-visit": "^5.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
"node_modules/memoize-weak": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/memoize-weak/-/memoize-weak-1.0.2.tgz",
@@ -6216,41 +6474,107 @@
"node": ">= 8"
}
},
- "node_modules/micromatch": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
- "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
- "dev": true,
+ "node_modules/micromark-util-character": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
+ "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
"license": "MIT",
"dependencies": {
- "braces": "^3.0.3",
- "picomatch": "^2.3.1"
- },
- "engines": {
- "node": ">=8.6"
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
}
},
- "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,
+ "node_modules/micromark-util-encode": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz",
+ "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/micromark-util-sanitize-uri": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz",
+ "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
"license": "MIT",
- "engines": {
- "node": ">= 0.6"
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-encode": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0"
}
},
- "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==",
+ "node_modules/micromark-util-symbol": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+ "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/micromark-util-types": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz",
+ "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "mime-db": "1.52.0"
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
},
"engines": {
- "node": ">= 0.6"
+ "node": ">=8.6"
}
},
"node_modules/min-indent": {
@@ -6300,12 +6624,16 @@
}
},
"node_modules/mode-watcher": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/mode-watcher/-/mode-watcher-0.5.1.tgz",
- "integrity": "sha512-adEC6T7TMX/kzQlaO/MtiQOSFekZfQu4MC+lXyoceQG+U5sKpJWZ4yKXqw846ExIuWJgedkOIPqAYYRk/xHm+w==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/mode-watcher/-/mode-watcher-1.0.2.tgz",
+ "integrity": "sha512-b3ghU4F4kZeRHHPlsVeCltBgYRHNr7HNyT9JTlvIIvuob7Vulu7iKCfaKNU4FGugBIFWyK5q4bDhqCeZy3Cuxw==",
"license": "MIT",
+ "dependencies": {
+ "runed": "^0.25.0",
+ "svelte-toolbelt": "^0.7.1"
+ },
"peerDependencies": {
- "svelte": "^4.0.0 || ^5.0.0-next.1"
+ "svelte": "^5.27.0"
}
},
"node_modules/mri": {
@@ -6412,6 +6740,13 @@
"node": "4.x || >=6.0.0"
}
},
+ "node_modules/node-fetch-native": {
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.6.tgz",
+ "integrity": "sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/node-fetch/node_modules/tr46": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
@@ -6467,6 +6802,26 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/nypm": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.6.0.tgz",
+ "integrity": "sha512-mn8wBFV9G9+UFHIrq+pZ2r2zL4aPau/by3kJb3cM7+5tQHMt6HGQB8FDIeKFYp8o0D2pnH6nVsO88N4AmUxIWg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "citty": "^0.1.6",
+ "consola": "^3.4.0",
+ "pathe": "^2.0.3",
+ "pkg-types": "^2.0.0",
+ "tinyexec": "^0.3.2"
+ },
+ "bin": {
+ "nypm": "dist/cli.mjs"
+ },
+ "engines": {
+ "node": "^14.16.0 || >=16.10.0"
+ }
+ },
"node_modules/oas-kit-common": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/oas-kit-common/-/oas-kit-common-1.0.8.tgz",
@@ -6572,10 +6927,17 @@
"node": ">= 6"
}
},
+ "node_modules/ohash": {
+ "version": "2.0.11",
+ "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz",
+ "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/oidc-client-ts": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/oidc-client-ts/-/oidc-client-ts-3.1.0.tgz",
- "integrity": "sha512-IDopEXjiwjkmJLYZo6BTlvwOtnlSniWZkKZoXforC/oLZHC9wkIxd25Kwtmo5yKFMMVcsp3JY6bhcNJqdYk8+g==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/oidc-client-ts/-/oidc-client-ts-3.2.0.tgz",
+ "integrity": "sha512-wUvVcG3SXzZDKHxi/VGQGaTUk9qguMKfYh26Y1zOVrQsu1zp85JWx/SjZzKSXK5j3NA1RcasgMoaHe6gt1WNtw==",
"license": "Apache-2.0",
"dependencies": {
"jwt-decode": "^4.0.0"
@@ -6594,6 +6956,24 @@
"wrappy": "1"
}
},
+ "node_modules/oniguruma-parser": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.5.4.tgz",
+ "integrity": "sha512-yNxcQ8sKvURiTwP0mV6bLQCYE7NKfKRRWunhbZnXgxSmB1OXa1lHrN3o4DZd+0Si0kU5blidK7BcROO8qv5TZA==",
+ "license": "MIT"
+ },
+ "node_modules/oniguruma-to-es": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.1.0.tgz",
+ "integrity": "sha512-SNwG909cSLo4vPyyPbU/VJkEc9WOXqu2ycBlfd1UCXLqk1IijcQktSBb2yRQ2UFPsDhpkaf+C1dtT3PkLK/yWA==",
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex-xs": "^1.0.0",
+ "oniguruma-parser": "^0.5.4",
+ "regex": "^6.0.1",
+ "regex-recursion": "^6.0.2"
+ }
+ },
"node_modules/open": {
"version": "8.4.2",
"resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz",
@@ -6675,25 +7055,6 @@
"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==",
- "dev": true,
- "license": "MIT",
- "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/parse-ms": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz",
@@ -6777,6 +7138,13 @@
"node": ">= 14.16"
}
},
+ "node_modules/perfect-debounce": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz",
+ "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/picocolors": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
@@ -6796,14 +7164,26 @@
"url": "https://github.com/sponsors/jonschlinkert"
}
},
+ "node_modules/pkg-types": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.1.0.tgz",
+ "integrity": "sha512-wmJwA+8ihJixSoHKxZJRBQG1oY8Yr9pGLzRmSsNms0iNWyHHAlZCa7mmKiFR10YPZuz/2k169JiS/inOjBCZ2A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "confbox": "^0.2.1",
+ "exsolve": "^1.0.1",
+ "pathe": "^2.0.3"
+ }
+ },
"node_modules/playwright": {
- "version": "1.51.0",
- "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.51.0.tgz",
- "integrity": "sha512-442pTfGM0xxfCYxuBa/Pu6B2OqxqqaYq39JS8QDMGThUvIOCd6s0ANDog3uwA0cHavVlnTQzGCN7Id2YekDSXA==",
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.52.0.tgz",
+ "integrity": "sha512-JAwMNMBlxJ2oD1kce4KPtMkDeKGHQstdpFPcPH3maElAXon/QZeTvtsfXmTMRyO9TslfoYOXkSsvao2nE1ilTw==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "playwright-core": "1.51.0"
+ "playwright-core": "1.52.0"
},
"bin": {
"playwright": "cli.js"
@@ -6816,9 +7196,9 @@
}
},
"node_modules/playwright-core": {
- "version": "1.51.0",
- "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.51.0.tgz",
- "integrity": "sha512-x47yPE3Zwhlil7wlNU/iktF7t2r/URR3VLbH6EknJd/04Qc/PSJ0EY3CMXipmglLG+zyRxW6HNo2EGbKLHPWMg==",
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.52.0.tgz",
+ "integrity": "sha512-l2osTgLXSMeuLZOML9qYODUQoPPnUsKsb5/P6LJ2e6uPKXUdPK5WYhN4z03G+YNbWmGDY4YENauNu4ZKczreHg==",
"dev": true,
"license": "Apache-2.0",
"bin": {
@@ -7173,6 +7553,16 @@
"license": "MIT",
"optional": true
},
+ "node_modules/property-information": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.0.0.tgz",
+ "integrity": "sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
"node_modules/punycode": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
@@ -7221,10 +7611,21 @@
],
"license": "MIT"
},
+ "node_modules/rc9": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/rc9/-/rc9-2.1.2.tgz",
+ "integrity": "sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "defu": "^6.1.4",
+ "destr": "^2.0.3"
+ }
+ },
"node_modules/react": {
- "version": "19.0.0",
- "resolved": "https://registry.npmjs.org/react/-/react-19.0.0.tgz",
- "integrity": "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==",
+ "version": "19.1.0",
+ "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz",
+ "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -7248,16 +7649,16 @@
}
},
"node_modules/react-dom": {
- "version": "19.0.0",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.0.0.tgz",
- "integrity": "sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==",
+ "version": "19.1.0",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz",
+ "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "scheduler": "^0.25.0"
+ "scheduler": "^0.26.0"
},
"peerDependencies": {
- "react": "^19.0.0"
+ "react": "^19.1.0"
}
},
"node_modules/react-is": {
@@ -7339,6 +7740,30 @@
"devOptional": true,
"license": "MIT"
},
+ "node_modules/regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/regex/-/regex-6.0.1.tgz",
+ "integrity": "sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==",
+ "license": "MIT",
+ "dependencies": {
+ "regex-utilities": "^2.3.0"
+ }
+ },
+ "node_modules/regex-recursion": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz",
+ "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==",
+ "license": "MIT",
+ "dependencies": {
+ "regex-utilities": "^2.3.0"
+ }
+ },
+ "node_modules/regex-utilities": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz",
+ "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==",
+ "license": "MIT"
+ },
"node_modules/regexpp": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
@@ -7398,12 +7823,12 @@
}
},
"node_modules/rollup": {
- "version": "4.34.8",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.8.tgz",
- "integrity": "sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ==",
+ "version": "4.40.0",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.40.0.tgz",
+ "integrity": "sha512-Noe455xmA96nnqH5piFtLobsGbCij7Tu+tb3c1vYjNbTkfzGqXqQXG3wJaYXkRZuQ0vEYN4bhwg7QnIrqB5B+w==",
"license": "MIT",
"dependencies": {
- "@types/estree": "1.0.6"
+ "@types/estree": "1.0.7"
},
"bin": {
"rollup": "dist/bin/rollup"
@@ -7413,25 +7838,26 @@
"npm": ">=8.0.0"
},
"optionalDependencies": {
- "@rollup/rollup-android-arm-eabi": "4.34.8",
- "@rollup/rollup-android-arm64": "4.34.8",
- "@rollup/rollup-darwin-arm64": "4.34.8",
- "@rollup/rollup-darwin-x64": "4.34.8",
- "@rollup/rollup-freebsd-arm64": "4.34.8",
- "@rollup/rollup-freebsd-x64": "4.34.8",
- "@rollup/rollup-linux-arm-gnueabihf": "4.34.8",
- "@rollup/rollup-linux-arm-musleabihf": "4.34.8",
- "@rollup/rollup-linux-arm64-gnu": "4.34.8",
- "@rollup/rollup-linux-arm64-musl": "4.34.8",
- "@rollup/rollup-linux-loongarch64-gnu": "4.34.8",
- "@rollup/rollup-linux-powerpc64le-gnu": "4.34.8",
- "@rollup/rollup-linux-riscv64-gnu": "4.34.8",
- "@rollup/rollup-linux-s390x-gnu": "4.34.8",
- "@rollup/rollup-linux-x64-gnu": "4.34.8",
- "@rollup/rollup-linux-x64-musl": "4.34.8",
- "@rollup/rollup-win32-arm64-msvc": "4.34.8",
- "@rollup/rollup-win32-ia32-msvc": "4.34.8",
- "@rollup/rollup-win32-x64-msvc": "4.34.8",
+ "@rollup/rollup-android-arm-eabi": "4.40.0",
+ "@rollup/rollup-android-arm64": "4.40.0",
+ "@rollup/rollup-darwin-arm64": "4.40.0",
+ "@rollup/rollup-darwin-x64": "4.40.0",
+ "@rollup/rollup-freebsd-arm64": "4.40.0",
+ "@rollup/rollup-freebsd-x64": "4.40.0",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.40.0",
+ "@rollup/rollup-linux-arm-musleabihf": "4.40.0",
+ "@rollup/rollup-linux-arm64-gnu": "4.40.0",
+ "@rollup/rollup-linux-arm64-musl": "4.40.0",
+ "@rollup/rollup-linux-loongarch64-gnu": "4.40.0",
+ "@rollup/rollup-linux-powerpc64le-gnu": "4.40.0",
+ "@rollup/rollup-linux-riscv64-gnu": "4.40.0",
+ "@rollup/rollup-linux-riscv64-musl": "4.40.0",
+ "@rollup/rollup-linux-s390x-gnu": "4.40.0",
+ "@rollup/rollup-linux-x64-gnu": "4.40.0",
+ "@rollup/rollup-linux-x64-musl": "4.40.0",
+ "@rollup/rollup-win32-arm64-msvc": "4.40.0",
+ "@rollup/rollup-win32-ia32-msvc": "4.40.0",
+ "@rollup/rollup-win32-x64-msvc": "4.40.0",
"fsevents": "~2.3.2"
}
},
@@ -7467,9 +7893,9 @@
}
},
"node_modules/runed": {
- "version": "0.24.0",
- "resolved": "https://registry.npmjs.org/runed/-/runed-0.24.0.tgz",
- "integrity": "sha512-kLp0qUdiwEn1Q9zrQlToN7g1PQ+F0XI7J3eABPi/hSwMMy0vEQAdmZQkCvy1BtynAmGiD8CwNSy06KH7iUsCNg==",
+ "version": "0.25.0",
+ "resolved": "https://registry.npmjs.org/runed/-/runed-0.25.0.tgz",
+ "integrity": "sha512-7+ma4AG9FT2sWQEA0Egf6mb7PBT2vHyuHail1ie8ropfSjvZGtEAx8YTmUjv/APCsdRRxEVvArNjALk9zFSOrg==",
"funding": [
"https://github.com/sponsors/huntabyte",
"https://github.com/sponsors/tglide"
@@ -7545,9 +7971,9 @@
}
},
"node_modules/scheduler": {
- "version": "0.25.0",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz",
- "integrity": "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==",
+ "version": "0.26.0",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz",
+ "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==",
"dev": true,
"license": "MIT"
},
@@ -7611,6 +8037,22 @@
"node": ">=8"
}
},
+ "node_modules/shiki": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.2.2.tgz",
+ "integrity": "sha512-0qWBkM2t/0NXPRcVgtLhtHv6Ak3Q5yI4K/ggMqcgLRKm4+pCs3namgZlhlat/7u2CuqNtlShNs9lENOG6n7UaQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@shikijs/core": "3.2.2",
+ "@shikijs/engine-javascript": "3.2.2",
+ "@shikijs/engine-oniguruma": "3.2.2",
+ "@shikijs/langs": "3.2.2",
+ "@shikijs/themes": "3.2.2",
+ "@shikijs/types": "3.2.2",
+ "@shikijs/vscode-textmate": "^10.0.2",
+ "@types/hast": "^3.0.4"
+ }
+ },
"node_modules/should": {
"version": "13.2.3",
"resolved": "https://registry.npmjs.org/should/-/should-13.2.3.tgz",
@@ -7747,6 +8189,16 @@
"node": ">=0.10.0"
}
},
+ "node_modules/space-separated-tokens": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz",
+ "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
"node_modules/stack-generator": {
"version": "2.0.10",
"resolved": "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.10.tgz",
@@ -7791,20 +8243,20 @@
}
},
"node_modules/std-env": {
- "version": "3.8.0",
- "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.0.tgz",
- "integrity": "sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==",
+ "version": "3.8.1",
+ "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.1.tgz",
+ "integrity": "sha512-vj5lIj3Mwf9D79hBkltk5qmkFI+biIKWS2IBxEyEU3AX1tUf7AoL8nSazCOiiqQsGKIq01SClsKEzweu34uwvA==",
"dev": true,
"license": "MIT"
},
"node_modules/storybook": {
- "version": "8.6.4",
- "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.6.4.tgz",
- "integrity": "sha512-XXh1Acvf1r3BQX0BDLQw6yhZ7yUGvYxIcKOBuMdetnX7iXtczipJTfw0uyFwk0ltkKEE9PpJvivYmARF3u64VQ==",
+ "version": "8.6.12",
+ "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.6.12.tgz",
+ "integrity": "sha512-Z/nWYEHBTLK1ZBtAWdhxC0l5zf7ioJ7G4+zYqtTdYeb67gTnxNj80gehf8o8QY9L2zA2+eyMRGLC2V5fI7Z3Tw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@storybook/core": "8.6.4"
+ "@storybook/core": "8.6.12"
},
"bin": {
"getstorybook": "bin/index.cjs",
@@ -7852,6 +8304,20 @@
"node": ">=8"
}
},
+ "node_modules/stringify-entities": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz",
+ "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==",
+ "license": "MIT",
+ "dependencies": {
+ "character-entities-html4": "^2.0.0",
+ "character-entities-legacy": "^3.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
"node_modules/strip-ansi": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
@@ -7940,9 +8406,9 @@
}
},
"node_modules/svelte": {
- "version": "5.22.6",
- "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.22.6.tgz",
- "integrity": "sha512-dxHyh3USJyayafSt5I5QD7KuoCM5ZGdIOtLQiKHEro7tymdh0jMcNkiSBVHW+LOA2jEqZEHhyfwN6/pCjx0Fug==",
+ "version": "5.28.1",
+ "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.28.1.tgz",
+ "integrity": "sha512-iOa9WmfNG95lSOSJdMhdjJ4Afok7IRAQYXpbnxhd5EINnXseG0GVa9j6WPght4eX78XfFez45Fi+uRglGKPV/Q==",
"license": "MIT",
"dependencies": {
"@ampproject/remapping": "^2.3.0",
@@ -7954,7 +8420,7 @@
"axobject-query": "^4.1.0",
"clsx": "^2.1.1",
"esm-env": "^1.2.1",
- "esrap": "^1.4.3",
+ "esrap": "^1.4.6",
"is-reference": "^3.0.3",
"locate-character": "^3.0.0",
"magic-string": "^0.30.11",
@@ -8003,9 +8469,9 @@
}
},
"node_modules/svelte-check": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.1.5.tgz",
- "integrity": "sha512-Gb0T2IqBNe1tLB9EB1Qh+LOe+JB8wt2/rNBDGvkxQVvk8vNeAoG+vZgFB/3P5+zC7RWlyBlzm9dVjZFph/maIg==",
+ "version": "4.1.6",
+ "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.1.6.tgz",
+ "integrity": "sha512-P7w/6tdSfk3zEVvfsgrp3h3DFC75jCdZjTQvgGJtjPORs1n7/v2VMPIoty3PWv7jnfEm3x0G/p9wH4pecTb0Wg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -8057,9 +8523,9 @@
}
},
"node_modules/svelte-eslint-parser": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-1.0.1.tgz",
- "integrity": "sha512-JjdEMXOJqy+dxeaElxbN+meTOtVpHfLnq9VGpiTAOLgM0uHO+ogmUsA3IFgx0x3Wl15pqTZWycCikcD7cAQN/g==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-1.1.1.tgz",
+ "integrity": "sha512-QLVGPIMDettl30qRHXU2VrPvVJKG8GsGstye7n8rFbEiu3gEARksuQg9Xu4GzubNxhGNM8stfBZkhyMbBQmjFA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -8482,9 +8948,9 @@
}
},
"node_modules/sveltekit-superforms": {
- "version": "2.24.0",
- "resolved": "https://registry.npmjs.org/sveltekit-superforms/-/sveltekit-superforms-2.24.0.tgz",
- "integrity": "sha512-JuuaaPDn9OHUKc0Uy8jzv1jUZNfO4AHUE0JLcXjiuJNRokYLqC+RsPDL4/jUkqia97aZzrfTgB/meQ8iS5nNJg==",
+ "version": "2.24.1",
+ "resolved": "https://registry.npmjs.org/sveltekit-superforms/-/sveltekit-superforms-2.24.1.tgz",
+ "integrity": "sha512-L4BlvgOD1CquP83UaCcHziD/BJ7lJEHT6g0J+F5h15mShxurJiXse4dX1BxDSGarNdzzrOBujd5ecjuIQm2zdw==",
"funding": [
{
"type": "github",
@@ -8585,24 +9051,25 @@
"license": "ISC"
},
"node_modules/swagger-typescript-api": {
- "version": "13.0.23",
- "resolved": "https://registry.npmjs.org/swagger-typescript-api/-/swagger-typescript-api-13.0.23.tgz",
- "integrity": "sha512-HhoIepxlFEU7Ol42Gh8/tvwhSxdkHcweX2tRkNhbZYBiEA+rK3C6N85MnwoeQR5XbidE3Kz8mLOqIerVGgR9uw==",
+ "version": "13.1.1",
+ "resolved": "https://registry.npmjs.org/swagger-typescript-api/-/swagger-typescript-api-13.1.1.tgz",
+ "integrity": "sha512-Slwbvz1cAno7TjujKfKIvGK5R72BlpQhnVUUtK/TcQjx/pMIiGVCaLaJWOux0mye7LEABABAhUwArFEAusuAcQ==",
"dev": true,
"license": "MIT",
"dependencies": {
+ "@biomejs/js-api": "^0.7.1",
+ "@biomejs/wasm-nodejs": "^1.9.4",
"@types/swagger-schema-official": "^2.0.25",
- "consola": "^3.2.3",
- "cosmiconfig": "^9.0.0",
- "didyoumean": "^1.2.2",
+ "c12": "^3.0.3",
+ "citty": "^0.1.6",
+ "consola": "^3.4.2",
"eta": "^2.2.0",
"js-yaml": "^4.1.0",
"lodash": "^4.17.21",
- "nanoid": "^3.3.7",
- "prettier": "~3.3.3",
+ "nanoid": "^5.1.5",
"swagger-schema-official": "2.0.0-bab6bed",
"swagger2openapi": "^7.0.8",
- "typescript": "~5.5.4"
+ "typescript": "~5.8.3"
},
"bin": {
"sta": "dist/cli.js",
@@ -8612,34 +9079,23 @@
"node": ">=18.0.0"
}
},
- "node_modules/swagger-typescript-api/node_modules/prettier": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz",
- "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==",
+ "node_modules/swagger-typescript-api/node_modules/nanoid": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.5.tgz",
+ "integrity": "sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw==",
"dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
"license": "MIT",
"bin": {
- "prettier": "bin/prettier.cjs"
+ "nanoid": "bin/nanoid.js"
},
"engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/prettier/prettier?sponsor=1"
- }
- },
- "node_modules/swagger-typescript-api/node_modules/typescript": {
- "version": "5.5.4",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz",
- "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==",
- "dev": true,
- "license": "Apache-2.0",
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=14.17"
+ "node": "^18 || >=20"
}
},
"node_modules/swagger2openapi": {
@@ -8694,9 +9150,9 @@
"license": "MIT"
},
"node_modules/tailwind-merge": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.0.2.tgz",
- "integrity": "sha512-l7z+OYZ7mu3DTqrL88RiKrKIqO3NcpEO8V/Od04bNpvk0kiIFndGEoqfuzvj4yuhRkHKjRkII2z+KS2HfPcSxw==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.2.0.tgz",
+ "integrity": "sha512-FQT/OVqCD+7edmmJpsgCsY820RTD5AkBryuG5IUqR5YQZSdj5xlH5nLgH7YPths7WsLPSpSBNneJdM8aS8aeFA==",
"license": "MIT",
"funding": {
"type": "github",
@@ -8719,10 +9175,20 @@
"tailwindcss": "*"
}
},
+ "node_modules/tailwind-variants/node_modules/tailwind-merge": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.0.2.tgz",
+ "integrity": "sha512-l7z+OYZ7mu3DTqrL88RiKrKIqO3NcpEO8V/Od04bNpvk0kiIFndGEoqfuzvj4yuhRkHKjRkII2z+KS2HfPcSxw==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/dcastil"
+ }
+ },
"node_modules/tailwindcss": {
- "version": "4.0.12",
- "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.0.12.tgz",
- "integrity": "sha512-bT0hJo91FtncsAMSsMzUkoo/iEU0Xs5xgFgVC9XmdM9bw5MhZuQFjPNl6wxAE0SiQF/YTZJa+PndGWYSDtuxAg==",
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.4.tgz",
+ "integrity": "sha512-1ZIUqtPITFbv/DxRmDr5/agPqJwF69d24m9qmM1939TJehgY539CtzeZRjbLt5G6fSy/7YqqYsfvoTEw9xUI2A==",
"license": "MIT"
},
"node_modules/tapable": {
@@ -8779,6 +9245,48 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/tinyglobby": {
+ "version": "0.2.12",
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.12.tgz",
+ "integrity": "sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==",
+ "license": "MIT",
+ "dependencies": {
+ "fdir": "^6.4.3",
+ "picomatch": "^4.0.2"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/SuperchupuDev"
+ }
+ },
+ "node_modules/tinyglobby/node_modules/fdir": {
+ "version": "6.4.3",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.3.tgz",
+ "integrity": "sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==",
+ "license": "MIT",
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/tinyglobby/node_modules/picomatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
"node_modules/tinypool": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.2.tgz",
@@ -8884,6 +9392,16 @@
"node": ">=18"
}
},
+ "node_modules/trim-lines": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz",
+ "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
"node_modules/ts-algebra": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ts-algebra/-/ts-algebra-2.0.0.tgz",
@@ -8963,9 +9481,9 @@
}
},
"node_modules/typescript": {
- "version": "5.8.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz",
- "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==",
+ "version": "5.8.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",
+ "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
"devOptional": true,
"license": "Apache-2.0",
"bin": {
@@ -8977,15 +9495,15 @@
}
},
"node_modules/typescript-eslint": {
- "version": "8.26.1",
- "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.26.1.tgz",
- "integrity": "sha512-t/oIs9mYyrwZGRpDv3g+3K6nZ5uhKEMt2oNmAPwaY4/ye0+EH4nXIPYNtkYFS6QHm+1DFg34DbglYBz5P9Xysg==",
+ "version": "8.30.1",
+ "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.30.1.tgz",
+ "integrity": "sha512-D7lC0kcehVH7Mb26MRQi64LMyRJsj3dToJxM1+JVTl53DQSV5/7oUGWQLcKl1C1KnoVHxMMU2FNQMffr7F3Row==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/eslint-plugin": "8.26.1",
- "@typescript-eslint/parser": "8.26.1",
- "@typescript-eslint/utils": "8.26.1"
+ "@typescript-eslint/eslint-plugin": "8.30.1",
+ "@typescript-eslint/parser": "8.30.1",
+ "@typescript-eslint/utils": "8.30.1"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -9000,12 +9518,80 @@
}
},
"node_modules/undici-types": {
- "version": "6.20.0",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz",
- "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==",
+ "version": "6.21.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
+ "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
"devOptional": true,
"license": "MIT"
},
+ "node_modules/unist-util-is": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz",
+ "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-position": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz",
+ "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-stringify-position": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz",
+ "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-visit": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz",
+ "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-is": "^6.0.0",
+ "unist-util-visit-parents": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-visit-parents": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz",
+ "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-is": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
"node_modules/universalify": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
@@ -9106,15 +9692,46 @@
"node": ">= 0.10"
}
},
+ "node_modules/vfile": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz",
+ "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/vfile-message": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz",
+ "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-stringify-position": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
"node_modules/vite": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.1.tgz",
- "integrity": "sha512-n2GnqDb6XPhlt9B8olZPrgMD/es/Nd1RdChF6CBD/fHW6pUyUTt2sQW2fPRX5GiD9XEa6+8A6A4f2vT6pSsE7Q==",
+ "version": "6.3.2",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.2.tgz",
+ "integrity": "sha512-ZSvGOXKGceizRQIZSz7TGJ0pS3QLlVY/9hwxVh17W3re67je1RKYzFHivZ/t0tubU78Vkyb9WnHPENSBCzbckg==",
"license": "MIT",
"dependencies": {
"esbuild": "^0.25.0",
+ "fdir": "^6.4.3",
+ "picomatch": "^4.0.2",
"postcss": "^8.5.3",
- "rollup": "^4.30.1"
+ "rollup": "^4.34.9",
+ "tinyglobby": "^0.2.12"
},
"bin": {
"vite": "bin/vite.js"
@@ -9178,9 +9795,9 @@
}
},
"node_modules/vite-node": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.0.8.tgz",
- "integrity": "sha512-6PhR4H9VGlcwXZ+KWCdMqbtG649xCPZqfI9j2PsK1FcXgEzro5bGHcVKFCTqPLaNKZES8Evqv4LwvZARsq5qlg==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.1.1.tgz",
+ "integrity": "sha512-V+IxPAE2FvXpTCHXyNem0M+gWm6J7eRyWPR6vYoG/Gl+IscNOjXzztUhimQgTxaAoUoj40Qqimaa0NLIOOAH4w==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9200,6 +9817,20 @@
"url": "https://opencollective.com/vitest"
}
},
+ "node_modules/vite/node_modules/fdir": {
+ "version": "6.4.3",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.3.tgz",
+ "integrity": "sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==",
+ "license": "MIT",
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
+ }
+ }
+ },
"node_modules/vite/node_modules/fsevents": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
@@ -9214,6 +9845,18 @@
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
+ "node_modules/vite/node_modules/picomatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
"node_modules/vitefu": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.0.5.tgz",
@@ -9233,31 +9876,31 @@
}
},
"node_modules/vitest": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.0.8.tgz",
- "integrity": "sha512-dfqAsNqRGUc8hB9OVR2P0w8PZPEckti2+5rdZip0WIz9WW0MnImJ8XiR61QhqLa92EQzKP2uPkzenKOAHyEIbA==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.1.1.tgz",
+ "integrity": "sha512-kiZc/IYmKICeBAZr9DQ5rT7/6bD9G7uqQEki4fxazi1jdVl2mWGzedtBs5s6llz59yQhVb7FFY2MbHzHCnT79Q==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/expect": "3.0.8",
- "@vitest/mocker": "3.0.8",
- "@vitest/pretty-format": "^3.0.8",
- "@vitest/runner": "3.0.8",
- "@vitest/snapshot": "3.0.8",
- "@vitest/spy": "3.0.8",
- "@vitest/utils": "3.0.8",
+ "@vitest/expect": "3.1.1",
+ "@vitest/mocker": "3.1.1",
+ "@vitest/pretty-format": "^3.1.1",
+ "@vitest/runner": "3.1.1",
+ "@vitest/snapshot": "3.1.1",
+ "@vitest/spy": "3.1.1",
+ "@vitest/utils": "3.1.1",
"chai": "^5.2.0",
"debug": "^4.4.0",
- "expect-type": "^1.1.0",
+ "expect-type": "^1.2.0",
"magic-string": "^0.30.17",
"pathe": "^2.0.3",
- "std-env": "^3.8.0",
+ "std-env": "^3.8.1",
"tinybench": "^2.9.0",
"tinyexec": "^0.3.2",
"tinypool": "^1.0.2",
"tinyrainbow": "^2.0.0",
"vite": "^5.0.0 || ^6.0.0",
- "vite-node": "3.0.8",
+ "vite-node": "3.1.1",
"why-is-node-running": "^2.3.0"
},
"bin": {
@@ -9273,8 +9916,8 @@
"@edge-runtime/vm": "*",
"@types/debug": "^4.1.12",
"@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
- "@vitest/browser": "3.0.8",
- "@vitest/ui": "3.0.8",
+ "@vitest/browser": "3.1.1",
+ "@vitest/ui": "3.1.1",
"happy-dom": "*",
"jsdom": "*"
},
@@ -9303,14 +9946,14 @@
}
},
"node_modules/vitest/node_modules/@vitest/expect": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.8.tgz",
- "integrity": "sha512-Xu6TTIavTvSSS6LZaA3EebWFr6tsoXPetOWNMOlc7LO88QVVBwq2oQWBoDiLCN6YTvNYsGSjqOO8CAdjom5DCQ==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.1.1.tgz",
+ "integrity": "sha512-q/zjrW9lgynctNbwvFtQkGK9+vvHA5UzVi2V8APrp1C6fG6/MuYYkmlx4FubuqLycCeSdHD5aadWfua/Vr0EUA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/spy": "3.0.8",
- "@vitest/utils": "3.0.8",
+ "@vitest/spy": "3.1.1",
+ "@vitest/utils": "3.1.1",
"chai": "^5.2.0",
"tinyrainbow": "^2.0.0"
},
@@ -9319,9 +9962,9 @@
}
},
"node_modules/vitest/node_modules/@vitest/pretty-format": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.8.tgz",
- "integrity": "sha512-BNqwbEyitFhzYMYHUVbIvepOyeQOSFA/NeJMIP9enMntkkxLgOcgABH6fjyXG85ipTgvero6noreavGIqfJcIg==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.1.1.tgz",
+ "integrity": "sha512-dg0CIzNx+hMMYfNmSqJlLSXEmnNhMswcn3sXO7Tpldr0LiGmg3eXdLLhwkv2ZqgHb/d5xg5F7ezNFRA1fA13yA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9332,9 +9975,9 @@
}
},
"node_modules/vitest/node_modules/@vitest/spy": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.8.tgz",
- "integrity": "sha512-MR+PzJa+22vFKYb934CejhR4BeRpMSoxkvNoDit68GQxRLSf11aT6CTj3XaqUU9rxgWJFnqicN/wxw6yBRkI1Q==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.1.1.tgz",
+ "integrity": "sha512-+EmrUOOXbKzLkTDwlsc/xrwOlPDXyVk3Z6P6K4oiCndxz7YLpp/0R0UsWVOKT0IXWjjBJuSMk6D27qipaupcvQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9345,13 +9988,13 @@
}
},
"node_modules/vitest/node_modules/@vitest/utils": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.8.tgz",
- "integrity": "sha512-nkBC3aEhfX2PdtQI/QwAWp8qZWwzASsU4Npbcd5RdMPBSSLCpkZp52P3xku3s3uA0HIEhGvEcF8rNkBsz9dQ4Q==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.1.1.tgz",
+ "integrity": "sha512-1XIjflyaU2k3HMArJ50bwSh3wKWPD6Q47wz/NUSmRV0zNywPc4w79ARjg/i/aNINHwA+mIALhUVqD9/aUvZNgg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/pretty-format": "3.0.8",
+ "@vitest/pretty-format": "3.1.1",
"loupe": "^3.1.3",
"tinyrainbow": "^2.0.0"
},
@@ -9453,16 +10096,17 @@
}
},
"node_modules/which-typed-array": {
- "version": "1.1.18",
- "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz",
- "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==",
+ "version": "1.1.19",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz",
+ "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==",
"dev": true,
"license": "MIT",
"dependencies": {
"available-typed-arrays": "^1.0.7",
"call-bind": "^1.0.8",
- "call-bound": "^1.0.3",
- "for-each": "^0.3.3",
+ "call-bound": "^1.0.4",
+ "for-each": "^0.3.5",
+ "get-proto": "^1.0.1",
"gopd": "^1.2.0",
"has-tostringtag": "^1.0.2"
},
@@ -9681,6 +10325,16 @@
"peerDependencies": {
"zod": "^3.24.1"
}
+ },
+ "node_modules/zwitch": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz",
+ "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
}
}
}
diff --git a/src/Exceptionless.Web/ClientApp/package.json b/src/Exceptionless.Web/ClientApp/package.json
index 568d63358..51e527538 100644
--- a/src/Exceptionless.Web/ClientApp/package.json
+++ b/src/Exceptionless.Web/ClientApp/package.json
@@ -25,70 +25,72 @@
"upgrade": "ncu -i"
},
"devDependencies": {
- "@chromatic-com/storybook": "^3.2.5",
- "@eslint/compat": "^1.2.7",
- "@eslint/js": "^9.22.0",
- "@iconify-json/lucide": "^1.2.29",
- "@playwright/test": "^1.51.0",
- "@storybook/addon-a11y": "^8.6.4",
- "@storybook/addon-essentials": "^8.6.4",
- "@storybook/addon-interactions": "^8.6.4",
- "@storybook/addon-svelte-csf": "^5.0.0-next.26",
- "@storybook/blocks": "^8.6.4",
- "@storybook/svelte": "^8.6.4",
- "@storybook/sveltekit": "^8.6.4",
- "@storybook/test": "^8.6.4",
+ "@chromatic-com/storybook": "^3.2.6",
+ "@eslint/compat": "^1.2.8",
+ "@eslint/js": "^9.25.0",
+ "@iconify-json/lucide": "^1.2.37",
+ "@playwright/test": "^1.52.0",
+ "@storybook/addon-a11y": "^8.6.12",
+ "@storybook/addon-essentials": "^8.6.12",
+ "@storybook/addon-interactions": "^8.6.12",
+ "@storybook/addon-svelte-csf": "^5.0.0-next.28",
+ "@storybook/blocks": "^8.6.12",
+ "@storybook/svelte": "^8.6.12",
+ "@storybook/sveltekit": "^8.6.12",
+ "@storybook/test": "^8.6.12",
"@sveltejs/adapter-static": "^3.0.8",
- "@sveltejs/kit": "^2.19.0",
+ "@sveltejs/kit": "^2.20.7",
"@sveltejs/vite-plugin-svelte": "^5.0.3",
- "@tailwindcss/vite": "^4.0.12",
+ "@tailwindcss/vite": "^4.1.4",
"@testing-library/jest-dom": "^6.6.3",
"@testing-library/svelte": "^5.2.7",
"@types/eslint": "^9.6.1",
- "@types/node": "^22.13.10",
+ "@types/node": "^22.14.1",
"@types/throttle-debounce": "^5.0.2",
"cross-env": "^7.0.3",
- "eslint": "^9.22.0",
- "eslint-config-prettier": "^10.1.1",
- "eslint-plugin-perfectionist": "^4.10.1",
- "eslint-plugin-svelte": "^3.1.0",
- "jsdom": "^26.0.0",
+ "eslint": "^9.25.0",
+ "eslint-config-prettier": "^10.1.2",
+ "eslint-plugin-perfectionist": "^4.11.0",
+ "eslint-plugin-svelte": "^3.5.1",
+ "jsdom": "^26.1.0",
"prettier": "^3.5.3",
"prettier-plugin-svelte": "^3.3.3",
"prettier-plugin-tailwindcss": "^0.6.11",
- "storybook": "^8.6.4",
- "svelte": "^5.22.6",
- "svelte-check": "^4.1.5",
- "swagger-typescript-api": "^13.0.23",
+ "storybook": "^8.6.12",
+ "svelte": "^5.28.1",
+ "svelte-check": "^4.1.6",
+ "swagger-typescript-api": "^13.1.1",
"tslib": "^2.8.1",
- "typescript": "^5.8.2",
- "typescript-eslint": "^8.26.1",
- "vite": "^6.2.1",
- "vitest": "3.0.8"
+ "typescript": "^5.8.3",
+ "typescript-eslint": "^8.30.1",
+ "vite": "^6.3.2",
+ "vitest": "3.1.1"
},
"dependencies": {
"@exceptionless/browser": "^3.1.0",
"@exceptionless/fetchclient": "^0.40.0",
- "@tanstack/svelte-query": "https://pkg.pr.new/@tanstack/svelte-query@28f98f9",
- "@tanstack/svelte-query-devtools": "https://pkg.pr.new/@tanstack/svelte-query-devtools@28f98f9",
+ "@tanstack/svelte-query": "https://pkg.pr.new/@tanstack/svelte-query@8c9ce9",
+ "@tanstack/svelte-query-devtools": "https://pkg.pr.new/@tanstack/svelte-query-devtools@8c9ce9",
"@tanstack/svelte-table": "^9.0.0-alpha.10",
"@typeschema/class-validator": "^0.3.0",
- "bits-ui": "^1.3.9",
+ "bits-ui": "^1.3.19",
"class-validator": "^0.14.1",
"clsx": "^2.1.1",
- "formsnap": "^2.0.0",
+ "dompurify": "^3.2.5",
+ "formsnap": "^2.0.1",
"kit-query-params": "^0.0.26",
- "lucide-svelte": "^0.479.0",
- "mode-watcher": "^0.5.1",
- "oidc-client-ts": "^3.1.0",
+ "@lucide/svelte": "^0.501.0",
+ "mode-watcher": "^1.0.2",
+ "oidc-client-ts": "^3.2.0",
"pretty-ms": "^9.2.0",
- "runed": "^0.24.0",
+ "runed": "^0.25.0",
+ "shiki": "^3.2.2",
"svelte-sonner": "^0.3.28",
"svelte-time": "^2.0.1",
- "sveltekit-superforms": "^2.24.0",
- "tailwind-merge": "^3.0.2",
+ "sveltekit-superforms": "^2.24.1",
+ "tailwind-merge": "^3.2.0",
"tailwind-variants": "^1.0.0",
- "tailwindcss": "^4.0.12",
+ "tailwindcss": "^4.1.4",
"throttle-debounce": "^5.0.2"
},
"type": "module"
diff --git a/src/Exceptionless.Web/ClientApp/resources.md b/src/Exceptionless.Web/ClientApp/resources.md
index 18e083b05..744db6431 100644
--- a/src/Exceptionless.Web/ClientApp/resources.md
+++ b/src/Exceptionless.Web/ClientApp/resources.md
@@ -5,6 +5,8 @@
### TODO
- Investigate loading data in - export function load({ url, fetch }) {}
+-
+{#if children} {@render children()} {/if} diff --git a/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/typography/code-block.svelte b/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/typography/code-block.svelte new file mode 100644 index 000000000..c737ed8e2 --- /dev/null +++ b/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/typography/code-block.svelte @@ -0,0 +1,57 @@ + + +{@html content}diff --git a/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/typography/code.svelte b/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/typography/code.svelte index b53807e72..59528b724 100644 --- a/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/typography/code.svelte +++ b/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/typography/code.svelte @@ -1,14 +1,12 @@ -+
{#if children} {@render children()} {/if} diff --git a/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/typography/index.ts b/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/typography/index.ts index 2ff2e68b4..83fd5bcc7 100644 --- a/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/typography/index.ts +++ b/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/typography/index.ts @@ -2,6 +2,7 @@ import type { Props as AProps } from './a'; import A from './a.svelte'; import Blockquote from './blockquote.svelte'; +import CodeBlock from './code-block.svelte'; import Code from './code.svelte'; import H1 from './h1.svelte'; import H2 from './h2.svelte'; @@ -14,5 +15,5 @@ import Muted from './muted.svelte'; import P from './p.svelte'; import Small from './small.svelte'; -export { A, Blockquote, Code, H1, H2, H3, H4, Large, Lead, List, Muted, P, Small }; +export { A, Blockquote, Code, CodeBlock, H1, H2, H3, H4, Large, Lead, List, Muted, P, Small }; export type { AProps }; diff --git a/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/ui/alert/alert-description.svelte b/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/ui/alert/alert-description.svelte new file mode 100644 index 000000000..ef74aa4ec --- /dev/null +++ b/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/ui/alert/alert-description.svelte @@ -0,0 +1,16 @@ + + +
+ {@render children?.()} +diff --git a/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/ui/alert/alert-title.svelte b/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/ui/alert/alert-title.svelte new file mode 100644 index 000000000..d6d564e10 --- /dev/null +++ b/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/ui/alert/alert-title.svelte @@ -0,0 +1,24 @@ + + ++ {@render children?.()} +diff --git a/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/ui/alert/alert.svelte b/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/ui/alert/alert.svelte new file mode 100644 index 000000000..0608df380 --- /dev/null +++ b/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/ui/alert/alert.svelte @@ -0,0 +1,39 @@ + + + + ++ {@render children?.()} +diff --git a/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/ui/alert/index.ts b/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/ui/alert/index.ts new file mode 100644 index 000000000..97e21b4ea --- /dev/null +++ b/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/ui/alert/index.ts @@ -0,0 +1,14 @@ +import Root from "./alert.svelte"; +import Description from "./alert-description.svelte"; +import Title from "./alert-title.svelte"; +export { alertVariants, type AlertVariant } from "./alert.svelte"; + +export { + Root, + Description, + Title, + // + Root as Alert, + Description as AlertDescription, + Title as AlertTitle, +}; diff --git a/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/ui/breadcrumb/breadcrumb-ellipsis.svelte b/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/ui/breadcrumb/breadcrumb-ellipsis.svelte index 3b568c41c..1f649dccd 100644 --- a/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/ui/breadcrumb/breadcrumb-ellipsis.svelte +++ b/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/ui/breadcrumb/breadcrumb-ellipsis.svelte @@ -1,5 +1,5 @@ + ++ {@render children?.()} +diff --git a/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/ui/card/card-header.svelte b/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/ui/card/card-header.svelte index 1baa92cbf..da61afe5e 100644 --- a/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/ui/card/card-header.svelte +++ b/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/ui/card/card-header.svelte @@ -11,6 +11,6 @@ }: WithElementRef> = $props(); - +{@render children?.()}diff --git a/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/ui/card/index.ts b/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/ui/card/index.ts index 0f9084d16..4d3fce489 100644 --- a/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/ui/card/index.ts +++ b/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/ui/card/index.ts @@ -4,6 +4,7 @@ import Description from "./card-description.svelte"; import Footer from "./card-footer.svelte"; import Header from "./card-header.svelte"; import Title from "./card-title.svelte"; +import Action from "./card-action.svelte"; export { Root, @@ -12,6 +13,7 @@ export { Footer, Header, Title, + Action, // Root as Card, Content as CardContent, @@ -19,4 +21,5 @@ export { Footer as CardFooter, Header as CardHeader, Title as CardTitle, + Action as CardAction, }; diff --git a/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/ui/checkbox/checkbox.svelte b/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/ui/checkbox/checkbox.svelte index a047b9f40..6a371b8ed 100644 --- a/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/ui/checkbox/checkbox.svelte +++ b/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/ui/checkbox/checkbox.svelte @@ -1,7 +1,7 @@= T & { + currentTarget: EventTarget & HTMLTextAreaElement; +}; + +type TextareaEvents = { + blur: FormTextareaEvent ; + change: FormTextareaEvent ; + click: FormTextareaEvent ; + focus: FormTextareaEvent ; + keydown: FormTextareaEvent ; + keypress: FormTextareaEvent ; + keyup: FormTextareaEvent ; + mouseover: FormTextareaEvent ; + mouseenter: FormTextareaEvent ; + mouseleave: FormTextareaEvent ; + paste: FormTextareaEvent ; + input: FormTextareaEvent ; +}; + +export { + Root, + // + Root as Textarea, + type TextareaEvents, + type FormTextareaEvent, +}; diff --git a/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/ui/textarea/textarea.svelte b/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/ui/textarea/textarea.svelte new file mode 100644 index 000000000..b9c6ca820 --- /dev/null +++ b/src/Exceptionless.Web/ClientApp/src/lib/features/shared/components/ui/textarea/textarea.svelte @@ -0,0 +1,22 @@ + + + diff --git a/src/Exceptionless.Web/ClientApp/src/lib/features/shared/models/index.ts b/src/Exceptionless.Web/ClientApp/src/lib/features/shared/models/index.ts index 06649bbb3..f35352b82 100644 --- a/src/Exceptionless.Web/ClientApp/src/lib/features/shared/models/index.ts +++ b/src/Exceptionless.Web/ClientApp/src/lib/features/shared/models/index.ts @@ -1,3 +1,8 @@ export { CountResult, type IAggregate, WorkInProgressResult } from '$generated/api'; export * from './aggregations'; + +// TODO: Fix api code gen +export class ValueFromBody { + constructor(public value: T) {} +} diff --git a/src/Exceptionless.Web/ClientApp/src/lib/features/shared/options.ts b/src/Exceptionless.Web/ClientApp/src/lib/features/shared/options.ts index 591bd2061..b7b88e301 100644 --- a/src/Exceptionless.Web/ClientApp/src/lib/features/shared/options.ts +++ b/src/Exceptionless.Web/ClientApp/src/lib/features/shared/options.ts @@ -1,4 +1,5 @@ export interface DropDownItem { + description?: string; label: string; value: T; } diff --git a/src/Exceptionless.Web/ClientApp/src/lib/features/shared/table.svelte.ts b/src/Exceptionless.Web/ClientApp/src/lib/features/shared/table.svelte.ts new file mode 100644 index 000000000..aaf6c41f0 --- /dev/null +++ b/src/Exceptionless.Web/ClientApp/src/lib/features/shared/table.svelte.ts @@ -0,0 +1,313 @@ +import type { FetchClientResponse } from '@exceptionless/fetchclient'; + +import { + type ColumnDef, + type ColumnSort, + getCoreRowModel, + type PaginationState, + type RowSelectionState, + type Table as SvelteTable, + type TableOptions, + type Updater, + type VisibilityState +} from '@tanstack/svelte-table'; +import { PersistedState } from 'runed'; + +import { DEFAULT_LIMIT } from './api/api.svelte'; + +export type PaginationStrategy = 'cursor' | 'memory' | 'offset'; +export type QueryMeta = FetchClientResponse ['meta']; + +export interface TableConfiguration { + columnPersistenceKey: string; + columns: ColumnDef []; + configureOptions?: (options: TableOptions ) => TableOptions ; + paginationStrategy: TPaginationStrategy; + queryData?: TData[]; + queryMeta?: QueryMeta; + queryParameters: TablePagingParameters ; +} + +export interface TableCursorPagingParameters { + after?: string; + before?: string; + limit?: number; + sort?: string; +} + +export interface TableMemoryPagingParameters { + limit?: number; + page?: number; +} + +export interface TableOffsetPagingParameters { + limit?: number; + page?: number; + sort?: string; +} + +export type TablePagingParameters = T extends 'cursor' + ? TableCursorPagingParameters + : T extends 'offset' + ? TableOffsetPagingParameters + : T extends 'memory' + ? TableMemoryPagingParameters + : never; + +export function getSharedTableOptions ( + configuration: TableConfiguration +): TableOptions { + const isCursorPaging = $derived(!configuration.paginationStrategy || configuration.paginationStrategy === 'cursor'); + const isOffsetPaging = $derived(configuration.paginationStrategy === 'offset'); + const isMemoryPaging = $derived(configuration.paginationStrategy === 'memory'); + + const [pageCount, setPageCount] = createTableState(0); + const [columns, setColumns] = createTableState []>(configuration.columns); + + // Use the persistKey if provided, otherwise default to events-column-visibility + const visibilityKey = configuration.columnPersistenceKey ? `${configuration.columnPersistenceKey}-column-visibility` : 'events-column-visibility'; + const [columnVisibility, setColumnVisibility] = createPersistedTableState(visibilityKey, {}); + + // Initialize pagination state from parameters + const initialPageIndex = isOffsetPaging + ? (configuration.queryParameters as TableOffsetPagingParameters).page !== undefined + ? Number((configuration.queryParameters as TableOffsetPagingParameters).page) - 1 + : 0 + : 0; + + const [pagination, setPagination] = createTableState ({ + pageIndex: initialPageIndex, + pageSize: configuration.queryParameters.limit ?? DEFAULT_LIMIT + }); + + const [allData, setAllData] = createTableState ([]); + const [data, setData] = createTableState ([]); + const [meta, setMeta] = createTableState (undefined); + const [sorting, setSorting] = createTableState ([]); + const [rowSelection, setRowSelection] = createTableState ({}); + + const onPaginationChange = (updaterOrValue: Updater ) => { + const previousPageIndex = pagination().pageIndex; + + setPagination(updaterOrValue); + const currentPageInfo = pagination(); + + if (configuration.queryParameters.limit !== currentPageInfo.pageSize) { + configuration.queryParameters.limit = currentPageInfo.pageSize; + } + + // Handle memory pagination directly (no parameter change needed) + if (isMemoryPaging && allData().length > 0) { + const start = currentPageInfo.pageIndex * currentPageInfo.pageSize; + setData(allData().slice(start, start + currentPageInfo.pageSize)); + } else if (isCursorPaging) { + const queryMeta = meta(); + const nextLink = queryMeta?.links?.next?.after; + const previousLink = queryMeta?.links?.previous?.before; + + const parameters = configuration.queryParameters as TableCursorPagingParameters; + parameters.after = currentPageInfo.pageIndex > previousPageIndex ? nextLink : undefined; + // Ensure previousLink is only used when actually moving back and not on the first page + parameters.before = currentPageInfo.pageIndex < previousPageIndex && currentPageInfo.pageIndex > 0 ? previousLink : undefined; + } else if (isOffsetPaging || isMemoryPaging) { + (configuration.queryParameters as TableMemoryPagingParameters | TableOffsetPagingParameters).page = currentPageInfo.pageIndex + 1; // API uses 1-based index + } + }; + + const onSortingChange = (updaterOrValue: Updater ) => { + setSorting(updaterOrValue); + const newSorting = sorting(); + + const sort = newSorting.length > 0 ? newSorting.map((sort) => `${sort.desc ? '-' : ''}${sort.id}`).join(',') : undefined; + if (isCursorPaging) { + const parameters = configuration.queryParameters as TableCursorPagingParameters; + parameters.after = undefined; + parameters.before = undefined; + parameters.sort = sort; + } else if (isOffsetPaging) { + const parameters = configuration.queryParameters as TableOffsetPagingParameters; + parameters.page = 1; + parameters.sort = sort; + } else if (isMemoryPaging) { + (configuration.queryParameters as TableMemoryPagingParameters).page = 1; + } + }; + + const setDataImpl = (data: TData[]) => { + if (isMemoryPaging) { + setAllData(data); + + const pageInfo = pagination(); + const pageSize = pageInfo.pageSize; + const maxValidPageIndex = Math.max(0, Math.ceil(data.length / pageSize) - 1); + const needsAdjustment = pageInfo.pageIndex > maxValidPageIndex; + const targetPageIndex = needsAdjustment ? maxValidPageIndex : pageInfo.pageIndex; + + // Update pagination state only if needed + if (needsAdjustment) { + setPagination((prev) => ({ + ...prev, + pageIndex: targetPageIndex + })); + } + + // Calculate slice with the appropriate page index + const start = targetPageIndex * pageSize; + setData(data.slice(start, start + pageSize)); + } else { + setData(data); + } + }; + + const setMetaImpl = (meta: QueryMeta | undefined) => { + setMeta(meta); + const limit = configuration.queryParameters.limit ?? DEFAULT_LIMIT; + + const total = isMemoryPaging ? allData().length : ((meta?.total as number) ?? 0); + const totalPages = Math.ceil(total / limit); + setPageCount(totalPages); + + // // Only adjust pagination for offset pagination here + // // Memory pagination adjusts in setDataImpl to avoid duplication + // if (isOffsetPaging) { + // const maxValidPageIndex = Math.max(0, totalPages - 1); + // const paginationState = pagination(); + // if (paginationState.pageIndex > maxValidPageIndex) { + // setPagination((prev) => ({ + // ...prev, + // pageIndex: maxValidPageIndex + // })); + // } + // } + }; + + // NOTE: Two different effects are used here to avoid circular dependency issues with in memory paging. + $effect(() => setDataImpl(configuration.queryData ?? [])); + $effect(() => setMetaImpl(configuration.queryMeta)); + + const configureOptions = configuration.configureOptions ?? ((options) => options); + return configureOptions({ + get columns() { + return columns(); + }, + set columns(value) { + setColumns(value); + }, + get data() { + return data(); + }, + set data(value) { + setDataImpl(value); + }, + enableMultiRowSelection: true, + enableRowSelection: true, + enableSortingRemoval: false, + getCoreRowModel: getCoreRowModel(), + getRowId: (originalRow) => { + return originalRow && typeof originalRow === 'object' && 'id' in originalRow && originalRow.id != null + ? String(originalRow.id) + : JSON.stringify(originalRow); + }, + manualPagination: true, + manualSorting: true, + get meta() { + return meta(); + }, + set meta(value) { + setMetaImpl(value); + }, + onColumnVisibilityChange: setColumnVisibility, + onPaginationChange, + onRowSelectionChange: setRowSelection, + onSortingChange, + get pageCount() { + return pageCount(); + }, + state: { + get columnVisibility() { + return columnVisibility(); + }, + get pagination() { + return pagination(); + }, + get rowSelection() { + return rowSelection(); + }, + get sorting() { + return sorting(); + } + } + }); +} + +export function isTableEmpty (table: SvelteTable ): boolean { + return table.options.data.length === 0; +} + +/*** + * Removes data from the table. + * @param table The table to remove data from. + * @param predicate A function that determines whether a row should be removed. + * @returns True if data was removed, false otherwise. + */ +export function removeTableData (table: SvelteTable , predicate: (value: TData, index: number, array: TData[]) => boolean): boolean { + if (table.options.data.some(predicate)) { + table.options.data = table.options.data.filter((value, index, array) => !predicate(value, index, array)); + + return true; + } + + return false; +} + +/*** + * Removes a selection from the table. + * @param table The table to remove the selection from. + * @param selectionId The id of the selection to remove. + * @returns True if the selection was removed, false otherwise. + */ +export function removeTableSelection (table: SvelteTable , selectionId: string): boolean { + if (table.getIsSomeRowsSelected()) { + const { rowSelection } = table.getState(); + if (rowSelection[selectionId]) { + table.setRowSelection((old: Record ) => { + const filtered = Object.entries(old).filter(([id]) => id !== selectionId); + return Object.fromEntries(filtered); + }); + + return true; + } + } + + return false; +} + +function createPersistedTableState (key: string, initialValue: T): [() => T, (updater: Updater ) => void] { + const persistedValue = new PersistedState (key, initialValue); + + return [ + () => persistedValue.current, + (updater: Updater ) => { + if (updater instanceof Function) { + persistedValue.current = updater(persistedValue.current); + } else { + persistedValue.current = updater; + } + } + ]; +} + +function createTableState (initialValue: T): [() => T, (updater: Updater ) => void] { + let value = $state(initialValue); + + return [ + () => value, + (updater: Updater ) => { + if (updater instanceof Function) { + value = updater(value); + } else { + value = updater; + } + } + ]; +} diff --git a/src/Exceptionless.Web/ClientApp/src/lib/features/shared/table.ts b/src/Exceptionless.Web/ClientApp/src/lib/features/shared/table.ts deleted file mode 100644 index ae48a67cb..000000000 --- a/src/Exceptionless.Web/ClientApp/src/lib/features/shared/table.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { type Table as SvelteTable } from '@tanstack/svelte-table'; - -export function isTableEmpty (table: SvelteTable ): boolean { - return table.options.data.length === 0; -} - -/*** - * Removes data from the table. - * @param table The table to remove data from. - * @param predicate A function that determines whether a row should be removed. - * @returns True if data was removed, false otherwise. - */ -export function removeTableData (table: SvelteTable , predicate: (value: TData, index: number, array: TData[]) => boolean): boolean { - if (table.options.data.some(predicate)) { - table.options.data = table.options.data.filter((value, index, array) => !predicate(value, index, array)); - return true; - } - - return false; -} - -/*** - * Removes a selection from the table. - * @param table The table to remove the selection from. - * @param selectionId The id of the selection to remove. - * @returns True if the selection was removed, false otherwise. - */ -export function removeTableSelection (table: SvelteTable , selectionId: string): boolean { - if (table.getIsSomeRowsSelected()) { - const { rowSelection } = table.getState(); - if (rowSelection[selectionId]) { - table.setRowSelection((old: Record ) => { - const filtered = Object.entries(old).filter(([id]) => id !== selectionId); - return Object.fromEntries(filtered); - }); - - return true; - } - } - - return false; -} diff --git a/src/Exceptionless.Web/ClientApp/src/lib/features/stacks/components/dialogs/mark-stack-fixed-in-version-dialog.svelte b/src/Exceptionless.Web/ClientApp/src/lib/features/stacks/components/dialogs/mark-stack-fixed-in-version-dialog.svelte index e1c09213b..ba5ef82c7 100644 --- a/src/Exceptionless.Web/ClientApp/src/lib/features/stacks/components/dialogs/mark-stack-fixed-in-version-dialog.svelte +++ b/src/Exceptionless.Web/ClientApp/src/lib/features/stacks/components/dialogs/mark-stack-fixed-in-version-dialog.svelte @@ -4,7 +4,7 @@ import * as AlertDialog from '$comp/ui/alert-dialog'; import * as Form from '$comp/ui/form'; import { Input } from '$comp/ui/input'; - import Documentation from 'lucide-svelte/icons/help-circle'; + import Documentation from '@lucide/svelte/icons/help-circle'; import { defaults, superForm } from 'sveltekit-superforms'; import { classvalidatorClient } from 'sveltekit-superforms/adapters'; import { debounce } from 'throttle-debounce'; diff --git a/src/Exceptionless.Web/ClientApp/src/lib/features/stacks/components/stack-card.svelte b/src/Exceptionless.Web/ClientApp/src/lib/features/stacks/components/stack-card.svelte index 4795c3f18..f86adb42b 100644 --- a/src/Exceptionless.Web/ClientApp/src/lib/features/stacks/components/stack-card.svelte +++ b/src/Exceptionless.Web/ClientApp/src/lib/features/stacks/components/stack-card.svelte @@ -15,12 +15,12 @@ import { getStackQuery } from '$features/stacks/api.svelte'; import { cardinality, max, min, sum } from '$shared/api/aggregations'; import { DEFAULT_OFFSET } from '$shared/api/api.svelte'; - import FirstOccurrence from 'lucide-svelte/icons/arrow-left-circle'; - import LastOccurrence from 'lucide-svelte/icons/arrow-right-circle'; - import Calendar from 'lucide-svelte/icons/calendar'; - import Clock from 'lucide-svelte/icons/clock'; - import Filter from 'lucide-svelte/icons/filter'; - import Users from 'lucide-svelte/icons/users'; + import FirstOccurrence from '@lucide/svelte/icons/arrow-left-circle'; + import LastOccurrence from '@lucide/svelte/icons/arrow-right-circle'; + import Calendar from '@lucide/svelte/icons/calendar'; + import Clock from '@lucide/svelte/icons/clock'; + import Filter from '@lucide/svelte/icons/filter'; + import Users from '@lucide/svelte/icons/users'; import StackOptionsDropdownMenu from './stack-options-dropdown-menu.svelte'; import StackReferences from './stack-references.svelte'; @@ -33,7 +33,7 @@ let { filterChanged, id }: Props = $props(); - const stackResponse = getStackQuery({ + const stackQuery = getStackQuery({ route: { get id() { return id; @@ -41,19 +41,19 @@ } }); - const projectCountResponse = getProjectCountQuery({ + const projectCountQuery = getProjectCountQuery({ params: { aggregations: 'cardinality:user' }, route: { get projectId() { - return stackResponse.data?.project_id; + return stackQuery.data?.project_id; } } }); // TODO: Add stack charts for Occurrences, Average Value, Value Sum - const stackCountResponse = getStackCountQuery({ + const stackCountQuery = getStackCountQuery({ params: { aggregations: `date:(date${DEFAULT_OFFSET ? '^' + DEFAULT_OFFSET : ''} cardinality:user sum:count~1) min:date max:date cardinality:user sum:count~1` }, @@ -64,16 +64,17 @@ } }); - const stack = $derived(stackResponse.data!); - const eventOccurrences = $derived(sum(stackCountResponse?.data?.aggregations, 'sum_count')?.value ?? 0); + // TODO: Log Level + const stack = $derived(stackQuery.data!); + const eventOccurrences = $derived(sum(stackCountQuery?.data?.aggregations, 'sum_count')?.value ?? 0); const totalOccurrences = $derived(stack && stack.total_occurrences > eventOccurrences ? stack.total_occurrences : eventOccurrences); - const userCount = $derived(sum(stackCountResponse?.data?.aggregations, 'cardinality_user')?.value ?? 0); - const totalUserCount = $derived(cardinality(projectCountResponse?.data?.aggregations, 'cardinality_user')?.value ?? 0); - const firstOccurrence = $derived(min (stackCountResponse?.data?.aggregations, 'min_date')?.value ?? stack?.first_occurrence); - const lastOccurrence = $derived(max (stackCountResponse?.data?.aggregations, 'max_date')?.value ?? stack?.last_occurrence); + const userCount = $derived(sum(stackCountQuery?.data?.aggregations, 'cardinality_user')?.value ?? 0); + const totalUserCount = $derived(cardinality(projectCountQuery?.data?.aggregations, 'cardinality_user')?.value ?? 0); + const firstOccurrence = $derived(min (stackCountQuery?.data?.aggregations, 'min_date')?.value ?? stack?.first_occurrence); + const lastOccurrence = $derived(max (stackCountQuery?.data?.aggregations, 'max_date')?.value ?? stack?.last_occurrence); -{#if stackResponse.isSuccess} +{#if stackQuery.isSuccess} diff --git a/src/Exceptionless.Web/ClientApp/src/lib/features/stacks/components/stack-options-dropdown-menu.svelte b/src/Exceptionless.Web/ClientApp/src/lib/features/stacks/components/stack-options-dropdown-menu.svelte index ea63e8988..ef042247a 100644 --- a/src/Exceptionless.Web/ClientApp/src/lib/features/stacks/components/stack-options-dropdown-menu.svelte +++ b/src/Exceptionless.Web/ClientApp/src/lib/features/stacks/components/stack-options-dropdown-menu.svelte @@ -2,10 +2,10 @@ import { goto } from '$app/navigation'; import Button from '$comp/ui/button/button.svelte'; import * as DropdownMenu from '$comp/ui/dropdown-menu'; - import Reference from 'lucide-svelte/icons/link-2'; - import Settings from 'lucide-svelte/icons/settings'; - import Delete from 'lucide-svelte/icons/trash'; - import PromoteToExternal from 'lucide-svelte/icons/trending-up'; + import Reference from '@lucide/svelte/icons/link-2'; + import Settings from '@lucide/svelte/icons/settings'; + import Delete from '@lucide/svelte/icons/trash'; + import PromoteToExternal from '@lucide/svelte/icons/trending-up'; import { toast } from 'svelte-sonner'; import { deleteMarkCritical, deleteStack, postAddLink, postMarkCritical, postPromote } from '../api.svelte'; diff --git a/src/Exceptionless.Web/ClientApp/src/lib/features/stacks/components/stack-references.svelte b/src/Exceptionless.Web/ClientApp/src/lib/features/stacks/components/stack-references.svelte index a9b895ebf..8b8f0ab5a 100644 --- a/src/Exceptionless.Web/ClientApp/src/lib/features/stacks/components/stack-references.svelte +++ b/src/Exceptionless.Web/ClientApp/src/lib/features/stacks/components/stack-references.svelte @@ -1,9 +1,9 @@ + + + diff --git a/src/Exceptionless.Web/ClientApp/src/lib/features/tokens/components/dialogs/enable-token-dialog.svelte b/src/Exceptionless.Web/ClientApp/src/lib/features/tokens/components/dialogs/enable-token-dialog.svelte new file mode 100644 index 000000000..a0679bad0 --- /dev/null +++ b/src/Exceptionless.Web/ClientApp/src/lib/features/tokens/components/dialogs/enable-token-dialog.svelte @@ -0,0 +1,32 @@ + + ++ ++ +Disable API Key ++ Are you sure you want to disable "{id}" {#if notes}({notes}){/if}? + ++ +Cancel +Disable API Key ++ diff --git a/src/Exceptionless.Web/ClientApp/src/lib/features/tokens/components/dialogs/remove-token-dialog.svelte b/src/Exceptionless.Web/ClientApp/src/lib/features/tokens/components/dialogs/remove-token-dialog.svelte new file mode 100644 index 000000000..fd1b093a8 --- /dev/null +++ b/src/Exceptionless.Web/ClientApp/src/lib/features/tokens/components/dialogs/remove-token-dialog.svelte @@ -0,0 +1,33 @@ + + ++ ++ +Enable API Key ++ Are you sure you want to enable "{id}" {#if notes}({notes}){/if}? + ++ +Cancel +Enable API Key ++ diff --git a/src/Exceptionless.Web/ClientApp/src/lib/features/tokens/components/dialogs/update-token-notes-dialog.svelte b/src/Exceptionless.Web/ClientApp/src/lib/features/tokens/components/dialogs/update-token-notes-dialog.svelte new file mode 100644 index 000000000..38dbb9a55 --- /dev/null +++ b/src/Exceptionless.Web/ClientApp/src/lib/features/tokens/components/dialogs/update-token-notes-dialog.svelte @@ -0,0 +1,66 @@ + + ++ ++ +Delete API Key ++ Are you sure you want to delete "{id}" {#if notes}({notes}){/if}? + ++ +Cancel +Delete API Key ++ diff --git a/src/Exceptionless.Web/ClientApp/src/lib/features/tokens/components/table/options.svelte.ts b/src/Exceptionless.Web/ClientApp/src/lib/features/tokens/components/table/options.svelte.ts new file mode 100644 index 000000000..738572e38 --- /dev/null +++ b/src/Exceptionless.Web/ClientApp/src/lib/features/tokens/components/table/options.svelte.ts @@ -0,0 +1,69 @@ +import type { FetchClientResponse, ProblemDetails } from '@exceptionless/fetchclient'; +import type { CreateQueryResult } from '@tanstack/svelte-query'; + +import { getSharedTableOptions } from '$features/shared/table.svelte'; +import TokenActionsCell from '$features/tokens/components/table/token-actions-cell.svelte'; +import TokenIdCell from '$features/tokens/components/table/token-id-cell.svelte'; +import { ViewToken } from '$features/tokens/models'; +import { type ColumnDef, renderComponent } from '@tanstack/svelte-table'; + +import type { GetProjectTokensParams } from '../../api.svelte'; + +export function getColumns+ ++ + + ++ {#snippet children({ props })} + +Notes + + {/snippet} ++ + + + +Cancel +Save Notes +(): ColumnDef [] { + const columns: ColumnDef [] = [ + { + accessorKey: 'id', + cell: (info) => renderComponent(TokenIdCell, { token: info.row.original }), + enableHiding: false, + enableSorting: false, + header: 'API Key', + meta: { + class: 'w-[180px]' + } + }, + { + accessorKey: 'notes', + cell: (info) => info.getValue(), + enableHiding: true, + enableSorting: false, + header: 'Notes', + meta: { + class: 'w-[200px]' + } + }, + { + cell: (info) => renderComponent(TokenActionsCell, { token: info.row.original }), + enableHiding: false, + enableSorting: false, + header: 'Actions', + id: 'actions', + meta: { + class: 'w-16' + } + } + ]; + + return columns; +} + +export function getTableOptions ( + queryParameters: GetProjectTokensParams, + queryResponse: CreateQueryResult , ProblemDetails> +) { + return getSharedTableOptions ({ + columnPersistenceKey: 'tokens-column-visibility', + get columns() { + return getColumns (); + }, + paginationStrategy: 'offset', + get queryData() { + return queryResponse.data?.data ?? []; + }, + get queryMeta() { + return queryResponse.data?.meta; + }, + get queryParameters() { + return queryParameters; + } + }); +} diff --git a/src/Exceptionless.Web/ClientApp/src/lib/features/tokens/components/table/token-actions-cell.svelte b/src/Exceptionless.Web/ClientApp/src/lib/features/tokens/components/table/token-actions-cell.svelte new file mode 100644 index 000000000..397af9230 --- /dev/null +++ b/src/Exceptionless.Web/ClientApp/src/lib/features/tokens/components/table/token-actions-cell.svelte @@ -0,0 +1,123 @@ + + + + + +{#if showEnableTokenDialog} ++ + ++ ++ ++ Copy Api Key + (showUpdateNotesDialog = true)}> + ++ Edit Notes + + {#if token.is_disabled} + ++ Enable API Key + {:else} + + Disable API Key + {/if} + (showRemoveTokenDialog = true)} disabled={removeToken.isPending}> + ++ Delete + updateDisabled(false)} /> +{/if} +{#if showDisableTokenDialog} + updateDisabled(true)} /> +{/if} +{#if showUpdateNotesDialog} + +{/if} +{#if showRemoveTokenDialog} + +{/if} diff --git a/src/Exceptionless.Web/ClientApp/src/lib/features/tokens/components/table/token-id-cell.svelte b/src/Exceptionless.Web/ClientApp/src/lib/features/tokens/components/table/token-id-cell.svelte new file mode 100644 index 000000000..0ebe82633 --- /dev/null +++ b/src/Exceptionless.Web/ClientApp/src/lib/features/tokens/components/table/token-id-cell.svelte @@ -0,0 +1,13 @@ + + + + {token.id} + diff --git a/src/Exceptionless.Web/ClientApp/src/lib/features/tokens/components/table/tokens-data-table.svelte b/src/Exceptionless.Web/ClientApp/src/lib/features/tokens/components/table/tokens-data-table.svelte new file mode 100644 index 000000000..0a96b303c --- /dev/null +++ b/src/Exceptionless.Web/ClientApp/src/lib/features/tokens/components/table/tokens-data-table.svelte @@ -0,0 +1,52 @@ + + + + diff --git a/src/Exceptionless.Web/ClientApp/src/lib/features/tokens/models.ts b/src/Exceptionless.Web/ClientApp/src/lib/features/tokens/models.ts new file mode 100644 index 000000000..c310ef113 --- /dev/null +++ b/src/Exceptionless.Web/ClientApp/src/lib/features/tokens/models.ts @@ -0,0 +1,9 @@ +import { IsDefined, IsOptional } from 'class-validator'; + +export { NewToken, ViewToken } from '$generated/api'; + +// TODO: Figure out open api gen. +export class UpdateToken { + @IsDefined({ message: 'is_disabled is required.' }) is_disabled!: boolean; + @IsOptional() notes?: null | string; +} diff --git a/src/Exceptionless.Web/ClientApp/src/lib/features/webhooks/api.svelte.ts b/src/Exceptionless.Web/ClientApp/src/lib/features/webhooks/api.svelte.ts new file mode 100644 index 000000000..13dc9618b --- /dev/null +++ b/src/Exceptionless.Web/ClientApp/src/lib/features/webhooks/api.svelte.ts @@ -0,0 +1,122 @@ +import type { NewWebhook, Webhook } from '$features/webhooks/models'; +import type { WebSocketMessageValue } from '$features/websockets/models'; + +import { accessToken } from '$features/auth/index.svelte'; +import { DEFAULT_LIMIT } from '$features/shared/api/api.svelte'; +import { type FetchClientResponse, type ProblemDetails, useFetchClient } from '@exceptionless/fetchclient'; +import { createMutation, createQuery, QueryClient, useQueryClient } from '@tanstack/svelte-query'; + +export async function invalidateWebhookQueries(queryClient: QueryClient, message: WebSocketMessageValue<'WebhookChanged'>) { + const { id, organization_id, project_id } = message; + if (id) { + await queryClient.invalidateQueries({ queryKey: queryKeys.id(id) }); + } + + // if (organization_id) { + // await queryClient.invalidateQueries({ queryKey: queryKeys.organization(organization_id) }); + // } + + if (project_id) { + await queryClient.invalidateQueries({ queryKey: queryKeys.project(project_id) }); + } + + if (!id && !organization_id && !project_id) { + await queryClient.invalidateQueries({ queryKey: queryKeys.type }); + } +} + +// TODO: Do we need to scope these all by organization? +export const queryKeys = { + deleteWebhook: (ids: string[] | undefined) => [...queryKeys.ids(ids), 'delete'] as const, + id: (id: string | undefined) => [...queryKeys.type, id] as const, + ids: (ids: string[] | undefined) => [...queryKeys.type, ...(ids ?? [])] as const, + postWebhook: () => [...queryKeys.type, 'post'] as const, + project: (id: string | undefined) => [...queryKeys.type, 'project', id] as const, + type: ['Webhook'] as const +}; + +export interface DeleteWebhookRequest { + route: { + ids: string[]; + }; +} + +export interface GetProjectWebhooksParams { + limit?: number; + page?: number; +} + +export interface GetProjectWebhooksRequest { + params: GetProjectWebhooksParams; + route: { + projectId: string | undefined; + }; +} + +export function deleteWebhook(request: DeleteWebhookRequest) { + const queryClient = useQueryClient(); + + return createMutation+ {#if toolbarChildren} + {@render toolbarChildren()} + {/if} + ++ {#if isLoading} + ++ + {:else} ++ + {/if} + {#if bodyChildren} + {@render bodyChildren()} + {/if} + + {#if footerChildren} + {@render footerChildren()} + {:else} + ++ + ++ {/if} ++ + , ProblemDetails, void>(() => ({ + enabled: () => !!accessToken.current && !!request.route.ids?.length, + mutationFn: async () => { + const client = useFetchClient(); + const response = await client.delete(`webhooks/${request.route.ids?.join(',')}`, { + expectedStatusCodes: [202] + }); + + return response; + }, + mutationKey: queryKeys.deleteWebhook(request.route.ids), + onError: () => { + request.route.ids?.forEach((id) => queryClient.invalidateQueries({ queryKey: queryKeys.id(id) })); + }, + onSuccess: () => { + request.route.ids?.forEach((id) => queryClient.invalidateQueries({ queryKey: queryKeys.id(id) })); + } + })); +} + +export function getProjectWebhooksQuery(request: GetProjectWebhooksRequest) { + const queryClient = useQueryClient(); + + return createQuery , ProblemDetails>(() => ({ + enabled: () => !!accessToken.current && !!request.route.projectId, + onSuccess: (data: Webhook[]) => { + data.forEach((webhook) => { + queryClient.setQueryData(queryKeys.id(webhook.id!), webhook); + }); + }, + queryClient, + queryFn: async ({ signal }: { signal: AbortSignal }) => { + const client = useFetchClient(); + const response = await client.getJSON (`projects/${request.route.projectId}/webhooks`, { + params: { + ...request.params, + limit: request.params?.limit ?? DEFAULT_LIMIT + }, + signal + }); + + return response; + }, + queryKey: [...queryKeys.project(request.route.projectId), { params: request.params }] + })); +} + +export function postWebhook() { + const queryClient = useQueryClient(); + + return createMutation (() => ({ + enabled: () => !!accessToken.current, + mutationFn: async (webhook: NewWebhook) => { + const client = useFetchClient(); + const response = await client.postJSON ('webhooks', webhook); + return response.data!; + }, + mutationKey: queryKeys.postWebhook(), + onSuccess: (webhook: Webhook) => { + queryClient.invalidateQueries({ queryKey: queryKeys.type }); + queryClient.setQueryData(queryKeys.id(webhook.id), webhook); + } + })); +} diff --git a/src/Exceptionless.Web/ClientApp/src/lib/features/webhooks/components/dialogs/add-webhook-dialog.svelte b/src/Exceptionless.Web/ClientApp/src/lib/features/webhooks/components/dialogs/add-webhook-dialog.svelte new file mode 100644 index 000000000..e253f4cae --- /dev/null +++ b/src/Exceptionless.Web/ClientApp/src/lib/features/webhooks/components/dialogs/add-webhook-dialog.svelte @@ -0,0 +1,125 @@ + + + + diff --git a/src/Exceptionless.Web/ClientApp/src/lib/features/webhooks/components/dialogs/remove-webhook-dialog.svelte b/src/Exceptionless.Web/ClientApp/src/lib/features/webhooks/components/dialogs/remove-webhook-dialog.svelte new file mode 100644 index 000000000..3c6f5bbf5 --- /dev/null +++ b/src/Exceptionless.Web/ClientApp/src/lib/features/webhooks/components/dialogs/remove-webhook-dialog.svelte @@ -0,0 +1,32 @@ + + ++ ++ + ++ {#snippet children({ props })} + +URL + + {/snippet} ++ + + + + +++Event Types +Control when the web hook is called by choosing the event types below. ++ {#each webhookEventTypes as type (type.value)} + {@const checked = $formData.event_types.includes(type.value)} ++++ {/each} ++ {#snippet children({ props })} + +{ + if (v) { + addItem(type.value); + } else { + removeItem(type.value); + } + }} + /> + ++ {/snippet} ++ {type.label} + +{type.description} ++ + + +Cancel +Add Webhook ++ diff --git a/src/Exceptionless.Web/ClientApp/src/lib/features/webhooks/components/table/options.svelte.ts b/src/Exceptionless.Web/ClientApp/src/lib/features/webhooks/components/table/options.svelte.ts new file mode 100644 index 000000000..0bb422b41 --- /dev/null +++ b/src/Exceptionless.Web/ClientApp/src/lib/features/webhooks/components/table/options.svelte.ts @@ -0,0 +1,68 @@ +import type { FetchClientResponse, ProblemDetails } from '@exceptionless/fetchclient'; +import type { CreateQueryResult } from '@tanstack/svelte-query'; + +import { getSharedTableOptions } from '$features/shared/table.svelte'; +import WebhookActionsCell from '$features/webhooks/components/table/webhook-actions-cell.svelte'; +import { Webhook } from '$features/webhooks/models'; +import { type ColumnDef, renderComponent } from '@tanstack/svelte-table'; + +import type { GetProjectWebhooksParams } from '../../api.svelte'; + +export function getColumns+ ++ +Delete Webhook ++ Are you sure you want to delete "{url}"? + ++ +Cancel +Delete Webhook +(): ColumnDef [] { + const columns: ColumnDef [] = [ + { + accessorKey: 'url', + cell: (info) => info.getValue(), + enableHiding: false, + enableSorting: false, + header: 'Url', + meta: { + class: 'w-[200px]' + } + }, + { + accessorKey: 'event_types', + cell: (info) => info.getValue(), + enableHiding: true, + enableSorting: false, + header: 'Event Types', + meta: { + class: 'w-[200px]' + } + }, + { + cell: (info) => renderComponent(WebhookActionsCell, { webhook: info.row.original }), + enableHiding: false, + enableSorting: false, + header: 'Actions', + id: 'actions', + meta: { + class: 'w-16' + } + } + ]; + + return columns; +} + +export function getTableOptions ( + queryParameters: GetProjectWebhooksParams, + queryResponse: CreateQueryResult , ProblemDetails> +) { + return getSharedTableOptions ({ + columnPersistenceKey: 'webhooks-column-visibility', + get columns() { + return getColumns (); + }, + paginationStrategy: 'offset', + get queryData() { + return queryResponse.data?.data ?? []; + }, + get queryMeta() { + return queryResponse.data?.meta; + }, + get queryParameters() { + return queryParameters; + } + }); +} diff --git a/src/Exceptionless.Web/ClientApp/src/lib/features/webhooks/components/table/webhook-actions-cell.svelte b/src/Exceptionless.Web/ClientApp/src/lib/features/webhooks/components/table/webhook-actions-cell.svelte new file mode 100644 index 000000000..c1a4209a0 --- /dev/null +++ b/src/Exceptionless.Web/ClientApp/src/lib/features/webhooks/components/table/webhook-actions-cell.svelte @@ -0,0 +1,49 @@ + + + + + +{#if showRemoveWebhookDialog} ++ + ++ +(showRemoveWebhookDialog = true)} disabled={removeWebhook.isPending}> + ++ Delete + +{/if} diff --git a/src/Exceptionless.Web/ClientApp/src/lib/features/webhooks/components/table/webhooks-data-table.svelte b/src/Exceptionless.Web/ClientApp/src/lib/features/webhooks/components/table/webhooks-data-table.svelte new file mode 100644 index 000000000..4be8d3dca --- /dev/null +++ b/src/Exceptionless.Web/ClientApp/src/lib/features/webhooks/components/table/webhooks-data-table.svelte @@ -0,0 +1,52 @@ + + + + diff --git a/src/Exceptionless.Web/ClientApp/src/lib/features/webhooks/models.ts b/src/Exceptionless.Web/ClientApp/src/lib/features/webhooks/models.ts new file mode 100644 index 000000000..358d13933 --- /dev/null +++ b/src/Exceptionless.Web/ClientApp/src/lib/features/webhooks/models.ts @@ -0,0 +1,16 @@ +import { NewWebHook as NewWebhookBase, WebHook as WebhookBase } from '$generated/api'; +import { ArrayNotEmpty, IsDefined } from 'class-validator'; + +export type WebhookKnownEventTypes = 'CriticalError' | 'CriticalEvent' | 'NewError' | 'NewEvent' | 'StackPromoted' | 'StackRegression'; + +export class NewWebhook extends NewWebhookBase { + @ArrayNotEmpty({ message: 'Event Types should not be empty.' }) + @IsDefined({ message: 'Event Types is required.' }) + override event_types: WebhookKnownEventTypes[] = []; +} + +export class Webhook extends WebhookBase { + @ArrayNotEmpty({ message: 'Event Types should not be empty.' }) + @IsDefined({ message: 'Event Types is required.' }) + override event_types: WebhookKnownEventTypes[] = []; +} diff --git a/src/Exceptionless.Web/ClientApp/src/lib/features/webhooks/options.ts b/src/Exceptionless.Web/ClientApp/src/lib/features/webhooks/options.ts new file mode 100644 index 000000000..413dba9ca --- /dev/null +++ b/src/Exceptionless.Web/ClientApp/src/lib/features/webhooks/options.ts @@ -0,0 +1,36 @@ +import type { DropDownItem } from '$features/shared/options'; + +import type { WebhookKnownEventTypes } from './models'; + +export const webhookEventTypes: DropDownItem+ {#if toolbarChildren} + {@render toolbarChildren()} + {/if} + ++ {#if isLoading} + ++ + {:else} ++ + {/if} + {#if bodyChildren} + {@render bodyChildren()} + {/if} + + {#if footerChildren} + {@render footerChildren()} + {:else} + ++ + ++ {/if} ++ + [] = [ + { + description: 'Occurs when a new error that has never been seen before is reported to your project.', + label: 'New Error', + value: 'NewError' + }, + { + description: 'Occurs when an error that has been marked as critical is reported to your project.', + label: 'Critical Error', + value: 'CriticalError' + }, + { + description: 'Occurs when an event that has been marked as fixed has reoccurred in your project.', + label: 'Regression', + value: 'StackRegression' + }, + { + description: 'Occurs when a new event that has never been seen before is reported to your project.', + label: 'New Event', + value: 'NewEvent' + }, + { + description: 'Occurs when an event that has been marked as critical is reported to your project.', + label: 'Critical Event', + value: 'CriticalEvent' + }, + { + description: 'Used to promote event stacks to external systems.', + label: 'Promoted', + value: 'StackPromoted' + } +]; diff --git a/src/Exceptionless.Web/ClientApp/src/lib/hooks/use-clipboard.svelte.ts b/src/Exceptionless.Web/ClientApp/src/lib/hooks/use-clipboard.svelte.ts new file mode 100644 index 000000000..e6eadb908 --- /dev/null +++ b/src/Exceptionless.Web/ClientApp/src/lib/hooks/use-clipboard.svelte.ts @@ -0,0 +1,47 @@ +type Options = { + /** The time before the copied status is reset. */ + delay: number; +}; + +export class UseClipboard { + get copied() { + return this.#copiedStatus === 'success'; + } + get status() { + return this.#copiedStatus; + } + #copiedStatus = $state<'failure' | 'success'>(); + + private delay: number; + + private timeout: ReturnType | undefined = undefined; + + constructor({ delay = 500 }: Partial = {}) { + this.delay = delay; + } + + async copy(text: string) { + if (this.timeout) { + this.#copiedStatus = undefined; + clearTimeout(this.timeout); + } + + try { + await navigator.clipboard.writeText(text); + + this.#copiedStatus = 'success'; + + this.timeout = setTimeout(() => { + this.#copiedStatus = undefined; + }, this.delay); + } catch { + this.#copiedStatus = 'failure'; + + this.timeout = setTimeout(() => { + this.#copiedStatus = undefined; + }, this.delay); + } + + return this.#copiedStatus; + } +} diff --git a/src/Exceptionless.Web/ClientApp/src/lib/utils.ts b/src/Exceptionless.Web/ClientApp/src/lib/utils.ts index a6e46c470..9b84989b8 100644 --- a/src/Exceptionless.Web/ClientApp/src/lib/utils.ts +++ b/src/Exceptionless.Web/ClientApp/src/lib/utils.ts @@ -1,6 +1,7 @@ import { type ClassValue, clsx } from 'clsx'; import { twMerge } from 'tailwind-merge'; +// TODO: Convert to https://svelte.dev/docs/svelte/class#The-class:-directive export function cn(...inputs: ClassValue[]) { return twMerge(clsx(inputs)); } diff --git a/src/Exceptionless.Web/ClientApp/src/routes/(app)/(components)/layouts/footer.svelte b/src/Exceptionless.Web/ClientApp/src/routes/(app)/(components)/layouts/footer.svelte index e2aaf89ee..e3324536a 100644 --- a/src/Exceptionless.Web/ClientApp/src/routes/(app)/(components)/layouts/footer.svelte +++ b/src/Exceptionless.Web/ClientApp/src/routes/(app)/(components)/layouts/footer.svelte @@ -1,10 +1,10 @@ + + + {#each routes as route (route.href)} + diff --git a/src/Exceptionless.Web/ClientApp/src/routes/(app)/+layout.svelte b/src/Exceptionless.Web/ClientApp/src/routes/(app)/+layout.svelte index aa695ccd8..c063b169c 100644 --- a/src/Exceptionless.Web/ClientApp/src/routes/(app)/+layout.svelte +++ b/src/Exceptionless.Web/ClientApp/src/routes/(app)/+layout.svelte @@ -9,8 +9,10 @@ import { organization } from '$features/organizations/context.svelte'; import { invalidateProjectQueries } from '$features/projects/api.svelte'; import { invalidateStackQueries } from '$features/stacks/api.svelte'; + import { invalidateTokenQueries } from '$features/tokens/api.svelte'; import { getMeQuery, invalidateUserQueries } from '$features/users/api.svelte'; import { getGravatarFromCurrentUser } from '$features/users/gravatar.svelte'; + import { invalidateWebhookQueries } from '$features/webhooks/api.svelte'; import { isEntityChangedType, type WebSocketMessageType } from '$features/websockets/models'; import { WebSocketClient } from '$features/websockets/web-socket-client.svelte'; import { validate } from '$shared/validation'; @@ -18,7 +20,7 @@ import { useQueryClient } from '@tanstack/svelte-query'; import { fade } from 'svelte/transition'; - import { type NavigationItemContext, routes } from '../routes'; + import { type NavigationItemContext, routes } from '../routes.svelte'; import Footer from './(components)/layouts/footer.svelte'; import Navbar from './(components)/layouts/navbar.svelte'; import SidebarOrganizationSwitcher from './(components)/layouts/sidebar-organization-switcher.svelte'; @@ -84,9 +86,15 @@ case 'StackChanged': await invalidateStackQueries(queryClient, data.message); break; + case 'TokenChanged': + await invalidateTokenQueries(queryClient, data.message); + break; case 'UserChanged': await invalidateUserQueries(queryClient, data.message); break; + case 'WebHookChanged': + await invalidateWebhookQueries(queryClient, data.message); + break; default: await queryClient.invalidateQueries({ queryKey: [data.message.type] }); break; @@ -151,29 +159,29 @@ }; }); - const userResponse = getMeQuery(); - const gravatar = getGravatarFromCurrentUser(userResponse); + const meQuery = getMeQuery(); + const gravatar = getGravatarFromCurrentUser(meQuery); - const organizationsResponse = getOrganizationQuery({}); + const organizationsQuery = getOrganizationQuery({}); $effect(() => { - if (!organizationsResponse.isSuccess) { + if (!organizationsQuery.isSuccess) { return; } - if (organizationsResponse.data.length === 0) { + if (organizationsQuery.data.length === 0) { // TODO: Redirect to create organization page. organization.current = undefined; return; } - if (!organizationsResponse.data.find((org) => org.id === organization.current)) { - organization.current = organizationsResponse.data[0]!.id; + if (!organizationsQuery.data.find((org) => org.id === organization.current)) { + organization.current = organizationsQuery.data[0]!.id; } }); const filteredRoutes = $derived.by(() => { - const context: NavigationItemContext = { authenticated: isAuthenticated, user: userResponse.data }; - return routes.filter((route) => (route.show ? route.show(context) : true)); + const context: NavigationItemContext = { authenticated: isAuthenticated, user: meQuery.data }; + return routes().filter((route) => (route.show ? route.show(context) : true)); }); @@ -183,14 +191,14 @@ {#snippet header()}+ {/each} + {/snippet} {#snippet footer()} - + {/snippet} diff --git a/src/Exceptionless.Web/ClientApp/src/routes/(app)/+page.svelte b/src/Exceptionless.Web/ClientApp/src/routes/(app)/+page.svelte index e0d76de26..8dd7d4892 100644 --- a/src/Exceptionless.Web/ClientApp/src/routes/(app)/+page.svelte +++ b/src/Exceptionless.Web/ClientApp/src/routes/(app)/+page.svelte @@ -1,4 +1,5 @@ - - diff --git a/src/Exceptionless.Web/ClientApp/src/routes/(app)/account/+layout.svelte b/src/Exceptionless.Web/ClientApp/src/routes/(app)/account/+layout.svelte index 7974f3d48..98012cdb7 100644 --- a/src/Exceptionless.Web/ClientApp/src/routes/(app)/account/+layout.svelte +++ b/src/Exceptionless.Web/ClientApp/src/routes/(app)/account/+layout.svelte @@ -2,38 +2,39 @@ import * as Card from '$comp/ui/card'; import { Separator } from '$comp/ui/separator'; import { accessToken } from '$features/auth/index.svelte'; + import * as SplitLayout from '$features/shared/components/layouts/split-layout'; import { getMeQuery } from '$features/users/api.svelte'; - import type { NavigationItemContext } from '../../routes'; + import type { NavigationItemContext } from '../../routes.svelte'; - import SidebarNav from './(components)/sidebar-nav.svelte'; - import { routes } from './routes'; + import SidebarNav from '../(components)/sidebar-nav.svelte'; + import { routes } from './routes.svelte'; let { children } = $props(); - const userResponse = getMeQuery(); + const meQuery = getMeQuery(); let isAuthenticated = $derived(accessToken.current !== null); const filteredRoutes = $derived.by(() => { - const context: NavigationItemContext = { authenticated: isAuthenticated, user: userResponse.data }; - return routes.filter((route) => (route.show ? route.show(context) : true)); + const context: NavigationItemContext = { authenticated: isAuthenticated, user: meQuery.data }; + return routes().filter((route) => (route.show ? route.show(context) : true)); }); --+ + diff --git a/src/Exceptionless.Web/ClientApp/src/routes/(app)/account/appearance/(components)/theme-preview.svelte b/src/Exceptionless.Web/ClientApp/src/routes/(app)/account/appearance/(components)/theme-preview.svelte index e6324b2a4..b116860e4 100644 --- a/src/Exceptionless.Web/ClientApp/src/routes/(app)/account/appearance/(components)/theme-preview.svelte +++ b/src/Exceptionless.Web/ClientApp/src/routes/(app)/account/appearance/(components)/theme-preview.svelte @@ -7,7 +7,7 @@ let { mode }: Props = $props(); - let resolvedMode = $state(mode !== 'system' ? mode : ($systemPrefersMode ?? 'dark')); + let resolvedMode = $state(mode !== 'system' ? mode : (systemPrefersMode.current ?? 'dark')); {#if resolvedMode === 'light'} diff --git a/src/Exceptionless.Web/ClientApp/src/routes/(app)/account/appearance/+page.svelte b/src/Exceptionless.Web/ClientApp/src/routes/(app)/account/appearance/+page.svelte index 0c756e8ee..42c8f40f4 100644 --- a/src/Exceptionless.Web/ClientApp/src/routes/(app)/account/appearance/+page.svelte +++ b/src/Exceptionless.Web/ClientApp/src/routes/(app)/account/appearance/+page.svelte @@ -24,7 +24,7 @@ class="grid max-w-xl grid-cols-3 gap-8 pt-2" orientation="horizontal" onValueChange={onUserThemePreferenceChange} - value={$userPrefersMode} + value={userPrefersMode.current} >Settings Manage your account settings and set e-mail preferences. - - -+ ++ +-{@render children()} - + -@@ -211,7 +236,7 @@ (selectedStackId = undefined)} open={eventsResponse.isSuccess}> + (selectedStackId = undefined)} open={eventsQuery.isSuccess}> + let { children } = $props(); + + +{@render children()} diff --git a/src/Exceptionless.Web/ClientApp/src/routes/(app)/project/[projectId]/+layout.svelte b/src/Exceptionless.Web/ClientApp/src/routes/(app)/project/[projectId]/+layout.svelte new file mode 100644 index 000000000..f9f1060c3 --- /dev/null +++ b/src/Exceptionless.Web/ClientApp/src/routes/(app)/project/[projectId]/+layout.svelte @@ -0,0 +1,63 @@ + + + + diff --git a/src/Exceptionless.Web/ClientApp/src/routes/(app)/project/[projectId]/api-keys/+page.svelte b/src/Exceptionless.Web/ClientApp/src/routes/(app)/project/[projectId]/api-keys/+page.svelte new file mode 100644 index 000000000..1de44c7d1 --- /dev/null +++ b/src/Exceptionless.Web/ClientApp/src/routes/(app)/project/[projectId]/api-keys/+page.svelte @@ -0,0 +1,93 @@ + + ++ +{#if projectQuery.isSuccess} + ++ {projectQuery.data.name} ++ {/if} + SettingsManage your project settings and integrations. ++ + ++ + + ++ ++ ++ + {@render children()} + ++diff --git a/src/Exceptionless.Web/ClientApp/src/routes/(app)/project/[projectId]/configuration-values/+page.svelte b/src/Exceptionless.Web/ClientApp/src/routes/(app)/project/[projectId]/configuration-values/+page.svelte new file mode 100644 index 000000000..fbc619798 --- /dev/null +++ b/src/Exceptionless.Web/ClientApp/src/routes/(app)/project/[projectId]/configuration-values/+page.svelte @@ -0,0 +1,97 @@ + + +++++ +API Keys
+Create and manage API keys for authenticating your applications with Exceptionless. ++ + + ++ +{#if showAddProjectConfigDialog} +++++ + +Configuration Values
+The configuration value will be sent to the + Exceptionless clients in real time. This allows you to change how your app works without redeploying your app. ++ + + +{/if} diff --git a/src/Exceptionless.Web/ClientApp/src/routes/(app)/project/[projectId]/configure/+page.svelte b/src/Exceptionless.Web/ClientApp/src/routes/(app)/project/[projectId]/configure/+page.svelte new file mode 100644 index 000000000..00dbfe0f9 --- /dev/null +++ b/src/Exceptionless.Web/ClientApp/src/routes/(app)/project/[projectId]/configure/+page.svelte @@ -0,0 +1,538 @@ + + + +diff --git a/src/Exceptionless.Web/ClientApp/src/routes/(app)/project/[projectId]/integrations/+page.svelte b/src/Exceptionless.Web/ClientApp/src/routes/(app)/project/[projectId]/integrations/+page.svelte new file mode 100644 index 000000000..7684129a2 --- /dev/null +++ b/src/Exceptionless.Web/ClientApp/src/routes/(app)/project/[projectId]/integrations/+page.svelte @@ -0,0 +1,227 @@ + + +++Download & Configure Project
+The Exceptionless client can be integrated into your project in just a few easy steps. ++ + +
+ + {#if selectedProjectType} +- +
+ + {#if selectedProjectType} + {#if isCommandLine} +Select your project type.
+{ + selectedProjectType = projectTypes.find((P) => P.package === value) || null; + queryParams.type = value; + }} + > + ++ {#if selectedProjectType} + {selectedProjectType.platform}: {selectedProjectType.label} + {:else} + Please select a project type + {/if} + ++ {#each Object.entries(projectTypesGroupedByPlatform) as [platform, types = []], index (platform)} + ++ + {#if index < Object.keys(projectTypesGroupedByPlatform).length - 1} +{platform} + {#each types as type (type.id)} ++ {type.label} + + {/each} ++ {/if} + {/each} + - +
+ {:else if isDotNet} +Execute the following in your shell.
++ {#if isBashShell} +++ {:else} + + {/if} + +++ - +
+ {#if selectedProjectType.package === 'Exceptionless'} +Install the {selectedProjectType.package} NuGet package in your .NET project by executing this command from the project directory.
++++ +++ - +
+ {:else if selectedProjectType.package === 'Exceptionless.AspNetCore'} +On app startup, import the Exceptionless namespace and call the client.Startup() extension method to wire up to any runtime + specific error handlers and read any available configuration.
++++ +++ This library is platform-agnostic and is compiled against different runtimes. Depending on the referenced runtime, Exceptionless + will attempt to wire up to available error handlers and attempt to discover configuration settings available to that runtime. For + these reasons if you are on a known platform then use the platform specific package to save you time configuring while giving you + more contextual information. For more information and configuration examples please read the Exceptionless Configuration documentation for more information.
+- +
+ {:else if selectedProjectType.package === 'Exceptionless.Windows' || selectedProjectType.package === 'Exceptionless.Wpf'} +You must import the Exceptionless namespace and add the following code to register and configure the Exceptionless client.
++++ +++ In order to start gathering unhandled exceptions, you need to register the Exceptionless middleware after building your application + as shown above. Alternatively, you can use different overloads of the AddExceptionless method for additional configuration options.
+- +
+ {#if selectedProjectType.package === 'Exceptionless.Wpf'} +Configure your Exceptionless assembly attribute to your projects AssemblyInfo.cs file.
++++ +++ - +
+ {:else} +Finally, import the Exceptionless namespace and include the following line of code in your App.xaml.cs file to enable reporting + of unhandled exceptions.
++++ +++ - +
+ {/if} + {/if} + {:else if isDotNetLegacy} +Finally, import the Exceptionless namespace and include the following line of code in your Program.cs file to enable reporting + of unhandled exceptions.
++++ +++ - +
+ {#if selectedProjectType.package === 'Exceptionless'} +Install the {selectedProjectType.package} NuGet package to your Visual Studio project by running this command in the Package Manager Console.
++++ +++ - +
+ {:else if selectedProjectType.package === 'Exceptionless.Windows' || selectedProjectType.package === 'Exceptionless.Wpf'} +On app startup, import the Exceptionless namespace and call the client.Startup() extension method to wire up to any runtime + specific error handlers and read any available configuration.
++++ +++ For more information and additional configuration methods please read the Exceptionless Configuration documentation for more information.
+- +
+ {#if selectedProjectType.package === 'Exceptionless.Wpf'} +Configure your Exceptionless API key in your project's app.config file, and add it under the Exceptionless section within the file.
++++ +++ - +
+ {:else} +Finally, import the Exceptionless namespace and include the following line of code in your App.xaml.cs file to enable reporting + of unhandled exceptions.
++++ +++ - +
+ {/if} + {/if} + + {#if selectedProjectType.package === 'Exceptionless.Mvc' || selectedProjectType.package === 'Exceptionless.Web' || selectedProjectType.package === 'Exceptionless.WebApi'} +Finally, import the Exceptionless namespace and include the following line of code in your Program.cs file to enable reporting + of unhandled exceptions.
++++ +++ - +
+ {/if} + + {#if selectedProjectType.package === 'Exceptionless.WebApi'} +Configure your Exceptionless API key in your project's web.config file, and add it under the Exceptionless section within the file.
++++ +++ - +
+ {/if} + {/if} + + {#if isJavaScript} +Finally, you must import the Exceptionless namespace and call
+method with an instance of HttpConfiguration during the startup of your app. +++ +++ If you are hosting Web API inside of ASP.NET, you would register Exceptionless using GlobalConfiguration.
++++ +++ - +
+Install the {selectedProjectType.package} npm package in your JavaScript project by running this command in the project + directory.
++ {#if isNode} +++ ++ {:else} ++ + ++ {/if} ++ - +
+ {/if} + {/if} +Configure the ExceptionlessClient with your Exceptionless API key.
++ {#if !isNode} +++ ++ {:else} ++ + ++ {/if} ++ That's it! + {#if isCommandLine} + You can now send data to Exceptionless using the command line. + {:else} + Your project should now automatically be sending all unhandled exceptions to Exceptionless! + {#if isDotNet} + You can also send handled exceptions to Exceptionless using +
+ ++ {:else if isJavaScript} + You can also send handled exceptions to Exceptionless using + + {/if} + {/if} + + + {/if} ++ ++ For more information and troubleshooting tips, view the + Exceptionless documentation. + {#if isJavaScript} + If you're using a specific framework (like Angular, Express.js, React, Svelte or Vue), be sure to check out our + JavaScript Framework Guides for optimized integration + steps. + {/if} +
+++ +{#if showAddWebhookDialog && organization.current} +++Integrations
+Create and manage API keys for authenticating your applications with Exceptionless. ++ + + + + {#if isSlackEnabled} +Zapier
+Exceptionless has a native Zapier integration. You can use Zapier to connect your Exceptionless account to over 3,000 other applications all + without writing any code. + + ++ + {/if} + +Slack
+Integrate Exceptionless with Slack to receive real-time notifications about new errors, critical events, and system alerts directly in your + team's Slack channels. Keep your team informed and respond faster to issues without constantly checking the dashboard. + ++ + {#if hasSlackIntegration} + + {:else} + + {/if} + + +++ +++ + +Webhooks
+The following web hooks will be called for this project. ++ +{/if} + +{#if showRemoveSlackDialog} + +{/if} diff --git a/src/Exceptionless.Web/ClientApp/src/routes/(app)/project/[projectId]/manage/+page.svelte b/src/Exceptionless.Web/ClientApp/src/routes/(app)/project/[projectId]/manage/+page.svelte new file mode 100644 index 000000000..3decc6ce9 --- /dev/null +++ b/src/Exceptionless.Web/ClientApp/src/routes/(app)/project/[projectId]/manage/+page.svelte @@ -0,0 +1,188 @@ + + + ++ +{#if projectQuery.isSuccess} +++Manage Project
+Manage your project name and view usage. ++ + + + + + + ++ {#snippet children({ props })} + +Project name + + {/snippet} ++ + +++ ++ ++++ ++ ++ + ++ +Actions ++ (showResetDialog = true)} disabled={resetProject.isPending}> + {#if resetProject.isPending} + ++ Resetting... + {:else} + + Reset Project Data + {/if} + (showRemoveDialog = true)} disabled={removeProject.isPending}> + {#if removeProject.isPending} + ++ Deleting Project... + {:else} + + Delete Project + {/if} + + +{/if} diff --git a/src/Exceptionless.Web/ClientApp/src/routes/(app)/project/[projectId]/routes.svelte.ts b/src/Exceptionless.Web/ClientApp/src/routes/(app)/project/[projectId]/routes.svelte.ts new file mode 100644 index 000000000..299ec8fe7 --- /dev/null +++ b/src/Exceptionless.Web/ClientApp/src/routes/(app)/project/[projectId]/routes.svelte.ts @@ -0,0 +1,53 @@ +import { page } from '$app/state'; +import ClientConfig from '@lucide/svelte/icons/braces'; +import Configure from '@lucide/svelte/icons/cloud-download'; +import ApiKey from '@lucide/svelte/icons/key'; +import Integration from '@lucide/svelte/icons/plug-2'; +import Settings from '@lucide/svelte/icons/settings'; + +import type { NavigationItem } from '../../../routes.svelte'; + +export function routes(): NavigationItem[] { + if (!page.params.projectId) { + return []; + } + + return [ + { + group: 'Project Settings', + href: `/next/project/${page.params.projectId}/manage`, + icon: Settings, + title: 'General' + }, + { + group: 'Project Settings', + href: `/next/project/${page.params.projectId}/api-keys`, + icon: ApiKey, + title: 'API Keys' + }, + { + group: 'Project Settings', + href: `/next/project/${page.params.projectId}/settings`, + icon: Settings, + title: 'Settings' + }, + { + group: 'Project Settings', + href: `/next/project/${page.params.projectId}/configuration-values`, + icon: ClientConfig, + title: 'Configuration Values' + }, + { + group: 'Project Settings', + href: `/next/project/${page.params.projectId}/integrations`, + icon: Integration, + title: 'Integrations' + }, + { + group: 'Project Settings', + href: `/next/project/${page.params.projectId}/configure`, + icon: Configure, + title: 'Configure Client' + } + ]; +} diff --git a/src/Exceptionless.Web/ClientApp/src/routes/(app)/project/[projectId]/settings/+page.svelte b/src/Exceptionless.Web/ClientApp/src/routes/(app)/project/[projectId]/settings/+page.svelte new file mode 100644 index 000000000..90a42f564 --- /dev/null +++ b/src/Exceptionless.Web/ClientApp/src/routes/(app)/project/[projectId]/settings/+page.svelte @@ -0,0 +1,235 @@ + + + +diff --git a/src/Exceptionless.Web/ClientApp/src/routes/(app)/project/add/+page.svelte b/src/Exceptionless.Web/ClientApp/src/routes/(app)/project/add/+page.svelte new file mode 100644 index 000000000..776886ebb --- /dev/null +++ b/src/Exceptionless.Web/ClientApp/src/routes/(app)/project/add/+page.svelte @@ -0,0 +1,85 @@ + + +++Settings
+Create and manage API keys for authenticating your applications with Exceptionless. ++ + + + +Default Log Level
+The default log level controls the minimum log level that should be accepted for log events. Log levels can also be overridden at the log stack + level. + ++ + + +Data Exclusions
+A comma delimited list of field names that should be removed from any error report data (e.g., extended data properties, form fields, cookies and + query parameters). You can also specify a field name with wildcards (*) to specify + starts with, ends with, or contains just to be extra safe. + + ++++ + + + +Error Stacking
+++++ +User Namespaces +A comma delimited list of the namespace names that your applications code belongs to. If this value is set, only methods inside of these + namespaces will be considered as stacking targets. + +++Common Methods +A comma delimited list of common method names that should not be used as stacking targets. This is useful when your code contains shared + utility methods that throw a lot of errors. + ++ +Spam Detection
+A comma delimited list of user agents that should be ignored. + + ++++ + +diff --git a/src/Exceptionless.Web/ClientApp/src/routes/(app)/project/list/+page.svelte b/src/Exceptionless.Web/ClientApp/src/routes/(app)/project/list/+page.svelte new file mode 100644 index 000000000..7d6a0cae4 --- /dev/null +++ b/src/Exceptionless.Web/ClientApp/src/routes/(app)/project/list/+page.svelte @@ -0,0 +1,98 @@ + + ++ ++ + +Add Project +Add a new project to start tracking errors and events. ++ ++ + ++ {#snippet children({ props })} + +Project Name + + {/snippet} ++ + {#if $submitting} + + +Adding Project... + {:else} + Add Project + {/if} +diff --git a/src/Exceptionless.Web/ClientApp/src/routes/(app)/project/routes.svelte.ts b/src/Exceptionless.Web/ClientApp/src/routes/(app)/project/routes.svelte.ts new file mode 100644 index 000000000..55e67d873 --- /dev/null +++ b/src/Exceptionless.Web/ClientApp/src/routes/(app)/project/routes.svelte.ts @@ -0,0 +1,17 @@ +import Settings from '@lucide/svelte/icons/settings'; + +import type { NavigationItem } from '../../routes.svelte'; + +import { routes as projectSettingsRoutes } from './[projectId]/routes.svelte'; + +export function routes(): NavigationItem[] { + return [ + { + group: 'Settings', + href: '/next/project/list', + icon: Settings, + title: 'Projects' + }, + ...projectSettingsRoutes() + ]; +} diff --git a/src/Exceptionless.Web/ClientApp/src/routes/(app)/routes.svelte.ts b/src/Exceptionless.Web/ClientApp/src/routes/(app)/routes.svelte.ts new file mode 100644 index 000000000..fbd84ab89 --- /dev/null +++ b/src/Exceptionless.Web/ClientApp/src/routes/(app)/routes.svelte.ts @@ -0,0 +1,69 @@ +import Documentation from '@lucide/svelte/icons/book-open'; +import ApiDocumentations from '@lucide/svelte/icons/braces'; +import Issues from '@lucide/svelte/icons/bug'; +import EventStream from '@lucide/svelte/icons/calendar-arrow-down'; +import Events from '@lucide/svelte/icons/calendar-days'; +import Support from '@lucide/svelte/icons/circle-help'; +import GitHub from '@lucide/svelte/icons/github'; + +import type { NavigationItem } from '../routes.svelte'; + +import { routes as accountRoutes } from './account/routes.svelte'; +import { routes as eventRoutes } from './event/routes.svelte'; +import { routes as projectRoutes } from './project/routes.svelte'; + +export function routes(): NavigationItem[] { + const items = [ + { + group: 'Dashboards', + href: '/next/', + icon: Events, + title: 'Events' + }, + { + group: 'Dashboards', + href: '/next/issues', + icon: Issues, + title: 'Issues' + }, + { + group: 'Dashboards', + href: '/next/stream', + icon: EventStream, + title: 'Event Stream' + }, + { + group: 'Help', + href: 'https://exceptionless.com/docs/', + icon: Documentation, + openInNewTab: true, + title: 'Documentation' + }, + { + group: 'Help', + href: 'https://github.com/exceptionless/Exceptionless/issues', + icon: Support, + openInNewTab: true, + title: 'Support' + }, + { + group: 'Help', + href: 'https://github.com/exceptionless/Exceptionless', + icon: GitHub, + openInNewTab: true, + title: 'GitHub' + }, + { + group: 'Help', + href: '/docs/index.html', + icon: ApiDocumentations, + openInNewTab: true, + title: 'API' + }, + ...accountRoutes(), + ...eventRoutes(), + ...projectRoutes() + ]; + + return items; +} diff --git a/src/Exceptionless.Web/ClientApp/src/routes/(app)/routes.ts b/src/Exceptionless.Web/ClientApp/src/routes/(app)/routes.ts deleted file mode 100644 index 1cda7c76d..000000000 --- a/src/Exceptionless.Web/ClientApp/src/routes/(app)/routes.ts +++ /dev/null @@ -1,68 +0,0 @@ -import Documentation from 'lucide-svelte/icons/book-open'; -import ApiDocumentations from 'lucide-svelte/icons/braces'; -import Issues from 'lucide-svelte/icons/bug'; -import EventStream from 'lucide-svelte/icons/calendar-arrow-down'; -import Events from 'lucide-svelte/icons/calendar-days'; -import Support from 'lucide-svelte/icons/circle-help'; -import GitHub from 'lucide-svelte/icons/github'; - -import type { NavigationItem } from '../routes'; - -import { routes as accountRoutes } from './account/routes'; - -export const routes: NavigationItem[] = [ - { - group: 'Dashboards', - href: '/next/', - icon: Events, - title: 'Events' - }, - { - group: 'Dashboards', - href: '/next/issues', - icon: Issues, - title: 'Issues' - }, - { - group: 'Dashboards', - href: '/next/stream', - icon: EventStream, - title: 'Event Stream' - }, - { - group: 'Event', - href: '/(app)/event/[id]', - icon: Events, - show: () => false, - title: 'Event Details' - }, - { - group: 'Help', - href: 'https://exceptionless.com/docs/', - icon: Documentation, - openInNewTab: true, - title: 'Documentation' - }, - { - group: 'Help', - href: 'https://github.com/exceptionless/Exceptionless/issues', - icon: Support, - openInNewTab: true, - title: 'Support' - }, - { - group: 'Help', - href: 'https://github.com/exceptionless/Exceptionless', - icon: GitHub, - openInNewTab: true, - title: 'GitHub' - }, - { - group: 'Help', - href: '/docs/index.html', - icon: ApiDocumentations, - openInNewTab: true, - title: 'API' - }, - ...accountRoutes -]; diff --git a/src/Exceptionless.Web/ClientApp/src/routes/(app)/stream/+page.svelte b/src/Exceptionless.Web/ClientApp/src/routes/(app)/stream/+page.svelte index eaddc55b5..3a3dec275 100644 --- a/src/Exceptionless.Web/ClientApp/src/routes/(app)/stream/+page.svelte +++ b/src/Exceptionless.Web/ClientApp/src/routes/(app)/stream/+page.svelte @@ -1,4 +1,5 @@+ ++ +My Projects +View and manage your projects. Click on a project to view its details. ++ + ++ ++ {#snippet toolbarChildren()} + ++ ++ {/snippet} +