diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 6dca2b66..00000000 --- a/.eslintignore +++ /dev/null @@ -1,11 +0,0 @@ -node_modules/ -dist/ -.github/ -package.json -package-lock.json -.emulator-data/ -.husky/ -.vscode/ -coverage/ -firebase-export-*/ -public/assets/** diff --git a/.github/dependabot.yml b/.github/dependabot.yml index e2881f2b..1551ffec 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -10,7 +10,7 @@ updates: major-app-dependencies: update-types: ['major'] exclude-patterns: - - firebase + - firebase commit-message: prefix: deps prefix-development: deps(dev) diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 00000000..0886420c --- /dev/null +++ b/.prettierignore @@ -0,0 +1,9 @@ +.vscode +/data +/forklift +/maps +/mockups +/scripts +/dist +/public/assets +CHANGELOG.md diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 00000000..4d768e7e --- /dev/null +++ b/.prettierrc @@ -0,0 +1,6 @@ +{ + "plugins": ["prettier-plugin-organize-imports", "prettier-plugin-packagejson", "prettier-plugin-tailwindcss"], + "printWidth": 120, + "singleQuote": true, + "tailwindFunctions": ["clsx", "tv", "twMerge", "twJoin"] +} diff --git a/.storybook/main.js b/.storybook/main.js index 61249f4f..1f950e07 100644 --- a/.storybook/main.js +++ b/.storybook/main.js @@ -1,10 +1,6 @@ export default { stories: ['../src/**/*.stories.@(js|jsx|ts|tsx)'], - addons: [ - '@storybook/addon-links', - '@storybook/addon-essentials', - '@storybook/addon-interactions', - ], + addons: ['@storybook/addon-links', '@storybook/addon-essentials', '@storybook/addon-interactions'], framework: { name: '@storybook/react-vite', options: {}, diff --git a/.storybook/preview-head.html b/.storybook/preview-head.html index 05da1e9d..e5510401 100644 --- a/.storybook/preview-head.html +++ b/.storybook/preview-head.html @@ -1,3 +1,3 @@ \ No newline at end of file + diff --git a/commitlint.config.js b/commitlint.config.js index 91272ddd..b2727de7 100644 --- a/commitlint.config.js +++ b/commitlint.config.js @@ -2,21 +2,6 @@ export default { extends: ['@commitlint/config-conventional'], rules: { 'scope-enum': [2, 'always', ['api', 'app']], - 'type-enum': [ - 2, - 'always', - [ - 'build', - 'chore', - 'ci', - 'docs', - 'feat', - 'fix', - 'refactor', - 'deps', - 'style', - 'test', - ], - ], + 'type-enum': [2, 'always', ['build', 'chore', 'ci', 'docs', 'feat', 'fix', 'refactor', 'deps', 'style', 'test']], }, }; diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 00000000..72ee35ad --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,61 @@ +import js from '@eslint/js'; +import eslintConfigPrettier from 'eslint-config-prettier'; +import prettier from 'eslint-plugin-prettier'; +import reactPlugin from 'eslint-plugin-react'; +import reactHooks from 'eslint-plugin-react-hooks'; +import storybook from 'eslint-plugin-storybook'; +import globals from 'globals'; +import tseslint from 'typescript-eslint'; + +// eslint.config.js +export default tseslint.config( + js.configs.recommended, + ...tseslint.configs.recommended, + ...storybook.configs['flat/recommended'], + { + ...reactPlugin.configs.flat.recommended, + languageOptions: { + ecmaVersion: 2022, + sourceType: 'module', + ...reactPlugin.configs.flat.recommended.languageOptions, + globals: { + ...globals.browser, + ...globals.node, + ...globals.es2022, + }, + }, + settings: { react: { version: 'detect' } }, + plugins: { + react: reactPlugin, + prettier, + 'react-hooks': reactHooks, + }, + files: ['**/*.{js,mjs,cjs,jsx,mjsx,ts,tsx,mtsx}'], + rules: { + ...eslintConfigPrettier.rules, + ...reactHooks.configs.recommended.rules, + ...reactPlugin.configs['jsx-runtime'].rules, + }, + }, + { + ignores: [ + '.firebase', + '.github/*', + '.vscode/*', + 'data/*', + 'dist/*', + 'forklift/*', + 'maps/*', + 'mockups/*', + 'node_modules/*', + 'package-lock.json', + 'scripts/*', + '.github/*', + '.emulator-data/*', + '.husky/*', + '**/coverage/*', + 'firebase-export-*/', + 'public/assets/*', + ], + }, +); diff --git a/firebase.json b/firebase.json index 156921c2..a2ed94db 100644 --- a/firebase.json +++ b/firebase.json @@ -4,12 +4,7 @@ "source": "functions", "runtime": "nodejs20", "codebase": "default", - "ignore": [ - "node_modules", - ".git", - "firebase-debug.log", - "firebase-debug.*.log" - ] + "ignore": ["node_modules", ".git", "firebase-debug.log", "firebase-debug.*.log"] } ], "firestore": { diff --git a/functions/database/submissions/onCreateMonument.js b/functions/database/submissions/onCreateMonument.js index a505d9ad..1a36c8e9 100644 --- a/functions/database/submissions/onCreateMonument.js +++ b/functions/database/submissions/onCreateMonument.js @@ -55,6 +55,7 @@ export const createMonumentRecord = async (record, id) => { } catch (error) { logger.error( 'error fetching surveyor license. using empty string', + error, record.submitted_by, { structuredData: true, @@ -92,7 +93,7 @@ export const createMonumentRecord = async (record, id) => { await doc.update({ monument: fileName }); } catch (error) { - logger.error('error updating monument record sheet', fileName, { + logger.error('error updating monument record sheet', fileName, error, { structuredData: true, }); } diff --git a/functions/emailHelpers.js b/functions/emailHelpers.js index f0c67fad..8e34b19a 100644 --- a/functions/emailHelpers.js +++ b/functions/emailHelpers.js @@ -9,7 +9,7 @@ export const notify = (key, template) => { { nodeEnv: process.env.NODE_ENV }, { structuredData: true, - } + }, ); return Promise.resolve([ diff --git a/functions/https/postGeneratePreview.js b/functions/https/postGeneratePreview.js index cbf22cf8..c7d3a184 100644 --- a/functions/https/postGeneratePreview.js +++ b/functions/https/postGeneratePreview.js @@ -53,6 +53,7 @@ export const generatePreview = async (data, auth) => { logger.error( 'error fetching surveyor license. using empty string', auth.uid, + error, { structuredData: true, }, diff --git a/functions/package-lock.json b/functions/package-lock.json index 3e16ef72..5fdd4159 100644 --- a/functions/package-lock.json +++ b/functions/package-lock.json @@ -11,7 +11,7 @@ "contrast-color": "^1.0.1", "dms-conversion": "^3.1.3", "firebase-admin": "^13.0.2", - "firebase-functions": "^6.3.0", + "firebase-functions": "^6.3.1", "ky": "^1.7.4", "pdf-lib": "^1.17.1", "pdfmake": "^0.2.18", @@ -19,9 +19,9 @@ "yup": "^1.6.1" }, "devDependencies": { - "@vitest/coverage-v8": "^3.0.4", - "@vitest/ui": "^3.0.4", - "vitest": "^3.0.4" + "@vitest/coverage-v8": "^3.0.5", + "@vitest/ui": "^3.0.5", + "vitest": "^3.0.5" }, "engines": { "node": "20" @@ -1069,9 +1069,9 @@ "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.32.0.tgz", - "integrity": "sha512-G2fUQQANtBPsNwiVFg4zKiPQyjVKZCUdQUol53R8E71J7AsheRMV/Yv/nB8giOcOVqP7//eB5xPqieBYZe9bGg==", + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.1.tgz", + "integrity": "sha512-kwctwVlswSEsr4ljpmxKrRKp1eG1v2NAhlzFzDf1x1OdYaMjBYjDCbHkzWm57ZXzTwqn8stMXgROrnMw8dJK3w==", "cpu": [ "arm" ], @@ -1083,9 +1083,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.32.0.tgz", - "integrity": "sha512-qhFwQ+ljoymC+j5lXRv8DlaJYY/+8vyvYmVx074zrLsu5ZGWYsJNLjPPVJJjhZQpyAKUGPydOq9hRLLNvh1s3A==", + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.1.tgz", + "integrity": "sha512-4H5ZtZitBPlbPsTv6HBB8zh1g5d0T8TzCmpndQdqq20Ugle/nroOyDMf9p7f88Gsu8vBLU78/cuh8FYHZqdXxw==", "cpu": [ "arm64" ], @@ -1097,9 +1097,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.32.0.tgz", - "integrity": "sha512-44n/X3lAlWsEY6vF8CzgCx+LQaoqWGN7TzUfbJDiTIOjJm4+L2Yq+r5a8ytQRGyPqgJDs3Rgyo8eVL7n9iW6AQ==", + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.1.tgz", + "integrity": "sha512-f2AJ7Qwx9z25hikXvg+asco8Sfuc5NCLg8rmqQBIOUoWys5sb/ZX9RkMZDPdnnDevXAMJA5AWLnRBmgdXGEUiA==", "cpu": [ "arm64" ], @@ -1111,9 +1111,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.32.0.tgz", - "integrity": "sha512-F9ct0+ZX5Np6+ZDztxiGCIvlCaW87HBdHcozUfsHnj1WCUTBUubAoanhHUfnUHZABlElyRikI0mgcw/qdEm2VQ==", + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.1.tgz", + "integrity": "sha512-+/2JBrRfISCsWE4aEFXxd+7k9nWGXA8+wh7ZUHn/u8UDXOU9LN+QYKKhd57sIn6WRcorOnlqPMYFIwie/OHXWw==", "cpu": [ "x64" ], @@ -1125,9 +1125,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.32.0.tgz", - "integrity": "sha512-JpsGxLBB2EFXBsTLHfkZDsXSpSmKD3VxXCgBQtlPcuAqB8TlqtLcbeMhxXQkCDv1avgwNjF8uEIbq5p+Cee0PA==", + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.1.tgz", + "integrity": "sha512-SUeB0pYjIXwT2vfAMQ7E4ERPq9VGRrPR7Z+S4AMssah5EHIilYqjWQoTn5dkDtuIJUSTs8H+C9dwoEcg3b0sCA==", "cpu": [ "arm64" ], @@ -1139,9 +1139,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.32.0.tgz", - "integrity": "sha512-wegiyBT6rawdpvnD9lmbOpx5Sph+yVZKHbhnSP9MqUEDX08G4UzMU+D87jrazGE7lRSyTRs6NEYHtzfkJ3FjjQ==", + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.1.tgz", + "integrity": "sha512-L3T66wAZiB/ooiPbxz0s6JEX6Sr2+HfgPSK+LMuZkaGZFAFCQAHiP3dbyqovYdNaiUXcl9TlgnIbcsIicAnOZg==", "cpu": [ "x64" ], @@ -1153,9 +1153,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.32.0.tgz", - "integrity": "sha512-3pA7xecItbgOs1A5H58dDvOUEboG5UfpTq3WzAdF54acBbUM+olDJAPkgj1GRJ4ZqE12DZ9/hNS2QZk166v92A==", + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.1.tgz", + "integrity": "sha512-UBXdQ4+ATARuFgsFrQ+tAsKvBi/Hly99aSVdeCUiHV9dRTTpMU7OrM3WXGys1l40wKVNiOl0QYY6cZQJ2xhKlQ==", "cpu": [ "arm" ], @@ -1167,9 +1167,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.32.0.tgz", - "integrity": "sha512-Y7XUZEVISGyge51QbYyYAEHwpGgmRrAxQXO3siyYo2kmaj72USSG8LtlQQgAtlGfxYiOwu+2BdbPjzEpcOpRmQ==", + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.1.tgz", + "integrity": "sha512-m/yfZ25HGdcCSwmopEJm00GP7xAUyVcBPjttGLRAqZ60X/bB4Qn6gP7XTwCIU6bITeKmIhhwZ4AMh2XLro+4+w==", "cpu": [ "arm" ], @@ -1181,9 +1181,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.32.0.tgz", - "integrity": "sha512-r7/OTF5MqeBrZo5omPXcTnjvv1GsrdH8a8RerARvDFiDwFpDVDnJyByYM/nX+mvks8XXsgPUxkwe/ltaX2VH7w==", + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.1.tgz", + "integrity": "sha512-Wy+cUmFuvziNL9qWRRzboNprqSQ/n38orbjRvd6byYWridp5TJ3CD+0+HUsbcWVSNz9bxkDUkyASGP0zS7GAvg==", "cpu": [ "arm64" ], @@ -1195,9 +1195,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.32.0.tgz", - "integrity": "sha512-HJbifC9vex9NqnlodV2BHVFNuzKL5OnsV2dvTw6e1dpZKkNjPG6WUq+nhEYV6Hv2Bv++BXkwcyoGlXnPrjAKXw==", + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.1.tgz", + "integrity": "sha512-CQ3MAGgiFmQW5XJX5W3wnxOBxKwFlUAgSXFA2SwgVRjrIiVt5LHfcQLeNSHKq5OEZwv+VCBwlD1+YKCjDG8cpg==", "cpu": [ "arm64" ], @@ -1209,9 +1209,9 @@ ] }, "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.32.0.tgz", - "integrity": "sha512-VAEzZTD63YglFlWwRj3taofmkV1V3xhebDXffon7msNz4b14xKsz7utO6F8F4cqt8K/ktTl9rm88yryvDpsfOw==", + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.1.tgz", + "integrity": "sha512-rSzb1TsY4lSwH811cYC3OC2O2mzNMhM13vcnA7/0T6Mtreqr3/qs6WMDriMRs8yvHDI54qxHgOk8EV5YRAHFbw==", "cpu": [ "loong64" ], @@ -1223,9 +1223,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.32.0.tgz", - "integrity": "sha512-Sts5DST1jXAc9YH/iik1C9QRsLcCoOScf3dfbY5i4kH9RJpKxiTBXqm7qU5O6zTXBTEZry69bGszr3SMgYmMcQ==", + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.1.tgz", + "integrity": "sha512-fwr0n6NS0pG3QxxlqVYpfiY64Fd1Dqd8Cecje4ILAV01ROMp4aEdCj5ssHjRY3UwU7RJmeWd5fi89DBqMaTawg==", "cpu": [ "ppc64" ], @@ -1237,9 +1237,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.32.0.tgz", - "integrity": "sha512-qhlXeV9AqxIyY9/R1h1hBD6eMvQCO34ZmdYvry/K+/MBs6d1nRFLm6BOiITLVI+nFAAB9kUB6sdJRKyVHXnqZw==", + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.1.tgz", + "integrity": "sha512-4uJb9qz7+Z/yUp5RPxDGGGUcoh0PnKF33QyWgEZ3X/GocpWb6Mb+skDh59FEt5d8+Skxqs9mng6Swa6B2AmQZg==", "cpu": [ "riscv64" ], @@ -1251,9 +1251,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.32.0.tgz", - "integrity": "sha512-8ZGN7ExnV0qjXa155Rsfi6H8M4iBBwNLBM9lcVS+4NcSzOFaNqmt7djlox8pN1lWrRPMRRQ8NeDlozIGx3Omsw==", + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.1.tgz", + "integrity": "sha512-QlIo8ndocWBEnfmkYqj8vVtIUpIqJjfqKggjy7IdUncnt8BGixte1wDON7NJEvLg3Kzvqxtbo8tk+U1acYEBlw==", "cpu": [ "s390x" ], @@ -1265,9 +1265,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.32.0.tgz", - "integrity": "sha512-VDzNHtLLI5s7xd/VubyS10mq6TxvZBp+4NRWoW+Hi3tgV05RtVm4qK99+dClwTN1McA6PHwob6DEJ6PlXbY83A==", + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.1.tgz", + "integrity": "sha512-hzpleiKtq14GWjz3ahWvJXgU1DQC9DteiwcsY4HgqUJUGxZThlL66MotdUEK9zEo0PK/2ADeZGM9LIondE302A==", "cpu": [ "x64" ], @@ -1279,9 +1279,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.32.0.tgz", - "integrity": "sha512-qcb9qYDlkxz9DxJo7SDhWxTWV1gFuwznjbTiov289pASxlfGbaOD54mgbs9+z94VwrXtKTu+2RqwlSTbiOqxGg==", + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.1.tgz", + "integrity": "sha512-jqtKrO715hDlvUcEsPn55tZt2TEiBvBtCMkUuU0R6fO/WPT7lO9AONjPbd8II7/asSiNVQHCMn4OLGigSuxVQA==", "cpu": [ "x64" ], @@ -1293,9 +1293,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.32.0.tgz", - "integrity": "sha512-pFDdotFDMXW2AXVbfdUEfidPAk/OtwE/Hd4eYMTNVVaCQ6Yl8et0meDaKNL63L44Haxv4UExpv9ydSf3aSayDg==", + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.1.tgz", + "integrity": "sha512-RnHy7yFf2Wz8Jj1+h8klB93N0NHNHXFhNwAmiy9zJdpY7DE01VbEVtPdrK1kkILeIbHGRJjvfBDBhnxBr8kD4g==", "cpu": [ "arm64" ], @@ -1307,9 +1307,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.32.0.tgz", - "integrity": "sha512-/TG7WfrCAjeRNDvI4+0AAMoHxea/USWhAzf9PVDFHbcqrQ7hMMKp4jZIy4VEjk72AAfN5k4TiSMRXRKf/0akSw==", + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.1.tgz", + "integrity": "sha512-i7aT5HdiZIcd7quhzvwQ2oAuX7zPYrYfkrd1QFfs28Po/i0q6kas/oRrzGlDhAEyug+1UfUtkWdmoVlLJj5x9Q==", "cpu": [ "ia32" ], @@ -1321,9 +1321,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.32.0.tgz", - "integrity": "sha512-5hqO5S3PTEO2E5VjCePxv40gIgyS2KvO7E7/vvC/NbIW4SIRamkMr1hqj+5Y67fbBWv/bQLB6KelBQmXlyCjWA==", + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.1.tgz", + "integrity": "sha512-k3MVFD9Oq+laHkw2N2v7ILgoa9017ZMF/inTtHzyTVZjYs9cSH18sdyAf6spBAJIGwJ5UaC7et2ZH1WCdlhkMw==", "cpu": [ "x64" ], @@ -1530,9 +1530,9 @@ "optional": true }, "node_modules/@vitest/coverage-v8": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.0.4.tgz", - "integrity": "sha512-f0twgRCHgbs24Dp8cLWagzcObXMcuKtAwgxjJV/nnysPAJJk1JiKu/W0gIehZLmkljhJXU/E0/dmuQzsA/4jhA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.0.5.tgz", + "integrity": "sha512-zOOWIsj5fHh3jjGwQg+P+J1FW3s4jBu1Zqga0qW60yutsBtqEqNEJKWYh7cYn1yGD+1bdPsPdC/eL4eVK56xMg==", "dev": true, "license": "MIT", "dependencies": { @@ -1553,8 +1553,8 @@ "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "@vitest/browser": "3.0.4", - "vitest": "3.0.4" + "@vitest/browser": "3.0.5", + "vitest": "3.0.5" }, "peerDependenciesMeta": { "@vitest/browser": { @@ -1588,14 +1588,14 @@ "license": "MIT" }, "node_modules/@vitest/expect": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.4.tgz", - "integrity": "sha512-Nm5kJmYw6P2BxhJPkO3eKKhGYKRsnqJqf+r0yOGRKpEP+bSCBDsjXgiu1/5QFrnPMEgzfC38ZEjvCFgaNBC0Eg==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.5.tgz", + "integrity": "sha512-nNIOqupgZ4v5jWuQx2DSlHLEs7Q4Oh/7AYwNyE+k0UQzG7tSmjPXShUikn1mpNGzYEN2jJbTvLejwShMitovBA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "3.0.4", - "@vitest/utils": "3.0.4", + "@vitest/spy": "3.0.5", + "@vitest/utils": "3.0.5", "chai": "^5.1.2", "tinyrainbow": "^2.0.0" }, @@ -1604,13 +1604,13 @@ } }, "node_modules/@vitest/mocker": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.4.tgz", - "integrity": "sha512-gEef35vKafJlfQbnyOXZ0Gcr9IBUsMTyTLXsEQwuyYAerpHqvXhzdBnDFuHLpFqth3F7b6BaFr4qV/Cs1ULx5A==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.5.tgz", + "integrity": "sha512-CLPNBFBIE7x6aEGbIjaQAX03ZZlBMaWwAjBdMkIf/cAn6xzLTiM3zYqO/WAbieEjsAZir6tO71mzeHZoodThvw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "3.0.4", + "@vitest/spy": "3.0.5", "estree-walker": "^3.0.3", "magic-string": "^0.30.17" }, @@ -1631,9 +1631,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.4.tgz", - "integrity": "sha512-ts0fba+dEhK2aC9PFuZ9LTpULHpY/nd6jhAQ5IMU7Gaj7crPCTdCFfgvXxruRBLFS+MLraicCuFXxISEq8C93g==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.5.tgz", + "integrity": "sha512-CjUtdmpOcm4RVtB+up8r2vVDLR16Mgm/bYdkGFe3Yj/scRfCpbSi2W/BDSDcFK7ohw8UXvjMbOp9H4fByd/cOA==", "dev": true, "license": "MIT", "dependencies": { @@ -1644,13 +1644,13 @@ } }, "node_modules/@vitest/runner": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.4.tgz", - "integrity": "sha512-dKHzTQ7n9sExAcWH/0sh1elVgwc7OJ2lMOBrAm73J7AH6Pf9T12Zh3lNE1TETZaqrWFXtLlx3NVrLRb5hCK+iw==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.5.tgz", + "integrity": "sha512-BAiZFityFexZQi2yN4OX3OkJC6scwRo8EhRB0Z5HIGGgd2q+Nq29LgHU/+ovCtd0fOfXj5ZI6pwdlUmC5bpi8A==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "3.0.4", + "@vitest/utils": "3.0.5", "pathe": "^2.0.2" }, "funding": { @@ -1658,13 +1658,13 @@ } }, "node_modules/@vitest/snapshot": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.4.tgz", - "integrity": "sha512-+p5knMLwIk7lTQkM3NonZ9zBewzVp9EVkVpvNta0/PlFWpiqLaRcF4+33L1it3uRUCh0BGLOaXPPGEjNKfWb4w==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.5.tgz", + "integrity": "sha512-GJPZYcd7v8QNUJ7vRvLDmRwl+a1fGg4T/54lZXe+UOGy47F9yUfE18hRCtXL5aHN/AONu29NGzIXSVFh9K0feA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.0.4", + "@vitest/pretty-format": "3.0.5", "magic-string": "^0.30.17", "pathe": "^2.0.2" }, @@ -1673,9 +1673,9 @@ } }, "node_modules/@vitest/spy": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.4.tgz", - "integrity": "sha512-sXIMF0oauYyUy2hN49VFTYodzEAu744MmGcPR3ZBsPM20G+1/cSW/n1U+3Yu/zHxX2bIDe1oJASOkml+osTU6Q==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.5.tgz", + "integrity": "sha512-5fOzHj0WbUNqPK6blI/8VzZdkBlQLnT25knX0r4dbZI9qoZDf3qAdjoMmDcLG5A83W6oUUFJgUd0EYBc2P5xqg==", "dev": true, "license": "MIT", "dependencies": { @@ -1686,13 +1686,13 @@ } }, "node_modules/@vitest/ui": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-3.0.4.tgz", - "integrity": "sha512-e+s2F9e9FUURkZ5aFIe1Fi3Y8M7UF6gEuShcaV/ur7y/Ldri+1tzWQ1TJq9Vas42NXnXvCAIrU39Z4U2RyET6g==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-3.0.5.tgz", + "integrity": "sha512-gw2noso6WI+2PeMVCZFntdATS6xl9qhQcbhkPQ9sOmx/Xn0f4Bx4KDSbD90jpJPF0l5wOzSoGCmKyVR3W612mg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "3.0.4", + "@vitest/utils": "3.0.5", "fflate": "^0.8.2", "flatted": "^3.3.2", "pathe": "^2.0.2", @@ -1704,17 +1704,17 @@ "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "vitest": "3.0.4" + "vitest": "3.0.5" } }, "node_modules/@vitest/utils": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.4.tgz", - "integrity": "sha512-8BqC1ksYsHtbWH+DfpOAKrFw3jl3Uf9J7yeFh85Pz52IWuh1hBBtyfEbRNNZNjl8H8A5yMLH9/t+k7HIKzQcZQ==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.5.tgz", + "integrity": "sha512-N9AX0NUoUtVwKwy21JtwzaqR5L5R5A99GAbrHfCCXK1lp593i/3AZAXhSP43wRQuxYsflrdzEfXZFo1reR1Nkg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.0.4", + "@vitest/pretty-format": "3.0.5", "loupe": "^3.1.2", "tinyrainbow": "^2.0.0" }, @@ -2628,9 +2628,9 @@ } }, "node_modules/firebase-functions": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/firebase-functions/-/firebase-functions-6.3.0.tgz", - "integrity": "sha512-88dRx3dPYvlxIN64H1lJCFV7wGt0cFL0lmXKzVm+rfnkILC0Qt3rMXp3/J/ojf2StclBwJBu2QZ4MRbNYh7B7g==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/firebase-functions/-/firebase-functions-6.3.1.tgz", + "integrity": "sha512-LTbmsEkSgaOhzTzGUoF7dv906JJJW89o0/spXgnU8gASyR8JLMrCqwV7FnWLso5hyF0fUqNPaEEw/TzLdZMVXw==", "license": "MIT", "dependencies": { "@types/cors": "^2.8.5", @@ -3533,9 +3533,9 @@ "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" }, "node_modules/loupe": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.2.tgz", - "integrity": "sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", + "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==", "dev": true, "license": "MIT" }, @@ -4200,9 +4200,9 @@ } }, "node_modules/rollup": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.32.0.tgz", - "integrity": "sha512-JmrhfQR31Q4AuNBjjAX4s+a/Pu/Q8Q9iwjWBsjRH1q52SPFE2NqRMK6fUZKKnvKO6id+h7JIRf0oYsph53eATg==", + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.1.tgz", + "integrity": "sha512-iYZ/+PcdLYSGfH3S+dGahlW/RWmsqDhLgj1BT9DH/xXJ0ggZN7xkdP9wipPNjjNLczI+fmMLmTB9pye+d2r4GQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4216,25 +4216,25 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.32.0", - "@rollup/rollup-android-arm64": "4.32.0", - "@rollup/rollup-darwin-arm64": "4.32.0", - "@rollup/rollup-darwin-x64": "4.32.0", - "@rollup/rollup-freebsd-arm64": "4.32.0", - "@rollup/rollup-freebsd-x64": "4.32.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.32.0", - "@rollup/rollup-linux-arm-musleabihf": "4.32.0", - "@rollup/rollup-linux-arm64-gnu": "4.32.0", - "@rollup/rollup-linux-arm64-musl": "4.32.0", - "@rollup/rollup-linux-loongarch64-gnu": "4.32.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.32.0", - "@rollup/rollup-linux-riscv64-gnu": "4.32.0", - "@rollup/rollup-linux-s390x-gnu": "4.32.0", - "@rollup/rollup-linux-x64-gnu": "4.32.0", - "@rollup/rollup-linux-x64-musl": "4.32.0", - "@rollup/rollup-win32-arm64-msvc": "4.32.0", - "@rollup/rollup-win32-ia32-msvc": "4.32.0", - "@rollup/rollup-win32-x64-msvc": "4.32.0", + "@rollup/rollup-android-arm-eabi": "4.34.1", + "@rollup/rollup-android-arm64": "4.34.1", + "@rollup/rollup-darwin-arm64": "4.34.1", + "@rollup/rollup-darwin-x64": "4.34.1", + "@rollup/rollup-freebsd-arm64": "4.34.1", + "@rollup/rollup-freebsd-x64": "4.34.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.34.1", + "@rollup/rollup-linux-arm-musleabihf": "4.34.1", + "@rollup/rollup-linux-arm64-gnu": "4.34.1", + "@rollup/rollup-linux-arm64-musl": "4.34.1", + "@rollup/rollup-linux-loongarch64-gnu": "4.34.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.34.1", + "@rollup/rollup-linux-riscv64-gnu": "4.34.1", + "@rollup/rollup-linux-s390x-gnu": "4.34.1", + "@rollup/rollup-linux-x64-gnu": "4.34.1", + "@rollup/rollup-linux-x64-musl": "4.34.1", + "@rollup/rollup-win32-arm64-msvc": "4.34.1", + "@rollup/rollup-win32-ia32-msvc": "4.34.1", + "@rollup/rollup-win32-x64-msvc": "4.34.1", "fsevents": "~2.3.2" } }, @@ -4970,9 +4970,9 @@ } }, "node_modules/vite-node": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.0.4.tgz", - "integrity": "sha512-7JZKEzcYV2Nx3u6rlvN8qdo3QV7Fxyt6hx+CCKz9fbWxdX5IvUOmTWEAxMrWxaiSf7CKGLJQ5rFu8prb/jBjOA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.0.5.tgz", + "integrity": "sha512-02JEJl7SbtwSDJdYS537nU6l+ktdvcREfLksk/NDAqtdKWGqHl+joXzEubHROmS3E6pip+Xgu2tFezMu75jH7A==", "dev": true, "license": "MIT", "dependencies": { @@ -5018,19 +5018,19 @@ "license": "MIT" }, "node_modules/vitest": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.0.4.tgz", - "integrity": "sha512-6XG8oTKy2gnJIFTHP6LD7ExFeNLxiTkK3CfMvT7IfR8IN+BYICCf0lXUQmX7i7JoxUP8QmeP4mTnWXgflu4yjw==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.0.5.tgz", + "integrity": "sha512-4dof+HvqONw9bvsYxtkfUp2uHsTN9bV2CZIi1pWgoFpL1Lld8LA1ka9q/ONSsoScAKG7NVGf2stJTI7XRkXb2Q==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/expect": "3.0.4", - "@vitest/mocker": "3.0.4", - "@vitest/pretty-format": "^3.0.4", - "@vitest/runner": "3.0.4", - "@vitest/snapshot": "3.0.4", - "@vitest/spy": "3.0.4", - "@vitest/utils": "3.0.4", + "@vitest/expect": "3.0.5", + "@vitest/mocker": "3.0.5", + "@vitest/pretty-format": "^3.0.5", + "@vitest/runner": "3.0.5", + "@vitest/snapshot": "3.0.5", + "@vitest/spy": "3.0.5", + "@vitest/utils": "3.0.5", "chai": "^5.1.2", "debug": "^4.4.0", "expect-type": "^1.1.0", @@ -5042,7 +5042,7 @@ "tinypool": "^1.0.2", "tinyrainbow": "^2.0.0", "vite": "^5.0.0 || ^6.0.0", - "vite-node": "3.0.4", + "vite-node": "3.0.5", "why-is-node-running": "^2.3.0" }, "bin": { @@ -5058,8 +5058,8 @@ "@edge-runtime/vm": "*", "@types/debug": "^4.1.12", "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "@vitest/browser": "3.0.4", - "@vitest/ui": "3.0.4", + "@vitest/browser": "3.0.5", + "@vitest/ui": "3.0.5", "happy-dom": "*", "jsdom": "*" }, diff --git a/functions/package.json b/functions/package.json index d6a4c8ee..d67cc67c 100644 --- a/functions/package.json +++ b/functions/package.json @@ -20,7 +20,7 @@ "contrast-color": "^1.0.1", "dms-conversion": "^3.1.3", "firebase-admin": "^13.0.2", - "firebase-functions": "^6.3.0", + "firebase-functions": "^6.3.1", "ky": "^1.7.4", "pdf-lib": "^1.17.1", "pdfmake": "^0.2.18", @@ -28,9 +28,9 @@ "yup": "^1.6.1" }, "devDependencies": { - "@vitest/coverage-v8": "^3.0.4", - "@vitest/ui": "^3.0.4", - "vitest": "^3.0.4" + "@vitest/coverage-v8": "^3.0.5", + "@vitest/ui": "^3.0.5", + "vitest": "^3.0.5" }, "eslintConfig": { "env": { diff --git a/functions/pdfHelpers.js b/functions/pdfHelpers.js index fc2b7cea..73573827 100644 --- a/functions/pdfHelpers.js +++ b/functions/pdfHelpers.js @@ -32,12 +32,16 @@ export const getPdfAssets = async (bucket, metadata, seal) => { try { images = await getBase64Images(bucket, imagePaths); } catch (error) { - logger.error('could not get binary images'); + logger.error('could not get binary images', error, { + structuredData: true, + }); } try { pdfs = await getBinaryPdfs(bucket, pdfPaths); } catch (error) { - logger.error('could not get binary pdfs'); + logger.error('could not get binary pdfs', error, { + structuredData: true, + }); } return { images, pdfs }; diff --git a/index.html b/index.html index 0d65156c..1fb55a01 100644 --- a/index.html +++ b/index.html @@ -1,21 +1,21 @@ - + + + + + + Utah PLSS Corner Points: Provided by the UGRC + + + + + - - - - - Utah PLSS Corner Points: Provided by the UGRC - - - - - - - -
- - - + +
+ + diff --git a/package-lock.json b/package-lock.json index 10aa6b1d..8934a2aa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,8 +15,8 @@ "@hookform/error-message": "^2.0.1", "@hookform/resolvers": "^3.10.0", "@react-hook/window-size": "^3.1.1", - "@tanstack/react-query": "^5.65.0", - "@tanstack/react-query-devtools": "^5.65.0", + "@tanstack/react-query": "^5.66.0", + "@tanstack/react-query-devtools": "^5.66.0", "@ugrc/layer-selector": "^6.2.12", "@ugrc/utilities": "^3.0.0", "@xstate/react": "^5.0.2", @@ -42,46 +42,53 @@ "yup": "^1.6.1" }, "devDependencies": { - "@commitlint/cli": "^19.6.1", - "@commitlint/config-conventional": "^19.6.0", + "@commitlint/cli": "^19.7.1", + "@commitlint/config-conventional": "^19.7.1", + "@eslint/js": "^9.19.0", "@firebase/rules-unit-testing": "^2.0.7", "@hookform/devtools": "^4.3.3", - "@storybook/addon-actions": "^8.5.2", - "@storybook/addon-essentials": "^8.5.2", - "@storybook/addon-interactions": "^8.5.2", - "@storybook/addon-links": "^8.5.2", - "@storybook/react-vite": "^8.5.2", + "@storybook/addon-actions": "^8.5.3", + "@storybook/addon-essentials": "^8.5.3", + "@storybook/addon-interactions": "^8.5.3", + "@storybook/addon-links": "^8.5.3", + "@storybook/react-vite": "^8.5.3", "@types/react": "^18.3.11", "@types/react-dom": "^18.3.0", "@vitejs/plugin-react-swc": "^3.7.2", - "@vitest/coverage-v8": "^3.0.4", - "@vitest/ui": "^3.0.4", + "@vitest/coverage-v8": "^3.0.5", + "@vitest/ui": "^3.0.5", "autoprefixer": "^10.4.20", "commitizen": "^4.3.1", "concurrently": "^9.1.2", "cpy-cli": "^5.0.0", "cross-env": "^7.0.3", "cz-conventional-changelog": "^3.3.0", - "eslint": "^8.57.0", + "eslint": "^9.19.0", "eslint-config-prettier": "^10.0.1", + "eslint-plugin-import": "^2.31.0", "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-prettier": "^5.2.3", "eslint-plugin-react": "^7.37.4", "eslint-plugin-react-hooks": "^5.1.0", "eslint-plugin-react-refresh": "^0.4.18", + "eslint-plugin-storybook": "^0.11.2", "firebase-functions-test": "^3.4.0", - "firebase-tools": "^13.29.2", + "firebase-tools": "^13.29.3", + "globals": "^15.14.0", "husky": "^9.1.7", "lint-staged": "^15.4.3", "postcss": "^8.5.1", "prettier": "^3.4.2", + "prettier-plugin-organize-imports": "^4.1.0", + "prettier-plugin-packagejson": "^2.5.8", "prettier-plugin-tailwindcss": "^0.6.11", - "storybook": "^8.5.2", + "storybook": "^8.5.3", "tailwindcss": "^3.4.17", + "typescript-eslint": "^8.23.0", "vite": "^6.0.11", "vite-plugin-eslint": "^1.8.1", "vite-plugin-package-version": "^1.1.0", - "vitest": "^3.0.4", + "vitest": "^3.0.5", "wait-on": "^8.0.2" }, "engines": { @@ -673,6 +680,16 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/@babel/types": { "version": "7.26.7", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.7.tgz", @@ -709,14 +726,14 @@ } }, "node_modules/@commitlint/cli": { - "version": "19.6.1", - "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-19.6.1.tgz", - "integrity": "sha512-8hcyA6ZoHwWXC76BoC8qVOSr8xHy00LZhZpauiD0iO0VYbVhMnED0da85lTfIULxl7Lj4c6vZgF0Wu/ed1+jlQ==", + "version": "19.7.1", + "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-19.7.1.tgz", + "integrity": "sha512-iObGjR1tE/PfDtDTEfd+tnRkB3/HJzpQqRTyofS2MPPkDn1mp3DBC8SoPDayokfAy+xKhF8+bwRCJO25Nea0YQ==", "dev": true, "license": "MIT", "dependencies": { "@commitlint/format": "^19.5.0", - "@commitlint/lint": "^19.6.0", + "@commitlint/lint": "^19.7.1", "@commitlint/load": "^19.6.1", "@commitlint/read": "^19.5.0", "@commitlint/types": "^19.5.0", @@ -731,9 +748,9 @@ } }, "node_modules/@commitlint/config-conventional": { - "version": "19.6.0", - "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-19.6.0.tgz", - "integrity": "sha512-DJT40iMnTYtBtUfw9ApbsLZFke1zKh6llITVJ+x9mtpHD08gsNXaIRqHTmwTZL3dNX5+WoyK7pCN/5zswvkBCQ==", + "version": "19.7.1", + "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-19.7.1.tgz", + "integrity": "sha512-fsEIF8zgiI/FIWSnykdQNj/0JE4av08MudLTyYHm4FlLWemKoQvPNUYU2M/3tktWcCEyq7aOkDDgtjrmgWFbvg==", "dev": true, "license": "MIT", "dependencies": { @@ -801,9 +818,9 @@ } }, "node_modules/@commitlint/is-ignored": { - "version": "19.6.0", - "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-19.6.0.tgz", - "integrity": "sha512-Ov6iBgxJQFR9koOupDPHvcHU9keFupDgtB3lObdEZDroiG4jj1rzky60fbQozFKVYRTUdrBGICHG0YVmRuAJmw==", + "version": "19.7.1", + "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-19.7.1.tgz", + "integrity": "sha512-3IaOc6HVg2hAoGleRK3r9vL9zZ3XY0rf1RsUf6jdQLuaD46ZHnXBiOPTyQ004C4IvYjSWqJwlh0/u2P73aIE3g==", "dev": true, "license": "MIT", "dependencies": { @@ -815,13 +832,13 @@ } }, "node_modules/@commitlint/lint": { - "version": "19.6.0", - "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-19.6.0.tgz", - "integrity": "sha512-LRo7zDkXtcIrpco9RnfhOKeg8PAnE3oDDoalnrVU/EVaKHYBWYL1DlRR7+3AWn0JiBqD8yKOfetVxJGdEtZ0tg==", + "version": "19.7.1", + "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-19.7.1.tgz", + "integrity": "sha512-LhcPfVjcOcOZA7LEuBBeO00o3MeZa+tWrX9Xyl1r9PMd5FWsEoZI9IgnGqTKZ0lZt5pO3ZlstgnRyY1CJJc9Xg==", "dev": true, "license": "MIT", "dependencies": { - "@commitlint/is-ignored": "^19.6.0", + "@commitlint/is-ignored": "^19.7.1", "@commitlint/parse": "^19.5.0", "@commitlint/rules": "^19.6.0", "@commitlint/types": "^19.5.0" @@ -1587,6 +1604,19 @@ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/@eslint-community/regexpp": { "version": "4.12.1", "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", @@ -1597,17 +1627,45 @@ "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, + "node_modules/@eslint/config-array": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz", + "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.10.0.tgz", + "integrity": "sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==", + "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": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", + "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", "dev": true, "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", + "espree": "^10.0.1", + "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -1615,7 +1673,7 @@ "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -1639,16 +1697,13 @@ } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -1661,27 +1716,38 @@ "dev": true, "license": "MIT" }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "node_modules/@eslint/js": { + "version": "9.19.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.19.0.tgz", + "integrity": "sha512-rbq9/g38qjfqFLOVPvwjIvFFdNziEC5S65jmjPw5r6A//QH+W91akh9irMwjDN8zKUTak6W9EsAv4m/7Wnw0UQ==", "dev": true, - "license": "(MIT OR CC0-1.0)", + "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@eslint/js": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", - "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz", + "integrity": "sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.10.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@esri/arcgis-html-sanitizer": { @@ -2755,20 +2821,42 @@ "react-hook-form": "^7.0.0" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "deprecated": "Use @eslint/config-array instead", + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" }, "engines": { - "node": ">=10.10.0" + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, "node_modules/@humanwhocodes/module-importer": { @@ -2785,13 +2873,19 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead", + "node_modules/@humanwhocodes/retry": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", + "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", "dev": true, - "license": "BSD-3-Clause" + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } }, "node_modules/@icons/material": { "version": "0.2.4", @@ -3100,6 +3194,20 @@ "node": ">=8" } }, + "node_modules/@jest/console/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@jest/core": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", @@ -3149,39 +3257,39 @@ } } }, - "node_modules/@jest/core/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==", + "node_modules/@jest/core/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", "peer": true, "dependencies": { - "color-convert": "^2.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/core/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@jest/core/node_modules/chalk/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", "peer": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/@jest/core/node_modules/pretty-format": { @@ -3200,20 +3308,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/core/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/@jest/core/node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", @@ -3233,6 +3327,20 @@ "node": ">=8" } }, + "node_modules/@jest/core/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@jest/environment": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", @@ -3441,6 +3549,20 @@ "node": ">=0.10.0" } }, + "node_modules/@jest/reporters/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@jest/schemas": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", @@ -3598,6 +3720,20 @@ "node": ">=8" } }, + "node_modules/@jest/transform/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@jest/transform/node_modules/write-file-atomic": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", @@ -3667,6 +3803,20 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@joshwooding/vite-plugin-react-docgen-typescript": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/@joshwooding/vite-plugin-react-docgen-typescript/-/vite-plugin-react-docgen-typescript-0.4.2.tgz", @@ -4223,9 +4373,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.32.0.tgz", - "integrity": "sha512-G2fUQQANtBPsNwiVFg4zKiPQyjVKZCUdQUol53R8E71J7AsheRMV/Yv/nB8giOcOVqP7//eB5xPqieBYZe9bGg==", + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.1.tgz", + "integrity": "sha512-kwctwVlswSEsr4ljpmxKrRKp1eG1v2NAhlzFzDf1x1OdYaMjBYjDCbHkzWm57ZXzTwqn8stMXgROrnMw8dJK3w==", "cpu": [ "arm" ], @@ -4237,9 +4387,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.32.0.tgz", - "integrity": "sha512-qhFwQ+ljoymC+j5lXRv8DlaJYY/+8vyvYmVx074zrLsu5ZGWYsJNLjPPVJJjhZQpyAKUGPydOq9hRLLNvh1s3A==", + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.1.tgz", + "integrity": "sha512-4H5ZtZitBPlbPsTv6HBB8zh1g5d0T8TzCmpndQdqq20Ugle/nroOyDMf9p7f88Gsu8vBLU78/cuh8FYHZqdXxw==", "cpu": [ "arm64" ], @@ -4251,9 +4401,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.32.0.tgz", - "integrity": "sha512-44n/X3lAlWsEY6vF8CzgCx+LQaoqWGN7TzUfbJDiTIOjJm4+L2Yq+r5a8ytQRGyPqgJDs3Rgyo8eVL7n9iW6AQ==", + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.1.tgz", + "integrity": "sha512-f2AJ7Qwx9z25hikXvg+asco8Sfuc5NCLg8rmqQBIOUoWys5sb/ZX9RkMZDPdnnDevXAMJA5AWLnRBmgdXGEUiA==", "cpu": [ "arm64" ], @@ -4265,9 +4415,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.32.0.tgz", - "integrity": "sha512-F9ct0+ZX5Np6+ZDztxiGCIvlCaW87HBdHcozUfsHnj1WCUTBUubAoanhHUfnUHZABlElyRikI0mgcw/qdEm2VQ==", + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.1.tgz", + "integrity": "sha512-+/2JBrRfISCsWE4aEFXxd+7k9nWGXA8+wh7ZUHn/u8UDXOU9LN+QYKKhd57sIn6WRcorOnlqPMYFIwie/OHXWw==", "cpu": [ "x64" ], @@ -4279,9 +4429,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.32.0.tgz", - "integrity": "sha512-JpsGxLBB2EFXBsTLHfkZDsXSpSmKD3VxXCgBQtlPcuAqB8TlqtLcbeMhxXQkCDv1avgwNjF8uEIbq5p+Cee0PA==", + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.1.tgz", + "integrity": "sha512-SUeB0pYjIXwT2vfAMQ7E4ERPq9VGRrPR7Z+S4AMssah5EHIilYqjWQoTn5dkDtuIJUSTs8H+C9dwoEcg3b0sCA==", "cpu": [ "arm64" ], @@ -4293,9 +4443,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.32.0.tgz", - "integrity": "sha512-wegiyBT6rawdpvnD9lmbOpx5Sph+yVZKHbhnSP9MqUEDX08G4UzMU+D87jrazGE7lRSyTRs6NEYHtzfkJ3FjjQ==", + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.1.tgz", + "integrity": "sha512-L3T66wAZiB/ooiPbxz0s6JEX6Sr2+HfgPSK+LMuZkaGZFAFCQAHiP3dbyqovYdNaiUXcl9TlgnIbcsIicAnOZg==", "cpu": [ "x64" ], @@ -4307,9 +4457,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.32.0.tgz", - "integrity": "sha512-3pA7xecItbgOs1A5H58dDvOUEboG5UfpTq3WzAdF54acBbUM+olDJAPkgj1GRJ4ZqE12DZ9/hNS2QZk166v92A==", + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.1.tgz", + "integrity": "sha512-UBXdQ4+ATARuFgsFrQ+tAsKvBi/Hly99aSVdeCUiHV9dRTTpMU7OrM3WXGys1l40wKVNiOl0QYY6cZQJ2xhKlQ==", "cpu": [ "arm" ], @@ -4321,9 +4471,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.32.0.tgz", - "integrity": "sha512-Y7XUZEVISGyge51QbYyYAEHwpGgmRrAxQXO3siyYo2kmaj72USSG8LtlQQgAtlGfxYiOwu+2BdbPjzEpcOpRmQ==", + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.1.tgz", + "integrity": "sha512-m/yfZ25HGdcCSwmopEJm00GP7xAUyVcBPjttGLRAqZ60X/bB4Qn6gP7XTwCIU6bITeKmIhhwZ4AMh2XLro+4+w==", "cpu": [ "arm" ], @@ -4335,9 +4485,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.32.0.tgz", - "integrity": "sha512-r7/OTF5MqeBrZo5omPXcTnjvv1GsrdH8a8RerARvDFiDwFpDVDnJyByYM/nX+mvks8XXsgPUxkwe/ltaX2VH7w==", + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.1.tgz", + "integrity": "sha512-Wy+cUmFuvziNL9qWRRzboNprqSQ/n38orbjRvd6byYWridp5TJ3CD+0+HUsbcWVSNz9bxkDUkyASGP0zS7GAvg==", "cpu": [ "arm64" ], @@ -4349,9 +4499,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.32.0.tgz", - "integrity": "sha512-HJbifC9vex9NqnlodV2BHVFNuzKL5OnsV2dvTw6e1dpZKkNjPG6WUq+nhEYV6Hv2Bv++BXkwcyoGlXnPrjAKXw==", + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.1.tgz", + "integrity": "sha512-CQ3MAGgiFmQW5XJX5W3wnxOBxKwFlUAgSXFA2SwgVRjrIiVt5LHfcQLeNSHKq5OEZwv+VCBwlD1+YKCjDG8cpg==", "cpu": [ "arm64" ], @@ -4363,9 +4513,9 @@ ] }, "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.32.0.tgz", - "integrity": "sha512-VAEzZTD63YglFlWwRj3taofmkV1V3xhebDXffon7msNz4b14xKsz7utO6F8F4cqt8K/ktTl9rm88yryvDpsfOw==", + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.1.tgz", + "integrity": "sha512-rSzb1TsY4lSwH811cYC3OC2O2mzNMhM13vcnA7/0T6Mtreqr3/qs6WMDriMRs8yvHDI54qxHgOk8EV5YRAHFbw==", "cpu": [ "loong64" ], @@ -4377,9 +4527,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.32.0.tgz", - "integrity": "sha512-Sts5DST1jXAc9YH/iik1C9QRsLcCoOScf3dfbY5i4kH9RJpKxiTBXqm7qU5O6zTXBTEZry69bGszr3SMgYmMcQ==", + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.1.tgz", + "integrity": "sha512-fwr0n6NS0pG3QxxlqVYpfiY64Fd1Dqd8Cecje4ILAV01ROMp4aEdCj5ssHjRY3UwU7RJmeWd5fi89DBqMaTawg==", "cpu": [ "ppc64" ], @@ -4391,9 +4541,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.32.0.tgz", - "integrity": "sha512-qhlXeV9AqxIyY9/R1h1hBD6eMvQCO34ZmdYvry/K+/MBs6d1nRFLm6BOiITLVI+nFAAB9kUB6sdJRKyVHXnqZw==", + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.1.tgz", + "integrity": "sha512-4uJb9qz7+Z/yUp5RPxDGGGUcoh0PnKF33QyWgEZ3X/GocpWb6Mb+skDh59FEt5d8+Skxqs9mng6Swa6B2AmQZg==", "cpu": [ "riscv64" ], @@ -4405,9 +4555,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.32.0.tgz", - "integrity": "sha512-8ZGN7ExnV0qjXa155Rsfi6H8M4iBBwNLBM9lcVS+4NcSzOFaNqmt7djlox8pN1lWrRPMRRQ8NeDlozIGx3Omsw==", + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.1.tgz", + "integrity": "sha512-QlIo8ndocWBEnfmkYqj8vVtIUpIqJjfqKggjy7IdUncnt8BGixte1wDON7NJEvLg3Kzvqxtbo8tk+U1acYEBlw==", "cpu": [ "s390x" ], @@ -4419,9 +4569,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.32.0.tgz", - "integrity": "sha512-VDzNHtLLI5s7xd/VubyS10mq6TxvZBp+4NRWoW+Hi3tgV05RtVm4qK99+dClwTN1McA6PHwob6DEJ6PlXbY83A==", + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.1.tgz", + "integrity": "sha512-hzpleiKtq14GWjz3ahWvJXgU1DQC9DteiwcsY4HgqUJUGxZThlL66MotdUEK9zEo0PK/2ADeZGM9LIondE302A==", "cpu": [ "x64" ], @@ -4433,9 +4583,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.32.0.tgz", - "integrity": "sha512-qcb9qYDlkxz9DxJo7SDhWxTWV1gFuwznjbTiov289pASxlfGbaOD54mgbs9+z94VwrXtKTu+2RqwlSTbiOqxGg==", + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.1.tgz", + "integrity": "sha512-jqtKrO715hDlvUcEsPn55tZt2TEiBvBtCMkUuU0R6fO/WPT7lO9AONjPbd8II7/asSiNVQHCMn4OLGigSuxVQA==", "cpu": [ "x64" ], @@ -4447,9 +4597,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.32.0.tgz", - "integrity": "sha512-pFDdotFDMXW2AXVbfdUEfidPAk/OtwE/Hd4eYMTNVVaCQ6Yl8et0meDaKNL63L44Haxv4UExpv9ydSf3aSayDg==", + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.1.tgz", + "integrity": "sha512-RnHy7yFf2Wz8Jj1+h8klB93N0NHNHXFhNwAmiy9zJdpY7DE01VbEVtPdrK1kkILeIbHGRJjvfBDBhnxBr8kD4g==", "cpu": [ "arm64" ], @@ -4461,9 +4611,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.32.0.tgz", - "integrity": "sha512-/TG7WfrCAjeRNDvI4+0AAMoHxea/USWhAzf9PVDFHbcqrQ7hMMKp4jZIy4VEjk72AAfN5k4TiSMRXRKf/0akSw==", + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.1.tgz", + "integrity": "sha512-i7aT5HdiZIcd7quhzvwQ2oAuX7zPYrYfkrd1QFfs28Po/i0q6kas/oRrzGlDhAEyug+1UfUtkWdmoVlLJj5x9Q==", "cpu": [ "ia32" ], @@ -4475,9 +4625,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.32.0.tgz", - "integrity": "sha512-5hqO5S3PTEO2E5VjCePxv40gIgyS2KvO7E7/vvC/NbIW4SIRamkMr1hqj+5Y67fbBWv/bQLB6KelBQmXlyCjWA==", + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.1.tgz", + "integrity": "sha512-k3MVFD9Oq+laHkw2N2v7ILgoa9017ZMF/inTtHzyTVZjYs9cSH18sdyAf6spBAJIGwJ5UaC7et2ZH1WCdlhkMw==", "cpu": [ "x64" ], @@ -4488,6 +4638,13 @@ "win32" ] }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, "node_modules/@sideway/address": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", @@ -4569,9 +4726,9 @@ } }, "node_modules/@storybook/addon-actions": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.5.2.tgz", - "integrity": "sha512-g0gLesVSFgstUq5QphsLeC1vEdwNHgqo2TE0m+STM47832xbxBwmK6uvBeqi416xZvnt1TTKaaBr4uCRRQ64Ww==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.5.3.tgz", + "integrity": "sha512-7a+SD4EZdZocm+NG1Kx4yV6Aw7+YUlRIyGvKcxsGtYMOLaqrUewApqveXF83+FbYWMoezXcoZCLQFROtS/Z6Fw==", "dev": true, "license": "MIT", "dependencies": { @@ -4586,7 +4743,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.5.2" + "storybook": "^8.5.3" } }, "node_modules/@storybook/addon-actions/node_modules/uuid": { @@ -4604,9 +4761,9 @@ } }, "node_modules/@storybook/addon-backgrounds": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-8.5.2.tgz", - "integrity": "sha512-l9WkI4QHfINeFQkW9K0joaM7WweKktwIIyUPEvyoupHT4n9ccJHAlWjH4SBmzwI1j1Zt0G3t+bq8mVk/YK6Fsg==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-8.5.3.tgz", + "integrity": "sha512-sZcw8/C/HIIgbRBY+0ZYTBc5Py8xvw3bt6lzSVQEXA2aygfJpO/jiQJlmOXTmK3g5F5pjFKaaCodfXT7V/9mzw==", "dev": true, "license": "MIT", "dependencies": { @@ -4619,13 +4776,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.5.2" + "storybook": "^8.5.3" } }, "node_modules/@storybook/addon-controls": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.5.2.tgz", - "integrity": "sha512-wkzw2vRff4zkzdvC/GOlB2PlV0i973u8igSLeg34TWNEAa4bipwVHnFfIojRuP9eN1bZL/0tjuU5pKnbTqH7aQ==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.5.3.tgz", + "integrity": "sha512-A4UVQhPyC7FvV+fM50xvEZO26/2uE41Ns0TN0qq7U5EH0Dlj43Salgay6qT8fve6XAI4SgVjkujPVCSbLg/yVQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4638,20 +4795,20 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.5.2" + "storybook": "^8.5.3" } }, "node_modules/@storybook/addon-docs": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.5.2.tgz", - "integrity": "sha512-pRLJ/Qb/3XHpjS7ZAMaOZYtqxOuI8wPxVKYQ6n5rfMSj2jFwt5tdDsEJdhj2t5lsY8HrzEZi8ExuW5I5RoUoIQ==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.5.3.tgz", + "integrity": "sha512-XVcQlHX963nuoeRkb7qQg89t/9CThdT46UV7jX3FFn08NEMhmDEa+4iVA4l+4xNgJ+Av6uX+u6yRGnM/910mLg==", "dev": true, "license": "MIT", "dependencies": { "@mdx-js/react": "^3.0.0", - "@storybook/blocks": "8.5.2", - "@storybook/csf-plugin": "8.5.2", - "@storybook/react-dom-shim": "8.5.2", + "@storybook/blocks": "8.5.3", + "@storybook/csf-plugin": "8.5.3", + "@storybook/react-dom-shim": "8.5.3", "react": "^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", "ts-dedent": "^2.0.0" @@ -4661,25 +4818,25 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.5.2" + "storybook": "^8.5.3" } }, "node_modules/@storybook/addon-essentials": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.5.2.tgz", - "integrity": "sha512-MfojJKxDg0bnjOE0MfLSaPweAud1Esjaf1D9M8EYnpeFnKGZApcGJNRpHCDiHrS5BMr8hHa58RDVc7ObFTI4Dw==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.5.3.tgz", + "integrity": "sha512-0zbEWQQZCiYRUxMo6FrfwQER/vi+B8mCLLivdjbSVSvZsjmlpcaBA5uBjbsXfIRcedHlou4QiJXn+nR8thDlKA==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/addon-actions": "8.5.2", - "@storybook/addon-backgrounds": "8.5.2", - "@storybook/addon-controls": "8.5.2", - "@storybook/addon-docs": "8.5.2", - "@storybook/addon-highlight": "8.5.2", - "@storybook/addon-measure": "8.5.2", - "@storybook/addon-outline": "8.5.2", - "@storybook/addon-toolbars": "8.5.2", - "@storybook/addon-viewport": "8.5.2", + "@storybook/addon-actions": "8.5.3", + "@storybook/addon-backgrounds": "8.5.3", + "@storybook/addon-controls": "8.5.3", + "@storybook/addon-docs": "8.5.3", + "@storybook/addon-highlight": "8.5.3", + "@storybook/addon-measure": "8.5.3", + "@storybook/addon-outline": "8.5.3", + "@storybook/addon-toolbars": "8.5.3", + "@storybook/addon-viewport": "8.5.3", "ts-dedent": "^2.0.0" }, "funding": { @@ -4687,13 +4844,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.5.2" + "storybook": "^8.5.3" } }, "node_modules/@storybook/addon-highlight": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.5.2.tgz", - "integrity": "sha512-QjJfY+8e1bi6FeGfVlgxzv/I8DUyC83lZq8zfTY7nDUCVdmKi8VzmW0KgDo5PaEOFKs8x6LKJa+s5O0gFQaJMw==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.5.3.tgz", + "integrity": "sha512-xhsr3W6KTvlOIIe+8JE9/sEOAgkW0yjMZzs47A+bWcxKwcFhAUgVLbAgEzjJ0u248rjGKlCJ2pswWefO+ZKJeg==", "dev": true, "license": "MIT", "dependencies": { @@ -4704,19 +4861,19 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.5.2" + "storybook": "^8.5.3" } }, "node_modules/@storybook/addon-interactions": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.5.2.tgz", - "integrity": "sha512-Gn9Egk2OS0BkkHd671Y0pIqBr4noAOLUfnpxhHE8r0Tt7FmJFeVSN+dqK7hQeUmKL5jdSY25FTYROg65JmtGOA==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.5.3.tgz", + "integrity": "sha512-nQuP65iFGgqfVp/O8NxNDUwLTWmQBW4bofUFaT4wzYn7Jk9zobOZYtgQvdqBZtNzBDYmLrfrCutEBj5jVPRyuQ==", "dev": true, "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.5.2", - "@storybook/test": "8.5.2", + "@storybook/instrumenter": "8.5.3", + "@storybook/test": "8.5.3", "polished": "^4.2.2", "ts-dedent": "^2.2.0" }, @@ -4725,13 +4882,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.5.2" + "storybook": "^8.5.3" } }, "node_modules/@storybook/addon-links": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-8.5.2.tgz", - "integrity": "sha512-eDKOQoAKKUQo0JqeLNzMLu6fm1s3oxwZ6O+rAWS6n5bsrjZS2Ul8esKkRriFVwHtDtqx99wneqOscS8IzE/ENw==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-8.5.3.tgz", + "integrity": "sha512-MRhIif4tCoIucLgGX14dI7yptF9bYH2UaJasyywshzQZKAEjOfX19Aw5fwp2zJt6kukAF6mUxMtWKcQMH2XOmw==", "dev": true, "license": "MIT", "dependencies": { @@ -4745,7 +4902,7 @@ }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "storybook": "^8.5.2" + "storybook": "^8.5.3" }, "peerDependenciesMeta": { "react": { @@ -4754,9 +4911,9 @@ } }, "node_modules/@storybook/addon-measure": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.5.2.tgz", - "integrity": "sha512-g7Kvrx8dqzeYWetpWYVVu4HaRzLAZVlOAlZYNfCH/aJHcFKp/p5zhPXnZh8aorxeCLHW1QSKcliaA4BNPEvTeg==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.5.3.tgz", + "integrity": "sha512-unb0bRsnISXWiCBBECxNUUdM12hHpV+1uJUu5OJHtKb26YpiQvewDFLTLjuZJ3NIAfw+F5232Q7K88AWJV6weg==", "dev": true, "license": "MIT", "dependencies": { @@ -4768,13 +4925,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.5.2" + "storybook": "^8.5.3" } }, "node_modules/@storybook/addon-outline": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.5.2.tgz", - "integrity": "sha512-laMVLT1xluSqMa2mMzmS1kdKcjX0HI9Fw+7pM3r4drtGWtxpyBT32YFqKfWFIBhcd364ti2tDUz9FlygGQ1rKw==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.5.3.tgz", + "integrity": "sha512-e1MkGN6XVdeRh2oUKGdqEDyAo2TD/47ashAAxw8DEiLRWgBMbQ+KBVH4EOG+dn5395jxh7YgRLJn/miqNnfN5g==", "dev": true, "license": "MIT", "dependencies": { @@ -4786,13 +4943,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.5.2" + "storybook": "^8.5.3" } }, "node_modules/@storybook/addon-toolbars": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.5.2.tgz", - "integrity": "sha512-gHQtVCiq7HRqdYQLOmX8nhtV1Lqz4tOCj4BVodwwf8fUcHyNor+2FvGlQjngV2pIeCtxiM/qmG63UpTBp57ZMA==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.5.3.tgz", + "integrity": "sha512-AWr9Per9WDrbFtNlbVlj6CiEwKOvOyoBt3bCuMHuRfTdqKwkwInEtyUi4//T8U+c1qs7KJBpsWV2vhIuc5sODg==", "dev": true, "license": "MIT", "funding": { @@ -4800,13 +4957,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.5.2" + "storybook": "^8.5.3" } }, "node_modules/@storybook/addon-viewport": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.5.2.tgz", - "integrity": "sha512-W+7nrMQmxHcUNGsXjmb/fak1mD0a5vf4y1hBhSM7/131t8KBsvEu4ral8LTUhc4ZzuU1eIUM0Qth7SjqHqm5bA==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.5.3.tgz", + "integrity": "sha512-OkLJ2B8+PiOEAd2HtRG6XewVjtw6AkBMgoSbfKCMr6TWSbuKrOeiwIMqqieAAPVNfsOQ8hTK6JGhr/KPRCKgRA==", "dev": true, "license": "MIT", "dependencies": { @@ -4817,13 +4974,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.5.2" + "storybook": "^8.5.3" } }, "node_modules/@storybook/blocks": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.5.2.tgz", - "integrity": "sha512-C6Bz/YTG5ZuyAzglqgqozYUWaS39j1PnkVuMNots6S3Fp8ZJ6iZOlQ+rpumiuvnbfD5rkEZG+614RWNyNlFy7g==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.5.3.tgz", + "integrity": "sha512-a/PpHFmeBtVB9Q/6cNAnqfeCqMowsrI8nGka0Nl7BB3x1eJnS3I1Qo3Skht0LBEsmXOgXk4dwWxpeQL3qHMRkw==", "dev": true, "license": "MIT", "dependencies": { @@ -4838,7 +4995,7 @@ "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "storybook": "^8.5.2" + "storybook": "^8.5.3" }, "peerDependenciesMeta": { "react": { @@ -4850,13 +5007,13 @@ } }, "node_modules/@storybook/builder-vite": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-8.5.2.tgz", - "integrity": "sha512-5YWCHmWtZ6oBEqpcGvAmBXVfeX+zssIGWE/UUUnjkmlXO7tHvFccikOLV7/p5VCHH21AbXN8F6mnptEsMPbqqg==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-8.5.3.tgz", + "integrity": "sha512-MxriwzZSVidaXj3kpH/jCOJZUdF7ofcvxmvrMrNehH9UvXIGM6b73CBC5ucnptbnQ7qxYKdAZiMhQbPHZ9cqOQ==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/csf-plugin": "8.5.2", + "@storybook/csf-plugin": "8.5.3", "browser-assert": "^1.2.1", "ts-dedent": "^2.0.0" }, @@ -4865,14 +5022,14 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.5.2", + "storybook": "^8.5.3", "vite": "^4.0.0 || ^5.0.0 || ^6.0.0" } }, "node_modules/@storybook/components": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.5.2.tgz", - "integrity": "sha512-o5vNN30sGLTJBeGk5SKyekR4RfTpBTGs2LDjXGAmpl2MRhzd62ix8g+KIXSR0rQ55TCvKUl5VR2i99ttlRcEKw==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.5.3.tgz", + "integrity": "sha512-iC9VbpM8Equ8wXI2syBzov+8wys4sGYW7Xfz67LdSVbCMhsH9FRtvgbDppJQC/ZDCofg4sTAHhWpDV/KAQ385A==", "dev": true, "license": "MIT", "funding": { @@ -4884,9 +5041,9 @@ } }, "node_modules/@storybook/core": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.5.2.tgz", - "integrity": "sha512-rCOpXZo2XbdKVnZiv8oC9FId/gLkStpKGGL7hhdg/RyjcyUyTfhsvaf7LXKZH2A0n/UpwFxhF3idRfhgc1XiSg==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.5.3.tgz", + "integrity": "sha512-ZLlr2pltbj/hmC54lggJTnh09FCAJR62lIdiXNwa+V+/eJz0CfD8tfGmZGKPSmaQeZBpMwAOeRM97k2oLPF+0w==", "dev": true, "license": "MIT", "dependencies": { @@ -4948,9 +5105,9 @@ } }, "node_modules/@storybook/csf-plugin": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.5.2.tgz", - "integrity": "sha512-EEQ3Vc9qIUbLH8tunzN/GSoyP3zPpNPKegZooYQbgVqA582Pel4Jnpn4uxGaOWtFCLhXMETV05X/7chGZtEujA==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.5.3.tgz", + "integrity": "sha512-u5oyXTFg3KIy4h9qoNyiCG2mJF3OpkLO/AcM4lMAwQVnBvz8pwITvr4jDZByVjGmcIbgKJQnWX+BwdK2NI4yAw==", "dev": true, "license": "MIT", "dependencies": { @@ -4961,7 +5118,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.5.2" + "storybook": "^8.5.3" } }, "node_modules/@storybook/csf/node_modules/type-fest": { @@ -4999,9 +5156,9 @@ } }, "node_modules/@storybook/instrumenter": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.5.2.tgz", - "integrity": "sha512-BbaUw9GXVzRg3Km95t2mRu4W6C1n1erjzll5maBaVe2+lV9MbCvBcdYwGUgjFNlQ/ETgq6vLfLOEtziycq/B6g==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.5.3.tgz", + "integrity": "sha512-pxaTbGeju8MkwouIiaWX5DMWtpRruxqig8W3nZPOvzoSCCbQY+sLMQoyXxFlpGxLBjcvXivkL7AMVBKps5sFEQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5013,13 +5170,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.5.2" + "storybook": "^8.5.3" } }, "node_modules/@storybook/manager-api": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.5.2.tgz", - "integrity": "sha512-Cn+oINA6BOO2GmGHinGsOWnEpoBnurlZ9ekMq7H/c1SYMvQWNg5RlELyrhsnyhNd83fqFZy9Asb0RXI8oqz7DQ==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.5.3.tgz", + "integrity": "sha512-JtfuMgQpKIPU0ARn1jNPce8FmknpM0Ap0mppWl+KGAWWGadJPDaX/nrY/19dT1kRgIhyOnbX6tgJxII4E9dE5w==", "dev": true, "license": "MIT", "funding": { @@ -5031,9 +5188,9 @@ } }, "node_modules/@storybook/preview-api": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.5.2.tgz", - "integrity": "sha512-AOOaBjwnkFU40Fi68fvAnK0gMWPz6o/AmH44yDGsHgbI07UgqxLBKCTpjCGPlyQd5ezEjmGwwFTmcmq5dG8DKA==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.5.3.tgz", + "integrity": "sha512-dUsuXW+KgDg4tWXOB6dk5j5gwwRUzbPvicHAY9mzbpSVScbWXuE5T/S/9hHlbtfkhFroWQgPx2eB8z3rai+7RQ==", "dev": true, "license": "MIT", "funding": { @@ -5045,18 +5202,18 @@ } }, "node_modules/@storybook/react": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.5.2.tgz", - "integrity": "sha512-hWzw9ZllfzsaBJdAoEqPQ2GdVNV4c7PkvIWM6z67epaOHqsdsKScbTMe+YAvFMPtLtOO8KblIrtU5PeD4KyMgw==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.5.3.tgz", + "integrity": "sha512-QIdBSjsnwV/J919i4Fi7DlwxDKHU815t0c4B/w2KTMtKKBkk+Bge+vgVi0/lNqD3eF4w3yjVWGbkzUQZ63yiPg==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/components": "8.5.2", + "@storybook/components": "8.5.3", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "8.5.2", - "@storybook/preview-api": "8.5.2", - "@storybook/react-dom-shim": "8.5.2", - "@storybook/theming": "8.5.2" + "@storybook/manager-api": "8.5.3", + "@storybook/preview-api": "8.5.3", + "@storybook/react-dom-shim": "8.5.3", + "@storybook/theming": "8.5.3" }, "engines": { "node": ">=18.0.0" @@ -5066,10 +5223,10 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "@storybook/test": "8.5.2", + "@storybook/test": "8.5.3", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "storybook": "^8.5.2", + "storybook": "^8.5.3", "typescript": ">= 4.2.x" }, "peerDependenciesMeta": { @@ -5082,9 +5239,9 @@ } }, "node_modules/@storybook/react-dom-shim": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.5.2.tgz", - "integrity": "sha512-lt7XoaeWI8iPlWnWzIm/Wam9TpRFhlqP0KZJoKwDyHiCByqkeMrw5MJREyWq626nf34bOW8D6vkuyTzCHGTxKg==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.5.3.tgz", + "integrity": "sha512-kNIGk6mpXW3Wy+uS9pH9b9w/54EPJnH+QXA6MX4EQgmxhMQlGlS/l/YZp+3jsVQW4YgTmqe740qB+ccJAKZxBQ==", "dev": true, "license": "MIT", "funding": { @@ -5094,20 +5251,20 @@ "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "storybook": "^8.5.2" + "storybook": "^8.5.3" } }, "node_modules/@storybook/react-vite": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@storybook/react-vite/-/react-vite-8.5.2.tgz", - "integrity": "sha512-MHsBuW23Qx6Kc55vwZ3zg6a5rkzReIcEPm38gm3vuf9vuvUsnXgvYRcu8xg3z8GakpsQNSZZJ/1sH48l0XvsSQ==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@storybook/react-vite/-/react-vite-8.5.3.tgz", + "integrity": "sha512-F30u2Xf+X774wrfQzWgg7vRVJmmJFbBVGdULsAGonkdy1FUeYo7puPiD2Qg6hBYNDyIyxDXVOukkOvTlG7IBRg==", "dev": true, "license": "MIT", "dependencies": { "@joshwooding/vite-plugin-react-docgen-typescript": "0.4.2", "@rollup/pluginutils": "^5.0.2", - "@storybook/builder-vite": "8.5.2", - "@storybook/react": "8.5.2", + "@storybook/builder-vite": "8.5.3", + "@storybook/react": "8.5.3", "find-up": "^5.0.0", "magic-string": "^0.30.0", "react-docgen": "^7.0.0", @@ -5122,10 +5279,10 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "@storybook/test": "8.5.2", + "@storybook/test": "8.5.3", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "storybook": "^8.5.2", + "storybook": "^8.5.3", "vite": "^4.0.0 || ^5.0.0 || ^6.0.0" }, "peerDependenciesMeta": { @@ -5194,15 +5351,15 @@ } }, "node_modules/@storybook/test": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.5.2.tgz", - "integrity": "sha512-F5WfD75m25ZRS19cSxCzHWJ/rH8jWwIjhBlhU+UW+5xjnTS1cJuC1yPT/5Jw0/0Aj9zG1atyfBUYnNHYtsBDYQ==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.5.3.tgz", + "integrity": "sha512-2smoDbtU6Qh4yk0uD18qGfW6ll7lZBzKlF58Ha1CgWR4o+jpeeTQcfDLH9gG6sNrpojF7AVzMh/aN9BDHD+Chg==", "dev": true, "license": "MIT", "dependencies": { "@storybook/csf": "0.1.12", "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.5.2", + "@storybook/instrumenter": "8.5.3", "@testing-library/dom": "10.4.0", "@testing-library/jest-dom": "6.5.0", "@testing-library/user-event": "14.5.2", @@ -5214,13 +5371,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.5.2" + "storybook": "^8.5.3" } }, "node_modules/@storybook/theming": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.5.2.tgz", - "integrity": "sha512-vro8vJx16rIE0UehawEZbxFFA4/VGYS20PMKP6Y6Fpsce0t2/cF/U9qg3jOzVb/XDwfx+ne3/V+8rjfWx8wwJw==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.5.3.tgz", + "integrity": "sha512-Jvzw+gT1HNarkJo21WZBq5pU89qDN8u/pD3woSh/1c2h5RS6UylWjQHotPFpcBIQiUSrDFtvCU9xugJm4MD0+w==", "dev": true, "license": "MIT", "funding": { @@ -5232,9 +5389,9 @@ } }, "node_modules/@swc/core": { - "version": "1.10.11", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.10.11.tgz", - "integrity": "sha512-3zGU5y3S20cAwot9ZcsxVFNsSVaptG+dKdmAxORSE3EX7ixe1Xn5kUwLlgIsM4qrwTUWCJDLNhRS+2HLFivcDg==", + "version": "1.10.14", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.10.14.tgz", + "integrity": "sha512-WSrnE6JRnH20ZYjOOgSS4aOaPv9gxlkI2KRkN24kagbZnPZMnN8bZZyzw1rrLvwgpuRGv17Uz+hflosbR+SP6w==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", @@ -5250,16 +5407,16 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.10.11", - "@swc/core-darwin-x64": "1.10.11", - "@swc/core-linux-arm-gnueabihf": "1.10.11", - "@swc/core-linux-arm64-gnu": "1.10.11", - "@swc/core-linux-arm64-musl": "1.10.11", - "@swc/core-linux-x64-gnu": "1.10.11", - "@swc/core-linux-x64-musl": "1.10.11", - "@swc/core-win32-arm64-msvc": "1.10.11", - "@swc/core-win32-ia32-msvc": "1.10.11", - "@swc/core-win32-x64-msvc": "1.10.11" + "@swc/core-darwin-arm64": "1.10.14", + "@swc/core-darwin-x64": "1.10.14", + "@swc/core-linux-arm-gnueabihf": "1.10.14", + "@swc/core-linux-arm64-gnu": "1.10.14", + "@swc/core-linux-arm64-musl": "1.10.14", + "@swc/core-linux-x64-gnu": "1.10.14", + "@swc/core-linux-x64-musl": "1.10.14", + "@swc/core-win32-arm64-msvc": "1.10.14", + "@swc/core-win32-ia32-msvc": "1.10.14", + "@swc/core-win32-x64-msvc": "1.10.14" }, "peerDependencies": { "@swc/helpers": "*" @@ -5271,9 +5428,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.10.11", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.10.11.tgz", - "integrity": "sha512-ZpgEaNcx2e5D+Pd0yZGVbpSrEDOEubn7r2JXoNBf0O85lPjUm3HDzGRfLlV/MwxRPAkwm93eLP4l7gYnc50l3g==", + "version": "1.10.14", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.10.14.tgz", + "integrity": "sha512-Dh4VyrhDDb05tdRmqJ/MucOPMTnrB4pRJol18HVyLlqu1HOT5EzonUniNTCdQbUXjgdv5UVJSTE1lYTzrp+myA==", "cpu": [ "arm64" ], @@ -5288,9 +5445,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.10.11", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.10.11.tgz", - "integrity": "sha512-szObinnq2o7spXMDU5pdunmUeLrfV67Q77rV+DyojAiGJI1RSbEQotLOk+ONOLpoapwGUxOijFG4IuX1xiwQ2g==", + "version": "1.10.14", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.10.14.tgz", + "integrity": "sha512-KpzotL/I0O12RE3tF8NmQErINv0cQe/0mnN/Q50ESFzB5kU6bLgp2HMnnwDTm/XEZZRJCNe0oc9WJ5rKbAJFRQ==", "cpu": [ "x64" ], @@ -5305,9 +5462,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.10.11", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.10.11.tgz", - "integrity": "sha512-tVE8aXQwd8JUB9fOGLawFJa76nrpvp3dvErjozMmWSKWqtoeO7HV83aOrVtc8G66cj4Vq7FjTE9pOJeV1FbKRw==", + "version": "1.10.14", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.10.14.tgz", + "integrity": "sha512-20yRXZjMJVz1wp1TcscKiGTVXistG+saIaxOmxSNQia1Qun3hSWLL+u6+5kXbfYGr7R2N6kqSwtZbIfJI25r9Q==", "cpu": [ "arm" ], @@ -5322,9 +5479,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.10.11", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.10.11.tgz", - "integrity": "sha512-geFkENU5GMEKO7FqHOaw9HVlpQEW10nICoM6ubFc0hXBv8dwRXU4vQbh9s/isLSFRftw1m4jEEWixAnXSw8bxQ==", + "version": "1.10.14", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.10.14.tgz", + "integrity": "sha512-Gy7cGrNkiMfPxQyLGxdgXPwyWzNzbHuWycJFcoKBihxZKZIW8hkPBttkGivuLC+0qOgsV2/U+S7tlvAju7FtmQ==", "cpu": [ "arm64" ], @@ -5339,9 +5496,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.10.11", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.10.11.tgz", - "integrity": "sha512-2mMscXe/ivq8c4tO3eQSbQDFBvagMJGlalXCspn0DgDImLYTEnt/8KHMUMGVfh0gMJTZ9q4FlGLo7mlnbx99MQ==", + "version": "1.10.14", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.10.14.tgz", + "integrity": "sha512-+oYVqJvFw62InZ8PIy1rBACJPC2WTe4vbVb9kM1jJj2D7dKLm9acnnYIVIDsM5Wo7Uab8RvPHXVbs19IBurzuw==", "cpu": [ "arm64" ], @@ -5356,9 +5513,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.10.11", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.10.11.tgz", - "integrity": "sha512-eu2apgDbC4xwsigpl6LS+iyw6a3mL6kB4I+6PZMbFF2nIb1Dh7RGnu70Ai6mMn1o80fTmRSKsCT3CKMfVdeNFg==", + "version": "1.10.14", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.10.14.tgz", + "integrity": "sha512-OmEbVEKQFLQVHwo4EJl9osmlulURy46k232Opfpn/1ji0t2KcNCci3POsnfMuoZjLkGJv8vGNJdPQxX+CP+wSA==", "cpu": [ "x64" ], @@ -5373,9 +5530,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.10.11", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.10.11.tgz", - "integrity": "sha512-0n+wPWpDigwqRay4IL2JIvAqSKCXv6nKxPig9M7+epAlEQlqX+8Oq/Ap3yHtuhjNPb7HmnqNJLCXT1Wx+BZo0w==", + "version": "1.10.14", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.10.14.tgz", + "integrity": "sha512-OZW+Icm8DMPqHbhdxplkuG8qrNnPk5i7xJOZWYi1y5bTjgGFI4nEzrsmmeHKMdQTaWwsFrm3uK1rlyQ48MmXmg==", "cpu": [ "x64" ], @@ -5390,9 +5547,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.10.11", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.10.11.tgz", - "integrity": "sha512-7+bMSIoqcbXKosIVd314YjckDRPneA4OpG1cb3/GrkQTEDXmWT3pFBBlJf82hzJfw7b6lfv6rDVEFBX7/PJoLA==", + "version": "1.10.14", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.10.14.tgz", + "integrity": "sha512-sTvc+xrDQXy3HXZFtTEClY35Efvuc3D+busYm0+rb1+Thau4HLRY9WP+sOKeGwH9/16rzfzYEqD7Ds8A9ykrHw==", "cpu": [ "arm64" ], @@ -5407,9 +5564,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.10.11", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.10.11.tgz", - "integrity": "sha512-6hkLl4+3KjP/OFTryWxpW7YFN+w4R689TSPwiII4fFgsFNupyEmLWWakKfkGgV2JVA59L4Oi02elHy/O1sbgtw==", + "version": "1.10.14", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.10.14.tgz", + "integrity": "sha512-j2iQ4y9GWTKtES5eMU0sDsFdYni7IxME7ejFej25Tv3Fq4B+U9tgtYWlJwh1858nIWDXelHiKcSh/UICAyVMdQ==", "cpu": [ "ia32" ], @@ -5424,9 +5581,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.10.11", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.10.11.tgz", - "integrity": "sha512-kKNE2BGu/La2k2WFHovenqZvGQAHRIU+rd2/6a7D6EiQ6EyimtbhUqjCCZ+N1f5fIAnvM+sMdLiQJq4jdd/oOQ==", + "version": "1.10.14", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.10.14.tgz", + "integrity": "sha512-TYtWkUSMkjs0jGPeWdtWbex4B+DlQZmN/ySVLiPI+EltYCLEXsFMkVFq6aWn48dqFHggFK0UYfvDrJUR2c3Qxg==", "cpu": [ "x64" ], @@ -5467,9 +5624,9 @@ } }, "node_modules/@tanstack/query-core": { - "version": "5.65.0", - "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.65.0.tgz", - "integrity": "sha512-Bnnq/1axf00r2grRT6gUyIkZRKzhHs+p4DijrCQ3wMlA3D3TTT71gtaSLtqnzGddj73/7X5JDGyjiSLdjvQN4w==", + "version": "5.66.0", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.66.0.tgz", + "integrity": "sha512-J+JeBtthiKxrpzUu7rfIPDzhscXF2p5zE/hVdrqkACBP8Yu0M96mwJ5m/8cPPYQE9aRNvXztXHlNwIh4FEeMZw==", "license": "MIT", "funding": { "type": "github", @@ -5487,12 +5644,12 @@ } }, "node_modules/@tanstack/react-query": { - "version": "5.65.0", - "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.65.0.tgz", - "integrity": "sha512-qXdHj3SCT2xkFxgrBIe6y9Lkowlwm+tGcV++PBLFtyvEJR5Q+biTnzm5p0tdVwqA603xlju9mtV2Kd/2brobgA==", + "version": "5.66.0", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.66.0.tgz", + "integrity": "sha512-z3sYixFQJe8hndFnXgWu7C79ctL+pI0KAelYyW+khaNJ1m22lWrhJU2QrsTcRKMuVPtoZvfBYrTStIdKo+x0Xw==", "license": "MIT", "dependencies": { - "@tanstack/query-core": "5.65.0" + "@tanstack/query-core": "5.66.0" }, "funding": { "type": "github", @@ -5503,9 +5660,9 @@ } }, "node_modules/@tanstack/react-query-devtools": { - "version": "5.65.0", - "resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-5.65.0.tgz", - "integrity": "sha512-xKoeWpHs6DcPqYmydIl+juWmZ2j4e4DaQEA/ju9PylhLI/X5eV5JG4IsI0ZrjtGwAEb4+lJv3SFwU/m6cmrljA==", + "version": "5.66.0", + "resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-5.66.0.tgz", + "integrity": "sha512-uB57wA2YZaQ2fPcFW0E9O1zAGDGSbRKRx84uMk/86VyU9jWVxvJ3Uzp+zNm+nZJYsuekCIo2opTdgNuvM3cKgA==", "license": "MIT", "dependencies": { "@tanstack/query-devtools": "5.65.0" @@ -5515,17 +5672,17 @@ "url": "https://github.com/sponsors/tannerlinsley" }, "peerDependencies": { - "@tanstack/react-query": "^5.65.0", + "@tanstack/react-query": "^5.66.0", "react": "^18 || ^19" } }, "node_modules/@tanstack/react-virtual": { - "version": "3.11.3", - "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.11.3.tgz", - "integrity": "sha512-vCU+OTylXN3hdC8RKg68tPlBPjjxtzon7Ys46MgrSLE+JhSjSTPvoQifV6DQJeJmA8Q3KT6CphJbejupx85vFw==", + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.12.0.tgz", + "integrity": "sha512-6krceiPN07kpxXmU6m8AY7EL0X1gHLu8m3nJdh4phvktzVNxkQfBmSwnRUpoUjGQO1PAn8wSAhYaL8hY1cS1vw==", "license": "MIT", "dependencies": { - "@tanstack/virtual-core": "3.11.3" + "@tanstack/virtual-core": "3.12.0" }, "funding": { "type": "github", @@ -5537,9 +5694,9 @@ } }, "node_modules/@tanstack/virtual-core": { - "version": "3.11.3", - "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.11.3.tgz", - "integrity": "sha512-v2mrNSnMwnPJtcVqNvV0c5roGCBqeogN8jDtgtuHCphdwBasOZ17x8UV8qpHUh+u0MLfX43c0uUHKje0s+Zb0w==", + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.12.0.tgz", + "integrity": "sha512-7mDINtua3v/pOnn6WUmuT9dPXYSO7WidFej7JzoAfqEOcbbpt/iZ1WPqd+eg+FnrL9nUJK8radqj4iAU51Zchg==", "license": "MIT", "funding": { "type": "github", @@ -5599,6 +5756,19 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/@testing-library/dom/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@testing-library/jest-dom": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.5.0.tgz", @@ -5657,6 +5827,19 @@ "dev": true, "license": "MIT" }, + "node_modules/@testing-library/jest-dom/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@testing-library/user-event": { "version": "14.5.2", "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.2.tgz", @@ -5924,6 +6107,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/jsonwebtoken": { "version": "9.0.8", "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.8.tgz", @@ -5937,9 +6127,9 @@ } }, "node_modules/@types/lodash": { - "version": "4.17.14", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.14.tgz", - "integrity": "sha512-jsxagdikDiDBeIRaPYtArcT8my4tN1og7MtMRquFT3XNA6axxyHDRUemqDz/taRDdOUn0GnGHRCuff4q48sW9A==", + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-w/P33JFeySuhN6JLkysYUK2gEmy9kHHFN7E8ro0tkfmlDOgxBDzWEZ/J8cWA+fHqFevpswDTFZnDx+R9lbL6xw==", "dev": true, "license": "MIT" }, @@ -5973,9 +6163,9 @@ "peer": true }, "node_modules/@types/node": { - "version": "22.10.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.10.tgz", - "integrity": "sha512-X47y/mPNzxviAGY5TcYPtYL8JsY3kAq2n8fMmKoRCxq/c4v4pyGNCzM2R6+M5/umG4ZfHuT+sgqDYqWc9rJ6ww==", + "version": "22.13.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.0.tgz", + "integrity": "sha512-ClIbNe36lawluuvq3+YYhnIN2CELi+6q8NpnM7PYp4hBn/TatfboPgVSm2rwKRfnV2M+Ty9GWDFI64KEe+kysA==", "license": "MIT", "dependencies": { "undici-types": "~6.20.0" @@ -6153,73 +6343,272 @@ "license": "MIT", "peer": true }, - "node_modules/@ugrc/layer-selector": { - "version": "6.2.12", - "resolved": "https://registry.npmjs.org/@ugrc/layer-selector/-/layer-selector-6.2.12.tgz", - "integrity": "sha512-wSG2gH6/yq1JxxZotN7RH468m5fKWc+F5LmivknP3SQiXHyG+/GXNhA3erqw7W4zV069FAaMWMSzrt3aFl+jtg==", + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.23.0.tgz", + "integrity": "sha512-vBz65tJgRrA1Q5gWlRfvoH+w943dq9K1p1yDBY2pc+a1nbBLZp7fB9+Hk8DaALUbzjqlMfgaqlVPT1REJdkt/w==", + "dev": true, "license": "MIT", "dependencies": { - "clsx": "^2.1.1" + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.23.0", + "@typescript-eslint/type-utils": "8.23.0", + "@typescript-eslint/utils": "8.23.0", + "@typescript-eslint/visitor-keys": "8.23.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@arcgis/core": "^4.20.0", - "prop-types": "^15.8.1", - "react": ">=16.8.0" + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, - "node_modules/@ugrc/utilities": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@ugrc/utilities/-/utilities-3.0.0.tgz", - "integrity": "sha512-Shn/DMEuleNkNFU2xeal/Vk72uZorlQyBp6JhFreB3wUl3nB7GXmHJrNI6nEFbVH6K5ODQIjg45b7fK3nxaUpg==", + "node_modules/@typescript-eslint/parser": { + "version": "8.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.23.0.tgz", + "integrity": "sha512-h2lUByouOXFAlMec2mILeELUbME5SZRN/7R9Cw2RD2lRQQY08MWMM+PmVVKKJNK1aIwqTo9t/0CvOxwPbRIE2Q==", + "dev": true, "license": "MIT", "dependencies": { - "@arcgis/core": "4.x", - "ky": "^1.7.4" + "@typescript-eslint/scope-manager": "8.23.0", + "@typescript-eslint/types": "8.23.0", + "@typescript-eslint/typescript-estree": "8.23.0", + "@typescript-eslint/visitor-keys": "8.23.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "react": ">=16.8.0" + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.23.0.tgz", + "integrity": "sha512-OGqo7+dXHqI7Hfm+WqkZjKjsiRtFUQHPdGMXzk5mYXhJUedO7e/Y7i8AK3MyLMgZR93TX4bIzYrfyVjLC+0VSw==", "dev": true, - "license": "ISC" + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.23.0", + "@typescript-eslint/visitor-keys": "8.23.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.23.0.tgz", + "integrity": "sha512-iIuLdYpQWZKbiH+RkCGc6iu+VwscP5rCtQ1lyQ7TYuKLrcZoeJVpcLiG8DliXVkUxirW/PWlmS+d6yD51L9jvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.23.0", + "@typescript-eslint/utils": "8.23.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.23.0.tgz", + "integrity": "sha512-1sK4ILJbCmZOTt9k4vkoulT6/y5CHJ1qUYxqpF1K/DBAd8+ZUL4LlSCxOssuH5m4rUaaN0uS0HlVPvd45zjduQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.23.0.tgz", + "integrity": "sha512-LcqzfipsB8RTvH8FX24W4UUFk1bl+0yTOf9ZA08XngFwMg4Kj8A+9hwz8Cr/ZS4KwHrmo9PJiLZkOt49vPnuvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.23.0", + "@typescript-eslint/visitor-keys": "8.23.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/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/@typescript-eslint/utils": { + "version": "8.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.23.0.tgz", + "integrity": "sha512-uB/+PSo6Exu02b5ZEiVtmY6RVYO7YU5xqgzTIVZwTHvvK3HsL8tZZHFaTLFtRG3CsV4A5mhOv+NZx5BlhXPyIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.23.0", + "@typescript-eslint/types": "8.23.0", + "@typescript-eslint/typescript-estree": "8.23.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.23.0.tgz", + "integrity": "sha512-oWWhcWDLwDfu++BGTZcmXWqpwtkwb5o7fxUIGksMQQDSdPW9prsSnfIOZMlsj4vBOSrcnjIUZMiIjODgGosFhQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.23.0", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ugrc/layer-selector": { + "version": "6.2.12", + "resolved": "https://registry.npmjs.org/@ugrc/layer-selector/-/layer-selector-6.2.12.tgz", + "integrity": "sha512-wSG2gH6/yq1JxxZotN7RH468m5fKWc+F5LmivknP3SQiXHyG+/GXNhA3erqw7W4zV069FAaMWMSzrt3aFl+jtg==", + "license": "MIT", + "dependencies": { + "clsx": "^2.1.1" + }, + "peerDependencies": { + "@arcgis/core": "^4.20.0", + "prop-types": "^15.8.1", + "react": ">=16.8.0" + } + }, + "node_modules/@ugrc/utilities": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@ugrc/utilities/-/utilities-3.0.0.tgz", + "integrity": "sha512-Shn/DMEuleNkNFU2xeal/Vk72uZorlQyBp6JhFreB3wUl3nB7GXmHJrNI6nEFbVH6K5ODQIjg45b7fK3nxaUpg==", + "license": "MIT", + "dependencies": { + "@arcgis/core": "4.x", + "ky": "^1.7.4" + }, + "peerDependencies": { + "react": ">=16.8.0" + } }, "node_modules/@vaadin/a11y-base": { - "version": "24.5.7", - "resolved": "https://registry.npmjs.org/@vaadin/a11y-base/-/a11y-base-24.5.7.tgz", - "integrity": "sha512-XDqQ/negHPp/FO82fKz89y68UqLZMDLTfExG33Hch4c/LuGvCyd8jfjn4FImHEeTD4GyImOk5zai1IHMmS3yPQ==", + "version": "24.5.8", + "resolved": "https://registry.npmjs.org/@vaadin/a11y-base/-/a11y-base-24.5.8.tgz", + "integrity": "sha512-FDAzrD5s0lm0RWbQDDMoCGU5Rwu73OH6Ka2A9LF57pNImUyYqubkbxc/HrC6AXbjLyvizloxkx+I2cPzTzTI3g==", "license": "Apache-2.0", "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", - "@vaadin/component-base": "~24.5.7", + "@vaadin/component-base": "~24.5.8", "lit": "^3.0.0" } }, "node_modules/@vaadin/checkbox": { - "version": "24.5.7", - "resolved": "https://registry.npmjs.org/@vaadin/checkbox/-/checkbox-24.5.7.tgz", - "integrity": "sha512-8CL1x/9KcFwNAejqgjQT3kgS5PbKZDojA+pQEVx+L2W5VL2AltWQkEO+k28FZky3+EvCWC537ljLLxuP40WlDA==", + "version": "24.5.8", + "resolved": "https://registry.npmjs.org/@vaadin/checkbox/-/checkbox-24.5.8.tgz", + "integrity": "sha512-qG6Bav0K3+zYt62Iz1JcrvPLqOQbk5NTmH7yUf5PlwMDPr/+xUsGnhLKNV7QSjQ6LLv2BqBfO9uMzxV5WtKh0Q==", "license": "Apache-2.0", "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", - "@vaadin/a11y-base": "~24.5.7", - "@vaadin/component-base": "~24.5.7", - "@vaadin/field-base": "~24.5.7", - "@vaadin/vaadin-lumo-styles": "~24.5.7", - "@vaadin/vaadin-material-styles": "~24.5.7", - "@vaadin/vaadin-themable-mixin": "~24.5.7", + "@vaadin/a11y-base": "~24.5.8", + "@vaadin/component-base": "~24.5.8", + "@vaadin/field-base": "~24.5.8", + "@vaadin/vaadin-lumo-styles": "~24.5.8", + "@vaadin/vaadin-material-styles": "~24.5.8", + "@vaadin/vaadin-themable-mixin": "~24.5.8", "lit": "^3.0.0" } }, "node_modules/@vaadin/component-base": { - "version": "24.5.7", - "resolved": "https://registry.npmjs.org/@vaadin/component-base/-/component-base-24.5.7.tgz", - "integrity": "sha512-WmgSHWL0NkRNPh3gxacBgcPMi8YekQdjVfQGxwqgaSrha+qNJyPjphLRD8yd1rb/Pf9Pr9sgtYJ6aFL8fM26Iw==", + "version": "24.5.8", + "resolved": "https://registry.npmjs.org/@vaadin/component-base/-/component-base-24.5.8.tgz", + "integrity": "sha512-2vZhb8bObF+2jGFB3t0SDn8Wk6n/n/6NKdN9X7kqwEqxeNF7mhUhcpWExQ0rFnTeFfQnukdBqtCSL3uROOcC7g==", "license": "Apache-2.0", "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", @@ -6230,89 +6619,89 @@ } }, "node_modules/@vaadin/field-base": { - "version": "24.5.7", - "resolved": "https://registry.npmjs.org/@vaadin/field-base/-/field-base-24.5.7.tgz", - "integrity": "sha512-sKKAsZipFX24g+uIPyAcNwM38wCuYHo+YRH0pRsdxnG3/z2xFWX2ez0HnsoAl78+ykieaHSKVmOUbaasI3PUUw==", + "version": "24.5.8", + "resolved": "https://registry.npmjs.org/@vaadin/field-base/-/field-base-24.5.8.tgz", + "integrity": "sha512-j+OTnD/HSyTsvXk6aZ+KbIKDf5lWnoaYKxF2eq1auO/j9ecM1Gp4ZiqRLS2RJ8WxHornHk44E+RlMyfz7hTlwA==", "license": "Apache-2.0", "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", - "@vaadin/a11y-base": "~24.5.7", - "@vaadin/component-base": "~24.5.7", + "@vaadin/a11y-base": "~24.5.8", + "@vaadin/component-base": "~24.5.8", "lit": "^3.0.0" } }, "node_modules/@vaadin/grid": { - "version": "24.5.7", - "resolved": "https://registry.npmjs.org/@vaadin/grid/-/grid-24.5.7.tgz", - "integrity": "sha512-ruyYrvKgeeTzTGj4BCla4Jxa60bedncOnTcGb5V7T8WAtxiY3ATaij2vtMGayFoTch7QdO+WaZadFz0dZ86CIw==", + "version": "24.5.8", + "resolved": "https://registry.npmjs.org/@vaadin/grid/-/grid-24.5.8.tgz", + "integrity": "sha512-/sNWKlYqmiXz0CXZ2i3ONdT1srCRovTsgpvTTpDXRKAumO1TcA5AfksbWp+IlvPKSAHfLQ3eP2dhhuuOYBtuhQ==", "license": "Apache-2.0", "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", - "@vaadin/a11y-base": "~24.5.7", - "@vaadin/checkbox": "~24.5.7", - "@vaadin/component-base": "~24.5.7", - "@vaadin/lit-renderer": "~24.5.7", - "@vaadin/text-field": "~24.5.7", - "@vaadin/vaadin-lumo-styles": "~24.5.7", - "@vaadin/vaadin-material-styles": "~24.5.7", - "@vaadin/vaadin-themable-mixin": "~24.5.7", + "@vaadin/a11y-base": "~24.5.8", + "@vaadin/checkbox": "~24.5.8", + "@vaadin/component-base": "~24.5.8", + "@vaadin/lit-renderer": "~24.5.8", + "@vaadin/text-field": "~24.5.8", + "@vaadin/vaadin-lumo-styles": "~24.5.8", + "@vaadin/vaadin-material-styles": "~24.5.8", + "@vaadin/vaadin-themable-mixin": "~24.5.8", "lit": "^3.0.0" } }, "node_modules/@vaadin/icon": { - "version": "24.5.7", - "resolved": "https://registry.npmjs.org/@vaadin/icon/-/icon-24.5.7.tgz", - "integrity": "sha512-UYwQOg9027hSqqzpeMR4/e6219/RLmFRNenk6g7gtZs5zK6xc9q+7giZwFVO+EcT+LaUYuoIXVaQT04RBo8d3w==", + "version": "24.5.8", + "resolved": "https://registry.npmjs.org/@vaadin/icon/-/icon-24.5.8.tgz", + "integrity": "sha512-FdTSoAxTtA0imLlX5cfW5uw6mv+r9KI20g3ngXDH801oCAOMmkig6vF5fRUwEwI3SHQbopQaa7xA4n3dj4xK6Q==", "license": "Apache-2.0", "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", - "@vaadin/component-base": "~24.5.7", - "@vaadin/vaadin-lumo-styles": "~24.5.7", - "@vaadin/vaadin-themable-mixin": "~24.5.7", + "@vaadin/component-base": "~24.5.8", + "@vaadin/vaadin-lumo-styles": "~24.5.8", + "@vaadin/vaadin-themable-mixin": "~24.5.8", "lit": "^3.0.0" } }, "node_modules/@vaadin/input-container": { - "version": "24.5.7", - "resolved": "https://registry.npmjs.org/@vaadin/input-container/-/input-container-24.5.7.tgz", - "integrity": "sha512-zh0iisAUYh1e0cKYEkTKF4L113PluWwlkkjJE2MvJDuXh+klhoOEK+HQRNRgEJV6iA4UrvLXluFRsC4Cf8DGaw==", + "version": "24.5.8", + "resolved": "https://registry.npmjs.org/@vaadin/input-container/-/input-container-24.5.8.tgz", + "integrity": "sha512-2uq4ea4FCEM+gFPLMlawLRstX1+UzrtPhaxKda2zxB6QnzBUoDysC9AaatcVKUMfkHI5TbYB2xViJz5HNu4z5Q==", "license": "Apache-2.0", "dependencies": { "@polymer/polymer": "^3.0.0", - "@vaadin/component-base": "~24.5.7", - "@vaadin/vaadin-lumo-styles": "~24.5.7", - "@vaadin/vaadin-material-styles": "~24.5.7", - "@vaadin/vaadin-themable-mixin": "~24.5.7", + "@vaadin/component-base": "~24.5.8", + "@vaadin/vaadin-lumo-styles": "~24.5.8", + "@vaadin/vaadin-material-styles": "~24.5.8", + "@vaadin/vaadin-themable-mixin": "~24.5.8", "lit": "^3.0.0" } }, "node_modules/@vaadin/lit-renderer": { - "version": "24.5.7", - "resolved": "https://registry.npmjs.org/@vaadin/lit-renderer/-/lit-renderer-24.5.7.tgz", - "integrity": "sha512-xTCLwFnbLl2E1giXdTdUeFobUJyVc2Xepgw1Tie3Oh6E/UbXQnw1LCcw/ISDUal7+7I/RaYpt/RPsnu4fwzwrA==", + "version": "24.5.8", + "resolved": "https://registry.npmjs.org/@vaadin/lit-renderer/-/lit-renderer-24.5.8.tgz", + "integrity": "sha512-19AaBqdZ3UwCnY8BzkwDRaa+LcFtP/a49PlEnnAhQP3FcYgeptPzl+ZeNEkXLsPmwqxMEQEBVMuVvP7/sjCtXQ==", "license": "Apache-2.0", "dependencies": { "lit": "^3.0.0" } }, "node_modules/@vaadin/text-field": { - "version": "24.5.7", - "resolved": "https://registry.npmjs.org/@vaadin/text-field/-/text-field-24.5.7.tgz", - "integrity": "sha512-r3MUtKiZeTc7XDQWLfaBZ6Wp7ujPueHqo4w9WUyzDOzp6ENu9R+wDT1wUHNwNdxDYBleOz0X9vNoApHbucbjcw==", + "version": "24.5.8", + "resolved": "https://registry.npmjs.org/@vaadin/text-field/-/text-field-24.5.8.tgz", + "integrity": "sha512-uEwV8uYwT8cOX1D1OIRZPZ7XA4qzsaKVULXirwHGXmux/PZh/c2MBwlJggGS0qt+VdCCn/EPyNnRNwLSR3AbfQ==", "license": "Apache-2.0", "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", - "@vaadin/a11y-base": "~24.5.7", - "@vaadin/component-base": "~24.5.7", - "@vaadin/field-base": "~24.5.7", - "@vaadin/input-container": "~24.5.7", - "@vaadin/vaadin-lumo-styles": "~24.5.7", - "@vaadin/vaadin-material-styles": "~24.5.7", - "@vaadin/vaadin-themable-mixin": "~24.5.7", + "@vaadin/a11y-base": "~24.5.8", + "@vaadin/component-base": "~24.5.8", + "@vaadin/field-base": "~24.5.8", + "@vaadin/input-container": "~24.5.8", + "@vaadin/vaadin-lumo-styles": "~24.5.8", + "@vaadin/vaadin-material-styles": "~24.5.8", + "@vaadin/vaadin-themable-mixin": "~24.5.8", "lit": "^3.0.0" } }, @@ -6323,32 +6712,32 @@ "license": "Apache-2.0" }, "node_modules/@vaadin/vaadin-lumo-styles": { - "version": "24.5.7", - "resolved": "https://registry.npmjs.org/@vaadin/vaadin-lumo-styles/-/vaadin-lumo-styles-24.5.7.tgz", - "integrity": "sha512-T1fCKBLK8trsFRBJ9t3rTcUlb2rXVsV3DUY9HLZTN7YqS77a0JO/oePv+A5WNrjqGmjbLGH95isOJnUulpINqA==", + "version": "24.5.8", + "resolved": "https://registry.npmjs.org/@vaadin/vaadin-lumo-styles/-/vaadin-lumo-styles-24.5.8.tgz", + "integrity": "sha512-Q6LDtjsTkOSU3sUBUXTo3HQ2zA9ecwR1XK8ohSb/q8keNDZlubKX5ek9CYXeIrAXCkISweTz0MrN6l2s4afj0Q==", "license": "Apache-2.0", "dependencies": { "@polymer/polymer": "^3.0.0", - "@vaadin/component-base": "~24.5.7", - "@vaadin/icon": "~24.5.7", - "@vaadin/vaadin-themable-mixin": "~24.5.7" + "@vaadin/component-base": "~24.5.8", + "@vaadin/icon": "~24.5.8", + "@vaadin/vaadin-themable-mixin": "~24.5.8" } }, "node_modules/@vaadin/vaadin-material-styles": { - "version": "24.5.7", - "resolved": "https://registry.npmjs.org/@vaadin/vaadin-material-styles/-/vaadin-material-styles-24.5.7.tgz", - "integrity": "sha512-lPHv42w6CkHnwrpUAwWbBo0ah+Fh503gTF+vKEO6M1ofMvQ4V1HtKAqh35Jftc8QxXgCzrvlENiOsBc1gUrG+g==", + "version": "24.5.8", + "resolved": "https://registry.npmjs.org/@vaadin/vaadin-material-styles/-/vaadin-material-styles-24.5.8.tgz", + "integrity": "sha512-Kb19oi6tSOK265HJy1Kg3rhfKlb9f3YCsE+KagILS8gcUTRuWFsQ/GoGIHWRc7p2B0B4OVdUKUjhGOV1UVsV2w==", "license": "Apache-2.0", "dependencies": { "@polymer/polymer": "^3.0.0", - "@vaadin/component-base": "~24.5.7", - "@vaadin/vaadin-themable-mixin": "~24.5.7" + "@vaadin/component-base": "~24.5.8", + "@vaadin/vaadin-themable-mixin": "~24.5.8" } }, "node_modules/@vaadin/vaadin-themable-mixin": { - "version": "24.5.7", - "resolved": "https://registry.npmjs.org/@vaadin/vaadin-themable-mixin/-/vaadin-themable-mixin-24.5.7.tgz", - "integrity": "sha512-mF60JIWdMsVx2LkdbXP7tO3+TyPc7StqaJGz7PgH34aDCVh0V3GD/H1o0qaIM9rnKfFCluPACdNnTNIIhT9MDg==", + "version": "24.5.8", + "resolved": "https://registry.npmjs.org/@vaadin/vaadin-themable-mixin/-/vaadin-themable-mixin-24.5.8.tgz", + "integrity": "sha512-1eZA1n5m9WAU/sgrwkCcujUUdS6/svoxPQeRixZAn0XGzwVVgwIJycTAMcyCWTyb194YirNgsk2DpN8nUbkMmA==", "license": "Apache-2.0", "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", @@ -6382,9 +6771,9 @@ } }, "node_modules/@vitest/coverage-v8": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.0.4.tgz", - "integrity": "sha512-f0twgRCHgbs24Dp8cLWagzcObXMcuKtAwgxjJV/nnysPAJJk1JiKu/W0gIehZLmkljhJXU/E0/dmuQzsA/4jhA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.0.5.tgz", + "integrity": "sha512-zOOWIsj5fHh3jjGwQg+P+J1FW3s4jBu1Zqga0qW60yutsBtqEqNEJKWYh7cYn1yGD+1bdPsPdC/eL4eVK56xMg==", "dev": true, "license": "MIT", "dependencies": { @@ -6405,8 +6794,8 @@ "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "@vitest/browser": "3.0.4", - "vitest": "3.0.4" + "@vitest/browser": "3.0.5", + "vitest": "3.0.5" }, "peerDependenciesMeta": { "@vitest/browser": { @@ -6480,13 +6869,13 @@ } }, "node_modules/@vitest/mocker": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.4.tgz", - "integrity": "sha512-gEef35vKafJlfQbnyOXZ0Gcr9IBUsMTyTLXsEQwuyYAerpHqvXhzdBnDFuHLpFqth3F7b6BaFr4qV/Cs1ULx5A==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.5.tgz", + "integrity": "sha512-CLPNBFBIE7x6aEGbIjaQAX03ZZlBMaWwAjBdMkIf/cAn6xzLTiM3zYqO/WAbieEjsAZir6tO71mzeHZoodThvw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "3.0.4", + "@vitest/spy": "3.0.5", "estree-walker": "^3.0.3", "magic-string": "^0.30.17" }, @@ -6507,9 +6896,9 @@ } }, "node_modules/@vitest/mocker/node_modules/@vitest/spy": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.4.tgz", - "integrity": "sha512-sXIMF0oauYyUy2hN49VFTYodzEAu744MmGcPR3ZBsPM20G+1/cSW/n1U+3Yu/zHxX2bIDe1oJASOkml+osTU6Q==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.5.tgz", + "integrity": "sha512-5fOzHj0WbUNqPK6blI/8VzZdkBlQLnT25knX0r4dbZI9qoZDf3qAdjoMmDcLG5A83W6oUUFJgUd0EYBc2P5xqg==", "dev": true, "license": "MIT", "dependencies": { @@ -6530,9 +6919,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.8.tgz", - "integrity": "sha512-9HiSZ9zpqNLKlbIDRWOnAWqgcA7xu+8YxXSekhr0Ykab7PAYFkhkwoqVArPOtJhPmYeE2YHgKZlj3CP36z2AJQ==", + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.9.tgz", + "integrity": "sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6553,13 +6942,13 @@ } }, "node_modules/@vitest/runner": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.4.tgz", - "integrity": "sha512-dKHzTQ7n9sExAcWH/0sh1elVgwc7OJ2lMOBrAm73J7AH6Pf9T12Zh3lNE1TETZaqrWFXtLlx3NVrLRb5hCK+iw==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.5.tgz", + "integrity": "sha512-BAiZFityFexZQi2yN4OX3OkJC6scwRo8EhRB0Z5HIGGgd2q+Nq29LgHU/+ovCtd0fOfXj5ZI6pwdlUmC5bpi8A==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "3.0.4", + "@vitest/utils": "3.0.5", "pathe": "^2.0.2" }, "funding": { @@ -6567,9 +6956,9 @@ } }, "node_modules/@vitest/runner/node_modules/@vitest/pretty-format": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.4.tgz", - "integrity": "sha512-ts0fba+dEhK2aC9PFuZ9LTpULHpY/nd6jhAQ5IMU7Gaj7crPCTdCFfgvXxruRBLFS+MLraicCuFXxISEq8C93g==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.5.tgz", + "integrity": "sha512-CjUtdmpOcm4RVtB+up8r2vVDLR16Mgm/bYdkGFe3Yj/scRfCpbSi2W/BDSDcFK7ohw8UXvjMbOp9H4fByd/cOA==", "dev": true, "license": "MIT", "dependencies": { @@ -6580,13 +6969,13 @@ } }, "node_modules/@vitest/runner/node_modules/@vitest/utils": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.4.tgz", - "integrity": "sha512-8BqC1ksYsHtbWH+DfpOAKrFw3jl3Uf9J7yeFh85Pz52IWuh1hBBtyfEbRNNZNjl8H8A5yMLH9/t+k7HIKzQcZQ==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.5.tgz", + "integrity": "sha512-N9AX0NUoUtVwKwy21JtwzaqR5L5R5A99GAbrHfCCXK1lp593i/3AZAXhSP43wRQuxYsflrdzEfXZFo1reR1Nkg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.0.4", + "@vitest/pretty-format": "3.0.5", "loupe": "^3.1.2", "tinyrainbow": "^2.0.0" }, @@ -6595,13 +6984,13 @@ } }, "node_modules/@vitest/snapshot": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.4.tgz", - "integrity": "sha512-+p5knMLwIk7lTQkM3NonZ9zBewzVp9EVkVpvNta0/PlFWpiqLaRcF4+33L1it3uRUCh0BGLOaXPPGEjNKfWb4w==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.5.tgz", + "integrity": "sha512-GJPZYcd7v8QNUJ7vRvLDmRwl+a1fGg4T/54lZXe+UOGy47F9yUfE18hRCtXL5aHN/AONu29NGzIXSVFh9K0feA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.0.4", + "@vitest/pretty-format": "3.0.5", "magic-string": "^0.30.17", "pathe": "^2.0.2" }, @@ -6610,9 +6999,9 @@ } }, "node_modules/@vitest/snapshot/node_modules/@vitest/pretty-format": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.4.tgz", - "integrity": "sha512-ts0fba+dEhK2aC9PFuZ9LTpULHpY/nd6jhAQ5IMU7Gaj7crPCTdCFfgvXxruRBLFS+MLraicCuFXxISEq8C93g==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.5.tgz", + "integrity": "sha512-CjUtdmpOcm4RVtB+up8r2vVDLR16Mgm/bYdkGFe3Yj/scRfCpbSi2W/BDSDcFK7ohw8UXvjMbOp9H4fByd/cOA==", "dev": true, "license": "MIT", "dependencies": { @@ -6636,13 +7025,13 @@ } }, "node_modules/@vitest/ui": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-3.0.4.tgz", - "integrity": "sha512-e+s2F9e9FUURkZ5aFIe1Fi3Y8M7UF6gEuShcaV/ur7y/Ldri+1tzWQ1TJq9Vas42NXnXvCAIrU39Z4U2RyET6g==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-3.0.5.tgz", + "integrity": "sha512-gw2noso6WI+2PeMVCZFntdATS6xl9qhQcbhkPQ9sOmx/Xn0f4Bx4KDSbD90jpJPF0l5wOzSoGCmKyVR3W612mg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "3.0.4", + "@vitest/utils": "3.0.5", "fflate": "^0.8.2", "flatted": "^3.3.2", "pathe": "^2.0.2", @@ -6654,13 +7043,13 @@ "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "vitest": "3.0.4" + "vitest": "3.0.5" } }, "node_modules/@vitest/ui/node_modules/@vitest/pretty-format": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.4.tgz", - "integrity": "sha512-ts0fba+dEhK2aC9PFuZ9LTpULHpY/nd6jhAQ5IMU7Gaj7crPCTdCFfgvXxruRBLFS+MLraicCuFXxISEq8C93g==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.5.tgz", + "integrity": "sha512-CjUtdmpOcm4RVtB+up8r2vVDLR16Mgm/bYdkGFe3Yj/scRfCpbSi2W/BDSDcFK7ohw8UXvjMbOp9H4fByd/cOA==", "dev": true, "license": "MIT", "dependencies": { @@ -6671,13 +7060,13 @@ } }, "node_modules/@vitest/ui/node_modules/@vitest/utils": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.4.tgz", - "integrity": "sha512-8BqC1ksYsHtbWH+DfpOAKrFw3jl3Uf9J7yeFh85Pz52IWuh1hBBtyfEbRNNZNjl8H8A5yMLH9/t+k7HIKzQcZQ==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.5.tgz", + "integrity": "sha512-N9AX0NUoUtVwKwy21JtwzaqR5L5R5A99GAbrHfCCXK1lp593i/3AZAXhSP43wRQuxYsflrdzEfXZFo1reR1Nkg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.0.4", + "@vitest/pretty-format": "3.0.5", "loupe": "^3.1.2", "tinyrainbow": "^2.0.0" }, @@ -6686,13 +7075,13 @@ } }, "node_modules/@vitest/utils": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.8.tgz", - "integrity": "sha512-dwSoui6djdwbfFmIgbIjX2ZhIoG7Ex/+xpxyiEgIGzjliY8xGkcpITKTlp6B4MgtGkF2ilvm97cPM96XZaAgcA==", + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.9.tgz", + "integrity": "sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "2.1.8", + "@vitest/pretty-format": "2.1.9", "loupe": "^3.1.2", "tinyrainbow": "^1.2.0" }, @@ -6736,9 +7125,9 @@ } }, "node_modules/@zip.js/zip.js": { - "version": "2.7.54", - "resolved": "https://registry.npmjs.org/@zip.js/zip.js/-/zip.js-2.7.54.tgz", - "integrity": "sha512-qMrJVg2hoEsZJjMJez9yI2+nZlBUxgYzGV3mqcb2B/6T1ihXp0fWBDYlVHlHquuorgNUQP5a8qSmX6HF5rFJNg==", + "version": "2.7.57", + "resolved": "https://registry.npmjs.org/@zip.js/zip.js/-/zip.js-2.7.57.tgz", + "integrity": "sha512-BtonQ1/jDnGiMed6OkV6rZYW78gLmLswkHOzyMrMb+CAR7CZO8phOHO6c2qw6qb1g1betN7kwEHhhZk30dv+NA==", "license": "BSD-3-Clause", "engines": { "bun": ">=0.7.0", @@ -6920,35 +7309,18 @@ } }, "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, "engines": { - "node": ">=4" - } - }, - "node_modules/ansi-styles/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/ansi-styles/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true, - "license": "MIT" - }, "node_modules/any-promise": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", @@ -7249,6 +7621,27 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array.prototype.flat": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", @@ -7591,6 +7984,20 @@ "node": ">=8" } }, + "node_modules/babel-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/babel-plugin-istanbul": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", @@ -8058,6 +8465,19 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/boxen/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/boxen/node_modules/type-fest": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", @@ -8414,9 +8834,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001695", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001695.tgz", - "integrity": "sha512-vHyLade6wTgI2u1ec3WQBxv+2BrTERV28UXQu9LO6lZ9pYeMk34vjXFLOxo1A4UBA8XTL4njRQZdno/yYaSmWw==", + "version": "1.0.30001696", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001696.tgz", + "integrity": "sha512-pDCPkvzfa39ehJtJ+OwGT/2yvT2SbjfHhiIW2LWOAcMQ7BzwxT/XuyUp4OTOd0XFWA6BKw0JalnBHgSi5DGJBQ==", "dev": true, "funding": [ { @@ -8566,9 +8986,9 @@ } }, "node_modules/cjs-module-lexer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz", - "integrity": "sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", + "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", "dev": true, "license": "MIT", "peer": true @@ -8690,6 +9110,19 @@ "wrap-ansi": "^7.0.0" } }, + "node_modules/cli-highlight/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/cli-highlight/node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -9258,22 +9691,6 @@ "node": ">=8" } }, - "node_modules/concurrently/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, "node_modules/config-chain": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", @@ -9764,12 +10181,26 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/cross-env": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", - "dev": true, - "license": "MIT", + "node_modules/create-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "license": "MIT", "dependencies": { "cross-spawn": "^7.0.1" }, @@ -9878,6 +10309,19 @@ "@commitlint/load": ">6.1.1" } }, + "node_modules/cz-conventional-changelog/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/cz-conventional-changelog/node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -9893,6 +10337,23 @@ "node": ">=4" } }, + "node_modules/cz-conventional-changelog/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/cz-conventional-changelog/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" + }, "node_modules/cz-conventional-changelog/node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -10295,16 +10756,16 @@ "license": "Unlicense" }, "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, "engines": { - "node": ">=6.0.0" + "node": ">=0.10.0" } }, "node_modules/dom-accessibility-api": { @@ -10386,9 +10847,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.88", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.88.tgz", - "integrity": "sha512-K3C2qf1o+bGzbilTDCTBhTQcMS9KW60yTAaTeeXsfvQuTDDwlokLam/AdqlqcSy9u4UainDgsHV23ksXAOgamw==", + "version": "1.5.91", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.91.tgz", + "integrity": "sha512-sNSHHyq048PFmZY4S90ax61q+gLCs0X0YmcOII9wG9S2XwbVr+h4VW2wWhnbp/Eys3cCwTxVF292W3qPaxIapQ==", "dev": true, "license": "ISC" }, @@ -10816,60 +11277,63 @@ } }, "node_modules/eslint": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", - "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", - "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "version": "9.19.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.19.0.tgz", + "integrity": "sha512-ug92j0LepKlbbEv6hD911THhoRHmbdXt2gX+VDABAW/Ir7D3nqKdv5Pf5vtlyY6HQMTEP2skXY43ueqTCWssEA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.1", - "@humanwhocodes/config-array": "^0.13.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.19.0", + "@eslint/core": "^0.10.0", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "9.19.0", + "@eslint/plugin-kit": "^0.2.5", + "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", + "@humanwhocodes/retry": "^0.4.1", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", + "cross-spawn": "^7.0.6", "debug": "^4.3.2", - "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", + "eslint-scope": "^8.2.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", + "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" + "optionator": "^0.9.3" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, "node_modules/eslint-config-prettier": { @@ -10885,6 +11349,146 @@ "eslint": ">=7.0.0" } }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", + "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", + "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.8", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-import/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import/node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, "node_modules/eslint-plugin-jsx-a11y": { "version": "6.10.2", "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", @@ -11012,19 +11616,6 @@ "eslint": ">=8.40" } }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/eslint-plugin-react/node_modules/resolve": { "version": "2.0.0-next.5", "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", @@ -11053,10 +11644,28 @@ "semver": "bin/semver.js" } }, + "node_modules/eslint-plugin-storybook": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.11.2.tgz", + "integrity": "sha512-0Z4DUklJrC+GHjCRXa7PYfPzWC15DaVnwaOYenpgXiCEijXPZkLKCms+rHhtoRcWccP7Z8DpOOaP1gc3P9oOwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/csf": "^0.1.11", + "@typescript-eslint/utils": "^8.8.1", + "ts-dedent": "^2.2.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "eslint": ">=8" + } + }, "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", + "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -11064,20 +11673,20 @@ "estraverse": "^5.2.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", "dev": true, "license": "Apache-2.0", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -11150,22 +11759,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/eslint/node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -11215,32 +11808,32 @@ "node": ">=8" } }, - "node_modules/eslint/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=8" } }, "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.9.0", + "acorn": "^8.14.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "eslint-visitor-keys": "^4.2.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -11398,9 +11991,9 @@ } }, "node_modules/exegesis": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/exegesis/-/exegesis-4.2.0.tgz", - "integrity": "sha512-MOzRyqhvl+hTA4+W4p0saWRIPlu0grIx4ykjMEYgGLiqr/z9NCIlwSq2jF0gyxNjPZD3xyHgmkW6BSaLVUdctg==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/exegesis/-/exegesis-4.3.0.tgz", + "integrity": "sha512-V90IJQ4XYO1SfH5qdJTOijXkQTF3hSpSHHqlf7MstUMDKP22iAvi63gweFLtPZ4Gj3Wnh8RgJX5TGu0WiwTyDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -11417,13 +12010,12 @@ "lodash": "^4.17.11", "openapi3-ts": "^3.1.1", "promise-breaker": "^6.0.0", - "pump": "^3.0.0", "qs": "^6.6.0", "raw-body": "^2.3.3", "semver": "^7.0.0" }, "engines": { - "node": ">=6.0.0", + "node": ">=10.0.0", "npm": ">5.0.0" } }, @@ -11793,9 +12385,9 @@ } }, "node_modules/fastq": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz", - "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==", + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.0.tgz", + "integrity": "sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==", "dev": true, "license": "ISC", "dependencies": { @@ -11881,16 +12473,16 @@ } }, "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, "license": "MIT", "dependencies": { - "flat-cache": "^3.0.4" + "flat-cache": "^4.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16.0.0" } }, "node_modules/filesize": { @@ -12199,9 +12791,9 @@ } }, "node_modules/firebase-functions": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/firebase-functions/-/firebase-functions-6.3.0.tgz", - "integrity": "sha512-88dRx3dPYvlxIN64H1lJCFV7wGt0cFL0lmXKzVm+rfnkILC0Qt3rMXp3/J/ojf2StclBwJBu2QZ4MRbNYh7B7g==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/firebase-functions/-/firebase-functions-6.3.1.tgz", + "integrity": "sha512-LTbmsEkSgaOhzTzGUoF7dv906JJJW89o0/spXgnU8gASyR8JLMrCqwV7FnWLso5hyF0fUqNPaEEw/TzLdZMVXw==", "dev": true, "license": "MIT", "peer": true, @@ -12277,13 +12869,13 @@ } }, "node_modules/firebase-tools": { - "version": "13.29.2", - "resolved": "https://registry.npmjs.org/firebase-tools/-/firebase-tools-13.29.2.tgz", - "integrity": "sha512-6P4PR4TcrATPI+ut0qhh7gW3GJ0HYaLC2Fr5lesAXkrdAYw7OvOGDzXaRFuORwkCS5grVQuCcJVSsVbjXKAkew==", + "version": "13.29.3", + "resolved": "https://registry.npmjs.org/firebase-tools/-/firebase-tools-13.29.3.tgz", + "integrity": "sha512-P3d5+RjkhEmYhBP+5CGYD+Zi+eA5lLny/Ph5vGHAPUiJ7VKooiVtWf7fHw7LoXenlkCGPNaGfYVKqFz514+d7A==", "dev": true, "license": "MIT", "dependencies": { - "@electric-sql/pglite": "^0.2.0", + "@electric-sql/pglite": "^0.2.16", "@google-cloud/cloud-sql-connector": "^1.3.3", "@google-cloud/pubsub": "^4.5.0", "abort-controller": "^3.0.0", @@ -12538,6 +13130,19 @@ "dev": true, "license": "BSD-3-Clause" }, + "node_modules/firebase-tools/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/firebase-tools/node_modules/wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -12554,18 +13159,17 @@ } }, "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, "license": "MIT", "dependencies": { "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" + "keyv": "^4.5.4" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16" } }, "node_modules/flatted": { @@ -12877,13 +13481,14 @@ } }, "node_modules/gcp-metadata": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", - "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.1.tgz", + "integrity": "sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "gaxios": "^6.0.0", + "gaxios": "^6.1.1", + "google-logging-utils": "^0.0.2", "json-bigint": "^1.0.0" }, "engines": { @@ -13032,7 +13637,17 @@ "node": ">= 14" } }, - "node_modules/git-raw-commits": { + "node_modules/git-hooks-list": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/git-hooks-list/-/git-hooks-list-3.1.0.tgz", + "integrity": "sha512-LF8VeHeR7v+wAbXqfgRlTSX/1BJR9Q1vEMR8JAz1cEg6GX07+zyj3sAdDvYjj/xnlIfVuGgj4qBei1K3hKH+PA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/fisker/git-hooks-list?sponsor=1" + } + }, + "node_modules/git-raw-commits": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-4.0.0.tgz", "integrity": "sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==", @@ -13199,13 +13814,16 @@ } }, "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "version": "15.14.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.14.0.tgz", + "integrity": "sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/globalthis": { @@ -13387,6 +14005,16 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/google-logging-utils": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/google-logging-utils/-/google-logging-utils-0.0.2.tgz", + "integrity": "sha512-NEgUnEcBiP5HrPzufUkBzJOD/Sxsco3rLNo1F1TNf7ieU8ryUzBhqba8r756CjLX7rn3fHl6iLEwPYuqpoKgQQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, "node_modules/googleapis-common": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/googleapis-common/-/googleapis-common-7.2.0.tgz", @@ -13771,34 +14399,6 @@ "if-env": "bin/if-env.js" } }, - "node_modules/if-env/node_modules/npm-run-all": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-1.4.0.tgz", - "integrity": "sha512-Le4iFE4VsbjPG4IMtuMN7gHu3UXIVnywPqBS2s3vHQe0JMGewfyWE8WYyqM509PjUybi4wbSqgW69mr3XGFr0w==", - "license": "MIT", - "dependencies": { - "babel-polyfill": "^6.2.0", - "minimatch": "^3.0.0", - "ps-tree": "^1.0.1", - "shell-quote": "^1.4.3", - "which": "^1.2.0" - }, - "bin": { - "npm-run-all": "bin/npm-run-all.js" - } - }, - "node_modules/if-env/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -13820,9 +14420,9 @@ } }, "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "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": { @@ -14017,6 +14617,19 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/inquirer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/install-artifact-from-github": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/install-artifact-from-github/-/install-artifact-from-github-1.3.5.tgz", @@ -14494,6 +15107,19 @@ "node": ">=8" } }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-promise": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", @@ -14681,13 +15307,13 @@ } }, "node_modules/is-weakref": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.0.tgz", - "integrity": "sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.2" + "call-bound": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -14838,6 +15464,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "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", @@ -14978,39 +15617,39 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-circus/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==", + "node_modules/jest-circus/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", "peer": true, "dependencies": { - "color-convert": "^2.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-circus/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/jest-circus/node_modules/chalk/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", "peer": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/jest-circus/node_modules/dedent": { @@ -15045,20 +15684,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-circus/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-circus/node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", @@ -15078,6 +15703,20 @@ "node": ">=8" } }, + "node_modules/jest-circus/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-cli": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", @@ -15148,6 +15787,20 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/jest-cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-config": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", @@ -15195,39 +15848,39 @@ } } }, - "node_modules/jest-config/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==", + "node_modules/jest-config/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", "peer": true, "dependencies": { - "color-convert": "^2.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-config/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/jest-config/node_modules/chalk/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", "peer": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/jest-config/node_modules/pretty-format": { @@ -15246,20 +15899,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-config/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-config/node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", @@ -15279,6 +15918,20 @@ "node": ">=8" } }, + "node_modules/jest-config/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-diff": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", @@ -15296,39 +15949,39 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-diff/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==", + "node_modules/jest-diff/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", "peer": true, "dependencies": { - "color-convert": "^2.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-diff/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/jest-diff/node_modules/chalk/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", "peer": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/jest-diff/node_modules/pretty-format": { @@ -15347,20 +16000,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-diff/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-diff/node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", @@ -15369,10 +16008,24 @@ "license": "MIT", "peer": true }, - "node_modules/jest-docblock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", - "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "node_modules/jest-diff/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", "dev": true, "license": "MIT", "peer": true, @@ -15401,39 +16054,39 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-each/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==", + "node_modules/jest-each/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", "peer": true, "dependencies": { - "color-convert": "^2.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-each/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/jest-each/node_modules/chalk/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", "peer": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/jest-each/node_modules/pretty-format": { @@ -15452,20 +16105,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-each/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-each/node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", @@ -15474,6 +16113,20 @@ "license": "MIT", "peer": true }, + "node_modules/jest-each/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-environment-node": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", @@ -15546,20 +16199,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-leak-detector/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-leak-detector/node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", @@ -15601,39 +16240,39 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-matcher-utils/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==", + "node_modules/jest-matcher-utils/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", "peer": true, "dependencies": { - "color-convert": "^2.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-matcher-utils/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/jest-matcher-utils/node_modules/chalk/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", "peer": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/jest-matcher-utils/node_modules/pretty-format": { @@ -15652,20 +16291,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-matcher-utils/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-matcher-utils/node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", @@ -15674,6 +16299,20 @@ "license": "MIT", "peer": true }, + "node_modules/jest-matcher-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-message-util": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", @@ -15696,39 +16335,39 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-message-util/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==", + "node_modules/jest-message-util/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", "peer": true, "dependencies": { - "color-convert": "^2.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-message-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/jest-message-util/node_modules/chalk/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", "peer": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/jest-message-util/node_modules/pretty-format": { @@ -15747,20 +16386,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-message-util/node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", @@ -15780,6 +16405,20 @@ "node": ">=8" } }, + "node_modules/jest-message-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-mock": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", @@ -15909,6 +16548,20 @@ "node": ">=8" } }, + "node_modules/jest-resolve/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-runner": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", @@ -15978,6 +16631,20 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/jest-runner/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-runtime": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", @@ -16059,6 +16726,20 @@ "node": ">=8" } }, + "node_modules/jest-runtime/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-snapshot": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", @@ -16092,39 +16773,39 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-snapshot/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==", + "node_modules/jest-snapshot/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", "peer": true, "dependencies": { - "color-convert": "^2.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-snapshot/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/jest-snapshot/node_modules/chalk/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", "peer": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/jest-snapshot/node_modules/pretty-format": { @@ -16143,20 +16824,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-snapshot/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-snapshot/node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", @@ -16165,6 +16832,20 @@ "license": "MIT", "peer": true }, + "node_modules/jest-snapshot/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-util": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", @@ -16233,6 +16914,20 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/jest-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-validate": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", @@ -16252,23 +16947,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-validate/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", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-validate/node_modules/camelcase": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", @@ -16301,6 +16979,23 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/jest-validate/node_modules/chalk/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", + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/jest-validate/node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", @@ -16317,20 +17012,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-validate/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-validate/node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", @@ -16339,6 +17020,20 @@ "license": "MIT", "peer": true }, + "node_modules/jest-validate/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-watcher": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", @@ -16395,6 +17090,20 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/jest-watcher/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-worker": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", @@ -16412,23 +17121,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, "node_modules/jiti": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", @@ -17481,8 +18173,21 @@ "engines": { "node": ">=10" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/log-update": { @@ -17745,9 +18450,9 @@ } }, "node_modules/loupe": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.2.tgz", - "integrity": "sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", + "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==", "dev": true, "license": "MIT" }, @@ -17934,25 +18639,25 @@ } }, "node_modules/marked-terminal": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-7.2.1.tgz", - "integrity": "sha512-rQ1MoMFXZICWNsKMiiHwP/Z+92PLKskTPXj+e7uwXmuMPkNn7iTqC+IvDekVm1MPeC9wYQeLxeFaOvudRR/XbQ==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-7.3.0.tgz", + "integrity": "sha512-t4rBvPsHc57uE/2nJOLmMbZCQ4tgAccAED3ngXQqW6g+TxA488JzJ+FK3lQkzBQOI1mRV/r/Kq+1ZlJ4D0owQw==", "dev": true, "license": "MIT", "dependencies": { "ansi-escapes": "^7.0.0", "ansi-regex": "^6.1.0", - "chalk": "^5.3.0", + "chalk": "^5.4.1", "cli-highlight": "^2.1.11", "cli-table3": "^0.6.5", - "node-emoji": "^2.1.3", + "node-emoji": "^2.2.0", "supports-hyperlinks": "^3.1.0" }, "engines": { "node": ">=16.0.0" }, "peerDependencies": { - "marked": ">=1 <15" + "marked": ">=1 <16" } }, "node_modules/marked-terminal/node_modules/ansi-escapes": { @@ -18783,6 +19488,34 @@ "node": ">=0.10.0" } }, + "node_modules/npm-run-all": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-1.4.0.tgz", + "integrity": "sha512-Le4iFE4VsbjPG4IMtuMN7gHu3UXIVnywPqBS2s3vHQe0JMGewfyWE8WYyqM509PjUybi4wbSqgW69mr3XGFr0w==", + "license": "MIT", + "dependencies": { + "babel-polyfill": "^6.2.0", + "minimatch": "^3.0.0", + "ps-tree": "^1.0.1", + "shell-quote": "^1.4.3", + "which": "^1.2.0" + }, + "bin": { + "npm-run-all": "bin/npm-run-all.js" + } + }, + "node_modules/npm-run-all/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -18894,6 +19627,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/object.values": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", @@ -19070,6 +19818,19 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -19680,6 +20441,16 @@ "node": ">=0.10" } }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/pirates": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", @@ -20065,6 +20836,42 @@ "node": ">=6.0.0" } }, + "node_modules/prettier-plugin-organize-imports": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-4.1.0.tgz", + "integrity": "sha512-5aWRdCgv645xaa58X8lOxzZoiHAldAPChljr/MT0crXVOWTZ+Svl4hIWlz+niYSlO6ikE5UXkN1JrRvIP2ut0A==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "prettier": ">=2.0", + "typescript": ">=2.9", + "vue-tsc": "^2.1.0" + }, + "peerDependenciesMeta": { + "vue-tsc": { + "optional": true + } + } + }, + "node_modules/prettier-plugin-packagejson": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/prettier-plugin-packagejson/-/prettier-plugin-packagejson-2.5.8.tgz", + "integrity": "sha512-BaGOF63I0IJZoudxpuQe17naV93BRtK8b3byWktkJReKEMX9CC4qdGUzThPDVO/AUhPzlqDiAXbp18U6X8wLKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "sort-package-json": "2.14.0", + "synckit": "0.9.2" + }, + "peerDependencies": { + "prettier": ">= 1.16.0" + }, + "peerDependenciesMeta": { + "prettier": { + "optional": true + } + } + }, "node_modules/prettier-plugin-tailwindcss": { "version": "0.6.11", "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.11.tgz", @@ -20169,19 +20976,6 @@ "node": ">=8" } }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/pretty-format/node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", @@ -20436,17 +21230,6 @@ "node": ">= 0.10" } }, - "node_modules/pump": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", - "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", - "dev": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "node_modules/punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", @@ -20522,13 +21305,6 @@ ], "license": "MIT" }, - "node_modules/queue-tick": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", - "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", - "dev": true, - "license": "MIT" - }, "node_modules/railroad-diagrams": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", @@ -20685,6 +21461,19 @@ "typescript": ">= 4.3.x" } }, + "node_modules/react-docgen/node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/react-dom": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", @@ -20778,16 +21567,6 @@ "pify": "^2.3.0" } }, - "node_modules/read-cache/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -21161,27 +21940,10 @@ "dev": true, "license": "MIT" }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/rollup": { - "version": "4.32.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.32.0.tgz", - "integrity": "sha512-JmrhfQR31Q4AuNBjjAX4s+a/Pu/Q8Q9iwjWBsjRH1q52SPFE2NqRMK6fUZKKnvKO6id+h7JIRf0oYsph53eATg==", + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.1.tgz", + "integrity": "sha512-iYZ/+PcdLYSGfH3S+dGahlW/RWmsqDhLgj1BT9DH/xXJ0ggZN7xkdP9wipPNjjNLczI+fmMLmTB9pye+d2r4GQ==", "dev": true, "license": "MIT", "dependencies": { @@ -21195,25 +21957,25 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.32.0", - "@rollup/rollup-android-arm64": "4.32.0", - "@rollup/rollup-darwin-arm64": "4.32.0", - "@rollup/rollup-darwin-x64": "4.32.0", - "@rollup/rollup-freebsd-arm64": "4.32.0", - "@rollup/rollup-freebsd-x64": "4.32.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.32.0", - "@rollup/rollup-linux-arm-musleabihf": "4.32.0", - "@rollup/rollup-linux-arm64-gnu": "4.32.0", - "@rollup/rollup-linux-arm64-musl": "4.32.0", - "@rollup/rollup-linux-loongarch64-gnu": "4.32.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.32.0", - "@rollup/rollup-linux-riscv64-gnu": "4.32.0", - "@rollup/rollup-linux-s390x-gnu": "4.32.0", - "@rollup/rollup-linux-x64-gnu": "4.32.0", - "@rollup/rollup-linux-x64-musl": "4.32.0", - "@rollup/rollup-win32-arm64-msvc": "4.32.0", - "@rollup/rollup-win32-ia32-msvc": "4.32.0", - "@rollup/rollup-win32-x64-msvc": "4.32.0", + "@rollup/rollup-android-arm-eabi": "4.34.1", + "@rollup/rollup-android-arm64": "4.34.1", + "@rollup/rollup-darwin-arm64": "4.34.1", + "@rollup/rollup-darwin-x64": "4.34.1", + "@rollup/rollup-freebsd-arm64": "4.34.1", + "@rollup/rollup-freebsd-x64": "4.34.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.34.1", + "@rollup/rollup-linux-arm-musleabihf": "4.34.1", + "@rollup/rollup-linux-arm64-gnu": "4.34.1", + "@rollup/rollup-linux-arm64-musl": "4.34.1", + "@rollup/rollup-linux-loongarch64-gnu": "4.34.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.34.1", + "@rollup/rollup-linux-riscv64-gnu": "4.34.1", + "@rollup/rollup-linux-s390x-gnu": "4.34.1", + "@rollup/rollup-linux-x64-gnu": "4.34.1", + "@rollup/rollup-linux-x64-musl": "4.34.1", + "@rollup/rollup-win32-arm64-msvc": "4.34.1", + "@rollup/rollup-win32-ia32-msvc": "4.34.1", + "@rollup/rollup-win32-x64-msvc": "4.34.1", "fsevents": "~2.3.2" } }, @@ -21408,9 +22170,9 @@ } }, "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, "license": "ISC", "bin": { @@ -21850,6 +22612,69 @@ "lodash": "^4.17.21" } }, + "node_modules/sort-object-keys": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sort-object-keys/-/sort-object-keys-1.1.3.tgz", + "integrity": "sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/sort-package-json": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/sort-package-json/-/sort-package-json-2.14.0.tgz", + "integrity": "sha512-xBRdmMjFB/KW3l51mP31dhlaiFmqkHLfWTfZAno8prb/wbDxwBPWFpxB16GZbiPbYr3wL41H8Kx22QIDWRe8WQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "detect-indent": "^7.0.1", + "detect-newline": "^4.0.0", + "get-stdin": "^9.0.0", + "git-hooks-list": "^3.0.0", + "is-plain-obj": "^4.1.0", + "semver": "^7.6.0", + "sort-object-keys": "^1.1.3", + "tinyglobby": "^0.2.9" + }, + "bin": { + "sort-package-json": "cli.js" + } + }, + "node_modules/sort-package-json/node_modules/detect-indent": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-7.0.1.tgz", + "integrity": "sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/sort-package-json/node_modules/detect-newline": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-4.0.1.tgz", + "integrity": "sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/sort-package-json/node_modules/get-stdin": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", + "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/sortablejs": { "version": "1.15.6", "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.15.6.tgz", @@ -22017,13 +22842,13 @@ "license": "MIT" }, "node_modules/storybook": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.5.2.tgz", - "integrity": "sha512-pf84emQ7Pd5jBdT2gzlNs4kRaSI3pq0Lh8lSfV+YqIVXztXIHU+Lqyhek2Lhjb7btzA1tExrhJrgQUsIji7i7A==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.5.3.tgz", + "integrity": "sha512-2WtNBZ45u1AhviRU+U+ld588tH8gDa702dNSq5C8UBaE9PlOsazGsyp90dw1s9YRvi+ejrjKAupQAU0GwwUiVg==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/core": "8.5.2" + "@storybook/core": "8.5.3" }, "bin": { "getstorybook": "bin/index.cjs", @@ -22087,14 +22912,13 @@ "license": "MIT" }, "node_modules/streamx": { - "version": "2.21.1", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.21.1.tgz", - "integrity": "sha512-PhP9wUnFLa+91CPy3N6tiQsK+gnYyUNuk15S3YG/zjYE7RuPeCjJngqnzpC31ow0lzBHQ+QGO4cNJnd0djYUsw==", + "version": "2.22.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.0.tgz", + "integrity": "sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==", "dev": true, "license": "MIT", "dependencies": { "fast-fifo": "^1.3.2", - "queue-tick": "^1.0.1", "text-decoder": "^1.1.0" }, "optionalDependencies": { @@ -22599,22 +23423,25 @@ } }, "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, "node_modules/supports-hyperlinks": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.1.0.tgz", - "integrity": "sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.2.0.tgz", + "integrity": "sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==", "dev": true, "license": "MIT", "dependencies": { @@ -22625,7 +23452,20 @@ "node": ">=14.18" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/supports-hyperlinks?sponsor=1" + } + }, + "node_modules/supports-hyperlinks/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/supports-preserve-symlinks-flag": { @@ -23020,13 +23860,6 @@ "dev": true, "license": "MIT" }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true, - "license": "MIT" - }, "node_modules/thenify": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", @@ -23296,6 +24129,19 @@ "node": ">= 14.0.0" } }, + "node_modules/ts-api-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.1.tgz", + "integrity": "sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, "node_modules/ts-dedent": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", @@ -23514,6 +24360,29 @@ "node": ">=14.17" } }, + "node_modules/typescript-eslint": { + "version": "8.23.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.23.0.tgz", + "integrity": "sha512-/LBRo3HrXr5LxmrdYSOCvoAMm7p2jNizNfbIpCgvG4HMsnoprRUOce/+8VJ9BDYWW68rqIENE/haVLWPeFZBVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.23.0", + "@typescript-eslint/parser": "8.23.0", + "@typescript-eslint/utils": "8.23.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, "node_modules/unbox-primitive": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", @@ -23743,6 +24612,19 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/update-notifier-cjs/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -23981,9 +24863,9 @@ } }, "node_modules/vite-node": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.0.4.tgz", - "integrity": "sha512-7JZKEzcYV2Nx3u6rlvN8qdo3QV7Fxyt6hx+CCKz9fbWxdX5IvUOmTWEAxMrWxaiSf7CKGLJQ5rFu8prb/jBjOA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.0.5.tgz", + "integrity": "sha512-02JEJl7SbtwSDJdYS537nU6l+ktdvcREfLksk/NDAqtdKWGqHl+joXzEubHROmS3E6pip+Xgu2tFezMu75jH7A==", "dev": true, "license": "MIT", "dependencies": { @@ -24073,19 +24955,19 @@ } }, "node_modules/vitest": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.0.4.tgz", - "integrity": "sha512-6XG8oTKy2gnJIFTHP6LD7ExFeNLxiTkK3CfMvT7IfR8IN+BYICCf0lXUQmX7i7JoxUP8QmeP4mTnWXgflu4yjw==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.0.5.tgz", + "integrity": "sha512-4dof+HvqONw9bvsYxtkfUp2uHsTN9bV2CZIi1pWgoFpL1Lld8LA1ka9q/ONSsoScAKG7NVGf2stJTI7XRkXb2Q==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/expect": "3.0.4", - "@vitest/mocker": "3.0.4", - "@vitest/pretty-format": "^3.0.4", - "@vitest/runner": "3.0.4", - "@vitest/snapshot": "3.0.4", - "@vitest/spy": "3.0.4", - "@vitest/utils": "3.0.4", + "@vitest/expect": "3.0.5", + "@vitest/mocker": "3.0.5", + "@vitest/pretty-format": "^3.0.5", + "@vitest/runner": "3.0.5", + "@vitest/snapshot": "3.0.5", + "@vitest/spy": "3.0.5", + "@vitest/utils": "3.0.5", "chai": "^5.1.2", "debug": "^4.4.0", "expect-type": "^1.1.0", @@ -24097,7 +24979,7 @@ "tinypool": "^1.0.2", "tinyrainbow": "^2.0.0", "vite": "^5.0.0 || ^6.0.0", - "vite-node": "3.0.4", + "vite-node": "3.0.5", "why-is-node-running": "^2.3.0" }, "bin": { @@ -24113,8 +24995,8 @@ "@edge-runtime/vm": "*", "@types/debug": "^4.1.12", "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "@vitest/browser": "3.0.4", - "@vitest/ui": "3.0.4", + "@vitest/browser": "3.0.5", + "@vitest/ui": "3.0.5", "happy-dom": "*", "jsdom": "*" }, @@ -24143,14 +25025,14 @@ } }, "node_modules/vitest/node_modules/@vitest/expect": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.4.tgz", - "integrity": "sha512-Nm5kJmYw6P2BxhJPkO3eKKhGYKRsnqJqf+r0yOGRKpEP+bSCBDsjXgiu1/5QFrnPMEgzfC38ZEjvCFgaNBC0Eg==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.5.tgz", + "integrity": "sha512-nNIOqupgZ4v5jWuQx2DSlHLEs7Q4Oh/7AYwNyE+k0UQzG7tSmjPXShUikn1mpNGzYEN2jJbTvLejwShMitovBA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "3.0.4", - "@vitest/utils": "3.0.4", + "@vitest/spy": "3.0.5", + "@vitest/utils": "3.0.5", "chai": "^5.1.2", "tinyrainbow": "^2.0.0" }, @@ -24159,9 +25041,9 @@ } }, "node_modules/vitest/node_modules/@vitest/pretty-format": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.4.tgz", - "integrity": "sha512-ts0fba+dEhK2aC9PFuZ9LTpULHpY/nd6jhAQ5IMU7Gaj7crPCTdCFfgvXxruRBLFS+MLraicCuFXxISEq8C93g==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.5.tgz", + "integrity": "sha512-CjUtdmpOcm4RVtB+up8r2vVDLR16Mgm/bYdkGFe3Yj/scRfCpbSi2W/BDSDcFK7ohw8UXvjMbOp9H4fByd/cOA==", "dev": true, "license": "MIT", "dependencies": { @@ -24172,9 +25054,9 @@ } }, "node_modules/vitest/node_modules/@vitest/spy": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.4.tgz", - "integrity": "sha512-sXIMF0oauYyUy2hN49VFTYodzEAu744MmGcPR3ZBsPM20G+1/cSW/n1U+3Yu/zHxX2bIDe1oJASOkml+osTU6Q==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.5.tgz", + "integrity": "sha512-5fOzHj0WbUNqPK6blI/8VzZdkBlQLnT25knX0r4dbZI9qoZDf3qAdjoMmDcLG5A83W6oUUFJgUd0EYBc2P5xqg==", "dev": true, "license": "MIT", "dependencies": { @@ -24185,13 +25067,13 @@ } }, "node_modules/vitest/node_modules/@vitest/utils": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.4.tgz", - "integrity": "sha512-8BqC1ksYsHtbWH+DfpOAKrFw3jl3Uf9J7yeFh85Pz52IWuh1hBBtyfEbRNNZNjl8H8A5yMLH9/t+k7HIKzQcZQ==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.5.tgz", + "integrity": "sha512-N9AX0NUoUtVwKwy21JtwzaqR5L5R5A99GAbrHfCCXK1lp593i/3AZAXhSP43wRQuxYsflrdzEfXZFo1reR1Nkg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.0.4", + "@vitest/pretty-format": "3.0.5", "loupe": "^3.1.2", "tinyrainbow": "^2.0.0" }, diff --git a/package.json b/package.json index b80de89e..1a2c1d95 100644 --- a/package.json +++ b/package.json @@ -1,36 +1,53 @@ { "name": "@ugrc/plss-app", - "description": "A React app for the UGRC PLSS", - "type": "module", - "private": true, "version": "3.5.19", + "private": true, + "description": "A React app for the UGRC PLSS", "license": "MIT", "author": "UGRC", + "type": "module", "main": "./src/functions/index.mjs", - "engines": { - "node": "20" - }, "scripts": { + "build": "vite build", + "build-storybook": "storybook build", "cm": "cz", "copy:arcgis": "cpy \"./node_modules/@arcgis/core/assets/**\" ./public/assets", + "coverage": "vitest run --coverage", "dev": "cross-env NODE_ENV=development concurrently 'wait-on http://127.0.0.1:4000 && npm run dev:vite' 'npm run dev:firebase'", "dev:firebase": "cross-env NODE_ENV=development firebase emulators:start --import .emulator-data --only auth,functions,firestore,storage", - "save-firebase-state": "cross-env NODE_ENV=development firebase emulators:start --import .emulator-data --export-on-exit --only auth,functions,firestore,storage", "dev:vite": "vite", - "build": "vite build", - "preview": "vite preview", - "lint": "eslint ./ --ext .js,.mjs,.jsx --ignore-path ./.eslintignore", - "lint:fix": "eslint ./ --ext .js,.mjs,.jsx --quiet --fix --ignore-path ./.eslintignore", - "format": "prettier \"src/**/*.{js,jsx,ts,json,mjs,md,mdx}\" --write", - "prepare": "husky", - "fb:serve": "cross-env NODE_ENV=development firebase emulators:start --only functions", "fb:deploy": "firebase deploy --only functions", - "storybook": "storybook dev -p 6006", - "build-storybook": "storybook build", + "fb:serve": "cross-env NODE_ENV=development firebase emulators:start --only functions", + "format": "prettier . --write", + "lint": "eslint . --report-unused-disable-directives --max-warnings 0", + "prepare": "husky", + "preview": "vite preview", + "save-firebase-state": "cross-env NODE_ENV=development firebase emulators:start --import .emulator-data --export-on-exit --only auth,functions,firestore,storage", "start": "npm run dev", + "storybook": "storybook dev -p 6006", "test": "vitest --silent --coverage --ui --open", - "test:ci": "firebase emulators:exec --only storage 'FIREBASE_STORAGE_EMULATOR_HOST=127.0.0.1:9199 npm run test'", - "coverage": "vitest run --coverage" + "test:ci": "firebase emulators:exec --only storage 'FIREBASE_STORAGE_EMULATOR_HOST=127.0.0.1:9199 npm run test'" + }, + "lint-staged": { + "*.{js,jsx,mjs}": "eslint --cache --fix", + "*.{md,yml,yaml,json}": "prettier --write" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "browserslist": { + "production": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] }, "dependencies": { "@arcgis/core": "^4.31.6", @@ -39,8 +56,8 @@ "@hookform/error-message": "^2.0.1", "@hookform/resolvers": "^3.10.0", "@react-hook/window-size": "^3.1.1", - "@tanstack/react-query": "^5.65.0", - "@tanstack/react-query-devtools": "^5.65.0", + "@tanstack/react-query": "^5.66.0", + "@tanstack/react-query-devtools": "^5.66.0", "@ugrc/layer-selector": "^6.2.12", "@ugrc/utilities": "^3.0.0", "@xstate/react": "^5.0.2", @@ -66,109 +83,56 @@ "yup": "^1.6.1" }, "devDependencies": { - "@commitlint/cli": "^19.6.1", - "@commitlint/config-conventional": "^19.6.0", + "@commitlint/cli": "^19.7.1", + "@commitlint/config-conventional": "^19.7.1", + "@eslint/js": "^9.19.0", "@firebase/rules-unit-testing": "^2.0.7", "@hookform/devtools": "^4.3.3", - "@storybook/addon-actions": "^8.5.2", - "@storybook/addon-essentials": "^8.5.2", - "@storybook/addon-interactions": "^8.5.2", - "@storybook/addon-links": "^8.5.2", - "@storybook/react-vite": "^8.5.2", + "@storybook/addon-actions": "^8.5.3", + "@storybook/addon-essentials": "^8.5.3", + "@storybook/addon-interactions": "^8.5.3", + "@storybook/addon-links": "^8.5.3", + "@storybook/react-vite": "^8.5.3", "@types/react": "^18.3.11", "@types/react-dom": "^18.3.0", "@vitejs/plugin-react-swc": "^3.7.2", - "@vitest/coverage-v8": "^3.0.4", - "@vitest/ui": "^3.0.4", + "@vitest/coverage-v8": "^3.0.5", + "@vitest/ui": "^3.0.5", "autoprefixer": "^10.4.20", "commitizen": "^4.3.1", "concurrently": "^9.1.2", "cpy-cli": "^5.0.0", "cross-env": "^7.0.3", "cz-conventional-changelog": "^3.3.0", - "eslint": "^8.57.0", + "eslint": "^9.19.0", "eslint-config-prettier": "^10.0.1", + "eslint-plugin-import": "^2.31.0", "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-prettier": "^5.2.3", "eslint-plugin-react": "^7.37.4", "eslint-plugin-react-hooks": "^5.1.0", "eslint-plugin-react-refresh": "^0.4.18", + "eslint-plugin-storybook": "^0.11.2", "firebase-functions-test": "^3.4.0", - "firebase-tools": "^13.29.2", + "firebase-tools": "^13.29.3", + "globals": "^15.14.0", "husky": "^9.1.7", "lint-staged": "^15.4.3", "postcss": "^8.5.1", "prettier": "^3.4.2", + "prettier-plugin-organize-imports": "^4.1.0", + "prettier-plugin-packagejson": "^2.5.8", "prettier-plugin-tailwindcss": "^0.6.11", - "storybook": "^8.5.2", + "storybook": "^8.5.3", "tailwindcss": "^3.4.17", + "typescript-eslint": "^8.23.0", "vite": "^6.0.11", "vite-plugin-eslint": "^1.8.1", "vite-plugin-package-version": "^1.1.0", - "vitest": "^3.0.4", + "vitest": "^3.0.5", "wait-on": "^8.0.2" }, - "eslintConfig": { - "env": { - "browser": true, - "es2021": true, - "node": true, - "jest": true - }, - "extends": [ - "eslint:recommended", - "plugin:react/recommended", - "plugin:react/jsx-runtime", - "plugin:react-hooks/recommended", - "plugin:jsx-a11y/recommended", - "prettier" - ], - "parserOptions": { - "ecmaFeatures": { - "jsx": true - }, - "ecmaVersion": "latest", - "sourceType": "module" - }, - "plugins": [ - "react", - "prettier", - "jsx-a11y", - "react-hooks", - "react-refresh" - ], - "rules": { - "react-refresh/only-export-components": "warn" - }, - "settings": { - "react": { - "version": "detect" - } - } - }, - "prettier": { - "singleQuote": true, - "semi": true - }, - "browserslist": { - "production": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - }, - "lint-staged": { - "*.{js,jsx,mjs}": "eslint --cache --fix", - "*.{md,yml,yaml,json}": "prettier --write" - }, - "config": { - "commitizen": { - "path": "./node_modules/cz-conventional-changelog" - } + "engines": { + "node": "20" } } diff --git a/src/components/app/App.jsx b/src/components/app/App.jsx index 166a1300..5c8b5dc2 100644 --- a/src/components/app/App.jsx +++ b/src/components/app/App.jsx @@ -1,20 +1,14 @@ -import { useImmerReducer } from 'use-immer'; -import { - AnalyticsProvider, - AuthProvider, - useFirebaseApp, - FunctionsProvider, - StorageProvider, -} from 'reactfire'; import { getAnalytics } from 'firebase/analytics'; -import { getAuth, connectAuthEmulator } from 'firebase/auth'; -import { getFunctions, connectFunctionsEmulator } from 'firebase/functions'; -import { getStorage, connectStorageEmulator } from 'firebase/storage'; -import { getFirestore, connectFirestoreEmulator } from 'firebase/firestore'; -import reduce, { defaults } from '../reducers/AppReducer'; +import { connectAuthEmulator, getAuth } from 'firebase/auth'; +import { connectFirestoreEmulator, getFirestore } from 'firebase/firestore'; +import { connectFunctionsEmulator, getFunctions } from 'firebase/functions'; +import { connectStorageEmulator, getStorage } from 'firebase/storage'; +import { AnalyticsProvider, AuthProvider, FunctionsProvider, StorageProvider, useFirebaseApp } from 'reactfire'; +import { useImmerReducer } from 'use-immer'; import Drawer from '../layoutElements/Drawer.jsx'; import Menu from '../layoutElements/Menu.jsx'; import Map from '../pageElements/Map.jsx'; +import reduce, { defaults } from '../reducers/AppReducer'; export default function App() { const [state, dispatch] = useImmerReducer(reduce, defaults); @@ -38,10 +32,7 @@ export default function App() { } } - if ( - typeof window === 'undefined' || - !window['_firebase_functions_emulator'] - ) { + if (typeof window === 'undefined' || !window['_firebase_functions_emulator']) { try { connectFunctionsEmulator(functions, 'localhost', 5001); } catch { @@ -52,10 +43,7 @@ export default function App() { } } - if ( - typeof window === 'undefined' || - !window['_firebase_storage_emulator'] - ) { + if (typeof window === 'undefined' || !window['_firebase_storage_emulator']) { try { connectStorageEmulator(storage, 'localhost', 9199); } catch { @@ -66,10 +54,7 @@ export default function App() { } } - if ( - typeof window === 'undefined' || - !window['_firebase_firestore_emulator'] - ) { + if (typeof window === 'undefined' || !window['_firebase_firestore_emulator']) { try { connectFirestoreEmulator(firestore, 'localhost', 8080); } catch { @@ -87,12 +72,7 @@ export default function App() {
- + menu diff --git a/src/components/contexts/SubmissionContext.jsx b/src/components/contexts/SubmissionContext.jsx index 367c8a70..cef59073 100644 --- a/src/components/contexts/SubmissionContext.jsx +++ b/src/components/contexts/SubmissionContext.jsx @@ -1,6 +1,6 @@ -import { createContext } from 'react'; -import PropTypes from 'prop-types'; import { useMachine } from '@xstate/react'; +import PropTypes from 'prop-types'; +import { createContext } from 'react'; import { submissionMachine } from '../machines'; export const SubmissionContext = createContext({}); @@ -10,11 +10,7 @@ export const SubmissionProvider = ({ children, context }) => { input: { ...context }, }); - return ( - - {children} - - ); + return {children}; }; SubmissionProvider.propTypes = { diff --git a/src/components/formElements/Buttons.jsx b/src/components/formElements/Buttons.jsx index 31230c39..5d0a0645 100644 --- a/src/components/formElements/Buttons.jsx +++ b/src/components/formElements/Buttons.jsx @@ -1,8 +1,8 @@ +import { ExclamationCircleIcon } from '@heroicons/react/20/solid'; import clsx from 'clsx'; -import PropTypes from 'prop-types'; import { OAuthProvider, signInWithPopup } from 'firebase/auth'; +import PropTypes from 'prop-types'; import { useAuth } from 'reactfire'; -import { ExclamationCircleIcon } from '@heroicons/react/20/solid'; export const LogInButton = () => { const auth = useAuth(); @@ -154,14 +154,7 @@ export const Button = ({ fill="none" viewBox="0 0 24 24" > - + )} - {state === 'error' && ( - - )} + {state === 'error' && } {children} ); @@ -210,14 +201,7 @@ Button.propTypes = { buttonGroup: PropTypes.object, }; -export const Link = ({ - href, - children, - target, - rel, - buttonGroup, - style = 'link', -}) => { +export const Link = ({ href, children, target, rel, buttonGroup, style = 'link' }) => { const attributes = { target, rel, diff --git a/src/components/formElements/FileUpload.jsx b/src/components/formElements/FileUpload.jsx index ed4188ec..4012ea47 100644 --- a/src/components/formElements/FileUpload.jsx +++ b/src/components/formElements/FileUpload.jsx @@ -1,19 +1,12 @@ -import { useEffect, useRef, useState } from 'react'; +import clsx from 'clsx'; +import { deleteObject, getDownloadURL, ref, uploadBytesResumable } from 'firebase/storage'; import PropTypes from 'prop-types'; +import { useEffect, useRef, useState } from 'react'; import { useStorage } from 'reactfire'; -import { - deleteObject, - getDownloadURL, - ref, - uploadBytesResumable, -} from 'firebase/storage'; -import clsx from 'clsx'; import { Button } from './Buttons.jsx'; const validateContentTypes = (contentType, contentTypes) => { - const found = contentTypes.find( - (meta) => contentType === meta.value.toLowerCase(), - ); + const found = contentTypes.find((meta) => contentType === meta.value.toLowerCase()); if (found) { return [true, '']; @@ -28,14 +21,7 @@ const validateSize = (actualSize, megabytes) => { return actualSize > megabytes * 1024 * 1024; }; -const FileUpload = ({ - defaultFileName, - path, - contentTypes, - maxFileSize, - value, - onChange, -}) => { +const FileUpload = ({ defaultFileName, path, contentTypes, maxFileSize, value, onChange }) => { const storage = useStorage(); const uploadReference = useRef(); const [fileUrl, setFileUrl] = useState(''); @@ -54,10 +40,7 @@ const FileUpload = ({ const fileToUpload = fileList[0]; let fileName = fileToUpload.name; - let [hasValidType, errorMessage] = validateContentTypes( - fileToUpload.type, - contentTypes, - ); + let [hasValidType, errorMessage] = validateContentTypes(fileToUpload.type, contentTypes); if (!hasValidType) { setUploadError(errorMessage); return; @@ -70,10 +53,7 @@ const FileUpload = ({ uploadReference.current = ref(storage, `${path}/${fileName}`); - const uploadTask = uploadBytesResumable( - uploadReference.current, - fileToUpload, - ); + const uploadTask = uploadBytesResumable(uploadReference.current, fileToUpload); uploadTask?.on( 'state_changed', @@ -97,14 +77,10 @@ const FileUpload = ({ ).toFixed(2)}MB.`, ); } else { - setUploadError( - 'Permission denied. Check your login status and try again.', - ); + setUploadError('Permission denied. Check your login status and try again.'); } } catch { - setUploadError( - 'Permission denied. Check your login status and try again.', - ); + setUploadError('Permission denied. Check your login status and try again.'); } }, async () => { @@ -135,11 +111,7 @@ const FileUpload = ({ name={defaultFileName} id={defaultFileName} onChange={uploadFile} - className="w-max text-center text-sm text-slate-400 file:flex file:min-h-[2rem] file:cursor-pointer file:rounded-full file:border-2 - file:border-solid file:border-sky-600 file:bg-sky-500 file:px-7 file:py-1 file:text-sm - file:font-semibold file:text-white file:transition-all file:duration-200 file:ease-in-out hover:file:bg-sky-600 - file:focus:border-sky-500 file:focus:outline-none file:focus:ring-2 file:focus:ring-sky-600 file:focus:ring-opacity-50 - file:active:bg-sky-700 file:disabled:cursor-not-allowed file:disabled:opacity-50" + className="w-max text-center text-sm text-slate-400 file:flex file:min-h-[2rem] file:cursor-pointer file:rounded-full file:border-2 file:border-solid file:border-sky-600 file:bg-sky-500 file:px-7 file:py-1 file:text-sm file:font-semibold file:text-white file:transition-all file:duration-200 file:ease-in-out hover:file:bg-sky-600 file:focus:border-sky-500 file:focus:outline-none file:focus:ring-2 file:focus:ring-sky-600 file:focus:ring-opacity-50 file:active:bg-sky-700 file:disabled:cursor-not-allowed file:disabled:opacity-50" /> {uploadPercent !== undefined && ( { return (
{url.search(/\.pdf\?/i) > -1 ? ( - + PDF preview ) : ( - upload preview + upload preview )} diff --git a/src/components/formElements/Form.jsx b/src/components/formElements/Form.jsx index aeb304ae..2ecd59b6 100644 --- a/src/components/formElements/Form.jsx +++ b/src/components/formElements/Form.jsx @@ -2,10 +2,7 @@ import PropTypes from 'prop-types'; export function NumberedForm({ children, onSubmit }) { return ( -
+
{children}
@@ -26,7 +23,7 @@ export function NumberedFormSection({ children, number, title }) {
{title ? title : children}
- {title &&
{children}
} + {title &&
{children}
} ); } diff --git a/src/components/formElements/Inputs.jsx b/src/components/formElements/Inputs.jsx index cb851fd3..220a2967 100644 --- a/src/components/formElements/Inputs.jsx +++ b/src/components/formElements/Inputs.jsx @@ -22,7 +22,7 @@ export const Input = forwardRef( ref, ) => { const classes = clsx( - 'border border-slate-400 bg-white py-2 px-3 text-slate-800 placeholder:text-slate-400 shadow-sm transition-all duration-200 ease-in-out focus:border-sky-500 focus:outline-none focus:ring focus:ring-sky-600 focus:ring-opacity-50 disabled:cursor-not-allowed disabled:opacity-50 sm:text-sm', + 'border border-slate-400 bg-white px-3 py-2 text-slate-800 shadow-sm transition-all duration-200 ease-in-out placeholder:text-slate-400 focus:border-sky-500 focus:outline-none focus:ring focus:ring-sky-600 focus:ring-opacity-50 disabled:cursor-not-allowed disabled:opacity-50 sm:text-sm', { 'rounded-md': !left, 'rounded-l-md': left, @@ -90,10 +90,7 @@ Input.propTypes = { /** * Custom css class names to append to the defaults */ - className: PropTypes.oneOfType([ - PropTypes.string, - PropTypes.arrayOf(PropTypes.string), - ]), + className: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]), touched: PropTypes.bool, step: PropTypes.string, min: PropTypes.string, diff --git a/src/components/formElements/LimitedTextarea.jsx b/src/components/formElements/LimitedTextarea.jsx index 20bdd2d5..902631c3 100644 --- a/src/components/formElements/LimitedTextarea.jsx +++ b/src/components/formElements/LimitedTextarea.jsx @@ -1,6 +1,6 @@ +import { ErrorMessage } from '@hookform/error-message'; import clsx from 'clsx'; import PropTypes from 'prop-types'; -import { ErrorMessage } from '@hookform/error-message'; import ErrorMessageTag from '../pageElements/ErrorMessage.jsx'; export const LimitedTextarea = ({ @@ -95,8 +95,7 @@ export const CharactersRemaining = ({ remaining, limit }) => { className={clsx('absolute bottom-0 right-3', { 'text-xs text-slate-500': percentage >= 0 && percentage < 0.8, 'text-xs text-amber-600': percentage >= 0.8 && percentage < 0.9, - 'border border-red-600 bg-white p-2 text-lg font-black text-red-600': - percentage >= 0.9, + 'border border-red-600 bg-white p-2 text-lg font-black text-red-600': percentage >= 0.9, })} > {remaining} characters left diff --git a/src/components/formElements/Note.jsx b/src/components/formElements/Note.jsx index ba4560bd..6eb9e5c2 100644 --- a/src/components/formElements/Note.jsx +++ b/src/components/formElements/Note.jsx @@ -1,11 +1,7 @@ import PropTypes from 'prop-types'; export default function Note({ children }) { - return ( -

- {children} -

- ); + return

{children}

; } Note.propTypes = { children: PropTypes.node.isRequired, diff --git a/src/components/formElements/Select.jsx b/src/components/formElements/Select.jsx index af399ebf..87372c82 100644 --- a/src/components/formElements/Select.jsx +++ b/src/components/formElements/Select.jsx @@ -1,15 +1,8 @@ -import { forwardRef, Fragment } from 'react'; -import PropTypes from 'prop-types'; -import { - Listbox, - ListboxButton, - Label, - ListboxOption, - ListboxOptions, - Transition, -} from '@headlessui/react'; +import { Label, Listbox, ListboxButton, ListboxOption, ListboxOptions, Transition } from '@headlessui/react'; import { CheckIcon, ChevronUpDownIcon } from '@heroicons/react/20/solid'; import clsx from 'clsx'; +import PropTypes from 'prop-types'; +import { forwardRef, Fragment } from 'react'; const getDefaultValue = (value, placeholder, options) => { if ((value?.length ?? 0) < 1) { @@ -21,9 +14,7 @@ const getDefaultValue = (value, placeholder, options) => { } if (Object.keys(options[0]).includes('value')) { - const label = options.find( - (option) => option.value === (value?.value ?? value), - )?.label; + const label = options.find((option) => option.value === (value?.value ?? value))?.label; if (!label) { return placeholder; @@ -41,106 +32,85 @@ const getDefaultValue = (value, placeholder, options) => { return option; }; -export const Select = forwardRef( - ( - { disabled, label, name, required, options, value, onChange, placeholder }, - ref, - ) => { - return ( - { - if (onChange) { - onChange(newValue?.value ?? newValue); - } - }} - > - {label !== false && ( - - )} -
- - - {getDefaultValue(value, placeholder, options)} - - - - - - - {(options?.length ?? 0) > 0 ? ( - options?.map((option, id) => ( - - clsx( - 'relative cursor-default select-none py-2 pl-10 pr-4', - { - 'bg-sky-100 text-sky-900': focus, - 'text-sky-900': !focus && !option?.disabled, - 'cursor-not-allowed text-slate-400': - option?.disabled ?? false, - }, - ) - } - value={option} - disabled={option?.disabled ?? false} - > - {({ selected }) => ( - <> - - {option?.label ?? option} +export const Select = forwardRef(({ disabled, label, name, required, options, value, onChange, placeholder }, ref) => { + return ( + { + if (onChange) { + onChange(newValue?.value ?? newValue); + } + }} + > + {label !== false && ( + + )} +
+ + {getDefaultValue(value, placeholder, options)} + + + + + + {(options?.length ?? 0) > 0 ? ( + options?.map((option, id) => ( + + clsx('relative cursor-default select-none py-2 pl-10 pr-4', { + 'bg-sky-100 text-sky-900': focus, + 'text-sky-900': !focus && !option?.disabled, + 'cursor-not-allowed text-slate-400': option?.disabled ?? false, + }) + } + value={option} + disabled={option?.disabled ?? false} + > + {({ selected }) => ( + <> + + {option?.label ?? option} + + {selected ? ( + + - {selected ? ( - - - ) : null} - - )} - - )) - ) : ( -
- This list is empty 😶 -
- )} -
-
-
-
- ); - }, -); + ) : null} + + )} +
+ )) + ) : ( +
+ This list is empty 😶 +
+ )} +
+
+
+
+ ); +}); Select.displayName = 'Select'; Select.propTypes = { /** @@ -167,14 +137,8 @@ Select.propTypes = { * The options to place inside the select */ options: PropTypes.arrayOf( - PropTypes.oneOfType([ - PropTypes.string, - PropTypes.shape({ label: PropTypes.string, value: PropTypes.string }), - ]), + PropTypes.oneOfType([PropTypes.string, PropTypes.shape({ label: PropTypes.string, value: PropTypes.string })]), ), - value: PropTypes.oneOfType([ - PropTypes.string, - PropTypes.shape({ label: PropTypes.string, value: PropTypes.string }), - ]), + value: PropTypes.oneOfType([PropTypes.string, PropTypes.shape({ label: PropTypes.string, value: PropTypes.string })]), onChange: PropTypes.func, }; diff --git a/src/components/formElements/Select.stories.jsx b/src/components/formElements/Select.stories.jsx index 33ee4207..52ce80f6 100644 --- a/src/components/formElements/Select.stories.jsx +++ b/src/components/formElements/Select.stories.jsx @@ -96,10 +96,7 @@ export const ResetInForm = () => { /> )} /> - diff --git a/src/components/formElements/Switch.jsx b/src/components/formElements/Switch.jsx index e136b60c..414e80c5 100644 --- a/src/components/formElements/Switch.jsx +++ b/src/components/formElements/Switch.jsx @@ -1,19 +1,11 @@ -import { forwardRef } from 'react'; -import PropTypes from 'prop-types'; import { Switch } from '@headlessui/react'; import clsx from 'clsx'; +import PropTypes from 'prop-types'; +import { forwardRef } from 'react'; const Toggle = forwardRef( ( - { - name, - value = false, - onChange, - screenReader = 'Toggle', - hideLabel = false, - yesValue = 'Yes', - noValue = 'No', - }, + { name, value = false, onChange, screenReader = 'Toggle', hideLabel = false, yesValue = 'Yes', noValue = 'No' }, ref, ) => { return ( @@ -33,17 +25,14 @@ const Toggle = forwardRef( className={clsx( { 'translate-x-8 border-sky-800 from-sky-300 to-sky-800': value, - 'translate-x-0 border-slate-500 from-white to-slate-300': - !value, + 'translate-x-0 border-slate-500 from-white to-slate-300': !value, }, 'pointer-events-none inline-block h-6 w-6 transform rounded-full border-2 bg-gradient-to-br shadow-lg ring-0 transition duration-200 ease-in-out', )} /> {!hideLabel && ( - - {value ? yesValue : noValue} - + {value ? yesValue : noValue} )} ); diff --git a/src/components/hooks/usePageView.jsx b/src/components/hooks/usePageView.jsx index 29b1e07f..e0b15dee 100644 --- a/src/components/hooks/usePageView.jsx +++ b/src/components/hooks/usePageView.jsx @@ -1,6 +1,6 @@ -import { useAnalytics } from 'reactfire'; import { logEvent } from 'firebase/analytics'; import { useEffect } from 'react'; +import { useAnalytics } from 'reactfire'; export default function usePageView(page, data) { const analytics = useAnalytics(); diff --git a/src/components/layoutElements/Drawer.jsx b/src/components/layoutElements/Drawer.jsx index 61b4e133..e9678456 100644 --- a/src/components/layoutElements/Drawer.jsx +++ b/src/components/layoutElements/Drawer.jsx @@ -14,9 +14,7 @@ const SubmissionProvider = lazy(() => default: module.SubmissionProvider, })), ); -const CornerSubmission = lazy( - () => import('../pageElements/CornerSubmission/CornerSubmission.jsx'), -); +const CornerSubmission = lazy(() => import('../pageElements/CornerSubmission/CornerSubmission.jsx')); const MyContent = lazy(() => import('../pageElements/MyContent.jsx')); const AddPoint = lazy(() => import('../pageElements/AddPoint.jsx')); const Identify = lazy(() => import('../pageElements/Identify.jsx')); @@ -25,15 +23,7 @@ const Profile = lazy(() => import('../pageElements/Profile.jsx')); const Welcome = lazy(() => import('../pageElements/Welcome.jsx')); const Legend = lazy(() => import('../pageElements/Legend.jsx')); -export default function Drawer({ - dispatch, - authenticated, - map, - addPoint, - activeComponent, - drawerOpen, - submission, -}) { +export default function Drawer({ dispatch, authenticated, map, addPoint, activeComponent, drawerOpen, submission }) { const { data: signInCheckResult } = useSigninCheck(); const scrollContainer = useRef(); @@ -76,11 +66,7 @@ export default function Drawer({ } case 'points': { return signInCheckResult?.signedIn ? ( - + ) : ( ); @@ -99,13 +85,7 @@ export default function Drawer({ return ; } case 'identify': { - return ( - - ); + return ; } case 'submission': { return ( @@ -121,16 +101,14 @@ export default function Drawer({ ); diff --git a/src/components/layoutElements/Menu.jsx b/src/components/layoutElements/Menu.jsx index 73aca83f..c2d2f703 100644 --- a/src/components/layoutElements/Menu.jsx +++ b/src/components/layoutElements/Menu.jsx @@ -1,29 +1,13 @@ -import PropTypes from 'prop-types'; +import { FolderIcon, HomeModernIcon, PlusCircleIcon, SwatchIcon, UserCircleIcon } from '@heroicons/react/24/outline'; import clsx from 'clsx'; -import { - FolderIcon, - PlusCircleIcon, - UserCircleIcon, - SwatchIcon, - HomeModernIcon, -} from '@heroicons/react/24/outline'; +import PropTypes from 'prop-types'; import { useUser } from 'reactfire'; export default function Menu({ dispatch, drawerOpen }) { const { data: user } = useUser(); const classes = clsx( - [ - 'menu', - 'z-20', - 'flex', - 'py-4', - 'bg-slate-800/95', - 'shadow', - 'menu', - 'md:justify-between', - 'justify-evenly', - ], + ['menu', 'z-20', 'flex', 'py-4', 'bg-slate-800/95', 'shadow', 'menu', 'md:justify-between', 'justify-evenly'], { 'menu--open': drawerOpen, }, @@ -31,40 +15,23 @@ export default function Menu({ dispatch, drawerOpen }) { return ( diff --git a/src/components/machines/geolocation.js b/src/components/machines/geolocation.js index 94e5f011..bb60b7fb 100644 --- a/src/components/machines/geolocation.js +++ b/src/components/machines/geolocation.js @@ -1,5 +1,5 @@ -import { assign, fromCallback, setup } from 'xstate'; import Graphic from '@arcgis/core/Graphic'; +import { assign, fromCallback, setup } from 'xstate'; const updatePosition = assign({ position: ({ event }) => { diff --git a/src/components/machines/index.js b/src/components/machines/index.js index dcdf0316..70337651 100644 --- a/src/components/machines/index.js +++ b/src/components/machines/index.js @@ -1,8 +1,8 @@ // @ts-check -import { assign, fromPromise, setup } from 'xstate'; -import ky from 'ky'; import DmsCoordinates, { parseDms } from 'dms-conversion'; +import ky from 'ky'; +import { assign, fromPromise, setup } from 'xstate'; import { countiesInZone, createProjectFormData, @@ -47,18 +47,14 @@ const project = (grid) => { return ky .post('project', { body: formData, - prefixUrl: - 'https://mapserv.utah.gov/arcgis/rest/services/Geometry/GeometryServer', + prefixUrl: 'https://mapserv.utah.gov/arcgis/rest/services/Geometry/GeometryServer', }) .json(); }; const coordinateToDecimalDegrees = (geographic) => { return new Promise((resolve) => { - const dms = [ - `${formatDegrees(geographic.northing)} N`, - `${formatDegrees(geographic.easting)} W`, - ]; + const dms = [`${formatDegrees(geographic.northing)} N`, `${formatDegrees(geographic.easting)} W`]; const [y, x] = dms.map(parseDms); @@ -104,8 +100,7 @@ const projectToStatePlane = (coordinates) => { return ky .post('project', { body: formData, - prefixUrl: - 'https://mapserv.utah.gov/arcgis/rest/services/Geometry/GeometryServer', + prefixUrl: 'https://mapserv.utah.gov/arcgis/rest/services/Geometry/GeometryServer', }) .json(); }; @@ -132,14 +127,11 @@ export const submissionMachine = setup({ 'is new submission': ({ context }) => context.type === 'new', 'is existing submission': ({ context }) => context.type === 'existing', 'is grid datum': ({ context }) => context.datum.split('-')[0] === 'grid', - 'is geographic datum': ({ context }) => - context.datum.split('-')[0] === 'geographic', + 'is geographic datum': ({ context }) => context.datum.split('-')[0] === 'geographic', }, actors: { project: fromPromise(({ input }) => project(input)), - coordinateToDecimalDegrees: fromPromise(({ input }) => - coordinateToDecimalDegrees(input), - ), + coordinateToDecimalDegrees: fromPromise(({ input }) => coordinateToDecimalDegrees(input)), queryForCounty: fromPromise(({ input }) => queryForCounty(input)), projectToStatePlane: fromPromise(({ input }) => projectToStatePlane({ @@ -471,10 +463,7 @@ export const submissionMachine = setup({ return ''; } - const county = - event.output.features[0].attributes[ - 'NAME' - ]?.toLowerCase(); + const county = event.output.features[0].attributes['NAME']?.toLowerCase(); let zone; @@ -534,10 +523,7 @@ export const submissionMachine = setup({ src: fromPromise( ({ input: { decimalDegrees } }) => new Promise((resolve) => { - const dmsCoords = new DmsCoordinates( - decimalDegrees.y, - decimalDegrees.x, - ); + const dmsCoords = new DmsCoordinates(decimalDegrees.y, decimalDegrees.x); resolve(dmsCoords.dmsArrays); }), diff --git a/src/components/machines/index.test.js b/src/components/machines/index.test.js index 3d44e482..ce41e2a7 100644 --- a/src/components/machines/index.test.js +++ b/src/components/machines/index.test.js @@ -15,9 +15,7 @@ describe('updateContext', () => { }); test('it can update an existing property on an existing object', () => { - expect( - updateContext({ property: 'value' }, 'property', 'new value'), - ).toEqual({ + expect(updateContext({ property: 'value' }, 'property', 'new value')).toEqual({ property: 'new value', }); }); @@ -30,11 +28,9 @@ describe('updateContext', () => { test('it can merge a property within an object', () => { expect( - updateContext( - { geography: { northing: { degrees: 1, minutes: 1, seconds: 1 } } }, - 'geography', - { elevation: 100 }, - ), + updateContext({ geography: { northing: { degrees: 1, minutes: 1, seconds: 1 } } }, 'geography', { + elevation: 100, + }), ).toEqual({ geography: { northing: { diff --git a/src/components/pageElements/AddPoint.jsx b/src/components/pageElements/AddPoint.jsx index 778ca430..c681f60a 100644 --- a/src/components/pageElements/AddPoint.jsx +++ b/src/components/pageElements/AddPoint.jsx @@ -1,26 +1,26 @@ -import { Fragment, useEffect, useRef, useState } from 'react'; -import PropTypes from 'prop-types'; +import { QuestionMarkCircleIcon } from '@heroicons/react/24/outline'; +import { ErrorMessage } from '@hookform/error-message'; +import { yupResolver } from '@hookform/resolvers/yup'; +import { useMutation, useQueryClient } from '@tanstack/react-query'; import { contrastColor } from 'contrast-color'; +import { httpsCallable } from 'firebase/functions'; +import PropTypes from 'prop-types'; +import { Fragment, useEffect, useRef, useState } from 'react'; import { CirclePicker } from 'react-color'; import { Controller, useForm, useWatch } from 'react-hook-form'; -import { useUser, useFunctions } from 'reactfire'; -import { httpsCallable } from 'firebase/functions'; -import { useMutation, useQueryClient } from '@tanstack/react-query'; -import { LimitedTextarea } from '../formElements/LimitedTextarea.jsx'; -import { Input } from '../formElements/Inputs.jsx'; -import { Switch } from '../formElements/Switch.jsx'; -import Spacer from '../formElements/Spacer.jsx'; -import { NumberedForm, NumberedFormSection } from '../formElements/Form.jsx'; -import Card from '../formElements/Card.jsx'; +import { useFunctions, useUser } from 'reactfire'; import { addPointSchema as schema } from '../../../functions/shared/cornerSubmission/Schema.js'; -import { yupResolver } from '@hookform/resolvers/yup'; -import { ErrorMessage } from '@hookform/error-message'; -import ErrorMessageTag from './ErrorMessage.jsx'; -import Wizard from './CornerSubmission/Wizard.jsx'; -import { QuestionMarkCircleIcon } from '@heroicons/react/24/outline'; -import FileUpload from '../formElements/FileUpload.jsx'; import { Button } from '../formElements/Buttons.jsx'; +import Card from '../formElements/Card.jsx'; +import FileUpload from '../formElements/FileUpload.jsx'; +import { NumberedForm, NumberedFormSection } from '../formElements/Form.jsx'; +import { Input } from '../formElements/Inputs.jsx'; +import { LimitedTextarea } from '../formElements/LimitedTextarea.jsx'; +import Spacer from '../formElements/Spacer.jsx'; +import { Switch } from '../formElements/Switch.jsx'; import usePageView from '../hooks/usePageView.jsx'; +import Wizard from './CornerSubmission/Wizard.jsx'; +import ErrorMessageTag from './ErrorMessage.jsx'; const numberFormatter = new Intl.NumberFormat('en-US'); const dateFormatter = new Intl.DateTimeFormat('en-US', { @@ -29,13 +29,7 @@ const dateFormatter = new Intl.DateTimeFormat('en-US', { }); const limit = 3; -export default function AddPoint({ - active, - color, - geometry, - dispatch, - notes = '', -}) { +export default function AddPoint({ active, color, geometry, dispatch, notes = '' }) { const functions = useFunctions(); const addPoint = httpsCallable(functions, 'postPoint'); const { data: user } = useUser(); @@ -54,11 +48,10 @@ export default function AddPoint({ [`photo-3-${uniqueId.current}`]: '', }; - const { control, formState, handleSubmit, register, reset, setValue, watch } = - useForm({ - resolver: yupResolver(schema), - defaultValues, - }); + const { control, formState, handleSubmit, register, reset, setValue, watch } = useForm({ + resolver: yupResolver(schema), + defaultValues, + }); const fields = useWatch({ control }); @@ -67,11 +60,7 @@ export default function AddPoint({ useEffect(() => { if (geometry?.x && geometry?.y) { - setValue( - 'location', - { x: geometry.x, y: geometry.y }, - { shouldValidate: true }, - ); + setValue('location', { x: geometry.x, y: geometry.y }, { shouldValidate: true }); } }, [geometry, setValue]); @@ -140,25 +129,15 @@ export default function AddPoint({ Add Reference Point

- Use reference points to help you remember points of interest or other - identifying features when out in the field collecting information. + Use reference points to help you remember points of interest or other identifying features when out in the field + collecting information.

- - + +
@@ -177,11 +156,7 @@ export default function AddPoint({ /> )} /> - + {new Array(imageCount).fill().map((_, i) => ( @@ -250,9 +225,7 @@ export default function AddPoint({ <>
- - selected color - + selected color
@@ -262,12 +235,8 @@ export default function AddPoint({ > {geometry?.x && ( <> -
- {numberFormatter.format(geometry?.x || 0)} -
-
- {numberFormatter.format(geometry?.y || 0)} -
+
{numberFormatter.format(geometry?.x || 0)}
+
{numberFormatter.format(geometry?.y || 0)}
)}
@@ -275,11 +244,7 @@ export default function AddPoint({ )} - +
@@ -301,20 +266,11 @@ export default function AddPoint({

- +
- mutate} - clear={onReset} - status={status} - back={false} - /> + mutate} clear={onReset} status={status} back={false} />
diff --git a/src/components/pageElements/AddPoint.stories.jsx b/src/components/pageElements/AddPoint.stories.jsx index ae9eb177..e28c14e1 100644 --- a/src/components/pageElements/AddPoint.stories.jsx +++ b/src/components/pageElements/AddPoint.stories.jsx @@ -3,12 +3,7 @@ import { initializeApp } from 'firebase/app'; import { getAuth } from 'firebase/auth'; import { getFunctions } from 'firebase/functions'; import { getStorage } from 'firebase/storage'; -import { - AuthProvider, - FirebaseAppProvider, - FunctionsProvider, - StorageProvider, -} from 'reactfire'; +import { AuthProvider, FirebaseAppProvider, FunctionsProvider, StorageProvider } from 'reactfire'; import { useImmerReducer } from 'use-immer'; import reduce, { defaults } from '../reducers/AppReducer'; import './../../index.css'; diff --git a/src/components/pageElements/CornerSubmission/0-CornerSubmission.stories.jsx b/src/components/pageElements/CornerSubmission/0-CornerSubmission.stories.jsx index 58ba0d6f..b8da037f 100644 --- a/src/components/pageElements/CornerSubmission/0-CornerSubmission.stories.jsx +++ b/src/components/pageElements/CornerSubmission/0-CornerSubmission.stories.jsx @@ -1,18 +1,12 @@ -import CornerSubmission from './CornerSubmission.jsx'; -import { SubmissionProvider } from '../../contexts/SubmissionContext.jsx'; -import { getAnalytics } from 'firebase/analytics'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; +import { getAnalytics } from 'firebase/analytics'; import { initializeApp } from 'firebase/app'; import { getAuth } from 'firebase/auth'; import { getFunctions } from 'firebase/functions'; import { getStorage } from 'firebase/storage'; -import { - AnalyticsProvider, - AuthProvider, - FirebaseAppProvider, - FunctionsProvider, - StorageProvider, -} from 'reactfire'; +import { AnalyticsProvider, AuthProvider, FirebaseAppProvider, FunctionsProvider, StorageProvider } from 'reactfire'; +import { SubmissionProvider } from '../../contexts/SubmissionContext.jsx'; +import CornerSubmission from './CornerSubmission.jsx'; let config = { apiKey: '', @@ -96,10 +90,7 @@ const Template = (args) => { }; return ( -
+
); diff --git a/src/components/pageElements/CornerSubmission/1-Metadata.stories.jsx b/src/components/pageElements/CornerSubmission/1-Metadata.stories.jsx index d221e213..31c0b026 100644 --- a/src/components/pageElements/CornerSubmission/1-Metadata.stories.jsx +++ b/src/components/pageElements/CornerSubmission/1-Metadata.stories.jsx @@ -1,16 +1,11 @@ -import Metadata from './Metadata.jsx'; -import { SubmissionProvider } from '../../contexts/SubmissionContext.jsx'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import { initializeApp } from 'firebase/app'; import { getAuth } from 'firebase/auth'; import { getFunctions } from 'firebase/functions'; import { getStorage } from 'firebase/storage'; -import { - AuthProvider, - FirebaseAppProvider, - FunctionsProvider, - StorageProvider, -} from 'reactfire'; +import { AuthProvider, FirebaseAppProvider, FunctionsProvider, StorageProvider } from 'reactfire'; +import { SubmissionProvider } from '../../contexts/SubmissionContext.jsx'; +import Metadata from './Metadata.jsx'; let config = { apiKey: '', @@ -42,9 +37,7 @@ export default { - - {Story()} - + {Story()} @@ -78,10 +71,7 @@ export default { const Template = (args) => { const data = { ...args }; return ( -
+
); diff --git a/src/components/pageElements/CornerSubmission/1b-Existing.stories.jsx b/src/components/pageElements/CornerSubmission/1b-Existing.stories.jsx index 18590dbd..3ffdb4cd 100644 --- a/src/components/pageElements/CornerSubmission/1b-Existing.stories.jsx +++ b/src/components/pageElements/CornerSubmission/1b-Existing.stories.jsx @@ -1,19 +1,15 @@ -import { StorageProvider, FirebaseAppProvider, AuthProvider } from 'reactfire'; -import { getStorage } from 'firebase/storage'; import { initializeApp } from 'firebase/app'; import { getAuth } from 'firebase/auth'; -import Pdf from './Pdf.jsx'; +import { getStorage } from 'firebase/storage'; +import { AuthProvider, FirebaseAppProvider, StorageProvider } from 'reactfire'; import { SubmissionProvider } from '../../contexts/SubmissionContext.jsx'; +import Pdf from './Pdf.jsx'; export default { title: 'Corner/Submission/Parts', component: Pdf, decorators: [ - (Story) => ( - - {Story()} - - ), + (Story) => {Story()}, ], parameters: { backgrounds: { @@ -61,10 +57,7 @@ const Template = (args) => { -
+
diff --git a/src/components/pageElements/CornerSubmission/2-Datum.stories.jsx b/src/components/pageElements/CornerSubmission/2-Datum.stories.jsx index 13c91d06..b37c1fbb 100644 --- a/src/components/pageElements/CornerSubmission/2-Datum.stories.jsx +++ b/src/components/pageElements/CornerSubmission/2-Datum.stories.jsx @@ -4,13 +4,7 @@ import CoordinatePicker from './Datum.jsx'; export default { title: 'Corner/Submission/Parts', component: CoordinatePicker, - decorators: [ - (Story) => ( - - {Story()} - - ), - ], + decorators: [(Story) => {Story()}], parameters: { backgrounds: { default: 'drawer', @@ -37,10 +31,7 @@ const Template = (args) => { const data = { ...args }; return ( -
+
); diff --git a/src/components/pageElements/CornerSubmission/3-Grid.stories.jsx b/src/components/pageElements/CornerSubmission/3-Grid.stories.jsx index eb617448..cda3be1a 100644 --- a/src/components/pageElements/CornerSubmission/3-Grid.stories.jsx +++ b/src/components/pageElements/CornerSubmission/3-Grid.stories.jsx @@ -1,16 +1,10 @@ -import GridCoordinates from './GridCoordinates.jsx'; import { SubmissionProvider } from '../../contexts/SubmissionContext.jsx'; +import GridCoordinates from './GridCoordinates.jsx'; export default { title: 'Corner/Submission/Parts', component: GridCoordinates, - decorators: [ - (Story) => ( - - {Story()} - - ), - ], + decorators: [(Story) => {Story()}], parameters: { backgrounds: { default: 'drawer', @@ -37,10 +31,7 @@ const Template = (args) => { const data = { ...args }; return ( -
+
); diff --git a/src/components/pageElements/CornerSubmission/3a-Latitude.stories.jsx b/src/components/pageElements/CornerSubmission/3a-Latitude.stories.jsx index b5e78680..a2799b40 100644 --- a/src/components/pageElements/CornerSubmission/3a-Latitude.stories.jsx +++ b/src/components/pageElements/CornerSubmission/3a-Latitude.stories.jsx @@ -1,5 +1,5 @@ -import { Latitude } from './GeographicCoordinates.jsx'; import { SubmissionProvider } from '../../contexts/SubmissionContext.jsx'; +import { Latitude } from './GeographicCoordinates.jsx'; export default { title: 'Corner/Submission/Parts', @@ -35,12 +35,7 @@ export default { }, xstate: { submission: { - events: [ - { type: 'start submission' }, - { type: 'NEXT' }, - { type: 'NEXT' }, - { type: 'NEXT' }, - ], + events: [{ type: 'start submission' }, { type: 'NEXT' }, { type: 'NEXT' }, { type: 'NEXT' }], }, project: { events: { type: 'SET_COORDINATES' }, @@ -57,10 +52,7 @@ const Template = (args) => { const data = { ...args }; return ( -
+
); diff --git a/src/components/pageElements/CornerSubmission/3b-Longitude.stories.jsx b/src/components/pageElements/CornerSubmission/3b-Longitude.stories.jsx index 7a2f9dda..3f0d6716 100644 --- a/src/components/pageElements/CornerSubmission/3b-Longitude.stories.jsx +++ b/src/components/pageElements/CornerSubmission/3b-Longitude.stories.jsx @@ -1,14 +1,12 @@ -import { Longitude } from './GeographicCoordinates.jsx'; import { SubmissionProvider } from '../../contexts/SubmissionContext.jsx'; +import { Longitude } from './GeographicCoordinates.jsx'; export default { title: 'Corner/Submission/Parts', component: Longitude, decorators: [ (Story) => ( - + {Story()} ), @@ -39,10 +37,7 @@ const Template = (args) => { const data = { ...args }; return ( -
+
); diff --git a/src/components/pageElements/CornerSubmission/3c-Height.stories.jsx b/src/components/pageElements/CornerSubmission/3c-Height.stories.jsx index 31fb8096..e3ed537a 100644 --- a/src/components/pageElements/CornerSubmission/3c-Height.stories.jsx +++ b/src/components/pageElements/CornerSubmission/3c-Height.stories.jsx @@ -1,18 +1,12 @@ -import { GeographicHeight } from './GeographicCoordinates.jsx'; -import { SubmissionProvider } from '../../contexts/SubmissionContext.jsx'; -import { getAnalytics } from 'firebase/analytics'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; +import { getAnalytics } from 'firebase/analytics'; import { initializeApp } from 'firebase/app'; import { getAuth } from 'firebase/auth'; import { getFunctions } from 'firebase/functions'; import { getStorage } from 'firebase/storage'; -import { - AnalyticsProvider, - AuthProvider, - FirebaseAppProvider, - FunctionsProvider, - StorageProvider, -} from 'reactfire'; +import { AnalyticsProvider, AuthProvider, FirebaseAppProvider, FunctionsProvider, StorageProvider } from 'reactfire'; +import { SubmissionProvider } from '../../contexts/SubmissionContext.jsx'; +import { GeographicHeight } from './GeographicCoordinates.jsx'; let config = { apiKey: '', @@ -90,10 +84,7 @@ const Template = (args) => { const data = { ...args }; return ( -
+
); diff --git a/src/components/pageElements/CornerSubmission/4-Images.stories.jsx b/src/components/pageElements/CornerSubmission/4-Images.stories.jsx index cf30e24d..29bd35e0 100644 --- a/src/components/pageElements/CornerSubmission/4-Images.stories.jsx +++ b/src/components/pageElements/CornerSubmission/4-Images.stories.jsx @@ -1,9 +1,9 @@ -import { StorageProvider, FirebaseAppProvider, AuthProvider } from 'reactfire'; -import { getStorage } from 'firebase/storage'; import { initializeApp } from 'firebase/app'; import { getAuth } from 'firebase/auth'; -import Images from './Images.jsx'; +import { getStorage } from 'firebase/storage'; +import { AuthProvider, FirebaseAppProvider, StorageProvider } from 'reactfire'; import { SubmissionProvider } from '../../contexts/SubmissionContext.jsx'; +import Images from './Images.jsx'; export default { title: 'Corner/Submission/Parts', @@ -55,10 +55,7 @@ const Template = (args) => { -
+
diff --git a/src/components/pageElements/CornerSubmission/CornerSubmission.jsx b/src/components/pageElements/CornerSubmission/CornerSubmission.jsx index a768ee82..ef5f7414 100644 --- a/src/components/pageElements/CornerSubmission/CornerSubmission.jsx +++ b/src/components/pageElements/CornerSubmission/CornerSubmission.jsx @@ -1,13 +1,13 @@ -import { lazy, useContext, useEffect, useRef } from 'react'; -import PropTypes from 'prop-types'; -import { ErrorBoundary } from 'react-error-boundary'; -import clsx from 'clsx'; import { MinusCircleIcon, PlusCircleIcon } from '@heroicons/react/24/outline'; import { useLocalStorage } from '@ugrc/utilities/hooks'; +import clsx from 'clsx'; +import PropTypes from 'prop-types'; +import { lazy, useContext, useEffect, useRef } from 'react'; +import { ErrorBoundary } from 'react-error-boundary'; import { SubmissionContext } from '../../contexts/SubmissionContext.jsx'; import { Button } from '../../formElements/Buttons.jsx'; -import DefaultFallback from '../ErrorBoundary.jsx'; import usePageView from '../../hooks/usePageView.jsx'; +import DefaultFallback from '../ErrorBoundary.jsx'; const SubmissionNotice = lazy(() => import('./SubmissionNotice.jsx')); const MonumentPdf = lazy(() => import('./Pdf.jsx')); const Metadata = lazy(() => import('./Metadata.jsx')); @@ -33,11 +33,7 @@ const Longitude = lazy(() => ); export default function CornerSubmission({ submission, dispatch }) { - const [hide, setHide] = useLocalStorage( - 'plssSubmissionNoteVisible', - false, - true, - ); + const [hide, setHide] = useLocalStorage('plssSubmissionNoteVisible', false, true); const scrollContainer = useRef(null); const [state, send] = useContext(SubmissionContext); const { analytics, logEvent } = usePageView('screen-submission-start'); @@ -89,8 +85,7 @@ export default function CornerSubmission({ submission, dispatch }) {

Something went wrong

- No matching component for {JSON.stringify(state.value, null, 2)}{' '} - state. + No matching component for {JSON.stringify(state.value, null, 2)} state.

diff --git a/src/components/pageElements/CornerSubmission/Datum.jsx b/src/components/pageElements/CornerSubmission/Datum.jsx index 534af014..675e76f2 100644 --- a/src/components/pageElements/CornerSubmission/Datum.jsx +++ b/src/components/pageElements/CornerSubmission/Datum.jsx @@ -1,22 +1,19 @@ -import { useContext, useState, useEffect } from 'react'; -import clsx from 'clsx'; -import { Controller, useForm } from 'react-hook-form'; +import { Tab, TabGroup, TabList, TabPanel, TabPanels } from '@headlessui/react'; import { ErrorMessage } from '@hookform/error-message'; import { yupResolver } from '@hookform/resolvers/yup'; -import { Tab, TabGroup, TabList, TabPanel, TabPanels } from '@headlessui/react'; -import Spacer from '../../formElements/Spacer.jsx'; -import { NumberedForm, NumberedFormSection } from '../../formElements/Form.jsx'; +import clsx from 'clsx'; +import { useContext, useEffect, useState } from 'react'; +import { Controller, useForm } from 'react-hook-form'; +import { geographic, grid } from '../../../../functions/shared/cornerSubmission/Options.js'; +import { coordinatePickerSchema } from '../../../../functions/shared/cornerSubmission/Schema.js'; +import { SubmissionContext } from '../../contexts/SubmissionContext.jsx'; import { Button } from '../../formElements/Buttons.jsx'; +import { NumberedForm, NumberedFormSection } from '../../formElements/Form.jsx'; import { Select } from '../../formElements/Select.jsx'; +import Spacer from '../../formElements/Spacer.jsx'; +import usePageView from '../../hooks/usePageView.jsx'; import ErrorMessageTag from '../ErrorMessage.jsx'; -import { SubmissionContext } from '../../contexts/SubmissionContext.jsx'; -import { - geographic, - grid, -} from '../../../../functions/shared/cornerSubmission/Options.js'; -import { coordinatePickerSchema } from '../../../../functions/shared/cornerSubmission/Schema.js'; import Wizard from './Wizard.jsx'; -import usePageView from '../../hooks/usePageView.jsx'; const formats = { Geographic: geographic, Grid: grid }; @@ -80,9 +77,7 @@ const CoordinatePicker = () => { {state.context.type === 'existing' && ( <>
-

- Coordinates are optional for existing monument uploads -

+

Coordinates are optional for existing monument uploads

@@ -127,22 +122,14 @@ const CoordinatePicker = () => { /> )} /> - + ))} - send({ type: 'BACK' })} - next={true} - clear={onReset} - /> + send({ type: 'BACK' })} next={true} clear={onReset} /> diff --git a/src/components/pageElements/CornerSubmission/GeographicCoordinates.jsx b/src/components/pageElements/CornerSubmission/GeographicCoordinates.jsx index 1c45c0ae..504753fe 100644 --- a/src/components/pageElements/CornerSubmission/GeographicCoordinates.jsx +++ b/src/components/pageElements/CornerSubmission/GeographicCoordinates.jsx @@ -1,23 +1,23 @@ -import { useContext, useEffect, useState } from 'react'; +import { Label, Radio, RadioGroup } from '@headlessui/react'; import { ErrorMessage } from '@hookform/error-message'; import { yupResolver } from '@hookform/resolvers/yup'; import clsx from 'clsx'; +import { useContext, useEffect, useState } from 'react'; import { Controller, useForm } from 'react-hook-form'; -import { RadioGroup, Label, Radio } from '@headlessui/react'; -import { Input } from '../../formElements/Inputs.jsx'; -import Spacer from '../../formElements/Spacer.jsx'; -import { NumberedForm, NumberedFormSection } from '../../formElements/Form.jsx'; -import ErrorMessageTag from '../ErrorMessage.jsx'; -import { SubmissionContext } from '../../contexts/SubmissionContext.jsx'; import { units } from '../../../../functions/shared/cornerSubmission/Options.js'; import { + geographicHeightSchema, latitudeSchema, longitudeSchema, - geographicHeightSchema, } from '../../../../functions/shared/cornerSubmission/Schema.js'; -import Wizard from './Wizard.jsx'; import { formatDatum } from '../../../../functions/shared/index.js'; +import { SubmissionContext } from '../../contexts/SubmissionContext.jsx'; +import { NumberedForm, NumberedFormSection } from '../../formElements/Form.jsx'; +import { Input } from '../../formElements/Inputs.jsx'; +import Spacer from '../../formElements/Spacer.jsx'; import usePageView from '../../hooks/usePageView.jsx'; +import ErrorMessageTag from '../ErrorMessage.jsx'; +import Wizard from './Wizard.jsx'; const defaults = { seconds: '', @@ -51,10 +51,7 @@ export const Latitude = () => { }, []); useEffect(() => { - if ( - state.matches('form.entering alternate latitude') && - state.matches('projecting.done') - ) { + if (state.matches('form.entering alternate latitude') && state.matches('projecting.done')) { reset({ northing: state.context?.geographic?.northing }); } }, [state, reset]); @@ -71,12 +68,9 @@ export const Latitude = () => { return ( <>

Location Information

-

- Geographic Northing for {formatDatum(state.context.datum)} -

+

Geographic Northing for {formatDatum(state.context.datum)}

- {state.matches('form.entering alternate latitude') && - !state.matches('projecting.done') ? ( + {state.matches('form.entering alternate latitude') && !state.matches('projecting.done') ? (
Projecting Grid Coordinates...
) : ( @@ -91,11 +85,7 @@ export const Latitude = () => { required={true} {...register('northing.degrees')} /> - +
{ required={true} {...register('northing.minutes')} /> - +
{ {...register('northing.seconds')} />

5 Decimals ##.#####

- +
@@ -178,9 +160,7 @@ export const Longitude = () => { return ( <>

Location Information

-

- Geographic Easting for {formatDatum(state.context.datum)} -

+

Geographic Easting for {formatDatum(state.context.datum)}

@@ -194,11 +174,7 @@ export const Longitude = () => { required={true} {...register('easting.degrees')} /> - +
{ required={true} {...register('easting.minutes')} /> - +
{ {...register('easting.seconds')} />

5 Decimals ##.#####

- +
- send({ type: 'BACK' })} - next={true} - clear={onReset} - /> + send({ type: 'BACK' })} next={true} clear={onReset} /> @@ -273,11 +237,10 @@ export const GeographicHeight = () => { const selectedUnit = units.find((x) => x.value === defaultValues.unit); - const { control, formState, handleSubmit, register, reset, setFocus } = - useForm({ - resolver: yupResolver(geographicHeightSchema), - defaultValues, - }); + const { control, formState, handleSubmit, register, reset, setFocus } = useForm({ + resolver: yupResolver(geographicHeightSchema), + defaultValues, + }); useEffect(() => { setFocus('elevation'); @@ -297,9 +260,7 @@ export const GeographicHeight = () => { return ( <>

Location Information

-

- Geographic height for {formatDatum(state.context.datum)} -

+

Geographic height for {formatDatum(state.context.datum)}

@@ -333,12 +294,7 @@ export const GeographicHeight = () => { > {({ checked }) => (
-
@@ -348,23 +304,11 @@ export const GeographicHeight = () => { )} /> - - + +
- send({ type: 'BACK' })} - next={true} - clear={onReset} - /> + send({ type: 'BACK' })} next={true} clear={onReset} />
diff --git a/src/components/pageElements/CornerSubmission/GridCoordinates.jsx b/src/components/pageElements/CornerSubmission/GridCoordinates.jsx index 46d388b0..93991856 100644 --- a/src/components/pageElements/CornerSubmission/GridCoordinates.jsx +++ b/src/components/pageElements/CornerSubmission/GridCoordinates.jsx @@ -1,23 +1,19 @@ -import { useContext, useEffect } from 'react'; import { ErrorMessage } from '@hookform/error-message'; import { yupResolver } from '@hookform/resolvers/yup'; +import { useContext, useEffect } from 'react'; import { Controller, useForm } from 'react-hook-form'; +import { statePlaneZones, units, verticalDatums } from '../../../../functions/shared/cornerSubmission/Options.js'; +import { gridCoordinatesSchema } from '../../../../functions/shared/cornerSubmission/Schema.js'; +import { formatDatum } from '../../../../functions/shared/index.js'; +import { SubmissionContext } from '../../contexts/SubmissionContext.jsx'; +import { Button } from '../../formElements/Buttons.jsx'; +import { NumberedForm, NumberedFormSection } from '../../formElements/Form.jsx'; import { Input } from '../../formElements/Inputs.jsx'; import { Select } from '../../formElements/Select.jsx'; import Spacer from '../../formElements/Spacer.jsx'; -import { NumberedForm, NumberedFormSection } from '../../formElements/Form.jsx'; +import usePageView from '../../hooks/usePageView.jsx'; import ErrorMessageTag from '../../pageElements/ErrorMessage.jsx'; -import { SubmissionContext } from '../../contexts/SubmissionContext.jsx'; -import { - units, - statePlaneZones, - verticalDatums, -} from '../../../../functions/shared/cornerSubmission/Options.js'; -import { gridCoordinatesSchema } from '../../../../functions/shared/cornerSubmission/Schema.js'; import Wizard from './Wizard.jsx'; -import { formatDatum } from '../../../../functions/shared/index.js'; -import usePageView from '../../hooks/usePageView.jsx'; -import { Button } from '../../formElements/Buttons.jsx'; const defaults = { zone: '', @@ -38,11 +34,10 @@ const GridCoordinates = () => { defaultValues = defaults; } - const { control, formState, handleSubmit, register, reset, setFocus } = - useForm({ - resolver: yupResolver(gridCoordinatesSchema), - defaultValues, - }); + const { control, formState, handleSubmit, register, reset, setFocus } = useForm({ + resolver: yupResolver(gridCoordinatesSchema), + defaultValues, + }); useEffect(() => { setFocus('zone'); @@ -56,10 +51,7 @@ const GridCoordinates = () => { }, []); useEffect(() => { - if ( - state.matches('form.entering alternate grid coordinates') && - state.matches('projecting.done') - ) { + if (state.matches('form.entering alternate grid coordinates') && state.matches('projecting.done')) { reset({ ...state.context?.grid }); } }, [state, reset]); @@ -76,9 +68,7 @@ const GridCoordinates = () => { return ( <>

Location Information

-

- Grid coordinates for {formatDatum(state.context.datum)} -

+

Grid coordinates for {formatDatum(state.context.datum)}

{state.matches('projecting.rejected') && ( <> @@ -86,8 +76,7 @@ const GridCoordinates = () => { )} - {state.matches('form.entering alternate grid coordinates') && - !state.matches('projecting.done') ? ( + {state.matches('form.entering alternate grid coordinates') && !state.matches('projecting.done') ? (
Projecting Grid Coordinates...
) : ( @@ -106,61 +95,27 @@ const GridCoordinates = () => { /> )} /> - +
( - )} /> - +
- - + +
- - + +
@@ -178,33 +133,15 @@ const GridCoordinates = () => { /> )} /> - +
- - + +
- send({ type: 'BACK' })} - next={true} - clear={onReset} - /> + send({ type: 'BACK' })} next={true} clear={onReset} /> )} diff --git a/src/components/pageElements/CornerSubmission/Images.jsx b/src/components/pageElements/CornerSubmission/Images.jsx index 9a3af208..160a49e1 100644 --- a/src/components/pageElements/CornerSubmission/Images.jsx +++ b/src/components/pageElements/CornerSubmission/Images.jsx @@ -1,17 +1,17 @@ -import { Fragment, useContext, useState } from 'react'; -import { useUser } from 'reactfire'; -import { useForm, useWatch, Controller } from 'react-hook-form'; import { ErrorMessage } from '@hookform/error-message'; import { yupResolver } from '@hookform/resolvers/yup'; +import { Fragment, useContext, useState } from 'react'; +import { Controller, useForm, useWatch } from 'react-hook-form'; +import { useUser } from 'reactfire'; import { imagesSchema as schema } from '../../../../functions/shared/cornerSubmission/Schema.js'; import { SubmissionContext } from '../../contexts/SubmissionContext.jsx'; +import { Button } from '../../formElements/Buttons.jsx'; +import FileUpload from '../../formElements/FileUpload.jsx'; import { NumberedForm, NumberedFormSection } from '../../formElements/Form.jsx'; import Spacer from '../../formElements/Spacer.jsx'; +import usePageView from '../../hooks/usePageView.jsx'; import ErrorMessageTag from '../../pageElements/ErrorMessage.jsx'; -import { Button } from '../../formElements/Buttons.jsx'; -import FileUpload from '../../formElements/FileUpload.jsx'; import Wizard from './Wizard.jsx'; -import usePageView from '../../hooks/usePageView.jsx'; const limit = 10; const defaults = { @@ -90,11 +90,7 @@ export default function MonumentImages() { /> )} /> - + )} /> - + )} /> - + {new Array(extraPageCount).fill().map((_, i) => ( @@ -165,11 +153,7 @@ export default function MonumentImages() { /> )} /> - + ))} {limit - extraPageCount} extra pages are allowed diff --git a/src/components/pageElements/CornerSubmission/Metadata.jsx b/src/components/pageElements/CornerSubmission/Metadata.jsx index c646b89b..dbbb2cf7 100644 --- a/src/components/pageElements/CornerSubmission/Metadata.jsx +++ b/src/components/pageElements/CornerSubmission/Metadata.jsx @@ -1,26 +1,22 @@ -import { useContext, useEffect } from 'react'; -import PropTypes from 'prop-types'; +import { ArrowTopRightOnSquareIcon } from '@heroicons/react/20/solid'; import { ErrorMessage } from '@hookform/error-message'; import { yupResolver } from '@hookform/resolvers/yup'; +import PropTypes from 'prop-types'; +import { useContext, useEffect } from 'react'; import { Controller, useForm } from 'react-hook-form'; -import { ArrowTopRightOnSquareIcon } from '@heroicons/react/20/solid'; +import { accuracy, corner, status } from '../../../../functions/shared/cornerSubmission/Options.js'; +import { metadataSchema as schema } from '../../../../functions/shared/cornerSubmission/Schema.js'; import { SubmissionContext } from '../../contexts/SubmissionContext.jsx'; +import { Link } from '../../formElements/Buttons.jsx'; +import { NumberedForm, NumberedFormSection } from '../../formElements/Form.jsx'; +import { Input, Label } from '../../formElements/Inputs.jsx'; import { LimitedTextarea } from '../../formElements/LimitedTextarea.jsx'; import { Select } from '../../formElements/Select.jsx'; -import { Switch } from '../../formElements/Switch.jsx'; import Spacer from '../../formElements/Spacer.jsx'; -import { Input, Label } from '../../formElements/Inputs.jsx'; -import { Link } from '../../formElements/Buttons.jsx'; -import { NumberedForm, NumberedFormSection } from '../../formElements/Form.jsx'; +import { Switch } from '../../formElements/Switch.jsx'; +import usePageView from '../../hooks/usePageView.jsx'; import ErrorMessageTag from '../../pageElements/ErrorMessage.jsx'; -import { - accuracy, - status, - corner, -} from '../../../../functions/shared/cornerSubmission/Options.js'; -import { metadataSchema as schema } from '../../../../functions/shared/cornerSubmission/Schema.js'; import Wizard from './Wizard.jsx'; -import usePageView from '../../hooks/usePageView.jsx'; const defaults = { section: '', @@ -49,11 +45,10 @@ const Metadata = ({ dispatch }) => { defaultValues.mrrc = false; } - const { control, formState, handleSubmit, register, reset, setFocus } = - useForm({ - resolver: yupResolver(schema), - defaultValues, - }); + const { control, formState, handleSubmit, register, reset, setFocus } = useForm({ + resolver: yupResolver(schema), + defaultValues, + }); const onSubmit = (payload) => { payload.collected = dateFormatter.format(payload.collected); @@ -86,11 +81,7 @@ const Metadata = ({ dispatch }) => { required={true} {...register('section')} /> - +
{ /> )} /> - +
@@ -128,11 +115,7 @@ const Metadata = ({ dispatch }) => { /> )} /> - +
@@ -144,11 +127,7 @@ const Metadata = ({ dispatch }) => { required={true} {...register('collected')} > - +
{ /> )} /> - +
- +
-
- dispatch({ type: 'menu/toggle', payload: 'identify' })} - clear={onReset} - /> + dispatch({ type: 'menu/toggle', payload: 'identify' })} clear={onReset} /> diff --git a/src/components/pageElements/CornerSubmission/Pdf.jsx b/src/components/pageElements/CornerSubmission/Pdf.jsx index 6bba04ee..920cdefa 100644 --- a/src/components/pageElements/CornerSubmission/Pdf.jsx +++ b/src/components/pageElements/CornerSubmission/Pdf.jsx @@ -1,17 +1,17 @@ -import { useContext } from 'react'; +import { ErrorMessage } from '@hookform/error-message'; +import { yupResolver } from '@hookform/resolvers/yup'; import PropTypes from 'prop-types'; +import { useContext } from 'react'; +import { Controller, useForm, useWatch } from 'react-hook-form'; import { useUser } from 'reactfire'; -import { useForm, useWatch, Controller } from 'react-hook-form'; -import { yupResolver } from '@hookform/resolvers/yup'; -import { ErrorMessage } from '@hookform/error-message'; +import { existingSheetSchema } from '../../../../functions/shared/cornerSubmission/Schema.js'; import { SubmissionContext } from '../../contexts/SubmissionContext.jsx'; import FileUpload from '../../formElements/FileUpload.jsx'; import { NumberedForm, NumberedFormSection } from '../../formElements/Form.jsx'; import Spacer from '../../formElements/Spacer.jsx'; +import usePageView from '../../hooks/usePageView.jsx'; import ErrorMessageTag from '../../pageElements/ErrorMessage.jsx'; import Wizard from './Wizard.jsx'; -import { existingSheetSchema } from '../../../../functions/shared/cornerSubmission/Schema.js'; -import usePageView from '../../hooks/usePageView.jsx'; export default function MonumentPdf({ dispatch }) { const { data: user } = useUser(); @@ -51,17 +51,10 @@ export default function MonumentPdf({ dispatch }) { /> )} /> - + - dispatch({ type: 'menu/toggle', payload: 'identify' })} - /> + dispatch({ type: 'menu/toggle', payload: 'identify' })} /> diff --git a/src/components/pageElements/CornerSubmission/SubmissionNotice.jsx b/src/components/pageElements/CornerSubmission/SubmissionNotice.jsx index 6e8cbbaf..4c6676be 100644 --- a/src/components/pageElements/CornerSubmission/SubmissionNotice.jsx +++ b/src/components/pageElements/CornerSubmission/SubmissionNotice.jsx @@ -1,20 +1,17 @@ -import Card from '../../formElements/Card.jsx'; -import Note from '../../formElements/Note.jsx'; -import { Button } from '../../formElements/Buttons.jsx'; -import extractTownshipInformation from '../../../../functions/shared/cornerSubmission/blmPointId.js'; +import { useQuery } from '@tanstack/react-query'; import { httpsCallable } from 'firebase/functions'; -import { useUser, useFunctions } from 'reactfire'; import PropTypes from 'prop-types'; import { useMemo } from 'react'; -import { useQuery } from '@tanstack/react-query'; +import { useFunctions, useUser } from 'reactfire'; +import extractTownshipInformation from '../../../../functions/shared/cornerSubmission/blmPointId.js'; +import { Button } from '../../formElements/Buttons.jsx'; +import Card from '../../formElements/Card.jsx'; +import Note from '../../formElements/Note.jsx'; export default function SubmissionNotice({ pointId, county, toggle }) { const { data: user } = useUser(); - const townshipInformation = useMemo( - () => extractTownshipInformation(pointId), - [pointId], - ); + const townshipInformation = useMemo(() => extractTownshipInformation(pointId), [pointId]); const functions = useFunctions(); const getProfile = httpsCallable(functions, 'getProfile'); @@ -44,9 +41,8 @@ export default function SubmissionNotice({ pointId, county, toggle }) {
- This monument record information will be reviewed by the county - surveyor under stewardship of this corner to satisfy the requirements - of state code 17-23-17-7a. + This monument record information will be reviewed by the county surveyor under stewardship of this corner to + satisfy the requirements of state code 17-23-17-7a.
Submitted By diff --git a/src/components/pageElements/CornerSubmission/SubmissionReview.jsx b/src/components/pageElements/CornerSubmission/SubmissionReview.jsx index 922d8f58..a41ba0ed 100644 --- a/src/components/pageElements/CornerSubmission/SubmissionReview.jsx +++ b/src/components/pageElements/CornerSubmission/SubmissionReview.jsx @@ -1,21 +1,21 @@ -import { useContext, useState } from 'react'; -import PropTypes from 'prop-types'; -import { ErrorBoundary } from 'react-error-boundary'; import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import { httpsCallable } from 'firebase/functions'; +import { getDownloadURL, ref } from 'firebase/storage'; +import PropTypes from 'prop-types'; +import { useContext, useState } from 'react'; +import { ErrorBoundary } from 'react-error-boundary'; import { useFunctions, useStorage } from 'reactfire'; -import { SubmissionContext } from '../../contexts/SubmissionContext.jsx'; -import Wizard from './Wizard.jsx'; -import { keyMap, formatDatum } from '../../../../functions/shared/index.js'; -import Card from '../../formElements/Card.jsx'; import { geographic as geographicOptions, grid as gridOptions, } from '../../../../functions/shared/cornerSubmission/Options.js'; -import { ObjectPreview } from '../../formElements/FileUpload.jsx'; +import { formatDatum, keyMap } from '../../../../functions/shared/index.js'; +import { SubmissionContext } from '../../contexts/SubmissionContext.jsx'; import { Link } from '../../formElements/Buttons.jsx'; -import { getDownloadURL, ref } from 'firebase/storage'; +import Card from '../../formElements/Card.jsx'; +import { ObjectPreview } from '../../formElements/FileUpload.jsx'; import usePageView from '../../hooks/usePageView.jsx'; +import Wizard from './Wizard.jsx'; const Review = () => { const [state, send] = useContext(SubmissionContext); @@ -29,11 +29,7 @@ const Review = () => { const { data, status } = useQuery({ enabled: state.context.type === 'new', - queryKey: [ - 'monument record sheet', - state.context.blmPointId, - { preview: true }, - ], + queryKey: ['monument record sheet', state.context.blmPointId, { preview: true }], queryFn: () => generatePreview(state.context), staleTime: 5000, // 5 seconds, }); @@ -60,21 +56,11 @@ const Review = () => { <>
-

- Corner Submission Review -

-

- {state.context.blmPointId} -

+

Corner Submission Review

+

{state.context.blmPointId}

- {state.context.type !== 'existing' && ( - - )} - + {state.context.type !== 'existing' && } + {state.context.type === 'existing' ? ( ) : ( @@ -87,32 +73,19 @@ const Review = () => { )}
- send({ type: 'BACK' })} - status={mutationStatus} - finish={() => mutate(state.context)} - /> + send({ type: 'BACK' })} status={mutationStatus} finish={() => mutate(state.context)} />
); }; -const MetadataReview = ({ - accuracy, - collected, - corner, - description, - mrrc, - notes, - section, - status, -}) => { +const MetadataReview = ({ accuracy, collected, corner, description, mrrc, notes, section, status }) => { return (

Metadata {mrrc && ( -
+
MRRC
)} @@ -190,9 +163,7 @@ const CoordinateReview = ({ datum, grid, geographic }) => { {formatDatum(datum)}
{coordinates[0]} -

- Calculated Coordinates -

+

Calculated Coordinates

Datum {calculated} @@ -337,18 +308,12 @@ const AttachmentReview = ({ path }) => { return ( -

- Existing Monument Record Sheet -

+

Existing Monument Record Sheet

Uploaded Tiesheet - {data ? ( - preview - ) : ( - 'loading...' - )} + {data ? preview : 'loading...'}
); @@ -364,11 +329,7 @@ const MonumentPreview = ({ status, children }) => { {status === 'pending' && 'generating preview...'} {status === 'success' && (
- The preview could not be accessed.
} - > - {children} - + The preview could not be accessed.
}>{children}
)} {status === 'error' && 'error generating preview'} @@ -389,11 +350,7 @@ const PdfPreview = ({ path }) => { return
Loading...
; } - return ( -
- {data && preview} -
- ); + return
{data && preview}
; }; PdfPreview.propTypes = { path: PropTypes.string, diff --git a/src/components/pageElements/CornerSubmission/SubmissionReview.stories.jsx b/src/components/pageElements/CornerSubmission/SubmissionReview.stories.jsx index 54fc1247..7531dab9 100644 --- a/src/components/pageElements/CornerSubmission/SubmissionReview.stories.jsx +++ b/src/components/pageElements/CornerSubmission/SubmissionReview.stories.jsx @@ -1,14 +1,10 @@ -import Review from './SubmissionReview.jsx'; -import { SubmissionProvider } from '../../contexts/SubmissionContext.jsx'; -import { - FirebaseAppProvider, - FunctionsProvider, - StorageProvider, -} from 'reactfire'; +import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import { initializeApp } from 'firebase/app'; import { getFunctions } from 'firebase/functions'; import { getStorage } from 'firebase/storage'; -import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; +import { FirebaseAppProvider, FunctionsProvider, StorageProvider } from 'reactfire'; +import { SubmissionProvider } from '../../contexts/SubmissionContext.jsx'; +import Review from './SubmissionReview.jsx'; let config = { apiKey: '', @@ -34,7 +30,7 @@ export default { const storage = getStorage(app); return ( -

- The PLSS team at UGRC has been notified of your submission. They will - review the submission and approve the sheet if there are no errors. + The PLSS team at UGRC has been notified of your submission. They will review the submission and approve the + sheet if there are no errors.

- Next, UGRC will share the approved sheet with the representative from - the county the monument is located in. The county representative will - then review the submission and approve the sheet if there are no errors. - They are provided 10 days to comment and after that time period they - implicitly approve the sheet. + Next, UGRC will share the approved sheet with the representative from the county the monument is located in. The + county representative will then review the submission and approve the sheet if there are no errors. They are + provided 10 days to comment and after that time period they implicitly approve the sheet.

- Once the sheet is approved, the monument record sheet pdf will be - accessible through this PLSS website. UGRC will then use the submitted - coordinates to improve the PLSS point dataset and fabric. + Once the sheet is approved, the monument record sheet pdf will be accessible through this PLSS website. UGRC + will then use the submitted coordinates to improve the PLSS point dataset and fabric.

Tracking progress

- You can track the progress of this submission and all of your prior - submissions by clicking on the{' '} - {' '} menu link. diff --git a/src/components/pageElements/CornerSubmission/Wizard.jsx b/src/components/pageElements/CornerSubmission/Wizard.jsx index 8cf71f2c..e05c94ce 100644 --- a/src/components/pageElements/CornerSubmission/Wizard.jsx +++ b/src/components/pageElements/CornerSubmission/Wizard.jsx @@ -1,13 +1,7 @@ -import { Button } from '../../formElements/Buttons.jsx'; import PropTypes from 'prop-types'; +import { Button } from '../../formElements/Buttons.jsx'; -export default function Wizard({ - back = false, - next = false, - finish, - clear, - status, -}) { +export default function Wizard({ back = false, next = false, finish, clear, status }) { return (

{back && ( @@ -33,12 +27,7 @@ export default function Wizard({ )} {finish && ( - )} diff --git a/src/components/pageElements/ErrorBoundary.jsx b/src/components/pageElements/ErrorBoundary.jsx index cccbec22..460640e7 100644 --- a/src/components/pageElements/ErrorBoundary.jsx +++ b/src/components/pageElements/ErrorBoundary.jsx @@ -1,7 +1,7 @@ +import { logEvent } from 'firebase/analytics'; import PropTypes from 'prop-types'; -import { Button } from '../formElements/Buttons.jsx'; import { useAnalytics } from 'reactfire'; -import { logEvent } from 'firebase/analytics'; +import { Button } from '../formElements/Buttons.jsx'; export default function DefaultFallback({ error, resetErrorBoundary }) { const analytics = useAnalytics(); diff --git a/src/components/pageElements/Identify.jsx b/src/components/pageElements/Identify.jsx index a9d635de..24a0c4b9 100644 --- a/src/components/pageElements/Identify.jsx +++ b/src/components/pageElements/Identify.jsx @@ -1,20 +1,15 @@ import { ArrowDownCircleIcon } from '@heroicons/react/20/solid'; -import { - CheckIcon, - ExclamationCircleIcon, - XMarkIcon, -} from '@heroicons/react/24/outline'; +import { CheckIcon, ExclamationCircleIcon, XMarkIcon } from '@heroicons/react/24/outline'; import PropTypes from 'prop-types'; +import { getDefault } from '../../../functions/shared/index.js'; import { Button, Link } from '../formElements/Buttons.jsx'; import Card from '../formElements/Card.jsx'; import Spacer from '../formElements/Spacer.jsx'; -import { getDefault } from '../../../functions/shared/index.js'; import TieSheetList from './TieSheetList.jsx'; const managed_counties = { UTAH: 'https://maps.utahcounty.gov/TieSheets/TieSheet.htm', - WASATCH: - 'https://wasatch.maps.arcgis.com/apps/webappviewer/index.html?id=103db0251a5342f7bbd1462eb7a47440', + WASATCH: 'https://wasatch.maps.arcgis.com/apps/webappviewer/index.html?id=103db0251a5342f7bbd1462eb7a47440', DAVIS: 'http://www.co.davis.ut.us/surveyor/default.cfm', 'SALT LAKE': 'https://slco.org/surveyor/apps/surveymonument/map.html', WEBER: 'https://www3.co.weber.ut.us/gis/maps/survey/index.html', @@ -31,9 +26,7 @@ export default function Identify({ authenticated, graphic, dispatch }) { return ( <>

PLSS Point Information

-

- {graphic.attributes.point_id} -

+

{graphic.attributes.point_id}

{graphic?.attributes?.point_id && ( @@ -59,9 +52,7 @@ export default function Identify({ authenticated, graphic, dispatch }) {
Elevation - - {getDefault(graphic.attributes.elevation, 'unknown', ' ft')} - + {getDefault(graphic.attributes.elevation, 'unknown', ' ft')}
County @@ -114,9 +105,7 @@ export default function Identify({ authenticated, graphic, dispatch }) {
Category - - {getDefault(graphic.attributes.point_category)} - + {getDefault(graphic.attributes.point_category)}
@@ -135,13 +124,8 @@ export default function Identify({ authenticated, graphic, dispatch }) {
County managed - - {getDefault(graphic.attributes.managed_by)} county surveyor - website + + {getDefault(graphic.attributes.managed_by)} county surveyor website
@@ -179,8 +163,8 @@ const EmptyIdentify = ({ dispatch }) => {

No corner point was found at this location.

- If you do not see any points, try zooming in and click on the point - again. Otherwise try clicking on the corner point again. + If you do not see any points, try zooming in and click on the point again. Otherwise try clicking on the + corner point again.

); }} @@ -78,8 +65,7 @@ const layers = [ { name: 'County Managed', color: '#7BE144', - about: - 'PLSS points whose monument record sheets and information are managed on a county website.', + about: 'PLSS points whose monument record sheets and information are managed on a county website.', }, { name: 'Monument Record', @@ -89,8 +75,7 @@ const layers = [ { name: 'Control', color: '#1A1A1A', - about: - 'PLSS points that have been incorporated into the PLSS Fabric as control points.', + about: 'PLSS points that have been incorporated into the PLSS Fabric as control points.', }, { name: 'Calculated', @@ -104,4 +89,9 @@ const layers = [ about: 'PLSS points with an available monument record sheet that was collected as part of the Monument Replacement and Restoration Committee (MRRC) grant program.', }, + { + name: 'GCDB Points', + color: '#fff', + about: "The BLM's geographic coordinate database points.", + }, ]; diff --git a/src/components/pageElements/Login.jsx b/src/components/pageElements/Login.jsx index 9d806fe4..dead3bd9 100644 --- a/src/components/pageElements/Login.jsx +++ b/src/components/pageElements/Login.jsx @@ -1,11 +1,11 @@ -import PropTypes from 'prop-types'; -import { httpsCallable } from 'firebase/functions'; -import { useFunctions, useSigninCheck, useUser } from 'reactfire'; import { useQuery, useQueryClient } from '@tanstack/react-query'; -import { LogInButton, LogOutButton, Button } from '../formElements/Buttons.jsx'; -import Card from '../formElements/Card.jsx'; +import { httpsCallable } from 'firebase/functions'; import md5 from 'md5'; +import PropTypes from 'prop-types'; import { useEffect } from 'react'; +import { useFunctions, useSigninCheck, useUser } from 'reactfire'; +import { Button, LogInButton, LogOutButton } from '../formElements/Buttons.jsx'; +import Card from '../formElements/Card.jsx'; import usePageView from '../hooks/usePageView.jsx'; const size = 160; @@ -28,9 +28,7 @@ export default function Login({ dispatch }) { }); } }, [signedIn, queryClient]); - return ( - {data?.signedIn ? : } - ); + return {data?.signedIn ? : }; } Login.propTypes = { dispatch: PropTypes.func, @@ -43,19 +41,16 @@ const SignIn = () => {

Sign in to your account

- This app requires a UtahId account to submit monument record sheets. - Your name and email address will be shared with this application. + This app requires a UtahId account to submit monument record sheets. Your name and email address will be shared + with this application.

- A surveyor license and seal will be displayed publicly on monument - record sheets if you choose to add them on your profile. Otherwise, no - other personal information will be shared or made public. + A surveyor license and seal will be displayed publicly on monument record sheets if you choose to add them on + your profile. Otherwise, no other personal information will be shared or made public.

- - continue with - + continue with
@@ -87,9 +82,7 @@ const Profile = ({ dispatch }) => { return (
-

- Welcome back, {response.data.displayName} -

+

Welcome back, {response.data.displayName}

{status === 'success' && } @@ -106,11 +99,7 @@ const Profile = ({ dispatch }) => {
- +
); @@ -120,9 +109,7 @@ Profile.propTypes = { }; const Gravatar = ({ email }) => { - const gravatar = `https://www.gravatar.com/avatar/${md5( - email.toLowerCase(), - )}?s=${size}&default=${fallback}`; + const gravatar = `https://www.gravatar.com/avatar/${md5(email.toLowerCase())}?s=${size}&default=${fallback}`; return Gravatar; }; diff --git a/src/components/pageElements/Logo.jsx b/src/components/pageElements/Logo.jsx index ab6ae71d..05b22132 100644 --- a/src/components/pageElements/Logo.jsx +++ b/src/components/pageElements/Logo.jsx @@ -3,11 +3,7 @@ import PropTypes from 'prop-types'; export default function Logo({ version }) { return (
- + result.layer?.id === 'PLSS Points', - ); + const hits = response?.results?.filter((result) => result.layer?.id === 'PLSS Points'); let payload = null; if (hits.length > 0) { @@ -362,13 +492,7 @@ export default function PlssMap({ color, dispatch, drawerOpen, state }) { setUserGraphics(); dispatch({ type: 'map/userPoints', payload: [] }); } - }, [ - dispatch, - setUserGraphics, - content?.data?.points, - status, - signInCheckResult?.signedIn, - ]); + }, [dispatch, setUserGraphics, content?.data?.points, status, signInCheckResult?.signedIn]); // add and zoom to gps location useEffect(() => { @@ -428,23 +552,12 @@ export default function PlssMap({ color, dispatch, drawerOpen, state }) { <>
-
+
- {selectorOptions ? ( - - ) : null} + {selectorOptions ? : null} - +

Quick finder tools

@@ -469,10 +582,7 @@ export default function PlssMap({ color, dispatch, drawerOpen, state }) { - + diff --git a/src/components/pageElements/MyContent.jsx b/src/components/pageElements/MyContent.jsx index 15a3b1aa..15df4c32 100644 --- a/src/components/pageElements/MyContent.jsx +++ b/src/components/pageElements/MyContent.jsx @@ -2,11 +2,12 @@ import { Tab, TabGroup, TabList, TabPanel, TabPanels } from '@headlessui/react'; import { ChevronRightIcon } from '@heroicons/react/20/solid'; import { ArrowLeftCircleIcon } from '@heroicons/react/24/outline'; import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; +import { useOpenClosed } from '@ugrc/utilities/hooks'; import clsx from 'clsx'; +import { logEvent } from 'firebase/analytics'; +import { deleteDoc, doc, getFirestore } from 'firebase/firestore'; import { httpsCallable } from 'firebase/functions'; import { getDownloadURL, ref } from 'firebase/storage'; -import { deleteDoc, doc, getFirestore } from 'firebase/firestore'; -import { logEvent } from 'firebase/analytics'; import PropTypes from 'prop-types'; import { useState } from 'react'; import { @@ -19,12 +20,11 @@ import { useStorage, useUser, } from 'reactfire'; -import { useOpenClosed } from '@ugrc/utilities/hooks'; +import { timeSince } from '../../../functions/shared/index.js'; import { Button, Link } from '../formElements/Buttons.jsx'; import Card from '../formElements/Card.jsx'; import { ObjectPreview } from '../formElements/FileUpload.jsx'; import { Select } from '../formElements/Select.jsx'; -import { timeSince } from '../../../functions/shared/index.js'; import Spacer from '../formElements/Spacer.jsx'; import usePageView from '../hooks/usePageView.jsx'; @@ -124,16 +124,10 @@ const MyContent = ({ dispatch }) => { )} {status === 'success' && name === 'Submissions' && ( - + )} {status === 'success' && name === 'Reference Points' && ( - + )} ))} @@ -158,10 +152,7 @@ const ReferencePoints = ({ items, dispatch }) => {

Your reference point list is empty

You can create reference points in the{' '} - {' '} section @@ -174,19 +165,10 @@ const ReferencePoints = ({ items, dispatch }) => {

- + - +
@@ -203,8 +185,8 @@ const Submissions = ({ items, dispatch }) => {

Your submission list is empty

- You haven't submitted any monument record sheets yet. Start a - submission by clicking on the corner points. Get out and survey! + You haven't submitted any monument record sheets yet. Start a submission by clicking on the corner + points. Get out and survey!

); @@ -261,7 +243,7 @@ const Submission = ({ item, dispatch }) => { try { getDownloadURL(ref(storage, attributes.ref)).then(setUrl); - } catch (e) { + } catch { logEvent(analytics, 'download-submission-error', { document: item.key, }); @@ -271,10 +253,7 @@ const Submission = ({ item, dispatch }) => {
{id}
- + submitted {timeSince(submission)} @@ -282,13 +261,7 @@ const Submission = ({ item, dispatch }) => {
{(url?.length ?? 0) > 0 ? ( - + Download ) : ( @@ -299,9 +272,7 @@ const Submission = ({ item, dispatch }) => { @@ -356,9 +327,7 @@ const SubmissionStatus = ({ status, label }) => (
Received - - {getReviewStatus(status.reviewed)} - + {getReviewStatus(status.reviewed)} Published
@@ -371,10 +340,7 @@ SubmissionStatus.propTypes = { const SelectedItem = ({ item, dispatch }) => ( <> - dispatch({ type: 'set_selection', payload: null })} - /> + dispatch({ type: 'set_selection', payload: null })} />

{item.name}

{dateFormatter.format(item.when)}
@@ -405,12 +371,7 @@ SelectedItem.propTypes = { dispatch: PropTypes.func, }; -const sortOrders = [ - 'New to Old', - 'Old to New', - 'Ascending (0-9 A-Z)', - 'Descending (Z-A 0-9)', -]; +const sortOrders = ['New to Old', 'Old to New', 'Ascending (0-9 A-Z)', 'Descending (Z-A 0-9)']; const sortFunction = (sortOrder, transform) => { return (one, two) => { @@ -438,10 +399,7 @@ const ItemList = ({ items, dispatch, sortOrder }) => { {clone .sort( sortFunction(sortOrder, (x, y) => { - if ( - sortOrder === 'Ascending (0-9 A-Z)' || - sortOrder === 'Descending (Z-A 0-9)' - ) { + if (sortOrder === 'Ascending (0-9 A-Z)' || sortOrder === 'Descending (Z-A 0-9)') { return { a: x.attributes.name, b: y.attributes.name }; } @@ -482,10 +440,7 @@ const Item = ({ item, dispatch }) => { {item.attributes.name}

- + created {timeSince(date)} @@ -507,9 +462,7 @@ const Item = ({ item, dispatch }) => {
{item.photos.length === 0 && ( -

- No photos are attached to this point. -

+

No photos are attached to this point.

)} {item.photos.map((path) => ( @@ -525,9 +478,7 @@ const Item = ({ item, dispatch }) => { @@ -538,9 +489,7 @@ const Item = ({ item, dispatch }) => { onClick={async () => { try { setStatus('loading'); - await deleteDoc( - doc(db, 'submitters', user.uid, 'points', item.attributes.id), - ); + await deleteDoc(doc(db, 'submitters', user.uid, 'points', item.attributes.id)); queryClient.invalidateQueries(['my content']); setStatus('success'); } catch (error) { diff --git a/src/components/pageElements/MyContent.stories.jsx b/src/components/pageElements/MyContent.stories.jsx index 2d5b3571..9c09aa77 100644 --- a/src/components/pageElements/MyContent.stories.jsx +++ b/src/components/pageElements/MyContent.stories.jsx @@ -3,12 +3,7 @@ import { initializeApp } from 'firebase/app'; import { getAuth } from 'firebase/auth'; import { getFunctions } from 'firebase/functions'; import { getStorage } from 'firebase/storage'; -import { - AuthProvider, - FirebaseAppProvider, - FunctionsProvider, - StorageProvider, -} from 'reactfire'; +import { AuthProvider, FirebaseAppProvider, FunctionsProvider, StorageProvider } from 'reactfire'; import './../../index.css'; import MyContent from './MyContent.jsx'; diff --git a/src/components/pageElements/Profile.jsx b/src/components/pageElements/Profile.jsx index 5d6a726d..3c36c873 100644 --- a/src/components/pageElements/Profile.jsx +++ b/src/components/pageElements/Profile.jsx @@ -1,19 +1,19 @@ +import { ErrorMessage } from '@hookform/error-message'; +import { yupResolver } from '@hookform/resolvers/yup'; +import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; +import { httpsCallable } from 'firebase/functions'; import PropTypes from 'prop-types'; import { useEffect } from 'react'; -import { httpsCallable } from 'firebase/functions'; -import { useUser, useFunctions } from 'reactfire'; -import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import { Controller, useForm, useWatch } from 'react-hook-form'; -import { yupResolver } from '@hookform/resolvers/yup'; -import { ErrorMessage } from '@hookform/error-message'; -import ErrorMessageTag from './ErrorMessage.jsx'; +import { useFunctions, useUser } from 'reactfire'; import { profileSchema as schema } from '../../../functions/shared/cornerSubmission/Schema.js'; -import { Input, Label } from '../formElements/Inputs.jsx'; -import Card from '../formElements/Card.jsx'; import { Button } from '../formElements/Buttons.jsx'; +import Card from '../formElements/Card.jsx'; import FileUpload from '../formElements/FileUpload.jsx'; +import { Input, Label } from '../formElements/Inputs.jsx'; import Note from '../formElements/Note.jsx'; import usePageView from '../hooks/usePageView.jsx'; +import ErrorMessageTag from './ErrorMessage.jsx'; const defaultValues = { displayName: '', @@ -46,11 +46,10 @@ export default function Profile({ dispatch }) { staleTime: Infinity, }); - const { control, formState, handleSubmit, register, reset, setFocus } = - useForm({ - resolver: yupResolver(schema), - defaultValues, - }); + const { control, formState, handleSubmit, register, reset, setFocus } = useForm({ + resolver: yupResolver(schema), + defaultValues, + }); const fields = useWatch({ control }); useEffect(() => { @@ -89,32 +88,12 @@ export default function Profile({ dispatch }) {

Loading...

) : ( <> - - + + - - - + + + @@ -135,23 +114,16 @@ export default function Profile({ dispatch }) { /> )} /> - + - Your surveyor license and seal will be displayed publicly on - monument record sheets. No other personal information will be - shared or made public. + Your surveyor license and seal will be displayed publicly on monument record sheets. No other personal + information will be shared or made public.
diff --git a/src/components/pageElements/TieSheetList.jsx b/src/components/pageElements/TieSheetList.jsx index 6e077b32..9f51d873 100644 --- a/src/components/pageElements/TieSheetList.jsx +++ b/src/components/pageElements/TieSheetList.jsx @@ -42,19 +42,12 @@ const TieSheetList = ({ blmPointId, children }) => {

Monument Records

{status === 'pending' &&
Loading...
} - {status === 'error' && ( -
The monument records are currently not available
- )} - {status === 'success' && (data?.length ?? 0) === 0 && ( -
This point has no monument records
- )} + {status === 'error' &&
The monument records are currently not available
} + {status === 'success' && (data?.length ?? 0) === 0 &&
This point has no monument records
} {status === 'success' && data.length > 0 && (
diff --git a/src/components/pageElements/mapElements/Township.stories.jsx b/src/components/pageElements/mapElements/Township.stories.jsx index 0783d25f..8dbddbf7 100644 --- a/src/components/pageElements/mapElements/Township.stories.jsx +++ b/src/components/pageElements/mapElements/Township.stories.jsx @@ -1,6 +1,6 @@ -import Township from './Township.jsx'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import { ReactQueryDevtools } from '@tanstack/react-query-devtools'; +import Township from './Township.jsx'; // More on default export: https://storybook.js.org/docs/react/writing-stories/introduction#default-export export default { diff --git a/src/components/pageElements/mapElements/townships.js b/src/components/pageElements/mapElements/townships.js index b5a2d4bd..ef416cb4 100644 --- a/src/components/pageElements/mapElements/townships.js +++ b/src/components/pageElements/mapElements/townships.js @@ -1,17 +1,4 @@ -export const ub = [ - '1N', - '2N', - '3N', - '4N', - '5N', - '1S', - '2S', - '3S', - '4S', - '5S', - '6S', - '7S', -]; +export const ub = ['1N', '2N', '3N', '4N', '5N', '1S', '2S', '3S', '4S', '5S', '6S', '7S']; export const sl = [ '1N', '2N', diff --git a/src/components/reducers/AppReducer.js b/src/components/reducers/AppReducer.js index 2b34ccca..72cbc37e 100644 --- a/src/components/reducers/AppReducer.js +++ b/src/components/reducers/AppReducer.js @@ -3,10 +3,7 @@ const toggleDrawer = (draft, action) => { if (action.payload === '') { draft.drawerOpen = false; draft.activeComponent = action.payload; - } else if ( - draft.activeComponent === action.payload && - action.payload !== 'identify' - ) { + } else if (draft.activeComponent === action.payload && action.payload !== 'identify') { draft.drawerOpen = !draft.drawerOpen; draft.activeComponent = null; } else { @@ -71,8 +68,7 @@ expected break; } case 'add-point/activate': { - draft.map.activeTool = - draft.map.activeTool !== 'add-point' ? 'add-point' : null; + draft.map.activeTool = draft.map.activeTool !== 'add-point' ? 'add-point' : null; if (draft.map.activeTool === null) { draft.addPoint.geometry = null; } @@ -80,7 +76,7 @@ expected break; } case 'add-point/reset': { - draft.map.activeTool === null; + draft.map.activeTool = null; draft.addPoint = { color: '', geometry: null, diff --git a/src/emails/cancelled_submission.html b/src/emails/cancelled_submission.html index 0b77c45a..1aa64cb7 100644 --- a/src/emails/cancelled_submission.html +++ b/src/emails/cancelled_submission.html @@ -1,18 +1,15 @@ - + - - - - - - - - - PLSS Corner Management - A monument submission was cancelled 😥️ - + PLSS Corner Management - A monument submission was cancelled 😥️ + - -
- 🍃️ Just like that {{blmPointId}} is gone͏ ͏ ͏ ͏ ͏ ͏ ͏ - ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ - ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ - ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ - ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ - ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ‌ -  ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ - ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ - ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ - ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ - ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ - ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ‌ -  ͏ ͏ ͏ ͏ ͏ -
-
-
+ +
+ 🍃️ Just like that {{blmPointId}} is gone͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ + ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ + ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ + ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ‌ +  ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ + ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ + ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ + ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ‌  ͏ ͏ ͏ ͏ + ͏ +
+
-
- -
-
Monument Record Cancellation
-
Utah PLSS + role="article" + aria-roledescription="email" + aria-label="PLSS Corner Management - A monument submission was cancelled 😥" + lang="en" + style=" + margin-left: auto; + margin-right: auto; + max-width: 65ch; + font-family: + ui-sans-serif, + system-ui, + -apple-system, + BlinkMacSystemFont, + Segoe UI, + Roboto, + Helvetica Neue, + Arial, + Noto Sans, + sans-serif, + Apple Color Emoji, + Segoe UI Emoji, + Segoe UI Symbol, + Noto Color Emoji; + " + > +
+
+ +
+
Monument Record Cancellation
+
+ Utah PLSS +
-
-

{{blmPointId}}

-
-

- A monument record ({{type}}) was cancelled by {{surveyor}}. -

+

{{blmPointId}}

+
+

A monument record ({{type}}) was cancelled by {{surveyor}}.

+
-
-
- - +
+ diff --git a/src/emails/new_submission.html b/src/emails/new_submission.html index c8a9881e..be062177 100644 --- a/src/emails/new_submission.html +++ b/src/emails/new_submission.html @@ -1,18 +1,15 @@ - + - - - - - - - - - PLSS Corner Management - A monument record was created 🙌 - + PLSS Corner Management - A monument record was created 🙌 + - -
- 🏆 for {{surveyor}} submitting a record for {{blmPointId}}͏ ͏ ͏ ͏ ͏ ͏ ͏ - ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ - ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ - ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ - ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ - ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ‌ -  ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ - ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ - ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ - ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ - ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ - ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ‌ -  ͏ ͏ ͏ ͏ ͏ -
-
-
+ +
+ 🏆 for {{surveyor}} submitting a record for {{blmPointId}}͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ + ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ + ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ + ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ + ‌  ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ + ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ + ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ + ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ‌  ͏ ͏ ͏ + ͏ ͏ +
+
-
- -
-
Monument Record Submission
-
Utah PLSS + role="article" + aria-roledescription="email" + aria-label="PLSS Corner Management - A monument record was created 🙌" + lang="en" + style=" + margin-left: auto; + margin-right: auto; + max-width: 65ch; + font-family: + ui-sans-serif, + system-ui, + -apple-system, + BlinkMacSystemFont, + Segoe UI, + Roboto, + Helvetica Neue, + Arial, + Noto Sans, + sans-serif, + Apple Color Emoji, + Segoe UI Emoji, + Segoe UI Symbol, + Noto Color Emoji; + " + > +
+
+ +
+
Monument Record Submission
+
+ Utah PLSS +
-
-

{{blmPointId}}

-
-

- A monument record ({{type}}) was submitted in {{county}} by {{surveyor}}. The submission PDF is attached to - this - email. -

+

{{blmPointId}}

+
+

+ A monument record ({{type}}) was submitted in {{county}} by {{surveyor}}. The submission PDF is attached to + this email. +

+
-
-
- - +
+ diff --git a/src/main.jsx b/src/main.jsx index a0eee1fc..23cb061c 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -1,10 +1,10 @@ -import { StrictMode } from 'react'; -import { createRoot } from 'react-dom/client'; +import '@arcgis/core/assets/esri/themes/light/main.css'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import { ReactQueryDevtools } from '@tanstack/react-query-devtools'; +import { StrictMode } from 'react'; +import { createRoot } from 'react-dom/client'; import { FirebaseAppProvider } from 'reactfire'; import App from './components/app/App.jsx'; -import '@arcgis/core/assets/esri/themes/light/main.css'; import './index.css'; let firebaseConfig = { diff --git a/storage.rules.test.mjs b/storage.rules.test.mjs index ac2cf9d0..c05e133a 100644 --- a/storage.rules.test.mjs +++ b/storage.rules.test.mjs @@ -1,11 +1,7 @@ -import { - assertFails, - assertSucceeds, - initializeTestEnvironment, -} from '@firebase/rules-unit-testing'; -import { afterAll, beforeAll, beforeEach, describe, it } from 'vitest'; -import { readFileSync } from 'fs'; +import { assertFails, assertSucceeds, initializeTestEnvironment } from '@firebase/rules-unit-testing'; import { Buffer } from 'buffer'; +import { readFileSync } from 'fs'; +import { afterAll, beforeAll, beforeEach, describe, it } from 'vitest'; let testEnv; const userId = 'user_abc'; @@ -20,9 +16,7 @@ const getPaths = (storage) => { submitter: storage.ref(`submitters/new`), userImage: storage.ref(`submitters/${userId}/new`).child('userFolder.png'), user: storage.ref(`submitters/${userId}/new`), - pointImage: storage - .ref(`submitters/${userId}/new/${blmPoint}`) - .child('pointFolder.png'), + pointImage: storage.ref(`submitters/${userId}/new/${blmPoint}`).child('pointFolder.png'), point: storage.ref(`submitters/${userId}/new/${blmPoint}`), }; }; @@ -67,13 +61,9 @@ describe('storage', () => { const storage = testEnv.unauthenticatedContext().storage(); const { submitter, user, point } = getPaths(storage); - await assertFails( - submitter.child('test.png').put(loadImage(), { contentType }) - ); + await assertFails(submitter.child('test.png').put(loadImage(), { contentType })); await assertFails(user.child('test.png').put(loadImage(), { contentType })); - await assertFails( - point.child('test.png').put(loadImage(), { contentType }) - ); + await assertFails(point.child('test.png').put(loadImage(), { contentType })); }); it('disallows metadata access for unauthorized users', async () => { @@ -98,42 +88,29 @@ describe('storage', () => { const storage = testEnv.authenticatedContext(userId).storage(); const { submitter, user, point } = getPaths(storage); - await assertFails( - submitter - .child('test.doc') - .put(loadImage(), { contentType: 'text/plain' }) - ); - await assertFails( - user.child('test.doc').put(loadImage(), { contentType: 'text/plain' }) - ); - await assertFails( - point.child('test.doc').put(loadImage(), { contentType: 'text/plain' }) - ); + await assertFails(submitter.child('test.doc').put(loadImage(), { contentType: 'text/plain' })); + await assertFails(user.child('test.doc').put(loadImage(), { contentType: 'text/plain' })); + await assertFails(point.child('test.doc').put(loadImage(), { contentType: 'text/plain' })); }); it('allows write access for authorized users to their folder when uploading image files', async () => { const storage = testEnv.authenticatedContext(userId).storage(); const { submitter, user, point } = getPaths(storage); - await assertFails( - submitter.child('test.png').put(loadImage(), { contentType }) - ); + await assertFails(submitter.child('test.png').put(loadImage(), { contentType })); await assertFails(user.child('test.png').put(loadImage(), { contentType })); - await assertSucceeds( - point.child('test.png').put(loadImage(), { contentType }) - ); + await assertSucceeds(point.child('test.png').put(loadImage(), { contentType })); }); it('disallows files greater than 5MB', async () => { const storage = testEnv.authenticatedContext(userId).storage(); - const getRef = (submitter, imageName) => - storage.ref(`submitters/${submitter}`).child(imageName); + const getRef = (submitter, imageName) => storage.ref(`submitters/${submitter}`).child(imageName); await assertFails( getRef(userId, 'big.png').put(createMBImage(5.1), { contentType, - }) + }), ); }); }); diff --git a/vite.config.js b/vite.config.js index 14771710..fb960a72 100644 --- a/vite.config.js +++ b/vite.config.js @@ -1,5 +1,5 @@ -import { defineConfig } from 'vite'; import react from '@vitejs/plugin-react-swc'; +import { defineConfig } from 'vite'; import eslintPlugin from 'vite-plugin-eslint'; import loadVersion from 'vite-plugin-package-version';