diff --git a/.gitignore b/.gitignore index e245fb2..43cb8fe 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,4 @@ src-tauri/gen/ # Local security scan artifacts .secrets.baseline .secretscan-venv/ +coverage/ \ No newline at end of file diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..521a9f7 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +legacy-peer-deps=true diff --git a/package-lock.json b/package-lock.json index 2be7523..538847f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,45 +8,31 @@ "name": "azvault", "version": "0.1.0", "dependencies": { - "@fluentui/react-components": "^9.72.11", - "@fluentui/react-icons": "^2.0.318", - "@tanstack/react-query": "^5.90.20", + "@fluentui/react-components": "^9.73.0", + "@fluentui/react-icons": "^2.0.319", + "@tanstack/react-query": "^5.90.21", "@tauri-apps/api": "^2.10.1", "@tauri-apps/plugin-store": "^2.4.2", "date-fns": "^4.1.0", - "react": "^19.2.0", - "react-dom": "^19.2.0", + "react": "^19.2.4", + "react-dom": "^19.2.4", "zustand": "^5.0.11" }, "devDependencies": { - "@eslint/js": "^9.39.1", - "@types/node": "^24.10.1", - "@types/react": "^19.2.7", + "@eslint/js": "^10.0.1", + "@types/node": "^25.3.0", + "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^5.1.1", - "@vitest/coverage-v8": "^3.2.4", - "eslint": "^9.39.1", + "@vitejs/plugin-react": "^5.1.4", + "@vitest/coverage-v8": "^4.0.18", + "eslint": "^10.0.0", "eslint-plugin-react-hooks": "^7.0.1", - "eslint-plugin-react-refresh": "^0.4.24", - "globals": "^16.5.0", + "eslint-plugin-react-refresh": "^0.5.0", + "globals": "^17.3.0", "typescript": "~5.9.3", - "typescript-eslint": "^8.48.0", + "typescript-eslint": "^8.56.0", "vite": "^7.3.1", - "vitest": "^3.2.4" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" + "vitest": "^4.0.18" } }, "node_modules/@babel/code-frame": { @@ -850,118 +836,89 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", - "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.1.tgz", + "integrity": "sha512-uVSdg/V4dfQmTjJzR0szNczjOH/J+FyUMMjYtr07xFRXR7EDf9i1qdxrD0VusZH9knj1/ecxzCQQxyic5NzAiA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/object-schema": "^2.1.7", + "@eslint/object-schema": "^3.0.1", "debug": "^4.3.1", - "minimatch": "^3.1.2" + "minimatch": "^10.1.1" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^20.19.0 || ^22.13.0 || >=24" } }, "node_modules/@eslint/config-helpers": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", - "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.5.2.tgz", + "integrity": "sha512-a5MxrdDXEvqnIq+LisyCX6tQMPF/dSJpCfBgBauY+pNZ28yCtSsTvyTYrMhaI+LK26bVyCJfJkT0u8KIj2i1dQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.17.0" + "@eslint/core": "^1.1.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^20.19.0 || ^22.13.0 || >=24" } }, "node_modules/@eslint/core": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", - "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.1.0.tgz", + "integrity": "sha512-/nr9K9wkr3P1EzFTdFdMoLuo1PmIxjmwvPozwoSodjNBdefGujXQUF93u1DDZpEaTuDvMsIQddsd35BwtrW9Xw==", "dev": true, "license": "Apache-2.0", "dependencies": { "@types/json-schema": "^7.0.15" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz", - "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.1", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^20.19.0 || ^22.13.0 || >=24" } }, "node_modules/@eslint/js": { - "version": "9.39.2", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.2.tgz", - "integrity": "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-10.0.1.tgz", + "integrity": "sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==", "dev": true, "license": "MIT", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "eslint": "^10.0.0" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, "node_modules/@eslint/object-schema": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", - "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.1.tgz", + "integrity": "sha512-P9cq2dpr+LU8j3qbLygLcSZrl2/ds/pUpfnHNNuk5HW7mnngHs+6WSq5C9mO3rqRX8A1poxqLTC9cu0KOyJlBg==", "dev": true, "license": "Apache-2.0", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^20.19.0 || ^22.13.0 || >=24" } }, "node_modules/@eslint/plugin-kit": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", - "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.6.0.tgz", + "integrity": "sha512-bIZEUzOI1jkhviX2cp5vNyXQc6olzb2ohewQubuYlMXZ2Q/XjBO0x0XhGPvc9fjSIiUN0vw+0hq53BJ4eQSJKQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.17.0", + "@eslint/core": "^1.1.0", "levn": "^0.4.1" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^20.19.0 || ^22.13.0 || >=24" } }, "node_modules/@floating-ui/core": { @@ -1008,24 +965,24 @@ } }, "node_modules/@fluentui/priority-overflow": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@fluentui/priority-overflow/-/priority-overflow-9.2.1.tgz", - "integrity": "sha512-WH5dv54aEqWo/kKQuADAwjv66W6OUMFllQMjpdkrktQp7pu4JXtmF60iYcp9+iuIX9iCeW01j8gNTU08MQlfIQ==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@fluentui/priority-overflow/-/priority-overflow-9.3.0.tgz", + "integrity": "sha512-yaBC0R4e+4ZlCWDulB5S+xBrlnLwfzdg68GaarCqQO8OHjLg7Ah05xTj7PsAYcoHeEg/9vYeBwGXBpRO8+Tjqw==", "license": "MIT", "dependencies": { "@swc/helpers": "^0.5.1" } }, "node_modules/@fluentui/react-accordion": { - "version": "9.8.16", - "resolved": "https://registry.npmjs.org/@fluentui/react-accordion/-/react-accordion-9.8.16.tgz", - "integrity": "sha512-UkgjCyKMy9C+IKFtnovDH8UZO1hebI45KDVViaPchc5oNV3hha9dFevqP8Iisr65muIFZQuloetr5saDvGadxA==", + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-accordion/-/react-accordion-9.9.0.tgz", + "integrity": "sha512-vK7LTTRoICs/k7zRZkmBpX5v8Ig72xHdBM2uzUT/Az+Qk+pTYGzxz0pogC/Y8jq8Ynn0DhVgJ7IGm25/L19A+g==", "license": "MIT", "dependencies": { - "@fluentui/react-aria": "^9.17.8", + "@fluentui/react-aria": "^9.17.9", "@fluentui/react-context-selector": "^9.2.14", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.3.5", + "@fluentui/react-jsx-runtime": "^9.4.0", "@fluentui/react-motion": "^9.11.6", "@fluentui/react-motion-components-preview": "^0.15.0", "@fluentui/react-shared-contexts": "^9.26.1", @@ -1043,15 +1000,15 @@ } }, "node_modules/@fluentui/react-alert": { - "version": "9.0.0-beta.132", - "resolved": "https://registry.npmjs.org/@fluentui/react-alert/-/react-alert-9.0.0-beta.132.tgz", - "integrity": "sha512-yIn9Ybx36YBrHIW9epmqr5GXMkSbwI7a1eN/8m710s1aLw38n5P/GF/6t9fyiv/qz9RPMHM6Y/GNTP6/v/Z+9A==", + "version": "9.0.0-beta.133", + "resolved": "https://registry.npmjs.org/@fluentui/react-alert/-/react-alert-9.0.0-beta.133.tgz", + "integrity": "sha512-6BW1AONX+wFyGADJr30riiJMJczIyUtJeXo11jjAY+A+AA6IDLzZHJuFfgza/7fWFBfJBD72mIoV+b/xSrCthw==", "license": "MIT", "dependencies": { - "@fluentui/react-avatar": "^9.9.14", - "@fluentui/react-button": "^9.8.0", + "@fluentui/react-avatar": "^9.10.0", + "@fluentui/react-button": "^9.8.1", "@fluentui/react-icons": "^2.0.239", - "@fluentui/react-jsx-runtime": "^9.3.5", + "@fluentui/react-jsx-runtime": "^9.4.0", "@fluentui/react-tabster": "^9.26.12", "@fluentui/react-theme": "^9.2.1", "@fluentui/react-utilities": "^9.26.1", @@ -1066,13 +1023,13 @@ } }, "node_modules/@fluentui/react-aria": { - "version": "9.17.8", - "resolved": "https://registry.npmjs.org/@fluentui/react-aria/-/react-aria-9.17.8.tgz", - "integrity": "sha512-u7RIXvQZTX5RKGvbNVSGO/cbbY3n+4c8TMQMRhujU97mpXGoOQR32xy5PfoS+WPXeIlblPqeg/NS20q+9kfWwg==", + "version": "9.17.9", + "resolved": "https://registry.npmjs.org/@fluentui/react-aria/-/react-aria-9.17.9.tgz", + "integrity": "sha512-L0/lin/zKzTcYDPM3i+fMeP5OtbFVfwxMHhPewLy7nbFnFb0p7dbWCxLE6r0C6yq4JFBk0nA0eWy9ox2BOMTRA==", "license": "MIT", "dependencies": { "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-jsx-runtime": "^9.3.5", + "@fluentui/react-jsx-runtime": "^9.4.0", "@fluentui/react-shared-contexts": "^9.26.1", "@fluentui/react-tabster": "^9.26.12", "@fluentui/react-utilities": "^9.26.1", @@ -1086,20 +1043,20 @@ } }, "node_modules/@fluentui/react-avatar": { - "version": "9.9.14", - "resolved": "https://registry.npmjs.org/@fluentui/react-avatar/-/react-avatar-9.9.14.tgz", - "integrity": "sha512-jaXnnZ5ubbgzVud3x8D63iHg8zHV1McNc7/XdOwfmkWop/6ve5bWhTP2l/K0ftobXBIkA+kkwhEbhylHaCQz7g==", + "version": "9.10.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-avatar/-/react-avatar-9.10.0.tgz", + "integrity": "sha512-GQuKzoTm/ABEnw97It6/7Ut21b3ZuB+F00yVkjS30xAN+q5mYIKdVcgXykYE9LiDJHp21CmrgtcyrThlDxo4nw==", "license": "MIT", "dependencies": { - "@fluentui/react-badge": "^9.4.13", + "@fluentui/react-badge": "^9.4.14", "@fluentui/react-context-selector": "^9.2.14", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.3.5", - "@fluentui/react-popover": "^9.13.0", + "@fluentui/react-jsx-runtime": "^9.4.0", + "@fluentui/react-popover": "^9.13.1", "@fluentui/react-shared-contexts": "^9.26.1", "@fluentui/react-tabster": "^9.26.12", "@fluentui/react-theme": "^9.2.1", - "@fluentui/react-tooltip": "^9.9.0", + "@fluentui/react-tooltip": "^9.9.1", "@fluentui/react-utilities": "^9.26.1", "@griffel/react": "^1.5.32", "@swc/helpers": "^0.5.1" @@ -1112,13 +1069,13 @@ } }, "node_modules/@fluentui/react-badge": { - "version": "9.4.13", - "resolved": "https://registry.npmjs.org/@fluentui/react-badge/-/react-badge-9.4.13.tgz", - "integrity": "sha512-rgmjqg99uml+HmA0G1iSHnED2e/P7ZwYX0iGPIQL8HpGG9S/3U/WHXqYgidl7kjmdANcNmdbqDjaU1ntx4+BcA==", + "version": "9.4.14", + "resolved": "https://registry.npmjs.org/@fluentui/react-badge/-/react-badge-9.4.14.tgz", + "integrity": "sha512-13+0IAGhPoHrfcX2nIl47cUgqO5fyvfq6rNPAMjyxz/ZCvX/TFiAglq8P7CRyGHQWBvaUTHFME2//gy8dW2new==", "license": "MIT", "dependencies": { "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.3.5", + "@fluentui/react-jsx-runtime": "^9.4.0", "@fluentui/react-shared-contexts": "^9.26.1", "@fluentui/react-theme": "^9.2.1", "@fluentui/react-utilities": "^9.26.1", @@ -1133,16 +1090,16 @@ } }, "node_modules/@fluentui/react-breadcrumb": { - "version": "9.3.15", - "resolved": "https://registry.npmjs.org/@fluentui/react-breadcrumb/-/react-breadcrumb-9.3.15.tgz", - "integrity": "sha512-7Y5JbgrgUwIJPWcQNohLJUVmIkGsTk8rqjfL0OyBscRRA3hLM9F0KOf4BK3V0u/NokmCglkOvXYgQ3i3PJBp3Q==", + "version": "9.3.16", + "resolved": "https://registry.npmjs.org/@fluentui/react-breadcrumb/-/react-breadcrumb-9.3.16.tgz", + "integrity": "sha512-irgluPPOcq1pF7CFP18IGzTZS1TWuM7XwU51OopSNbdnyij5WgMySZBVcIiDk0jC2yL2U2SZefT+sDsSA3ZwRg==", "license": "MIT", "dependencies": { - "@fluentui/react-aria": "^9.17.8", - "@fluentui/react-button": "^9.8.0", + "@fluentui/react-aria": "^9.17.9", + "@fluentui/react-button": "^9.8.1", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.3.5", - "@fluentui/react-link": "^9.7.2", + "@fluentui/react-jsx-runtime": "^9.4.0", + "@fluentui/react-link": "^9.7.3", "@fluentui/react-shared-contexts": "^9.26.1", "@fluentui/react-tabster": "^9.26.12", "@fluentui/react-theme": "^9.2.1", @@ -1158,15 +1115,15 @@ } }, "node_modules/@fluentui/react-button": { - "version": "9.8.0", - "resolved": "https://registry.npmjs.org/@fluentui/react-button/-/react-button-9.8.0.tgz", - "integrity": "sha512-pBkh7lQIHx8lYf5ZxJCOlbzjROT6w3Qw4ufP6f2ImhJCOgvDwSlwKhod++tIhnjYRmN6xIGvhFuFvw6Ju5TsLg==", + "version": "9.8.1", + "resolved": "https://registry.npmjs.org/@fluentui/react-button/-/react-button-9.8.1.tgz", + "integrity": "sha512-/YaLzsK57kr91b4gDIINpz0fb4KxdhfzZA6/Ltymm15CwpZ/qOgVt6oFLPunfi/GlUraEnH7EaacJ1kVffneCA==", "license": "MIT", "dependencies": { "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-aria": "^9.17.8", + "@fluentui/react-aria": "^9.17.9", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.3.5", + "@fluentui/react-jsx-runtime": "^9.4.0", "@fluentui/react-shared-contexts": "^9.26.1", "@fluentui/react-tabster": "^9.26.12", "@fluentui/react-theme": "^9.2.1", @@ -1182,16 +1139,16 @@ } }, "node_modules/@fluentui/react-card": { - "version": "9.5.9", - "resolved": "https://registry.npmjs.org/@fluentui/react-card/-/react-card-9.5.9.tgz", - "integrity": "sha512-xNO2QmB2uQfyAng/xxI8YvD4O56JpmgVKtK9DLwffkb5Nxt+e0elHIDIIN2wzcGTXLkhlQ61Ou3b3etwCRjZfg==", + "version": "9.5.10", + "resolved": "https://registry.npmjs.org/@fluentui/react-card/-/react-card-9.5.10.tgz", + "integrity": "sha512-WPDm1lpfe87eWoiht/Q4NGmLVqQD5voeCr4MWZz5Pa9EH9d4vX6eemtJjgrnpvXOvGlVhlOHLhx7lz7FmrUheQ==", "license": "MIT", "dependencies": { "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-jsx-runtime": "^9.3.5", + "@fluentui/react-jsx-runtime": "^9.4.0", "@fluentui/react-shared-contexts": "^9.26.1", "@fluentui/react-tabster": "^9.26.12", - "@fluentui/react-text": "^9.6.13", + "@fluentui/react-text": "^9.6.14", "@fluentui/react-theme": "^9.2.1", "@fluentui/react-utilities": "^9.26.1", "@griffel/react": "^1.5.32", @@ -1205,20 +1162,20 @@ } }, "node_modules/@fluentui/react-carousel": { - "version": "9.9.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-carousel/-/react-carousel-9.9.1.tgz", - "integrity": "sha512-C7LtFgxPQutB/Vw03f6jtg51RDgZBrqBwTjzdoXBBi0qPXTFihH1wn57IM5WDhQxgbR5vFrWfiaLO3UwXlpEXg==", + "version": "9.9.2", + "resolved": "https://registry.npmjs.org/@fluentui/react-carousel/-/react-carousel-9.9.2.tgz", + "integrity": "sha512-+NHu80Ylv4hhU2LdzmHH/r6N8dm8bKWtRDjm98emC4zEwZGhFltO4QhtafCM3E1NiICFKCrF7RRQlsjAD8YbVQ==", "license": "MIT", "dependencies": { - "@fluentui/react-aria": "^9.17.8", - "@fluentui/react-button": "^9.8.0", + "@fluentui/react-aria": "^9.17.9", + "@fluentui/react-button": "^9.8.1", "@fluentui/react-context-selector": "^9.2.14", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.3.5", + "@fluentui/react-jsx-runtime": "^9.4.0", "@fluentui/react-shared-contexts": "^9.26.1", "@fluentui/react-tabster": "^9.26.12", "@fluentui/react-theme": "^9.2.1", - "@fluentui/react-tooltip": "^9.9.0", + "@fluentui/react-tooltip": "^9.9.1", "@fluentui/react-utilities": "^9.26.1", "@griffel/react": "^1.5.32", "@swc/helpers": "^0.5.1", @@ -1234,15 +1191,15 @@ } }, "node_modules/@fluentui/react-checkbox": { - "version": "9.5.13", - "resolved": "https://registry.npmjs.org/@fluentui/react-checkbox/-/react-checkbox-9.5.13.tgz", - "integrity": "sha512-Mgdu2796TMvuUAVKh//OSuB5Meb6Y5SDrY6pwTvozTHxfsXFAXbEwrIGYiwYtg2pUIr3/gL3Pe1o9ptyy0MGxg==", + "version": "9.5.14", + "resolved": "https://registry.npmjs.org/@fluentui/react-checkbox/-/react-checkbox-9.5.14.tgz", + "integrity": "sha512-0tCAZZwiwK618/LtFueyJ+4o9p+LbRf3KRMMkWWBNRqAlclno8oQQ7lrPHYOjrvmVUPYi9Xg7Gt+ArckUQZEBw==", "license": "MIT", "dependencies": { - "@fluentui/react-field": "^9.4.13", + "@fluentui/react-field": "^9.4.14", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.3.5", - "@fluentui/react-label": "^9.3.13", + "@fluentui/react-jsx-runtime": "^9.4.0", + "@fluentui/react-label": "^9.3.14", "@fluentui/react-shared-contexts": "^9.26.1", "@fluentui/react-tabster": "^9.26.12", "@fluentui/react-theme": "^9.2.1", @@ -1258,14 +1215,14 @@ } }, "node_modules/@fluentui/react-color-picker": { - "version": "9.2.13", - "resolved": "https://registry.npmjs.org/@fluentui/react-color-picker/-/react-color-picker-9.2.13.tgz", - "integrity": "sha512-wRxWVHKug5fPthP0ta9BZ2geq3z9Fku8QUpWqvwQNpcOthHotJs2bvc7YPEILYZtUk7sF8OX7uAEWrjo5rrX2A==", + "version": "9.2.14", + "resolved": "https://registry.npmjs.org/@fluentui/react-color-picker/-/react-color-picker-9.2.14.tgz", + "integrity": "sha512-ZsdCm5j2/Q5WOpgDHX5X3AOJwP3AOf9hNlhTbt/kjDnLmkmHETkqyo5YPVeWoOfjSyEWw5ARQoN5higL7dIs2Q==", "license": "MIT", "dependencies": { "@ctrl/tinycolor": "^3.3.4", "@fluentui/react-context-selector": "^9.2.14", - "@fluentui/react-jsx-runtime": "^9.3.5", + "@fluentui/react-jsx-runtime": "^9.4.0", "@fluentui/react-shared-contexts": "^9.26.1", "@fluentui/react-tabster": "^9.26.12", "@fluentui/react-theme": "^9.2.1", @@ -1281,17 +1238,17 @@ } }, "node_modules/@fluentui/react-combobox": { - "version": "9.16.14", - "resolved": "https://registry.npmjs.org/@fluentui/react-combobox/-/react-combobox-9.16.14.tgz", - "integrity": "sha512-CQLdlxU5qK0XEBRCJuFOo1GTSGd0Ii3uJ/jyYe2B1ID2buiwOfDQDanM3ISuB1gv/Cmi2S6yoRfjMemN8TKykQ==", + "version": "9.16.15", + "resolved": "https://registry.npmjs.org/@fluentui/react-combobox/-/react-combobox-9.16.15.tgz", + "integrity": "sha512-SuffNVAq3QvZShAK0BiO/X0azjkoG8X6mD9sFitU80Nj/JZeDABNekd/da+NuBQ3IHjVspgj8336vIr2epMLyg==", "license": "MIT", "dependencies": { "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-aria": "^9.17.8", + "@fluentui/react-aria": "^9.17.9", "@fluentui/react-context-selector": "^9.2.14", - "@fluentui/react-field": "^9.4.13", + "@fluentui/react-field": "^9.4.14", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.3.5", + "@fluentui/react-jsx-runtime": "^9.4.0", "@fluentui/react-portal": "^9.8.10", "@fluentui/react-positioning": "^9.20.12", "@fluentui/react-shared-contexts": "^9.26.1", @@ -1309,71 +1266,71 @@ } }, "node_modules/@fluentui/react-components": { - "version": "9.72.11", - "resolved": "https://registry.npmjs.org/@fluentui/react-components/-/react-components-9.72.11.tgz", - "integrity": "sha512-fetbBztVDJLeYREcYsBx2LO2D5svO9emBc4OMC/tRmwKtMPbfu3lIl+81kiyj1+kfK9zzdvFnySGkoAU5RXv0g==", - "license": "MIT", - "dependencies": { - "@fluentui/react-accordion": "^9.8.16", - "@fluentui/react-alert": "9.0.0-beta.132", - "@fluentui/react-aria": "^9.17.8", - "@fluentui/react-avatar": "^9.9.14", - "@fluentui/react-badge": "^9.4.13", - "@fluentui/react-breadcrumb": "^9.3.15", - "@fluentui/react-button": "^9.8.0", - "@fluentui/react-card": "^9.5.9", - "@fluentui/react-carousel": "^9.9.1", - "@fluentui/react-checkbox": "^9.5.13", - "@fluentui/react-color-picker": "^9.2.13", - "@fluentui/react-combobox": "^9.16.14", - "@fluentui/react-dialog": "^9.16.6", - "@fluentui/react-divider": "^9.6.0", - "@fluentui/react-drawer": "^9.11.2", - "@fluentui/react-field": "^9.4.13", - "@fluentui/react-image": "^9.3.13", - "@fluentui/react-infobutton": "9.0.0-beta.109", - "@fluentui/react-infolabel": "^9.4.14", - "@fluentui/react-input": "^9.7.13", - "@fluentui/react-label": "^9.3.13", - "@fluentui/react-link": "^9.7.2", - "@fluentui/react-list": "^9.6.8", - "@fluentui/react-menu": "^9.21.0", - "@fluentui/react-message-bar": "^9.6.17", + "version": "9.73.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-components/-/react-components-9.73.0.tgz", + "integrity": "sha512-4WjQ0+34Vt7iOBo8+w1KYV3U3OcDdCTD8EWLElFv7bq9W3hocK2qWMjjorT0aZCiPgGnD6fp67M3cdb7a452dA==", + "license": "MIT", + "dependencies": { + "@fluentui/react-accordion": "^9.9.0", + "@fluentui/react-alert": "9.0.0-beta.133", + "@fluentui/react-aria": "^9.17.9", + "@fluentui/react-avatar": "^9.10.0", + "@fluentui/react-badge": "^9.4.14", + "@fluentui/react-breadcrumb": "^9.3.16", + "@fluentui/react-button": "^9.8.1", + "@fluentui/react-card": "^9.5.10", + "@fluentui/react-carousel": "^9.9.2", + "@fluentui/react-checkbox": "^9.5.14", + "@fluentui/react-color-picker": "^9.2.14", + "@fluentui/react-combobox": "^9.16.15", + "@fluentui/react-dialog": "^9.17.0", + "@fluentui/react-divider": "^9.6.1", + "@fluentui/react-drawer": "^9.11.3", + "@fluentui/react-field": "^9.4.14", + "@fluentui/react-image": "^9.3.14", + "@fluentui/react-infobutton": "9.0.0-beta.110", + "@fluentui/react-infolabel": "^9.4.15", + "@fluentui/react-input": "^9.7.14", + "@fluentui/react-label": "^9.3.14", + "@fluentui/react-link": "^9.7.3", + "@fluentui/react-list": "^9.6.9", + "@fluentui/react-menu": "^9.21.1", + "@fluentui/react-message-bar": "^9.6.18", "@fluentui/react-motion": "^9.11.6", - "@fluentui/react-nav": "^9.3.17", - "@fluentui/react-overflow": "^9.6.7", - "@fluentui/react-persona": "^9.5.14", - "@fluentui/react-popover": "^9.13.0", + "@fluentui/react-nav": "^9.3.18", + "@fluentui/react-overflow": "^9.7.0", + "@fluentui/react-persona": "^9.6.0", + "@fluentui/react-popover": "^9.13.1", "@fluentui/react-portal": "^9.8.10", "@fluentui/react-positioning": "^9.20.12", - "@fluentui/react-progress": "^9.4.13", - "@fluentui/react-provider": "^9.22.13", - "@fluentui/react-radio": "^9.5.13", - "@fluentui/react-rating": "^9.3.13", - "@fluentui/react-search": "^9.3.13", - "@fluentui/react-select": "^9.4.13", + "@fluentui/react-progress": "^9.4.14", + "@fluentui/react-provider": "^9.22.14", + "@fluentui/react-radio": "^9.5.14", + "@fluentui/react-rating": "^9.3.14", + "@fluentui/react-search": "^9.3.14", + "@fluentui/react-select": "^9.4.14", "@fluentui/react-shared-contexts": "^9.26.1", - "@fluentui/react-skeleton": "^9.4.13", - "@fluentui/react-slider": "^9.5.13", - "@fluentui/react-spinbutton": "^9.5.13", - "@fluentui/react-spinner": "^9.7.13", - "@fluentui/react-swatch-picker": "^9.4.13", - "@fluentui/react-switch": "^9.5.2", - "@fluentui/react-table": "^9.19.7", - "@fluentui/react-tabs": "^9.11.0", + "@fluentui/react-skeleton": "^9.4.14", + "@fluentui/react-slider": "^9.5.14", + "@fluentui/react-spinbutton": "^9.5.14", + "@fluentui/react-spinner": "^9.7.14", + "@fluentui/react-swatch-picker": "^9.4.14", + "@fluentui/react-switch": "^9.5.3", + "@fluentui/react-table": "^9.19.8", + "@fluentui/react-tabs": "^9.11.1", "@fluentui/react-tabster": "^9.26.12", - "@fluentui/react-tag-picker": "^9.7.15", - "@fluentui/react-tags": "^9.7.14", - "@fluentui/react-teaching-popover": "^9.6.15", - "@fluentui/react-text": "^9.6.13", - "@fluentui/react-textarea": "^9.6.13", + "@fluentui/react-tag-picker": "^9.7.16", + "@fluentui/react-tags": "^9.7.15", + "@fluentui/react-teaching-popover": "^9.6.16", + "@fluentui/react-text": "^9.6.14", + "@fluentui/react-textarea": "^9.6.14", "@fluentui/react-theme": "^9.2.1", - "@fluentui/react-toast": "^9.7.11", - "@fluentui/react-toolbar": "^9.7.1", - "@fluentui/react-tooltip": "^9.9.0", - "@fluentui/react-tree": "^9.15.9", + "@fluentui/react-toast": "^9.7.12", + "@fluentui/react-toolbar": "^9.7.2", + "@fluentui/react-tooltip": "^9.9.1", + "@fluentui/react-tree": "^9.15.10", "@fluentui/react-utilities": "^9.26.1", - "@fluentui/react-virtualizer": "9.0.0-alpha.109", + "@fluentui/react-virtualizer": "9.0.0-alpha.110", "@griffel/react": "^1.5.32", "@swc/helpers": "^0.5.1" }, @@ -1402,16 +1359,16 @@ } }, "node_modules/@fluentui/react-dialog": { - "version": "9.16.6", - "resolved": "https://registry.npmjs.org/@fluentui/react-dialog/-/react-dialog-9.16.6.tgz", - "integrity": "sha512-GD6GXI7MiMytdR1eTFrN3svfS9DKFQqimS35vKx0+ysizoYYahRdATOGLXjUxoj77X5UGfoeysIXr9f1ZcIs5w==", + "version": "9.17.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-dialog/-/react-dialog-9.17.0.tgz", + "integrity": "sha512-TCvpV7snLJA0cilZ9Q+TCMCAy4RfgMSHa4JHFay0aQ0oKKSMBQEPRsXzjjvzVlRuvpzzmMw2ZGM9dRYchj6bRw==", "license": "MIT", "dependencies": { "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-aria": "^9.17.8", + "@fluentui/react-aria": "^9.17.9", "@fluentui/react-context-selector": "^9.2.14", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.3.5", + "@fluentui/react-jsx-runtime": "^9.4.0", "@fluentui/react-motion": "^9.11.6", "@fluentui/react-motion-components-preview": "^0.15.0", "@fluentui/react-portal": "^9.8.10", @@ -1430,12 +1387,12 @@ } }, "node_modules/@fluentui/react-divider": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/@fluentui/react-divider/-/react-divider-9.6.0.tgz", - "integrity": "sha512-J8xfnmitXiA0FVxvaTEVxWOZMXs7EtYy+uZ1rFU/g4yaOrC4Gl0BCBt/n4+e4Nuyvz5ne3ZU9KY9DS433QH9qA==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@fluentui/react-divider/-/react-divider-9.6.1.tgz", + "integrity": "sha512-qadRByctDJFV7JYTlafAXvXXp5q2TmaBFjdjBMzz1a8+9N5sL6LzX3MoKgEcI32mmBDalaREY9JgrcAlIehf0g==", "license": "MIT", "dependencies": { - "@fluentui/react-jsx-runtime": "^9.3.5", + "@fluentui/react-jsx-runtime": "^9.4.0", "@fluentui/react-shared-contexts": "^9.26.1", "@fluentui/react-theme": "^9.2.1", "@fluentui/react-utilities": "^9.26.1", @@ -1450,13 +1407,13 @@ } }, "node_modules/@fluentui/react-drawer": { - "version": "9.11.2", - "resolved": "https://registry.npmjs.org/@fluentui/react-drawer/-/react-drawer-9.11.2.tgz", - "integrity": "sha512-DdPu8y0WiDmjdggy7BWf+qM+mUVQCaD1+pF/fY2P40kBVS+cpaoRr6qOhZnIyrWeec3+ThtkTDnS3vj1pJ7eCA==", + "version": "9.11.3", + "resolved": "https://registry.npmjs.org/@fluentui/react-drawer/-/react-drawer-9.11.3.tgz", + "integrity": "sha512-VtNsSsnmYIXIsHyHMNM8XXZZ84JcJE28lQITJ8JhK4w06yIgBpNnody2LIVYD9ndc3f6DSodt8ikgBUdXBOjog==", "license": "MIT", "dependencies": { - "@fluentui/react-dialog": "^9.16.6", - "@fluentui/react-jsx-runtime": "^9.3.5", + "@fluentui/react-dialog": "^9.17.0", + "@fluentui/react-jsx-runtime": "^9.4.0", "@fluentui/react-motion": "^9.11.6", "@fluentui/react-motion-components-preview": "^0.15.0", "@fluentui/react-portal": "^9.8.10", @@ -1475,15 +1432,15 @@ } }, "node_modules/@fluentui/react-field": { - "version": "9.4.13", - "resolved": "https://registry.npmjs.org/@fluentui/react-field/-/react-field-9.4.13.tgz", - "integrity": "sha512-qGTTqdLlrllV3b2DYIGrrGD82Bp0WZR0GR30iT+Y9K3fEh0jhXZ5CmBuNKfy8XbWujfAiHpCv7z5zKAv2rKvmQ==", + "version": "9.4.14", + "resolved": "https://registry.npmjs.org/@fluentui/react-field/-/react-field-9.4.14.tgz", + "integrity": "sha512-2x+ES49sWkQQ52NOEj4VazD9/CUvTjH+TbGhvVaMplbTGmaqQ00Lfcg56Cd1kweBnskyS4EuwmbXiDWBIoK+Wg==", "license": "MIT", "dependencies": { "@fluentui/react-context-selector": "^9.2.14", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.3.5", - "@fluentui/react-label": "^9.3.13", + "@fluentui/react-jsx-runtime": "^9.4.0", + "@fluentui/react-label": "^9.3.14", "@fluentui/react-shared-contexts": "^9.26.1", "@fluentui/react-theme": "^9.2.1", "@fluentui/react-utilities": "^9.26.1", @@ -1498,9 +1455,9 @@ } }, "node_modules/@fluentui/react-icons": { - "version": "2.0.318", - "resolved": "https://registry.npmjs.org/@fluentui/react-icons/-/react-icons-2.0.318.tgz", - "integrity": "sha512-h7koTw5rscsrip+WFDsiQaNkgSJHBu6x1giGO0WSiDZx7ZiYdJe+UBmQpcCmXE38+wTE3oxRoWkDj6ZadQcvKQ==", + "version": "2.0.319", + "resolved": "https://registry.npmjs.org/@fluentui/react-icons/-/react-icons-2.0.319.tgz", + "integrity": "sha512-4yN0ovAxlOXL5jM3ULuYu6pAwvMWm1MjojDXn5tVKDkXQwlLpXCUFwf5Vgzp5jU6jJXrENj4v64MN6w7FJjotw==", "license": "MIT", "dependencies": { "@griffel/react": "^1.0.0", @@ -1511,12 +1468,12 @@ } }, "node_modules/@fluentui/react-image": { - "version": "9.3.13", - "resolved": "https://registry.npmjs.org/@fluentui/react-image/-/react-image-9.3.13.tgz", - "integrity": "sha512-814opBhEi8oeNaYxapNL8GQqWxLScuRw/QNX1OeCqKvoGNHOHLlqanV4IYzIgJxCzTTgSg/y6JJ1NadKcDdwZQ==", + "version": "9.3.14", + "resolved": "https://registry.npmjs.org/@fluentui/react-image/-/react-image-9.3.14.tgz", + "integrity": "sha512-1e5MmOLhxbfF4+Nk235eOXREm9dkwCH06L1oNKZKWnwtAZBOmTwPspIW0ttXCvJtllaXXeKAeBexM3jLqG5VRw==", "license": "MIT", "dependencies": { - "@fluentui/react-jsx-runtime": "^9.3.5", + "@fluentui/react-jsx-runtime": "^9.4.0", "@fluentui/react-shared-contexts": "^9.26.1", "@fluentui/react-theme": "^9.2.1", "@fluentui/react-utilities": "^9.26.1", @@ -1531,15 +1488,15 @@ } }, "node_modules/@fluentui/react-infobutton": { - "version": "9.0.0-beta.109", - "resolved": "https://registry.npmjs.org/@fluentui/react-infobutton/-/react-infobutton-9.0.0-beta.109.tgz", - "integrity": "sha512-5OUJG3V0G9DvP8zG0ixrBIr1rrg/NDAgwqLkr9kPqzYHibg7RiBvNrnmH/IYnSGPkLpOAFfVGD+BTp0ui+uNww==", + "version": "9.0.0-beta.110", + "resolved": "https://registry.npmjs.org/@fluentui/react-infobutton/-/react-infobutton-9.0.0-beta.110.tgz", + "integrity": "sha512-SmotNqFZOe6Vd1vOkDI3IuzOV18TmTD3BGSK1Tv6uSuek21MyzkVp06bvQLxyQPsGQXrfpPjX2R2OpDDNbsI3g==", "license": "MIT", "dependencies": { "@fluentui/react-icons": "^2.0.237", - "@fluentui/react-jsx-runtime": "^9.3.5", - "@fluentui/react-label": "^9.3.13", - "@fluentui/react-popover": "^9.13.0", + "@fluentui/react-jsx-runtime": "^9.4.0", + "@fluentui/react-label": "^9.3.14", + "@fluentui/react-popover": "^9.13.1", "@fluentui/react-tabster": "^9.26.12", "@fluentui/react-theme": "^9.2.1", "@fluentui/react-utilities": "^9.26.1", @@ -1554,15 +1511,15 @@ } }, "node_modules/@fluentui/react-infolabel": { - "version": "9.4.14", - "resolved": "https://registry.npmjs.org/@fluentui/react-infolabel/-/react-infolabel-9.4.14.tgz", - "integrity": "sha512-qFN9QVolEqZv/tizsmGkPHNNf/eQxMJc/woTQgj2WKRTuTlaYmAG07MC1giBFV58/agUyf6j4miEcDUcFiEpSw==", + "version": "9.4.15", + "resolved": "https://registry.npmjs.org/@fluentui/react-infolabel/-/react-infolabel-9.4.15.tgz", + "integrity": "sha512-DzFJ0wx5B8rZ7Kxy8EIz7LIHYf8mDt8Bd6WEiEO2r9NVihgiFHNa4a0k/s3SoY2vVESkJgpUqqoizVIAEDDsOg==", "license": "MIT", "dependencies": { "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.3.5", - "@fluentui/react-label": "^9.3.13", - "@fluentui/react-popover": "^9.13.0", + "@fluentui/react-jsx-runtime": "^9.4.0", + "@fluentui/react-label": "^9.3.14", + "@fluentui/react-popover": "^9.13.1", "@fluentui/react-shared-contexts": "^9.26.1", "@fluentui/react-tabster": "^9.26.12", "@fluentui/react-theme": "^9.2.1", @@ -1578,13 +1535,13 @@ } }, "node_modules/@fluentui/react-input": { - "version": "9.7.13", - "resolved": "https://registry.npmjs.org/@fluentui/react-input/-/react-input-9.7.13.tgz", - "integrity": "sha512-klhtp4D85Qt8mCGc3Z7kAAAM2mKrpzXiE/I2sCQDFxKlFvwl8Sf4CYnodbca4ywlLI/2nfDK7co7M15rGSIl6A==", + "version": "9.7.14", + "resolved": "https://registry.npmjs.org/@fluentui/react-input/-/react-input-9.7.14.tgz", + "integrity": "sha512-VFNXDSxO/LdEi5wKd+zCLRRtNelGsvaJR4muAm7OJN56GmF+/3Jtq0dKlqkKosHta+zuXGWvGUgSH8fYfy64sQ==", "license": "MIT", "dependencies": { - "@fluentui/react-field": "^9.4.13", - "@fluentui/react-jsx-runtime": "^9.3.5", + "@fluentui/react-field": "^9.4.14", + "@fluentui/react-jsx-runtime": "^9.4.0", "@fluentui/react-shared-contexts": "^9.26.1", "@fluentui/react-theme": "^9.2.1", "@fluentui/react-utilities": "^9.26.1", @@ -1599,14 +1556,13 @@ } }, "node_modules/@fluentui/react-jsx-runtime": { - "version": "9.3.5", - "resolved": "https://registry.npmjs.org/@fluentui/react-jsx-runtime/-/react-jsx-runtime-9.3.5.tgz", - "integrity": "sha512-Zrgz35HaG1ZHAV8tvUyxHJ6nOcVWfE1iqJ86WGSns4KChda6WfSZeTap+b7tjPiAyOAcH8KCBxqobLybqExMqA==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-jsx-runtime/-/react-jsx-runtime-9.4.0.tgz", + "integrity": "sha512-qkY2XPSs1bGTLebo0a8py0d8/buT0TyZwqN4/sW9oFs9j1w6+HcExJgMDyhEJJSwScVHBJQ6nVT1SlzCf/kpRA==", "license": "MIT", "dependencies": { "@fluentui/react-utilities": "^9.26.1", - "@swc/helpers": "^0.5.1", - "react-is": "^17.0.2" + "@swc/helpers": "^0.5.1" }, "peerDependencies": { "@types/react": ">=16.14.0 <20.0.0", @@ -1614,12 +1570,12 @@ } }, "node_modules/@fluentui/react-label": { - "version": "9.3.13", - "resolved": "https://registry.npmjs.org/@fluentui/react-label/-/react-label-9.3.13.tgz", - "integrity": "sha512-nWNPUH766eIUVXRBFPLkvkPA9Ln4IP56J8ocGS62dLB1Wc4ggh1G3UDtp2wMgvqdkE4ngKyfh8ERemg/aJXdFA==", + "version": "9.3.14", + "resolved": "https://registry.npmjs.org/@fluentui/react-label/-/react-label-9.3.14.tgz", + "integrity": "sha512-gLg6Rilh5ZJ7Yj3M2HxhoLSVBnhxnKoTONdYcTZHQvlkXZHhWXWBziU+OEuVRw7IjLm50VcyTZ3rAto4pw6sKw==", "license": "MIT", "dependencies": { - "@fluentui/react-jsx-runtime": "^9.3.5", + "@fluentui/react-jsx-runtime": "^9.4.0", "@fluentui/react-shared-contexts": "^9.26.1", "@fluentui/react-theme": "^9.2.1", "@fluentui/react-utilities": "^9.26.1", @@ -1634,13 +1590,13 @@ } }, "node_modules/@fluentui/react-link": { - "version": "9.7.2", - "resolved": "https://registry.npmjs.org/@fluentui/react-link/-/react-link-9.7.2.tgz", - "integrity": "sha512-DdK0/stocCPgSzMC2FHVG+x1TL3tYh/xBQAK5N2YWkAqUGuWErKUKHMVvUvwT24erDHyrt3o5Zo1ddv4hninIQ==", + "version": "9.7.3", + "resolved": "https://registry.npmjs.org/@fluentui/react-link/-/react-link-9.7.3.tgz", + "integrity": "sha512-hE0/XwUtqk4gdlruQaUlDAZ0VNpCjqWzhljbHYAtVbNXky2WJVV4tSZ7RMJbc6v1242GPnI67zwxaxcCuz/bbw==", "license": "MIT", "dependencies": { "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-jsx-runtime": "^9.3.5", + "@fluentui/react-jsx-runtime": "^9.4.0", "@fluentui/react-shared-contexts": "^9.26.1", "@fluentui/react-tabster": "^9.26.12", "@fluentui/react-theme": "^9.2.1", @@ -1656,15 +1612,15 @@ } }, "node_modules/@fluentui/react-list": { - "version": "9.6.8", - "resolved": "https://registry.npmjs.org/@fluentui/react-list/-/react-list-9.6.8.tgz", - "integrity": "sha512-/In4nuDTpbsueJGjaakQVCrkd3uVRILaawC4tXLRcEUwvQXmoHRBjQBuDGhqRp0/N1Od/cdh1U5E/a5qaLtf5A==", + "version": "9.6.9", + "resolved": "https://registry.npmjs.org/@fluentui/react-list/-/react-list-9.6.9.tgz", + "integrity": "sha512-OorRdpSEXEqwrTjqkKmzJUjofcTDauBNM41aWhE/WjfQZXA1Guu2JzafivQmdxLhBRvVxGBzJ3l5BKo9V/goGA==", "license": "MIT", "dependencies": { "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-checkbox": "^9.5.13", + "@fluentui/react-checkbox": "^9.5.14", "@fluentui/react-context-selector": "^9.2.14", - "@fluentui/react-jsx-runtime": "^9.3.5", + "@fluentui/react-jsx-runtime": "^9.4.0", "@fluentui/react-shared-contexts": "^9.26.1", "@fluentui/react-tabster": "^9.26.12", "@fluentui/react-theme": "^9.2.1", @@ -1680,16 +1636,16 @@ } }, "node_modules/@fluentui/react-menu": { - "version": "9.21.0", - "resolved": "https://registry.npmjs.org/@fluentui/react-menu/-/react-menu-9.21.0.tgz", - "integrity": "sha512-q/A3DERyRsPatBZ6C23mH+wh/k9OTTA8tNa7sHjHzMFuUTPR+aluLVAxtj6t6stQ09wpxUFtwYrUMq8WJisAJQ==", + "version": "9.21.1", + "resolved": "https://registry.npmjs.org/@fluentui/react-menu/-/react-menu-9.21.1.tgz", + "integrity": "sha512-dsIPAoLiTWWau3O68LmC9Odlmxe3kB8Tj2FSnKO+H069aJOO9AFOmetqoS1GWUccctjHCttgYY6MP2+Ay8yh7Q==", "license": "MIT", "dependencies": { "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-aria": "^9.17.8", + "@fluentui/react-aria": "^9.17.9", "@fluentui/react-context-selector": "^9.2.14", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.3.5", + "@fluentui/react-jsx-runtime": "^9.4.0", "@fluentui/react-portal": "^9.8.10", "@fluentui/react-positioning": "^9.20.12", "@fluentui/react-shared-contexts": "^9.26.1", @@ -1707,15 +1663,15 @@ } }, "node_modules/@fluentui/react-message-bar": { - "version": "9.6.17", - "resolved": "https://registry.npmjs.org/@fluentui/react-message-bar/-/react-message-bar-9.6.17.tgz", - "integrity": "sha512-Izb0Qqnw5P1WKAXH/kAkZDjyZCnd1FbU8Z5VpTIdftSZr8iqOT00ONCM8edD55pj17tVJKY0OmnBlUL/rfLFrA==", + "version": "9.6.18", + "resolved": "https://registry.npmjs.org/@fluentui/react-message-bar/-/react-message-bar-9.6.18.tgz", + "integrity": "sha512-7DLTQpF+X5lxOqrs6vRflKDQoMA09FINEXNA6jB3UWC5Ol5Zk7U8zNt2ovX50n/99DXTKLPmH/22rjEsokAjjg==", "license": "MIT", "dependencies": { - "@fluentui/react-button": "^9.8.0", + "@fluentui/react-button": "^9.8.1", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.3.5", - "@fluentui/react-link": "^9.7.2", + "@fluentui/react-jsx-runtime": "^9.4.0", + "@fluentui/react-link": "^9.7.3", "@fluentui/react-motion": "^9.11.6", "@fluentui/react-motion-components-preview": "^0.15.0", "@fluentui/react-shared-contexts": "^9.26.1", @@ -1766,24 +1722,24 @@ } }, "node_modules/@fluentui/react-nav": { - "version": "9.3.17", - "resolved": "https://registry.npmjs.org/@fluentui/react-nav/-/react-nav-9.3.17.tgz", - "integrity": "sha512-v6ftZxtwn+paTelr0W54OpZ/MOJTFf4fnt6IaYmlmM9ypviLteWclNrhtADR/mAf4gad+lieQrraXtnF5NA6hA==", + "version": "9.3.18", + "resolved": "https://registry.npmjs.org/@fluentui/react-nav/-/react-nav-9.3.18.tgz", + "integrity": "sha512-vnAwnWPOUWyZPf+p5G0BjhO8NLPDF7NygspvXwPja7YV25Xov1oW6q3ijflc+Xj8wOCuyNcdJreRMdOpTmZj6A==", "license": "MIT", "dependencies": { - "@fluentui/react-aria": "^9.17.8", - "@fluentui/react-button": "^9.8.0", + "@fluentui/react-aria": "^9.17.9", + "@fluentui/react-button": "^9.8.1", "@fluentui/react-context-selector": "^9.2.14", - "@fluentui/react-divider": "^9.6.0", - "@fluentui/react-drawer": "^9.11.2", + "@fluentui/react-divider": "^9.6.1", + "@fluentui/react-drawer": "^9.11.3", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.3.5", + "@fluentui/react-jsx-runtime": "^9.4.0", "@fluentui/react-motion": "^9.11.6", "@fluentui/react-motion-components-preview": "^0.15.0", "@fluentui/react-shared-contexts": "^9.26.1", "@fluentui/react-tabster": "^9.26.12", "@fluentui/react-theme": "^9.2.1", - "@fluentui/react-tooltip": "^9.9.0", + "@fluentui/react-tooltip": "^9.9.1", "@fluentui/react-utilities": "^9.26.1", "@griffel/react": "^1.5.32", "@swc/helpers": "^0.5.1" @@ -1796,12 +1752,12 @@ } }, "node_modules/@fluentui/react-overflow": { - "version": "9.6.7", - "resolved": "https://registry.npmjs.org/@fluentui/react-overflow/-/react-overflow-9.6.7.tgz", - "integrity": "sha512-vJ1F3TNR8j0V215lhthjwvWQgq5pjpgjIS31z3/L+VeApcWy/BtvMk9420KzpOnKbDxgwy6ZTvXxKbE/OYtngA==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-overflow/-/react-overflow-9.7.0.tgz", + "integrity": "sha512-re98BA4Cic/zcA9nLHm9I5Vwyb+keaPnlqJiUUiq/t95ki5xutT37ozqdbMY8IO3VlkS3o8raMKVn6QIMB5huQ==", "license": "MIT", "dependencies": { - "@fluentui/priority-overflow": "^9.2.1", + "@fluentui/priority-overflow": "^9.3.0", "@fluentui/react-context-selector": "^9.2.14", "@fluentui/react-theme": "^9.2.1", "@fluentui/react-utilities": "^9.26.1", @@ -1816,14 +1772,14 @@ } }, "node_modules/@fluentui/react-persona": { - "version": "9.5.14", - "resolved": "https://registry.npmjs.org/@fluentui/react-persona/-/react-persona-9.5.14.tgz", - "integrity": "sha512-s4jwCbx7l065q35NigldAbGJ4rEJS6UxigaqsnLaWlXnU17klpIPa/awVutGJi0TFa3vDBC8MD/3k74flBj1bw==", + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-persona/-/react-persona-9.6.0.tgz", + "integrity": "sha512-sTxIFEJcwzHtlPWDUknUFZTo6rvAEa5P4FED886svOcxhMx2HH6sfV4NUzFDgvgZAQI9PAvv8nSlT02m5iyGuQ==", "license": "MIT", "dependencies": { - "@fluentui/react-avatar": "^9.9.14", - "@fluentui/react-badge": "^9.4.13", - "@fluentui/react-jsx-runtime": "^9.3.5", + "@fluentui/react-avatar": "^9.10.0", + "@fluentui/react-badge": "^9.4.14", + "@fluentui/react-jsx-runtime": "^9.4.0", "@fluentui/react-shared-contexts": "^9.26.1", "@fluentui/react-theme": "^9.2.1", "@fluentui/react-utilities": "^9.26.1", @@ -1838,15 +1794,15 @@ } }, "node_modules/@fluentui/react-popover": { - "version": "9.13.0", - "resolved": "https://registry.npmjs.org/@fluentui/react-popover/-/react-popover-9.13.0.tgz", - "integrity": "sha512-zNwpHDtwuDjjpZqg2FqPhNcHgJSWuH6+KUjogbx3GRyKgAwToDzdORKHkWVBtehAJEUu8uoLDoiw+GCeZgyPlg==", + "version": "9.13.1", + "resolved": "https://registry.npmjs.org/@fluentui/react-popover/-/react-popover-9.13.1.tgz", + "integrity": "sha512-B8ZZ5aYkIj/RM89GtDG06IfjNQJTdSZqXBCcCT6deIACYN/0fBJUMk12AIbeed2+PjkNdfvTbTTGIjKTQ02SEQ==", "license": "MIT", "dependencies": { "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-aria": "^9.17.8", + "@fluentui/react-aria": "^9.17.9", "@fluentui/react-context-selector": "^9.2.14", - "@fluentui/react-jsx-runtime": "^9.3.5", + "@fluentui/react-jsx-runtime": "^9.4.0", "@fluentui/react-portal": "^9.8.10", "@fluentui/react-positioning": "^9.20.12", "@fluentui/react-shared-contexts": "^9.26.1", @@ -1905,13 +1861,13 @@ } }, "node_modules/@fluentui/react-progress": { - "version": "9.4.13", - "resolved": "https://registry.npmjs.org/@fluentui/react-progress/-/react-progress-9.4.13.tgz", - "integrity": "sha512-FebkTCKOeHoXKhvluGXXx0UCfiOhytN4CGahNlnyERaP1+x+IUWOPnEnWc97C8a5ELdSQ+6u6Wy6con2uIwW3w==", + "version": "9.4.14", + "resolved": "https://registry.npmjs.org/@fluentui/react-progress/-/react-progress-9.4.14.tgz", + "integrity": "sha512-Zmdb22KPdV1pRAmcjRkAGvoNAGCeSYxqvGWgPn438b9c0jyb4OL/wnLj8vHnpZEN5dXAaw3rc5zrVMZsB/zwFQ==", "license": "MIT", "dependencies": { - "@fluentui/react-field": "^9.4.13", - "@fluentui/react-jsx-runtime": "^9.3.5", + "@fluentui/react-field": "^9.4.14", + "@fluentui/react-jsx-runtime": "^9.4.0", "@fluentui/react-shared-contexts": "^9.26.1", "@fluentui/react-theme": "^9.2.1", "@fluentui/react-utilities": "^9.26.1", @@ -1926,13 +1882,13 @@ } }, "node_modules/@fluentui/react-provider": { - "version": "9.22.13", - "resolved": "https://registry.npmjs.org/@fluentui/react-provider/-/react-provider-9.22.13.tgz", - "integrity": "sha512-ZCH6HqpFGlR6wEeHjJVanJrO23mDJn2+tAkhOmakl01DNwElJH6FoP39Fyd/+k/ArBcp9XtlO4IlpG+xybZXlA==", + "version": "9.22.14", + "resolved": "https://registry.npmjs.org/@fluentui/react-provider/-/react-provider-9.22.14.tgz", + "integrity": "sha512-VPVRmQvkbd4++8aZLa/Jf2vl1KVX+tfcWeV40M7HiPhER22LkdzJe2NGLCgnjMKJwtPPLK6FqbJTthmClJIeuw==", "license": "MIT", "dependencies": { "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.3.5", + "@fluentui/react-jsx-runtime": "^9.4.0", "@fluentui/react-shared-contexts": "^9.26.1", "@fluentui/react-tabster": "^9.26.12", "@fluentui/react-theme": "^9.2.1", @@ -1949,14 +1905,14 @@ } }, "node_modules/@fluentui/react-radio": { - "version": "9.5.13", - "resolved": "https://registry.npmjs.org/@fluentui/react-radio/-/react-radio-9.5.13.tgz", - "integrity": "sha512-zU7LXVdrrhzgYzQirexPfgC9d3dkzs5AHlon9/XHHb+X2ULkWp0tvJ8PuDGWqMST7Q930iiwlgrCNaWy+rHvHg==", + "version": "9.5.14", + "resolved": "https://registry.npmjs.org/@fluentui/react-radio/-/react-radio-9.5.14.tgz", + "integrity": "sha512-ZmSpTZn0/Ko0X4oKhfaeycqHLxkabcoUZ6jk0Xtmi4cfdTUChB9dDsRbd6xVSuMxmkmGe+hYzMrJwhKfRgjlGw==", "license": "MIT", "dependencies": { - "@fluentui/react-field": "^9.4.13", - "@fluentui/react-jsx-runtime": "^9.3.5", - "@fluentui/react-label": "^9.3.13", + "@fluentui/react-field": "^9.4.14", + "@fluentui/react-jsx-runtime": "^9.4.0", + "@fluentui/react-label": "^9.3.14", "@fluentui/react-shared-contexts": "^9.26.1", "@fluentui/react-tabster": "^9.26.12", "@fluentui/react-theme": "^9.2.1", @@ -1972,13 +1928,13 @@ } }, "node_modules/@fluentui/react-rating": { - "version": "9.3.13", - "resolved": "https://registry.npmjs.org/@fluentui/react-rating/-/react-rating-9.3.13.tgz", - "integrity": "sha512-3+FlVPXvqaE2TJUujqcZVPrepOvJz+ogTpUY5eYYFjago382wLuuU90KpvdIVigZoIdPpwFT4qLFU5Oa4ZHjZw==", + "version": "9.3.14", + "resolved": "https://registry.npmjs.org/@fluentui/react-rating/-/react-rating-9.3.14.tgz", + "integrity": "sha512-mN+gCj63xmyqt198JwsTwn8vzjluh1UHFVibEq2TdRzJI0bZG6HF43Je8vRFqq1N2WVAszCwF4bMPEM1iLc11g==", "license": "MIT", "dependencies": { "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.3.5", + "@fluentui/react-jsx-runtime": "^9.4.0", "@fluentui/react-shared-contexts": "^9.26.1", "@fluentui/react-tabster": "^9.26.12", "@fluentui/react-theme": "^9.2.1", @@ -1994,14 +1950,14 @@ } }, "node_modules/@fluentui/react-search": { - "version": "9.3.13", - "resolved": "https://registry.npmjs.org/@fluentui/react-search/-/react-search-9.3.13.tgz", - "integrity": "sha512-gMq8iGA5Fd54GgNmUM6IUvCs0Ty4PINIevG+Nl3Lfqv04A9nzHvp45nTpES4pSGyyacXat14dL45nFVA+H0VUA==", + "version": "9.3.14", + "resolved": "https://registry.npmjs.org/@fluentui/react-search/-/react-search-9.3.14.tgz", + "integrity": "sha512-e7oB0x6CqtCtt0ROgAK7KaddkGR2bl4WtL5NA/a7NCtYoTTkU9C4LubjqTtfVBKqMPykLjiOdUZOID8Aq3esfg==", "license": "MIT", "dependencies": { "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-input": "^9.7.13", - "@fluentui/react-jsx-runtime": "^9.3.5", + "@fluentui/react-input": "^9.7.14", + "@fluentui/react-jsx-runtime": "^9.4.0", "@fluentui/react-shared-contexts": "^9.26.1", "@fluentui/react-theme": "^9.2.1", "@fluentui/react-utilities": "^9.26.1", @@ -2016,14 +1972,14 @@ } }, "node_modules/@fluentui/react-select": { - "version": "9.4.13", - "resolved": "https://registry.npmjs.org/@fluentui/react-select/-/react-select-9.4.13.tgz", - "integrity": "sha512-DKKSMK5v4UN5Hjydvllea9tpT+ebRHUQ8/mODnSDhI2vBmNlsuSveDEU3KRmC6O/WtwREXH6vnr7t3fKE+5DCg==", + "version": "9.4.14", + "resolved": "https://registry.npmjs.org/@fluentui/react-select/-/react-select-9.4.14.tgz", + "integrity": "sha512-wfAxwSDNsbjDn8Qh7jXKZnKb2ljMSI4M+SXg+R1ebqNLh527wtKS13i78toWV6NUKrjG7Ycgq7ZN2/oEXCv8VQ==", "license": "MIT", "dependencies": { - "@fluentui/react-field": "^9.4.13", + "@fluentui/react-field": "^9.4.14", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.3.5", + "@fluentui/react-jsx-runtime": "^9.4.0", "@fluentui/react-shared-contexts": "^9.26.1", "@fluentui/react-theme": "^9.2.1", "@fluentui/react-utilities": "^9.26.1", @@ -2052,13 +2008,13 @@ } }, "node_modules/@fluentui/react-skeleton": { - "version": "9.4.13", - "resolved": "https://registry.npmjs.org/@fluentui/react-skeleton/-/react-skeleton-9.4.13.tgz", - "integrity": "sha512-S7n/fdtBXcSNeTTI5VwD7OedMzAruXIHy1/aiSUFMkdzK+BZ2RcDbgW7dXxcTWV617uvE9CagBVkju+XxJHG4g==", + "version": "9.4.14", + "resolved": "https://registry.npmjs.org/@fluentui/react-skeleton/-/react-skeleton-9.4.14.tgz", + "integrity": "sha512-Tem5Mn4n6AgSTw2vCR0qjY88XfDvrlpKwiC7Wlu3LhRoXoDBx+JoRJEwA7eymLUYbZznDjPJV9BhS6tpLEVhdg==", "license": "MIT", "dependencies": { - "@fluentui/react-field": "^9.4.13", - "@fluentui/react-jsx-runtime": "^9.3.5", + "@fluentui/react-field": "^9.4.14", + "@fluentui/react-jsx-runtime": "^9.4.0", "@fluentui/react-shared-contexts": "^9.26.1", "@fluentui/react-theme": "^9.2.1", "@fluentui/react-utilities": "^9.26.1", @@ -2073,13 +2029,13 @@ } }, "node_modules/@fluentui/react-slider": { - "version": "9.5.13", - "resolved": "https://registry.npmjs.org/@fluentui/react-slider/-/react-slider-9.5.13.tgz", - "integrity": "sha512-4A6Qs4pqCm5ZohuWuXeq9geZQb/lEXyuCFfgzIz0dGHXKSa8zEsjXfXZvQgz6OS/FcSAMm0ETAVtSDvS38BCjg==", + "version": "9.5.14", + "resolved": "https://registry.npmjs.org/@fluentui/react-slider/-/react-slider-9.5.14.tgz", + "integrity": "sha512-bLlYxAfz5uJsg/1QneE/3PjvKKAT6JCnCszVSxik3Et+kHcEp6p2dnjJcTX6NqlDu2Bz1QGpFEQbO443IknBRQ==", "license": "MIT", "dependencies": { - "@fluentui/react-field": "^9.4.13", - "@fluentui/react-jsx-runtime": "^9.3.5", + "@fluentui/react-field": "^9.4.14", + "@fluentui/react-jsx-runtime": "^9.4.0", "@fluentui/react-shared-contexts": "^9.26.1", "@fluentui/react-tabster": "^9.26.12", "@fluentui/react-theme": "^9.2.1", @@ -2095,15 +2051,15 @@ } }, "node_modules/@fluentui/react-spinbutton": { - "version": "9.5.13", - "resolved": "https://registry.npmjs.org/@fluentui/react-spinbutton/-/react-spinbutton-9.5.13.tgz", - "integrity": "sha512-/YC74Ikfp8MtxTmQpwaTCTKBRLzTyLbV3hGrGI23d8w7oRvOoAn3NQMZpNSIEtAS/myU8zJDbQg2RvWJ7uWrIA==", + "version": "9.5.14", + "resolved": "https://registry.npmjs.org/@fluentui/react-spinbutton/-/react-spinbutton-9.5.14.tgz", + "integrity": "sha512-mXoW0ao7vWUzAq8vDButG4ueyTD3sp7pGPYnDdm/V0LNUib5hBiTKIoEA4q1bFjkGMwkHQvC405uV3hyjAIWWA==", "license": "MIT", "dependencies": { "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-field": "^9.4.13", + "@fluentui/react-field": "^9.4.14", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.3.5", + "@fluentui/react-jsx-runtime": "^9.4.0", "@fluentui/react-shared-contexts": "^9.26.1", "@fluentui/react-theme": "^9.2.1", "@fluentui/react-utilities": "^9.26.1", @@ -2118,13 +2074,13 @@ } }, "node_modules/@fluentui/react-spinner": { - "version": "9.7.13", - "resolved": "https://registry.npmjs.org/@fluentui/react-spinner/-/react-spinner-9.7.13.tgz", - "integrity": "sha512-+F51WwXVjuc6lvJEz+TLMq2FJ7ttvh3tBNUv/MCFTtq3raJon+bAoM52RxVoLT8PMRtGtYDi0NIsB2F3ULVacA==", + "version": "9.7.14", + "resolved": "https://registry.npmjs.org/@fluentui/react-spinner/-/react-spinner-9.7.14.tgz", + "integrity": "sha512-OADtpa6nesZq8ITRWVmtbI4LMdvwBZM9N9IaWJffm9c1EOg52b1ob8p09rQAw8dFfS0vn7C48UPYQseV15T3VA==", "license": "MIT", "dependencies": { - "@fluentui/react-jsx-runtime": "^9.3.5", - "@fluentui/react-label": "^9.3.13", + "@fluentui/react-jsx-runtime": "^9.4.0", + "@fluentui/react-label": "^9.3.14", "@fluentui/react-shared-contexts": "^9.26.1", "@fluentui/react-theme": "^9.2.1", "@fluentui/react-utilities": "^9.26.1", @@ -2139,15 +2095,15 @@ } }, "node_modules/@fluentui/react-swatch-picker": { - "version": "9.4.13", - "resolved": "https://registry.npmjs.org/@fluentui/react-swatch-picker/-/react-swatch-picker-9.4.13.tgz", - "integrity": "sha512-JPPhwNQG4lEdWHit2evJmjPqVh9xGveuqEiS/Uovxvp5R4jpEiinRpDCVndqV7fNWzhSjb1BDUbIQsbGVWHuXQ==", + "version": "9.4.14", + "resolved": "https://registry.npmjs.org/@fluentui/react-swatch-picker/-/react-swatch-picker-9.4.14.tgz", + "integrity": "sha512-iEnM4knd2JgSQnio4rlniYkcCPAHd08uXEGaQVa64d77clIGaq3VYymbkUvgPnwgCu2S3hRrJaCLmXGQujZQhw==", "license": "MIT", "dependencies": { "@fluentui/react-context-selector": "^9.2.14", - "@fluentui/react-field": "^9.4.13", + "@fluentui/react-field": "^9.4.14", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.3.5", + "@fluentui/react-jsx-runtime": "^9.4.0", "@fluentui/react-shared-contexts": "^9.26.1", "@fluentui/react-tabster": "^9.26.12", "@fluentui/react-theme": "^9.2.1", @@ -2163,15 +2119,15 @@ } }, "node_modules/@fluentui/react-switch": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/@fluentui/react-switch/-/react-switch-9.5.2.tgz", - "integrity": "sha512-VNnJGBMA+hxv0evjkjehZGXzAFXiKMa/t5MxM1ep3RsqUtL47CXWSDmdG2yUo9eP53LDlv3d0CaFWGdL2WdWcw==", + "version": "9.5.3", + "resolved": "https://registry.npmjs.org/@fluentui/react-switch/-/react-switch-9.5.3.tgz", + "integrity": "sha512-k2mA1uFHboWbTuYF3Jjuyif231SVU3/iy6njYFGO9tJS1WI2CbbblnINpwzsfpiWTAGUzzAAudY6ndvLqS2lsg==", "license": "MIT", "dependencies": { - "@fluentui/react-field": "^9.4.13", + "@fluentui/react-field": "^9.4.14", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.3.5", - "@fluentui/react-label": "^9.3.13", + "@fluentui/react-jsx-runtime": "^9.4.0", + "@fluentui/react-label": "^9.3.14", "@fluentui/react-shared-contexts": "^9.26.1", "@fluentui/react-tabster": "^9.26.12", "@fluentui/react-theme": "^9.2.1", @@ -2187,19 +2143,19 @@ } }, "node_modules/@fluentui/react-table": { - "version": "9.19.7", - "resolved": "https://registry.npmjs.org/@fluentui/react-table/-/react-table-9.19.7.tgz", - "integrity": "sha512-Yv1mR5A5SLO5AAaLDVbg9PzrBYibJR4xjYCYpjX3GG2dkCo2JG9USSNs8sRqHhNcEACRt7SHosZ4ISFCKAwy8g==", + "version": "9.19.8", + "resolved": "https://registry.npmjs.org/@fluentui/react-table/-/react-table-9.19.8.tgz", + "integrity": "sha512-rDnPpmwVYNNy7iRMuN5offjmpEQILuUVEXoch0cPhrNCLca+hgSQ97YSJy6/4JmXcK7kQvp+MCJn9HpbJNfwOw==", "license": "MIT", "dependencies": { "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-aria": "^9.17.8", - "@fluentui/react-avatar": "^9.9.14", - "@fluentui/react-checkbox": "^9.5.13", + "@fluentui/react-aria": "^9.17.9", + "@fluentui/react-avatar": "^9.10.0", + "@fluentui/react-checkbox": "^9.5.14", "@fluentui/react-context-selector": "^9.2.14", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.3.5", - "@fluentui/react-radio": "^9.5.13", + "@fluentui/react-jsx-runtime": "^9.4.0", + "@fluentui/react-radio": "^9.5.14", "@fluentui/react-shared-contexts": "^9.26.1", "@fluentui/react-tabster": "^9.26.12", "@fluentui/react-theme": "^9.2.1", @@ -2215,13 +2171,13 @@ } }, "node_modules/@fluentui/react-tabs": { - "version": "9.11.0", - "resolved": "https://registry.npmjs.org/@fluentui/react-tabs/-/react-tabs-9.11.0.tgz", - "integrity": "sha512-n5L5InLH/9R6bPnXc6OtKE1Y3SppBxz4zDwwjRR9D+yMWYG7AhAWcJzERPqZHdjmtaE11YTlbJSu5mzpyuQ8GA==", + "version": "9.11.1", + "resolved": "https://registry.npmjs.org/@fluentui/react-tabs/-/react-tabs-9.11.1.tgz", + "integrity": "sha512-BeSbYJy2kRwYI6tObGw0TQ9lmcfTsfAEGCrzScfnzwzp2/DOXI2w+IPR9G+wBg9iL2eMdZ6kIpgcQ4RGhkWBgQ==", "license": "MIT", "dependencies": { "@fluentui/react-context-selector": "^9.2.14", - "@fluentui/react-jsx-runtime": "^9.3.5", + "@fluentui/react-jsx-runtime": "^9.4.0", "@fluentui/react-shared-contexts": "^9.26.1", "@fluentui/react-tabster": "^9.26.12", "@fluentui/react-theme": "^9.2.1", @@ -2258,23 +2214,23 @@ } }, "node_modules/@fluentui/react-tag-picker": { - "version": "9.7.15", - "resolved": "https://registry.npmjs.org/@fluentui/react-tag-picker/-/react-tag-picker-9.7.15.tgz", - "integrity": "sha512-YdnufpLBF2b+/GP/tcZP5kXnM0RXUzT42O5aBGSEUOWxg9zuOds5dt7jWON3TCQgL27WwT+EQT2YRllXH4BxlA==", + "version": "9.7.16", + "resolved": "https://registry.npmjs.org/@fluentui/react-tag-picker/-/react-tag-picker-9.7.16.tgz", + "integrity": "sha512-b0PETuBrEvBqPHjxBCp+DSylY4dMeHChqYOSqLYa8MdsSbp37u8wjqcwhzj7XWYSalb3sFGnH0PWYzoteN3DcQ==", "license": "MIT", "dependencies": { "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-aria": "^9.17.8", - "@fluentui/react-combobox": "^9.16.14", + "@fluentui/react-aria": "^9.17.9", + "@fluentui/react-combobox": "^9.16.15", "@fluentui/react-context-selector": "^9.2.14", - "@fluentui/react-field": "^9.4.13", + "@fluentui/react-field": "^9.4.14", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.3.5", + "@fluentui/react-jsx-runtime": "^9.4.0", "@fluentui/react-portal": "^9.8.10", "@fluentui/react-positioning": "^9.20.12", "@fluentui/react-shared-contexts": "^9.26.1", "@fluentui/react-tabster": "^9.26.12", - "@fluentui/react-tags": "^9.7.14", + "@fluentui/react-tags": "^9.7.15", "@fluentui/react-theme": "^9.2.1", "@fluentui/react-utilities": "^9.26.1", "@griffel/react": "^1.5.32", @@ -2288,16 +2244,16 @@ } }, "node_modules/@fluentui/react-tags": { - "version": "9.7.14", - "resolved": "https://registry.npmjs.org/@fluentui/react-tags/-/react-tags-9.7.14.tgz", - "integrity": "sha512-qdjIF3QSA0JZkeAEsi8D2tl5pBJVjT5b1WA7w0SldenyTVnmRpFhqipEUwc1M4SEwSxZiQhmfhHOG6bdQuPTqg==", + "version": "9.7.15", + "resolved": "https://registry.npmjs.org/@fluentui/react-tags/-/react-tags-9.7.15.tgz", + "integrity": "sha512-T1imCOoatkqu/sAce36Jiq/LUFmGMEKovyo3yahfiRu9uKRhGOO+uaLOWTg5WeHtXYdA+kLw240sAeo5snjPnA==", "license": "MIT", "dependencies": { "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-aria": "^9.17.8", - "@fluentui/react-avatar": "^9.9.14", + "@fluentui/react-aria": "^9.17.9", + "@fluentui/react-avatar": "^9.10.0", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.3.5", + "@fluentui/react-jsx-runtime": "^9.4.0", "@fluentui/react-shared-contexts": "^9.26.1", "@fluentui/react-tabster": "^9.26.12", "@fluentui/react-theme": "^9.2.1", @@ -2313,17 +2269,17 @@ } }, "node_modules/@fluentui/react-teaching-popover": { - "version": "9.6.15", - "resolved": "https://registry.npmjs.org/@fluentui/react-teaching-popover/-/react-teaching-popover-9.6.15.tgz", - "integrity": "sha512-l455X7DOVovHjXcTSKakCHnIKyE1t2djjn9g4onMMclNSTw9durJiP7NgZjeni7q3H+fdQH8EC8cPo0h3xoFpA==", + "version": "9.6.16", + "resolved": "https://registry.npmjs.org/@fluentui/react-teaching-popover/-/react-teaching-popover-9.6.16.tgz", + "integrity": "sha512-IV9nKU0Gd9ZnMHXra3lsz6wAg5E63db2IXnugNB+IxC+1YKMAo0ShCupPua/5pFPRH6ufAMd46ltZLUUPME/MQ==", "license": "MIT", "dependencies": { - "@fluentui/react-aria": "^9.17.8", - "@fluentui/react-button": "^9.8.0", + "@fluentui/react-aria": "^9.17.9", + "@fluentui/react-button": "^9.8.1", "@fluentui/react-context-selector": "^9.2.14", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.3.5", - "@fluentui/react-popover": "^9.13.0", + "@fluentui/react-jsx-runtime": "^9.4.0", + "@fluentui/react-popover": "^9.13.1", "@fluentui/react-shared-contexts": "^9.26.1", "@fluentui/react-tabster": "^9.26.12", "@fluentui/react-theme": "^9.2.1", @@ -2340,12 +2296,12 @@ } }, "node_modules/@fluentui/react-text": { - "version": "9.6.13", - "resolved": "https://registry.npmjs.org/@fluentui/react-text/-/react-text-9.6.13.tgz", - "integrity": "sha512-THLXPS5vMx4lU6dZGJw/BvZeaKjOOKUs+z74mBiTPRYlWb94DKYaN2jDMtwVCTxpvIOTz8JJ/pKLJxhG4XWLkw==", + "version": "9.6.14", + "resolved": "https://registry.npmjs.org/@fluentui/react-text/-/react-text-9.6.14.tgz", + "integrity": "sha512-ZeddqRqK+4sqctMgbUzXPxaGriHoEDY3S5T8BUM6x2Rb7wBA2cQmb/zh6kr820Rs0A8FREn09XZdM40ueOo0pA==", "license": "MIT", "dependencies": { - "@fluentui/react-jsx-runtime": "^9.3.5", + "@fluentui/react-jsx-runtime": "^9.4.0", "@fluentui/react-shared-contexts": "^9.26.1", "@fluentui/react-theme": "^9.2.1", "@fluentui/react-utilities": "^9.26.1", @@ -2360,13 +2316,13 @@ } }, "node_modules/@fluentui/react-textarea": { - "version": "9.6.13", - "resolved": "https://registry.npmjs.org/@fluentui/react-textarea/-/react-textarea-9.6.13.tgz", - "integrity": "sha512-+aMK5pmSV7tifI7X7uWAZJmSTsF+omqql1kYymRQnwcTkJLmjUN2cNIBV4nRE35TuKwjlzhvovnHNX+KCXv0PA==", + "version": "9.6.14", + "resolved": "https://registry.npmjs.org/@fluentui/react-textarea/-/react-textarea-9.6.14.tgz", + "integrity": "sha512-7hO333OdYbvlVHg4PcymtmsVn8dFOGU704bVDzS/AwFV/6k6PliJ74RP1ufeudtQAty9VW2EoJwHCtwGlgputw==", "license": "MIT", "dependencies": { - "@fluentui/react-field": "^9.4.13", - "@fluentui/react-jsx-runtime": "^9.3.5", + "@fluentui/react-field": "^9.4.14", + "@fluentui/react-jsx-runtime": "^9.4.0", "@fluentui/react-shared-contexts": "^9.26.1", "@fluentui/react-theme": "^9.2.1", "@fluentui/react-utilities": "^9.26.1", @@ -2391,15 +2347,15 @@ } }, "node_modules/@fluentui/react-toast": { - "version": "9.7.11", - "resolved": "https://registry.npmjs.org/@fluentui/react-toast/-/react-toast-9.7.11.tgz", - "integrity": "sha512-iHG+ButeEYoZs7Uw5yicImgJHOGe5cud+bLhdRhn/kse+fddi7LE8R18VlM0yCU2fCM1hEj1lK1zKqdemM9kwQ==", + "version": "9.7.12", + "resolved": "https://registry.npmjs.org/@fluentui/react-toast/-/react-toast-9.7.12.tgz", + "integrity": "sha512-lehROila3FzNZihC+BLtqe/c00JHOo53awYY9ejzLpnEwU9u78MYgTm4dFweeFh0CAMiw3yEzYpI6FZhn4B3mg==", "license": "MIT", "dependencies": { "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-aria": "^9.17.8", + "@fluentui/react-aria": "^9.17.9", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.3.5", + "@fluentui/react-jsx-runtime": "^9.4.0", "@fluentui/react-motion": "^9.11.6", "@fluentui/react-motion-components-preview": "^0.15.0", "@fluentui/react-portal": "^9.8.10", @@ -2418,16 +2374,16 @@ } }, "node_modules/@fluentui/react-toolbar": { - "version": "9.7.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-toolbar/-/react-toolbar-9.7.1.tgz", - "integrity": "sha512-fzgW+/1kncItmbLIUJ1vvbmo6ONyK3ExSbayQjs8oAMhfjk9VvW8uRODDY6vfh4yogeKX4rlg1S0aiHOgiNi4w==", + "version": "9.7.2", + "resolved": "https://registry.npmjs.org/@fluentui/react-toolbar/-/react-toolbar-9.7.2.tgz", + "integrity": "sha512-zyr89s7W/HcVMNcbZ/u0rU55e3+Zyy2hEVsnf3P6hic7eIEjW5hTDJwdcLfZ6D41KZKzHG17uFKqGPH/0OSCyg==", "license": "MIT", "dependencies": { - "@fluentui/react-button": "^9.8.0", + "@fluentui/react-button": "^9.8.1", "@fluentui/react-context-selector": "^9.2.14", - "@fluentui/react-divider": "^9.6.0", - "@fluentui/react-jsx-runtime": "^9.3.5", - "@fluentui/react-radio": "^9.5.13", + "@fluentui/react-divider": "^9.6.1", + "@fluentui/react-jsx-runtime": "^9.4.0", + "@fluentui/react-radio": "^9.5.14", "@fluentui/react-shared-contexts": "^9.26.1", "@fluentui/react-tabster": "^9.26.12", "@fluentui/react-theme": "^9.2.1", @@ -2443,13 +2399,13 @@ } }, "node_modules/@fluentui/react-tooltip": { - "version": "9.9.0", - "resolved": "https://registry.npmjs.org/@fluentui/react-tooltip/-/react-tooltip-9.9.0.tgz", - "integrity": "sha512-v7Umx9PvzZ53BEDQmLNysoY+/7NchnsQjUbbWO2EEPWZJp6xKkvDNSrXxm7YzOBorDhNBsIc/FSSdcZcCBqysA==", + "version": "9.9.1", + "resolved": "https://registry.npmjs.org/@fluentui/react-tooltip/-/react-tooltip-9.9.1.tgz", + "integrity": "sha512-iSJfIis9dHHkymkasH/AI5R+2t4wI2ecCoqRwkW5dBAOV8YTWC0vgTHCubfWfTkYt303nqEdteCbGAIEene8hQ==", "license": "MIT", "dependencies": { "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-jsx-runtime": "^9.3.5", + "@fluentui/react-jsx-runtime": "^9.4.0", "@fluentui/react-portal": "^9.8.10", "@fluentui/react-positioning": "^9.20.12", "@fluentui/react-shared-contexts": "^9.26.1", @@ -2467,22 +2423,22 @@ } }, "node_modules/@fluentui/react-tree": { - "version": "9.15.9", - "resolved": "https://registry.npmjs.org/@fluentui/react-tree/-/react-tree-9.15.9.tgz", - "integrity": "sha512-+WXRFwV5TvjBCVYdghuvA73IBvDhzPyPKZurlfxZbAM4m3rAwsvJfbAKCJEnlferkBFPmskAldWcQWYVfryGSg==", + "version": "9.15.10", + "resolved": "https://registry.npmjs.org/@fluentui/react-tree/-/react-tree-9.15.10.tgz", + "integrity": "sha512-V0q4H7XBmARre7oKPuxGZaFdz4K6ptNmBd4bNRa0geqOsSdNI4XJ8i5tAetDeGd2lS8AlA9D5NyzlBSXvBzazQ==", "license": "MIT", "dependencies": { "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-aria": "^9.17.8", - "@fluentui/react-avatar": "^9.9.14", - "@fluentui/react-button": "^9.8.0", - "@fluentui/react-checkbox": "^9.5.13", + "@fluentui/react-aria": "^9.17.9", + "@fluentui/react-avatar": "^9.10.0", + "@fluentui/react-button": "^9.8.1", + "@fluentui/react-checkbox": "^9.5.14", "@fluentui/react-context-selector": "^9.2.14", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.3.5", + "@fluentui/react-jsx-runtime": "^9.4.0", "@fluentui/react-motion": "^9.11.6", "@fluentui/react-motion-components-preview": "^0.15.0", - "@fluentui/react-radio": "^9.5.13", + "@fluentui/react-radio": "^9.5.14", "@fluentui/react-shared-contexts": "^9.26.1", "@fluentui/react-tabster": "^9.26.12", "@fluentui/react-theme": "^9.2.1", @@ -2513,12 +2469,12 @@ } }, "node_modules/@fluentui/react-virtualizer": { - "version": "9.0.0-alpha.109", - "resolved": "https://registry.npmjs.org/@fluentui/react-virtualizer/-/react-virtualizer-9.0.0-alpha.109.tgz", - "integrity": "sha512-pFnbPQ7VeXFQi2+dBVLscdBkhJ0ez7IIPjqaP1VTyJxqnkVyBoIvtX9Y6cL/eK+6aQ97fQ+ZOVZjnCHSsvoB/g==", + "version": "9.0.0-alpha.110", + "resolved": "https://registry.npmjs.org/@fluentui/react-virtualizer/-/react-virtualizer-9.0.0-alpha.110.tgz", + "integrity": "sha512-8wW2BBXS5rIfG+tyPBi38KLrJgoTT1h/aCrRSOhk8TBZi9qjQEcnkCa8otZTtSohB92Mit94KhVgmYlUxY8WEA==", "license": "MIT", "dependencies": { - "@fluentui/react-jsx-runtime": "^9.3.5", + "@fluentui/react-jsx-runtime": "^9.4.0", "@fluentui/react-shared-contexts": "^9.26.1", "@fluentui/react-utilities": "^9.26.1", "@griffel/react": "^1.5.32", @@ -2628,34 +2584,6 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.13", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", @@ -2706,17 +2634,6 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } - }, "node_modules/@rolldown/pluginutils": { "version": "1.0.0-rc.3", "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.3.tgz", @@ -2963,13 +2880,12 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.57.1.tgz", - "integrity": "sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==", + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.3.tgz", + "integrity": "sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==", "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -3074,6 +2990,13 @@ "win32" ] }, + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "dev": true, + "license": "MIT" + }, "node_modules/@swc/helpers": { "version": "0.5.18", "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.18.tgz", @@ -3094,9 +3017,9 @@ } }, "node_modules/@tanstack/react-query": { - "version": "5.90.20", - "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.20.tgz", - "integrity": "sha512-vXBxa+qeyveVO7OA0jX1z+DeyCA4JKnThKv411jd5SORpBKgkcVnYKCiBgECvADvniBX7tobwBmg01qq9JmMJw==", + "version": "5.90.21", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.21.tgz", + "integrity": "sha512-0Lu6y5t+tvlTJMTO7oh5NSpJfpg/5D41LlThfepTixPYkJ0sE2Jj0m0f6yYqujBwIXlId87e234+MxG3D3g7kg==", "license": "MIT", "dependencies": { "@tanstack/query-core": "5.90.20" @@ -3191,6 +3114,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/esrecurse": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz", + "integrity": "sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/estree": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", @@ -3206,19 +3136,20 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.10.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.12.tgz", - "integrity": "sha512-68e+T28EbdmLSTkPgs3+UacC6rzmqrcWFPQs1C8mwJhI/r5Uxr0yEuQotczNRROd1gq30NGxee+fo0rSIxpyAw==", + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.0.tgz", + "integrity": "sha512-4K3bqJpXpqfg2XKGK9bpDTc6xO/xoUP/RBWS7AtRMug6zZFaRekiLzjVtAoZMquxoAbzBvy5nxQ7veS5eYzf8A==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~7.16.0" + "undici-types": "~7.18.0" } }, "node_modules/@types/react": { - "version": "19.2.13", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.13.tgz", - "integrity": "sha512-KkiJeU6VbYbUOp5ITMIc7kBfqlYkKA5KhEHVrGMmUUMt7NeaZg65ojdPk+FtNrBAOXNVM5QM72jnADjM+XVRAQ==", + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", + "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", + "dev": true, "license": "MIT", "dependencies": { "csstype": "^3.2.2" @@ -3228,23 +3159,24 @@ "version": "19.2.3", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", + "dev": true, "license": "MIT", "peerDependencies": { "@types/react": "^19.2.0" } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.55.0.tgz", - "integrity": "sha512-1y/MVSz0NglV1ijHC8OT49mPJ4qhPYjiK08YUQVbIOyu+5k862LKUHFkpKHWu//zmr7hDR2rhwUm6gnCGNmGBQ==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.56.0.tgz", + "integrity": "sha512-lRyPDLzNCuae71A3t9NEINBiTn7swyOhvUj3MyUOxb8x6g6vPEFoOU+ZRmGMusNC3X3YMhqMIX7i8ShqhT74Pw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.55.0", - "@typescript-eslint/type-utils": "8.55.0", - "@typescript-eslint/utils": "8.55.0", - "@typescript-eslint/visitor-keys": "8.55.0", + "@typescript-eslint/scope-manager": "8.56.0", + "@typescript-eslint/type-utils": "8.56.0", + "@typescript-eslint/utils": "8.56.0", + "@typescript-eslint/visitor-keys": "8.56.0", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.4.0" @@ -3257,8 +3189,8 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.55.0", - "eslint": "^8.57.0 || ^9.0.0", + "@typescript-eslint/parser": "^8.56.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } }, @@ -3273,16 +3205,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.55.0.tgz", - "integrity": "sha512-4z2nCSBfVIMnbuu8uinj+f0o4qOeggYJLbjpPHka3KH1om7e+H9yLKTYgksTaHcGco+NClhhY2vyO3HsMH1RGw==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.56.0.tgz", + "integrity": "sha512-IgSWvLobTDOjnaxAfDTIHaECbkNlAlKv2j5SjpB2v7QHKv1FIfjwMy8FsDbVfDX/KjmCmYICcw7uGaXLhtsLNg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.55.0", - "@typescript-eslint/types": "8.55.0", - "@typescript-eslint/typescript-estree": "8.55.0", - "@typescript-eslint/visitor-keys": "8.55.0", + "@typescript-eslint/scope-manager": "8.56.0", + "@typescript-eslint/types": "8.56.0", + "@typescript-eslint/typescript-estree": "8.56.0", + "@typescript-eslint/visitor-keys": "8.56.0", "debug": "^4.4.3" }, "engines": { @@ -3293,19 +3225,19 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.55.0.tgz", - "integrity": "sha512-zRcVVPFUYWa3kNnjaZGXSu3xkKV1zXy8M4nO/pElzQhFweb7PPtluDLQtKArEOGmjXoRjnUZ29NjOiF0eCDkcQ==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.56.0.tgz", + "integrity": "sha512-M3rnyL1vIQOMeWxTWIW096/TtVP+8W3p/XnaFflhmcFp+U4zlxUxWj4XwNs6HbDeTtN4yun0GNTTDBw/SvufKg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.55.0", - "@typescript-eslint/types": "^8.55.0", + "@typescript-eslint/tsconfig-utils": "^8.56.0", + "@typescript-eslint/types": "^8.56.0", "debug": "^4.4.3" }, "engines": { @@ -3320,14 +3252,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.55.0.tgz", - "integrity": "sha512-fVu5Omrd3jeqeQLiB9f1YsuK/iHFOwb04bCtY4BSCLgjNbOD33ZdV6KyEqplHr+IlpgT0QTZ/iJ+wT7hvTx49Q==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.56.0.tgz", + "integrity": "sha512-7UiO/XwMHquH+ZzfVCfUNkIXlp/yQjjnlYUyYz7pfvlK3/EyyN6BK+emDmGNyQLBtLGaYrTAI6KOw8tFucWL2w==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.55.0", - "@typescript-eslint/visitor-keys": "8.55.0" + "@typescript-eslint/types": "8.56.0", + "@typescript-eslint/visitor-keys": "8.56.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3338,9 +3270,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.55.0.tgz", - "integrity": "sha512-1R9cXqY7RQd7WuqSN47PK9EDpgFUK3VqdmbYrvWJZYDd0cavROGn+74ktWBlmJ13NXUQKlZ/iAEQHI/V0kKe0Q==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.56.0.tgz", + "integrity": "sha512-bSJoIIt4o3lKXD3xmDh9chZcjCz5Lk8xS7Rxn+6l5/pKrDpkCwtQNQQwZ2qRPk7TkUYhrq3WPIHXOXlbXP0itg==", "dev": true, "license": "MIT", "engines": { @@ -3355,15 +3287,15 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.55.0.tgz", - "integrity": "sha512-x1iH2unH4qAt6I37I2CGlsNs+B9WGxurP2uyZLRz6UJoZWDBx9cJL1xVN/FiOmHEONEg6RIufdvyT0TEYIgC5g==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.56.0.tgz", + "integrity": "sha512-qX2L3HWOU2nuDs6GzglBeuFXviDODreS58tLY/BALPC7iu3Fa+J7EOTwnX9PdNBxUI7Uh0ntP0YWGnxCkXzmfA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.55.0", - "@typescript-eslint/typescript-estree": "8.55.0", - "@typescript-eslint/utils": "8.55.0", + "@typescript-eslint/types": "8.56.0", + "@typescript-eslint/typescript-estree": "8.56.0", + "@typescript-eslint/utils": "8.56.0", "debug": "^4.4.3", "ts-api-utils": "^2.4.0" }, @@ -3375,14 +3307,14 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/types": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.55.0.tgz", - "integrity": "sha512-ujT0Je8GI5BJWi+/mMoR0wxwVEQaxM+pi30xuMiJETlX80OPovb2p9E8ss87gnSVtYXtJoU9U1Cowcr6w2FE0w==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.0.tgz", + "integrity": "sha512-DBsLPs3GsWhX5HylbP9HNG15U0bnwut55Lx12bHB9MpXxQ+R5GC8MwQe+N1UFXxAeQDvEsEDY6ZYwX03K7Z6HQ==", "dev": true, "license": "MIT", "engines": { @@ -3394,16 +3326,16 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.55.0.tgz", - "integrity": "sha512-EwrH67bSWdx/3aRQhCoxDaHM+CrZjotc2UCCpEDVqfCE+7OjKAGWNY2HsCSTEVvWH2clYQK8pdeLp42EVs+xQw==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.0.tgz", + "integrity": "sha512-ex1nTUMWrseMltXUHmR2GAQ4d+WjkZCT4f+4bVsps8QEdh0vlBsaCokKTPlnqBFqqGaxilDNJG7b8dolW2m43Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.55.0", - "@typescript-eslint/tsconfig-utils": "8.55.0", - "@typescript-eslint/types": "8.55.0", - "@typescript-eslint/visitor-keys": "8.55.0", + "@typescript-eslint/project-service": "8.56.0", + "@typescript-eslint/tsconfig-utils": "8.56.0", + "@typescript-eslint/types": "8.56.0", + "@typescript-eslint/visitor-keys": "8.56.0", "debug": "^4.4.3", "minimatch": "^9.0.5", "semver": "^7.7.3", @@ -3461,16 +3393,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.55.0.tgz", - "integrity": "sha512-BqZEsnPGdYpgyEIkDC1BadNY8oMwckftxBT+C8W0g1iKPdeqKZBtTfnvcq0nf60u7MkjFO8RBvpRGZBPw4L2ow==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.56.0.tgz", + "integrity": "sha512-RZ3Qsmi2nFGsS+n+kjLAYDPVlrzf7UhTffrDIKr+h2yzAlYP/y5ZulU0yeDEPItos2Ph46JAL5P/On3pe7kDIQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.55.0", - "@typescript-eslint/types": "8.55.0", - "@typescript-eslint/typescript-estree": "8.55.0" + "@typescript-eslint/scope-manager": "8.56.0", + "@typescript-eslint/types": "8.56.0", + "@typescript-eslint/typescript-estree": "8.56.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3480,19 +3412,19 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.55.0.tgz", - "integrity": "sha512-AxNRwEie8Nn4eFS1FzDMJWIISMGoXMb037sgCBJ3UR6o0fQTzr2tqN9WT+DkWJPhIdQCfV7T6D387566VtnCJA==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.0.tgz", + "integrity": "sha512-q+SL+b+05Ud6LbEE35qe4A99P+htKTKVbyiNEe45eCbJFyh/HVK9QXwlrbz+Q4L8SOW4roxSVwXYj4DMBT7Ieg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.55.0", - "eslint-visitor-keys": "^4.2.1" + "@typescript-eslint/types": "8.56.0", + "eslint-visitor-keys": "^5.0.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3524,32 +3456,29 @@ } }, "node_modules/@vitest/coverage-v8": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.2.4.tgz", - "integrity": "sha512-EyF9SXU6kS5Ku/U82E259WSnvg6c8KTjppUncuNdm5QHpe17mwREHnjDzozC8x9MZ0xfBUFSaLkRv4TMA75ALQ==", + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.0.18.tgz", + "integrity": "sha512-7i+N2i0+ME+2JFZhfuz7Tg/FqKtilHjGyGvoHYQ6iLV0zahbsJ9sljC9OcFcPDbhYKCet+sG8SsVqlyGvPflZg==", "dev": true, "license": "MIT", "dependencies": { - "@ampproject/remapping": "^2.3.0", "@bcoe/v8-coverage": "^1.0.2", - "ast-v8-to-istanbul": "^0.3.3", - "debug": "^4.4.1", + "@vitest/utils": "4.0.18", + "ast-v8-to-istanbul": "^0.3.10", "istanbul-lib-coverage": "^3.2.2", "istanbul-lib-report": "^3.0.1", - "istanbul-lib-source-maps": "^5.0.6", - "istanbul-reports": "^3.1.7", - "magic-string": "^0.30.17", - "magicast": "^0.3.5", - "std-env": "^3.9.0", - "test-exclude": "^7.0.1", - "tinyrainbow": "^2.0.0" + "istanbul-reports": "^3.2.0", + "magicast": "^0.5.1", + "obug": "^2.1.1", + "std-env": "^3.10.0", + "tinyrainbow": "^3.0.3" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "@vitest/browser": "3.2.4", - "vitest": "3.2.4" + "@vitest/browser": "4.0.18", + "vitest": "4.0.18" }, "peerDependenciesMeta": { "@vitest/browser": { @@ -3558,39 +3487,40 @@ } }, "node_modules/@vitest/expect": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz", - "integrity": "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==", + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.18.tgz", + "integrity": "sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ==", "dev": true, "license": "MIT", "dependencies": { + "@standard-schema/spec": "^1.0.0", "@types/chai": "^5.2.2", - "@vitest/spy": "3.2.4", - "@vitest/utils": "3.2.4", - "chai": "^5.2.0", - "tinyrainbow": "^2.0.0" + "@vitest/spy": "4.0.18", + "@vitest/utils": "4.0.18", + "chai": "^6.2.1", + "tinyrainbow": "^3.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/mocker": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz", - "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==", + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.18.tgz", + "integrity": "sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "3.2.4", + "@vitest/spy": "4.0.18", "estree-walker": "^3.0.3", - "magic-string": "^0.30.17" + "magic-string": "^0.30.21" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { "msw": "^2.4.9", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" + "vite": "^6.0.0 || ^7.0.0-0" }, "peerDependenciesMeta": { "msw": { @@ -3602,42 +3532,41 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", - "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==", + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.18.tgz", + "integrity": "sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==", "dev": true, "license": "MIT", "dependencies": { - "tinyrainbow": "^2.0.0" + "tinyrainbow": "^3.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/runner": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz", - "integrity": "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==", + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.18.tgz", + "integrity": "sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "3.2.4", - "pathe": "^2.0.3", - "strip-literal": "^3.0.0" + "@vitest/utils": "4.0.18", + "pathe": "^2.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/snapshot": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz", - "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==", + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.18.tgz", + "integrity": "sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.2.4", - "magic-string": "^0.30.17", + "@vitest/pretty-format": "4.0.18", + "magic-string": "^0.30.21", "pathe": "^2.0.3" }, "funding": { @@ -3645,37 +3574,33 @@ } }, "node_modules/@vitest/spy": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz", - "integrity": "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==", + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.18.tgz", + "integrity": "sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw==", "dev": true, "license": "MIT", - "dependencies": { - "tinyspy": "^4.0.3" - }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/utils": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz", - "integrity": "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==", + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.18.tgz", + "integrity": "sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.2.4", - "loupe": "^3.1.4", - "tinyrainbow": "^2.0.0" + "@vitest/pretty-format": "4.0.18", + "tinyrainbow": "^3.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", "dev": true, "license": "MIT", "bin": { @@ -3712,42 +3637,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, "node_modules/assertion-error": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", @@ -3785,24 +3674,39 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.9.19", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz", - "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.0.tgz", + "integrity": "sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==", "dev": true, "license": "Apache-2.0", "bin": { - "baseline-browser-mapping": "dist/cli.js" + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" } }, "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.2.tgz", + "integrity": "sha512-Pdk8c9poy+YhOgVWw1JNN22/HcivgKWwpxKq04M/jTmHyCZn12WPJebZxdjSa5TmBqISrUSgNYU3eRORljfCCw==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/brace-expansion/node_modules/balanced-match": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.3.tgz", + "integrity": "sha512-1pHv8LX9CpKut1Zp4EXey7Z8OfH11ONNH6Dhi2WDUt31VVZFXZzKwXcysBgqSumFCmR+0dqjMK5v5JiFHzi0+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": "20 || >=22" } }, "node_modules/browserslist": { @@ -3839,30 +3743,10 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/cac": { - "version": "6.7.14", - "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", - "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/caniuse-lite": { - "version": "1.0.30001769", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001769.tgz", - "integrity": "sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==", + "version": "1.0.30001770", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001770.tgz", + "integrity": "sha512-x/2CLQ1jHENRbHg5PSId2sXq1CIO1CISvwWAj027ltMVG2UNgW+w9oH2+HzgEIRFembL8bUlXtfbBHR1fCg2xw==", "dev": true, "funding": [ { @@ -3881,76 +3765,15 @@ "license": "CC-BY-4.0" }, "node_modules/chai": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz", - "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz", + "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==", "dev": true, "license": "MIT", - "dependencies": { - "assertion-error": "^2.0.1", - "check-error": "^2.1.1", - "deep-eql": "^5.0.1", - "loupe": "^3.1.0", - "pathval": "^2.0.0" - }, "engines": { "node": ">=18" } }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/check-error": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.3.tgz", - "integrity": "sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 16" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -4007,16 +3830,6 @@ } } }, - "node_modules/deep-eql": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", - "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -4024,13 +3837,6 @@ "dev": true, "license": "MIT" }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true, - "license": "MIT" - }, "node_modules/electron-to-chromium": { "version": "1.5.286", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz", @@ -4062,13 +3868,6 @@ "embla-carousel": "8.6.0" } }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" - }, "node_modules/es-module-lexer": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", @@ -4142,33 +3941,30 @@ } }, "node_modules/eslint": { - "version": "9.39.2", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz", - "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.0.0.tgz", + "integrity": "sha512-O0piBKY36YSJhlFSG8p9VUdPV/SxxS4FYDWVpr/9GJuMaepzwlf4J8I4ov1b+ySQfDTPhc3DtLaxcT1fN0yqCg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.21.1", - "@eslint/config-helpers": "^0.4.2", - "@eslint/core": "^0.17.0", - "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.39.2", - "@eslint/plugin-kit": "^0.4.1", + "@eslint-community/regexpp": "^4.12.2", + "@eslint/config-array": "^0.23.0", + "@eslint/config-helpers": "^0.5.2", + "@eslint/core": "^1.1.0", + "@eslint/plugin-kit": "^0.6.0", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "ajv": "^6.12.4", - "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.4.0", - "eslint-visitor-keys": "^4.2.1", - "espree": "^10.4.0", - "esquery": "^1.5.0", + "eslint-scope": "^9.1.0", + "eslint-visitor-keys": "^5.0.0", + "espree": "^11.1.0", + "esquery": "^1.7.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", @@ -4178,8 +3974,7 @@ "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", + "minimatch": "^10.1.1", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, @@ -4187,7 +3982,7 @@ "eslint": "bin/eslint.js" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { "url": "https://eslint.org/donate" @@ -4222,58 +4017,60 @@ } }, "node_modules/eslint-plugin-react-refresh": { - "version": "0.4.26", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.26.tgz", - "integrity": "sha512-1RETEylht2O6FM/MvgnyvT+8K21wLqDNg4qD51Zj3guhjt433XbnnkVttHMyaVyAFD03QSV4LPS5iE3VQmO7XQ==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.5.0.tgz", + "integrity": "sha512-ZYvmh7VfVgqR/7wR71I3Zl6hK/C5CcxdWYKZSpHawS5JCNgE4efhQWg/+/WPpgGAp9Ngp/rRZYyaIwmPQBq/lA==", "dev": true, "license": "MIT", "peerDependencies": { - "eslint": ">=8.40" + "eslint": ">=9" } }, "node_modules/eslint-scope": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", - "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.0.tgz", + "integrity": "sha512-CkWE42hOJsNj9FJRaoMX9waUFYhqY4jmyLFdAdzZr6VaCg3ynLYx4WnOdkaIifGfH4gsUcBTn4OZbHXkpLD0FQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { + "@types/esrecurse": "^4.3.1", + "@types/estree": "^1.0.8", "esrecurse": "^4.3.0", "estraverse": "^5.2.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.0.tgz", + "integrity": "sha512-A0XeIi7CXU7nPlfHS9loMYEKxUaONu/hTEzHTGba9Huu94Cq1hPivf+DE5erJozZOky0LfvXAyrV/tcswpLI0Q==", "dev": true, "license": "Apache-2.0", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/espree": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", - "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-11.1.0.tgz", + "integrity": "sha512-WFWYhO1fV4iYkqOOvq8FbqIhr2pYfoDY0kCotMkDeNtGpiGGkZ1iov2u8ydjtgM8yF8rzK7oaTbw2NAzbAbehw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.15.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.1" + "eslint-visitor-keys": "^5.0.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { "url": "https://opencollective.com/eslint" @@ -4435,23 +4232,6 @@ "dev": true, "license": "ISC" }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "dev": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -4477,28 +4257,6 @@ "node": ">=6.9.0" } }, - "node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", @@ -4512,43 +4270,17 @@ "node": ">=10.13.0" } }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "node_modules/globals": { + "version": "17.3.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.3.0.tgz", + "integrity": "sha512-yMqGUQVVCkD4tqjOJf3TnrvaaHDMYp4VlUSObbkIiuCPe/ofdMBFIAcBbCSRFWOnos6qRiTVStDwqPLUclaxIw==", "dev": true, "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/globals": { - "version": "16.5.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-16.5.0.tgz", - "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/has-flag": { @@ -4595,23 +4327,6 @@ "node": ">= 4" } }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -4632,16 +4347,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -4687,21 +4392,6 @@ "node": ">=10" } }, - "node_modules/istanbul-lib-source-maps": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", - "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.23", - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/istanbul-reports": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", @@ -4716,22 +4406,6 @@ "node": ">=8" } }, - "node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -4739,19 +4413,6 @@ "dev": true, "license": "MIT" }, - "node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/jsesc": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", @@ -4845,20 +4506,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/loupe": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz", - "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==", - "dev": true, - "license": "MIT" - }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -4880,15 +4527,15 @@ } }, "node_modules/magicast": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.5.tgz", - "integrity": "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.2.tgz", + "integrity": "sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.25.4", - "@babel/types": "^7.25.4", - "source-map-js": "^1.2.0" + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "source-map-js": "^1.2.1" } }, "node_modules/make-dir": { @@ -4921,26 +4568,19 @@ } }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.2.tgz", + "integrity": "sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^5.0.2" }, "engines": { - "node": "*" - } - }, - "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/ms": { @@ -4983,6 +4623,17 @@ "dev": true, "license": "MIT" }, + "node_modules/obug": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz", + "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==", + "dev": true, + "funding": [ + "https://github.com/sponsors/sxzz", + "https://opencollective.com/debug" + ], + "license": "MIT" + }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -5033,26 +4684,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "dev": true, - "license": "BlueOak-1.0.0" - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -5073,30 +4704,6 @@ "node": ">=8" } }, - "node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, "node_modules/pathe": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", @@ -5104,16 +4711,6 @@ "dev": true, "license": "MIT" }, - "node_modules/pathval": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz", - "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.16" - } - }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -5204,12 +4801,6 @@ "react": "^19.2.4" } }, - "node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "license": "MIT" - }, "node_modules/react-refresh": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz", @@ -5220,16 +4811,6 @@ "node": ">=0.10.0" } }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/rollup": { "version": "4.57.1", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.57.1.tgz", @@ -5275,6 +4856,20 @@ "fsevents": "~2.3.2" } }, + "node_modules/rollup/node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.57.1.tgz", + "integrity": "sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/rtl-css-js": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.16.1.tgz", @@ -5330,19 +4925,6 @@ "dev": true, "license": "ISC" }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", @@ -5367,143 +4949,6 @@ "dev": true, "license": "MIT" }, - "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/string-width-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strip-literal": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.1.0.tgz", - "integrity": "sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "js-tokens": "^9.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/strip-literal/node_modules/js-tokens": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", - "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", - "dev": true, - "license": "MIT" - }, "node_modules/stylis": { "version": "4.3.6", "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz", @@ -5536,60 +4981,6 @@ "@rollup/rollup-linux-x64-gnu": "4.53.3" } }, - "node_modules/tabster/node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.3.tgz", - "integrity": "sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/test-exclude": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz", - "integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==", - "dev": true, - "license": "ISC", - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^10.4.1", - "minimatch": "^9.0.4" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/test-exclude/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/test-exclude/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/tinybench": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", @@ -5598,11 +4989,14 @@ "license": "MIT" }, "node_modules/tinyexec": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", - "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", + "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=18" + } }, "node_modules/tinyglobby": { "version": "0.2.15", @@ -5621,30 +5015,10 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, - "node_modules/tinypool": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", - "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.0.0 || >=20.0.0" - } - }, "node_modules/tinyrainbow": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", - "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tinyspy": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.4.tgz", - "integrity": "sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.0.3.tgz", + "integrity": "sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==", "dev": true, "license": "MIT", "engines": { @@ -5698,16 +5072,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.55.0.tgz", - "integrity": "sha512-HE4wj+r5lmDVS9gdaN0/+iqNvPZwGfnJ5lZuz7s5vLlg9ODw0bIiiETaios9LvFI1U94/VBXGm3CB2Y5cNFMpw==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.56.0.tgz", + "integrity": "sha512-c7toRLrotJ9oixgdW7liukZpsnq5CZ7PuKztubGYlNppuTqhIoWfhgHo/7EU0v06gS2l/x0i2NEFK1qMIf0rIg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.55.0", - "@typescript-eslint/parser": "8.55.0", - "@typescript-eslint/typescript-estree": "8.55.0", - "@typescript-eslint/utils": "8.55.0" + "@typescript-eslint/eslint-plugin": "8.56.0", + "@typescript-eslint/parser": "8.56.0", + "@typescript-eslint/typescript-estree": "8.56.0", + "@typescript-eslint/utils": "8.56.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5717,14 +5091,14 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", "dev": true, "license": "MIT" }, @@ -5853,75 +5227,51 @@ } } }, - "node_modules/vite-node": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz", - "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cac": "^6.7.14", - "debug": "^4.4.1", - "es-module-lexer": "^1.7.0", - "pathe": "^2.0.3", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" - }, - "bin": { - "vite-node": "vite-node.mjs" - }, - "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, "node_modules/vitest": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz", - "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.0.18.tgz", + "integrity": "sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ==", "dev": true, "license": "MIT", "dependencies": { - "@types/chai": "^5.2.2", - "@vitest/expect": "3.2.4", - "@vitest/mocker": "3.2.4", - "@vitest/pretty-format": "^3.2.4", - "@vitest/runner": "3.2.4", - "@vitest/snapshot": "3.2.4", - "@vitest/spy": "3.2.4", - "@vitest/utils": "3.2.4", - "chai": "^5.2.0", - "debug": "^4.4.1", - "expect-type": "^1.2.1", - "magic-string": "^0.30.17", + "@vitest/expect": "4.0.18", + "@vitest/mocker": "4.0.18", + "@vitest/pretty-format": "4.0.18", + "@vitest/runner": "4.0.18", + "@vitest/snapshot": "4.0.18", + "@vitest/spy": "4.0.18", + "@vitest/utils": "4.0.18", + "es-module-lexer": "^1.7.0", + "expect-type": "^1.2.2", + "magic-string": "^0.30.21", + "obug": "^2.1.1", "pathe": "^2.0.3", - "picomatch": "^4.0.2", - "std-env": "^3.9.0", + "picomatch": "^4.0.3", + "std-env": "^3.10.0", "tinybench": "^2.9.0", - "tinyexec": "^0.3.2", - "tinyglobby": "^0.2.14", - "tinypool": "^1.1.1", - "tinyrainbow": "^2.0.0", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", - "vite-node": "3.2.4", + "tinyexec": "^1.0.2", + "tinyglobby": "^0.2.15", + "tinyrainbow": "^3.0.3", + "vite": "^6.0.0 || ^7.0.0", "why-is-node-running": "^2.3.0" }, "bin": { "vitest": "vitest.mjs" }, "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + "node": "^20.0.0 || ^22.0.0 || >=24.0.0" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { "@edge-runtime/vm": "*", - "@types/debug": "^4.1.12", - "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "@vitest/browser": "3.2.4", - "@vitest/ui": "3.2.4", + "@opentelemetry/api": "^1.9.0", + "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", + "@vitest/browser-playwright": "4.0.18", + "@vitest/browser-preview": "4.0.18", + "@vitest/browser-webdriverio": "4.0.18", + "@vitest/ui": "4.0.18", "happy-dom": "*", "jsdom": "*" }, @@ -5929,13 +5279,19 @@ "@edge-runtime/vm": { "optional": true }, - "@types/debug": { + "@opentelemetry/api": { "optional": true }, "@types/node": { "optional": true }, - "@vitest/browser": { + "@vitest/browser-playwright": { + "optional": true + }, + "@vitest/browser-preview": { + "optional": true + }, + "@vitest/browser-webdriverio": { "optional": true }, "@vitest/ui": { @@ -5992,101 +5348,6 @@ "node": ">=0.10.0" } }, - "node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", diff --git a/package.json b/package.json index b9508db..7ebf185 100644 --- a/package.json +++ b/package.json @@ -17,30 +17,30 @@ "tauri": "cargo tauri" }, "dependencies": { - "@fluentui/react-components": "^9.72.11", - "@fluentui/react-icons": "^2.0.318", - "@tanstack/react-query": "^5.90.20", + "@fluentui/react-components": "^9.73.0", + "@fluentui/react-icons": "^2.0.319", + "@tanstack/react-query": "^5.90.21", "@tauri-apps/api": "^2.10.1", "@tauri-apps/plugin-store": "^2.4.2", "date-fns": "^4.1.0", - "react": "^19.2.0", - "react-dom": "^19.2.0", + "react": "^19.2.4", + "react-dom": "^19.2.4", "zustand": "^5.0.11" }, "devDependencies": { - "@eslint/js": "^9.39.1", - "@types/node": "^24.10.1", - "@types/react": "^19.2.7", + "@eslint/js": "^10.0.1", + "@types/node": "^25.3.0", + "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^5.1.1", - "@vitest/coverage-v8": "^3.2.4", - "eslint": "^9.39.1", + "@vitejs/plugin-react": "^5.1.4", + "@vitest/coverage-v8": "^4.0.18", + "eslint": "^10.0.0", "eslint-plugin-react-hooks": "^7.0.1", - "eslint-plugin-react-refresh": "^0.4.24", - "globals": "^16.5.0", + "eslint-plugin-react-refresh": "^0.5.0", + "globals": "^17.3.0", "typescript": "~5.9.3", - "typescript-eslint": "^8.48.0", + "typescript-eslint": "^8.56.0", "vite": "^7.3.1", - "vitest": "^3.2.4" + "vitest": "^4.0.18" } } diff --git a/src/components/secrets/SecretsList.tsx b/src/components/secrets/SecretsList.tsx index b06390b..df175d9 100644 --- a/src/components/secrets/SecretsList.tsx +++ b/src/components/secrets/SecretsList.tsx @@ -40,6 +40,7 @@ import { toggleSelection, toggleSelectionAll, } from './secretsBulkDeleteLogic'; +import { exportSecretMetadata, type ExportFormat } from './secretsExport'; import type { Column } from '../common/ItemTable'; import type { SecretItem } from '../../types'; @@ -118,6 +119,8 @@ export function SecretsList() { const [bulkDeleteLoading, setBulkDeleteLoading] = useState(false); const [bulkDeleteError, setBulkDeleteError] = useState(null); const [deleteConfirmInput, setDeleteConfirmInput] = useState(''); + const [exportMessage, setExportMessage] = useState(null); + const [exportMessageTone, setExportMessageTone] = useState<'success' | 'error'>('success'); const [bulkDeleteProgress, setBulkDeleteProgress] = useState({ total: 0, completed: 0, @@ -132,7 +135,7 @@ export function SecretsList() { // ── Derived / filtered data ── - const allSecrets = secretsQuery.data || []; + const allSecrets = useMemo(() => secretsQuery.data ?? [], [secretsQuery.data]); const filteredSecrets = allSecrets.filter((s) => s.name.toLowerCase().includes(searchQuery.toLowerCase()), ); @@ -182,32 +185,55 @@ export function SecretsList() { } }, [showBulkDeleteConfirm]); + useEffect(() => { + if (!exportMessage) return; + const timer = window.setTimeout(() => setExportMessage(null), 3000); + return () => window.clearTimeout(timer); + }, [exportMessage]); + // ── Handlers ── + const downloadExport = (content: string, format: ExportFormat) => { + const mimeType = format === 'json' ? 'application/json' : 'text/csv;charset=utf-8'; + const blob = new Blob([content], { type: mimeType }); + const url = URL.createObjectURL(blob); + const a = document.createElement('a'); + a.href = url; + a.download = `azvault-secrets-${Date.now()}.${format}`; + a.style.display = 'none'; + document.body.appendChild(a); + a.click(); + a.remove(); + URL.revokeObjectURL(url); + }; + const handleSelect = (item: SecretItem) => { setSelectedSecret(item); setDrawerOpen(true); }; /** Export metadata (never secret values) as JSON or CSV. */ - const handleExport = async (format: 'json' | 'csv') => { - const metadata = filteredSecrets.map( - ({ name, enabled, created, updated, expires, contentType, tags }) => ({ - name, - enabled, - created, - updated, - expires, - contentType, - tags: tags ? JSON.stringify(tags) : '', - }), - ); - try { - const result = await exportItems(JSON.stringify(metadata), format); - await navigator.clipboard.writeText(result); - } catch { - // Export errors are non-critical – silently ignored - } + const handleExport = async (format: ExportFormat) => { + await exportSecretMetadata(filteredSecrets, format, { + exportItems, + download: downloadExport, + writeClipboard: navigator.clipboard?.writeText + ? (content) => navigator.clipboard.writeText(content) + : undefined, + onError: (error) => { + setExportMessageTone('error'); + setExportMessage('Export failed.'); + console.error('Export failed:', error); + }, + onSuccess: (mode) => { + setExportMessageTone('success'); + setExportMessage( + mode === 'download' + ? `${format.toUpperCase()} downloaded.` + : `${format.toUpperCase()} copied to clipboard.`, + ); + }, + }); }; const toggleSelect = (id: string, checked: boolean) => { @@ -337,6 +363,31 @@ export function SecretsList() { + {exportMessage && ( +
+ + {exportMessage} + +
+ )} {/* Table */}
diff --git a/src/components/secrets/secretsExport.test.ts b/src/components/secrets/secretsExport.test.ts new file mode 100644 index 0000000..965b22f --- /dev/null +++ b/src/components/secrets/secretsExport.test.ts @@ -0,0 +1,149 @@ +import { describe, expect, it, vi } from 'vitest'; +import type { SecretItem } from '../../types'; +import { buildSecretMetadata, exportSecretMetadata } from './secretsExport'; + +function makeSecret(overrides?: Partial): SecretItem { + return { + id: 'id-1', + name: 'secret-a', + enabled: true, + created: '2025-01-01T00:00:00Z', + updated: '2025-01-02T00:00:00Z', + expires: null, + notBefore: null, + contentType: 'text/plain', + tags: { env: 'dev' }, + managed: null, + ...overrides, + }; +} + +describe('secretsExport', () => { + it('builds metadata rows without secret values', () => { + const out = buildSecretMetadata([ + makeSecret(), + makeSecret({ name: 'secret-b', tags: null, contentType: null }), + ]); + + expect(out).toEqual([ + { + name: 'secret-a', + enabled: true, + created: '2025-01-01T00:00:00Z', + updated: '2025-01-02T00:00:00Z', + expires: null, + contentType: 'text/plain', + tags: '{"env":"dev"}', + }, + { + name: 'secret-b', + enabled: true, + created: '2025-01-01T00:00:00Z', + updated: '2025-01-02T00:00:00Z', + expires: null, + contentType: null, + tags: '', + }, + ]); + }); + + it('exports and downloads when primary path succeeds', async () => { + const exportItems = vi.fn<(...args: [string, 'json' | 'csv']) => Promise>(); + exportItems.mockResolvedValue('payload-json'); + const download = vi.fn<(content: string, format: 'json' | 'csv') => void>(); + const writeClipboard = vi.fn<(content: string) => Promise>(); + writeClipboard.mockResolvedValue(); + const onError = vi.fn<(error: unknown) => void>(); + const onSuccess = vi.fn<(mode: 'download' | 'clipboard') => void>(); + + await exportSecretMetadata([makeSecret()], 'json', { + exportItems, + download, + writeClipboard, + onError, + onSuccess, + }); + + expect(exportItems).toHaveBeenCalledTimes(1); + expect(exportItems).toHaveBeenCalledWith( + JSON.stringify([ + { + name: 'secret-a', + enabled: true, + created: '2025-01-01T00:00:00Z', + updated: '2025-01-02T00:00:00Z', + expires: null, + contentType: 'text/plain', + tags: '{"env":"dev"}', + }, + ]), + 'json', + ); + expect(download).toHaveBeenCalledWith('payload-json', 'json'); + expect(writeClipboard).not.toHaveBeenCalled(); + expect(onError).not.toHaveBeenCalled(); + expect(onSuccess).toHaveBeenCalledWith('download'); + }); + + it('falls back to clipboard when download fails', async () => { + const exportItems = vi.fn<(...args: [string, 'json' | 'csv']) => Promise>(); + exportItems.mockResolvedValue('payload-csv'); + const download = vi.fn<(content: string, format: 'json' | 'csv') => void>(); + download.mockImplementation(() => { + throw new Error('download blocked'); + }); + const writeClipboard = vi.fn<(content: string) => Promise>(); + writeClipboard.mockResolvedValue(); + const onError = vi.fn<(error: unknown) => void>(); + const onSuccess = vi.fn<(mode: 'download' | 'clipboard') => void>(); + + await exportSecretMetadata([makeSecret()], 'csv', { + exportItems, + download, + writeClipboard, + onError, + onSuccess, + }); + + expect(download).toHaveBeenCalledWith('payload-csv', 'csv'); + expect(writeClipboard).toHaveBeenCalledWith('payload-csv'); + expect(onError).not.toHaveBeenCalled(); + expect(onSuccess).toHaveBeenCalledWith('clipboard'); + }); + + it('reports error when both download and clipboard are unavailable', async () => { + const exportItems = vi.fn<(...args: [string, 'json' | 'csv']) => Promise>(); + exportItems.mockResolvedValue('payload-json'); + const download = vi.fn<(content: string, format: 'json' | 'csv') => void>(); + download.mockImplementation(() => { + throw new Error('download blocked'); + }); + const onError = vi.fn<(error: unknown) => void>(); + + await exportSecretMetadata([makeSecret()], 'json', { + exportItems, + download, + onError, + }); + + expect(onError).toHaveBeenCalledTimes(1); + expect(String(onError.mock.calls[0][0])).toContain('Unable to download or copy export.'); + }); + + it('reports backend export errors', async () => { + const exportItems = vi.fn<(...args: [string, 'json' | 'csv']) => Promise>(); + exportItems.mockRejectedValue(new Error('backend failed')); + const download = vi.fn<(content: string, format: 'json' | 'csv') => void>(); + const onError = vi.fn<(error: unknown) => void>(); + + await exportSecretMetadata([makeSecret()], 'json', { + exportItems, + download, + onError, + }); + + expect(download).not.toHaveBeenCalled(); + expect(onError).toHaveBeenCalledTimes(1); + expect(String(onError.mock.calls[0][0])).toContain('backend failed'); + }); +}); diff --git a/src/components/secrets/secretsExport.ts b/src/components/secrets/secretsExport.ts new file mode 100644 index 0000000..b430554 --- /dev/null +++ b/src/components/secrets/secretsExport.ts @@ -0,0 +1,63 @@ +import type { SecretItem } from '../../types'; + +export type ExportFormat = 'json' | 'csv'; + +type ExportItemsFn = (itemsJson: string, format: ExportFormat) => Promise; +type DownloadFn = (content: string, format: ExportFormat) => void; +type ClipboardFn = (content: string) => Promise; +type ErrorFn = (error: unknown) => void; +type SuccessFn = (mode: 'download' | 'clipboard') => void; + +export type SecretExportMetadata = { + name: string; + enabled: boolean; + created: string | null; + updated: string | null; + expires: string | null; + contentType: string | null; + tags: string; +}; + +export function buildSecretMetadata(items: SecretItem[]): SecretExportMetadata[] { + return items.map(({ name, enabled, created, updated, expires, contentType, tags }) => ({ + name, + enabled, + created, + updated, + expires, + contentType, + tags: tags ? JSON.stringify(tags) : '', + })); +} + +export async function exportSecretMetadata( + items: SecretItem[], + format: ExportFormat, + deps: { + exportItems: ExportItemsFn; + download: DownloadFn; + writeClipboard?: ClipboardFn; + onError?: ErrorFn; + onSuccess?: SuccessFn; + }, +): Promise { + const { exportItems, download, writeClipboard, onError, onSuccess } = deps; + + try { + const metadata = buildSecretMetadata(items); + const result = await exportItems(JSON.stringify(metadata), format); + + try { + download(result, format); + onSuccess?.('download'); + } catch { + if (!writeClipboard) { + throw new Error('Unable to download or copy export.'); + } + await writeClipboard(result); + onSuccess?.('clipboard'); + } + } catch (error) { + onError?.(error); + } +} diff --git a/vitest.config.ts b/vitest.config.ts index 6551425..033bffa 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -3,11 +3,14 @@ import { defineConfig } from 'vitest/config'; export default defineConfig({ test: { environment: 'node', - include: ['src/components/secrets/secretsBulkDeleteLogic.test.ts'], + include: ['src/components/secrets/*.test.ts'], coverage: { provider: 'v8', reporter: ['text', 'html'], - include: ['src/components/secrets/secretsBulkDeleteLogic.ts'], + include: [ + 'src/components/secrets/secretsBulkDeleteLogic.ts', + 'src/components/secrets/secretsExport.ts', + ], thresholds: { lines: 100, functions: 100,