diff --git a/GenevieveCapolongo.patch b/GenevieveCapolongo.patch new file mode 100644 index 0000000..0252bed --- /dev/null +++ b/GenevieveCapolongo.patch @@ -0,0 +1,25275 @@ +From 361058efa5e29993897b1263d0dff6b24e29d939 Mon Sep 17 00:00:00 2001 +From: Genevieve Capolongo +Date: Thu, 9 Oct 2025 17:37:17 -0400 +Subject: [PATCH 01/22] test commit + +--- + app/frontend/reusable-components/button/button.tsx | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/app/frontend/reusable-components/button/button.tsx b/app/frontend/reusable-components/button/button.tsx +index e568b61..e22bab2 100644 +--- a/app/frontend/reusable-components/button/button.tsx ++++ b/app/frontend/reusable-components/button/button.tsx +@@ -4,6 +4,7 @@ import { Link } from 'react-router-dom'; + interface Props { + type?: 'button' | 'submit'; + href?: string; ++ test?: string; + children: ReactNode; + } + + +From 5707cd21d9728deb9c4dc962688412bfd38b1122 Mon Sep 17 00:00:00 2001 +From: Genevieve Capolongo +Date: Fri, 10 Oct 2025 13:43:20 -0400 +Subject: [PATCH 02/22] adding create account route + +--- + .../reusable-components/button/button.tsx | 1 - + .../routes/createAccount/create-account.tsx | 21 +++++++++++++++++++ + config/routes.rb | 1 + + 3 files changed, 22 insertions(+), 1 deletion(-) + create mode 100644 app/frontend/routes/createAccount/create-account.tsx + +diff --git a/app/frontend/reusable-components/button/button.tsx b/app/frontend/reusable-components/button/button.tsx +index e22bab2..e568b61 100644 +--- a/app/frontend/reusable-components/button/button.tsx ++++ b/app/frontend/reusable-components/button/button.tsx +@@ -4,7 +4,6 @@ import { Link } from 'react-router-dom'; + interface Props { + type?: 'button' | 'submit'; + href?: string; +- test?: string; + children: ReactNode; + } + +diff --git a/app/frontend/routes/createAccount/create-account.tsx b/app/frontend/routes/createAccount/create-account.tsx +new file mode 100644 +index 0000000..4cbdc9f +--- /dev/null ++++ b/app/frontend/routes/createAccount/create-account.tsx +@@ -0,0 +1,21 @@ ++import { Button } from 'app/frontend/reusable-components/button/button'; ++import { Card } from 'app/frontend/reusable-components/card/card'; ++import { FlowLayout } from 'app/frontend/reusable-components/flow-layout/flow-layout'; ++import { Input } from 'app/frontend/reusable-components/input/input'; ++import React from 'react'; ++ ++ ++export function CreateAccount() { ++ return ( ++ ++ ++
++ ++ ++ ++ ++
++
++
++ ); ++} +diff --git a/config/routes.rb b/config/routes.rb +index 0609320..e495f6e 100644 +--- a/config/routes.rb ++++ b/config/routes.rb +@@ -3,4 +3,5 @@ + + get '/', to: 'application#render_react', as: :root + get 'signup/*all', to: 'application#render_react', as: :signup ++ get 'create-account', to: 'application#render_react', as: :createAccount + end + +From 0e68b2969a69024e41af6d5226ed902cfa9ed6a1 Mon Sep 17 00:00:00 2001 +From: Genevieve Capolongo +Date: Fri, 10 Oct 2025 13:44:47 -0400 +Subject: [PATCH 03/22] adding variant to button and basic create account + styling + +--- + .../reusable-components/input/input.tsx | 10 +- + .../reusable-components/input/types.ts | 6 + + app/frontend/router.tsx | 5 + + .../routes/createAccount/create-account.tsx | 10 +- + package-lock.json | 532 +- + package.json | 4 +- + yarn.lock | 4437 +++++++++++++++++ + 7 files changed, 4471 insertions(+), 533 deletions(-) + create mode 100644 app/frontend/reusable-components/input/types.ts + create mode 100644 yarn.lock + +diff --git a/app/frontend/reusable-components/input/input.tsx b/app/frontend/reusable-components/input/input.tsx +index 08cbae9..54f4e12 100644 +--- a/app/frontend/reusable-components/input/input.tsx ++++ b/app/frontend/reusable-components/input/input.tsx +@@ -1,11 +1,14 @@ ++import classNames from 'classnames'; + import React, { ChangeEvent, useState } from 'react'; ++import { InputVariants, VariantTypes } from './types'; + + interface Props { + label: string; + onChange?: (value: string) => void; ++ variant?: InputVariants | undefined; + } + +-export function Input({ onChange, label }: Props) { ++export function Input({ onChange, label, variant }: Props) { + const [value, setValue] = useState(''); + const id = label.replace(/ /gm, '_'); + +@@ -18,7 +21,10 @@ export function Input({ onChange, label }: Props) { + + +diff --git a/app/frontend/reusable-components/input/types.ts b/app/frontend/reusable-components/input/types.ts +new file mode 100644 +index 0000000..50751b1 +--- /dev/null ++++ b/app/frontend/reusable-components/input/types.ts +@@ -0,0 +1,6 @@ ++export enum VariantTypes { ++ BLOCK = 'BLOCK', ++ UNDERLINE = 'UNDERLINE' ++} ++ ++export type InputVariants = VariantTypes.BLOCK | VariantTypes.UNDERLINE; +\ No newline at end of file +diff --git a/app/frontend/router.tsx b/app/frontend/router.tsx +index 95d0a53..9908c85 100644 +--- a/app/frontend/router.tsx ++++ b/app/frontend/router.tsx +@@ -6,6 +6,7 @@ import { CreateUser } from './routes/signup/create-user/create-user.tsx'; + import { Deposit } from './routes/signup/deposit/deposit.tsx'; + import { JointAccess } from './routes/signup/joint-access/joint-access.tsx'; + import { StockRestrictions } from './routes/signup/stock-restrictions/stock-restrictions.tsx'; ++import { CreateAccount } from './routes/createAccount/create-account.tsx'; + + const router = createBrowserRouter([ + { +@@ -32,6 +33,10 @@ const router = createBrowserRouter([ + path: '/signup/deposit', + element: , + }, ++ { ++ path: '/create-account', ++ element: ++ } + ]); + + export function Router() { +diff --git a/app/frontend/routes/createAccount/create-account.tsx b/app/frontend/routes/createAccount/create-account.tsx +index 4cbdc9f..79840ef 100644 +--- a/app/frontend/routes/createAccount/create-account.tsx ++++ b/app/frontend/routes/createAccount/create-account.tsx +@@ -2,18 +2,18 @@ import { Button } from 'app/frontend/reusable-components/button/button'; + import { Card } from 'app/frontend/reusable-components/card/card'; + import { FlowLayout } from 'app/frontend/reusable-components/flow-layout/flow-layout'; + import { Input } from 'app/frontend/reusable-components/input/input'; ++import { VariantTypes } from 'app/frontend/reusable-components/input/types'; + import React from 'react'; + + + export function CreateAccount() { + return ( + +- ++ +
+- +- +- +- ++ ++ ++ +
+
+
+diff --git a/package-lock.json b/package-lock.json +index 573ed70..1292763 100644 +--- a/package-lock.json ++++ b/package-lock.json +@@ -7,6 +7,7 @@ + "": { + "version": "0.0.1", + "dependencies": { ++ "classnames": "^2.5.1", + "react": "18.2.0", + "react-dom": "18.2.0", + "react-router-dom": "6.16.0" +@@ -1986,25 +1987,6 @@ + "@babel/types": "^7.20.7" + } + }, +- "node_modules/@types/chai": { +- "version": "4.3.6", +- "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.6.tgz", +- "integrity": "sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw==", +- "dev": true, +- "optional": true, +- "peer": true +- }, +- "node_modules/@types/chai-subset": { +- "version": "1.3.3", +- "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.3.tgz", +- "integrity": "sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==", +- "dev": true, +- "optional": true, +- "peer": true, +- "dependencies": { +- "@types/chai": "*" +- } +- }, + "node_modules/@types/graceful-fs": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.7.tgz", +@@ -2038,18 +2020,6 @@ + "@types/istanbul-lib-report": "*" + } + }, +- "node_modules/@types/jest": { +- "version": "29.5.5", +- "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.5.tgz", +- "integrity": "sha512-ebylz2hnsWR9mYvmBFbXJXr+33UPc4+ZdxyDXh5w0FlPBTfCVN3wPL+kuOiQt3xvrK419v7XWeAs+AeOksafXg==", +- "dev": true, +- "optional": true, +- "peer": true, +- "dependencies": { +- "expect": "^29.0.0", +- "pretty-format": "^29.0.0" +- } +- }, + "node_modules/@types/jsdom": { + "version": "20.0.1", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", +@@ -2357,115 +2327,6 @@ + "vite": "^4" + } + }, +- "node_modules/@vitest/expect": { +- "version": "0.34.4", +- "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.34.4.tgz", +- "integrity": "sha512-XlMKX8HyYUqB8dsY8Xxrc64J2Qs9pKMt2Z8vFTL4mBWXJsg4yoALHzJfDWi8h5nkO4Zua4zjqtapQ/IluVkSnA==", +- "dev": true, +- "optional": true, +- "peer": true, +- "dependencies": { +- "@vitest/spy": "0.34.4", +- "@vitest/utils": "0.34.4", +- "chai": "^4.3.7" +- }, +- "funding": { +- "url": "https://opencollective.com/vitest" +- } +- }, +- "node_modules/@vitest/runner": { +- "version": "0.34.4", +- "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.34.4.tgz", +- "integrity": "sha512-hwwdB1StERqUls8oV8YcpmTIpVeJMe4WgYuDongVzixl5hlYLT2G8afhcdADeDeqCaAmZcSgLTLtqkjPQF7x+w==", +- "dev": true, +- "optional": true, +- "peer": true, +- "dependencies": { +- "@vitest/utils": "0.34.4", +- "p-limit": "^4.0.0", +- "pathe": "^1.1.1" +- }, +- "funding": { +- "url": "https://opencollective.com/vitest" +- } +- }, +- "node_modules/@vitest/runner/node_modules/p-limit": { +- "version": "4.0.0", +- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", +- "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", +- "dev": true, +- "optional": true, +- "peer": true, +- "dependencies": { +- "yocto-queue": "^1.0.0" +- }, +- "engines": { +- "node": "^12.20.0 || ^14.13.1 || >=16.0.0" +- }, +- "funding": { +- "url": "https://github.com/sponsors/sindresorhus" +- } +- }, +- "node_modules/@vitest/runner/node_modules/yocto-queue": { +- "version": "1.0.0", +- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", +- "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", +- "dev": true, +- "optional": true, +- "peer": true, +- "engines": { +- "node": ">=12.20" +- }, +- "funding": { +- "url": "https://github.com/sponsors/sindresorhus" +- } +- }, +- "node_modules/@vitest/snapshot": { +- "version": "0.34.4", +- "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.34.4.tgz", +- "integrity": "sha512-GCsh4coc3YUSL/o+BPUo7lHQbzpdttTxL6f4q0jRx2qVGoYz/cyTRDJHbnwks6TILi6560bVWoBpYC10PuTLHw==", +- "dev": true, +- "optional": true, +- "peer": true, +- "dependencies": { +- "magic-string": "^0.30.1", +- "pathe": "^1.1.1", +- "pretty-format": "^29.5.0" +- }, +- "funding": { +- "url": "https://opencollective.com/vitest" +- } +- }, +- "node_modules/@vitest/spy": { +- "version": "0.34.4", +- "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.34.4.tgz", +- "integrity": "sha512-PNU+fd7DUPgA3Ya924b1qKuQkonAW6hL7YUjkON3wmBwSTIlhOSpy04SJ0NrRsEbrXgMMj6Morh04BMf8k+w0g==", +- "dev": true, +- "optional": true, +- "peer": true, +- "dependencies": { +- "tinyspy": "^2.1.1" +- }, +- "funding": { +- "url": "https://opencollective.com/vitest" +- } +- }, +- "node_modules/@vitest/utils": { +- "version": "0.34.4", +- "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.34.4.tgz", +- "integrity": "sha512-yR2+5CHhp/K4ySY0Qtd+CAL9f5Yh1aXrKfAT42bq6CtlGPh92jIDDDSg7ydlRow1CP+dys4TrOrbELOyNInHSg==", +- "dev": true, +- "optional": true, +- "peer": true, +- "dependencies": { +- "diff-sequences": "^29.4.3", +- "loupe": "^2.3.6", +- "pretty-format": "^29.5.0" +- }, +- "funding": { +- "url": "https://opencollective.com/vitest" +- } +- }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", +@@ -2650,17 +2511,6 @@ + "node": ">=8" + } + }, +- "node_modules/assertion-error": { +- "version": "1.1.0", +- "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", +- "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", +- "dev": true, +- "optional": true, +- "peer": true, +- "engines": { +- "node": "*" +- } +- }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", +@@ -2998,17 +2848,6 @@ + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, +- "node_modules/cac": { +- "version": "6.7.14", +- "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", +- "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", +- "dev": true, +- "optional": true, +- "peer": true, +- "engines": { +- "node": ">=8" +- } +- }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", +@@ -3069,26 +2908,6 @@ + } + ] + }, +- "node_modules/chai": { +- "version": "4.3.8", +- "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.8.tgz", +- "integrity": "sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==", +- "dev": true, +- "optional": true, +- "peer": true, +- "dependencies": { +- "assertion-error": "^1.1.0", +- "check-error": "^1.0.2", +- "deep-eql": "^4.1.2", +- "get-func-name": "^2.0.0", +- "loupe": "^2.3.1", +- "pathval": "^1.1.1", +- "type-detect": "^4.0.5" +- }, +- "engines": { +- "node": ">=4" +- } +- }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", +@@ -3112,17 +2931,6 @@ + "node": ">=10" + } + }, +- "node_modules/check-error": { +- "version": "1.0.2", +- "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", +- "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", +- "dev": true, +- "optional": true, +- "peer": true, +- "engines": { +- "node": "*" +- } +- }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", +@@ -3171,6 +2979,12 @@ + "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", + "dev": true + }, ++ "node_modules/classnames": { ++ "version": "2.5.1", ++ "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", ++ "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==", ++ "license": "MIT" ++ }, + "node_modules/cli-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", +@@ -3563,20 +3377,6 @@ + } + } + }, +- "node_modules/deep-eql": { +- "version": "4.1.3", +- "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", +- "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", +- "dev": true, +- "optional": true, +- "peer": true, +- "dependencies": { +- "type-detect": "^4.0.0" +- }, +- "engines": { +- "node": ">=6" +- } +- }, + "node_modules/deep-equal": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.2.tgz", +@@ -4419,17 +4219,6 @@ + "node": "6.* || 8.* || >= 10.*" + } + }, +- "node_modules/get-func-name": { +- "version": "2.0.0", +- "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", +- "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", +- "dev": true, +- "optional": true, +- "peer": true, +- "engines": { +- "node": "*" +- } +- }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", +@@ -4551,22 +4340,6 @@ + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, +- "node_modules/happy-dom": { +- "version": "12.0.1", +- "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-12.0.1.tgz", +- "integrity": "sha512-kBH54b92GFP3pn9tdMBAtjNHoddE4om6vfFoTme2PCG6u/YYiYKas2yxJCd5MAINX+pYfalfpUKQHVQDTljLnw==", +- "dev": true, +- "optional": true, +- "peer": true, +- "dependencies": { +- "css.escape": "^1.5.1", +- "entities": "^4.5.0", +- "iconv-lite": "^0.6.3", +- "webidl-conversions": "^7.0.0", +- "whatwg-encoding": "^2.0.0", +- "whatwg-mimetype": "^3.0.0" +- } +- }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", +@@ -7146,14 +6919,6 @@ + "node": ">=6" + } + }, +- "node_modules/jsonc-parser": { +- "version": "3.2.0", +- "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", +- "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", +- "dev": true, +- "optional": true, +- "peer": true +- }, + "node_modules/keyv": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", +@@ -7291,20 +7056,6 @@ + } + } + }, +- "node_modules/local-pkg": { +- "version": "0.4.3", +- "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", +- "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", +- "dev": true, +- "optional": true, +- "peer": true, +- "engines": { +- "node": ">=14" +- }, +- "funding": { +- "url": "https://github.com/sponsors/antfu" +- } +- }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", +@@ -7395,17 +7146,6 @@ + "loose-envify": "cli.js" + } + }, +- "node_modules/loupe": { +- "version": "2.3.6", +- "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", +- "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", +- "dev": true, +- "optional": true, +- "peer": true, +- "dependencies": { +- "get-func-name": "^2.0.0" +- } +- }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", +@@ -7424,20 +7164,6 @@ + "lz-string": "bin/bin.js" + } + }, +- "node_modules/magic-string": { +- "version": "0.30.3", +- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.3.tgz", +- "integrity": "sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==", +- "dev": true, +- "optional": true, +- "peer": true, +- "dependencies": { +- "@jridgewell/sourcemap-codec": "^1.4.15" +- }, +- "engines": { +- "node": ">=12" +- } +- }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", +@@ -7550,20 +7276,6 @@ + "node": "*" + } + }, +- "node_modules/mlly": { +- "version": "1.4.2", +- "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.4.2.tgz", +- "integrity": "sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==", +- "dev": true, +- "optional": true, +- "peer": true, +- "dependencies": { +- "acorn": "^8.10.0", +- "pathe": "^1.1.1", +- "pkg-types": "^1.0.3", +- "ufo": "^1.3.0" +- } +- }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", +@@ -7902,25 +7614,6 @@ + "node": ">=8" + } + }, +- "node_modules/pathe": { +- "version": "1.1.1", +- "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz", +- "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==", +- "dev": true, +- "optional": true, +- "peer": true +- }, +- "node_modules/pathval": { +- "version": "1.1.1", +- "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", +- "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", +- "dev": true, +- "optional": true, +- "peer": true, +- "engines": { +- "node": "*" +- } +- }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", +@@ -8033,19 +7726,6 @@ + "node": ">=8" + } + }, +- "node_modules/pkg-types": { +- "version": "1.0.3", +- "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz", +- "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==", +- "dev": true, +- "optional": true, +- "peer": true, +- "dependencies": { +- "jsonc-parser": "^3.2.0", +- "mlly": "^1.2.0", +- "pathe": "^1.1.0" +- } +- }, + "node_modules/postcss": { + "version": "8.4.29", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.29.tgz", +@@ -8717,14 +8397,6 @@ + "url": "https://github.com/sponsors/ljharb" + } + }, +- "node_modules/siginfo": { +- "version": "2.0.0", +- "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", +- "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", +- "dev": true, +- "optional": true, +- "peer": true +- }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", +@@ -8829,22 +8501,6 @@ + "node": ">=8" + } + }, +- "node_modules/stackback": { +- "version": "0.0.2", +- "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", +- "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", +- "dev": true, +- "optional": true, +- "peer": true +- }, +- "node_modules/std-env": { +- "version": "3.4.3", +- "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.4.3.tgz", +- "integrity": "sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==", +- "dev": true, +- "optional": true, +- "peer": true +- }, + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", +@@ -8980,20 +8636,6 @@ + "url": "https://github.com/sponsors/sindresorhus" + } + }, +- "node_modules/strip-literal": { +- "version": "1.3.0", +- "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.3.0.tgz", +- "integrity": "sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==", +- "dev": true, +- "optional": true, +- "peer": true, +- "dependencies": { +- "acorn": "^8.10.0" +- }, +- "funding": { +- "url": "https://github.com/sponsors/antfu" +- } +- }, + "node_modules/sucrase": { + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", +@@ -9136,36 +8778,6 @@ + "node": ">=0.8" + } + }, +- "node_modules/tinybench": { +- "version": "2.5.1", +- "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.5.1.tgz", +- "integrity": "sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==", +- "dev": true, +- "optional": true, +- "peer": true +- }, +- "node_modules/tinypool": { +- "version": "0.7.0", +- "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.7.0.tgz", +- "integrity": "sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==", +- "dev": true, +- "optional": true, +- "peer": true, +- "engines": { +- "node": ">=14.0.0" +- } +- }, +- "node_modules/tinyspy": { +- "version": "2.1.1", +- "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.1.1.tgz", +- "integrity": "sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w==", +- "dev": true, +- "optional": true, +- "peer": true, +- "engines": { +- "node": ">=14.0.0" +- } +- }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", +@@ -9327,14 +8939,6 @@ + "node": ">=14.17" + } + }, +- "node_modules/ufo": { +- "version": "1.3.0", +- "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.0.tgz", +- "integrity": "sha512-bRn3CsoojyNStCZe0BG0Mt4Nr/4KF+rhFlnNXybgqt5pXHNFRlqinSoQaTrGyzE4X8aHplSb+TorH+COin9Yxw==", +- "dev": true, +- "optional": true, +- "peer": true +- }, + "node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", +@@ -9468,31 +9072,6 @@ + } + } + }, +- "node_modules/vite-node": { +- "version": "0.34.4", +- "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.34.4.tgz", +- "integrity": "sha512-ho8HtiLc+nsmbwZMw8SlghESEE3KxJNp04F/jPUCLVvaURwt0d+r9LxEqCX5hvrrOQ0GSyxbYr5ZfRYhQ0yVKQ==", +- "dev": true, +- "optional": true, +- "peer": true, +- "dependencies": { +- "cac": "^6.7.14", +- "debug": "^4.3.4", +- "mlly": "^1.4.0", +- "pathe": "^1.1.1", +- "picocolors": "^1.0.0", +- "vite": "^3.0.0 || ^4.0.0" +- }, +- "bin": { +- "vite-node": "vite-node.mjs" +- }, +- "engines": { +- "node": ">=v14.18.0" +- }, +- "funding": { +- "url": "https://opencollective.com/vitest" +- } +- }, + "node_modules/vite-plugin-ruby": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/vite-plugin-ruby/-/vite-plugin-ruby-3.2.2.tgz", +@@ -9506,85 +9085,6 @@ + "vite": ">=4.0.0" + } + }, +- "node_modules/vitest": { +- "version": "0.34.4", +- "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.34.4.tgz", +- "integrity": "sha512-SE/laOsB6995QlbSE6BtkpXDeVNLJc1u2LHRG/OpnN4RsRzM3GQm4nm3PQCK5OBtrsUqnhzLdnT7se3aeNGdlw==", +- "dev": true, +- "optional": true, +- "peer": true, +- "dependencies": { +- "@types/chai": "^4.3.5", +- "@types/chai-subset": "^1.3.3", +- "@types/node": "*", +- "@vitest/expect": "0.34.4", +- "@vitest/runner": "0.34.4", +- "@vitest/snapshot": "0.34.4", +- "@vitest/spy": "0.34.4", +- "@vitest/utils": "0.34.4", +- "acorn": "^8.9.0", +- "acorn-walk": "^8.2.0", +- "cac": "^6.7.14", +- "chai": "^4.3.7", +- "debug": "^4.3.4", +- "local-pkg": "^0.4.3", +- "magic-string": "^0.30.1", +- "pathe": "^1.1.1", +- "picocolors": "^1.0.0", +- "std-env": "^3.3.3", +- "strip-literal": "^1.0.1", +- "tinybench": "^2.5.0", +- "tinypool": "^0.7.0", +- "vite": "^3.1.0 || ^4.0.0 || ^5.0.0-0", +- "vite-node": "0.34.4", +- "why-is-node-running": "^2.2.2" +- }, +- "bin": { +- "vitest": "vitest.mjs" +- }, +- "engines": { +- "node": ">=v14.18.0" +- }, +- "funding": { +- "url": "https://opencollective.com/vitest" +- }, +- "peerDependencies": { +- "@edge-runtime/vm": "*", +- "@vitest/browser": "*", +- "@vitest/ui": "*", +- "happy-dom": "*", +- "jsdom": "*", +- "playwright": "*", +- "safaridriver": "*", +- "webdriverio": "*" +- }, +- "peerDependenciesMeta": { +- "@edge-runtime/vm": { +- "optional": true +- }, +- "@vitest/browser": { +- "optional": true +- }, +- "@vitest/ui": { +- "optional": true +- }, +- "happy-dom": { +- "optional": true +- }, +- "jsdom": { +- "optional": true +- }, +- "playwright": { +- "optional": true +- }, +- "safaridriver": { +- "optional": true +- }, +- "webdriverio": { +- "optional": true +- } +- } +- }, + "node_modules/w3c-xmlserializer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", +@@ -9714,24 +9214,6 @@ + "url": "https://github.com/sponsors/ljharb" + } + }, +- "node_modules/why-is-node-running": { +- "version": "2.2.2", +- "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz", +- "integrity": "sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==", +- "dev": true, +- "optional": true, +- "peer": true, +- "dependencies": { +- "siginfo": "^2.0.0", +- "stackback": "0.0.2" +- }, +- "bin": { +- "why-is-node-running": "cli.js" +- }, +- "engines": { +- "node": ">=8" +- } +- }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", +diff --git a/package.json b/package.json +index 5fd2f23..5d687b3 100644 +--- a/package.json ++++ b/package.json +@@ -5,13 +5,15 @@ + "dev": "vite", + "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", + "test": "jest", +- "prepare": "husky install" ++ "prepare": "husky install", ++ "start": "bin/rails s" + }, + "lint-staged": { + "*.{ts,tsx}": "eslint --cache --fix", + "*.{js,css,md}": "prettier --write" + }, + "dependencies": { ++ "classnames": "^2.5.1", + "react": "18.2.0", + "react-dom": "18.2.0", + "react-router-dom": "6.16.0" +diff --git a/yarn.lock b/yarn.lock +new file mode 100644 +index 0000000..63cb40d +--- /dev/null ++++ b/yarn.lock +@@ -0,0 +1,4437 @@ ++# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. ++# yarn lockfile v1 ++ ++ ++"@aashutoshrathi/word-wrap@^1.2.3": ++ version "1.2.6" ++ resolved "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz" ++ integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== ++ ++"@adobe/css-tools@^4.3.0": ++ version "4.3.1" ++ resolved "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.1.tgz" ++ integrity sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg== ++ ++"@alloc/quick-lru@^5.2.0": ++ version "5.2.0" ++ resolved "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz" ++ integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== ++ ++"@ampproject/remapping@^2.2.0": ++ version "2.2.1" ++ resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz" ++ integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== ++ dependencies: ++ "@jridgewell/gen-mapping" "^0.3.0" ++ "@jridgewell/trace-mapping" "^0.3.9" ++ ++"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.22.13": ++ version "7.22.13" ++ resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz" ++ integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== ++ dependencies: ++ "@babel/highlight" "^7.22.13" ++ chalk "^2.4.2" ++ ++"@babel/compat-data@^7.22.9": ++ version "7.22.20" ++ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.20.tgz" ++ integrity sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw== ++ ++"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.22.9", "@babel/core@^7.8.0", "@babel/core@>=7.0.0-beta.0 <8": ++ version "7.22.20" ++ resolved "https://registry.npmjs.org/@babel/core/-/core-7.22.20.tgz" ++ integrity sha512-Y6jd1ahLubuYweD/zJH+vvOY141v4f9igNQAQ+MBgq9JlHS2iTsZKn1aMsb3vGccZsXI16VzTBw52Xx0DWmtnA== ++ dependencies: ++ "@ampproject/remapping" "^2.2.0" ++ "@babel/code-frame" "^7.22.13" ++ "@babel/generator" "^7.22.15" ++ "@babel/helper-compilation-targets" "^7.22.15" ++ "@babel/helper-module-transforms" "^7.22.20" ++ "@babel/helpers" "^7.22.15" ++ "@babel/parser" "^7.22.16" ++ "@babel/template" "^7.22.15" ++ "@babel/traverse" "^7.22.20" ++ "@babel/types" "^7.22.19" ++ convert-source-map "^1.7.0" ++ debug "^4.1.0" ++ gensync "^1.0.0-beta.2" ++ json5 "^2.2.3" ++ semver "^6.3.1" ++ ++"@babel/generator@^7.22.15", "@babel/generator@^7.7.2": ++ version "7.22.15" ++ resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.22.15.tgz" ++ integrity sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA== ++ dependencies: ++ "@babel/types" "^7.22.15" ++ "@jridgewell/gen-mapping" "^0.3.2" ++ "@jridgewell/trace-mapping" "^0.3.17" ++ jsesc "^2.5.1" ++ ++"@babel/helper-compilation-targets@^7.22.15": ++ version "7.22.15" ++ resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz" ++ integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw== ++ dependencies: ++ "@babel/compat-data" "^7.22.9" ++ "@babel/helper-validator-option" "^7.22.15" ++ browserslist "^4.21.9" ++ lru-cache "^5.1.1" ++ semver "^6.3.1" ++ ++"@babel/helper-environment-visitor@^7.22.20": ++ version "7.22.20" ++ resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz" ++ integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== ++ ++"@babel/helper-function-name@^7.22.5": ++ version "7.22.5" ++ resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz" ++ integrity sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ== ++ dependencies: ++ "@babel/template" "^7.22.5" ++ "@babel/types" "^7.22.5" ++ ++"@babel/helper-hoist-variables@^7.22.5": ++ version "7.22.5" ++ resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz" ++ integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== ++ dependencies: ++ "@babel/types" "^7.22.5" ++ ++"@babel/helper-module-imports@^7.22.15": ++ version "7.22.15" ++ resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz" ++ integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== ++ dependencies: ++ "@babel/types" "^7.22.15" ++ ++"@babel/helper-module-transforms@^7.22.20": ++ version "7.22.20" ++ resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.20.tgz" ++ integrity sha512-dLT7JVWIUUxKOs1UnJUBR3S70YK+pKX6AbJgB2vMIvEkZkrfJDbYDJesnPshtKV4LhDOR3Oc5YULeDizRek+5A== ++ dependencies: ++ "@babel/helper-environment-visitor" "^7.22.20" ++ "@babel/helper-module-imports" "^7.22.15" ++ "@babel/helper-simple-access" "^7.22.5" ++ "@babel/helper-split-export-declaration" "^7.22.6" ++ "@babel/helper-validator-identifier" "^7.22.20" ++ ++"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0": ++ version "7.22.5" ++ resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz" ++ integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== ++ ++"@babel/helper-simple-access@^7.22.5": ++ version "7.22.5" ++ resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz" ++ integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== ++ dependencies: ++ "@babel/types" "^7.22.5" ++ ++"@babel/helper-split-export-declaration@^7.22.6": ++ version "7.22.6" ++ resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz" ++ integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== ++ dependencies: ++ "@babel/types" "^7.22.5" ++ ++"@babel/helper-string-parser@^7.22.5": ++ version "7.22.5" ++ resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz" ++ integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== ++ ++"@babel/helper-validator-identifier@^7.22.19", "@babel/helper-validator-identifier@^7.22.20": ++ version "7.22.20" ++ resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz" ++ integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== ++ ++"@babel/helper-validator-option@^7.22.15": ++ version "7.22.15" ++ resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz" ++ integrity sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA== ++ ++"@babel/helpers@^7.22.15": ++ version "7.22.15" ++ resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.15.tgz" ++ integrity sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw== ++ dependencies: ++ "@babel/template" "^7.22.15" ++ "@babel/traverse" "^7.22.15" ++ "@babel/types" "^7.22.15" ++ ++"@babel/highlight@^7.22.13": ++ version "7.22.20" ++ resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz" ++ integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== ++ dependencies: ++ "@babel/helper-validator-identifier" "^7.22.20" ++ chalk "^2.4.2" ++ js-tokens "^4.0.0" ++ ++"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.15", "@babel/parser@^7.22.16": ++ version "7.22.16" ++ resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.22.16.tgz" ++ integrity sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA== ++ ++"@babel/plugin-syntax-async-generators@^7.8.4": ++ version "7.8.4" ++ resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" ++ integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== ++ dependencies: ++ "@babel/helper-plugin-utils" "^7.8.0" ++ ++"@babel/plugin-syntax-bigint@^7.8.3": ++ version "7.8.3" ++ resolved "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz" ++ integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== ++ dependencies: ++ "@babel/helper-plugin-utils" "^7.8.0" ++ ++"@babel/plugin-syntax-class-properties@^7.8.3": ++ version "7.12.13" ++ resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" ++ integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== ++ dependencies: ++ "@babel/helper-plugin-utils" "^7.12.13" ++ ++"@babel/plugin-syntax-import-meta@^7.8.3": ++ version "7.10.4" ++ resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" ++ integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== ++ dependencies: ++ "@babel/helper-plugin-utils" "^7.10.4" ++ ++"@babel/plugin-syntax-json-strings@^7.8.3": ++ version "7.8.3" ++ resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" ++ integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== ++ dependencies: ++ "@babel/helper-plugin-utils" "^7.8.0" ++ ++"@babel/plugin-syntax-jsx@^7.7.2": ++ version "7.22.5" ++ resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz" ++ integrity sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg== ++ dependencies: ++ "@babel/helper-plugin-utils" "^7.22.5" ++ ++"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": ++ version "7.10.4" ++ resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" ++ integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== ++ dependencies: ++ "@babel/helper-plugin-utils" "^7.10.4" ++ ++"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": ++ version "7.8.3" ++ resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" ++ integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== ++ dependencies: ++ "@babel/helper-plugin-utils" "^7.8.0" ++ ++"@babel/plugin-syntax-numeric-separator@^7.8.3": ++ version "7.10.4" ++ resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" ++ integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== ++ dependencies: ++ "@babel/helper-plugin-utils" "^7.10.4" ++ ++"@babel/plugin-syntax-object-rest-spread@^7.8.3": ++ version "7.8.3" ++ resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" ++ integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== ++ dependencies: ++ "@babel/helper-plugin-utils" "^7.8.0" ++ ++"@babel/plugin-syntax-optional-catch-binding@^7.8.3": ++ version "7.8.3" ++ resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" ++ integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== ++ dependencies: ++ "@babel/helper-plugin-utils" "^7.8.0" ++ ++"@babel/plugin-syntax-optional-chaining@^7.8.3": ++ version "7.8.3" ++ resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" ++ integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== ++ dependencies: ++ "@babel/helper-plugin-utils" "^7.8.0" ++ ++"@babel/plugin-syntax-top-level-await@^7.8.3": ++ version "7.14.5" ++ resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" ++ integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== ++ dependencies: ++ "@babel/helper-plugin-utils" "^7.14.5" ++ ++"@babel/plugin-syntax-typescript@^7.7.2": ++ version "7.22.5" ++ resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz" ++ integrity sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ== ++ dependencies: ++ "@babel/helper-plugin-utils" "^7.22.5" ++ ++"@babel/plugin-transform-react-jsx-self@^7.22.5": ++ version "7.22.5" ++ resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.22.5.tgz" ++ integrity sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g== ++ dependencies: ++ "@babel/helper-plugin-utils" "^7.22.5" ++ ++"@babel/plugin-transform-react-jsx-source@^7.22.5": ++ version "7.22.5" ++ resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.22.5.tgz" ++ integrity sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w== ++ dependencies: ++ "@babel/helper-plugin-utils" "^7.22.5" ++ ++"@babel/runtime@^7.12.5", "@babel/runtime@^7.9.2": ++ version "7.22.15" ++ resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.15.tgz" ++ integrity sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA== ++ dependencies: ++ regenerator-runtime "^0.14.0" ++ ++"@babel/template@^7.22.15", "@babel/template@^7.22.5", "@babel/template@^7.3.3": ++ version "7.22.15" ++ resolved "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz" ++ integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== ++ dependencies: ++ "@babel/code-frame" "^7.22.13" ++ "@babel/parser" "^7.22.15" ++ "@babel/types" "^7.22.15" ++ ++"@babel/traverse@^7.22.15", "@babel/traverse@^7.22.20": ++ version "7.22.20" ++ resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.20.tgz" ++ integrity sha512-eU260mPZbU7mZ0N+X10pxXhQFMGTeLb9eFS0mxehS8HZp9o1uSnFeWQuG1UPrlxgA7QoUzFhOnilHDp0AXCyHw== ++ dependencies: ++ "@babel/code-frame" "^7.22.13" ++ "@babel/generator" "^7.22.15" ++ "@babel/helper-environment-visitor" "^7.22.20" ++ "@babel/helper-function-name" "^7.22.5" ++ "@babel/helper-hoist-variables" "^7.22.5" ++ "@babel/helper-split-export-declaration" "^7.22.6" ++ "@babel/parser" "^7.22.16" ++ "@babel/types" "^7.22.19" ++ debug "^4.1.0" ++ globals "^11.1.0" ++ ++"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.3.3": ++ version "7.22.19" ++ resolved "https://registry.npmjs.org/@babel/types/-/types-7.22.19.tgz" ++ integrity sha512-P7LAw/LbojPzkgp5oznjE6tQEIWbp4PkkfrZDINTro9zgBRtI324/EYsiSI7lhPbpIQ+DCeR2NNmMWANGGfZsg== ++ dependencies: ++ "@babel/helper-string-parser" "^7.22.5" ++ "@babel/helper-validator-identifier" "^7.22.19" ++ to-fast-properties "^2.0.0" ++ ++"@bcoe/v8-coverage@^0.2.3": ++ version "0.2.3" ++ resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" ++ integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== ++ ++"@esbuild/darwin-arm64@0.18.20": ++ version "0.18.20" ++ resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz" ++ integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA== ++ ++"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": ++ version "4.4.0" ++ resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" ++ integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== ++ dependencies: ++ eslint-visitor-keys "^3.3.0" ++ ++"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": ++ version "4.8.1" ++ resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.1.tgz" ++ integrity sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ== ++ ++"@eslint/eslintrc@^2.1.2": ++ version "2.1.2" ++ resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz" ++ integrity sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g== ++ dependencies: ++ ajv "^6.12.4" ++ debug "^4.3.2" ++ espree "^9.6.0" ++ globals "^13.19.0" ++ ignore "^5.2.0" ++ import-fresh "^3.2.1" ++ js-yaml "^4.1.0" ++ minimatch "^3.1.2" ++ strip-json-comments "^3.1.1" ++ ++"@eslint/js@8.49.0": ++ version "8.49.0" ++ resolved "https://registry.npmjs.org/@eslint/js/-/js-8.49.0.tgz" ++ integrity sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w== ++ ++"@humanwhocodes/config-array@^0.11.11": ++ version "0.11.11" ++ resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz" ++ integrity sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA== ++ dependencies: ++ "@humanwhocodes/object-schema" "^1.2.1" ++ debug "^4.1.1" ++ minimatch "^3.0.5" ++ ++"@humanwhocodes/module-importer@^1.0.1": ++ version "1.0.1" ++ resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" ++ integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== ++ ++"@humanwhocodes/object-schema@^1.2.1": ++ version "1.2.1" ++ resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" ++ integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== ++ ++"@istanbuljs/load-nyc-config@^1.0.0": ++ version "1.1.0" ++ resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" ++ integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== ++ dependencies: ++ camelcase "^5.3.1" ++ find-up "^4.1.0" ++ get-package-type "^0.1.0" ++ js-yaml "^3.13.1" ++ resolve-from "^5.0.0" ++ ++"@istanbuljs/schema@^0.1.2": ++ version "0.1.3" ++ resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" ++ integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== ++ ++"@jest/console@^29.7.0": ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz" ++ integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== ++ dependencies: ++ "@jest/types" "^29.6.3" ++ "@types/node" "*" ++ chalk "^4.0.0" ++ jest-message-util "^29.7.0" ++ jest-util "^29.7.0" ++ slash "^3.0.0" ++ ++"@jest/core@^29.7.0": ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz" ++ integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== ++ dependencies: ++ "@jest/console" "^29.7.0" ++ "@jest/reporters" "^29.7.0" ++ "@jest/test-result" "^29.7.0" ++ "@jest/transform" "^29.7.0" ++ "@jest/types" "^29.6.3" ++ "@types/node" "*" ++ ansi-escapes "^4.2.1" ++ chalk "^4.0.0" ++ ci-info "^3.2.0" ++ exit "^0.1.2" ++ graceful-fs "^4.2.9" ++ jest-changed-files "^29.7.0" ++ jest-config "^29.7.0" ++ jest-haste-map "^29.7.0" ++ jest-message-util "^29.7.0" ++ jest-regex-util "^29.6.3" ++ jest-resolve "^29.7.0" ++ jest-resolve-dependencies "^29.7.0" ++ jest-runner "^29.7.0" ++ jest-runtime "^29.7.0" ++ jest-snapshot "^29.7.0" ++ jest-util "^29.7.0" ++ jest-validate "^29.7.0" ++ jest-watcher "^29.7.0" ++ micromatch "^4.0.4" ++ pretty-format "^29.7.0" ++ slash "^3.0.0" ++ strip-ansi "^6.0.0" ++ ++"@jest/environment@^29.7.0": ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz" ++ integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== ++ dependencies: ++ "@jest/fake-timers" "^29.7.0" ++ "@jest/types" "^29.6.3" ++ "@types/node" "*" ++ jest-mock "^29.7.0" ++ ++"@jest/expect-utils@^29.7.0": ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz" ++ integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== ++ dependencies: ++ jest-get-type "^29.6.3" ++ ++"@jest/expect@^29.7.0": ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz" ++ integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== ++ dependencies: ++ expect "^29.7.0" ++ jest-snapshot "^29.7.0" ++ ++"@jest/fake-timers@^29.7.0": ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz" ++ integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== ++ dependencies: ++ "@jest/types" "^29.6.3" ++ "@sinonjs/fake-timers" "^10.0.2" ++ "@types/node" "*" ++ jest-message-util "^29.7.0" ++ jest-mock "^29.7.0" ++ jest-util "^29.7.0" ++ ++"@jest/globals@^29.7.0", "@jest/globals@>= 28": ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz" ++ integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== ++ dependencies: ++ "@jest/environment" "^29.7.0" ++ "@jest/expect" "^29.7.0" ++ "@jest/types" "^29.6.3" ++ jest-mock "^29.7.0" ++ ++"@jest/reporters@^29.7.0": ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz" ++ integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== ++ dependencies: ++ "@bcoe/v8-coverage" "^0.2.3" ++ "@jest/console" "^29.7.0" ++ "@jest/test-result" "^29.7.0" ++ "@jest/transform" "^29.7.0" ++ "@jest/types" "^29.6.3" ++ "@jridgewell/trace-mapping" "^0.3.18" ++ "@types/node" "*" ++ chalk "^4.0.0" ++ collect-v8-coverage "^1.0.0" ++ exit "^0.1.2" ++ glob "^7.1.3" ++ graceful-fs "^4.2.9" ++ istanbul-lib-coverage "^3.0.0" ++ istanbul-lib-instrument "^6.0.0" ++ istanbul-lib-report "^3.0.0" ++ istanbul-lib-source-maps "^4.0.0" ++ istanbul-reports "^3.1.3" ++ jest-message-util "^29.7.0" ++ jest-util "^29.7.0" ++ jest-worker "^29.7.0" ++ slash "^3.0.0" ++ string-length "^4.0.1" ++ strip-ansi "^6.0.0" ++ v8-to-istanbul "^9.0.1" ++ ++"@jest/schemas@^29.6.3": ++ version "29.6.3" ++ resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz" ++ integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== ++ dependencies: ++ "@sinclair/typebox" "^0.27.8" ++ ++"@jest/source-map@^29.6.3": ++ version "29.6.3" ++ resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz" ++ integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== ++ dependencies: ++ "@jridgewell/trace-mapping" "^0.3.18" ++ callsites "^3.0.0" ++ graceful-fs "^4.2.9" ++ ++"@jest/test-result@^29.7.0": ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz" ++ integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== ++ dependencies: ++ "@jest/console" "^29.7.0" ++ "@jest/types" "^29.6.3" ++ "@types/istanbul-lib-coverage" "^2.0.0" ++ collect-v8-coverage "^1.0.0" ++ ++"@jest/test-sequencer@^29.7.0": ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz" ++ integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== ++ dependencies: ++ "@jest/test-result" "^29.7.0" ++ graceful-fs "^4.2.9" ++ jest-haste-map "^29.7.0" ++ slash "^3.0.0" ++ ++"@jest/transform@^29.7.0": ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz" ++ integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== ++ dependencies: ++ "@babel/core" "^7.11.6" ++ "@jest/types" "^29.6.3" ++ "@jridgewell/trace-mapping" "^0.3.18" ++ babel-plugin-istanbul "^6.1.1" ++ chalk "^4.0.0" ++ convert-source-map "^2.0.0" ++ fast-json-stable-stringify "^2.1.0" ++ graceful-fs "^4.2.9" ++ jest-haste-map "^29.7.0" ++ jest-regex-util "^29.6.3" ++ jest-util "^29.7.0" ++ micromatch "^4.0.4" ++ pirates "^4.0.4" ++ slash "^3.0.0" ++ write-file-atomic "^4.0.2" ++ ++"@jest/types@^29.0.0", "@jest/types@^29.6.3": ++ version "29.6.3" ++ resolved "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz" ++ integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== ++ dependencies: ++ "@jest/schemas" "^29.6.3" ++ "@types/istanbul-lib-coverage" "^2.0.0" ++ "@types/istanbul-reports" "^3.0.0" ++ "@types/node" "*" ++ "@types/yargs" "^17.0.8" ++ chalk "^4.0.0" ++ ++"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": ++ version "0.3.3" ++ resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz" ++ integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== ++ dependencies: ++ "@jridgewell/set-array" "^1.0.1" ++ "@jridgewell/sourcemap-codec" "^1.4.10" ++ "@jridgewell/trace-mapping" "^0.3.9" ++ ++"@jridgewell/resolve-uri@^3.1.0": ++ version "3.1.1" ++ resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz" ++ integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== ++ ++"@jridgewell/set-array@^1.0.1": ++ version "1.1.2" ++ resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" ++ integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== ++ ++"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": ++ version "1.4.15" ++ resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" ++ integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== ++ ++"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": ++ version "0.3.19" ++ resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz" ++ integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== ++ dependencies: ++ "@jridgewell/resolve-uri" "^3.1.0" ++ "@jridgewell/sourcemap-codec" "^1.4.14" ++ ++"@nodelib/fs.scandir@2.1.5": ++ version "2.1.5" ++ resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" ++ integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== ++ dependencies: ++ "@nodelib/fs.stat" "2.0.5" ++ run-parallel "^1.1.9" ++ ++"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": ++ version "2.0.5" ++ resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" ++ integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== ++ ++"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": ++ version "1.2.8" ++ resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" ++ integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== ++ dependencies: ++ "@nodelib/fs.scandir" "2.1.5" ++ fastq "^1.6.0" ++ ++"@remix-run/router@1.9.0": ++ version "1.9.0" ++ resolved "https://registry.npmjs.org/@remix-run/router/-/router-1.9.0.tgz" ++ integrity sha512-bV63itrKBC0zdT27qYm6SDZHlkXwFL1xMBuhkn+X7l0+IIhNaH5wuuvZKp6eKhCD4KFhujhfhCT1YxXW6esUIA== ++ ++"@sinclair/typebox@^0.27.8": ++ version "0.27.8" ++ resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz" ++ integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== ++ ++"@sinonjs/commons@^3.0.0": ++ version "3.0.0" ++ resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz" ++ integrity sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA== ++ dependencies: ++ type-detect "4.0.8" ++ ++"@sinonjs/fake-timers@^10.0.2": ++ version "10.3.0" ++ resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz" ++ integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== ++ dependencies: ++ "@sinonjs/commons" "^3.0.0" ++ ++"@swc/core-darwin-arm64@1.3.85": ++ version "1.3.85" ++ resolved "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.85.tgz" ++ integrity sha512-jTikp+i4nO4Ofe6qGm4I3sFeebD1OvueBCHITux5tQKD6umN1c2z4CRGv6K49NIz/qEpUcdr6Qny6K+3yibVFQ== ++ ++"@swc/core@^1.3.61": ++ version "1.3.85" ++ resolved "https://registry.npmjs.org/@swc/core/-/core-1.3.85.tgz" ++ integrity sha512-qnoxp+2O0GtvRdYnXgR1v8J7iymGGYpx6f6yCK9KxipOZOjrlKILFANYlghQxZyPUfXwK++TFxfSlX4r9wK+kg== ++ dependencies: ++ "@swc/types" "^0.1.4" ++ optionalDependencies: ++ "@swc/core-darwin-arm64" "1.3.85" ++ "@swc/core-darwin-x64" "1.3.85" ++ "@swc/core-linux-arm-gnueabihf" "1.3.85" ++ "@swc/core-linux-arm64-gnu" "1.3.85" ++ "@swc/core-linux-arm64-musl" "1.3.85" ++ "@swc/core-linux-x64-gnu" "1.3.85" ++ "@swc/core-linux-x64-musl" "1.3.85" ++ "@swc/core-win32-arm64-msvc" "1.3.85" ++ "@swc/core-win32-ia32-msvc" "1.3.85" ++ "@swc/core-win32-x64-msvc" "1.3.85" ++ ++"@swc/types@^0.1.4": ++ version "0.1.4" ++ resolved "https://registry.npmjs.org/@swc/types/-/types-0.1.4.tgz" ++ integrity sha512-z/G02d+59gyyUb7KYhKi9jOhicek6QD2oMaotUyG+lUkybpXoV49dY9bj7Ah5Q+y7knK2jU67UTX9FyfGzaxQg== ++ ++"@testing-library/dom@^9.0.0": ++ version "9.3.3" ++ resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.3.tgz" ++ integrity sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw== ++ dependencies: ++ "@babel/code-frame" "^7.10.4" ++ "@babel/runtime" "^7.12.5" ++ "@types/aria-query" "^5.0.1" ++ aria-query "5.1.3" ++ chalk "^4.1.0" ++ dom-accessibility-api "^0.5.9" ++ lz-string "^1.5.0" ++ pretty-format "^27.0.2" ++ ++"@testing-library/jest-dom@^6.1.3": ++ version "6.1.3" ++ resolved "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.1.3.tgz" ++ integrity sha512-YzpjRHoCBWPzpPNtg6gnhasqtE/5O4qz8WCwDEaxtfnPO6gkaLrnuXusrGSPyhIGPezr1HM7ZH0CFaUTY9PJEQ== ++ dependencies: ++ "@adobe/css-tools" "^4.3.0" ++ "@babel/runtime" "^7.9.2" ++ aria-query "^5.0.0" ++ chalk "^3.0.0" ++ css.escape "^1.5.1" ++ dom-accessibility-api "^0.5.6" ++ lodash "^4.17.15" ++ redent "^3.0.0" ++ ++"@testing-library/react@^14.0.0": ++ version "14.0.0" ++ resolved "https://registry.npmjs.org/@testing-library/react/-/react-14.0.0.tgz" ++ integrity sha512-S04gSNJbYE30TlIMLTzv6QCTzt9AqIF5y6s6SzVFILNcNvbV/jU96GeiTPillGQo+Ny64M/5PV7klNYYgv5Dfg== ++ dependencies: ++ "@babel/runtime" "^7.12.5" ++ "@testing-library/dom" "^9.0.0" ++ "@types/react-dom" "^18.0.0" ++ ++"@tootallnate/once@2": ++ version "2.0.0" ++ resolved "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz" ++ integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== ++ ++"@types/aria-query@^5.0.1": ++ version "5.0.1" ++ resolved "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.1.tgz" ++ integrity sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q== ++ ++"@types/babel__core@^7.1.14": ++ version "7.20.2" ++ resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.2.tgz" ++ integrity sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA== ++ dependencies: ++ "@babel/parser" "^7.20.7" ++ "@babel/types" "^7.20.7" ++ "@types/babel__generator" "*" ++ "@types/babel__template" "*" ++ "@types/babel__traverse" "*" ++ ++"@types/babel__generator@*": ++ version "7.6.5" ++ resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.5.tgz" ++ integrity sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w== ++ dependencies: ++ "@babel/types" "^7.0.0" ++ ++"@types/babel__template@*": ++ version "7.4.2" ++ resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.2.tgz" ++ integrity sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ== ++ dependencies: ++ "@babel/parser" "^7.1.0" ++ "@babel/types" "^7.0.0" ++ ++"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": ++ version "7.20.2" ++ resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.2.tgz" ++ integrity sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw== ++ dependencies: ++ "@babel/types" "^7.20.7" ++ ++"@types/graceful-fs@^4.1.3": ++ version "4.1.7" ++ resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.7.tgz" ++ integrity sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw== ++ dependencies: ++ "@types/node" "*" ++ ++"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": ++ version "2.0.4" ++ resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz" ++ integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== ++ ++"@types/istanbul-lib-report@*": ++ version "3.0.0" ++ resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" ++ integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== ++ dependencies: ++ "@types/istanbul-lib-coverage" "*" ++ ++"@types/istanbul-reports@^3.0.0": ++ version "3.0.1" ++ resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz" ++ integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== ++ dependencies: ++ "@types/istanbul-lib-report" "*" ++ ++"@types/jsdom@^20.0.0": ++ version "20.0.1" ++ resolved "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz" ++ integrity sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ== ++ dependencies: ++ "@types/node" "*" ++ "@types/tough-cookie" "*" ++ parse5 "^7.0.0" ++ ++"@types/json-schema@^7.0.12": ++ version "7.0.13" ++ resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz" ++ integrity sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ== ++ ++"@types/node@*", "@types/node@>= 14", "@types/node@18.17.17": ++ version "18.17.17" ++ resolved "https://registry.npmjs.org/@types/node/-/node-18.17.17.tgz" ++ integrity sha512-cOxcXsQ2sxiwkykdJqvyFS+MLQPLvIdwh5l6gNg8qF6s+C7XSkEWOZjK+XhUZd+mYvHV/180g2cnCcIl4l06Pw== ++ ++"@types/prop-types@*": ++ version "15.7.5" ++ resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz" ++ integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== ++ ++"@types/react-dom@^18.0.0", "@types/react-dom@18.2.7": ++ version "18.2.7" ++ resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.7.tgz" ++ integrity sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA== ++ dependencies: ++ "@types/react" "*" ++ ++"@types/react@*", "@types/react@^18.2.21": ++ version "18.2.21" ++ resolved "https://registry.npmjs.org/@types/react/-/react-18.2.21.tgz" ++ integrity sha512-neFKG/sBAwGxHgXiIxnbm3/AAVQ/cMRS93hvBpg8xYRbeQSPVABp9U2bRnPf0iI4+Ucdv3plSxKK+3CW2ENJxA== ++ dependencies: ++ "@types/prop-types" "*" ++ "@types/scheduler" "*" ++ csstype "^3.0.2" ++ ++"@types/scheduler@*": ++ version "0.16.3" ++ resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz" ++ integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ== ++ ++"@types/semver@^7.5.0": ++ version "7.5.2" ++ resolved "https://registry.npmjs.org/@types/semver/-/semver-7.5.2.tgz" ++ integrity sha512-7aqorHYgdNO4DM36stTiGO3DvKoex9TQRwsJU6vMaFGyqpBA1MNZkz+PG3gaNUPpTAOYhT1WR7M1JyA3fbS9Cw== ++ ++"@types/stack-utils@^2.0.0": ++ version "2.0.1" ++ resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz" ++ integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== ++ ++"@types/tough-cookie@*": ++ version "4.0.3" ++ resolved "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.3.tgz" ++ integrity sha512-THo502dA5PzG/sfQH+42Lw3fvmYkceefOspdCwpHRul8ik2Jv1K8I5OZz1AT3/rs46kwgMCe9bSBmDLYkkOMGg== ++ ++"@types/yargs-parser@*": ++ version "21.0.0" ++ resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz" ++ integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== ++ ++"@types/yargs@^17.0.8": ++ version "17.0.24" ++ resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz" ++ integrity sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw== ++ dependencies: ++ "@types/yargs-parser" "*" ++ ++"@typescript-eslint/eslint-plugin@^6.7.0": ++ version "6.7.0" ++ resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.0.tgz" ++ integrity sha512-gUqtknHm0TDs1LhY12K2NA3Rmlmp88jK9Tx8vGZMfHeNMLE3GH2e9TRub+y+SOjuYgtOmok+wt1AyDPZqxbNag== ++ dependencies: ++ "@eslint-community/regexpp" "^4.5.1" ++ "@typescript-eslint/scope-manager" "6.7.0" ++ "@typescript-eslint/type-utils" "6.7.0" ++ "@typescript-eslint/utils" "6.7.0" ++ "@typescript-eslint/visitor-keys" "6.7.0" ++ debug "^4.3.4" ++ graphemer "^1.4.0" ++ ignore "^5.2.4" ++ natural-compare "^1.4.0" ++ semver "^7.5.4" ++ ts-api-utils "^1.0.1" ++ ++"@typescript-eslint/parser@^6.0.0 || ^6.0.0-alpha", "@typescript-eslint/parser@^6.7.0": ++ version "6.7.0" ++ resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.0.tgz" ++ integrity sha512-jZKYwqNpNm5kzPVP5z1JXAuxjtl2uG+5NpaMocFPTNC2EdYIgbXIPImObOkhbONxtFTTdoZstLZefbaK+wXZng== ++ dependencies: ++ "@typescript-eslint/scope-manager" "6.7.0" ++ "@typescript-eslint/types" "6.7.0" ++ "@typescript-eslint/typescript-estree" "6.7.0" ++ "@typescript-eslint/visitor-keys" "6.7.0" ++ debug "^4.3.4" ++ ++"@typescript-eslint/scope-manager@6.7.0": ++ version "6.7.0" ++ resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.0.tgz" ++ integrity sha512-lAT1Uau20lQyjoLUQ5FUMSX/dS07qux9rYd5FGzKz/Kf8W8ccuvMyldb8hadHdK/qOI7aikvQWqulnEq2nCEYA== ++ dependencies: ++ "@typescript-eslint/types" "6.7.0" ++ "@typescript-eslint/visitor-keys" "6.7.0" ++ ++"@typescript-eslint/type-utils@6.7.0": ++ version "6.7.0" ++ resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.0.tgz" ++ integrity sha512-f/QabJgDAlpSz3qduCyQT0Fw7hHpmhOzY/Rv6zO3yO+HVIdPfIWhrQoAyG+uZVtWAIS85zAyzgAFfyEr+MgBpg== ++ dependencies: ++ "@typescript-eslint/typescript-estree" "6.7.0" ++ "@typescript-eslint/utils" "6.7.0" ++ debug "^4.3.4" ++ ts-api-utils "^1.0.1" ++ ++"@typescript-eslint/types@6.7.0": ++ version "6.7.0" ++ resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.0.tgz" ++ integrity sha512-ihPfvOp7pOcN/ysoj0RpBPOx3HQTJTrIN8UZK+WFd3/iDeFHHqeyYxa4hQk4rMhsz9H9mXpR61IzwlBVGXtl9Q== ++ ++"@typescript-eslint/typescript-estree@6.7.0": ++ version "6.7.0" ++ resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.0.tgz" ++ integrity sha512-dPvkXj3n6e9yd/0LfojNU8VMUGHWiLuBZvbM6V6QYD+2qxqInE7J+J/ieY2iGwR9ivf/R/haWGkIj04WVUeiSQ== ++ dependencies: ++ "@typescript-eslint/types" "6.7.0" ++ "@typescript-eslint/visitor-keys" "6.7.0" ++ debug "^4.3.4" ++ globby "^11.1.0" ++ is-glob "^4.0.3" ++ semver "^7.5.4" ++ ts-api-utils "^1.0.1" ++ ++"@typescript-eslint/utils@6.7.0": ++ version "6.7.0" ++ resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.0.tgz" ++ integrity sha512-MfCq3cM0vh2slSikQYqK2Gq52gvOhe57vD2RM3V4gQRZYX4rDPnKLu5p6cm89+LJiGlwEXU8hkYxhqqEC/V3qA== ++ dependencies: ++ "@eslint-community/eslint-utils" "^4.4.0" ++ "@types/json-schema" "^7.0.12" ++ "@types/semver" "^7.5.0" ++ "@typescript-eslint/scope-manager" "6.7.0" ++ "@typescript-eslint/types" "6.7.0" ++ "@typescript-eslint/typescript-estree" "6.7.0" ++ semver "^7.5.4" ++ ++"@typescript-eslint/visitor-keys@6.7.0": ++ version "6.7.0" ++ resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.0.tgz" ++ integrity sha512-/C1RVgKFDmGMcVGeD8HjKv2bd72oI1KxQDeY8uc66gw9R0OK0eMq48cA+jv9/2Ag6cdrsUGySm1yzYmfz0hxwQ== ++ dependencies: ++ "@typescript-eslint/types" "6.7.0" ++ eslint-visitor-keys "^3.4.1" ++ ++"@vitejs/plugin-react-swc@3.3.2": ++ version "3.3.2" ++ resolved "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.3.2.tgz" ++ integrity sha512-VJFWY5sfoZerQRvJrh518h3AcQt6f/yTuWn4/TRB+dqmYU0NX1qz7qM5Wfd+gOQqUzQW4gxKqKN3KpE/P3+zrA== ++ dependencies: ++ "@swc/core" "^1.3.61" ++ ++"@vitejs/plugin-react@4.0.4": ++ version "4.0.4" ++ resolved "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.0.4.tgz" ++ integrity sha512-7wU921ABnNYkETiMaZy7XqpueMnpu5VxvVps13MjmCo+utBdD79sZzrApHawHtVX66cCJQQTXFcjH0y9dSUK8g== ++ dependencies: ++ "@babel/core" "^7.22.9" ++ "@babel/plugin-transform-react-jsx-self" "^7.22.5" ++ "@babel/plugin-transform-react-jsx-source" "^7.22.5" ++ react-refresh "^0.14.0" ++ ++abab@^2.0.6: ++ version "2.0.6" ++ resolved "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz" ++ integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== ++ ++acorn-globals@^7.0.0: ++ version "7.0.1" ++ resolved "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz" ++ integrity sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q== ++ dependencies: ++ acorn "^8.1.0" ++ acorn-walk "^8.0.2" ++ ++acorn-jsx@^5.3.2: ++ version "5.3.2" ++ resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" ++ integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== ++ ++acorn-walk@^8.0.2: ++ version "8.2.0" ++ resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" ++ integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== ++ ++"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.1.0, acorn@^8.8.1, acorn@^8.9.0: ++ version "8.10.0" ++ resolved "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz" ++ integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== ++ ++agent-base@6: ++ version "6.0.2" ++ resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" ++ integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== ++ dependencies: ++ debug "4" ++ ++ajv@^6.12.4: ++ version "6.12.6" ++ resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" ++ integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== ++ dependencies: ++ fast-deep-equal "^3.1.1" ++ fast-json-stable-stringify "^2.0.0" ++ json-schema-traverse "^0.4.1" ++ uri-js "^4.2.2" ++ ++ansi-escapes@^4.2.1: ++ version "4.3.2" ++ resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" ++ integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== ++ dependencies: ++ type-fest "^0.21.3" ++ ++ansi-escapes@^5.0.0: ++ version "5.0.0" ++ resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz" ++ integrity sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA== ++ dependencies: ++ type-fest "^1.0.2" ++ ++ansi-regex@^5.0.1: ++ version "5.0.1" ++ resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" ++ integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ++ ++ansi-regex@^6.0.1: ++ version "6.0.1" ++ resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" ++ integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== ++ ++ansi-styles@^3.2.1: ++ version "3.2.1" ++ resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" ++ integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== ++ dependencies: ++ color-convert "^1.9.0" ++ ++ansi-styles@^4.0.0: ++ version "4.3.0" ++ resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" ++ integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== ++ dependencies: ++ color-convert "^2.0.1" ++ ++ansi-styles@^4.1.0: ++ version "4.3.0" ++ resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" ++ integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== ++ dependencies: ++ color-convert "^2.0.1" ++ ++ansi-styles@^5.0.0: ++ version "5.2.0" ++ resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" ++ integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== ++ ++ansi-styles@^6.0.0: ++ version "6.2.1" ++ resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" ++ integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== ++ ++ansi-styles@^6.1.0: ++ version "6.2.1" ++ resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" ++ integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== ++ ++any-promise@^1.0.0: ++ version "1.3.0" ++ resolved "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz" ++ integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== ++ ++anymatch@^3.0.3, anymatch@~3.1.2: ++ version "3.1.3" ++ resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" ++ integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== ++ dependencies: ++ normalize-path "^3.0.0" ++ picomatch "^2.0.4" ++ ++arg@^5.0.2: ++ version "5.0.2" ++ resolved "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz" ++ integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== ++ ++argparse@^1.0.7: ++ version "1.0.10" ++ resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" ++ integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== ++ dependencies: ++ sprintf-js "~1.0.2" ++ ++argparse@^2.0.1: ++ version "2.0.1" ++ resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" ++ integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== ++ ++aria-query@^5.0.0, aria-query@5.1.3: ++ version "5.1.3" ++ resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz" ++ integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== ++ dependencies: ++ deep-equal "^2.0.5" ++ ++array-buffer-byte-length@^1.0.0: ++ version "1.0.0" ++ resolved "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz" ++ integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== ++ dependencies: ++ call-bind "^1.0.2" ++ is-array-buffer "^3.0.1" ++ ++array-union@^2.1.0: ++ version "2.1.0" ++ resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" ++ integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== ++ ++asynckit@^0.4.0: ++ version "0.4.0" ++ resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" ++ integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== ++ ++autoprefixer@10.4.15: ++ version "10.4.15" ++ resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.15.tgz" ++ integrity sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew== ++ dependencies: ++ browserslist "^4.21.10" ++ caniuse-lite "^1.0.30001520" ++ fraction.js "^4.2.0" ++ normalize-range "^0.1.2" ++ picocolors "^1.0.0" ++ postcss-value-parser "^4.2.0" ++ ++available-typed-arrays@^1.0.5: ++ version "1.0.5" ++ resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" ++ integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== ++ ++babel-jest@^29.0.0, babel-jest@^29.7.0: ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz" ++ integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== ++ dependencies: ++ "@jest/transform" "^29.7.0" ++ "@types/babel__core" "^7.1.14" ++ babel-plugin-istanbul "^6.1.1" ++ babel-preset-jest "^29.6.3" ++ chalk "^4.0.0" ++ graceful-fs "^4.2.9" ++ slash "^3.0.0" ++ ++babel-plugin-istanbul@^6.1.1: ++ version "6.1.1" ++ resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz" ++ integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== ++ dependencies: ++ "@babel/helper-plugin-utils" "^7.0.0" ++ "@istanbuljs/load-nyc-config" "^1.0.0" ++ "@istanbuljs/schema" "^0.1.2" ++ istanbul-lib-instrument "^5.0.4" ++ test-exclude "^6.0.0" ++ ++babel-plugin-jest-hoist@^29.6.3: ++ version "29.6.3" ++ resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz" ++ integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== ++ dependencies: ++ "@babel/template" "^7.3.3" ++ "@babel/types" "^7.3.3" ++ "@types/babel__core" "^7.1.14" ++ "@types/babel__traverse" "^7.0.6" ++ ++babel-preset-current-node-syntax@^1.0.0: ++ version "1.0.1" ++ resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz" ++ integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== ++ dependencies: ++ "@babel/plugin-syntax-async-generators" "^7.8.4" ++ "@babel/plugin-syntax-bigint" "^7.8.3" ++ "@babel/plugin-syntax-class-properties" "^7.8.3" ++ "@babel/plugin-syntax-import-meta" "^7.8.3" ++ "@babel/plugin-syntax-json-strings" "^7.8.3" ++ "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" ++ "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" ++ "@babel/plugin-syntax-numeric-separator" "^7.8.3" ++ "@babel/plugin-syntax-object-rest-spread" "^7.8.3" ++ "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" ++ "@babel/plugin-syntax-optional-chaining" "^7.8.3" ++ "@babel/plugin-syntax-top-level-await" "^7.8.3" ++ ++babel-preset-jest@^29.6.3: ++ version "29.6.3" ++ resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz" ++ integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== ++ dependencies: ++ babel-plugin-jest-hoist "^29.6.3" ++ babel-preset-current-node-syntax "^1.0.0" ++ ++balanced-match@^1.0.0: ++ version "1.0.2" ++ resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" ++ integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== ++ ++binary-extensions@^2.0.0: ++ version "2.2.0" ++ resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" ++ integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== ++ ++brace-expansion@^1.1.7: ++ version "1.1.11" ++ resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" ++ integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== ++ dependencies: ++ balanced-match "^1.0.0" ++ concat-map "0.0.1" ++ ++braces@^3.0.2, braces@~3.0.2: ++ version "3.0.2" ++ resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" ++ integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== ++ dependencies: ++ fill-range "^7.0.1" ++ ++browserslist@^4.21.10, browserslist@^4.21.9, "browserslist@>= 4.21.0": ++ version "4.21.10" ++ resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz" ++ integrity sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ== ++ dependencies: ++ caniuse-lite "^1.0.30001517" ++ electron-to-chromium "^1.4.477" ++ node-releases "^2.0.13" ++ update-browserslist-db "^1.0.11" ++ ++bs-logger@0.x: ++ version "0.2.6" ++ resolved "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz" ++ integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== ++ dependencies: ++ fast-json-stable-stringify "2.x" ++ ++bser@2.1.1: ++ version "2.1.1" ++ resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" ++ integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== ++ dependencies: ++ node-int64 "^0.4.0" ++ ++buffer-from@^1.0.0: ++ version "1.1.2" ++ resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" ++ integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== ++ ++call-bind@^1.0.0, call-bind@^1.0.2: ++ version "1.0.2" ++ resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" ++ integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== ++ dependencies: ++ function-bind "^1.1.1" ++ get-intrinsic "^1.0.2" ++ ++callsites@^3.0.0: ++ version "3.1.0" ++ resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" ++ integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== ++ ++camelcase-css@^2.0.1: ++ version "2.0.1" ++ resolved "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz" ++ integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== ++ ++camelcase@^5.3.1: ++ version "5.3.1" ++ resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" ++ integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== ++ ++camelcase@^6.2.0: ++ version "6.3.0" ++ resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" ++ integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== ++ ++caniuse-lite@^1.0.30001517, caniuse-lite@^1.0.30001520: ++ version "1.0.30001534" ++ resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001534.tgz" ++ integrity sha512-vlPVrhsCS7XaSh2VvWluIQEzVhefrUQcEsQWSS5A5V+dM07uv1qHeQzAOTGIMy9i3e9bH15+muvI/UHojVgS/Q== ++ ++chalk@^2.4.2: ++ version "2.4.2" ++ resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" ++ integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== ++ dependencies: ++ ansi-styles "^3.2.1" ++ escape-string-regexp "^1.0.5" ++ supports-color "^5.3.0" ++ ++chalk@^3.0.0: ++ version "3.0.0" ++ resolved "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz" ++ integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== ++ dependencies: ++ ansi-styles "^4.1.0" ++ supports-color "^7.1.0" ++ ++chalk@^4.0.0: ++ version "4.1.2" ++ resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" ++ integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== ++ dependencies: ++ ansi-styles "^4.1.0" ++ supports-color "^7.1.0" ++ ++chalk@^4.1.0: ++ version "4.1.2" ++ resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" ++ integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== ++ dependencies: ++ ansi-styles "^4.1.0" ++ supports-color "^7.1.0" ++ ++chalk@5.3.0: ++ version "5.3.0" ++ resolved "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz" ++ integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== ++ ++char-regex@^1.0.2: ++ version "1.0.2" ++ resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" ++ integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== ++ ++chokidar@^3.5.3: ++ version "3.5.3" ++ resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" ++ integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== ++ dependencies: ++ anymatch "~3.1.2" ++ braces "~3.0.2" ++ glob-parent "~5.1.2" ++ is-binary-path "~2.1.0" ++ is-glob "~4.0.1" ++ normalize-path "~3.0.0" ++ readdirp "~3.6.0" ++ optionalDependencies: ++ fsevents "~2.3.2" ++ ++ci-info@^3.2.0: ++ version "3.8.0" ++ resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz" ++ integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== ++ ++cjs-module-lexer@^1.0.0: ++ version "1.2.3" ++ resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz" ++ integrity sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ== ++ ++classnames@^2.5.1: ++ version "2.5.1" ++ resolved "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz" ++ integrity sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow== ++ ++cli-cursor@^4.0.0: ++ version "4.0.0" ++ resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz" ++ integrity sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg== ++ dependencies: ++ restore-cursor "^4.0.0" ++ ++cli-truncate@^3.1.0: ++ version "3.1.0" ++ resolved "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz" ++ integrity sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA== ++ dependencies: ++ slice-ansi "^5.0.0" ++ string-width "^5.0.0" ++ ++cliui@^8.0.1: ++ version "8.0.1" ++ resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" ++ integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== ++ dependencies: ++ string-width "^4.2.0" ++ strip-ansi "^6.0.1" ++ wrap-ansi "^7.0.0" ++ ++co@^4.6.0: ++ version "4.6.0" ++ resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz" ++ integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== ++ ++collect-v8-coverage@^1.0.0: ++ version "1.0.2" ++ resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz" ++ integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== ++ ++color-convert@^1.9.0: ++ version "1.9.3" ++ resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" ++ integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== ++ dependencies: ++ color-name "1.1.3" ++ ++color-convert@^2.0.1: ++ version "2.0.1" ++ resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" ++ integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== ++ dependencies: ++ color-name "~1.1.4" ++ ++color-name@~1.1.4: ++ version "1.1.4" ++ resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" ++ integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== ++ ++color-name@1.1.3: ++ version "1.1.3" ++ resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" ++ integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== ++ ++colorette@^2.0.20: ++ version "2.0.20" ++ resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz" ++ integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== ++ ++combined-stream@^1.0.8: ++ version "1.0.8" ++ resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" ++ integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== ++ dependencies: ++ delayed-stream "~1.0.0" ++ ++commander@^4.0.0: ++ version "4.1.1" ++ resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" ++ integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== ++ ++commander@11.0.0: ++ version "11.0.0" ++ resolved "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz" ++ integrity sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ== ++ ++concat-map@0.0.1: ++ version "0.0.1" ++ resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" ++ integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== ++ ++convert-source-map@^1.6.0, convert-source-map@^1.7.0: ++ version "1.9.0" ++ resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz" ++ integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== ++ ++convert-source-map@^2.0.0: ++ version "2.0.0" ++ resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" ++ integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== ++ ++create-jest@^29.7.0: ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz" ++ integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== ++ dependencies: ++ "@jest/types" "^29.6.3" ++ chalk "^4.0.0" ++ exit "^0.1.2" ++ graceful-fs "^4.2.9" ++ jest-config "^29.7.0" ++ jest-util "^29.7.0" ++ prompts "^2.0.1" ++ ++cross-spawn@^7.0.2, cross-spawn@^7.0.3: ++ version "7.0.3" ++ resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" ++ integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== ++ dependencies: ++ path-key "^3.1.0" ++ shebang-command "^2.0.0" ++ which "^2.0.1" ++ ++css.escape@^1.5.1: ++ version "1.5.1" ++ resolved "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz" ++ integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg== ++ ++cssesc@^3.0.0: ++ version "3.0.0" ++ resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" ++ integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== ++ ++cssom@^0.5.0: ++ version "0.5.0" ++ resolved "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz" ++ integrity sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw== ++ ++cssom@~0.3.6: ++ version "0.3.8" ++ resolved "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz" ++ integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== ++ ++cssstyle@^2.3.0: ++ version "2.3.0" ++ resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz" ++ integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== ++ dependencies: ++ cssom "~0.3.6" ++ ++cssstyle@^3.0.0: ++ version "3.0.0" ++ resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-3.0.0.tgz" ++ integrity sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg== ++ dependencies: ++ rrweb-cssom "^0.6.0" ++ ++csstype@^3.0.2: ++ version "3.1.2" ++ resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz" ++ integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== ++ ++data-urls@^3.0.2: ++ version "3.0.2" ++ resolved "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz" ++ integrity sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ== ++ dependencies: ++ abab "^2.0.6" ++ whatwg-mimetype "^3.0.0" ++ whatwg-url "^11.0.0" ++ ++data-urls@^4.0.0: ++ version "4.0.0" ++ resolved "https://registry.npmjs.org/data-urls/-/data-urls-4.0.0.tgz" ++ integrity sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g== ++ dependencies: ++ abab "^2.0.6" ++ whatwg-mimetype "^3.0.0" ++ whatwg-url "^12.0.0" ++ ++debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4, debug@4, debug@4.3.4: ++ version "4.3.4" ++ resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" ++ integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== ++ dependencies: ++ ms "2.1.2" ++ ++decimal.js@^10.4.2, decimal.js@^10.4.3: ++ version "10.4.3" ++ resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz" ++ integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== ++ ++dedent@^1.0.0: ++ version "1.5.1" ++ resolved "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz" ++ integrity sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg== ++ ++deep-equal@^2.0.5: ++ version "2.2.2" ++ resolved "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.2.tgz" ++ integrity sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA== ++ dependencies: ++ array-buffer-byte-length "^1.0.0" ++ call-bind "^1.0.2" ++ es-get-iterator "^1.1.3" ++ get-intrinsic "^1.2.1" ++ is-arguments "^1.1.1" ++ is-array-buffer "^3.0.2" ++ is-date-object "^1.0.5" ++ is-regex "^1.1.4" ++ is-shared-array-buffer "^1.0.2" ++ isarray "^2.0.5" ++ object-is "^1.1.5" ++ object-keys "^1.1.1" ++ object.assign "^4.1.4" ++ regexp.prototype.flags "^1.5.0" ++ side-channel "^1.0.4" ++ which-boxed-primitive "^1.0.2" ++ which-collection "^1.0.1" ++ which-typed-array "^1.1.9" ++ ++deep-is@^0.1.3: ++ version "0.1.4" ++ resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" ++ integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== ++ ++deepmerge@^4.2.2: ++ version "4.3.1" ++ resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" ++ integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== ++ ++define-data-property@^1.0.1: ++ version "1.1.0" ++ resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz" ++ integrity sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g== ++ dependencies: ++ get-intrinsic "^1.2.1" ++ gopd "^1.0.1" ++ has-property-descriptors "^1.0.0" ++ ++define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: ++ version "1.2.1" ++ resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz" ++ integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== ++ dependencies: ++ define-data-property "^1.0.1" ++ has-property-descriptors "^1.0.0" ++ object-keys "^1.1.1" ++ ++delayed-stream@~1.0.0: ++ version "1.0.0" ++ resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" ++ integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== ++ ++detect-newline@^3.0.0: ++ version "3.1.0" ++ resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" ++ integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== ++ ++didyoumean@^1.2.2: ++ version "1.2.2" ++ resolved "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz" ++ integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== ++ ++diff-sequences@^29.6.3: ++ version "29.6.3" ++ resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz" ++ integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== ++ ++dir-glob@^3.0.1: ++ version "3.0.1" ++ resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" ++ integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== ++ dependencies: ++ path-type "^4.0.0" ++ ++dlv@^1.1.3: ++ version "1.1.3" ++ resolved "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz" ++ integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== ++ ++doctrine@^3.0.0: ++ version "3.0.0" ++ resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" ++ integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== ++ dependencies: ++ esutils "^2.0.2" ++ ++dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9: ++ version "0.5.16" ++ resolved "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz" ++ integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg== ++ ++domexception@^4.0.0: ++ version "4.0.0" ++ resolved "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz" ++ integrity sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw== ++ dependencies: ++ webidl-conversions "^7.0.0" ++ ++eastasianwidth@^0.2.0: ++ version "0.2.0" ++ resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" ++ integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== ++ ++electron-to-chromium@^1.4.477: ++ version "1.4.523" ++ resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.523.tgz" ++ integrity sha512-9AreocSUWnzNtvLcbpng6N+GkXnCcBR80IQkxRC9Dfdyg4gaWNUPBujAHUpKkiUkoSoR9UlhA4zD/IgBklmhzg== ++ ++emittery@^0.13.1: ++ version "0.13.1" ++ resolved "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz" ++ integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== ++ ++emoji-regex@^8.0.0: ++ version "8.0.0" ++ resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" ++ integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== ++ ++emoji-regex@^9.2.2: ++ version "9.2.2" ++ resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" ++ integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== ++ ++entities@^4.4.0: ++ version "4.5.0" ++ resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz" ++ integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== ++ ++error-ex@^1.3.1: ++ version "1.3.2" ++ resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" ++ integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== ++ dependencies: ++ is-arrayish "^0.2.1" ++ ++es-get-iterator@^1.1.3: ++ version "1.1.3" ++ resolved "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz" ++ integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw== ++ dependencies: ++ call-bind "^1.0.2" ++ get-intrinsic "^1.1.3" ++ has-symbols "^1.0.3" ++ is-arguments "^1.1.1" ++ is-map "^2.0.2" ++ is-set "^2.0.2" ++ is-string "^1.0.7" ++ isarray "^2.0.5" ++ stop-iteration-iterator "^1.0.0" ++ ++esbuild@^0.18.10: ++ version "0.18.20" ++ resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz" ++ integrity sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA== ++ optionalDependencies: ++ "@esbuild/android-arm" "0.18.20" ++ "@esbuild/android-arm64" "0.18.20" ++ "@esbuild/android-x64" "0.18.20" ++ "@esbuild/darwin-arm64" "0.18.20" ++ "@esbuild/darwin-x64" "0.18.20" ++ "@esbuild/freebsd-arm64" "0.18.20" ++ "@esbuild/freebsd-x64" "0.18.20" ++ "@esbuild/linux-arm" "0.18.20" ++ "@esbuild/linux-arm64" "0.18.20" ++ "@esbuild/linux-ia32" "0.18.20" ++ "@esbuild/linux-loong64" "0.18.20" ++ "@esbuild/linux-mips64el" "0.18.20" ++ "@esbuild/linux-ppc64" "0.18.20" ++ "@esbuild/linux-riscv64" "0.18.20" ++ "@esbuild/linux-s390x" "0.18.20" ++ "@esbuild/linux-x64" "0.18.20" ++ "@esbuild/netbsd-x64" "0.18.20" ++ "@esbuild/openbsd-x64" "0.18.20" ++ "@esbuild/sunos-x64" "0.18.20" ++ "@esbuild/win32-arm64" "0.18.20" ++ "@esbuild/win32-ia32" "0.18.20" ++ "@esbuild/win32-x64" "0.18.20" ++ ++escalade@^3.1.1: ++ version "3.1.1" ++ resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" ++ integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== ++ ++escape-string-regexp@^1.0.5: ++ version "1.0.5" ++ resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" ++ integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== ++ ++escape-string-regexp@^2.0.0: ++ version "2.0.0" ++ resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" ++ integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== ++ ++escape-string-regexp@^4.0.0: ++ version "4.0.0" ++ resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" ++ integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== ++ ++escodegen@^2.0.0: ++ version "2.1.0" ++ resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz" ++ integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== ++ dependencies: ++ esprima "^4.0.1" ++ estraverse "^5.2.0" ++ esutils "^2.0.2" ++ optionalDependencies: ++ source-map "~0.6.1" ++ ++eslint-plugin-react-hooks@4.6.0: ++ version "4.6.0" ++ resolved "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz" ++ integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== ++ ++eslint-plugin-react-refresh@0.4.3: ++ version "0.4.3" ++ resolved "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.3.tgz" ++ integrity sha512-Hh0wv8bUNY877+sI0BlCUlsS0TYYQqvzEwJsJJPM2WF4RnTStSnSR3zdJYa2nPOJgg3UghXi54lVyMSmpCalzA== ++ ++eslint-scope@^7.2.2: ++ version "7.2.2" ++ resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz" ++ integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== ++ dependencies: ++ esrecurse "^4.3.0" ++ estraverse "^5.2.0" ++ ++eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: ++ 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== ++ ++"eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0", eslint@^8.49.0, eslint@>=7: ++ version "8.49.0" ++ resolved "https://registry.npmjs.org/eslint/-/eslint-8.49.0.tgz" ++ integrity sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ== ++ dependencies: ++ "@eslint-community/eslint-utils" "^4.2.0" ++ "@eslint-community/regexpp" "^4.6.1" ++ "@eslint/eslintrc" "^2.1.2" ++ "@eslint/js" "8.49.0" ++ "@humanwhocodes/config-array" "^0.11.11" ++ "@humanwhocodes/module-importer" "^1.0.1" ++ "@nodelib/fs.walk" "^1.2.8" ++ ajv "^6.12.4" ++ chalk "^4.0.0" ++ cross-spawn "^7.0.2" ++ 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" ++ esutils "^2.0.2" ++ fast-deep-equal "^3.1.3" ++ file-entry-cache "^6.0.1" ++ 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" ++ ++espree@^9.6.0, espree@^9.6.1: ++ version "9.6.1" ++ resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz" ++ integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== ++ dependencies: ++ acorn "^8.9.0" ++ acorn-jsx "^5.3.2" ++ eslint-visitor-keys "^3.4.1" ++ ++esprima@^4.0.0, esprima@^4.0.1: ++ version "4.0.1" ++ resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" ++ integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== ++ ++esquery@^1.4.2: ++ version "1.5.0" ++ resolved "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz" ++ integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== ++ dependencies: ++ estraverse "^5.1.0" ++ ++esrecurse@^4.3.0: ++ version "4.3.0" ++ resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" ++ integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== ++ dependencies: ++ estraverse "^5.2.0" ++ ++estraverse@^5.1.0, estraverse@^5.2.0: ++ version "5.3.0" ++ resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" ++ integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== ++ ++esutils@^2.0.2: ++ version "2.0.3" ++ resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" ++ integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== ++ ++eventemitter3@^5.0.1: ++ version "5.0.1" ++ resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz" ++ integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== ++ ++execa@^5.0.0: ++ version "5.1.1" ++ resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" ++ integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== ++ dependencies: ++ cross-spawn "^7.0.3" ++ get-stream "^6.0.0" ++ human-signals "^2.1.0" ++ is-stream "^2.0.0" ++ merge-stream "^2.0.0" ++ npm-run-path "^4.0.1" ++ onetime "^5.1.2" ++ signal-exit "^3.0.3" ++ strip-final-newline "^2.0.0" ++ ++execa@7.2.0: ++ version "7.2.0" ++ resolved "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz" ++ integrity sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA== ++ dependencies: ++ cross-spawn "^7.0.3" ++ get-stream "^6.0.1" ++ human-signals "^4.3.0" ++ is-stream "^3.0.0" ++ merge-stream "^2.0.0" ++ npm-run-path "^5.1.0" ++ onetime "^6.0.0" ++ signal-exit "^3.0.7" ++ strip-final-newline "^3.0.0" ++ ++exit@^0.1.2: ++ version "0.1.2" ++ resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" ++ integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== ++ ++expect@^29.7.0: ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz" ++ integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== ++ dependencies: ++ "@jest/expect-utils" "^29.7.0" ++ jest-get-type "^29.6.3" ++ jest-matcher-utils "^29.7.0" ++ jest-message-util "^29.7.0" ++ jest-util "^29.7.0" ++ ++fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: ++ version "3.1.3" ++ resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" ++ integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== ++ ++fast-glob@^3.2.12, fast-glob@^3.2.9: ++ version "3.3.1" ++ resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz" ++ integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== ++ dependencies: ++ "@nodelib/fs.stat" "^2.0.2" ++ "@nodelib/fs.walk" "^1.2.3" ++ glob-parent "^5.1.2" ++ merge2 "^1.3.0" ++ micromatch "^4.0.4" ++ ++fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0, fast-json-stable-stringify@2.x: ++ version "2.1.0" ++ resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" ++ integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== ++ ++fast-levenshtein@^2.0.6: ++ version "2.0.6" ++ resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" ++ integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== ++ ++fastq@^1.6.0: ++ version "1.15.0" ++ resolved "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz" ++ integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== ++ dependencies: ++ reusify "^1.0.4" ++ ++fb-watchman@^2.0.0: ++ version "2.0.2" ++ resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz" ++ integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== ++ dependencies: ++ bser "2.1.1" ++ ++file-entry-cache@^6.0.1: ++ version "6.0.1" ++ resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" ++ integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== ++ dependencies: ++ flat-cache "^3.0.4" ++ ++fill-range@^7.0.1: ++ version "7.0.1" ++ resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" ++ integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== ++ dependencies: ++ to-regex-range "^5.0.1" ++ ++find-up@^4.0.0: ++ version "4.1.0" ++ resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" ++ integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== ++ dependencies: ++ locate-path "^5.0.0" ++ path-exists "^4.0.0" ++ ++find-up@^4.1.0: ++ version "4.1.0" ++ resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" ++ integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== ++ dependencies: ++ locate-path "^5.0.0" ++ path-exists "^4.0.0" ++ ++find-up@^5.0.0: ++ version "5.0.0" ++ resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" ++ integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== ++ dependencies: ++ locate-path "^6.0.0" ++ path-exists "^4.0.0" ++ ++flat-cache@^3.0.4: ++ version "3.1.0" ++ resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz" ++ integrity sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew== ++ dependencies: ++ flatted "^3.2.7" ++ keyv "^4.5.3" ++ rimraf "^3.0.2" ++ ++flatted@^3.2.7: ++ version "3.2.9" ++ resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz" ++ integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== ++ ++for-each@^0.3.3: ++ version "0.3.3" ++ resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" ++ integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== ++ dependencies: ++ is-callable "^1.1.3" ++ ++form-data@^4.0.0: ++ version "4.0.0" ++ resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" ++ integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== ++ dependencies: ++ asynckit "^0.4.0" ++ combined-stream "^1.0.8" ++ mime-types "^2.1.12" ++ ++fraction.js@^4.2.0: ++ version "4.3.6" ++ resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.6.tgz" ++ integrity sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg== ++ ++fs.realpath@^1.0.0: ++ version "1.0.0" ++ resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" ++ integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== ++ ++fsevents@^2.3.2, fsevents@~2.3.2: ++ version "2.3.3" ++ resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" ++ integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== ++ ++function-bind@^1.1.1: ++ version "1.1.1" ++ resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" ++ integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== ++ ++functions-have-names@^1.2.3: ++ version "1.2.3" ++ resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" ++ integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== ++ ++gensync@^1.0.0-beta.2: ++ version "1.0.0-beta.2" ++ resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" ++ integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== ++ ++get-caller-file@^2.0.5: ++ version "2.0.5" ++ resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" ++ integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== ++ ++get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1: ++ version "1.2.1" ++ resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz" ++ integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== ++ dependencies: ++ function-bind "^1.1.1" ++ has "^1.0.3" ++ has-proto "^1.0.1" ++ has-symbols "^1.0.3" ++ ++get-package-type@^0.1.0: ++ version "0.1.0" ++ resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" ++ integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== ++ ++get-stream@^6.0.0, get-stream@^6.0.1: ++ version "6.0.1" ++ resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" ++ integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== ++ ++glob-parent@^5.1.2, glob-parent@~5.1.2: ++ version "5.1.2" ++ resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" ++ integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== ++ dependencies: ++ is-glob "^4.0.1" ++ ++glob-parent@^6.0.2: ++ version "6.0.2" ++ resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" ++ integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== ++ dependencies: ++ is-glob "^4.0.3" ++ ++glob@^7.1.3, glob@^7.1.4, glob@7.1.6: ++ version "7.1.6" ++ resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz" ++ integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== ++ dependencies: ++ fs.realpath "^1.0.0" ++ inflight "^1.0.4" ++ inherits "2" ++ minimatch "^3.0.4" ++ once "^1.3.0" ++ path-is-absolute "^1.0.0" ++ ++globals@^11.1.0: ++ version "11.12.0" ++ resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" ++ integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== ++ ++globals@^13.19.0: ++ version "13.21.0" ++ resolved "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz" ++ integrity sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg== ++ dependencies: ++ type-fest "^0.20.2" ++ ++globby@^11.1.0: ++ version "11.1.0" ++ resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" ++ integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== ++ dependencies: ++ array-union "^2.1.0" ++ dir-glob "^3.0.1" ++ fast-glob "^3.2.9" ++ ignore "^5.2.0" ++ merge2 "^1.4.1" ++ slash "^3.0.0" ++ ++gopd@^1.0.1: ++ version "1.0.1" ++ resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" ++ integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== ++ dependencies: ++ get-intrinsic "^1.1.3" ++ ++graceful-fs@^4.2.9: ++ version "4.2.11" ++ resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" ++ integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== ++ ++graphemer@^1.4.0: ++ version "1.4.0" ++ resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" ++ integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== ++ ++has-bigints@^1.0.1: ++ version "1.0.2" ++ resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" ++ integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== ++ ++has-flag@^3.0.0: ++ version "3.0.0" ++ resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" ++ integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== ++ ++has-flag@^4.0.0: ++ version "4.0.0" ++ resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" ++ integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== ++ ++has-property-descriptors@^1.0.0: ++ version "1.0.0" ++ resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz" ++ integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== ++ dependencies: ++ get-intrinsic "^1.1.1" ++ ++has-proto@^1.0.1: ++ version "1.0.1" ++ resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz" ++ integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== ++ ++has-symbols@^1.0.2, has-symbols@^1.0.3: ++ version "1.0.3" ++ resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" ++ integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== ++ ++has-tostringtag@^1.0.0: ++ version "1.0.0" ++ resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" ++ integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== ++ dependencies: ++ has-symbols "^1.0.2" ++ ++has@^1.0.3: ++ version "1.0.3" ++ resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" ++ integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== ++ dependencies: ++ function-bind "^1.1.1" ++ ++html-encoding-sniffer@^3.0.0: ++ version "3.0.0" ++ resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz" ++ integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA== ++ dependencies: ++ whatwg-encoding "^2.0.0" ++ ++html-escaper@^2.0.0: ++ version "2.0.2" ++ resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" ++ integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== ++ ++http-proxy-agent@^5.0.0: ++ version "5.0.0" ++ resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz" ++ integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== ++ dependencies: ++ "@tootallnate/once" "2" ++ agent-base "6" ++ debug "4" ++ ++https-proxy-agent@^5.0.1: ++ version "5.0.1" ++ resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" ++ integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== ++ dependencies: ++ agent-base "6" ++ debug "4" ++ ++human-signals@^2.1.0: ++ version "2.1.0" ++ resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" ++ integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== ++ ++human-signals@^4.3.0: ++ version "4.3.1" ++ resolved "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz" ++ integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== ++ ++husky@^8.0.3: ++ version "8.0.3" ++ resolved "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz" ++ integrity sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg== ++ ++iconv-lite@0.6.3: ++ version "0.6.3" ++ resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" ++ integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== ++ dependencies: ++ safer-buffer ">= 2.1.2 < 3.0.0" ++ ++ignore@^5.2.0, ignore@^5.2.4: ++ version "5.2.4" ++ resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz" ++ integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== ++ ++import-fresh@^3.2.1: ++ version "3.3.0" ++ resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" ++ integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== ++ dependencies: ++ parent-module "^1.0.0" ++ resolve-from "^4.0.0" ++ ++import-local@^3.0.2: ++ version "3.1.0" ++ resolved "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz" ++ integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== ++ dependencies: ++ pkg-dir "^4.2.0" ++ resolve-cwd "^3.0.0" ++ ++imurmurhash@^0.1.4: ++ version "0.1.4" ++ resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" ++ integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== ++ ++indent-string@^4.0.0: ++ version "4.0.0" ++ resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" ++ integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== ++ ++inflight@^1.0.4: ++ version "1.0.6" ++ resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" ++ integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== ++ dependencies: ++ once "^1.3.0" ++ wrappy "1" ++ ++inherits@2: ++ version "2.0.4" ++ resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" ++ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== ++ ++internal-slot@^1.0.4: ++ version "1.0.5" ++ resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz" ++ integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== ++ dependencies: ++ get-intrinsic "^1.2.0" ++ has "^1.0.3" ++ side-channel "^1.0.4" ++ ++is-arguments@^1.1.1: ++ version "1.1.1" ++ resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" ++ integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== ++ dependencies: ++ call-bind "^1.0.2" ++ has-tostringtag "^1.0.0" ++ ++is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: ++ version "3.0.2" ++ resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz" ++ integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== ++ dependencies: ++ call-bind "^1.0.2" ++ get-intrinsic "^1.2.0" ++ is-typed-array "^1.1.10" ++ ++is-arrayish@^0.2.1: ++ version "0.2.1" ++ resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" ++ integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== ++ ++is-bigint@^1.0.1: ++ version "1.0.4" ++ resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" ++ integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== ++ dependencies: ++ has-bigints "^1.0.1" ++ ++is-binary-path@~2.1.0: ++ version "2.1.0" ++ resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" ++ integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== ++ dependencies: ++ binary-extensions "^2.0.0" ++ ++is-boolean-object@^1.1.0: ++ version "1.1.2" ++ resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" ++ integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== ++ dependencies: ++ call-bind "^1.0.2" ++ has-tostringtag "^1.0.0" ++ ++is-callable@^1.1.3: ++ version "1.2.7" ++ resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" ++ integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== ++ ++is-core-module@^2.13.0: ++ version "2.13.0" ++ resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz" ++ integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== ++ dependencies: ++ has "^1.0.3" ++ ++is-date-object@^1.0.5: ++ version "1.0.5" ++ resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" ++ integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== ++ dependencies: ++ has-tostringtag "^1.0.0" ++ ++is-extglob@^2.1.1: ++ version "2.1.1" ++ resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" ++ integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== ++ ++is-fullwidth-code-point@^3.0.0: ++ version "3.0.0" ++ resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" ++ integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== ++ ++is-fullwidth-code-point@^4.0.0: ++ version "4.0.0" ++ resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz" ++ integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== ++ ++is-generator-fn@^2.0.0: ++ version "2.1.0" ++ resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" ++ integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== ++ ++is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: ++ version "4.0.3" ++ resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" ++ integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== ++ dependencies: ++ is-extglob "^2.1.1" ++ ++is-map@^2.0.1, is-map@^2.0.2: ++ version "2.0.2" ++ resolved "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz" ++ integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== ++ ++is-number-object@^1.0.4: ++ version "1.0.7" ++ resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" ++ integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== ++ dependencies: ++ has-tostringtag "^1.0.0" ++ ++is-number@^7.0.0: ++ version "7.0.0" ++ resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" ++ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== ++ ++is-path-inside@^3.0.3: ++ version "3.0.3" ++ resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" ++ integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== ++ ++is-potential-custom-element-name@^1.0.1: ++ version "1.0.1" ++ resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz" ++ integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== ++ ++is-regex@^1.1.4: ++ version "1.1.4" ++ resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" ++ integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== ++ dependencies: ++ call-bind "^1.0.2" ++ has-tostringtag "^1.0.0" ++ ++is-set@^2.0.1, is-set@^2.0.2: ++ version "2.0.2" ++ resolved "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz" ++ integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== ++ ++is-shared-array-buffer@^1.0.2: ++ version "1.0.2" ++ resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz" ++ integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== ++ dependencies: ++ call-bind "^1.0.2" ++ ++is-stream@^2.0.0: ++ version "2.0.1" ++ resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" ++ integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== ++ ++is-stream@^3.0.0: ++ version "3.0.0" ++ resolved "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz" ++ integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== ++ ++is-string@^1.0.5, is-string@^1.0.7: ++ version "1.0.7" ++ resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" ++ integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== ++ dependencies: ++ has-tostringtag "^1.0.0" ++ ++is-symbol@^1.0.3: ++ version "1.0.4" ++ resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" ++ integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== ++ dependencies: ++ has-symbols "^1.0.2" ++ ++is-typed-array@^1.1.10: ++ version "1.1.12" ++ resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz" ++ integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== ++ dependencies: ++ which-typed-array "^1.1.11" ++ ++is-weakmap@^2.0.1: ++ version "2.0.1" ++ resolved "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz" ++ integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== ++ ++is-weakset@^2.0.1: ++ version "2.0.2" ++ resolved "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz" ++ integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== ++ dependencies: ++ call-bind "^1.0.2" ++ get-intrinsic "^1.1.1" ++ ++isarray@^2.0.5: ++ version "2.0.5" ++ resolved "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz" ++ integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== ++ ++isexe@^2.0.0: ++ version "2.0.0" ++ resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" ++ integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== ++ ++istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: ++ version "3.2.0" ++ resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz" ++ integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== ++ ++istanbul-lib-instrument@^5.0.4: ++ version "5.2.1" ++ resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz" ++ integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== ++ dependencies: ++ "@babel/core" "^7.12.3" ++ "@babel/parser" "^7.14.7" ++ "@istanbuljs/schema" "^0.1.2" ++ istanbul-lib-coverage "^3.2.0" ++ semver "^6.3.0" ++ ++istanbul-lib-instrument@^6.0.0: ++ version "6.0.0" ++ resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.0.tgz" ++ integrity sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw== ++ dependencies: ++ "@babel/core" "^7.12.3" ++ "@babel/parser" "^7.14.7" ++ "@istanbuljs/schema" "^0.1.2" ++ istanbul-lib-coverage "^3.2.0" ++ semver "^7.5.4" ++ ++istanbul-lib-report@^3.0.0: ++ version "3.0.1" ++ resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz" ++ integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== ++ dependencies: ++ istanbul-lib-coverage "^3.0.0" ++ make-dir "^4.0.0" ++ supports-color "^7.1.0" ++ ++istanbul-lib-source-maps@^4.0.0: ++ version "4.0.1" ++ resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz" ++ integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== ++ dependencies: ++ debug "^4.1.1" ++ istanbul-lib-coverage "^3.0.0" ++ source-map "^0.6.1" ++ ++istanbul-reports@^3.1.3: ++ version "3.1.6" ++ resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz" ++ integrity sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg== ++ dependencies: ++ html-escaper "^2.0.0" ++ istanbul-lib-report "^3.0.0" ++ ++jest-changed-files@^29.7.0: ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz" ++ integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== ++ dependencies: ++ execa "^5.0.0" ++ jest-util "^29.7.0" ++ p-limit "^3.1.0" ++ ++jest-circus@^29.7.0: ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz" ++ integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== ++ dependencies: ++ "@jest/environment" "^29.7.0" ++ "@jest/expect" "^29.7.0" ++ "@jest/test-result" "^29.7.0" ++ "@jest/types" "^29.6.3" ++ "@types/node" "*" ++ chalk "^4.0.0" ++ co "^4.6.0" ++ dedent "^1.0.0" ++ is-generator-fn "^2.0.0" ++ jest-each "^29.7.0" ++ jest-matcher-utils "^29.7.0" ++ jest-message-util "^29.7.0" ++ jest-runtime "^29.7.0" ++ jest-snapshot "^29.7.0" ++ jest-util "^29.7.0" ++ p-limit "^3.1.0" ++ pretty-format "^29.7.0" ++ pure-rand "^6.0.0" ++ slash "^3.0.0" ++ stack-utils "^2.0.3" ++ ++jest-cli@^29.7.0: ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz" ++ integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== ++ dependencies: ++ "@jest/core" "^29.7.0" ++ "@jest/test-result" "^29.7.0" ++ "@jest/types" "^29.6.3" ++ chalk "^4.0.0" ++ create-jest "^29.7.0" ++ exit "^0.1.2" ++ import-local "^3.0.2" ++ jest-config "^29.7.0" ++ jest-util "^29.7.0" ++ jest-validate "^29.7.0" ++ yargs "^17.3.1" ++ ++jest-config@^29.7.0: ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz" ++ integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== ++ dependencies: ++ "@babel/core" "^7.11.6" ++ "@jest/test-sequencer" "^29.7.0" ++ "@jest/types" "^29.6.3" ++ babel-jest "^29.7.0" ++ chalk "^4.0.0" ++ ci-info "^3.2.0" ++ deepmerge "^4.2.2" ++ glob "^7.1.3" ++ graceful-fs "^4.2.9" ++ jest-circus "^29.7.0" ++ jest-environment-node "^29.7.0" ++ jest-get-type "^29.6.3" ++ jest-regex-util "^29.6.3" ++ jest-resolve "^29.7.0" ++ jest-runner "^29.7.0" ++ jest-util "^29.7.0" ++ jest-validate "^29.7.0" ++ micromatch "^4.0.4" ++ parse-json "^5.2.0" ++ pretty-format "^29.7.0" ++ slash "^3.0.0" ++ strip-json-comments "^3.1.1" ++ ++jest-diff@^29.7.0: ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz" ++ integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== ++ dependencies: ++ chalk "^4.0.0" ++ diff-sequences "^29.6.3" ++ jest-get-type "^29.6.3" ++ pretty-format "^29.7.0" ++ ++jest-docblock@^29.7.0: ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz" ++ integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== ++ dependencies: ++ detect-newline "^3.0.0" ++ ++jest-each@^29.7.0: ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz" ++ integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== ++ dependencies: ++ "@jest/types" "^29.6.3" ++ chalk "^4.0.0" ++ jest-get-type "^29.6.3" ++ jest-util "^29.7.0" ++ pretty-format "^29.7.0" ++ ++jest-environment-jsdom@29.7.0: ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz" ++ integrity sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA== ++ dependencies: ++ "@jest/environment" "^29.7.0" ++ "@jest/fake-timers" "^29.7.0" ++ "@jest/types" "^29.6.3" ++ "@types/jsdom" "^20.0.0" ++ "@types/node" "*" ++ jest-mock "^29.7.0" ++ jest-util "^29.7.0" ++ jsdom "^20.0.0" ++ ++jest-environment-node@^29.7.0: ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz" ++ integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== ++ dependencies: ++ "@jest/environment" "^29.7.0" ++ "@jest/fake-timers" "^29.7.0" ++ "@jest/types" "^29.6.3" ++ "@types/node" "*" ++ jest-mock "^29.7.0" ++ jest-util "^29.7.0" ++ ++jest-get-type@^29.6.3: ++ version "29.6.3" ++ resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz" ++ integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== ++ ++jest-haste-map@^29.7.0: ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz" ++ integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== ++ dependencies: ++ "@jest/types" "^29.6.3" ++ "@types/graceful-fs" "^4.1.3" ++ "@types/node" "*" ++ anymatch "^3.0.3" ++ fb-watchman "^2.0.0" ++ graceful-fs "^4.2.9" ++ jest-regex-util "^29.6.3" ++ jest-util "^29.7.0" ++ jest-worker "^29.7.0" ++ micromatch "^4.0.4" ++ walker "^1.0.8" ++ optionalDependencies: ++ fsevents "^2.3.2" ++ ++jest-leak-detector@^29.7.0: ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz" ++ integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== ++ dependencies: ++ jest-get-type "^29.6.3" ++ pretty-format "^29.7.0" ++ ++jest-matcher-utils@^29.7.0: ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz" ++ integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== ++ dependencies: ++ chalk "^4.0.0" ++ jest-diff "^29.7.0" ++ jest-get-type "^29.6.3" ++ pretty-format "^29.7.0" ++ ++jest-message-util@^29.7.0: ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz" ++ integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== ++ dependencies: ++ "@babel/code-frame" "^7.12.13" ++ "@jest/types" "^29.6.3" ++ "@types/stack-utils" "^2.0.0" ++ chalk "^4.0.0" ++ graceful-fs "^4.2.9" ++ micromatch "^4.0.4" ++ pretty-format "^29.7.0" ++ slash "^3.0.0" ++ stack-utils "^2.0.3" ++ ++jest-mock@^29.7.0: ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz" ++ integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== ++ dependencies: ++ "@jest/types" "^29.6.3" ++ "@types/node" "*" ++ jest-util "^29.7.0" ++ ++jest-pnp-resolver@^1.2.2: ++ version "1.2.3" ++ resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz" ++ integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== ++ ++jest-regex-util@^29.6.3: ++ version "29.6.3" ++ resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz" ++ integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== ++ ++jest-resolve-dependencies@^29.7.0: ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz" ++ integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== ++ dependencies: ++ jest-regex-util "^29.6.3" ++ jest-snapshot "^29.7.0" ++ ++jest-resolve@*, jest-resolve@^29.7.0: ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz" ++ integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== ++ dependencies: ++ chalk "^4.0.0" ++ graceful-fs "^4.2.9" ++ jest-haste-map "^29.7.0" ++ jest-pnp-resolver "^1.2.2" ++ jest-util "^29.7.0" ++ jest-validate "^29.7.0" ++ resolve "^1.20.0" ++ resolve.exports "^2.0.0" ++ slash "^3.0.0" ++ ++jest-runner@^29.7.0: ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz" ++ integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== ++ dependencies: ++ "@jest/console" "^29.7.0" ++ "@jest/environment" "^29.7.0" ++ "@jest/test-result" "^29.7.0" ++ "@jest/transform" "^29.7.0" ++ "@jest/types" "^29.6.3" ++ "@types/node" "*" ++ chalk "^4.0.0" ++ emittery "^0.13.1" ++ graceful-fs "^4.2.9" ++ jest-docblock "^29.7.0" ++ jest-environment-node "^29.7.0" ++ jest-haste-map "^29.7.0" ++ jest-leak-detector "^29.7.0" ++ jest-message-util "^29.7.0" ++ jest-resolve "^29.7.0" ++ jest-runtime "^29.7.0" ++ jest-util "^29.7.0" ++ jest-watcher "^29.7.0" ++ jest-worker "^29.7.0" ++ p-limit "^3.1.0" ++ source-map-support "0.5.13" ++ ++jest-runtime@^29.7.0: ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz" ++ integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== ++ dependencies: ++ "@jest/environment" "^29.7.0" ++ "@jest/fake-timers" "^29.7.0" ++ "@jest/globals" "^29.7.0" ++ "@jest/source-map" "^29.6.3" ++ "@jest/test-result" "^29.7.0" ++ "@jest/transform" "^29.7.0" ++ "@jest/types" "^29.6.3" ++ "@types/node" "*" ++ chalk "^4.0.0" ++ cjs-module-lexer "^1.0.0" ++ collect-v8-coverage "^1.0.0" ++ glob "^7.1.3" ++ graceful-fs "^4.2.9" ++ jest-haste-map "^29.7.0" ++ jest-message-util "^29.7.0" ++ jest-mock "^29.7.0" ++ jest-regex-util "^29.6.3" ++ jest-resolve "^29.7.0" ++ jest-snapshot "^29.7.0" ++ jest-util "^29.7.0" ++ slash "^3.0.0" ++ strip-bom "^4.0.0" ++ ++jest-snapshot@^29.7.0: ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz" ++ integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== ++ dependencies: ++ "@babel/core" "^7.11.6" ++ "@babel/generator" "^7.7.2" ++ "@babel/plugin-syntax-jsx" "^7.7.2" ++ "@babel/plugin-syntax-typescript" "^7.7.2" ++ "@babel/types" "^7.3.3" ++ "@jest/expect-utils" "^29.7.0" ++ "@jest/transform" "^29.7.0" ++ "@jest/types" "^29.6.3" ++ babel-preset-current-node-syntax "^1.0.0" ++ chalk "^4.0.0" ++ expect "^29.7.0" ++ graceful-fs "^4.2.9" ++ jest-diff "^29.7.0" ++ jest-get-type "^29.6.3" ++ jest-matcher-utils "^29.7.0" ++ jest-message-util "^29.7.0" ++ jest-util "^29.7.0" ++ natural-compare "^1.4.0" ++ pretty-format "^29.7.0" ++ semver "^7.5.3" ++ ++jest-util@^29.0.0, jest-util@^29.7.0: ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz" ++ integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== ++ dependencies: ++ "@jest/types" "^29.6.3" ++ "@types/node" "*" ++ chalk "^4.0.0" ++ ci-info "^3.2.0" ++ graceful-fs "^4.2.9" ++ picomatch "^2.2.3" ++ ++jest-validate@^29.7.0: ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz" ++ integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== ++ dependencies: ++ "@jest/types" "^29.6.3" ++ camelcase "^6.2.0" ++ chalk "^4.0.0" ++ jest-get-type "^29.6.3" ++ leven "^3.1.0" ++ pretty-format "^29.7.0" ++ ++jest-watcher@^29.7.0: ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz" ++ integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== ++ dependencies: ++ "@jest/test-result" "^29.7.0" ++ "@jest/types" "^29.6.3" ++ "@types/node" "*" ++ ansi-escapes "^4.2.1" ++ chalk "^4.0.0" ++ emittery "^0.13.1" ++ jest-util "^29.7.0" ++ string-length "^4.0.1" ++ ++jest-worker@^29.7.0: ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz" ++ integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== ++ dependencies: ++ "@types/node" "*" ++ jest-util "^29.7.0" ++ merge-stream "^2.0.0" ++ supports-color "^8.0.0" ++ ++jest@^29.0.0, "jest@>= 28", jest@29.7.0: ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz" ++ integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== ++ dependencies: ++ "@jest/core" "^29.7.0" ++ "@jest/types" "^29.6.3" ++ import-local "^3.0.2" ++ jest-cli "^29.7.0" ++ ++jiti@^1.18.2: ++ version "1.20.0" ++ resolved "https://registry.npmjs.org/jiti/-/jiti-1.20.0.tgz" ++ integrity sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA== ++ ++"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: ++ version "4.0.0" ++ resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" ++ integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== ++ ++js-yaml@^3.13.1: ++ version "3.14.1" ++ resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" ++ integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== ++ dependencies: ++ argparse "^1.0.7" ++ esprima "^4.0.0" ++ ++js-yaml@^4.1.0: ++ version "4.1.0" ++ resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" ++ integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== ++ dependencies: ++ argparse "^2.0.1" ++ ++jsdom@^20.0.0: ++ version "20.0.3" ++ resolved "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz" ++ integrity sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ== ++ dependencies: ++ abab "^2.0.6" ++ acorn "^8.8.1" ++ acorn-globals "^7.0.0" ++ cssom "^0.5.0" ++ cssstyle "^2.3.0" ++ data-urls "^3.0.2" ++ decimal.js "^10.4.2" ++ domexception "^4.0.0" ++ escodegen "^2.0.0" ++ form-data "^4.0.0" ++ html-encoding-sniffer "^3.0.0" ++ http-proxy-agent "^5.0.0" ++ https-proxy-agent "^5.0.1" ++ is-potential-custom-element-name "^1.0.1" ++ nwsapi "^2.2.2" ++ parse5 "^7.1.1" ++ saxes "^6.0.0" ++ symbol-tree "^3.2.4" ++ tough-cookie "^4.1.2" ++ w3c-xmlserializer "^4.0.0" ++ webidl-conversions "^7.0.0" ++ whatwg-encoding "^2.0.0" ++ whatwg-mimetype "^3.0.0" ++ whatwg-url "^11.0.0" ++ ws "^8.11.0" ++ xml-name-validator "^4.0.0" ++ ++jsdom@^22.1.0: ++ version "22.1.0" ++ resolved "https://registry.npmjs.org/jsdom/-/jsdom-22.1.0.tgz" ++ integrity sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw== ++ dependencies: ++ abab "^2.0.6" ++ cssstyle "^3.0.0" ++ data-urls "^4.0.0" ++ decimal.js "^10.4.3" ++ domexception "^4.0.0" ++ form-data "^4.0.0" ++ html-encoding-sniffer "^3.0.0" ++ http-proxy-agent "^5.0.0" ++ https-proxy-agent "^5.0.1" ++ is-potential-custom-element-name "^1.0.1" ++ nwsapi "^2.2.4" ++ parse5 "^7.1.2" ++ rrweb-cssom "^0.6.0" ++ saxes "^6.0.0" ++ symbol-tree "^3.2.4" ++ tough-cookie "^4.1.2" ++ w3c-xmlserializer "^4.0.0" ++ webidl-conversions "^7.0.0" ++ whatwg-encoding "^2.0.0" ++ whatwg-mimetype "^3.0.0" ++ whatwg-url "^12.0.1" ++ ws "^8.13.0" ++ xml-name-validator "^4.0.0" ++ ++jsesc@^2.5.1: ++ version "2.5.2" ++ resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" ++ integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== ++ ++json-buffer@3.0.1: ++ version "3.0.1" ++ resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" ++ integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== ++ ++json-parse-even-better-errors@^2.3.0: ++ version "2.3.1" ++ resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" ++ integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== ++ ++json-schema-traverse@^0.4.1: ++ version "0.4.1" ++ resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" ++ integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== ++ ++json-stable-stringify-without-jsonify@^1.0.1: ++ version "1.0.1" ++ resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" ++ integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== ++ ++json5@^2.2.3: ++ version "2.2.3" ++ resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" ++ integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== ++ ++keyv@^4.5.3: ++ version "4.5.3" ++ resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz" ++ integrity sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug== ++ dependencies: ++ json-buffer "3.0.1" ++ ++kleur@^3.0.3: ++ version "3.0.3" ++ resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" ++ integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== ++ ++leven@^3.1.0: ++ version "3.1.0" ++ resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" ++ integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== ++ ++levn@^0.4.1: ++ version "0.4.1" ++ resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" ++ integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== ++ dependencies: ++ prelude-ls "^1.2.1" ++ type-check "~0.4.0" ++ ++lilconfig@^2.0.5, lilconfig@^2.1.0, lilconfig@2.1.0: ++ version "2.1.0" ++ resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz" ++ integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== ++ ++lines-and-columns@^1.1.6: ++ version "1.2.4" ++ resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" ++ integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== ++ ++lint-staged@^14.0.1: ++ version "14.0.1" ++ resolved "https://registry.npmjs.org/lint-staged/-/lint-staged-14.0.1.tgz" ++ integrity sha512-Mw0cL6HXnHN1ag0mN/Dg4g6sr8uf8sn98w2Oc1ECtFto9tvRF7nkXGJRbx8gPlHyoR0pLyBr2lQHbWwmUHe1Sw== ++ dependencies: ++ chalk "5.3.0" ++ commander "11.0.0" ++ debug "4.3.4" ++ execa "7.2.0" ++ lilconfig "2.1.0" ++ listr2 "6.6.1" ++ micromatch "4.0.5" ++ pidtree "0.6.0" ++ string-argv "0.3.2" ++ yaml "2.3.1" ++ ++listr2@6.6.1: ++ version "6.6.1" ++ resolved "https://registry.npmjs.org/listr2/-/listr2-6.6.1.tgz" ++ integrity sha512-+rAXGHh0fkEWdXBmX+L6mmfmXmXvDGEKzkjxO+8mP3+nI/r/CWznVBvsibXdxda9Zz0OW2e2ikphN3OwCT/jSg== ++ dependencies: ++ cli-truncate "^3.1.0" ++ colorette "^2.0.20" ++ eventemitter3 "^5.0.1" ++ log-update "^5.0.1" ++ rfdc "^1.3.0" ++ wrap-ansi "^8.1.0" ++ ++locate-path@^5.0.0: ++ version "5.0.0" ++ resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" ++ integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== ++ dependencies: ++ p-locate "^4.1.0" ++ ++locate-path@^6.0.0: ++ version "6.0.0" ++ resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" ++ integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== ++ dependencies: ++ p-locate "^5.0.0" ++ ++lodash.memoize@4.x: ++ version "4.1.2" ++ resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" ++ integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== ++ ++lodash.merge@^4.6.2: ++ version "4.6.2" ++ resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" ++ integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== ++ ++lodash@^4.17.15: ++ version "4.17.21" ++ resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" ++ integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== ++ ++log-update@^5.0.1: ++ version "5.0.1" ++ resolved "https://registry.npmjs.org/log-update/-/log-update-5.0.1.tgz" ++ integrity sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw== ++ dependencies: ++ ansi-escapes "^5.0.0" ++ cli-cursor "^4.0.0" ++ slice-ansi "^5.0.0" ++ strip-ansi "^7.0.1" ++ wrap-ansi "^8.0.1" ++ ++loose-envify@^1.1.0: ++ version "1.4.0" ++ resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" ++ integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== ++ dependencies: ++ js-tokens "^3.0.0 || ^4.0.0" ++ ++lru-cache@^5.1.1: ++ version "5.1.1" ++ resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" ++ integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== ++ dependencies: ++ yallist "^3.0.2" ++ ++lru-cache@^6.0.0: ++ version "6.0.0" ++ resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" ++ integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== ++ dependencies: ++ yallist "^4.0.0" ++ ++lz-string@^1.5.0: ++ version "1.5.0" ++ resolved "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz" ++ integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== ++ ++make-dir@^4.0.0: ++ version "4.0.0" ++ resolved "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz" ++ integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== ++ dependencies: ++ semver "^7.5.3" ++ ++make-error@1.x: ++ version "1.3.6" ++ resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" ++ integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== ++ ++makeerror@1.0.12: ++ version "1.0.12" ++ resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" ++ integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== ++ dependencies: ++ tmpl "1.0.5" ++ ++merge-stream@^2.0.0: ++ version "2.0.0" ++ resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" ++ integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== ++ ++merge2@^1.3.0, merge2@^1.4.1: ++ version "1.4.1" ++ resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" ++ integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== ++ ++micromatch@^4.0.4, micromatch@^4.0.5, micromatch@4.0.5: ++ version "4.0.5" ++ resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" ++ integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== ++ dependencies: ++ braces "^3.0.2" ++ picomatch "^2.3.1" ++ ++mime-db@1.52.0: ++ version "1.52.0" ++ resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" ++ integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== ++ ++mime-types@^2.1.12: ++ version "2.1.35" ++ resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" ++ integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== ++ dependencies: ++ mime-db "1.52.0" ++ ++mimic-fn@^2.1.0: ++ version "2.1.0" ++ resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" ++ integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== ++ ++mimic-fn@^4.0.0: ++ version "4.0.0" ++ resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz" ++ integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== ++ ++min-indent@^1.0.0: ++ version "1.0.1" ++ resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz" ++ integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== ++ ++minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.2: ++ version "3.1.2" ++ resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" ++ integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== ++ dependencies: ++ brace-expansion "^1.1.7" ++ ++ms@2.1.2: ++ version "2.1.2" ++ resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" ++ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== ++ ++mz@^2.7.0: ++ version "2.7.0" ++ resolved "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz" ++ integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== ++ dependencies: ++ any-promise "^1.0.0" ++ object-assign "^4.0.1" ++ thenify-all "^1.0.0" ++ ++nanoid@^3.3.6: ++ version "3.3.6" ++ resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz" ++ integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== ++ ++natural-compare@^1.4.0: ++ version "1.4.0" ++ resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" ++ integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== ++ ++node-int64@^0.4.0: ++ version "0.4.0" ++ resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" ++ integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== ++ ++node-releases@^2.0.13: ++ version "2.0.13" ++ resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz" ++ integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== ++ ++normalize-path@^3.0.0, normalize-path@~3.0.0: ++ version "3.0.0" ++ resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" ++ integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== ++ ++normalize-range@^0.1.2: ++ version "0.1.2" ++ resolved "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz" ++ integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== ++ ++npm-run-path@^4.0.1: ++ version "4.0.1" ++ resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" ++ integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== ++ dependencies: ++ path-key "^3.0.0" ++ ++npm-run-path@^5.1.0: ++ version "5.1.0" ++ resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz" ++ integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q== ++ dependencies: ++ path-key "^4.0.0" ++ ++nwsapi@^2.2.2, nwsapi@^2.2.4: ++ version "2.2.7" ++ resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz" ++ integrity sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ== ++ ++object-assign@^4.0.1: ++ version "4.1.1" ++ resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" ++ integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== ++ ++object-hash@^3.0.0: ++ version "3.0.0" ++ resolved "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz" ++ integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== ++ ++object-inspect@^1.9.0: ++ version "1.12.3" ++ resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz" ++ integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== ++ ++object-is@^1.1.5: ++ version "1.1.5" ++ resolved "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz" ++ integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== ++ dependencies: ++ call-bind "^1.0.2" ++ define-properties "^1.1.3" ++ ++object-keys@^1.1.1: ++ version "1.1.1" ++ resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" ++ integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== ++ ++object.assign@^4.1.4: ++ version "4.1.4" ++ resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz" ++ integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== ++ dependencies: ++ call-bind "^1.0.2" ++ define-properties "^1.1.4" ++ has-symbols "^1.0.3" ++ object-keys "^1.1.1" ++ ++once@^1.3.0: ++ version "1.4.0" ++ resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" ++ integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== ++ dependencies: ++ wrappy "1" ++ ++onetime@^5.1.0: ++ version "5.1.2" ++ resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" ++ integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== ++ dependencies: ++ mimic-fn "^2.1.0" ++ ++onetime@^5.1.2: ++ version "5.1.2" ++ resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" ++ integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== ++ dependencies: ++ mimic-fn "^2.1.0" ++ ++onetime@^6.0.0: ++ version "6.0.0" ++ resolved "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz" ++ integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== ++ dependencies: ++ mimic-fn "^4.0.0" ++ ++optionator@^0.9.3: ++ version "0.9.3" ++ resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz" ++ integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== ++ dependencies: ++ "@aashutoshrathi/word-wrap" "^1.2.3" ++ deep-is "^0.1.3" ++ fast-levenshtein "^2.0.6" ++ levn "^0.4.1" ++ prelude-ls "^1.2.1" ++ type-check "^0.4.0" ++ ++p-limit@^2.2.0: ++ version "2.3.0" ++ resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" ++ integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== ++ dependencies: ++ p-try "^2.0.0" ++ ++p-limit@^3.0.2, p-limit@^3.1.0: ++ version "3.1.0" ++ resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" ++ integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== ++ dependencies: ++ yocto-queue "^0.1.0" ++ ++p-locate@^4.1.0: ++ version "4.1.0" ++ resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" ++ integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== ++ dependencies: ++ p-limit "^2.2.0" ++ ++p-locate@^5.0.0: ++ version "5.0.0" ++ resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" ++ integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== ++ dependencies: ++ p-limit "^3.0.2" ++ ++p-try@^2.0.0: ++ version "2.2.0" ++ resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" ++ integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== ++ ++parent-module@^1.0.0: ++ version "1.0.1" ++ resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" ++ integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== ++ dependencies: ++ callsites "^3.0.0" ++ ++parse-json@^5.2.0: ++ version "5.2.0" ++ resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" ++ integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== ++ dependencies: ++ "@babel/code-frame" "^7.0.0" ++ error-ex "^1.3.1" ++ json-parse-even-better-errors "^2.3.0" ++ lines-and-columns "^1.1.6" ++ ++parse5@^7.0.0, parse5@^7.1.1, parse5@^7.1.2: ++ version "7.1.2" ++ resolved "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz" ++ integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== ++ dependencies: ++ entities "^4.4.0" ++ ++path-exists@^4.0.0: ++ version "4.0.0" ++ resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" ++ integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== ++ ++path-is-absolute@^1.0.0: ++ version "1.0.1" ++ resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" ++ integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== ++ ++path-key@^3.0.0, path-key@^3.1.0: ++ version "3.1.1" ++ resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" ++ integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== ++ ++path-key@^4.0.0: ++ version "4.0.0" ++ resolved "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz" ++ integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== ++ ++path-parse@^1.0.7: ++ version "1.0.7" ++ resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" ++ integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== ++ ++path-type@^4.0.0: ++ version "4.0.0" ++ resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" ++ integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== ++ ++picocolors@^1.0.0: ++ version "1.0.0" ++ resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" ++ integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== ++ ++picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: ++ version "2.3.1" ++ resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" ++ integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== ++ ++pidtree@0.6.0: ++ version "0.6.0" ++ resolved "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz" ++ integrity sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g== ++ ++pify@^2.3.0: ++ version "2.3.0" ++ resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" ++ integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== ++ ++pirates@^4.0.1, pirates@^4.0.4: ++ version "4.0.6" ++ resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz" ++ integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== ++ ++pkg-dir@^4.2.0: ++ version "4.2.0" ++ resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" ++ integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== ++ dependencies: ++ find-up "^4.0.0" ++ ++postcss-import@^15.1.0: ++ version "15.1.0" ++ resolved "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz" ++ integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew== ++ dependencies: ++ postcss-value-parser "^4.0.0" ++ read-cache "^1.0.0" ++ resolve "^1.1.7" ++ ++postcss-js@^4.0.1: ++ version "4.0.1" ++ resolved "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz" ++ integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== ++ dependencies: ++ camelcase-css "^2.0.1" ++ ++postcss-load-config@^4.0.1: ++ version "4.0.1" ++ resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz" ++ integrity sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA== ++ dependencies: ++ lilconfig "^2.0.5" ++ yaml "^2.1.1" ++ ++postcss-nested@^6.0.1: ++ version "6.0.1" ++ resolved "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz" ++ integrity sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ== ++ dependencies: ++ postcss-selector-parser "^6.0.11" ++ ++postcss-selector-parser@^6.0.11: ++ version "6.0.13" ++ resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz" ++ integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ== ++ dependencies: ++ cssesc "^3.0.0" ++ util-deprecate "^1.0.2" ++ ++postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: ++ version "4.2.0" ++ resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" ++ integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== ++ ++postcss@^8.0.0, postcss@^8.1.0, postcss@^8.2.14, postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.27, postcss@>=8.0.9, postcss@8.4.29: ++ version "8.4.29" ++ resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.29.tgz" ++ integrity sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw== ++ dependencies: ++ nanoid "^3.3.6" ++ picocolors "^1.0.0" ++ source-map-js "^1.0.2" ++ ++prelude-ls@^1.2.1: ++ version "1.2.1" ++ resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" ++ integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== ++ ++prettier@2.8.8: ++ version "2.8.8" ++ resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz" ++ integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== ++ ++pretty-format@^27.0.2: ++ version "27.5.1" ++ resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz" ++ integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== ++ dependencies: ++ ansi-regex "^5.0.1" ++ ansi-styles "^5.0.0" ++ react-is "^17.0.1" ++ ++pretty-format@^29.7.0: ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz" ++ integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== ++ dependencies: ++ "@jest/schemas" "^29.6.3" ++ ansi-styles "^5.0.0" ++ react-is "^18.0.0" ++ ++prompts@^2.0.1: ++ version "2.4.2" ++ resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" ++ integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== ++ dependencies: ++ kleur "^3.0.3" ++ sisteransi "^1.0.5" ++ ++psl@^1.1.33: ++ version "1.9.0" ++ resolved "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz" ++ integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== ++ ++punycode@^2.1.0, punycode@^2.1.1, punycode@^2.3.0: ++ version "2.3.0" ++ resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz" ++ integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== ++ ++pure-rand@^6.0.0: ++ version "6.0.3" ++ resolved "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.3.tgz" ++ integrity sha512-KddyFewCsO0j3+np81IQ+SweXLDnDQTs5s67BOnrYmYe/yNmUhttQyGsYzy8yUnoljGAQ9sl38YB4vH8ur7Y+w== ++ ++querystringify@^2.1.1: ++ version "2.2.0" ++ resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" ++ integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== ++ ++queue-microtask@^1.2.2: ++ version "1.2.3" ++ resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" ++ integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== ++ ++react-dom@^18.0.0, react-dom@>=16.8, react-dom@18.2.0: ++ version "18.2.0" ++ resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz" ++ integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== ++ dependencies: ++ loose-envify "^1.1.0" ++ scheduler "^0.23.0" ++ ++react-is@^17.0.1: ++ version "17.0.2" ++ resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" ++ integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== ++ ++react-is@^18.0.0: ++ version "18.2.0" ++ resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" ++ integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== ++ ++react-refresh@^0.14.0: ++ version "0.14.0" ++ resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz" ++ integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== ++ ++react-router-dom@6.16.0: ++ version "6.16.0" ++ resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.16.0.tgz" ++ integrity sha512-aTfBLv3mk/gaKLxgRDUPbPw+s4Y/O+ma3rEN1u8EgEpLpPe6gNjIsWt9rxushMHHMb7mSwxRGdGlGdvmFsyPIg== ++ dependencies: ++ "@remix-run/router" "1.9.0" ++ react-router "6.16.0" ++ ++react-router@6.16.0: ++ version "6.16.0" ++ resolved "https://registry.npmjs.org/react-router/-/react-router-6.16.0.tgz" ++ integrity sha512-VT4Mmc4jj5YyjpOi5jOf0I+TYzGpvzERy4ckNSvSh2RArv8LLoCxlsZ2D+tc7zgjxcY34oTz2hZaeX5RVprKqA== ++ dependencies: ++ "@remix-run/router" "1.9.0" ++ ++react@^18.0.0, react@^18.2.0, react@>=16.8, react@18.2.0: ++ version "18.2.0" ++ resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz" ++ integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== ++ dependencies: ++ loose-envify "^1.1.0" ++ ++read-cache@^1.0.0: ++ version "1.0.0" ++ resolved "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz" ++ integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== ++ dependencies: ++ pify "^2.3.0" ++ ++readdirp@~3.6.0: ++ version "3.6.0" ++ resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" ++ integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== ++ dependencies: ++ picomatch "^2.2.1" ++ ++redent@^3.0.0: ++ version "3.0.0" ++ resolved "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz" ++ integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== ++ dependencies: ++ indent-string "^4.0.0" ++ strip-indent "^3.0.0" ++ ++regenerator-runtime@^0.14.0: ++ version "0.14.0" ++ resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz" ++ integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== ++ ++regexp.prototype.flags@^1.5.0: ++ version "1.5.1" ++ resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz" ++ integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== ++ dependencies: ++ call-bind "^1.0.2" ++ define-properties "^1.2.0" ++ set-function-name "^2.0.0" ++ ++require-directory@^2.1.1: ++ version "2.1.1" ++ resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" ++ integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== ++ ++requires-port@^1.0.0: ++ version "1.0.0" ++ resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" ++ integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== ++ ++resolve-cwd@^3.0.0: ++ version "3.0.0" ++ resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" ++ integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== ++ dependencies: ++ resolve-from "^5.0.0" ++ ++resolve-from@^4.0.0: ++ version "4.0.0" ++ resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" ++ integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== ++ ++resolve-from@^5.0.0: ++ version "5.0.0" ++ resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" ++ integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== ++ ++resolve.exports@^2.0.0: ++ version "2.0.2" ++ resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz" ++ integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== ++ ++resolve@^1.1.7, resolve@^1.20.0, resolve@^1.22.2: ++ version "1.22.6" ++ resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz" ++ integrity sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw== ++ dependencies: ++ is-core-module "^2.13.0" ++ path-parse "^1.0.7" ++ supports-preserve-symlinks-flag "^1.0.0" ++ ++restore-cursor@^4.0.0: ++ version "4.0.0" ++ resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz" ++ integrity sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg== ++ dependencies: ++ onetime "^5.1.0" ++ signal-exit "^3.0.2" ++ ++reusify@^1.0.4: ++ version "1.0.4" ++ resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" ++ integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== ++ ++rfdc@^1.3.0: ++ version "1.3.0" ++ resolved "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz" ++ integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== ++ ++rimraf@^3.0.2: ++ version "3.0.2" ++ resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" ++ integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== ++ dependencies: ++ glob "^7.1.3" ++ ++rollup@^3.27.1: ++ version "3.29.2" ++ resolved "https://registry.npmjs.org/rollup/-/rollup-3.29.2.tgz" ++ integrity sha512-CJouHoZ27v6siztc21eEQGo0kIcE5D1gVPA571ez0mMYb25LGYGKnVNXpEj5MGlepmDWGXNjDB5q7uNiPHC11A== ++ optionalDependencies: ++ fsevents "~2.3.2" ++ ++rrweb-cssom@^0.6.0: ++ version "0.6.0" ++ resolved "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz" ++ integrity sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw== ++ ++run-parallel@^1.1.9: ++ version "1.2.0" ++ resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" ++ integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== ++ dependencies: ++ queue-microtask "^1.2.2" ++ ++"safer-buffer@>= 2.1.2 < 3.0.0": ++ version "2.1.2" ++ resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" ++ integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== ++ ++saxes@^6.0.0: ++ version "6.0.0" ++ resolved "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz" ++ integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA== ++ dependencies: ++ xmlchars "^2.2.0" ++ ++scheduler@^0.23.0: ++ version "0.23.0" ++ resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz" ++ integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== ++ dependencies: ++ loose-envify "^1.1.0" ++ ++semver@^6.3.0: ++ version "6.3.1" ++ resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" ++ integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== ++ ++semver@^6.3.1: ++ version "6.3.1" ++ resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" ++ integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== ++ ++semver@^7.5.3, semver@^7.5.4: ++ version "7.5.4" ++ resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" ++ integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== ++ dependencies: ++ lru-cache "^6.0.0" ++ ++set-function-name@^2.0.0: ++ version "2.0.1" ++ resolved "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz" ++ integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== ++ dependencies: ++ define-data-property "^1.0.1" ++ functions-have-names "^1.2.3" ++ has-property-descriptors "^1.0.0" ++ ++shebang-command@^2.0.0: ++ version "2.0.0" ++ resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" ++ integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== ++ dependencies: ++ shebang-regex "^3.0.0" ++ ++shebang-regex@^3.0.0: ++ version "3.0.0" ++ resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" ++ integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== ++ ++side-channel@^1.0.4: ++ version "1.0.4" ++ resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" ++ integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== ++ dependencies: ++ call-bind "^1.0.0" ++ get-intrinsic "^1.0.2" ++ object-inspect "^1.9.0" ++ ++signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: ++ version "3.0.7" ++ resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" ++ integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== ++ ++sisteransi@^1.0.5: ++ version "1.0.5" ++ resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" ++ integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== ++ ++slash@^3.0.0: ++ version "3.0.0" ++ resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" ++ integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== ++ ++slice-ansi@^5.0.0: ++ version "5.0.0" ++ resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz" ++ integrity sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ== ++ dependencies: ++ ansi-styles "^6.0.0" ++ is-fullwidth-code-point "^4.0.0" ++ ++source-map-js@^1.0.2: ++ version "1.0.2" ++ resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" ++ integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== ++ ++source-map-support@0.5.13: ++ version "0.5.13" ++ resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz" ++ integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== ++ dependencies: ++ buffer-from "^1.0.0" ++ source-map "^0.6.0" ++ ++source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: ++ version "0.6.1" ++ resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" ++ integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== ++ ++sprintf-js@~1.0.2: ++ version "1.0.3" ++ resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" ++ integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== ++ ++stack-utils@^2.0.3: ++ version "2.0.6" ++ resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz" ++ integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== ++ dependencies: ++ escape-string-regexp "^2.0.0" ++ ++stop-iteration-iterator@^1.0.0: ++ version "1.0.0" ++ resolved "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz" ++ integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ== ++ dependencies: ++ internal-slot "^1.0.4" ++ ++string-argv@0.3.2: ++ version "0.3.2" ++ resolved "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz" ++ integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== ++ ++string-length@^4.0.1: ++ version "4.0.2" ++ resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" ++ integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== ++ dependencies: ++ char-regex "^1.0.2" ++ strip-ansi "^6.0.0" ++ ++string-width@^4.1.0, string-width@^4.2.0: ++ version "4.2.3" ++ resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" ++ integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== ++ dependencies: ++ emoji-regex "^8.0.0" ++ is-fullwidth-code-point "^3.0.0" ++ strip-ansi "^6.0.1" ++ ++string-width@^4.2.3: ++ version "4.2.3" ++ resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" ++ integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== ++ dependencies: ++ emoji-regex "^8.0.0" ++ is-fullwidth-code-point "^3.0.0" ++ strip-ansi "^6.0.1" ++ ++string-width@^5.0.0, string-width@^5.0.1: ++ version "5.1.2" ++ resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" ++ integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== ++ dependencies: ++ eastasianwidth "^0.2.0" ++ emoji-regex "^9.2.2" ++ strip-ansi "^7.0.1" ++ ++strip-ansi@^6.0.0, strip-ansi@^6.0.1: ++ version "6.0.1" ++ resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" ++ integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== ++ dependencies: ++ ansi-regex "^5.0.1" ++ ++strip-ansi@^7.0.1: ++ version "7.1.0" ++ resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" ++ integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== ++ dependencies: ++ ansi-regex "^6.0.1" ++ ++strip-bom@^4.0.0: ++ version "4.0.0" ++ resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" ++ integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== ++ ++strip-final-newline@^2.0.0: ++ version "2.0.0" ++ resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" ++ integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== ++ ++strip-final-newline@^3.0.0: ++ version "3.0.0" ++ resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz" ++ integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== ++ ++strip-indent@^3.0.0: ++ version "3.0.0" ++ resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz" ++ integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== ++ dependencies: ++ min-indent "^1.0.0" ++ ++strip-json-comments@^3.1.1: ++ version "3.1.1" ++ resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" ++ integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== ++ ++sucrase@^3.32.0: ++ version "3.34.0" ++ resolved "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz" ++ integrity sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw== ++ dependencies: ++ "@jridgewell/gen-mapping" "^0.3.2" ++ commander "^4.0.0" ++ glob "7.1.6" ++ lines-and-columns "^1.1.6" ++ mz "^2.7.0" ++ pirates "^4.0.1" ++ ts-interface-checker "^0.1.9" ++ ++supports-color@^5.3.0: ++ version "5.5.0" ++ resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" ++ integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== ++ dependencies: ++ has-flag "^3.0.0" ++ ++supports-color@^7.1.0: ++ version "7.2.0" ++ resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" ++ integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== ++ dependencies: ++ has-flag "^4.0.0" ++ ++supports-color@^8.0.0: ++ version "8.1.1" ++ resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" ++ integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== ++ dependencies: ++ has-flag "^4.0.0" ++ ++supports-preserve-symlinks-flag@^1.0.0: ++ version "1.0.0" ++ resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" ++ integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== ++ ++symbol-tree@^3.2.4: ++ version "3.2.4" ++ resolved "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz" ++ integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== ++ ++tailwindcss@3.3.3: ++ version "3.3.3" ++ resolved "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.3.tgz" ++ integrity sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w== ++ dependencies: ++ "@alloc/quick-lru" "^5.2.0" ++ arg "^5.0.2" ++ chokidar "^3.5.3" ++ didyoumean "^1.2.2" ++ dlv "^1.1.3" ++ fast-glob "^3.2.12" ++ glob-parent "^6.0.2" ++ is-glob "^4.0.3" ++ jiti "^1.18.2" ++ lilconfig "^2.1.0" ++ micromatch "^4.0.5" ++ normalize-path "^3.0.0" ++ object-hash "^3.0.0" ++ picocolors "^1.0.0" ++ postcss "^8.4.23" ++ postcss-import "^15.1.0" ++ postcss-js "^4.0.1" ++ postcss-load-config "^4.0.1" ++ postcss-nested "^6.0.1" ++ postcss-selector-parser "^6.0.11" ++ resolve "^1.22.2" ++ sucrase "^3.32.0" ++ ++test-exclude@^6.0.0: ++ version "6.0.0" ++ resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz" ++ integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== ++ dependencies: ++ "@istanbuljs/schema" "^0.1.2" ++ glob "^7.1.4" ++ minimatch "^3.0.4" ++ ++text-table@^0.2.0: ++ version "0.2.0" ++ resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" ++ integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== ++ ++thenify-all@^1.0.0: ++ version "1.6.0" ++ resolved "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz" ++ integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== ++ dependencies: ++ thenify ">= 3.1.0 < 4" ++ ++"thenify@>= 3.1.0 < 4": ++ version "3.3.1" ++ resolved "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz" ++ integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== ++ dependencies: ++ any-promise "^1.0.0" ++ ++tmpl@1.0.5: ++ version "1.0.5" ++ resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" ++ integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== ++ ++to-fast-properties@^2.0.0: ++ version "2.0.0" ++ resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" ++ integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== ++ ++to-regex-range@^5.0.1: ++ version "5.0.1" ++ resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" ++ integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== ++ dependencies: ++ is-number "^7.0.0" ++ ++tough-cookie@^4.1.2: ++ version "4.1.3" ++ resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz" ++ integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== ++ dependencies: ++ psl "^1.1.33" ++ punycode "^2.1.1" ++ universalify "^0.2.0" ++ url-parse "^1.5.3" ++ ++tr46@^3.0.0: ++ version "3.0.0" ++ resolved "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz" ++ integrity sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA== ++ dependencies: ++ punycode "^2.1.1" ++ ++tr46@^4.1.1: ++ version "4.1.1" ++ resolved "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz" ++ integrity sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw== ++ dependencies: ++ punycode "^2.3.0" ++ ++ts-api-utils@^1.0.1: ++ version "1.0.3" ++ resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz" ++ integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== ++ ++ts-interface-checker@^0.1.9: ++ version "0.1.13" ++ resolved "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz" ++ integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== ++ ++ts-jest@29.1.1: ++ version "29.1.1" ++ resolved "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz" ++ integrity sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA== ++ dependencies: ++ bs-logger "0.x" ++ fast-json-stable-stringify "2.x" ++ jest-util "^29.0.0" ++ json5 "^2.2.3" ++ lodash.memoize "4.x" ++ make-error "1.x" ++ semver "^7.5.3" ++ yargs-parser "^21.0.1" ++ ++type-check@^0.4.0, type-check@~0.4.0: ++ version "0.4.0" ++ resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" ++ integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== ++ dependencies: ++ prelude-ls "^1.2.1" ++ ++type-detect@4.0.8: ++ version "4.0.8" ++ resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" ++ integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== ++ ++type-fest@^0.20.2: ++ 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== ++ ++type-fest@^0.21.3: ++ version "0.21.3" ++ resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" ++ integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== ++ ++type-fest@^1.0.2: ++ version "1.4.0" ++ resolved "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz" ++ integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA== ++ ++typescript@^5.2.2, typescript@>=4.2.0, "typescript@>=4.3 <6": ++ version "5.2.2" ++ resolved "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz" ++ integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== ++ ++universalify@^0.2.0: ++ version "0.2.0" ++ resolved "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz" ++ integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== ++ ++update-browserslist-db@^1.0.11: ++ version "1.0.11" ++ resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz" ++ integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== ++ dependencies: ++ escalade "^3.1.1" ++ picocolors "^1.0.0" ++ ++uri-js@^4.2.2: ++ version "4.4.1" ++ resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" ++ integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== ++ dependencies: ++ punycode "^2.1.0" ++ ++url-parse@^1.5.3: ++ version "1.5.10" ++ resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz" ++ integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== ++ dependencies: ++ querystringify "^2.1.1" ++ requires-port "^1.0.0" ++ ++util-deprecate@^1.0.2: ++ version "1.0.2" ++ resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" ++ integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== ++ ++v8-to-istanbul@^9.0.1: ++ version "9.1.0" ++ resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz" ++ integrity sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA== ++ dependencies: ++ "@jridgewell/trace-mapping" "^0.3.12" ++ "@types/istanbul-lib-coverage" "^2.0.1" ++ convert-source-map "^1.6.0" ++ ++vite-plugin-ruby@3.2.2: ++ version "3.2.2" ++ resolved "https://registry.npmjs.org/vite-plugin-ruby/-/vite-plugin-ruby-3.2.2.tgz" ++ integrity sha512-cuHG1MajRWPR8YdfF6lvgsQRnKFEBRwZF//asFbRiI1psacxB5aPlHSvYZYxAu5IflrAa0MdR0HxEq+g98M3iQ== ++ dependencies: ++ debug "^4.3.4" ++ fast-glob "^3.2.12" ++ ++vite@^4, vite@^4.2.0, vite@>=4.0.0, vite@4.4.9: ++ version "4.4.9" ++ resolved "https://registry.npmjs.org/vite/-/vite-4.4.9.tgz" ++ integrity sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA== ++ dependencies: ++ esbuild "^0.18.10" ++ postcss "^8.4.27" ++ rollup "^3.27.1" ++ optionalDependencies: ++ fsevents "~2.3.2" ++ ++w3c-xmlserializer@^4.0.0: ++ version "4.0.0" ++ resolved "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz" ++ integrity sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw== ++ dependencies: ++ xml-name-validator "^4.0.0" ++ ++walker@^1.0.8: ++ version "1.0.8" ++ resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" ++ integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== ++ dependencies: ++ makeerror "1.0.12" ++ ++webidl-conversions@^7.0.0: ++ version "7.0.0" ++ resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz" ++ integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== ++ ++whatwg-encoding@^2.0.0: ++ version "2.0.0" ++ resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz" ++ integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg== ++ dependencies: ++ iconv-lite "0.6.3" ++ ++whatwg-mimetype@^3.0.0: ++ version "3.0.0" ++ resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz" ++ integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== ++ ++whatwg-url@^11.0.0: ++ version "11.0.0" ++ resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz" ++ integrity sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ== ++ dependencies: ++ tr46 "^3.0.0" ++ webidl-conversions "^7.0.0" ++ ++whatwg-url@^12.0.0, whatwg-url@^12.0.1: ++ version "12.0.1" ++ resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz" ++ integrity sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ== ++ dependencies: ++ tr46 "^4.1.1" ++ webidl-conversions "^7.0.0" ++ ++which-boxed-primitive@^1.0.2: ++ version "1.0.2" ++ resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" ++ integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== ++ dependencies: ++ is-bigint "^1.0.1" ++ is-boolean-object "^1.1.0" ++ is-number-object "^1.0.4" ++ is-string "^1.0.5" ++ is-symbol "^1.0.3" ++ ++which-collection@^1.0.1: ++ version "1.0.1" ++ resolved "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz" ++ integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== ++ dependencies: ++ is-map "^2.0.1" ++ is-set "^2.0.1" ++ is-weakmap "^2.0.1" ++ is-weakset "^2.0.1" ++ ++which-typed-array@^1.1.11, which-typed-array@^1.1.9: ++ version "1.1.11" ++ resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz" ++ integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== ++ dependencies: ++ available-typed-arrays "^1.0.5" ++ call-bind "^1.0.2" ++ for-each "^0.3.3" ++ gopd "^1.0.1" ++ has-tostringtag "^1.0.0" ++ ++which@^2.0.1: ++ version "2.0.2" ++ resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" ++ integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== ++ dependencies: ++ isexe "^2.0.0" ++ ++wrap-ansi@^7.0.0: ++ version "7.0.0" ++ resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" ++ integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== ++ dependencies: ++ ansi-styles "^4.0.0" ++ string-width "^4.1.0" ++ strip-ansi "^6.0.0" ++ ++wrap-ansi@^8.0.1, wrap-ansi@^8.1.0: ++ version "8.1.0" ++ resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" ++ integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== ++ dependencies: ++ ansi-styles "^6.1.0" ++ string-width "^5.0.1" ++ strip-ansi "^7.0.1" ++ ++wrappy@1: ++ version "1.0.2" ++ resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" ++ integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== ++ ++write-file-atomic@^4.0.2: ++ version "4.0.2" ++ resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz" ++ integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== ++ dependencies: ++ imurmurhash "^0.1.4" ++ signal-exit "^3.0.7" ++ ++ws@^8.11.0, ws@^8.13.0: ++ version "8.14.1" ++ resolved "https://registry.npmjs.org/ws/-/ws-8.14.1.tgz" ++ integrity sha512-4OOseMUq8AzRBI/7SLMUwO+FEDnguetSk7KMb1sHwvF2w2Wv5Hoj0nlifx8vtGsftE/jWHojPy8sMMzYLJ2G/A== ++ ++xml-name-validator@^4.0.0: ++ version "4.0.0" ++ resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz" ++ integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== ++ ++xmlchars@^2.2.0: ++ version "2.2.0" ++ resolved "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz" ++ integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== ++ ++y18n@^5.0.5: ++ version "5.0.8" ++ resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" ++ integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== ++ ++yallist@^3.0.2: ++ version "3.1.1" ++ resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" ++ integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== ++ ++yallist@^4.0.0: ++ version "4.0.0" ++ resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" ++ integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== ++ ++yaml@^2.1.1: ++ version "2.3.2" ++ resolved "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz" ++ integrity sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg== ++ ++yaml@2.3.1: ++ version "2.3.1" ++ resolved "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz" ++ integrity sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ== ++ ++yargs-parser@^21.0.1, yargs-parser@^21.1.1: ++ version "21.1.1" ++ resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" ++ integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== ++ ++yargs@^17.3.1: ++ version "17.7.2" ++ resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" ++ integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== ++ dependencies: ++ cliui "^8.0.1" ++ escalade "^3.1.1" ++ get-caller-file "^2.0.5" ++ require-directory "^2.1.1" ++ string-width "^4.2.3" ++ y18n "^5.0.5" ++ yargs-parser "^21.1.1" ++ ++yocto-queue@^0.1.0: ++ version "0.1.0" ++ resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" ++ integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +From 4067c24acbcdba422bd7860bc8fd6ebef6537b6e Mon Sep 17 00:00:00 2001 +From: Genevieve Capolongo +Date: Fri, 10 Oct 2025 14:21:48 -0400 +Subject: [PATCH 04/22] styling + +--- + .../reusable-components/button/button.tsx | 40 ++++++++++++++----- + .../reusable-components/button/types.ts | 17 ++++++++ + .../reusable-components/card/card.tsx | 16 ++++++-- + .../reusable-components/input/input.tsx | 6 +-- + .../reusable-components/input/types.ts | 4 +- + .../routes/createAccount/create-account.tsx | 17 +++++--- + app/frontend/routes/root/root.tsx | 2 +- + .../account-selection/account-selection.tsx | 6 ++- + .../routes/signup/create-user/create-user.tsx | 2 +- + .../routes/signup/deposit/deposit.tsx | 2 +- + .../signup/joint-access/joint-access.tsx | 1 + + .../stock-restrictions/stock-restrictions.tsx | 1 + + 12 files changed, 85 insertions(+), 29 deletions(-) + create mode 100644 app/frontend/reusable-components/button/types.ts + +diff --git a/app/frontend/reusable-components/button/button.tsx b/app/frontend/reusable-components/button/button.tsx +index e568b61..5a60bfc 100644 +--- a/app/frontend/reusable-components/button/button.tsx ++++ b/app/frontend/reusable-components/button/button.tsx +@@ -1,25 +1,43 @@ +-import React, { ReactNode } from 'react'; ++import React, { useMemo } from 'react'; + import { Link } from 'react-router-dom'; ++import { ButtonProps, ButtonVariants } from './types'; ++import classNames from 'classnames'; + +-interface Props { +- type?: 'button' | 'submit'; +- href?: string; +- children: ReactNode; +-} +- +-const classes = 'inline-block py-3 px-6 bg-[hsla(244,49%,49%,1)] text-white'; ++export function Button({ href, children, type, variant, isFullWidth }: ButtonProps) { ++ // const classes = getButtonClasses(fullwidth); ++ const buttonStyling = useMemo(() => { ++ switch (variant) { ++ case ButtonVariants.PRIMARY: ++ return 'py-3 px-6 bg-[hsla(244,49%,49%,1)] text-white rounded-[8px]'; ++ case ButtonVariants.SECONDARY: ++ return 'py-3 px-6 bg-white text-[hsla(244,49%,49%,1)] rounded-[8px]'; ++ case ButtonVariants.TERTIARY: ++ return 'pt-1 pr-2 border-b-4 border-solid border-slate-500 text-slate-500'; ++ default: ++ return 'py-3 px-6 bg-[hsla(244,49%,49%,1)] text-white rounded-[8px]'; ++ } ++ }, []); + +-export function Button({ href, children, type }: Props) { + if (href) { + return ( +- ++ + {children} + + ); + } + + return ( +- + ); +diff --git a/app/frontend/reusable-components/button/types.ts b/app/frontend/reusable-components/button/types.ts +new file mode 100644 +index 0000000..4da220c +--- /dev/null ++++ b/app/frontend/reusable-components/button/types.ts +@@ -0,0 +1,17 @@ ++import { ReactNode } from 'react'; ++ ++export interface ButtonProps { ++ type?: 'button' | 'submit'; ++ href?: string; ++ children: ReactNode; ++ isFullWidth?: boolean; ++ variant?: VariantTypes | undefined; ++} ++ ++export enum ButtonVariants { ++ PRIMARY = 'primary', ++ SECONDARY = 'secondary', ++ TERTIARY = 'tertiary', ++} ++ ++export type VariantTypes = ButtonVariants.PRIMARY | ButtonVariants.SECONDARY | ButtonVariants.TERTIARY; +diff --git a/app/frontend/reusable-components/card/card.tsx b/app/frontend/reusable-components/card/card.tsx +index 650345c..7400dcd 100644 +--- a/app/frontend/reusable-components/card/card.tsx ++++ b/app/frontend/reusable-components/card/card.tsx +@@ -1,15 +1,25 @@ ++import classNames from 'classnames'; + import React, { ReactNode } from 'react'; + + interface Props { + children: ReactNode; + title: string; + description?: string; ++ isFullWidth?: boolean; ++ titleStyles?: string; + } + +-export function Card({ children, title, description }: Props) { ++export function Card({ children, title, description, isFullWidth, titleStyles }: Props) { ++ console.log(isFullWidth); ++ + return ( +-
+-

{title}

++
++

{title}

+

{description}

+ {children} +
+diff --git a/app/frontend/reusable-components/input/input.tsx b/app/frontend/reusable-components/input/input.tsx +index 54f4e12..5d0deef 100644 +--- a/app/frontend/reusable-components/input/input.tsx ++++ b/app/frontend/reusable-components/input/input.tsx +@@ -1,6 +1,6 @@ + import classNames from 'classnames'; + import React, { ChangeEvent, useState } from 'react'; +-import { InputVariants, VariantTypes } from './types'; ++import { InputVariants } from './types'; + + interface Props { + label: string; +@@ -22,8 +22,8 @@ export function Input({ onChange, label, variant }: Props) { + +- ++ +
+- +- +- ++ ++ ++
++ ++
++ +
+
+ +diff --git a/app/frontend/routes/root/root.tsx b/app/frontend/routes/root/root.tsx +index c13f167..3ee9abb 100644 +--- a/app/frontend/routes/root/root.tsx ++++ b/app/frontend/routes/root/root.tsx +@@ -5,7 +5,7 @@ import { FlowLayout } from '../../reusable-components/flow-layout/flow-layout.ts + export function Root() { + return ( + +- ++ + Get started + + +diff --git a/app/frontend/routes/signup/account-selection/account-selection.tsx b/app/frontend/routes/signup/account-selection/account-selection.tsx +index beab828..d9f9116 100644 +--- a/app/frontend/routes/signup/account-selection/account-selection.tsx ++++ b/app/frontend/routes/signup/account-selection/account-selection.tsx +@@ -6,7 +6,11 @@ import { FlowLayout } from '../../../reusable-components/flow-layout/flow-layout + export function AccountSelection() { + return ( + +- ++ +
+ +- ++ +
+ + +diff --git a/app/frontend/routes/signup/deposit/deposit.tsx b/app/frontend/routes/signup/deposit/deposit.tsx +index 73eed54..ab02df3 100644 +--- a/app/frontend/routes/signup/deposit/deposit.tsx ++++ b/app/frontend/routes/signup/deposit/deposit.tsx +@@ -7,7 +7,7 @@ import { Input } from '../../../reusable-components/input/input.tsx'; + export function Deposit() { + return ( + +- ++ +
+ + +diff --git a/app/frontend/routes/signup/joint-access/joint-access.tsx b/app/frontend/routes/signup/joint-access/joint-access.tsx +index 4f50d23..c715f99 100644 +--- a/app/frontend/routes/signup/joint-access/joint-access.tsx ++++ b/app/frontend/routes/signup/joint-access/joint-access.tsx +@@ -8,6 +8,7 @@ export function JointAccess() { + return ( + + +diff --git a/app/frontend/routes/signup/stock-restrictions/stock-restrictions.tsx b/app/frontend/routes/signup/stock-restrictions/stock-restrictions.tsx +index 9d74286..616aa2b 100644 +--- a/app/frontend/routes/signup/stock-restrictions/stock-restrictions.tsx ++++ b/app/frontend/routes/signup/stock-restrictions/stock-restrictions.tsx +@@ -8,6 +8,7 @@ export function StockRestrictions() { + return ( + + + +From dba6f83999b29ba0b95a412d45f403e1d1e46e86 Mon Sep 17 00:00:00 2001 +From: Genevieve Capolongo +Date: Fri, 10 Oct 2025 14:31:01 -0400 +Subject: [PATCH 05/22] TODOs and change CA route + +--- + .../flow-layout/flow-layout.tsx | 16 ++++++++++++---- + app/frontend/router.tsx | 6 ++++-- + .../routes/createAccount/create-account.tsx | 2 +- + 3 files changed, 17 insertions(+), 7 deletions(-) + +diff --git a/app/frontend/reusable-components/flow-layout/flow-layout.tsx b/app/frontend/reusable-components/flow-layout/flow-layout.tsx +index c9b25d5..1ef8ecc 100644 +--- a/app/frontend/reusable-components/flow-layout/flow-layout.tsx ++++ b/app/frontend/reusable-components/flow-layout/flow-layout.tsx +@@ -5,13 +5,21 @@ interface Props { + children: ReactNode; + } + ++// TODO: add a create provider that will handle if the guest ++// is authenticated or not ++// and show the logout button only if the user is authenticated ++ + export function FlowLayout({ children }: Props) { ++ const isAuthenticated = true; // Replace with actual authentication logic ++ + return ( +-
++
+
+- +- Logout +- ++ {isAuthenticated && ( ++ ++ Logout ++ ++ )} +
+ {children} +
+diff --git a/app/frontend/router.tsx b/app/frontend/router.tsx +index 9908c85..e7efe54 100644 +--- a/app/frontend/router.tsx ++++ b/app/frontend/router.tsx +@@ -35,10 +35,12 @@ const router = createBrowserRouter([ + }, + { + path: '/create-account', +- element: +- } ++ element: , ++ }, + ]); + ++// TODO: authentication logic needs to go here? ++ + export function Router() { + return ( +
+diff --git a/app/frontend/routes/createAccount/create-account.tsx b/app/frontend/routes/createAccount/create-account.tsx +index 1520f2e..10cebc5 100644 +--- a/app/frontend/routes/createAccount/create-account.tsx ++++ b/app/frontend/routes/createAccount/create-account.tsx +@@ -14,7 +14,7 @@ export function CreateAccount() { + + +
+- +
+ +From 2a9168c1544fd38e9d1723b8d094a5e1f863f88f Mon Sep 17 00:00:00 2001 +From: Genevieve Capolongo +Date: Sat, 11 Oct 2025 12:32:10 -0400 +Subject: [PATCH 06/22] adding username and password validation + +--- + app/controllers/api_controller.rb | 14 ++++ + .../reusable-components/button/button.tsx | 5 +- + .../reusable-components/button/types.ts | 2 + + .../reusable-components/input/input.tsx | 6 +- + .../routes/createAccount/constants.ts | 8 +++ + .../routes/createAccount/create-account.tsx | 65 +++++++++++++++++-- + app/models/user.rb | 16 ++++- + config/routes.rb | 2 + + 8 files changed, 107 insertions(+), 11 deletions(-) + create mode 100644 app/frontend/routes/createAccount/constants.ts + +diff --git a/app/controllers/api_controller.rb b/app/controllers/api_controller.rb +index d87dd2e..3fa686d 100644 +--- a/app/controllers/api_controller.rb ++++ b/app/controllers/api_controller.rb +@@ -1,4 +1,18 @@ + # frozen_string_literal: true + + class ApiController < ApplicationController ++ protect_from_forgery with: :null_session ++ ++ def validate_account ++ username = params[:username] ++ password = params[:password] ++ ++ username_result = User.validate_username(username) ++ password_result = User.validate_password(password) ++ ++ render json: { ++ username: username_result, ++ password: password_result ++ } ++ end + end +diff --git a/app/frontend/reusable-components/button/button.tsx b/app/frontend/reusable-components/button/button.tsx +index 5a60bfc..ae19dd5 100644 +--- a/app/frontend/reusable-components/button/button.tsx ++++ b/app/frontend/reusable-components/button/button.tsx +@@ -3,8 +3,7 @@ import { Link } from 'react-router-dom'; + import { ButtonProps, ButtonVariants } from './types'; + import classNames from 'classnames'; + +-export function Button({ href, children, type, variant, isFullWidth }: ButtonProps) { +- // const classes = getButtonClasses(fullwidth); ++export function Button({ href, children, type, variant, isFullWidth, onClick, disabled }: ButtonProps) { + const buttonStyling = useMemo(() => { + switch (variant) { + case ButtonVariants.PRIMARY: +@@ -37,6 +36,8 @@ export function Button({ href, children, type, variant, isFullWidth }: ButtonPro + className={classNames('inline-block ', buttonStyling, { + 'w-full text-center': isFullWidth, + })} ++ onClick={onClick} ++ disabled={disabled} + > + {children} + +diff --git a/app/frontend/reusable-components/button/types.ts b/app/frontend/reusable-components/button/types.ts +index 4da220c..66c7745 100644 +--- a/app/frontend/reusable-components/button/types.ts ++++ b/app/frontend/reusable-components/button/types.ts +@@ -6,6 +6,8 @@ export interface ButtonProps { + children: ReactNode; + isFullWidth?: boolean; + variant?: VariantTypes | undefined; ++ onClick?: () => void; ++ disabled?: boolean; + } + + export enum ButtonVariants { +diff --git a/app/frontend/reusable-components/input/input.tsx b/app/frontend/reusable-components/input/input.tsx +index 5d0deef..5af61ec 100644 +--- a/app/frontend/reusable-components/input/input.tsx ++++ b/app/frontend/reusable-components/input/input.tsx +@@ -2,13 +2,14 @@ import classNames from 'classnames'; + import React, { ChangeEvent, useState } from 'react'; + import { InputVariants } from './types'; + +-interface Props { ++interface InputProps { + label: string; + onChange?: (value: string) => void; + variant?: InputVariants | undefined; ++ errorText?: string; + } + +-export function Input({ onChange, label, variant }: Props) { ++export function Input({ onChange, label, variant, errorText }: InputProps) { + const [value, setValue] = useState(''); + const id = label.replace(/ /gm, '_'); + +@@ -28,6 +29,7 @@ export function Input({ onChange, label, variant }: Props) { + value={value} + onChange={handleChange} + /> ++ {errorText &&
{errorText}
} +
+ ); + } +diff --git a/app/frontend/routes/createAccount/constants.ts b/app/frontend/routes/createAccount/constants.ts +new file mode 100644 +index 0000000..1334ff1 +--- /dev/null ++++ b/app/frontend/routes/createAccount/constants.ts +@@ -0,0 +1,8 @@ ++export const CREATE_ACCOUNT_ERROR_MAP = { ++ NO_USERNAME_GIVEN: 'Please provide a username.', ++ USERNAME_NOT_VALID: 'Username must be between 10 and 50 characters.', ++ NO_PASSWORD_GIVEN: 'Please provide a password.', ++ PASSWORD_NOT_VALID: ++ 'Password must be at least 12 characters, contain at least one uppercase letter, one lowercase letter, one number, and one special character.', ++ SERVER_ERROR: 'Something went wrong. Please try again later.', ++}; +diff --git a/app/frontend/routes/createAccount/create-account.tsx b/app/frontend/routes/createAccount/create-account.tsx +index 10cebc5..fec9371 100644 +--- a/app/frontend/routes/createAccount/create-account.tsx ++++ b/app/frontend/routes/createAccount/create-account.tsx +@@ -4,18 +4,73 @@ import { Card } from 'app/frontend/reusable-components/card/card'; + import { FlowLayout } from 'app/frontend/reusable-components/flow-layout/flow-layout'; + import { Input } from 'app/frontend/reusable-components/input/input'; + import { InputVariants } from 'app/frontend/reusable-components/input/types'; +-import React from 'react'; ++import React, { useCallback } from 'react'; ++import { useNavigate } from 'react-router-dom'; ++import { CREATE_ACCOUNT_ERROR_MAP } from './constants'; + + export function CreateAccount() { ++ const [username, setUsername] = React.useState(''); ++ const [password, setPassword] = React.useState(''); ++ const [validation, setValidation] = React.useState<{ username?: string; password?: string } | null>(null); ++ const navigate = useNavigate(); ++ const [loading, setLoading] = React.useState(false); ++ ++ const handleUsernameChange = useCallback((value: string) => { ++ setUsername(value); ++ setValidation(null); ++ }, []); ++ ++ const handlePasswordChange = useCallback((value: string) => { ++ setPassword(value); ++ setValidation(null); ++ }, []); ++ ++ const handleCreateAccount = useCallback(async () => { ++ setLoading(true); ++ setValidation(null); ++ try { ++ const res = await fetch('/api/validate_account', { ++ method: 'POST', ++ headers: { 'Content-Type': 'application/json' }, ++ body: JSON.stringify({ username, password }), ++ }); ++ const data = await res.json(); ++ ++ if (data.username === true && data.password === true) { ++ navigate('/signup/account-selection'); ++ return; ++ } ++ ++ const usernameError = CREATE_ACCOUNT_ERROR_MAP[data.username as keyof typeof CREATE_ACCOUNT_ERROR_MAP]; ++ const passwordError = CREATE_ACCOUNT_ERROR_MAP[data.password as keyof typeof CREATE_ACCOUNT_ERROR_MAP]; ++ ++ setValidation({ username: usernameError, password: passwordError }); ++ } catch (e) { ++ setValidation({ username: 'SERVER_ERROR', password: 'SERVER_ERROR' }); ++ } finally { ++ setLoading(false); ++ } ++ }, [username, password, navigate]); ++ + return ( + + +
+- +- ++ ++ +
+- +
+ +diff --git a/app/models/user.rb b/app/models/user.rb +index d582619..c55b625 100644 +--- a/app/models/user.rb ++++ b/app/models/user.rb +@@ -1,10 +1,22 @@ ++require 'zxcvbn' + class User < ApplicationRecord + validates :username, presence: true + validates :password, presence: true + +- def self.validate_username ++ def self.validate_username(username) ++ return 'NO_USERNAME_GIVEN' if username.nil? || username.strip.empty? ++ return 'USERNAME_NOT_VALID' unless username.length >= 10 && username.length <= 50 ++ true + end + +- def self.validate_password ++ def self.validate_password(password) ++ return 'NO_PASSWORD_GIVEN' if password.nil? || password.strip.empty? ++ return 'PASSWORD_NOT_VALID' unless password.length >= 20 && password.length <= 500 ++ return 'PASSWORD_LETTER_NUMBER_MISSING' unless password.match?(/[a-zA-Z]/) && password.match?(/[0-9]/) ++ ++ zxcvbn = Zxcvbn.test(password) ++ return 'PASSWORD_WEAK' if zxcvbn.score < 2 ++ ++ true + end + end +diff --git a/config/routes.rb b/config/routes.rb +index e495f6e..e2c8608 100644 +--- a/config/routes.rb ++++ b/config/routes.rb +@@ -4,4 +4,6 @@ + get '/', to: 'application#render_react', as: :root + get 'signup/*all', to: 'application#render_react', as: :signup + get 'create-account', to: 'application#render_react', as: :createAccount ++ ++ post 'api/validate_account', to: 'api#validate_account' + end + +From b1751cbaa230471441fa23027576deb8c95eb79b Mon Sep 17 00:00:00 2001 +From: Genevieve Capolongo +Date: Sat, 11 Oct 2025 13:30:43 -0400 +Subject: [PATCH 07/22] adding account provider and authentication + +--- + app/frontend/entrypoints/main.tsx | 5 ++- + .../providers/AccountProvider/index.tsx | 17 ++++++++++ + .../providers/AccountProvider/reducer.ts | 27 ++++++++++++++++ + .../providers/AccountProvider/types.ts | 31 +++++++++++++++++++ + .../reusable-components/card/card.tsx | 2 -- + .../flow-layout/flow-layout.tsx | 12 +++---- + .../routes/createAccount/constants.ts | 4 +-- + .../routes/createAccount/create-account.tsx | 7 ++++- + .../account-selection/account-selection.tsx | 14 +++++++-- + .../routes/signup/create-user/create-user.tsx | 13 +++++++- + .../routes/signup/deposit/deposit.tsx | 13 +++++++- + .../signup/joint-access/joint-access.tsx | 13 +++++++- + .../stock-restrictions/stock-restrictions.tsx | 13 +++++++- + app/models/user.rb | 3 +- + 14 files changed, 154 insertions(+), 20 deletions(-) + create mode 100644 app/frontend/providers/AccountProvider/index.tsx + create mode 100644 app/frontend/providers/AccountProvider/reducer.ts + create mode 100644 app/frontend/providers/AccountProvider/types.ts + +diff --git a/app/frontend/entrypoints/main.tsx b/app/frontend/entrypoints/main.tsx +index cbcceab..e4f34d5 100644 +--- a/app/frontend/entrypoints/main.tsx ++++ b/app/frontend/entrypoints/main.tsx +@@ -1,10 +1,13 @@ + import React from 'react'; + import ReactDOM from 'react-dom/client'; + import { Router } from '../router.tsx'; ++import { AccountProvider } from '../providers/AccountProvider/index.tsx'; + import '../tailwind.css'; + + ReactDOM.createRoot(document.getElementById('vite-app')!).render( + +- ++ ++ ++ + + ); +diff --git a/app/frontend/providers/AccountProvider/index.tsx b/app/frontend/providers/AccountProvider/index.tsx +new file mode 100644 +index 0000000..f743d42 +--- /dev/null ++++ b/app/frontend/providers/AccountProvider/index.tsx +@@ -0,0 +1,17 @@ ++import React, { createContext, useReducer } from 'react'; ++import { accountReducer, AnonymousUser } from './reducer'; ++import { AccountStateType, AccountDispatchType, AccountProviderProps } from './types'; ++ ++export const AccountContext = createContext< ++ | { ++ state: AccountStateType; ++ dispatch: AccountDispatchType; // connect the action to the state ++ } ++ | undefined ++>(undefined); ++ ++export function AccountProvider({ children }: AccountProviderProps) { ++ const [state, dispatch] = useReducer(accountReducer, AnonymousUser); ++ const value = { state, dispatch }; ++ return {children}; ++} +diff --git a/app/frontend/providers/AccountProvider/reducer.ts b/app/frontend/providers/AccountProvider/reducer.ts +new file mode 100644 +index 0000000..762de1c +--- /dev/null ++++ b/app/frontend/providers/AccountProvider/reducer.ts +@@ -0,0 +1,27 @@ ++import { Reducer } from 'react'; ++import { AccountActions, AccountActionTypes } from './types'; ++import { AccountStateType } from './types'; ++ ++export const AnonymousUser = { ++ username: '', ++ isValid: false, ++}; ++ ++export const accountReducer: Reducer = (state, action) => { ++ switch (action.type) { ++ case AccountActionTypes.SET_USERNAME: { ++ return { ++ ...state, ++ username: action.payload?.username, ++ isValid: true, ++ }; ++ } ++ case AccountActionTypes.DELETE_USERNAME: { ++ return { ++ ...state, ++ username: '', ++ isValid: false, ++ }; ++ } ++ } ++}; +diff --git a/app/frontend/providers/AccountProvider/types.ts b/app/frontend/providers/AccountProvider/types.ts +new file mode 100644 +index 0000000..7eff8fe +--- /dev/null ++++ b/app/frontend/providers/AccountProvider/types.ts +@@ -0,0 +1,31 @@ ++import { ReactNode } from 'react'; ++ ++export type AccountStateType = { ++ username: string; ++ isValid: boolean; ++}; ++ ++// a function that takes in an action ++export type AccountDispatchType = (action: AccountActions) => void; ++ ++export type AccountProviderProps = { ++ children: ReactNode; ++}; ++ ++export enum AccountActionTypes { ++ SET_USERNAME = 'SET_USERNAME', ++ DELETE_USERNAME = 'DELETE_USERNAME', ++} ++ ++interface SetUsername { ++ type: typeof AccountActionTypes.SET_USERNAME; ++ payload: { ++ username: string; ++ }; ++} ++ ++interface DeleteUsername { ++ type: typeof AccountActionTypes.DELETE_USERNAME; ++} ++ ++export type AccountActions = SetUsername | DeleteUsername; +diff --git a/app/frontend/reusable-components/card/card.tsx b/app/frontend/reusable-components/card/card.tsx +index 7400dcd..149efe8 100644 +--- a/app/frontend/reusable-components/card/card.tsx ++++ b/app/frontend/reusable-components/card/card.tsx +@@ -10,8 +10,6 @@ interface Props { + } + + export function Card({ children, title, description, isFullWidth, titleStyles }: Props) { +- console.log(isFullWidth); +- + return ( +
+
+- {isAuthenticated && ( ++ {isValid && ( + + Logout + +diff --git a/app/frontend/routes/createAccount/constants.ts b/app/frontend/routes/createAccount/constants.ts +index 1334ff1..2e56937 100644 +--- a/app/frontend/routes/createAccount/constants.ts ++++ b/app/frontend/routes/createAccount/constants.ts +@@ -2,7 +2,7 @@ export const CREATE_ACCOUNT_ERROR_MAP = { + NO_USERNAME_GIVEN: 'Please provide a username.', + USERNAME_NOT_VALID: 'Username must be between 10 and 50 characters.', + NO_PASSWORD_GIVEN: 'Please provide a password.', +- PASSWORD_NOT_VALID: +- 'Password must be at least 12 characters, contain at least one uppercase letter, one lowercase letter, one number, and one special character.', ++ PASSWORD_NOT_VALID: 'Password must be between 20 and 50 characters.', ++ PASSWORD_LETTER_NUMBER_MISSING: 'Password must contain at least one letter and one number.', + SERVER_ERROR: 'Something went wrong. Please try again later.', + }; +diff --git a/app/frontend/routes/createAccount/create-account.tsx b/app/frontend/routes/createAccount/create-account.tsx +index fec9371..ebe7c7a 100644 +--- a/app/frontend/routes/createAccount/create-account.tsx ++++ b/app/frontend/routes/createAccount/create-account.tsx +@@ -4,15 +4,18 @@ import { Card } from 'app/frontend/reusable-components/card/card'; + import { FlowLayout } from 'app/frontend/reusable-components/flow-layout/flow-layout'; + import { Input } from 'app/frontend/reusable-components/input/input'; + import { InputVariants } from 'app/frontend/reusable-components/input/types'; +-import React, { useCallback } from 'react'; ++import React, { useCallback, useContext } from 'react'; + import { useNavigate } from 'react-router-dom'; + import { CREATE_ACCOUNT_ERROR_MAP } from './constants'; ++import { AccountContext } from 'app/frontend/providers/AccountProvider'; ++import { AccountActionTypes } from 'app/frontend/providers/AccountProvider/types'; + + export function CreateAccount() { + const [username, setUsername] = React.useState(''); + const [password, setPassword] = React.useState(''); + const [validation, setValidation] = React.useState<{ username?: string; password?: string } | null>(null); + const navigate = useNavigate(); ++ const user = useContext(AccountContext); + const [loading, setLoading] = React.useState(false); + + const handleUsernameChange = useCallback((value: string) => { +@@ -38,6 +41,8 @@ export function CreateAccount() { + + if (data.username === true && data.password === true) { + navigate('/signup/account-selection'); ++ ++ user?.dispatch({ type: AccountActionTypes.SET_USERNAME, payload: { username } }); + return; + } + +diff --git a/app/frontend/routes/signup/account-selection/account-selection.tsx b/app/frontend/routes/signup/account-selection/account-selection.tsx +index d9f9116..40baab1 100644 +--- a/app/frontend/routes/signup/account-selection/account-selection.tsx ++++ b/app/frontend/routes/signup/account-selection/account-selection.tsx +@@ -1,9 +1,19 @@ +-import React from 'react'; +-import { Link } from 'react-router-dom'; ++import React, { useContext, useEffect } from 'react'; ++import { Link, useNavigate } from 'react-router-dom'; + import { Card } from '../../../reusable-components/card/card.tsx'; + import { FlowLayout } from '../../../reusable-components/flow-layout/flow-layout.tsx'; ++import { AccountContext } from 'app/frontend/providers/AccountProvider/index.tsx'; + + export function AccountSelection() { ++ const user = useContext(AccountContext); ++ const navigate = useNavigate(); ++ ++ useEffect(() => { ++ if (user && user.state && !user.state.isValid) { ++ navigate('/create-account'); ++ } ++ }, [user, navigate]); ++ + return ( + + { ++ if (user && user.state && !user.state.isValid) { ++ navigate('/create-account'); ++ } ++ }, [user, navigate]); ++ + return ( + + +diff --git a/app/frontend/routes/signup/deposit/deposit.tsx b/app/frontend/routes/signup/deposit/deposit.tsx +index ab02df3..255e190 100644 +--- a/app/frontend/routes/signup/deposit/deposit.tsx ++++ b/app/frontend/routes/signup/deposit/deposit.tsx +@@ -1,10 +1,21 @@ +-import React from 'react'; ++import React, { useContext, useEffect } from 'react'; + import { Button } from '../../../reusable-components/button/button.tsx'; + import { Card } from '../../../reusable-components/card/card.tsx'; + import { FlowLayout } from '../../../reusable-components/flow-layout/flow-layout.tsx'; + import { Input } from '../../../reusable-components/input/input.tsx'; ++import { AccountContext } from 'app/frontend/providers/AccountProvider/index.tsx'; ++import { useNavigate } from 'react-router-dom'; + + export function Deposit() { ++ const user = useContext(AccountContext); ++ const navigate = useNavigate(); ++ ++ useEffect(() => { ++ if (user && user.state && !user.state.isValid) { ++ navigate('/create-account'); ++ } ++ }, [user, navigate]); ++ + return ( + + +diff --git a/app/frontend/routes/signup/joint-access/joint-access.tsx b/app/frontend/routes/signup/joint-access/joint-access.tsx +index c715f99..37d3b43 100644 +--- a/app/frontend/routes/signup/joint-access/joint-access.tsx ++++ b/app/frontend/routes/signup/joint-access/joint-access.tsx +@@ -1,10 +1,21 @@ +-import React from 'react'; ++import React, { useContext, useEffect } from 'react'; + import { Button } from '../../../reusable-components/button/button.tsx'; + import { Card } from '../../../reusable-components/card/card.tsx'; + import { FlowLayout } from '../../../reusable-components/flow-layout/flow-layout.tsx'; + import { Input } from '../../../reusable-components/input/input'; ++import { AccountContext } from 'app/frontend/providers/AccountProvider/index.tsx'; ++import { useNavigate } from 'react-router-dom'; + + export function JointAccess() { ++ const user = useContext(AccountContext); ++ const navigate = useNavigate(); ++ ++ useEffect(() => { ++ if (user && user.state && !user.state.isValid) { ++ navigate('/create-account'); ++ } ++ }, [user, navigate]); ++ + return ( + + { ++ if (user && user.state && !user.state.isValid) { ++ navigate('/create-account'); ++ } ++ }, [user, navigate]); ++ + return ( + + = 20 && password.length <= 500 +- return 'PASSWORD_LETTER_NUMBER_MISSING' unless password.match?(/[a-zA-Z]/) && password.match?(/[0-9]/) ++ return 'PASSWORD_LETTER_NUMBER_MISSING' unless password.match?(/[a-zA-Z]/) ++ return 'PASSWORD_LETTER_NUMBER_MISSING' unless password.match?(/[0-9]/) + + zxcvbn = Zxcvbn.test(password) + return 'PASSWORD_WEAK' if zxcvbn.score < 2 + +From d02d9583502277337561ede2d3960e246e881197 Mon Sep 17 00:00:00 2001 +From: Genevieve Capolongo +Date: Sat, 11 Oct 2025 13:50:05 -0400 +Subject: [PATCH 08/22] add logout logic and welcome message + +--- + .../flow-layout/flow-layout.tsx | 17 +++++++++++++---- + .../welcomeMessage/index.tsx | 12 ++++++++++++ + .../routes/createAccount/create-account.tsx | 4 +--- + .../account-selection/account-selection.tsx | 2 ++ + 4 files changed, 28 insertions(+), 7 deletions(-) + create mode 100644 app/frontend/reusable-components/welcomeMessage/index.tsx + +diff --git a/app/frontend/reusable-components/flow-layout/flow-layout.tsx b/app/frontend/reusable-components/flow-layout/flow-layout.tsx +index ee32257..52c9851 100644 +--- a/app/frontend/reusable-components/flow-layout/flow-layout.tsx ++++ b/app/frontend/reusable-components/flow-layout/flow-layout.tsx +@@ -1,6 +1,9 @@ + import { AccountContext } from 'app/frontend/providers/AccountProvider'; +-import React, { ReactNode, useContext } from 'react'; +-import { Link } from 'react-router-dom'; ++import { AccountActionTypes } from 'app/frontend/providers/AccountProvider/types'; ++import React, { ReactNode, useCallback, useContext } from 'react'; ++import { useNavigate } from 'react-router-dom'; ++import { Button } from '../button/button'; ++import { ButtonVariants } from '../button/types'; + + interface Props { + children: ReactNode; +@@ -8,15 +11,21 @@ interface Props { + + export function FlowLayout({ children }: Props) { + const user = useContext(AccountContext); ++ const navigate = useNavigate(); + const isValid = user?.state.isValid; + ++ const handleLogout = useCallback(() => { ++ user?.dispatch({ type: AccountActionTypes.DELETE_USERNAME }); ++ navigate('/create-account'); ++ }, [user, navigate]); ++ + return ( +
+
+ {isValid && ( +- ++ + )} +
+ {children} +diff --git a/app/frontend/reusable-components/welcomeMessage/index.tsx b/app/frontend/reusable-components/welcomeMessage/index.tsx +new file mode 100644 +index 0000000..f3e7315 +--- /dev/null ++++ b/app/frontend/reusable-components/welcomeMessage/index.tsx +@@ -0,0 +1,12 @@ ++import { AccountContext } from 'app/frontend/providers/AccountProvider'; ++import React, { useContext } from 'react'; ++ ++export const WelcomeMessage = () => { ++ const user = useContext(AccountContext); ++ return ( ++
++

Welcome {user?.state.username || 'Guest'}!

++

We're glad to have you here.

++
++ ); ++}; +diff --git a/app/frontend/routes/createAccount/create-account.tsx b/app/frontend/routes/createAccount/create-account.tsx +index ebe7c7a..f0473d0 100644 +--- a/app/frontend/routes/createAccount/create-account.tsx ++++ b/app/frontend/routes/createAccount/create-account.tsx +@@ -1,5 +1,4 @@ + import { Button } from 'app/frontend/reusable-components/button/button'; +-import { ButtonVariants } from 'app/frontend/reusable-components/button/types'; + import { Card } from 'app/frontend/reusable-components/card/card'; + import { FlowLayout } from 'app/frontend/reusable-components/flow-layout/flow-layout'; + import { Input } from 'app/frontend/reusable-components/input/input'; +@@ -55,7 +54,7 @@ export function CreateAccount() { + } finally { + setLoading(false); + } +- }, [username, password, navigate]); ++ }, [username, password, navigate, user]); + + return ( + +@@ -78,7 +77,6 @@ export function CreateAccount() { + {loading ? 'Validating...' : 'Create Account'} + +
+- +
+ + +diff --git a/app/frontend/routes/signup/account-selection/account-selection.tsx b/app/frontend/routes/signup/account-selection/account-selection.tsx +index 40baab1..21644cd 100644 +--- a/app/frontend/routes/signup/account-selection/account-selection.tsx ++++ b/app/frontend/routes/signup/account-selection/account-selection.tsx +@@ -3,6 +3,7 @@ import { Link, useNavigate } from 'react-router-dom'; + import { Card } from '../../../reusable-components/card/card.tsx'; + import { FlowLayout } from '../../../reusable-components/flow-layout/flow-layout.tsx'; + import { AccountContext } from 'app/frontend/providers/AccountProvider/index.tsx'; ++import { WelcomeMessage } from 'app/frontend/reusable-components/welcomeMessage/index.tsx'; + + export function AccountSelection() { + const user = useContext(AccountContext); +@@ -16,6 +17,7 @@ export function AccountSelection() { + + return ( + ++ + +Date: Sat, 11 Oct 2025 13:57:19 -0400 +Subject: [PATCH 09/22] playing around + +--- + app/frontend/reusable-components/flow-layout/flow-layout.tsx | 3 +++ + app/views/layouts/application.html.erb | 2 +- + 2 files changed, 4 insertions(+), 1 deletion(-) + +diff --git a/app/frontend/reusable-components/flow-layout/flow-layout.tsx b/app/frontend/reusable-components/flow-layout/flow-layout.tsx +index 52c9851..fbe8dfd 100644 +--- a/app/frontend/reusable-components/flow-layout/flow-layout.tsx ++++ b/app/frontend/reusable-components/flow-layout/flow-layout.tsx +@@ -14,6 +14,9 @@ export function FlowLayout({ children }: Props) { + const navigate = useNavigate(); + const isValid = user?.state.isValid; + ++ // TODO: need to add session storage logic for this ++ // Test coverage for everything ++ + const handleLogout = useCallback(() => { + user?.dispatch({ type: AccountActionTypes.DELETE_USERNAME }); + navigate('/create-account'); +diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb +index 9438e80..fdbcbd8 100644 +--- a/app/views/layouts/application.html.erb ++++ b/app/views/layouts/application.html.erb +@@ -1,7 +1,7 @@ + + + +- Coding Challenge ++ Genevieve's Wealthfront Version + + <%= csrf_meta_tags %> + <%= csp_meta_tag %> + +From 617154538eaf22857426d0ae736c2f05d2b14c27 Mon Sep 17 00:00:00 2001 +From: Genevieve Capolongo +Date: Mon, 13 Oct 2025 10:28:16 -0400 +Subject: [PATCH 10/22] tests for backend + +--- + app/models/user.rb | 8 +++--- + package.json | 1 + + test/models/user_test.rb | 62 +++++++++++++++++++++++++++++++++------- + 3 files changed, 57 insertions(+), 14 deletions(-) + +diff --git a/app/models/user.rb b/app/models/user.rb +index f18d586..15ee27c 100644 +--- a/app/models/user.rb ++++ b/app/models/user.rb +@@ -10,13 +10,13 @@ def self.validate_username(username) + end + + def self.validate_password(password) +- return 'NO_PASSWORD_GIVEN' if password.nil? || password.strip.empty? +- return 'PASSWORD_NOT_VALID' unless password.length >= 20 && password.length <= 500 ++ return 'NO_PASSWORD_GIVEN' if password.nil? || password.strip.empty? ++ return 'PASSWORD_NOT_VALID' unless password.length >= 20 && password.length <= 50 + return 'PASSWORD_LETTER_NUMBER_MISSING' unless password.match?(/[a-zA-Z]/) + return 'PASSWORD_LETTER_NUMBER_MISSING' unless password.match?(/[0-9]/) + +- zxcvbn = Zxcvbn.test(password) +- return 'PASSWORD_WEAK' if zxcvbn.score < 2 ++ zxcvbn = Zxcvbn.test(password) ++ return 'PASSWORD_WEAK' if zxcvbn.score < 2 + + true + end +diff --git a/package.json b/package.json +index 5d687b3..a711522 100644 +--- a/package.json ++++ b/package.json +@@ -5,6 +5,7 @@ + "dev": "vite", + "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", + "test": "jest", ++ "test:ruby": "bin/rails test", + "prepare": "husky install", + "start": "bin/rails s" + }, +diff --git a/test/models/user_test.rb b/test/models/user_test.rb +index 97fc819..b576ab4 100644 +--- a/test/models/user_test.rb ++++ b/test/models/user_test.rb +@@ -1,6 +1,14 @@ + require "test_helper" + + class UserTest < ActiveSupport::TestCase ++ def with_stubbed_zxcvbn(score) ++ original = Zxcvbn.method(:test) ++ Zxcvbn.define_singleton_method(:test) { |_| OpenStruct.new(score: score) } ++ yield ++ ensure ++ Zxcvbn.define_singleton_method(:test, original) ++ end ++ + test "should not save user without username" do + user = User.new(password: '123') + assert_not user.save +@@ -16,17 +24,51 @@ class UserTest < ActiveSupport::TestCase + assert user.save + end + +- test "should validate username" do +- assert_not User.validate_username('123456789'), "< 10" +- assert User.validate_username('1234567890'), ">= 10" +- assert User.validate_username('12345678901234567890123456789012345678901234567890'), "<= 50" +- assert_not User.validate_username('123456789012345678901234567890123456789012345678901'), "> 50" ++ test "validate_username returns NO_USERNAME_GIVEN for nil or blank" do ++ assert_equal 'NO_USERNAME_GIVEN', User.validate_username(nil) ++ assert_equal 'NO_USERNAME_GIVEN', User.validate_username(' ') ++ end ++ ++ test "validate_username returns USERNAME_NOT_VALID for < 10 or > 50 chars" do ++ assert_equal 'USERNAME_NOT_VALID', User.validate_username('short') ++ assert_equal 'USERNAME_NOT_VALID', User.validate_username('a' * 51) ++ end ++ ++ test "validate_username returns true for valid length" do ++ assert_equal true, User.validate_username('a' * 10) ++ assert_equal true, User.validate_username('a' * 50) ++ end ++ ++ test "validate_password returns NO_PASSWORD_GIVEN for nil or blank" do ++ assert_equal 'NO_PASSWORD_GIVEN', User.validate_password(nil) ++ assert_equal 'NO_PASSWORD_GIVEN', User.validate_password(' ') ++ end ++ ++ test "validate_password returns PASSWORD_NOT_VALID for < 20 or > 50 chars" do ++ valid = 'w3althfrontCodingChallenge3' ++ assert_equal 'PASSWORD_NOT_VALID', User.validate_password('aA1' * 6) # 18 chars ++ assert_equal 'PASSWORD_NOT_VALID', User.validate_password('aA1' * 200) # 600 chars ++ assert_equal true, User.validate_password(valid) ++ end ++ ++ test "validate_password returns PASSWORD_LETTER_NUMBER_MISSING for missing letter or number" do ++ pw_num = '1' * 21 ++ pw_letter = 'a' * 21 ++ assert_equal 'PASSWORD_LETTER_NUMBER_MISSING', User.validate_password(pw_num) ++ assert_equal 'PASSWORD_LETTER_NUMBER_MISSING', User.validate_password(pw_letter) ++ end ++ ++ test "validate_password returns PASSWORD_WEAK for weak password" do ++ weak_pw = 'a1' * 11 # 22 chars, but weak ++ with_stubbed_zxcvbn(1) do ++ assert_equal 'PASSWORD_WEAK', User.validate_password(weak_pw) ++ end + end + +- test "should validate password" do +- assert_not User.validate_password('123456789012345678a'), "< 20" +- assert User.validate_password('1234567890123456789a'), ">= 20" +- assert User.validate_password('1234567890123456789012345678901234567890123456789a'), "<= 50" +- assert_not User.validate_password('123456789012345678901234567890123456789012345678901a'), "> 50" ++ test "validate_password returns true for strong, valid password" do ++ strong_pw = 'aA1' * 7 # 21 chars ++ with_stubbed_zxcvbn(3) do ++ assert_equal true, User.validate_password(strong_pw) ++ end + end + end + +From b2d631f299cb805f52ea93351f3e33c80c93e65c Mon Sep 17 00:00:00 2001 +From: Genevieve Capolongo +Date: Mon, 13 Oct 2025 11:23:08 -0400 +Subject: [PATCH 11/22] adding test cases for creat account + +--- + .../reusable-components/input/input.tsx | 4 +- + app/frontend/router.tsx | 2 +- + .../constants.ts | 7 + + .../create-account/create-account.test.tsx | 87 + + .../create-account.tsx | 13 +- + .../signup/create-user/create-user.test.tsx | 3 +- + jest.config.js | 3 + + package-lock.json | 9249 +++++++++++------ + package.json | 12 +- + yarn.lock | 2619 ++--- + 10 files changed, 7599 insertions(+), 4400 deletions(-) + rename app/frontend/routes/{createAccount => create-account}/constants.ts (56%) + create mode 100644 app/frontend/routes/create-account/create-account.test.tsx + rename app/frontend/routes/{createAccount => create-account}/create-account.tsx (91%) + +diff --git a/app/frontend/reusable-components/input/input.tsx b/app/frontend/reusable-components/input/input.tsx +index 5af61ec..581e49a 100644 +--- a/app/frontend/reusable-components/input/input.tsx ++++ b/app/frontend/reusable-components/input/input.tsx +@@ -4,12 +4,13 @@ import { InputVariants } from './types'; + + interface InputProps { + label: string; ++ dataTest: string; + onChange?: (value: string) => void; + variant?: InputVariants | undefined; + errorText?: string; + } + +-export function Input({ onChange, label, variant, errorText }: InputProps) { ++export function Input({ onChange, label, dataTest, variant, errorText }: InputProps) { + const [value, setValue] = useState(''); + const id = label.replace(/ /gm, '_'); + +@@ -22,6 +23,7 @@ export function Input({ onChange, label, variant, errorText }: InputProps) { + + ({ ++ useNavigate: () => mockNavigate, ++})); ++ ++describe('CreateAccount', () => { ++ beforeEach(() => { ++ (fetch as jest.Mock).mockClear(); ++ }); ++ ++ it('renders username and password inputs', () => { ++ render(); ++ expect(screen.getByTestId('usernameInput')).toBeInTheDocument(); ++ expect(screen.getByTestId('passwordInput')).toBeInTheDocument(); ++ }); ++ ++ it('shows validation errors from backend', async () => { ++ (fetch as jest.Mock).mockResolvedValueOnce({ ++ json: async () => ({ username: 'USERNAME_NOT_VALID', password: 'PASSWORD_NOT_VALID' }), ++ }); ++ render(); ++ fireEvent.change(screen.getByTestId('usernameInput'), { target: { value: 'short' } }); ++ fireEvent.change(screen.getByTestId('passwordInput'), { target: { value: 'short' } }); ++ fireEvent.click(screen.getByRole('button', { name: /create account/i })); ++ await waitFor(() => { ++ expect(screen.getByText(CREATE_ACCOUNT_ERROR_MAP[USERNAME_NOT_VALID])).toBeInTheDocument(); ++ expect(screen.getByText(CREATE_ACCOUNT_ERROR_MAP[PASSWORD_NOT_VALID])).toBeInTheDocument(); ++ }); ++ }); ++ ++ it.each` ++ usernameError | passwordError | usernameInput | passwordInput ++ ${NO_USERNAME_GIVEN} | ${NO_PASSWORD_GIVEN} | ${''} | ${''} ++ ${USERNAME_NOT_VALID} | ${PASSWORD_NOT_VALID} | ${'short'} | ${'short'} ++ ${USERNAME_NOT_VALID} | ${PASSWORD_LETTER_NUMBER_MISSING} | ${'validusername'} | ${'aaaaaaaaaaaaaaaaaaaaaaa'} ++ ${SERVER_ERROR} | ${PASSWORD_NOT_VALID} | ${'short'} | ${''} ++ ${USERNAME_NOT_VALID} | ${SERVER_ERROR} | ${''} | ${'short'} ++ `( ++ 'should show proper validation for $usernameError and $passwordError', ++ async ({ usernameError, passwordError, usernameInput, passwordInput }) => { ++ (fetch as jest.Mock).mockResolvedValueOnce({ ++ json: async () => ({ username: usernameError, password: passwordError }), ++ }); ++ render(); ++ fireEvent.change(screen.getByTestId('usernameInput'), { target: { value: usernameInput } }); ++ fireEvent.change(screen.getByTestId('passwordInput'), { target: { value: passwordInput } }); ++ fireEvent.click(screen.getByRole('button', { name: /create account/i })); ++ await waitFor(() => { ++ expect( ++ screen.getByText(CREATE_ACCOUNT_ERROR_MAP[usernameError as keyof typeof CREATE_ACCOUNT_ERROR_MAP]) ++ ).toBeInTheDocument(); ++ expect( ++ screen.getByText(CREATE_ACCOUNT_ERROR_MAP[passwordError as keyof typeof CREATE_ACCOUNT_ERROR_MAP]) ++ ).toBeInTheDocument(); ++ }); ++ } ++ ); ++ ++ it('navigates to account selection on valid input', async () => { ++ (fetch as jest.Mock).mockResolvedValueOnce({ ++ json: async () => ({ username: true, password: true }), ++ }); ++ render(); ++ fireEvent.change(screen.getByTestId('usernameInput'), { target: { value: 'validusername' } }); ++ fireEvent.change(screen.getByTestId('passwordInput'), { target: { value: 'validpassword1234567890' } }); ++ fireEvent.click(screen.getByRole('button', { name: /create account/i })); ++ await waitFor(() => { ++ expect(mockNavigate).toHaveBeenCalledWith('/signup/account-selection'); ++ }); ++ }); ++}); +diff --git a/app/frontend/routes/createAccount/create-account.tsx b/app/frontend/routes/create-account/create-account.tsx +similarity index 91% +rename from app/frontend/routes/createAccount/create-account.tsx +rename to app/frontend/routes/create-account/create-account.tsx +index f0473d0..1c9050f 100644 +--- a/app/frontend/routes/createAccount/create-account.tsx ++++ b/app/frontend/routes/create-account/create-account.tsx +@@ -15,7 +15,7 @@ export function CreateAccount() { + const [validation, setValidation] = React.useState<{ username?: string; password?: string } | null>(null); + const navigate = useNavigate(); + const user = useContext(AccountContext); +- const [loading, setLoading] = React.useState(false); ++ const [isLoading, setIsLoading] = React.useState(false); + + const handleUsernameChange = useCallback((value: string) => { + setUsername(value); +@@ -28,8 +28,9 @@ export function CreateAccount() { + }, []); + + const handleCreateAccount = useCallback(async () => { +- setLoading(true); ++ setIsLoading(true); + setValidation(null); ++ + try { + const res = await fetch('/api/validate_account', { + method: 'POST', +@@ -52,7 +53,7 @@ export function CreateAccount() { + } catch (e) { + setValidation({ username: 'SERVER_ERROR', password: 'SERVER_ERROR' }); + } finally { +- setLoading(false); ++ setIsLoading(false); + } + }, [username, password, navigate, user]); + +@@ -61,20 +62,22 @@ export function CreateAccount() { + +
+ + +
+- +
+
+diff --git a/app/frontend/routes/signup/create-user/create-user.test.tsx b/app/frontend/routes/signup/create-user/create-user.test.tsx +index dcc8034..0140250 100644 +--- a/app/frontend/routes/signup/create-user/create-user.test.tsx ++++ b/app/frontend/routes/signup/create-user/create-user.test.tsx +@@ -1,5 +1,6 @@ + import { describe, test } from '@jest/globals'; +-import { render, screen } from '@testing-library/react'; ++import { render } from '@testing-library/react'; ++import { screen } from '@testing-library/dom'; + import React from 'react'; + import { BrowserRouter } from 'react-router-dom'; + import { CreateUser } from './create-user'; +diff --git a/jest.config.js b/jest.config.js +index b914815..d4c41af 100644 +--- a/jest.config.js ++++ b/jest.config.js +@@ -2,4 +2,7 @@ + module.exports = { + preset: 'ts-jest', + testEnvironment: 'jsdom', ++ moduleNameMapper: { ++ '^app/(.*)$': '/app/$1', ++ }, + }; +diff --git a/package-lock.json b/package-lock.json +index 1292763..de6fba3 100644 +--- a/package-lock.json ++++ b/package-lock.json +@@ -13,9 +13,13 @@ + "react-router-dom": "6.16.0" + }, + "devDependencies": { ++ "@babel/generator": "^7.28.3", + "@jest/globals": "^29.7.0", +- "@testing-library/jest-dom": "^6.1.3", +- "@testing-library/react": "^14.0.0", ++ "@jridgewell/gen-mapping": "^0.3.13", ++ "@testing-library/dom": "^10.4.1", ++ "@testing-library/jest-dom": "^6.9.1", ++ "@testing-library/react": "^16.3.0", ++ "@types/jest": "^30.0.0", + "@types/node": "18.17.17", + "@types/react": "^18.2.21", + "@types/react-dom": "18.2.7", +@@ -28,14 +32,14 @@ + "eslint-plugin-react-hooks": "4.6.0", + "eslint-plugin-react-refresh": "0.4.3", + "husky": "^8.0.3", +- "jest": "29.7.0", ++ "jest": "^30.2.0", + "jest-environment-jsdom": "29.7.0", + "jsdom": "^22.1.0", + "lint-staged": "^14.0.1", + "postcss": "8.4.29", + "prettier": "2.8.8", + "tailwindcss": "3.3.3", +- "ts-jest": "29.1.1", ++ "ts-jest": "^29.4.5", + "typescript": "^5.2.2", + "vite": "4.4.9", + "vite-plugin-ruby": "3.2.2" +@@ -51,10 +55,11 @@ + } + }, + "node_modules/@adobe/css-tools": { +- "version": "4.3.1", +- "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.1.tgz", +- "integrity": "sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg==", +- "dev": true ++ "version": "4.4.4", ++ "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.4.tgz", ++ "integrity": "sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==", ++ "dev": true, ++ "license": "MIT" + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", +@@ -68,58 +73,49 @@ + "url": "https://github.com/sponsors/sindresorhus" + } + }, +- "node_modules/@ampproject/remapping": { +- "version": "2.2.1", +- "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", +- "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", +- "dev": true, +- "dependencies": { +- "@jridgewell/gen-mapping": "^0.3.0", +- "@jridgewell/trace-mapping": "^0.3.9" +- }, +- "engines": { +- "node": ">=6.0.0" +- } +- }, + "node_modules/@babel/code-frame": { +- "version": "7.22.13", +- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", +- "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", ++ "version": "7.27.1", ++ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", ++ "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "@babel/highlight": "^7.22.13", +- "chalk": "^2.4.2" ++ "@babel/helper-validator-identifier": "^7.27.1", ++ "js-tokens": "^4.0.0", ++ "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { +- "version": "7.22.20", +- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.20.tgz", +- "integrity": "sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==", ++ "version": "7.28.4", ++ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz", ++ "integrity": "sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==", + "dev": true, ++ "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { +- "version": "7.22.20", +- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.20.tgz", +- "integrity": "sha512-Y6jd1ahLubuYweD/zJH+vvOY141v4f9igNQAQ+MBgq9JlHS2iTsZKn1aMsb3vGccZsXI16VzTBw52Xx0DWmtnA==", +- "dev": true, +- "dependencies": { +- "@ampproject/remapping": "^2.2.0", +- "@babel/code-frame": "^7.22.13", +- "@babel/generator": "^7.22.15", +- "@babel/helper-compilation-targets": "^7.22.15", +- "@babel/helper-module-transforms": "^7.22.20", +- "@babel/helpers": "^7.22.15", +- "@babel/parser": "^7.22.16", +- "@babel/template": "^7.22.15", +- "@babel/traverse": "^7.22.20", +- "@babel/types": "^7.22.19", +- "convert-source-map": "^1.7.0", ++ "version": "7.28.4", ++ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz", ++ "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@babel/code-frame": "^7.27.1", ++ "@babel/generator": "^7.28.3", ++ "@babel/helper-compilation-targets": "^7.27.2", ++ "@babel/helper-module-transforms": "^7.28.3", ++ "@babel/helpers": "^7.28.4", ++ "@babel/parser": "^7.28.4", ++ "@babel/template": "^7.27.2", ++ "@babel/traverse": "^7.28.4", ++ "@babel/types": "^7.28.4", ++ "@jridgewell/remapping": "^2.3.5", ++ "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", +@@ -143,29 +139,32 @@ + } + }, + "node_modules/@babel/generator": { +- "version": "7.22.15", +- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.15.tgz", +- "integrity": "sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==", ++ "version": "7.28.3", ++ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz", ++ "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "@babel/types": "^7.22.15", +- "@jridgewell/gen-mapping": "^0.3.2", +- "@jridgewell/trace-mapping": "^0.3.17", +- "jsesc": "^2.5.1" ++ "@babel/parser": "^7.28.3", ++ "@babel/types": "^7.28.2", ++ "@jridgewell/gen-mapping": "^0.3.12", ++ "@jridgewell/trace-mapping": "^0.3.28", ++ "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { +- "version": "7.22.15", +- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", +- "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", ++ "version": "7.27.2", ++ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", ++ "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "@babel/compat-data": "^7.22.9", +- "@babel/helper-validator-option": "^7.22.15", +- "browserslist": "^4.21.9", ++ "@babel/compat-data": "^7.27.2", ++ "@babel/helper-validator-option": "^7.27.1", ++ "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, +@@ -178,67 +177,45 @@ + "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/@babel/helper-environment-visitor": { +- "version": "7.22.20", +- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", +- "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", +- "dev": true, +- "engines": { +- "node": ">=6.9.0" +- } +- }, +- "node_modules/@babel/helper-function-name": { +- "version": "7.22.5", +- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", +- "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", +- "dev": true, +- "dependencies": { +- "@babel/template": "^7.22.5", +- "@babel/types": "^7.22.5" +- }, +- "engines": { +- "node": ">=6.9.0" +- } +- }, +- "node_modules/@babel/helper-hoist-variables": { +- "version": "7.22.5", +- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", +- "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", ++ "node_modules/@babel/helper-globals": { ++ "version": "7.28.0", ++ "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", ++ "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, +- "dependencies": { +- "@babel/types": "^7.22.5" +- }, ++ "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { +- "version": "7.22.15", +- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", +- "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", ++ "version": "7.27.1", ++ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", ++ "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "@babel/types": "^7.22.15" ++ "@babel/traverse": "^7.27.1", ++ "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { +- "version": "7.22.20", +- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.20.tgz", +- "integrity": "sha512-dLT7JVWIUUxKOs1UnJUBR3S70YK+pKX6AbJgB2vMIvEkZkrfJDbYDJesnPshtKV4LhDOR3Oc5YULeDizRek+5A==", ++ "version": "7.28.3", ++ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", ++ "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "@babel/helper-environment-visitor": "^7.22.20", +- "@babel/helper-module-imports": "^7.22.15", +- "@babel/helper-simple-access": "^7.22.5", +- "@babel/helper-split-export-declaration": "^7.22.6", +- "@babel/helper-validator-identifier": "^7.22.20" ++ "@babel/helper-module-imports": "^7.27.1", ++ "@babel/helper-validator-identifier": "^7.27.1", ++ "@babel/traverse": "^7.28.3" + }, + "engines": { + "node": ">=6.9.0" +@@ -248,98 +225,68 @@ + } + }, + "node_modules/@babel/helper-plugin-utils": { +- "version": "7.22.5", +- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", +- "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", +- "dev": true, +- "engines": { +- "node": ">=6.9.0" +- } +- }, +- "node_modules/@babel/helper-simple-access": { +- "version": "7.22.5", +- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", +- "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", +- "dev": true, +- "dependencies": { +- "@babel/types": "^7.22.5" +- }, +- "engines": { +- "node": ">=6.9.0" +- } +- }, +- "node_modules/@babel/helper-split-export-declaration": { +- "version": "7.22.6", +- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", +- "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", ++ "version": "7.27.1", ++ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", ++ "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "dev": true, +- "dependencies": { +- "@babel/types": "^7.22.5" +- }, ++ "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { +- "version": "7.22.5", +- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", +- "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", ++ "version": "7.27.1", ++ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", ++ "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, ++ "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { +- "version": "7.22.20", +- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", +- "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", ++ "version": "7.27.1", ++ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", ++ "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "dev": true, ++ "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { +- "version": "7.22.15", +- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", +- "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", ++ "version": "7.27.1", ++ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", ++ "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, ++ "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { +- "version": "7.22.15", +- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.15.tgz", +- "integrity": "sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==", ++ "version": "7.28.4", ++ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", ++ "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "@babel/template": "^7.22.15", +- "@babel/traverse": "^7.22.15", +- "@babel/types": "^7.22.15" ++ "@babel/template": "^7.27.2", ++ "@babel/types": "^7.28.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, +- "node_modules/@babel/highlight": { +- "version": "7.22.20", +- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", +- "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", ++ "node_modules/@babel/parser": { ++ "version": "7.28.4", ++ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz", ++ "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "@babel/helper-validator-identifier": "^7.22.20", +- "chalk": "^2.4.2", +- "js-tokens": "^4.0.0" ++ "@babel/types": "^7.28.4" + }, +- "engines": { +- "node": ">=6.9.0" +- } +- }, +- "node_modules/@babel/parser": { +- "version": "7.22.16", +- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.16.tgz", +- "integrity": "sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==", +- "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, +@@ -383,6 +330,38 @@ + "@babel/core": "^7.0.0-0" + } + }, ++ "node_modules/@babel/plugin-syntax-class-static-block": { ++ "version": "7.14.5", ++ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", ++ "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@babel/helper-plugin-utils": "^7.14.5" ++ }, ++ "engines": { ++ "node": ">=6.9.0" ++ }, ++ "peerDependencies": { ++ "@babel/core": "^7.0.0-0" ++ } ++ }, ++ "node_modules/@babel/plugin-syntax-import-attributes": { ++ "version": "7.27.1", ++ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", ++ "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@babel/helper-plugin-utils": "^7.27.1" ++ }, ++ "engines": { ++ "node": ">=6.9.0" ++ }, ++ "peerDependencies": { ++ "@babel/core": "^7.0.0-0" ++ } ++ }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", +@@ -408,12 +387,13 @@ + } + }, + "node_modules/@babel/plugin-syntax-jsx": { +- "version": "7.22.5", +- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", +- "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", ++ "version": "7.27.1", ++ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", ++ "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "@babel/helper-plugin-utils": "^7.22.5" ++ "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" +@@ -494,6 +474,22 @@ + "@babel/core": "^7.0.0-0" + } + }, ++ "node_modules/@babel/plugin-syntax-private-property-in-object": { ++ "version": "7.14.5", ++ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", ++ "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@babel/helper-plugin-utils": "^7.14.5" ++ }, ++ "engines": { ++ "node": ">=6.9.0" ++ }, ++ "peerDependencies": { ++ "@babel/core": "^7.0.0-0" ++ } ++ }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", +@@ -510,12 +506,13 @@ + } + }, + "node_modules/@babel/plugin-syntax-typescript": { +- "version": "7.22.5", +- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", +- "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", ++ "version": "7.27.1", ++ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", ++ "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "@babel/helper-plugin-utils": "^7.22.5" ++ "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" +@@ -567,49 +564,48 @@ + } + }, + "node_modules/@babel/template": { +- "version": "7.22.15", +- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", +- "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", ++ "version": "7.27.2", ++ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", ++ "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "@babel/code-frame": "^7.22.13", +- "@babel/parser": "^7.22.15", +- "@babel/types": "^7.22.15" ++ "@babel/code-frame": "^7.27.1", ++ "@babel/parser": "^7.27.2", ++ "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { +- "version": "7.22.20", +- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.20.tgz", +- "integrity": "sha512-eU260mPZbU7mZ0N+X10pxXhQFMGTeLb9eFS0mxehS8HZp9o1uSnFeWQuG1UPrlxgA7QoUzFhOnilHDp0AXCyHw==", +- "dev": true, +- "dependencies": { +- "@babel/code-frame": "^7.22.13", +- "@babel/generator": "^7.22.15", +- "@babel/helper-environment-visitor": "^7.22.20", +- "@babel/helper-function-name": "^7.22.5", +- "@babel/helper-hoist-variables": "^7.22.5", +- "@babel/helper-split-export-declaration": "^7.22.6", +- "@babel/parser": "^7.22.16", +- "@babel/types": "^7.22.19", +- "debug": "^4.1.0", +- "globals": "^11.1.0" ++ "version": "7.28.4", ++ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz", ++ "integrity": "sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@babel/code-frame": "^7.27.1", ++ "@babel/generator": "^7.28.3", ++ "@babel/helper-globals": "^7.28.0", ++ "@babel/parser": "^7.28.4", ++ "@babel/template": "^7.27.2", ++ "@babel/types": "^7.28.4", ++ "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { +- "version": "7.22.19", +- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.19.tgz", +- "integrity": "sha512-P7LAw/LbojPzkgp5oznjE6tQEIWbp4PkkfrZDINTro9zgBRtI324/EYsiSI7lhPbpIQ+DCeR2NNmMWANGGfZsg==", ++ "version": "7.28.4", ++ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz", ++ "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "@babel/helper-string-parser": "^7.22.5", +- "@babel/helper-validator-identifier": "^7.22.19", +- "to-fast-properties": "^2.0.0" ++ "@babel/helper-string-parser": "^7.27.1", ++ "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" +@@ -619,7 +615,42 @@ + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", +- "dev": true ++ "dev": true, ++ "license": "MIT" ++ }, ++ "node_modules/@emnapi/core": { ++ "version": "1.5.0", ++ "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.5.0.tgz", ++ "integrity": "sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==", ++ "dev": true, ++ "license": "MIT", ++ "optional": true, ++ "dependencies": { ++ "@emnapi/wasi-threads": "1.1.0", ++ "tslib": "^2.4.0" ++ } ++ }, ++ "node_modules/@emnapi/runtime": { ++ "version": "1.5.0", ++ "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.5.0.tgz", ++ "integrity": "sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==", ++ "dev": true, ++ "license": "MIT", ++ "optional": true, ++ "dependencies": { ++ "tslib": "^2.4.0" ++ } ++ }, ++ "node_modules/@emnapi/wasi-threads": { ++ "version": "1.1.0", ++ "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", ++ "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", ++ "dev": true, ++ "license": "MIT", ++ "optional": true, ++ "dependencies": { ++ "tslib": "^2.4.0" ++ } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.18.20", +@@ -741,6 +772,53 @@ + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, ++ "node_modules/@isaacs/cliui": { ++ "version": "8.0.2", ++ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", ++ "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", ++ "dev": true, ++ "license": "ISC", ++ "dependencies": { ++ "string-width": "^5.1.2", ++ "string-width-cjs": "npm:string-width@^4.2.0", ++ "strip-ansi": "^7.0.1", ++ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", ++ "wrap-ansi": "^8.1.0", ++ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" ++ }, ++ "engines": { ++ "node": ">=12" ++ } ++ }, ++ "node_modules/@isaacs/cliui/node_modules/ansi-regex": { ++ "version": "6.2.2", ++ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", ++ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", ++ "dev": true, ++ "license": "MIT", ++ "engines": { ++ "node": ">=12" ++ }, ++ "funding": { ++ "url": "https://github.com/chalk/ansi-regex?sponsor=1" ++ } ++ }, ++ "node_modules/@isaacs/cliui/node_modules/strip-ansi": { ++ "version": "7.1.2", ++ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", ++ "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "ansi-regex": "^6.0.1" ++ }, ++ "engines": { ++ "node": ">=12" ++ }, ++ "funding": { ++ "url": "https://github.com/chalk/strip-ansi?sponsor=1" ++ } ++ }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", +@@ -850,129 +928,210 @@ + } + }, + "node_modules/@jest/console": { +- "version": "29.7.0", +- "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", +- "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.2.0.tgz", ++ "integrity": "sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "@jest/types": "^29.6.3", ++ "@jest/types": "30.2.0", + "@types/node": "*", +- "chalk": "^4.0.0", +- "jest-message-util": "^29.7.0", +- "jest-util": "^29.7.0", ++ "chalk": "^4.1.2", ++ "jest-message-util": "30.2.0", ++ "jest-util": "30.2.0", + "slash": "^3.0.0" + }, + "engines": { +- "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/@jest/console/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/console/node_modules/@jest/schemas": { ++ "version": "30.0.5", ++ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", ++ "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "color-convert": "^2.0.1" ++ "@sinclair/typebox": "^0.34.0" + }, + "engines": { +- "node": ">=8" +- }, +- "funding": { +- "url": "https://github.com/chalk/ansi-styles?sponsor=1" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/@jest/console/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/console/node_modules/@jest/types": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", ++ "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "ansi-styles": "^4.1.0", +- "supports-color": "^7.1.0" ++ "@jest/pattern": "30.0.1", ++ "@jest/schemas": "30.0.5", ++ "@types/istanbul-lib-coverage": "^2.0.6", ++ "@types/istanbul-reports": "^3.0.4", ++ "@types/node": "*", ++ "@types/yargs": "^17.0.33", ++ "chalk": "^4.1.2" + }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/@jest/console/node_modules/@sinclair/typebox": { ++ "version": "0.34.41", ++ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", ++ "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", ++ "dev": true, ++ "license": "MIT" ++ }, ++ "node_modules/@jest/console/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/chalk?sponsor=1" ++ "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, +- "node_modules/@jest/console/node_modules/color-convert": { +- "version": "2.0.1", +- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", +- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", ++ "node_modules/@jest/console/node_modules/ci-info": { ++ "version": "4.3.1", ++ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", ++ "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", ++ "dev": true, ++ "funding": [ ++ { ++ "type": "github", ++ "url": "https://github.com/sponsors/sibiraj-s" ++ } ++ ], ++ "license": "MIT", ++ "engines": { ++ "node": ">=8" ++ } ++ }, ++ "node_modules/@jest/console/node_modules/jest-message-util": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", ++ "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "color-name": "~1.1.4" ++ "@babel/code-frame": "^7.27.1", ++ "@jest/types": "30.2.0", ++ "@types/stack-utils": "^2.0.3", ++ "chalk": "^4.1.2", ++ "graceful-fs": "^4.2.11", ++ "micromatch": "^4.0.8", ++ "pretty-format": "30.2.0", ++ "slash": "^3.0.0", ++ "stack-utils": "^2.0.6" + }, + "engines": { +- "node": ">=7.0.0" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/@jest/console/node_modules/color-name": { +- "version": "1.1.4", +- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", +- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", +- "dev": true ++ "node_modules/@jest/console/node_modules/jest-util": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", ++ "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/types": "30.2.0", ++ "@types/node": "*", ++ "chalk": "^4.1.2", ++ "ci-info": "^4.2.0", ++ "graceful-fs": "^4.2.11", ++ "picomatch": "^4.0.2" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } + }, +- "node_modules/@jest/console/node_modules/has-flag": { +- "version": "4.0.0", +- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", +- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", ++ "node_modules/@jest/console/node_modules/jest-util/node_modules/picomatch": { ++ "version": "4.0.3", ++ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", ++ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, ++ "license": "MIT", + "engines": { +- "node": ">=8" ++ "node": ">=12" ++ }, ++ "funding": { ++ "url": "https://github.com/sponsors/jonschlinkert" + } + }, +- "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==", ++ "node_modules/@jest/console/node_modules/micromatch": { ++ "version": "4.0.8", ++ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", ++ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "has-flag": "^4.0.0" ++ "braces": "^3.0.3", ++ "picomatch": "^2.3.1" + }, + "engines": { +- "node": ">=8" ++ "node": ">=8.6" + } + }, +- "node_modules/@jest/core": { +- "version": "29.7.0", +- "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", +- "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", ++ "node_modules/@jest/console/node_modules/pretty-format": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", ++ "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "@jest/console": "^29.7.0", +- "@jest/reporters": "^29.7.0", +- "@jest/test-result": "^29.7.0", +- "@jest/transform": "^29.7.0", +- "@jest/types": "^29.6.3", ++ "@jest/schemas": "30.0.5", ++ "ansi-styles": "^5.2.0", ++ "react-is": "^18.3.1" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/@jest/core": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/core/-/core-30.2.0.tgz", ++ "integrity": "sha512-03W6IhuhjqTlpzh/ojut/pDB2LPRygyWX8ExpgHtQA8H/3K7+1vKmcINx5UzeOX1se6YEsBsOHQ1CRzf3fOwTQ==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/console": "30.2.0", ++ "@jest/pattern": "30.0.1", ++ "@jest/reporters": "30.2.0", ++ "@jest/test-result": "30.2.0", ++ "@jest/transform": "30.2.0", ++ "@jest/types": "30.2.0", + "@types/node": "*", +- "ansi-escapes": "^4.2.1", +- "chalk": "^4.0.0", +- "ci-info": "^3.2.0", +- "exit": "^0.1.2", +- "graceful-fs": "^4.2.9", +- "jest-changed-files": "^29.7.0", +- "jest-config": "^29.7.0", +- "jest-haste-map": "^29.7.0", +- "jest-message-util": "^29.7.0", +- "jest-regex-util": "^29.6.3", +- "jest-resolve": "^29.7.0", +- "jest-resolve-dependencies": "^29.7.0", +- "jest-runner": "^29.7.0", +- "jest-runtime": "^29.7.0", +- "jest-snapshot": "^29.7.0", +- "jest-util": "^29.7.0", +- "jest-validate": "^29.7.0", +- "jest-watcher": "^29.7.0", +- "micromatch": "^4.0.4", +- "pretty-format": "^29.7.0", +- "slash": "^3.0.0", +- "strip-ansi": "^6.0.0" ++ "ansi-escapes": "^4.3.2", ++ "chalk": "^4.1.2", ++ "ci-info": "^4.2.0", ++ "exit-x": "^0.2.2", ++ "graceful-fs": "^4.2.11", ++ "jest-changed-files": "30.2.0", ++ "jest-config": "30.2.0", ++ "jest-haste-map": "30.2.0", ++ "jest-message-util": "30.2.0", ++ "jest-regex-util": "30.0.1", ++ "jest-resolve": "30.2.0", ++ "jest-resolve-dependencies": "30.2.0", ++ "jest-runner": "30.2.0", ++ "jest-runtime": "30.2.0", ++ "jest-snapshot": "30.2.0", ++ "jest-util": "30.2.0", ++ "jest-validate": "30.2.0", ++ "jest-watcher": "30.2.0", ++ "micromatch": "^4.0.8", ++ "pretty-format": "30.2.0", ++ "slash": "^3.0.0" + }, + "engines": { +- "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" +@@ -983,89 +1142,408 @@ + } + } + }, +- "node_modules/@jest/core/node_modules/ansi-escapes": { +- "version": "4.3.2", +- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", +- "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", ++ "node_modules/@jest/core/node_modules/@jest/expect-utils": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz", ++ "integrity": "sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "type-fest": "^0.21.3" ++ "@jest/get-type": "30.1.0" + }, + "engines": { +- "node": ">=8" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/@jest/core/node_modules/@jest/schemas": { ++ "version": "30.0.5", ++ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", ++ "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@sinclair/typebox": "^0.34.0" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/@jest/core/node_modules/@jest/transform": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", ++ "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@babel/core": "^7.27.4", ++ "@jest/types": "30.2.0", ++ "@jridgewell/trace-mapping": "^0.3.25", ++ "babel-plugin-istanbul": "^7.0.1", ++ "chalk": "^4.1.2", ++ "convert-source-map": "^2.0.0", ++ "fast-json-stable-stringify": "^2.1.0", ++ "graceful-fs": "^4.2.11", ++ "jest-haste-map": "30.2.0", ++ "jest-regex-util": "30.0.1", ++ "jest-util": "30.2.0", ++ "micromatch": "^4.0.8", ++ "pirates": "^4.0.7", ++ "slash": "^3.0.0", ++ "write-file-atomic": "^5.0.1" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/@jest/core/node_modules/@jest/types": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", ++ "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/pattern": "30.0.1", ++ "@jest/schemas": "30.0.5", ++ "@types/istanbul-lib-coverage": "^2.0.6", ++ "@types/istanbul-reports": "^3.0.4", ++ "@types/node": "*", ++ "@types/yargs": "^17.0.33", ++ "chalk": "^4.1.2" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/@jest/core/node_modules/@sinclair/typebox": { ++ "version": "0.34.41", ++ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", ++ "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", ++ "dev": true, ++ "license": "MIT" ++ }, ++ "node_modules/@jest/core/node_modules/ansi-escapes": { ++ "version": "4.3.2", ++ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", ++ "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "type-fest": "^0.21.3" ++ }, ++ "engines": { ++ "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", ++ "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/@jest/core/node_modules/babel-plugin-istanbul": { ++ "version": "7.0.1", ++ "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", ++ "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", + "dev": true, ++ "license": "BSD-3-Clause", ++ "workspaces": [ ++ "test/babel-8" ++ ], + "dependencies": { +- "color-convert": "^2.0.1" ++ "@babel/helper-plugin-utils": "^7.0.0", ++ "@istanbuljs/load-nyc-config": "^1.0.0", ++ "@istanbuljs/schema": "^0.1.3", ++ "istanbul-lib-instrument": "^6.0.2", ++ "test-exclude": "^6.0.0" + }, ++ "engines": { ++ "node": ">=12" ++ } ++ }, ++ "node_modules/@jest/core/node_modules/ci-info": { ++ "version": "4.3.1", ++ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", ++ "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", ++ "dev": true, ++ "funding": [ ++ { ++ "type": "github", ++ "url": "https://github.com/sponsors/sibiraj-s" ++ } ++ ], ++ "license": "MIT", + "engines": { + "node": ">=8" ++ } ++ }, ++ "node_modules/@jest/core/node_modules/expect": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", ++ "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/expect-utils": "30.2.0", ++ "@jest/get-type": "30.1.0", ++ "jest-matcher-utils": "30.2.0", ++ "jest-message-util": "30.2.0", ++ "jest-mock": "30.2.0", ++ "jest-util": "30.2.0" + }, +- "funding": { +- "url": "https://github.com/chalk/ansi-styles?sponsor=1" ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "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/jest-diff": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz", ++ "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "ansi-styles": "^4.1.0", +- "supports-color": "^7.1.0" ++ "@jest/diff-sequences": "30.0.1", ++ "@jest/get-type": "30.1.0", ++ "chalk": "^4.1.2", ++ "pretty-format": "30.2.0" + }, + "engines": { +- "node": ">=10" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/@jest/core/node_modules/jest-haste-map": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", ++ "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/types": "30.2.0", ++ "@types/node": "*", ++ "anymatch": "^3.1.3", ++ "fb-watchman": "^2.0.2", ++ "graceful-fs": "^4.2.11", ++ "jest-regex-util": "30.0.1", ++ "jest-util": "30.2.0", ++ "jest-worker": "30.2.0", ++ "micromatch": "^4.0.8", ++ "walker": "^1.0.8" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ }, ++ "optionalDependencies": { ++ "fsevents": "^2.3.3" ++ } ++ }, ++ "node_modules/@jest/core/node_modules/jest-matcher-utils": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz", ++ "integrity": "sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/get-type": "30.1.0", ++ "chalk": "^4.1.2", ++ "jest-diff": "30.2.0", ++ "pretty-format": "30.2.0" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/@jest/core/node_modules/jest-message-util": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", ++ "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@babel/code-frame": "^7.27.1", ++ "@jest/types": "30.2.0", ++ "@types/stack-utils": "^2.0.3", ++ "chalk": "^4.1.2", ++ "graceful-fs": "^4.2.11", ++ "micromatch": "^4.0.8", ++ "pretty-format": "30.2.0", ++ "slash": "^3.0.0", ++ "stack-utils": "^2.0.6" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/@jest/core/node_modules/jest-mock": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", ++ "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/types": "30.2.0", ++ "@types/node": "*", ++ "jest-util": "30.2.0" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/@jest/core/node_modules/jest-regex-util": { ++ "version": "30.0.1", ++ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", ++ "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", ++ "dev": true, ++ "license": "MIT", ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/@jest/core/node_modules/jest-snapshot": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.2.0.tgz", ++ "integrity": "sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@babel/core": "^7.27.4", ++ "@babel/generator": "^7.27.5", ++ "@babel/plugin-syntax-jsx": "^7.27.1", ++ "@babel/plugin-syntax-typescript": "^7.27.1", ++ "@babel/types": "^7.27.3", ++ "@jest/expect-utils": "30.2.0", ++ "@jest/get-type": "30.1.0", ++ "@jest/snapshot-utils": "30.2.0", ++ "@jest/transform": "30.2.0", ++ "@jest/types": "30.2.0", ++ "babel-preset-current-node-syntax": "^1.2.0", ++ "chalk": "^4.1.2", ++ "expect": "30.2.0", ++ "graceful-fs": "^4.2.11", ++ "jest-diff": "30.2.0", ++ "jest-matcher-utils": "30.2.0", ++ "jest-message-util": "30.2.0", ++ "jest-util": "30.2.0", ++ "pretty-format": "30.2.0", ++ "semver": "^7.7.2", ++ "synckit": "^0.11.8" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/@jest/core/node_modules/jest-util": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", ++ "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/types": "30.2.0", ++ "@types/node": "*", ++ "chalk": "^4.1.2", ++ "ci-info": "^4.2.0", ++ "graceful-fs": "^4.2.11", ++ "picomatch": "^4.0.2" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/@jest/core/node_modules/jest-util/node_modules/picomatch": { ++ "version": "4.0.3", ++ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", ++ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", ++ "dev": true, ++ "license": "MIT", ++ "engines": { ++ "node": ">=12" + }, + "funding": { +- "url": "https://github.com/chalk/chalk?sponsor=1" ++ "url": "https://github.com/sponsors/jonschlinkert" + } + }, +- "node_modules/@jest/core/node_modules/color-convert": { +- "version": "2.0.1", +- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", +- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", ++ "node_modules/@jest/core/node_modules/jest-worker": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", ++ "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "color-name": "~1.1.4" ++ "@types/node": "*", ++ "@ungap/structured-clone": "^1.3.0", ++ "jest-util": "30.2.0", ++ "merge-stream": "^2.0.0", ++ "supports-color": "^8.1.1" + }, + "engines": { +- "node": ">=7.0.0" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/@jest/core/node_modules/color-name": { +- "version": "1.1.4", +- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", +- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", +- "dev": true ++ "node_modules/@jest/core/node_modules/micromatch": { ++ "version": "4.0.8", ++ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", ++ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "braces": "^3.0.3", ++ "picomatch": "^2.3.1" ++ }, ++ "engines": { ++ "node": ">=8.6" ++ } + }, +- "node_modules/@jest/core/node_modules/has-flag": { +- "version": "4.0.0", +- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", +- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", ++ "node_modules/@jest/core/node_modules/pretty-format": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", ++ "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/schemas": "30.0.5", ++ "ansi-styles": "^5.2.0", ++ "react-is": "^18.3.1" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/@jest/core/node_modules/signal-exit": { ++ "version": "4.1.0", ++ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", ++ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, ++ "license": "ISC", + "engines": { +- "node": ">=8" ++ "node": ">=14" ++ }, ++ "funding": { ++ "url": "https://github.com/sponsors/isaacs" + } + }, + "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==", ++ "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/@jest/core/node_modules/type-fest": { +@@ -1073,6 +1551,7 @@ + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, ++ "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, +@@ -1080,6 +1559,30 @@ + "url": "https://github.com/sponsors/sindresorhus" + } + }, ++ "node_modules/@jest/core/node_modules/write-file-atomic": { ++ "version": "5.0.1", ++ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", ++ "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", ++ "dev": true, ++ "license": "ISC", ++ "dependencies": { ++ "imurmurhash": "^0.1.4", ++ "signal-exit": "^4.0.1" ++ }, ++ "engines": { ++ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" ++ } ++ }, ++ "node_modules/@jest/diff-sequences": { ++ "version": "30.0.1", ++ "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", ++ "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", ++ "dev": true, ++ "license": "MIT", ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", +@@ -1137,6 +1640,16 @@ + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, ++ "node_modules/@jest/get-type": { ++ "version": "30.1.0", ++ "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", ++ "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", ++ "dev": true, ++ "license": "MIT", ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", +@@ -1152,39 +1665,63 @@ + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, ++ "node_modules/@jest/pattern": { ++ "version": "30.0.1", ++ "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", ++ "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@types/node": "*", ++ "jest-regex-util": "30.0.1" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/@jest/pattern/node_modules/jest-regex-util": { ++ "version": "30.0.1", ++ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", ++ "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", ++ "dev": true, ++ "license": "MIT", ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, + "node_modules/@jest/reporters": { +- "version": "29.7.0", +- "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", +- "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.2.0.tgz", ++ "integrity": "sha512-DRyW6baWPqKMa9CzeiBjHwjd8XeAyco2Vt8XbcLFjiwCOEKOvy82GJ8QQnJE9ofsxCMPjH4MfH8fCWIHHDKpAQ==", + "dev": true, ++ "license": "MIT", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", +- "@jest/console": "^29.7.0", +- "@jest/test-result": "^29.7.0", +- "@jest/transform": "^29.7.0", +- "@jest/types": "^29.6.3", +- "@jridgewell/trace-mapping": "^0.3.18", ++ "@jest/console": "30.2.0", ++ "@jest/test-result": "30.2.0", ++ "@jest/transform": "30.2.0", ++ "@jest/types": "30.2.0", ++ "@jridgewell/trace-mapping": "^0.3.25", + "@types/node": "*", +- "chalk": "^4.0.0", +- "collect-v8-coverage": "^1.0.0", +- "exit": "^0.1.2", +- "glob": "^7.1.3", +- "graceful-fs": "^4.2.9", ++ "chalk": "^4.1.2", ++ "collect-v8-coverage": "^1.0.2", ++ "exit-x": "^0.2.2", ++ "glob": "^10.3.10", ++ "graceful-fs": "^4.2.11", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", +- "istanbul-lib-source-maps": "^4.0.0", ++ "istanbul-lib-source-maps": "^5.0.0", + "istanbul-reports": "^3.1.3", +- "jest-message-util": "^29.7.0", +- "jest-util": "^29.7.0", +- "jest-worker": "^29.7.0", ++ "jest-message-util": "30.2.0", ++ "jest-util": "30.2.0", ++ "jest-worker": "30.2.0", + "slash": "^3.0.0", +- "string-length": "^4.0.1", +- "strip-ansi": "^6.0.0", ++ "string-length": "^4.0.2", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { +- "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" +@@ -1195,405 +1732,830 @@ + } + } + }, +- "node_modules/@jest/reporters/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/reporters/node_modules/@jest/schemas": { ++ "version": "30.0.5", ++ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", ++ "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "color-convert": "^2.0.1" ++ "@sinclair/typebox": "^0.34.0" + }, + "engines": { +- "node": ">=8" +- }, +- "funding": { +- "url": "https://github.com/chalk/ansi-styles?sponsor=1" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/@jest/reporters/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/reporters/node_modules/@jest/transform": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", ++ "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "ansi-styles": "^4.1.0", +- "supports-color": "^7.1.0" ++ "@babel/core": "^7.27.4", ++ "@jest/types": "30.2.0", ++ "@jridgewell/trace-mapping": "^0.3.25", ++ "babel-plugin-istanbul": "^7.0.1", ++ "chalk": "^4.1.2", ++ "convert-source-map": "^2.0.0", ++ "fast-json-stable-stringify": "^2.1.0", ++ "graceful-fs": "^4.2.11", ++ "jest-haste-map": "30.2.0", ++ "jest-regex-util": "30.0.1", ++ "jest-util": "30.2.0", ++ "micromatch": "^4.0.8", ++ "pirates": "^4.0.7", ++ "slash": "^3.0.0", ++ "write-file-atomic": "^5.0.1" + }, + "engines": { +- "node": ">=10" +- }, +- "funding": { +- "url": "https://github.com/chalk/chalk?sponsor=1" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/@jest/reporters/node_modules/color-convert": { +- "version": "2.0.1", +- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", +- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", ++ "node_modules/@jest/reporters/node_modules/@jest/types": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", ++ "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "color-name": "~1.1.4" ++ "@jest/pattern": "30.0.1", ++ "@jest/schemas": "30.0.5", ++ "@types/istanbul-lib-coverage": "^2.0.6", ++ "@types/istanbul-reports": "^3.0.4", ++ "@types/node": "*", ++ "@types/yargs": "^17.0.33", ++ "chalk": "^4.1.2" + }, + "engines": { +- "node": ">=7.0.0" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/@jest/reporters/node_modules/color-name": { +- "version": "1.1.4", +- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", +- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", +- "dev": true +- }, +- "node_modules/@jest/reporters/node_modules/has-flag": { +- "version": "4.0.0", +- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", +- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", ++ "node_modules/@jest/reporters/node_modules/@sinclair/typebox": { ++ "version": "0.34.41", ++ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", ++ "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", + "dev": true, +- "engines": { +- "node": ">=8" +- } ++ "license": "MIT" + }, +- "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==", ++ "node_modules/@jest/reporters/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, +- "dependencies": { +- "has-flag": "^4.0.0" +- }, ++ "license": "MIT", + "engines": { +- "node": ">=8" ++ "node": ">=10" ++ }, ++ "funding": { ++ "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, +- "node_modules/@jest/schemas": { +- "version": "29.6.3", +- "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", +- "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", ++ "node_modules/@jest/reporters/node_modules/babel-plugin-istanbul": { ++ "version": "7.0.1", ++ "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", ++ "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", + "dev": true, ++ "license": "BSD-3-Clause", ++ "workspaces": [ ++ "test/babel-8" ++ ], + "dependencies": { +- "@sinclair/typebox": "^0.27.8" ++ "@babel/helper-plugin-utils": "^7.0.0", ++ "@istanbuljs/load-nyc-config": "^1.0.0", ++ "@istanbuljs/schema": "^0.1.3", ++ "istanbul-lib-instrument": "^6.0.2", ++ "test-exclude": "^6.0.0" + }, + "engines": { +- "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ "node": ">=12" + } + }, +- "node_modules/@jest/source-map": { +- "version": "29.6.3", +- "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", +- "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", ++ "node_modules/@jest/reporters/node_modules/brace-expansion": { ++ "version": "2.0.2", ++ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", ++ "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "@jridgewell/trace-mapping": "^0.3.18", +- "callsites": "^3.0.0", +- "graceful-fs": "^4.2.9" +- }, ++ "balanced-match": "^1.0.0" ++ } ++ }, ++ "node_modules/@jest/reporters/node_modules/ci-info": { ++ "version": "4.3.1", ++ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", ++ "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", ++ "dev": true, ++ "funding": [ ++ { ++ "type": "github", ++ "url": "https://github.com/sponsors/sibiraj-s" ++ } ++ ], ++ "license": "MIT", + "engines": { +- "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ "node": ">=8" + } + }, +- "node_modules/@jest/test-result": { +- "version": "29.7.0", +- "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", +- "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", ++ "node_modules/@jest/reporters/node_modules/glob": { ++ "version": "10.4.5", ++ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", ++ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, ++ "license": "ISC", + "dependencies": { +- "@jest/console": "^29.7.0", +- "@jest/types": "^29.6.3", +- "@types/istanbul-lib-coverage": "^2.0.0", +- "collect-v8-coverage": "^1.0.0" ++ "foreground-child": "^3.1.0", ++ "jackspeak": "^3.1.2", ++ "minimatch": "^9.0.4", ++ "minipass": "^7.1.2", ++ "package-json-from-dist": "^1.0.0", ++ "path-scurry": "^1.11.1" + }, +- "engines": { +- "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ "bin": { ++ "glob": "dist/esm/bin.mjs" ++ }, ++ "funding": { ++ "url": "https://github.com/sponsors/isaacs" + } + }, +- "node_modules/@jest/test-sequencer": { +- "version": "29.7.0", +- "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", +- "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", ++ "node_modules/@jest/reporters/node_modules/jest-haste-map": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", ++ "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "@jest/test-result": "^29.7.0", +- "graceful-fs": "^4.2.9", +- "jest-haste-map": "^29.7.0", +- "slash": "^3.0.0" ++ "@jest/types": "30.2.0", ++ "@types/node": "*", ++ "anymatch": "^3.1.3", ++ "fb-watchman": "^2.0.2", ++ "graceful-fs": "^4.2.11", ++ "jest-regex-util": "30.0.1", ++ "jest-util": "30.2.0", ++ "jest-worker": "30.2.0", ++ "micromatch": "^4.0.8", ++ "walker": "^1.0.8" + }, + "engines": { +- "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ }, ++ "optionalDependencies": { ++ "fsevents": "^2.3.3" + } + }, +- "node_modules/@jest/transform": { +- "version": "29.7.0", +- "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", +- "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", ++ "node_modules/@jest/reporters/node_modules/jest-message-util": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", ++ "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "@babel/core": "^7.11.6", +- "@jest/types": "^29.6.3", +- "@jridgewell/trace-mapping": "^0.3.18", +- "babel-plugin-istanbul": "^6.1.1", +- "chalk": "^4.0.0", +- "convert-source-map": "^2.0.0", +- "fast-json-stable-stringify": "^2.1.0", +- "graceful-fs": "^4.2.9", +- "jest-haste-map": "^29.7.0", +- "jest-regex-util": "^29.6.3", +- "jest-util": "^29.7.0", +- "micromatch": "^4.0.4", +- "pirates": "^4.0.4", ++ "@babel/code-frame": "^7.27.1", ++ "@jest/types": "30.2.0", ++ "@types/stack-utils": "^2.0.3", ++ "chalk": "^4.1.2", ++ "graceful-fs": "^4.2.11", ++ "micromatch": "^4.0.8", ++ "pretty-format": "30.2.0", + "slash": "^3.0.0", +- "write-file-atomic": "^4.0.2" ++ "stack-utils": "^2.0.6" + }, + "engines": { +- "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/@jest/transform/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/reporters/node_modules/jest-regex-util": { ++ "version": "30.0.1", ++ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", ++ "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "dev": true, +- "dependencies": { +- "color-convert": "^2.0.1" +- }, ++ "license": "MIT", + "engines": { +- "node": ">=8" +- }, +- "funding": { +- "url": "https://github.com/chalk/ansi-styles?sponsor=1" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/@jest/transform/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/reporters/node_modules/jest-util": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", ++ "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "ansi-styles": "^4.1.0", +- "supports-color": "^7.1.0" ++ "@jest/types": "30.2.0", ++ "@types/node": "*", ++ "chalk": "^4.1.2", ++ "ci-info": "^4.2.0", ++ "graceful-fs": "^4.2.11", ++ "picomatch": "^4.0.2" + }, + "engines": { +- "node": ">=10" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/@jest/reporters/node_modules/jest-util/node_modules/picomatch": { ++ "version": "4.0.3", ++ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", ++ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", ++ "dev": true, ++ "license": "MIT", ++ "engines": { ++ "node": ">=12" + }, + "funding": { +- "url": "https://github.com/chalk/chalk?sponsor=1" ++ "url": "https://github.com/sponsors/jonschlinkert" + } + }, +- "node_modules/@jest/transform/node_modules/color-convert": { +- "version": "2.0.1", +- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", +- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", ++ "node_modules/@jest/reporters/node_modules/jest-worker": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", ++ "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "color-name": "~1.1.4" ++ "@types/node": "*", ++ "@ungap/structured-clone": "^1.3.0", ++ "jest-util": "30.2.0", ++ "merge-stream": "^2.0.0", ++ "supports-color": "^8.1.1" + }, + "engines": { +- "node": ">=7.0.0" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/@jest/transform/node_modules/color-name": { +- "version": "1.1.4", +- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", +- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", +- "dev": true +- }, +- "node_modules/@jest/transform/node_modules/convert-source-map": { +- "version": "2.0.0", +- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", +- "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", +- "dev": true +- }, +- "node_modules/@jest/transform/node_modules/has-flag": { +- "version": "4.0.0", +- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", +- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", ++ "node_modules/@jest/reporters/node_modules/micromatch": { ++ "version": "4.0.8", ++ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", ++ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "braces": "^3.0.3", ++ "picomatch": "^2.3.1" ++ }, + "engines": { +- "node": ">=8" ++ "node": ">=8.6" + } + }, +- "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==", ++ "node_modules/@jest/reporters/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": { +- "has-flag": "^4.0.0" ++ "brace-expansion": "^2.0.1" + }, + "engines": { +- "node": ">=8" ++ "node": ">=16 || 14 >=14.17" ++ }, ++ "funding": { ++ "url": "https://github.com/sponsors/isaacs" + } + }, +- "node_modules/@jest/types": { +- "version": "29.6.3", +- "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", +- "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", ++ "node_modules/@jest/reporters/node_modules/pretty-format": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", ++ "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "@jest/schemas": "^29.6.3", +- "@types/istanbul-lib-coverage": "^2.0.0", +- "@types/istanbul-reports": "^3.0.0", +- "@types/node": "*", +- "@types/yargs": "^17.0.8", +- "chalk": "^4.0.0" ++ "@jest/schemas": "30.0.5", ++ "ansi-styles": "^5.2.0", ++ "react-is": "^18.3.1" + }, + "engines": { +- "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/@jest/types/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/reporters/node_modules/signal-exit": { ++ "version": "4.1.0", ++ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", ++ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, +- "dependencies": { +- "color-convert": "^2.0.1" +- }, ++ "license": "ISC", + "engines": { +- "node": ">=8" ++ "node": ">=14" + }, + "funding": { +- "url": "https://github.com/chalk/ansi-styles?sponsor=1" ++ "url": "https://github.com/sponsors/isaacs" + } + }, +- "node_modules/@jest/types/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/reporters/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": { +- "ansi-styles": "^4.1.0", +- "supports-color": "^7.1.0" ++ "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { +- "url": "https://github.com/chalk/chalk?sponsor=1" ++ "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, +- "node_modules/@jest/types/node_modules/color-convert": { +- "version": "2.0.1", +- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", +- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", ++ "node_modules/@jest/reporters/node_modules/write-file-atomic": { ++ "version": "5.0.1", ++ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", ++ "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dev": true, ++ "license": "ISC", + "dependencies": { +- "color-name": "~1.1.4" ++ "imurmurhash": "^0.1.4", ++ "signal-exit": "^4.0.1" + }, + "engines": { +- "node": ">=7.0.0" ++ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, +- "node_modules/@jest/types/node_modules/color-name": { +- "version": "1.1.4", +- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", +- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", +- "dev": true +- }, +- "node_modules/@jest/types/node_modules/has-flag": { +- "version": "4.0.0", +- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", +- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", ++ "node_modules/@jest/schemas": { ++ "version": "29.6.3", ++ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", ++ "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, ++ "dependencies": { ++ "@sinclair/typebox": "^0.27.8" ++ }, + "engines": { +- "node": ">=8" ++ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, +- "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==", ++ "node_modules/@jest/snapshot-utils": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.2.0.tgz", ++ "integrity": "sha512-0aVxM3RH6DaiLcjj/b0KrIBZhSX1373Xci4l3cW5xiUWPctZ59zQ7jj4rqcJQ/Z8JuN/4wX3FpJSa3RssVvCug==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "has-flag": "^4.0.0" ++ "@jest/types": "30.2.0", ++ "chalk": "^4.1.2", ++ "graceful-fs": "^4.2.11", ++ "natural-compare": "^1.4.0" + }, + "engines": { +- "node": ">=8" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/@jridgewell/gen-mapping": { +- "version": "0.3.3", +- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", +- "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", ++ "node_modules/@jest/snapshot-utils/node_modules/@jest/schemas": { ++ "version": "30.0.5", ++ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", ++ "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "@jridgewell/set-array": "^1.0.1", +- "@jridgewell/sourcemap-codec": "^1.4.10", +- "@jridgewell/trace-mapping": "^0.3.9" ++ "@sinclair/typebox": "^0.34.0" + }, + "engines": { +- "node": ">=6.0.0" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/@jridgewell/resolve-uri": { +- "version": "3.1.1", +- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", +- "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", ++ "node_modules/@jest/snapshot-utils/node_modules/@jest/types": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", ++ "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/pattern": "30.0.1", ++ "@jest/schemas": "30.0.5", ++ "@types/istanbul-lib-coverage": "^2.0.6", ++ "@types/istanbul-reports": "^3.0.4", ++ "@types/node": "*", ++ "@types/yargs": "^17.0.33", ++ "chalk": "^4.1.2" ++ }, + "engines": { +- "node": ">=6.0.0" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/@jridgewell/set-array": { +- "version": "1.1.2", +- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", +- "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", ++ "node_modules/@jest/snapshot-utils/node_modules/@sinclair/typebox": { ++ "version": "0.34.41", ++ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", ++ "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", + "dev": true, +- "engines": { +- "node": ">=6.0.0" +- } +- }, +- "node_modules/@jridgewell/sourcemap-codec": { +- "version": "1.4.15", +- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", +- "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", +- "dev": true ++ "license": "MIT" + }, +- "node_modules/@jridgewell/trace-mapping": { +- "version": "0.3.19", +- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", +- "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", ++ "node_modules/@jest/source-map": { ++ "version": "30.0.1", ++ "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz", ++ "integrity": "sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "@jridgewell/resolve-uri": "^3.1.0", +- "@jridgewell/sourcemap-codec": "^1.4.14" ++ "@jridgewell/trace-mapping": "^0.3.25", ++ "callsites": "^3.1.0", ++ "graceful-fs": "^4.2.11" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/@nodelib/fs.scandir": { +- "version": "2.1.5", +- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", +- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", ++ "node_modules/@jest/test-result": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.2.0.tgz", ++ "integrity": "sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "@nodelib/fs.stat": "2.0.5", +- "run-parallel": "^1.1.9" ++ "@jest/console": "30.2.0", ++ "@jest/types": "30.2.0", ++ "@types/istanbul-lib-coverage": "^2.0.6", ++ "collect-v8-coverage": "^1.0.2" + }, + "engines": { +- "node": ">= 8" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/@nodelib/fs.stat": { +- "version": "2.0.5", +- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", +- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", ++ "node_modules/@jest/test-result/node_modules/@jest/schemas": { ++ "version": "30.0.5", ++ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", ++ "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@sinclair/typebox": "^0.34.0" ++ }, + "engines": { +- "node": ">= 8" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/@nodelib/fs.walk": { +- "version": "1.2.8", +- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", +- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", ++ "node_modules/@jest/test-result/node_modules/@jest/types": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", ++ "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "@nodelib/fs.scandir": "2.1.5", +- "fastq": "^1.6.0" ++ "@jest/pattern": "30.0.1", ++ "@jest/schemas": "30.0.5", ++ "@types/istanbul-lib-coverage": "^2.0.6", ++ "@types/istanbul-reports": "^3.0.4", ++ "@types/node": "*", ++ "@types/yargs": "^17.0.33", ++ "chalk": "^4.1.2" + }, + "engines": { +- "node": ">= 8" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/@remix-run/router": { ++ "node_modules/@jest/test-result/node_modules/@sinclair/typebox": { ++ "version": "0.34.41", ++ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", ++ "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", ++ "dev": true, ++ "license": "MIT" ++ }, ++ "node_modules/@jest/test-sequencer": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.2.0.tgz", ++ "integrity": "sha512-wXKgU/lk8fKXMu/l5Hog1R61bL4q5GCdT6OJvdAFz1P+QrpoFuLU68eoKuVc4RbrTtNnTL5FByhWdLgOPSph+Q==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/test-result": "30.2.0", ++ "graceful-fs": "^4.2.11", ++ "jest-haste-map": "30.2.0", ++ "slash": "^3.0.0" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/@jest/test-sequencer/node_modules/@jest/schemas": { ++ "version": "30.0.5", ++ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", ++ "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@sinclair/typebox": "^0.34.0" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/@jest/test-sequencer/node_modules/@jest/types": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", ++ "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/pattern": "30.0.1", ++ "@jest/schemas": "30.0.5", ++ "@types/istanbul-lib-coverage": "^2.0.6", ++ "@types/istanbul-reports": "^3.0.4", ++ "@types/node": "*", ++ "@types/yargs": "^17.0.33", ++ "chalk": "^4.1.2" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/@jest/test-sequencer/node_modules/@sinclair/typebox": { ++ "version": "0.34.41", ++ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", ++ "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", ++ "dev": true, ++ "license": "MIT" ++ }, ++ "node_modules/@jest/test-sequencer/node_modules/ci-info": { ++ "version": "4.3.1", ++ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", ++ "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", ++ "dev": true, ++ "funding": [ ++ { ++ "type": "github", ++ "url": "https://github.com/sponsors/sibiraj-s" ++ } ++ ], ++ "license": "MIT", ++ "engines": { ++ "node": ">=8" ++ } ++ }, ++ "node_modules/@jest/test-sequencer/node_modules/jest-haste-map": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", ++ "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/types": "30.2.0", ++ "@types/node": "*", ++ "anymatch": "^3.1.3", ++ "fb-watchman": "^2.0.2", ++ "graceful-fs": "^4.2.11", ++ "jest-regex-util": "30.0.1", ++ "jest-util": "30.2.0", ++ "jest-worker": "30.2.0", ++ "micromatch": "^4.0.8", ++ "walker": "^1.0.8" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ }, ++ "optionalDependencies": { ++ "fsevents": "^2.3.3" ++ } ++ }, ++ "node_modules/@jest/test-sequencer/node_modules/jest-regex-util": { ++ "version": "30.0.1", ++ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", ++ "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", ++ "dev": true, ++ "license": "MIT", ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/@jest/test-sequencer/node_modules/jest-util": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", ++ "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/types": "30.2.0", ++ "@types/node": "*", ++ "chalk": "^4.1.2", ++ "ci-info": "^4.2.0", ++ "graceful-fs": "^4.2.11", ++ "picomatch": "^4.0.2" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/@jest/test-sequencer/node_modules/jest-util/node_modules/picomatch": { ++ "version": "4.0.3", ++ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", ++ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", ++ "dev": true, ++ "license": "MIT", ++ "engines": { ++ "node": ">=12" ++ }, ++ "funding": { ++ "url": "https://github.com/sponsors/jonschlinkert" ++ } ++ }, ++ "node_modules/@jest/test-sequencer/node_modules/jest-worker": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", ++ "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@types/node": "*", ++ "@ungap/structured-clone": "^1.3.0", ++ "jest-util": "30.2.0", ++ "merge-stream": "^2.0.0", ++ "supports-color": "^8.1.1" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/@jest/test-sequencer/node_modules/micromatch": { ++ "version": "4.0.8", ++ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", ++ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "braces": "^3.0.3", ++ "picomatch": "^2.3.1" ++ }, ++ "engines": { ++ "node": ">=8.6" ++ } ++ }, ++ "node_modules/@jest/test-sequencer/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/@jest/transform": { ++ "version": "29.7.0", ++ "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", ++ "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", ++ "dev": true, ++ "dependencies": { ++ "@babel/core": "^7.11.6", ++ "@jest/types": "^29.6.3", ++ "@jridgewell/trace-mapping": "^0.3.18", ++ "babel-plugin-istanbul": "^6.1.1", ++ "chalk": "^4.0.0", ++ "convert-source-map": "^2.0.0", ++ "fast-json-stable-stringify": "^2.1.0", ++ "graceful-fs": "^4.2.9", ++ "jest-haste-map": "^29.7.0", ++ "jest-regex-util": "^29.6.3", ++ "jest-util": "^29.7.0", ++ "micromatch": "^4.0.4", ++ "pirates": "^4.0.4", ++ "slash": "^3.0.0", ++ "write-file-atomic": "^4.0.2" ++ }, ++ "engines": { ++ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ } ++ }, ++ "node_modules/@jest/types": { ++ "version": "29.6.3", ++ "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", ++ "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", ++ "dev": true, ++ "dependencies": { ++ "@jest/schemas": "^29.6.3", ++ "@types/istanbul-lib-coverage": "^2.0.0", ++ "@types/istanbul-reports": "^3.0.0", ++ "@types/node": "*", ++ "@types/yargs": "^17.0.8", ++ "chalk": "^4.0.0" ++ }, ++ "engines": { ++ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ } ++ }, ++ "node_modules/@jridgewell/gen-mapping": { ++ "version": "0.3.13", ++ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", ++ "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jridgewell/sourcemap-codec": "^1.5.0", ++ "@jridgewell/trace-mapping": "^0.3.24" ++ } ++ }, ++ "node_modules/@jridgewell/remapping": { ++ "version": "2.3.5", ++ "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", ++ "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jridgewell/gen-mapping": "^0.3.5", ++ "@jridgewell/trace-mapping": "^0.3.24" ++ } ++ }, ++ "node_modules/@jridgewell/resolve-uri": { ++ "version": "3.1.1", ++ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", ++ "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", ++ "dev": true, ++ "engines": { ++ "node": ">=6.0.0" ++ } ++ }, ++ "node_modules/@jridgewell/sourcemap-codec": { ++ "version": "1.5.5", ++ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", ++ "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", ++ "dev": true, ++ "license": "MIT" ++ }, ++ "node_modules/@jridgewell/trace-mapping": { ++ "version": "0.3.31", ++ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", ++ "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jridgewell/resolve-uri": "^3.1.0", ++ "@jridgewell/sourcemap-codec": "^1.4.14" ++ } ++ }, ++ "node_modules/@napi-rs/wasm-runtime": { ++ "version": "0.2.12", ++ "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", ++ "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", ++ "dev": true, ++ "license": "MIT", ++ "optional": true, ++ "dependencies": { ++ "@emnapi/core": "^1.4.3", ++ "@emnapi/runtime": "^1.4.3", ++ "@tybys/wasm-util": "^0.10.0" ++ } ++ }, ++ "node_modules/@nodelib/fs.scandir": { ++ "version": "2.1.5", ++ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", ++ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", ++ "dev": true, ++ "dependencies": { ++ "@nodelib/fs.stat": "2.0.5", ++ "run-parallel": "^1.1.9" ++ }, ++ "engines": { ++ "node": ">= 8" ++ } ++ }, ++ "node_modules/@nodelib/fs.stat": { ++ "version": "2.0.5", ++ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", ++ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", ++ "dev": true, ++ "engines": { ++ "node": ">= 8" ++ } ++ }, ++ "node_modules/@nodelib/fs.walk": { ++ "version": "1.2.8", ++ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", ++ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", ++ "dev": true, ++ "dependencies": { ++ "@nodelib/fs.scandir": "2.1.5", ++ "fastq": "^1.6.0" ++ }, ++ "engines": { ++ "node": ">= 8" ++ } ++ }, ++ "node_modules/@pkgjs/parseargs": { ++ "version": "0.11.0", ++ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", ++ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", ++ "dev": true, ++ "license": "MIT", ++ "optional": true, ++ "engines": { ++ "node": ">=14" ++ } ++ }, ++ "node_modules/@pkgr/core": { ++ "version": "0.2.9", ++ "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", ++ "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", ++ "dev": true, ++ "license": "MIT", ++ "engines": { ++ "node": "^12.20.0 || ^14.18.0 || >=16.0.0" ++ }, ++ "funding": { ++ "url": "https://opencollective.com/pkgr" ++ } ++ }, ++ "node_modules/@remix-run/router": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.9.0.tgz", + "integrity": "sha512-bV63itrKBC0zdT27qYm6SDZHlkXwFL1xMBuhkn+X7l0+IIhNaH5wuuvZKp6eKhCD4KFhujhfhCT1YxXW6esUIA==", +@@ -1608,10 +2570,11 @@ + "dev": true + }, + "node_modules/@sinonjs/commons": { +- "version": "3.0.0", +- "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", +- "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", ++ "version": "3.0.1", ++ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", ++ "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, ++ "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } +@@ -1685,100 +2648,43 @@ + "dev": true + }, + "node_modules/@testing-library/dom": { +- "version": "9.3.3", +- "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.3.tgz", +- "integrity": "sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw==", ++ "version": "10.4.1", ++ "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz", ++ "integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==", + "dev": true, ++ "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", +- "aria-query": "5.1.3", +- "chalk": "^4.1.0", ++ "aria-query": "5.3.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", ++ "picocolors": "1.1.1", + "pretty-format": "^27.0.2" + }, + "engines": { +- "node": ">=14" ++ "node": ">=18" + } + }, +- "node_modules/@testing-library/dom/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/@testing-library/dom/node_modules/pretty-format": { ++ "version": "27.5.1", ++ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", ++ "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { +- "color-convert": "^2.0.1" ++ "ansi-regex": "^5.0.1", ++ "ansi-styles": "^5.0.0", ++ "react-is": "^17.0.1" + }, + "engines": { +- "node": ">=8" +- }, +- "funding": { +- "url": "https://github.com/chalk/ansi-styles?sponsor=1" ++ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, +- "node_modules/@testing-library/dom/node_modules/chalk": { +- "version": "4.1.2", +- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", +- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", +- "dev": true, +- "dependencies": { +- "ansi-styles": "^4.1.0", +- "supports-color": "^7.1.0" +- }, +- "engines": { +- "node": ">=10" +- }, +- "funding": { +- "url": "https://github.com/chalk/chalk?sponsor=1" +- } +- }, +- "node_modules/@testing-library/dom/node_modules/color-convert": { +- "version": "2.0.1", +- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", +- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", +- "dev": true, +- "dependencies": { +- "color-name": "~1.1.4" +- }, +- "engines": { +- "node": ">=7.0.0" +- } +- }, +- "node_modules/@testing-library/dom/node_modules/color-name": { +- "version": "1.1.4", +- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", +- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", +- "dev": true +- }, +- "node_modules/@testing-library/dom/node_modules/has-flag": { +- "version": "4.0.0", +- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", +- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", +- "dev": true, +- "engines": { +- "node": ">=8" +- } +- }, +- "node_modules/@testing-library/dom/node_modules/pretty-format": { +- "version": "27.5.1", +- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", +- "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", +- "dev": true, +- "dependencies": { +- "ansi-regex": "^5.0.1", +- "ansi-styles": "^5.0.0", +- "react-is": "^17.0.1" +- }, +- "engines": { +- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" +- } +- }, +- "node_modules/@testing-library/dom/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==", ++ "node_modules/@testing-library/dom/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, + "engines": { + "node": ">=10" +@@ -1793,142 +2699,59 @@ + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, +- "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, +- "dependencies": { +- "has-flag": "^4.0.0" +- }, +- "engines": { +- "node": ">=8" +- } +- }, + "node_modules/@testing-library/jest-dom": { +- "version": "6.1.3", +- "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.1.3.tgz", +- "integrity": "sha512-YzpjRHoCBWPzpPNtg6gnhasqtE/5O4qz8WCwDEaxtfnPO6gkaLrnuXusrGSPyhIGPezr1HM7ZH0CFaUTY9PJEQ==", ++ "version": "6.9.1", ++ "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.9.1.tgz", ++ "integrity": "sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "@adobe/css-tools": "^4.3.0", +- "@babel/runtime": "^7.9.2", ++ "@adobe/css-tools": "^4.4.0", + "aria-query": "^5.0.0", +- "chalk": "^3.0.0", + "css.escape": "^1.5.1", +- "dom-accessibility-api": "^0.5.6", +- "lodash": "^4.17.15", ++ "dom-accessibility-api": "^0.6.3", ++ "picocolors": "^1.1.1", + "redent": "^3.0.0" + }, + "engines": { + "node": ">=14", + "npm": ">=6", + "yarn": ">=1" +- }, +- "peerDependencies": { +- "@jest/globals": ">= 28", +- "@types/jest": ">= 28", +- "jest": ">= 28", +- "vitest": ">= 0.32" +- }, +- "peerDependenciesMeta": { +- "@jest/globals": { +- "optional": true +- }, +- "@types/jest": { +- "optional": true +- }, +- "jest": { +- "optional": true +- }, +- "vitest": { +- "optional": true +- } +- } +- }, +- "node_modules/@testing-library/jest-dom/node_modules/ansi-styles": { +- "version": "4.3.0", +- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", +- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", +- "dev": true, +- "dependencies": { +- "color-convert": "^2.0.1" +- }, +- "engines": { +- "node": ">=8" +- }, +- "funding": { +- "url": "https://github.com/chalk/ansi-styles?sponsor=1" +- } +- }, +- "node_modules/@testing-library/jest-dom/node_modules/chalk": { +- "version": "3.0.0", +- "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", +- "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", +- "dev": true, +- "dependencies": { +- "ansi-styles": "^4.1.0", +- "supports-color": "^7.1.0" +- }, +- "engines": { +- "node": ">=8" + } + }, +- "node_modules/@testing-library/jest-dom/node_modules/color-convert": { +- "version": "2.0.1", +- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", +- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", +- "dev": true, +- "dependencies": { +- "color-name": "~1.1.4" +- }, +- "engines": { +- "node": ">=7.0.0" +- } +- }, +- "node_modules/@testing-library/jest-dom/node_modules/color-name": { +- "version": "1.1.4", +- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", +- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", +- "dev": true +- }, +- "node_modules/@testing-library/jest-dom/node_modules/has-flag": { +- "version": "4.0.0", +- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", +- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", +- "dev": true, +- "engines": { +- "node": ">=8" +- } +- }, +- "node_modules/@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==", ++ "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { ++ "version": "0.6.3", ++ "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", ++ "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", + "dev": true, +- "dependencies": { +- "has-flag": "^4.0.0" +- }, +- "engines": { +- "node": ">=8" +- } ++ "license": "MIT" + }, + "node_modules/@testing-library/react": { +- "version": "14.0.0", +- "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-14.0.0.tgz", +- "integrity": "sha512-S04gSNJbYE30TlIMLTzv6QCTzt9AqIF5y6s6SzVFILNcNvbV/jU96GeiTPillGQo+Ny64M/5PV7klNYYgv5Dfg==", ++ "version": "16.3.0", ++ "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.3.0.tgz", ++ "integrity": "sha512-kFSyxiEDwv1WLl2fgsq6pPBbw5aWKrsY2/noi1Id0TK0UParSF62oFQFGHXIyaG4pp2tEub/Zlel+fjjZILDsw==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "@babel/runtime": "^7.12.5", +- "@testing-library/dom": "^9.0.0", +- "@types/react-dom": "^18.0.0" ++ "@babel/runtime": "^7.12.5" + }, + "engines": { +- "node": ">=14" ++ "node": ">=18" + }, + "peerDependencies": { +- "react": "^18.0.0", +- "react-dom": "^18.0.0" ++ "@testing-library/dom": "^10.0.0", ++ "@types/react": "^18.0.0 || ^19.0.0", ++ "@types/react-dom": "^18.0.0 || ^19.0.0", ++ "react": "^18.0.0 || ^19.0.0", ++ "react-dom": "^18.0.0 || ^19.0.0" ++ }, ++ "peerDependenciesMeta": { ++ "@types/react": { ++ "optional": true ++ }, ++ "@types/react-dom": { ++ "optional": true ++ } + } + }, + "node_modules/@tootallnate/once": { +@@ -1940,6 +2763,17 @@ + "node": ">= 10" + } + }, ++ "node_modules/@tybys/wasm-util": { ++ "version": "0.10.1", ++ "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", ++ "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", ++ "dev": true, ++ "license": "MIT", ++ "optional": true, ++ "dependencies": { ++ "tslib": "^2.4.0" ++ } ++ }, + "node_modules/@types/aria-query": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.1.tgz", +@@ -1947,10 +2781,11 @@ + "dev": true + }, + "node_modules/@types/babel__core": { +- "version": "7.20.2", +- "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.2.tgz", +- "integrity": "sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==", ++ "version": "7.20.5", ++ "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", ++ "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, ++ "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", +@@ -1960,31 +2795,34 @@ + } + }, + "node_modules/@types/babel__generator": { +- "version": "7.6.5", +- "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.5.tgz", +- "integrity": "sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==", ++ "version": "7.27.0", ++ "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", ++ "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, ++ "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { +- "version": "7.4.2", +- "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.2.tgz", +- "integrity": "sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==", ++ "version": "7.4.4", ++ "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", ++ "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, ++ "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { +- "version": "7.20.2", +- "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.2.tgz", +- "integrity": "sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==", ++ "version": "7.28.0", ++ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", ++ "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "@babel/types": "^7.20.7" ++ "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/graceful-fs": { +@@ -1997,10 +2835,11 @@ + } + }, + "node_modules/@types/istanbul-lib-coverage": { +- "version": "2.0.4", +- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", +- "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", +- "dev": true ++ "version": "2.0.6", ++ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", ++ "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", ++ "dev": true, ++ "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", +@@ -2012,106 +2851,347 @@ + } + }, + "node_modules/@types/istanbul-reports": { +- "version": "3.0.1", +- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", +- "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", ++ "version": "3.0.4", ++ "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", ++ "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, ++ "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, +- "node_modules/@types/jsdom": { +- "version": "20.0.1", +- "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", +- "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", ++ "node_modules/@types/jest": { ++ "version": "30.0.0", ++ "resolved": "https://registry.npmjs.org/@types/jest/-/jest-30.0.0.tgz", ++ "integrity": "sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "@types/node": "*", +- "@types/tough-cookie": "*", +- "parse5": "^7.0.0" ++ "expect": "^30.0.0", ++ "pretty-format": "^30.0.0" + } + }, +- "node_modules/@types/json-schema": { +- "version": "7.0.13", +- "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz", +- "integrity": "sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==", +- "dev": true +- }, +- "node_modules/@types/node": { +- "version": "18.17.17", +- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.17.tgz", +- "integrity": "sha512-cOxcXsQ2sxiwkykdJqvyFS+MLQPLvIdwh5l6gNg8qF6s+C7XSkEWOZjK+XhUZd+mYvHV/180g2cnCcIl4l06Pw==", +- "dev": true +- }, +- "node_modules/@types/prop-types": { +- "version": "15.7.5", +- "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", +- "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", +- "dev": true ++ "node_modules/@types/jest/node_modules/@jest/expect-utils": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz", ++ "integrity": "sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/get-type": "30.1.0" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } + }, +- "node_modules/@types/react": { +- "version": "18.2.21", +- "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.21.tgz", +- "integrity": "sha512-neFKG/sBAwGxHgXiIxnbm3/AAVQ/cMRS93hvBpg8xYRbeQSPVABp9U2bRnPf0iI4+Ucdv3plSxKK+3CW2ENJxA==", ++ "node_modules/@types/jest/node_modules/@jest/schemas": { ++ "version": "30.0.5", ++ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", ++ "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "@types/prop-types": "*", +- "@types/scheduler": "*", +- "csstype": "^3.0.2" ++ "@sinclair/typebox": "^0.34.0" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/@types/react-dom": { +- "version": "18.2.7", +- "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.7.tgz", +- "integrity": "sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==", ++ "node_modules/@types/jest/node_modules/@jest/types": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", ++ "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "@types/react": "*" ++ "@jest/pattern": "30.0.1", ++ "@jest/schemas": "30.0.5", ++ "@types/istanbul-lib-coverage": "^2.0.6", ++ "@types/istanbul-reports": "^3.0.4", ++ "@types/node": "*", ++ "@types/yargs": "^17.0.33", ++ "chalk": "^4.1.2" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/@types/scheduler": { +- "version": "0.16.3", +- "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", +- "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", +- "dev": true ++ "node_modules/@types/jest/node_modules/@sinclair/typebox": { ++ "version": "0.34.41", ++ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", ++ "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", ++ "dev": true, ++ "license": "MIT" + }, +- "node_modules/@types/semver": { +- "version": "7.5.2", +- "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.2.tgz", +- "integrity": "sha512-7aqorHYgdNO4DM36stTiGO3DvKoex9TQRwsJU6vMaFGyqpBA1MNZkz+PG3gaNUPpTAOYhT1WR7M1JyA3fbS9Cw==", +- "dev": true ++ "node_modules/@types/jest/node_modules/ci-info": { ++ "version": "4.3.1", ++ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", ++ "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", ++ "dev": true, ++ "funding": [ ++ { ++ "type": "github", ++ "url": "https://github.com/sponsors/sibiraj-s" ++ } ++ ], ++ "license": "MIT", ++ "engines": { ++ "node": ">=8" ++ } + }, +- "node_modules/@types/stack-utils": { +- "version": "2.0.1", +- "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", +- "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", +- "dev": true ++ "node_modules/@types/jest/node_modules/expect": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", ++ "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/expect-utils": "30.2.0", ++ "@jest/get-type": "30.1.0", ++ "jest-matcher-utils": "30.2.0", ++ "jest-message-util": "30.2.0", ++ "jest-mock": "30.2.0", ++ "jest-util": "30.2.0" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } + }, +- "node_modules/@types/tough-cookie": { +- "version": "4.0.3", +- "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.3.tgz", +- "integrity": "sha512-THo502dA5PzG/sfQH+42Lw3fvmYkceefOspdCwpHRul8ik2Jv1K8I5OZz1AT3/rs46kwgMCe9bSBmDLYkkOMGg==", +- "dev": true ++ "node_modules/@types/jest/node_modules/jest-diff": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz", ++ "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/diff-sequences": "30.0.1", ++ "@jest/get-type": "30.1.0", ++ "chalk": "^4.1.2", ++ "pretty-format": "30.2.0" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } + }, +- "node_modules/@types/yargs": { +- "version": "17.0.24", +- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", +- "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", ++ "node_modules/@types/jest/node_modules/jest-matcher-utils": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz", ++ "integrity": "sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "@types/yargs-parser": "*" ++ "@jest/get-type": "30.1.0", ++ "chalk": "^4.1.2", ++ "jest-diff": "30.2.0", ++ "pretty-format": "30.2.0" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/@types/yargs-parser": { +- "version": "21.0.0", +- "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", +- "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", +- "dev": true ++ "node_modules/@types/jest/node_modules/jest-message-util": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", ++ "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@babel/code-frame": "^7.27.1", ++ "@jest/types": "30.2.0", ++ "@types/stack-utils": "^2.0.3", ++ "chalk": "^4.1.2", ++ "graceful-fs": "^4.2.11", ++ "micromatch": "^4.0.8", ++ "pretty-format": "30.2.0", ++ "slash": "^3.0.0", ++ "stack-utils": "^2.0.6" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } + }, +- "node_modules/@typescript-eslint/eslint-plugin": { +- "version": "6.7.0", +- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.0.tgz", +- "integrity": "sha512-gUqtknHm0TDs1LhY12K2NA3Rmlmp88jK9Tx8vGZMfHeNMLE3GH2e9TRub+y+SOjuYgtOmok+wt1AyDPZqxbNag==", ++ "node_modules/@types/jest/node_modules/jest-mock": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", ++ "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/types": "30.2.0", ++ "@types/node": "*", ++ "jest-util": "30.2.0" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/@types/jest/node_modules/jest-util": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", ++ "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/types": "30.2.0", ++ "@types/node": "*", ++ "chalk": "^4.1.2", ++ "ci-info": "^4.2.0", ++ "graceful-fs": "^4.2.11", ++ "picomatch": "^4.0.2" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/@types/jest/node_modules/jest-util/node_modules/picomatch": { ++ "version": "4.0.3", ++ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", ++ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", ++ "dev": true, ++ "license": "MIT", ++ "engines": { ++ "node": ">=12" ++ }, ++ "funding": { ++ "url": "https://github.com/sponsors/jonschlinkert" ++ } ++ }, ++ "node_modules/@types/jest/node_modules/micromatch": { ++ "version": "4.0.8", ++ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", ++ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "braces": "^3.0.3", ++ "picomatch": "^2.3.1" ++ }, ++ "engines": { ++ "node": ">=8.6" ++ } ++ }, ++ "node_modules/@types/jest/node_modules/pretty-format": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", ++ "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/schemas": "30.0.5", ++ "ansi-styles": "^5.2.0", ++ "react-is": "^18.3.1" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/@types/jest/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/@types/jsdom": { ++ "version": "20.0.1", ++ "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", ++ "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", ++ "dev": true, ++ "dependencies": { ++ "@types/node": "*", ++ "@types/tough-cookie": "*", ++ "parse5": "^7.0.0" ++ } ++ }, ++ "node_modules/@types/json-schema": { ++ "version": "7.0.13", ++ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz", ++ "integrity": "sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==", ++ "dev": true ++ }, ++ "node_modules/@types/node": { ++ "version": "18.17.17", ++ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.17.tgz", ++ "integrity": "sha512-cOxcXsQ2sxiwkykdJqvyFS+MLQPLvIdwh5l6gNg8qF6s+C7XSkEWOZjK+XhUZd+mYvHV/180g2cnCcIl4l06Pw==", ++ "dev": true ++ }, ++ "node_modules/@types/prop-types": { ++ "version": "15.7.5", ++ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", ++ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", ++ "dev": true ++ }, ++ "node_modules/@types/react": { ++ "version": "18.2.21", ++ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.21.tgz", ++ "integrity": "sha512-neFKG/sBAwGxHgXiIxnbm3/AAVQ/cMRS93hvBpg8xYRbeQSPVABp9U2bRnPf0iI4+Ucdv3plSxKK+3CW2ENJxA==", ++ "dev": true, ++ "dependencies": { ++ "@types/prop-types": "*", ++ "@types/scheduler": "*", ++ "csstype": "^3.0.2" ++ } ++ }, ++ "node_modules/@types/react-dom": { ++ "version": "18.2.7", ++ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.7.tgz", ++ "integrity": "sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==", ++ "dev": true, ++ "dependencies": { ++ "@types/react": "*" ++ } ++ }, ++ "node_modules/@types/scheduler": { ++ "version": "0.16.3", ++ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", ++ "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", ++ "dev": true ++ }, ++ "node_modules/@types/semver": { ++ "version": "7.5.2", ++ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.2.tgz", ++ "integrity": "sha512-7aqorHYgdNO4DM36stTiGO3DvKoex9TQRwsJU6vMaFGyqpBA1MNZkz+PG3gaNUPpTAOYhT1WR7M1JyA3fbS9Cw==", ++ "dev": true ++ }, ++ "node_modules/@types/stack-utils": { ++ "version": "2.0.3", ++ "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", ++ "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", ++ "dev": true, ++ "license": "MIT" ++ }, ++ "node_modules/@types/tough-cookie": { ++ "version": "4.0.3", ++ "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.3.tgz", ++ "integrity": "sha512-THo502dA5PzG/sfQH+42Lw3fvmYkceefOspdCwpHRul8ik2Jv1K8I5OZz1AT3/rs46kwgMCe9bSBmDLYkkOMGg==", ++ "dev": true ++ }, ++ "node_modules/@types/yargs": { ++ "version": "17.0.33", ++ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", ++ "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@types/yargs-parser": "*" ++ } ++ }, ++ "node_modules/@types/yargs-parser": { ++ "version": "21.0.0", ++ "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", ++ "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", ++ "dev": true ++ }, ++ "node_modules/@typescript-eslint/eslint-plugin": { ++ "version": "6.7.0", ++ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.0.tgz", ++ "integrity": "sha512-gUqtknHm0TDs1LhY12K2NA3Rmlmp88jK9Tx8vGZMfHeNMLE3GH2e9TRub+y+SOjuYgtOmok+wt1AyDPZqxbNag==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", +@@ -2297,103 +3377,379 @@ + "url": "https://opencollective.com/typescript-eslint" + } + }, +- "node_modules/@vitejs/plugin-react": { +- "version": "4.0.4", +- "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.0.4.tgz", +- "integrity": "sha512-7wU921ABnNYkETiMaZy7XqpueMnpu5VxvVps13MjmCo+utBdD79sZzrApHawHtVX66cCJQQTXFcjH0y9dSUK8g==", ++ "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==", + "dev": true, +- "dependencies": { +- "@babel/core": "^7.22.9", +- "@babel/plugin-transform-react-jsx-self": "^7.22.5", +- "@babel/plugin-transform-react-jsx-source": "^7.22.5", +- "react-refresh": "^0.14.0" +- }, +- "engines": { +- "node": "^14.18.0 || >=16.0.0" +- }, +- "peerDependencies": { +- "vite": "^4.2.0" +- } ++ "license": "ISC" + }, +- "node_modules/@vitejs/plugin-react-swc": { +- "version": "3.3.2", +- "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.3.2.tgz", +- "integrity": "sha512-VJFWY5sfoZerQRvJrh518h3AcQt6f/yTuWn4/TRB+dqmYU0NX1qz7qM5Wfd+gOQqUzQW4gxKqKN3KpE/P3+zrA==", ++ "node_modules/@unrs/resolver-binding-android-arm-eabi": { ++ "version": "1.11.1", ++ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", ++ "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", ++ "cpu": [ ++ "arm" ++ ], + "dev": true, +- "dependencies": { +- "@swc/core": "^1.3.61" +- }, +- "peerDependencies": { +- "vite": "^4" +- } +- }, +- "node_modules/abab": { +- "version": "2.0.6", +- "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", +- "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", +- "dev": true ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "android" ++ ] + }, +- "node_modules/acorn": { +- "version": "8.10.0", +- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", +- "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", ++ "node_modules/@unrs/resolver-binding-android-arm64": { ++ "version": "1.11.1", ++ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", ++ "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", ++ "cpu": [ ++ "arm64" ++ ], + "dev": true, +- "bin": { +- "acorn": "bin/acorn" +- }, +- "engines": { +- "node": ">=0.4.0" +- } ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "android" ++ ] + }, +- "node_modules/acorn-globals": { +- "version": "7.0.1", +- "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", +- "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", ++ "node_modules/@unrs/resolver-binding-darwin-arm64": { ++ "version": "1.11.1", ++ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", ++ "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", ++ "cpu": [ ++ "arm64" ++ ], + "dev": true, +- "dependencies": { +- "acorn": "^8.1.0", +- "acorn-walk": "^8.0.2" +- } ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "darwin" ++ ] + }, +- "node_modules/acorn-jsx": { +- "version": "5.3.2", +- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", +- "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", ++ "node_modules/@unrs/resolver-binding-darwin-x64": { ++ "version": "1.11.1", ++ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", ++ "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", ++ "cpu": [ ++ "x64" ++ ], + "dev": true, +- "peerDependencies": { +- "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" +- } ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "darwin" ++ ] + }, +- "node_modules/acorn-walk": { +- "version": "8.2.0", +- "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", +- "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", ++ "node_modules/@unrs/resolver-binding-freebsd-x64": { ++ "version": "1.11.1", ++ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", ++ "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", ++ "cpu": [ ++ "x64" ++ ], + "dev": true, +- "engines": { +- "node": ">=0.4.0" +- } ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "freebsd" ++ ] + }, +- "node_modules/agent-base": { +- "version": "6.0.2", +- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", +- "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", ++ "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { ++ "version": "1.11.1", ++ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", ++ "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", ++ "cpu": [ ++ "arm" ++ ], + "dev": true, +- "dependencies": { +- "debug": "4" +- }, +- "engines": { +- "node": ">= 6.0.0" +- } ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "linux" ++ ] + }, +- "node_modules/ajv": { +- "version": "6.12.6", +- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", +- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", ++ "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { ++ "version": "1.11.1", ++ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", ++ "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", ++ "cpu": [ ++ "arm" ++ ], + "dev": true, +- "dependencies": { +- "fast-deep-equal": "^3.1.1", +- "fast-json-stable-stringify": "^2.0.0", +- "json-schema-traverse": "^0.4.1", ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "linux" ++ ] ++ }, ++ "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { ++ "version": "1.11.1", ++ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", ++ "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", ++ "cpu": [ ++ "arm64" ++ ], ++ "dev": true, ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "linux" ++ ] ++ }, ++ "node_modules/@unrs/resolver-binding-linux-arm64-musl": { ++ "version": "1.11.1", ++ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", ++ "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", ++ "cpu": [ ++ "arm64" ++ ], ++ "dev": true, ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "linux" ++ ] ++ }, ++ "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { ++ "version": "1.11.1", ++ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", ++ "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", ++ "cpu": [ ++ "ppc64" ++ ], ++ "dev": true, ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "linux" ++ ] ++ }, ++ "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { ++ "version": "1.11.1", ++ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", ++ "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", ++ "cpu": [ ++ "riscv64" ++ ], ++ "dev": true, ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "linux" ++ ] ++ }, ++ "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { ++ "version": "1.11.1", ++ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", ++ "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", ++ "cpu": [ ++ "riscv64" ++ ], ++ "dev": true, ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "linux" ++ ] ++ }, ++ "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { ++ "version": "1.11.1", ++ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", ++ "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", ++ "cpu": [ ++ "s390x" ++ ], ++ "dev": true, ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "linux" ++ ] ++ }, ++ "node_modules/@unrs/resolver-binding-linux-x64-gnu": { ++ "version": "1.11.1", ++ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", ++ "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", ++ "cpu": [ ++ "x64" ++ ], ++ "dev": true, ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "linux" ++ ] ++ }, ++ "node_modules/@unrs/resolver-binding-linux-x64-musl": { ++ "version": "1.11.1", ++ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", ++ "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", ++ "cpu": [ ++ "x64" ++ ], ++ "dev": true, ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "linux" ++ ] ++ }, ++ "node_modules/@unrs/resolver-binding-wasm32-wasi": { ++ "version": "1.11.1", ++ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", ++ "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", ++ "cpu": [ ++ "wasm32" ++ ], ++ "dev": true, ++ "license": "MIT", ++ "optional": true, ++ "dependencies": { ++ "@napi-rs/wasm-runtime": "^0.2.11" ++ }, ++ "engines": { ++ "node": ">=14.0.0" ++ } ++ }, ++ "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { ++ "version": "1.11.1", ++ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", ++ "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", ++ "cpu": [ ++ "arm64" ++ ], ++ "dev": true, ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "win32" ++ ] ++ }, ++ "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { ++ "version": "1.11.1", ++ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", ++ "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", ++ "cpu": [ ++ "ia32" ++ ], ++ "dev": true, ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "win32" ++ ] ++ }, ++ "node_modules/@unrs/resolver-binding-win32-x64-msvc": { ++ "version": "1.11.1", ++ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", ++ "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", ++ "cpu": [ ++ "x64" ++ ], ++ "dev": true, ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "win32" ++ ] ++ }, ++ "node_modules/@vitejs/plugin-react": { ++ "version": "4.0.4", ++ "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.0.4.tgz", ++ "integrity": "sha512-7wU921ABnNYkETiMaZy7XqpueMnpu5VxvVps13MjmCo+utBdD79sZzrApHawHtVX66cCJQQTXFcjH0y9dSUK8g==", ++ "dev": true, ++ "dependencies": { ++ "@babel/core": "^7.22.9", ++ "@babel/plugin-transform-react-jsx-self": "^7.22.5", ++ "@babel/plugin-transform-react-jsx-source": "^7.22.5", ++ "react-refresh": "^0.14.0" ++ }, ++ "engines": { ++ "node": "^14.18.0 || >=16.0.0" ++ }, ++ "peerDependencies": { ++ "vite": "^4.2.0" ++ } ++ }, ++ "node_modules/@vitejs/plugin-react-swc": { ++ "version": "3.3.2", ++ "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.3.2.tgz", ++ "integrity": "sha512-VJFWY5sfoZerQRvJrh518h3AcQt6f/yTuWn4/TRB+dqmYU0NX1qz7qM5Wfd+gOQqUzQW4gxKqKN3KpE/P3+zrA==", ++ "dev": true, ++ "dependencies": { ++ "@swc/core": "^1.3.61" ++ }, ++ "peerDependencies": { ++ "vite": "^4" ++ } ++ }, ++ "node_modules/abab": { ++ "version": "2.0.6", ++ "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", ++ "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", ++ "dev": true ++ }, ++ "node_modules/acorn": { ++ "version": "8.10.0", ++ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", ++ "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", ++ "dev": true, ++ "bin": { ++ "acorn": "bin/acorn" ++ }, ++ "engines": { ++ "node": ">=0.4.0" ++ } ++ }, ++ "node_modules/acorn-globals": { ++ "version": "7.0.1", ++ "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", ++ "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", ++ "dev": true, ++ "dependencies": { ++ "acorn": "^8.1.0", ++ "acorn-walk": "^8.0.2" ++ } ++ }, ++ "node_modules/acorn-jsx": { ++ "version": "5.3.2", ++ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", ++ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", ++ "dev": true, ++ "peerDependencies": { ++ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" ++ } ++ }, ++ "node_modules/acorn-walk": { ++ "version": "8.2.0", ++ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", ++ "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", ++ "dev": true, ++ "engines": { ++ "node": ">=0.4.0" ++ } ++ }, ++ "node_modules/agent-base": { ++ "version": "6.0.2", ++ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", ++ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", ++ "dev": true, ++ "dependencies": { ++ "debug": "4" ++ }, ++ "engines": { ++ "node": ">= 6.0.0" ++ } ++ }, ++ "node_modules/ajv": { ++ "version": "6.12.6", ++ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", ++ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", ++ "dev": true, ++ "dependencies": { ++ "fast-deep-equal": "^3.1.1", ++ "fast-json-stable-stringify": "^2.0.0", ++ "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { +@@ -2438,15 +3794,19 @@ + } + }, + "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": "4.3.0", ++ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", ++ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "color-convert": "^1.9.0" ++ "color-convert": "^2.0.1" + }, + "engines": { +- "node": ">=4" ++ "node": ">=8" ++ }, ++ "funding": { ++ "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { +@@ -2481,25 +3841,13 @@ + "dev": true + }, + "node_modules/aria-query": { +- "version": "5.1.3", +- "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", +- "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", +- "dev": true, +- "dependencies": { +- "deep-equal": "^2.0.5" +- } +- }, +- "node_modules/array-buffer-byte-length": { +- "version": "1.0.0", +- "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", +- "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", ++ "version": "5.3.0", ++ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", ++ "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dev": true, ++ "license": "Apache-2.0", + "dependencies": { +- "call-bind": "^1.0.2", +- "is-array-buffer": "^3.0.1" +- }, +- "funding": { +- "url": "https://github.com/sponsors/ljharb" ++ "dequal": "^2.0.3" + } + }, + "node_modules/array-union": { +@@ -2554,107 +3902,268 @@ + "postcss": "^8.1.0" + } + }, +- "node_modules/available-typed-arrays": { +- "version": "1.0.5", +- "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", +- "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", +- "dev": true, +- "engines": { +- "node": ">= 0.4" +- }, +- "funding": { +- "url": "https://github.com/sponsors/ljharb" +- } +- }, + "node_modules/babel-jest": { +- "version": "29.7.0", +- "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", +- "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", +- "dev": true, +- "dependencies": { +- "@jest/transform": "^29.7.0", +- "@types/babel__core": "^7.1.14", +- "babel-plugin-istanbul": "^6.1.1", +- "babel-preset-jest": "^29.6.3", +- "chalk": "^4.0.0", +- "graceful-fs": "^4.2.9", ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.2.0.tgz", ++ "integrity": "sha512-0YiBEOxWqKkSQWL9nNGGEgndoeL0ZpWrbLMNL5u/Kaxrli3Eaxlt3ZtIDktEvXt4L/R9r3ODr2zKwGM/2BjxVw==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/transform": "30.2.0", ++ "@types/babel__core": "^7.20.5", ++ "babel-plugin-istanbul": "^7.0.1", ++ "babel-preset-jest": "30.2.0", ++ "chalk": "^4.1.2", ++ "graceful-fs": "^4.2.11", + "slash": "^3.0.0" + }, + "engines": { +- "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { +- "@babel/core": "^7.8.0" ++ "@babel/core": "^7.11.0 || ^8.0.0-0" + } + }, +- "node_modules/babel-jest/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/babel-jest/node_modules/@jest/schemas": { ++ "version": "30.0.5", ++ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", ++ "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "color-convert": "^2.0.1" ++ "@sinclair/typebox": "^0.34.0" + }, + "engines": { +- "node": ">=8" +- }, +- "funding": { +- "url": "https://github.com/chalk/ansi-styles?sponsor=1" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/babel-jest/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/babel-jest/node_modules/@jest/transform": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", ++ "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "ansi-styles": "^4.1.0", +- "supports-color": "^7.1.0" ++ "@babel/core": "^7.27.4", ++ "@jest/types": "30.2.0", ++ "@jridgewell/trace-mapping": "^0.3.25", ++ "babel-plugin-istanbul": "^7.0.1", ++ "chalk": "^4.1.2", ++ "convert-source-map": "^2.0.0", ++ "fast-json-stable-stringify": "^2.1.0", ++ "graceful-fs": "^4.2.11", ++ "jest-haste-map": "30.2.0", ++ "jest-regex-util": "30.0.1", ++ "jest-util": "30.2.0", ++ "micromatch": "^4.0.8", ++ "pirates": "^4.0.7", ++ "slash": "^3.0.0", ++ "write-file-atomic": "^5.0.1" + }, + "engines": { +- "node": ">=10" +- }, +- "funding": { +- "url": "https://github.com/chalk/chalk?sponsor=1" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/babel-jest/node_modules/color-convert": { +- "version": "2.0.1", +- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", +- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", ++ "node_modules/babel-jest/node_modules/@jest/types": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", ++ "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "color-name": "~1.1.4" ++ "@jest/pattern": "30.0.1", ++ "@jest/schemas": "30.0.5", ++ "@types/istanbul-lib-coverage": "^2.0.6", ++ "@types/istanbul-reports": "^3.0.4", ++ "@types/node": "*", ++ "@types/yargs": "^17.0.33", ++ "chalk": "^4.1.2" + }, + "engines": { +- "node": ">=7.0.0" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/babel-jest/node_modules/color-name": { +- "version": "1.1.4", +- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", +- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", +- "dev": true ++ "node_modules/babel-jest/node_modules/@sinclair/typebox": { ++ "version": "0.34.41", ++ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", ++ "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", ++ "dev": true, ++ "license": "MIT" + }, +- "node_modules/babel-jest/node_modules/has-flag": { +- "version": "4.0.0", +- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", +- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", ++ "node_modules/babel-jest/node_modules/babel-plugin-istanbul": { ++ "version": "7.0.1", ++ "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", ++ "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", ++ "dev": true, ++ "license": "BSD-3-Clause", ++ "workspaces": [ ++ "test/babel-8" ++ ], ++ "dependencies": { ++ "@babel/helper-plugin-utils": "^7.0.0", ++ "@istanbuljs/load-nyc-config": "^1.0.0", ++ "@istanbuljs/schema": "^0.1.3", ++ "istanbul-lib-instrument": "^6.0.2", ++ "test-exclude": "^6.0.0" ++ }, ++ "engines": { ++ "node": ">=12" ++ } ++ }, ++ "node_modules/babel-jest/node_modules/ci-info": { ++ "version": "4.3.1", ++ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", ++ "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", + "dev": true, ++ "funding": [ ++ { ++ "type": "github", ++ "url": "https://github.com/sponsors/sibiraj-s" ++ } ++ ], ++ "license": "MIT", + "engines": { + "node": ">=8" + } + }, ++ "node_modules/babel-jest/node_modules/jest-haste-map": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", ++ "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/types": "30.2.0", ++ "@types/node": "*", ++ "anymatch": "^3.1.3", ++ "fb-watchman": "^2.0.2", ++ "graceful-fs": "^4.2.11", ++ "jest-regex-util": "30.0.1", ++ "jest-util": "30.2.0", ++ "jest-worker": "30.2.0", ++ "micromatch": "^4.0.8", ++ "walker": "^1.0.8" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ }, ++ "optionalDependencies": { ++ "fsevents": "^2.3.3" ++ } ++ }, ++ "node_modules/babel-jest/node_modules/jest-regex-util": { ++ "version": "30.0.1", ++ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", ++ "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", ++ "dev": true, ++ "license": "MIT", ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/babel-jest/node_modules/jest-util": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", ++ "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/types": "30.2.0", ++ "@types/node": "*", ++ "chalk": "^4.1.2", ++ "ci-info": "^4.2.0", ++ "graceful-fs": "^4.2.11", ++ "picomatch": "^4.0.2" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/babel-jest/node_modules/jest-util/node_modules/picomatch": { ++ "version": "4.0.3", ++ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", ++ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", ++ "dev": true, ++ "license": "MIT", ++ "engines": { ++ "node": ">=12" ++ }, ++ "funding": { ++ "url": "https://github.com/sponsors/jonschlinkert" ++ } ++ }, ++ "node_modules/babel-jest/node_modules/jest-worker": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", ++ "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@types/node": "*", ++ "@ungap/structured-clone": "^1.3.0", ++ "jest-util": "30.2.0", ++ "merge-stream": "^2.0.0", ++ "supports-color": "^8.1.1" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/babel-jest/node_modules/micromatch": { ++ "version": "4.0.8", ++ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", ++ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "braces": "^3.0.3", ++ "picomatch": "^2.3.1" ++ }, ++ "engines": { ++ "node": ">=8.6" ++ } ++ }, ++ "node_modules/babel-jest/node_modules/signal-exit": { ++ "version": "4.1.0", ++ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", ++ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", ++ "dev": true, ++ "license": "ISC", ++ "engines": { ++ "node": ">=14" ++ }, ++ "funding": { ++ "url": "https://github.com/sponsors/isaacs" ++ } ++ }, + "node_modules/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==", ++ "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/babel-jest/node_modules/write-file-atomic": { ++ "version": "5.0.1", ++ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", ++ "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", ++ "dev": true, ++ "license": "ISC", ++ "dependencies": { ++ "imurmurhash": "^0.1.4", ++ "signal-exit": "^4.0.1" ++ }, ++ "engines": { ++ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/babel-plugin-istanbul": { +@@ -2699,57 +4208,60 @@ + } + }, + "node_modules/babel-plugin-jest-hoist": { +- "version": "29.6.3", +- "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", +- "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.2.0.tgz", ++ "integrity": "sha512-ftzhzSGMUnOzcCXd6WHdBGMyuwy15Wnn0iyyWGKgBDLxf9/s5ABuraCSpBX2uG0jUg4rqJnxsLc5+oYBqoxVaA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "@babel/template": "^7.3.3", +- "@babel/types": "^7.3.3", +- "@types/babel__core": "^7.1.14", +- "@types/babel__traverse": "^7.0.6" ++ "@types/babel__core": "^7.20.5" + }, + "engines": { +- "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { +- "version": "1.0.1", +- "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", +- "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", ++ "version": "1.2.0", ++ "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", ++ "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", + "dev": true, ++ "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", +- "@babel/plugin-syntax-class-properties": "^7.8.3", +- "@babel/plugin-syntax-import-meta": "^7.8.3", ++ "@babel/plugin-syntax-class-properties": "^7.12.13", ++ "@babel/plugin-syntax-class-static-block": "^7.14.5", ++ "@babel/plugin-syntax-import-attributes": "^7.24.7", ++ "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", +- "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", ++ "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", +- "@babel/plugin-syntax-numeric-separator": "^7.8.3", ++ "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", +- "@babel/plugin-syntax-top-level-await": "^7.8.3" ++ "@babel/plugin-syntax-private-property-in-object": "^7.14.5", ++ "@babel/plugin-syntax-top-level-await": "^7.14.5" + }, + "peerDependencies": { +- "@babel/core": "^7.0.0" ++ "@babel/core": "^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/babel-preset-jest": { +- "version": "29.6.3", +- "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", +- "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.2.0.tgz", ++ "integrity": "sha512-US4Z3NOieAQumwFnYdUWKvUKh8+YSnS/gB3t6YBiz0bskpu7Pine8pPCheNxlPEW4wnUkma2a94YuW2q3guvCQ==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "babel-plugin-jest-hoist": "^29.6.3", +- "babel-preset-current-node-syntax": "^1.0.0" ++ "babel-plugin-jest-hoist": "30.2.0", ++ "babel-preset-current-node-syntax": "^1.2.0" + }, + "engines": { +- "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { +- "@babel/core": "^7.0.0" ++ "@babel/core": "^7.11.0 || ^8.0.0-beta.1" + } + }, + "node_modules/balanced-match": { +@@ -2758,6 +4270,16 @@ + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, ++ "node_modules/baseline-browser-mapping": { ++ "version": "2.8.16", ++ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.16.tgz", ++ "integrity": "sha512-OMu3BGQ4E7P1ErFsIPpbJh0qvDudM/UuJeHgkAvfWe+0HFJCXh+t/l8L6fVLR55RI/UbKrVLnAXZSVwd9ysWYw==", ++ "dev": true, ++ "license": "Apache-2.0", ++ "bin": { ++ "baseline-browser-mapping": "dist/cli.js" ++ } ++ }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", +@@ -2778,21 +4300,22 @@ + } + }, + "node_modules/braces": { +- "version": "3.0.2", +- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", +- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", ++ "version": "3.0.3", ++ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", ++ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "fill-range": "^7.0.1" ++ "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { +- "version": "4.21.10", +- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", +- "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", ++ "version": "4.26.3", ++ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.26.3.tgz", ++ "integrity": "sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==", + "dev": true, + "funding": [ + { +@@ -2808,11 +4331,13 @@ + "url": "https://github.com/sponsors/ai" + } + ], ++ "license": "MIT", + "dependencies": { +- "caniuse-lite": "^1.0.30001517", +- "electron-to-chromium": "^1.4.477", +- "node-releases": "^2.0.13", +- "update-browserslist-db": "^1.0.11" ++ "baseline-browser-mapping": "^2.8.9", ++ "caniuse-lite": "^1.0.30001746", ++ "electron-to-chromium": "^1.5.227", ++ "node-releases": "^2.0.21", ++ "update-browserslist-db": "^1.1.3" + }, + "bin": { + "browserslist": "cli.js" +@@ -2846,20 +4371,8 @@ + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", +- "dev": true +- }, +- "node_modules/call-bind": { +- "version": "1.0.2", +- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", +- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, +- "dependencies": { +- "function-bind": "^1.1.1", +- "get-intrinsic": "^1.0.2" +- }, +- "funding": { +- "url": "https://github.com/sponsors/ljharb" +- } ++ "license": "MIT" + }, + "node_modules/callsites": { + "version": "3.1.0", +@@ -2889,9 +4402,9 @@ + } + }, + "node_modules/caniuse-lite": { +- "version": "1.0.30001534", +- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001534.tgz", +- "integrity": "sha512-vlPVrhsCS7XaSh2VvWluIQEzVhefrUQcEsQWSS5A5V+dM07uv1qHeQzAOTGIMy9i3e9bH15+muvI/UHojVgS/Q==", ++ "version": "1.0.30001750", ++ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001750.tgz", ++ "integrity": "sha512-cuom0g5sdX6rw00qOoLNSFCJ9/mYIsuSOA+yzpDw8eopiFqcVwQvZHqov0vmEighRxX++cfC0Vg1G+1Iy/mSpQ==", + "dev": true, + "funding": [ + { +@@ -2906,20 +4419,24 @@ + "type": "github", + "url": "https://github.com/sponsors/ai" + } +- ] ++ ], ++ "license": "CC-BY-4.0" + }, + "node_modules/chalk": { +- "version": "2.4.2", +- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", +- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", ++ "version": "4.1.2", ++ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", ++ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "ansi-styles": "^3.2.1", +- "escape-string-regexp": "^1.0.5", +- "supports-color": "^5.3.0" ++ "ansi-styles": "^4.1.0", ++ "supports-color": "^7.1.0" + }, + "engines": { +- "node": ">=4" ++ "node": ">=10" ++ }, ++ "funding": { ++ "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { +@@ -2927,6 +4444,7 @@ + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, ++ "license": "MIT", + "engines": { + "node": ">=10" + } +@@ -2974,10 +4492,11 @@ + } + }, + "node_modules/cjs-module-lexer": { +- "version": "1.2.3", +- "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", +- "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", +- "dev": true ++ "version": "2.1.0", ++ "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.1.0.tgz", ++ "integrity": "sha512-UX0OwmYRYQQetfrLEZeewIFFI+wSTofC+pMBLNuH3RUuu/xzG1oz84UCEDOSoQlN3fZ4+AzmV50ZYvGqkMh9yA==", ++ "dev": true, ++ "license": "MIT" + }, + "node_modules/classnames": { + "version": "2.5.1", +@@ -3021,6 +4540,7 @@ + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, ++ "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", +@@ -3030,50 +4550,19 @@ + "node": ">=12" + } + }, +- "node_modules/cliui/node_modules/ansi-styles": { +- "version": "4.3.0", +- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", +- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", +- "dev": true, +- "dependencies": { +- "color-convert": "^2.0.1" +- }, +- "engines": { +- "node": ">=8" +- }, +- "funding": { +- "url": "https://github.com/chalk/ansi-styles?sponsor=1" +- } +- }, +- "node_modules/cliui/node_modules/color-convert": { +- "version": "2.0.1", +- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", +- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", +- "dev": true, +- "dependencies": { +- "color-name": "~1.1.4" +- }, +- "engines": { +- "node": ">=7.0.0" +- } +- }, +- "node_modules/cliui/node_modules/color-name": { +- "version": "1.1.4", +- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", +- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", +- "dev": true +- }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", +- "dev": true ++ "dev": true, ++ "license": "MIT" + }, + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, ++ "license": "MIT", + "engines": { + "node": ">=8" + } +@@ -3083,6 +4572,7 @@ + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, ++ "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", +@@ -3097,6 +4587,7 @@ + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, ++ "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", +@@ -3114,6 +4605,7 @@ + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, ++ "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" +@@ -3123,22 +4615,28 @@ + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", +- "dev": true ++ "dev": true, ++ "license": "MIT" + }, + "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==", ++ "version": "2.0.1", ++ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", ++ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "color-name": "1.1.3" ++ "color-name": "~1.1.4" ++ }, ++ "engines": { ++ "node": ">=7.0.0" + } + }, + "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 ++ "version": "1.1.4", ++ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", ++ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", ++ "dev": true, ++ "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", +@@ -3174,150 +4672,61 @@ + "dev": true + }, + "node_modules/convert-source-map": { +- "version": "1.9.0", +- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", +- "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", +- "dev": true ++ "version": "2.0.0", ++ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", ++ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", ++ "dev": true, ++ "license": "MIT" + }, +- "node_modules/create-jest": { +- "version": "29.7.0", +- "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", +- "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", ++ "node_modules/cross-spawn": { ++ "version": "7.0.6", ++ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", ++ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "@jest/types": "^29.6.3", +- "chalk": "^4.0.0", +- "exit": "^0.1.2", +- "graceful-fs": "^4.2.9", +- "jest-config": "^29.7.0", +- "jest-util": "^29.7.0", +- "prompts": "^2.0.1" +- }, +- "bin": { +- "create-jest": "bin/create-jest.js" ++ "path-key": "^3.1.0", ++ "shebang-command": "^2.0.0", ++ "which": "^2.0.1" + }, + "engines": { +- "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ "node": ">= 8" + } + }, +- "node_modules/create-jest/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/css.escape": { ++ "version": "1.5.1", ++ "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", ++ "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", ++ "dev": true ++ }, ++ "node_modules/cssesc": { ++ "version": "3.0.0", ++ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", ++ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, +- "dependencies": { +- "color-convert": "^2.0.1" ++ "bin": { ++ "cssesc": "bin/cssesc" + }, + "engines": { +- "node": ">=8" +- }, +- "funding": { +- "url": "https://github.com/chalk/ansi-styles?sponsor=1" ++ "node": ">=4" + } + }, +- "node_modules/create-jest/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/cssom": { ++ "version": "0.5.0", ++ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", ++ "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", ++ "dev": true ++ }, ++ "node_modules/cssstyle": { ++ "version": "3.0.0", ++ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-3.0.0.tgz", ++ "integrity": "sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==", + "dev": true, + "dependencies": { +- "ansi-styles": "^4.1.0", +- "supports-color": "^7.1.0" ++ "rrweb-cssom": "^0.6.0" + }, + "engines": { +- "node": ">=10" +- }, +- "funding": { +- "url": "https://github.com/chalk/chalk?sponsor=1" +- } +- }, +- "node_modules/create-jest/node_modules/color-convert": { +- "version": "2.0.1", +- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", +- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", +- "dev": true, +- "dependencies": { +- "color-name": "~1.1.4" +- }, +- "engines": { +- "node": ">=7.0.0" +- } +- }, +- "node_modules/create-jest/node_modules/color-name": { +- "version": "1.1.4", +- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", +- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", +- "dev": true +- }, +- "node_modules/create-jest/node_modules/has-flag": { +- "version": "4.0.0", +- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", +- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", +- "dev": true, +- "engines": { +- "node": ">=8" +- } +- }, +- "node_modules/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, +- "dependencies": { +- "has-flag": "^4.0.0" +- }, +- "engines": { +- "node": ">=8" +- } +- }, +- "node_modules/cross-spawn": { +- "version": "7.0.3", +- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", +- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", +- "dev": true, +- "dependencies": { +- "path-key": "^3.1.0", +- "shebang-command": "^2.0.0", +- "which": "^2.0.1" +- }, +- "engines": { +- "node": ">= 8" +- } +- }, +- "node_modules/css.escape": { +- "version": "1.5.1", +- "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", +- "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", +- "dev": true +- }, +- "node_modules/cssesc": { +- "version": "3.0.0", +- "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", +- "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", +- "dev": true, +- "bin": { +- "cssesc": "bin/cssesc" +- }, +- "engines": { +- "node": ">=4" +- } +- }, +- "node_modules/cssom": { +- "version": "0.5.0", +- "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", +- "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", +- "dev": true +- }, +- "node_modules/cssstyle": { +- "version": "3.0.0", +- "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-3.0.0.tgz", +- "integrity": "sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==", +- "dev": true, +- "dependencies": { +- "rrweb-cssom": "^0.6.0" +- }, +- "engines": { +- "node": ">=14" ++ "node": ">=14" + } + }, + "node_modules/csstype": { +@@ -3364,10 +4773,11 @@ + "dev": true + }, + "node_modules/dedent": { +- "version": "1.5.1", +- "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", +- "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", ++ "version": "1.7.0", ++ "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.0.tgz", ++ "integrity": "sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ==", + "dev": true, ++ "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, +@@ -3377,35 +4787,6 @@ + } + } + }, +- "node_modules/deep-equal": { +- "version": "2.2.2", +- "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.2.tgz", +- "integrity": "sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA==", +- "dev": true, +- "dependencies": { +- "array-buffer-byte-length": "^1.0.0", +- "call-bind": "^1.0.2", +- "es-get-iterator": "^1.1.3", +- "get-intrinsic": "^1.2.1", +- "is-arguments": "^1.1.1", +- "is-array-buffer": "^3.0.2", +- "is-date-object": "^1.0.5", +- "is-regex": "^1.1.4", +- "is-shared-array-buffer": "^1.0.2", +- "isarray": "^2.0.5", +- "object-is": "^1.1.5", +- "object-keys": "^1.1.1", +- "object.assign": "^4.1.4", +- "regexp.prototype.flags": "^1.5.0", +- "side-channel": "^1.0.4", +- "which-boxed-primitive": "^1.0.2", +- "which-collection": "^1.0.1", +- "which-typed-array": "^1.1.9" +- }, +- "funding": { +- "url": "https://github.com/sponsors/ljharb" +- } +- }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", +@@ -3417,41 +4798,11 @@ + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, ++ "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, +- "node_modules/define-data-property": { +- "version": "1.1.0", +- "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", +- "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", +- "dev": true, +- "dependencies": { +- "get-intrinsic": "^1.2.1", +- "gopd": "^1.0.1", +- "has-property-descriptors": "^1.0.0" +- }, +- "engines": { +- "node": ">= 0.4" +- } +- }, +- "node_modules/define-properties": { +- "version": "1.2.1", +- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", +- "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", +- "dev": true, +- "dependencies": { +- "define-data-property": "^1.0.1", +- "has-property-descriptors": "^1.0.0", +- "object-keys": "^1.1.1" +- }, +- "engines": { +- "node": ">= 0.4" +- }, +- "funding": { +- "url": "https://github.com/sponsors/ljharb" +- } +- }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", +@@ -3461,11 +4812,22 @@ + "node": ">=0.4.0" + } + }, ++ "node_modules/dequal": { ++ "version": "2.0.3", ++ "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", ++ "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", ++ "dev": true, ++ "license": "MIT", ++ "engines": { ++ "node": ">=6" ++ } ++ }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, ++ "license": "MIT", + "engines": { + "node": ">=8" + } +@@ -3540,16 +4902,18 @@ + "dev": true + }, + "node_modules/electron-to-chromium": { +- "version": "1.4.523", +- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.523.tgz", +- "integrity": "sha512-9AreocSUWnzNtvLcbpng6N+GkXnCcBR80IQkxRC9Dfdyg4gaWNUPBujAHUpKkiUkoSoR9UlhA4zD/IgBklmhzg==", +- "dev": true ++ "version": "1.5.234", ++ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.234.tgz", ++ "integrity": "sha512-RXfEp2x+VRYn8jbKfQlRImzoJU01kyDvVPBmG39eU2iuRVhuS6vQNocB8J0/8GrIMLnPzgz4eW6WiRnJkTuNWg==", ++ "dev": true, ++ "license": "ISC" + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, ++ "license": "MIT", + "engines": { + "node": ">=12" + }, +@@ -3576,34 +4940,15 @@ + } + }, + "node_modules/error-ex": { +- "version": "1.3.2", +- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", +- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", ++ "version": "1.3.4", ++ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", ++ "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "dev": true, ++ "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, +- "node_modules/es-get-iterator": { +- "version": "1.1.3", +- "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", +- "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", +- "dev": true, +- "dependencies": { +- "call-bind": "^1.0.2", +- "get-intrinsic": "^1.1.3", +- "has-symbols": "^1.0.3", +- "is-arguments": "^1.1.1", +- "is-map": "^2.0.2", +- "is-set": "^2.0.2", +- "is-string": "^1.0.7", +- "isarray": "^2.0.5", +- "stop-iteration-iterator": "^1.0.0" +- }, +- "funding": { +- "url": "https://github.com/sponsors/ljharb" +- } +- }, + "node_modules/esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", +@@ -3642,23 +4987,15 @@ + } + }, + "node_modules/escalade": { +- "version": "3.1.1", +- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", +- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", ++ "version": "3.2.0", ++ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", ++ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, ++ "license": "MIT", + "engines": { + "node": ">=6" + } + }, +- "node_modules/escape-string-regexp": { +- "version": "1.0.5", +- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", +- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", +- "dev": true, +- "engines": { +- "node": ">=0.8.0" +- } +- }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", +@@ -3783,55 +5120,6 @@ + "url": "https://opencollective.com/eslint" + } + }, +- "node_modules/eslint/node_modules/ansi-styles": { +- "version": "4.3.0", +- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", +- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", +- "dev": true, +- "dependencies": { +- "color-convert": "^2.0.1" +- }, +- "engines": { +- "node": ">=8" +- }, +- "funding": { +- "url": "https://github.com/chalk/ansi-styles?sponsor=1" +- } +- }, +- "node_modules/eslint/node_modules/chalk": { +- "version": "4.1.2", +- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", +- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", +- "dev": true, +- "dependencies": { +- "ansi-styles": "^4.1.0", +- "supports-color": "^7.1.0" +- }, +- "engines": { +- "node": ">=10" +- }, +- "funding": { +- "url": "https://github.com/chalk/chalk?sponsor=1" +- } +- }, +- "node_modules/eslint/node_modules/color-convert": { +- "version": "2.0.1", +- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", +- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", +- "dev": true, +- "dependencies": { +- "color-name": "~1.1.4" +- }, +- "engines": { +- "node": ">=7.0.0" +- } +- }, +- "node_modules/eslint/node_modules/color-name": { +- "version": "1.1.4", +- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", +- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", +- "dev": true +- }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", +@@ -3871,27 +5159,6 @@ + "url": "https://github.com/sponsors/sindresorhus" + } + }, +- "node_modules/eslint/node_modules/has-flag": { +- "version": "4.0.0", +- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", +- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", +- "dev": true, +- "engines": { +- "node": ">=8" +- } +- }, +- "node_modules/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, +- "dependencies": { +- "has-flag": "^4.0.0" +- }, +- "engines": { +- "node": ">=8" +- } +- }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", +@@ -3993,11 +5260,12 @@ + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, +- "node_modules/exit": { +- "version": "0.1.2", +- "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", +- "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", ++ "node_modules/exit-x": { ++ "version": "0.2.2", ++ "resolved": "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz", ++ "integrity": "sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==", + "dev": true, ++ "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } +@@ -4083,10 +5351,11 @@ + } + }, + "node_modules/fill-range": { +- "version": "7.0.1", +- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", +- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", ++ "version": "7.1.1", ++ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", ++ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, ++ "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, +@@ -4130,13 +5399,34 @@ + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true + }, +- "node_modules/for-each": { +- "version": "0.3.3", +- "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", +- "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", ++ "node_modules/foreground-child": { ++ "version": "3.3.1", ++ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", ++ "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, ++ "license": "ISC", + "dependencies": { +- "is-callable": "^1.1.3" ++ "cross-spawn": "^7.0.6", ++ "signal-exit": "^4.0.1" ++ }, ++ "engines": { ++ "node": ">=14" ++ }, ++ "funding": { ++ "url": "https://github.com/sponsors/isaacs" ++ } ++ }, ++ "node_modules/foreground-child/node_modules/signal-exit": { ++ "version": "4.1.0", ++ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", ++ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", ++ "dev": true, ++ "license": "ISC", ++ "engines": { ++ "node": ">=14" ++ }, ++ "funding": { ++ "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { +@@ -4192,15 +5482,6 @@ + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, +- "node_modules/functions-have-names": { +- "version": "1.2.3", +- "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", +- "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", +- "dev": true, +- "funding": { +- "url": "https://github.com/sponsors/ljharb" +- } +- }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", +@@ -4215,25 +5496,11 @@ + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, ++ "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, +- "node_modules/get-intrinsic": { +- "version": "1.2.1", +- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", +- "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", +- "dev": true, +- "dependencies": { +- "function-bind": "^1.1.1", +- "has": "^1.0.3", +- "has-proto": "^1.0.1", +- "has-symbols": "^1.0.3" +- }, +- "funding": { +- "url": "https://github.com/sponsors/ljharb" +- } +- }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", +@@ -4287,15 +5554,6 @@ + "node": ">= 6" + } + }, +- "node_modules/globals": { +- "version": "11.12.0", +- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", +- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", +- "dev": true, +- "engines": { +- "node": ">=4" +- } +- }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", +@@ -4316,18 +5574,6 @@ + "url": "https://github.com/sponsors/sindresorhus" + } + }, +- "node_modules/gopd": { +- "version": "1.0.1", +- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", +- "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", +- "dev": true, +- "dependencies": { +- "get-intrinsic": "^1.1.3" +- }, +- "funding": { +- "url": "https://github.com/sponsors/ljharb" +- } +- }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", +@@ -4340,6 +5586,28 @@ + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, ++ "node_modules/handlebars": { ++ "version": "4.7.8", ++ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", ++ "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "minimist": "^1.2.5", ++ "neo-async": "^2.6.2", ++ "source-map": "^0.6.1", ++ "wordwrap": "^1.0.0" ++ }, ++ "bin": { ++ "handlebars": "bin/handlebars" ++ }, ++ "engines": { ++ "node": ">=0.4.7" ++ }, ++ "optionalDependencies": { ++ "uglify-js": "^3.1.4" ++ } ++ }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", +@@ -4352,73 +5620,14 @@ + "node": ">= 0.4.0" + } + }, +- "node_modules/has-bigints": { +- "version": "1.0.2", +- "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", +- "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", ++ "node_modules/has-flag": { ++ "version": "4.0.0", ++ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", ++ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, +- "funding": { +- "url": "https://github.com/sponsors/ljharb" +- } +- }, +- "node_modules/has-flag": { +- "version": "3.0.0", +- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", +- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", +- "dev": true, +- "engines": { +- "node": ">=4" +- } +- }, +- "node_modules/has-property-descriptors": { +- "version": "1.0.0", +- "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", +- "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", +- "dev": true, +- "dependencies": { +- "get-intrinsic": "^1.1.1" +- }, +- "funding": { +- "url": "https://github.com/sponsors/ljharb" +- } +- }, +- "node_modules/has-proto": { +- "version": "1.0.1", +- "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", +- "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", +- "dev": true, +- "engines": { +- "node": ">= 0.4" +- }, +- "funding": { +- "url": "https://github.com/sponsors/ljharb" +- } +- }, +- "node_modules/has-symbols": { +- "version": "1.0.3", +- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", +- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", +- "dev": true, +- "engines": { +- "node": ">= 0.4" +- }, +- "funding": { +- "url": "https://github.com/sponsors/ljharb" +- } +- }, +- "node_modules/has-tostringtag": { +- "version": "1.0.0", +- "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", +- "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", +- "dev": true, +- "dependencies": { +- "has-symbols": "^1.0.2" +- }, +- "engines": { +- "node": ">= 0.4" +- }, +- "funding": { +- "url": "https://github.com/sponsors/ljharb" ++ "license": "MIT", ++ "engines": { ++ "node": ">=8" + } + }, + "node_modules/html-encoding-sniffer": { +@@ -4437,7 +5646,8 @@ + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", +- "dev": true ++ "dev": true, ++ "license": "MIT" + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", +@@ -4528,10 +5738,11 @@ + } + }, + "node_modules/import-local": { +- "version": "3.1.0", +- "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", +- "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", ++ "version": "3.2.0", ++ "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", ++ "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, ++ "license": "MIT", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" +@@ -4580,67 +5791,12 @@ + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, +- "node_modules/internal-slot": { +- "version": "1.0.5", +- "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", +- "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", +- "dev": true, +- "dependencies": { +- "get-intrinsic": "^1.2.0", +- "has": "^1.0.3", +- "side-channel": "^1.0.4" +- }, +- "engines": { +- "node": ">= 0.4" +- } +- }, +- "node_modules/is-arguments": { +- "version": "1.1.1", +- "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", +- "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", +- "dev": true, +- "dependencies": { +- "call-bind": "^1.0.2", +- "has-tostringtag": "^1.0.0" +- }, +- "engines": { +- "node": ">= 0.4" +- }, +- "funding": { +- "url": "https://github.com/sponsors/ljharb" +- } +- }, +- "node_modules/is-array-buffer": { +- "version": "3.0.2", +- "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", +- "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", +- "dev": true, +- "dependencies": { +- "call-bind": "^1.0.2", +- "get-intrinsic": "^1.2.0", +- "is-typed-array": "^1.1.10" +- }, +- "funding": { +- "url": "https://github.com/sponsors/ljharb" +- } +- }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", +- "dev": true +- }, +- "node_modules/is-bigint": { +- "version": "1.0.4", +- "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", +- "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, +- "dependencies": { +- "has-bigints": "^1.0.1" +- }, +- "funding": { +- "url": "https://github.com/sponsors/ljharb" +- } ++ "license": "MIT" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", +@@ -4654,34 +5810,6 @@ + "node": ">=8" + } + }, +- "node_modules/is-boolean-object": { +- "version": "1.1.2", +- "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", +- "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", +- "dev": true, +- "dependencies": { +- "call-bind": "^1.0.2", +- "has-tostringtag": "^1.0.0" +- }, +- "engines": { +- "node": ">= 0.4" +- }, +- "funding": { +- "url": "https://github.com/sponsors/ljharb" +- } +- }, +- "node_modules/is-callable": { +- "version": "1.2.7", +- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", +- "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", +- "dev": true, +- "engines": { +- "node": ">= 0.4" +- }, +- "funding": { +- "url": "https://github.com/sponsors/ljharb" +- } +- }, + "node_modules/is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", +@@ -4694,21 +5822,6 @@ + "url": "https://github.com/sponsors/ljharb" + } + }, +- "node_modules/is-date-object": { +- "version": "1.0.5", +- "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", +- "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", +- "dev": true, +- "dependencies": { +- "has-tostringtag": "^1.0.0" +- }, +- "engines": { +- "node": ">= 0.4" +- }, +- "funding": { +- "url": "https://github.com/sponsors/ljharb" +- } +- }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", +@@ -4735,6 +5848,7 @@ + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, ++ "license": "MIT", + "engines": { + "node": ">=6" + } +@@ -4751,39 +5865,16 @@ + "node": ">=0.10.0" + } + }, +- "node_modules/is-map": { +- "version": "2.0.2", +- "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", +- "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", +- "dev": true, +- "funding": { +- "url": "https://github.com/sponsors/ljharb" +- } +- }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, ++ "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, +- "node_modules/is-number-object": { +- "version": "1.0.7", +- "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", +- "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", +- "dev": true, +- "dependencies": { +- "has-tostringtag": "^1.0.0" +- }, +- "engines": { +- "node": ">= 0.4" +- }, +- "funding": { +- "url": "https://github.com/sponsors/ljharb" +- } +- }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", +@@ -4799,43 +5890,6 @@ + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, +- "node_modules/is-regex": { +- "version": "1.1.4", +- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", +- "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", +- "dev": true, +- "dependencies": { +- "call-bind": "^1.0.2", +- "has-tostringtag": "^1.0.0" +- }, +- "engines": { +- "node": ">= 0.4" +- }, +- "funding": { +- "url": "https://github.com/sponsors/ljharb" +- } +- }, +- "node_modules/is-set": { +- "version": "2.0.2", +- "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", +- "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", +- "dev": true, +- "funding": { +- "url": "https://github.com/sponsors/ljharb" +- } +- }, +- "node_modules/is-shared-array-buffer": { +- "version": "1.0.2", +- "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", +- "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", +- "dev": true, +- "dependencies": { +- "call-bind": "^1.0.2" +- }, +- "funding": { +- "url": "https://github.com/sponsors/ljharb" +- } +- }, + "node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", +@@ -4848,79 +5902,6 @@ + "url": "https://github.com/sponsors/sindresorhus" + } + }, +- "node_modules/is-string": { +- "version": "1.0.7", +- "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", +- "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", +- "dev": true, +- "dependencies": { +- "has-tostringtag": "^1.0.0" +- }, +- "engines": { +- "node": ">= 0.4" +- }, +- "funding": { +- "url": "https://github.com/sponsors/ljharb" +- } +- }, +- "node_modules/is-symbol": { +- "version": "1.0.4", +- "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", +- "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", +- "dev": true, +- "dependencies": { +- "has-symbols": "^1.0.2" +- }, +- "engines": { +- "node": ">= 0.4" +- }, +- "funding": { +- "url": "https://github.com/sponsors/ljharb" +- } +- }, +- "node_modules/is-typed-array": { +- "version": "1.1.12", +- "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", +- "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", +- "dev": true, +- "dependencies": { +- "which-typed-array": "^1.1.11" +- }, +- "engines": { +- "node": ">= 0.4" +- }, +- "funding": { +- "url": "https://github.com/sponsors/ljharb" +- } +- }, +- "node_modules/is-weakmap": { +- "version": "2.0.1", +- "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", +- "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", +- "dev": true, +- "funding": { +- "url": "https://github.com/sponsors/ljharb" +- } +- }, +- "node_modules/is-weakset": { +- "version": "2.0.2", +- "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", +- "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", +- "dev": true, +- "dependencies": { +- "call-bind": "^1.0.2", +- "get-intrinsic": "^1.1.1" +- }, +- "funding": { +- "url": "https://github.com/sponsors/ljharb" +- } +- }, +- "node_modules/isarray": { +- "version": "2.0.5", +- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", +- "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", +- "dev": true +- }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", +@@ -4937,14 +5918,15 @@ + } + }, + "node_modules/istanbul-lib-instrument": { +- "version": "6.0.0", +- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.0.tgz", +- "integrity": "sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw==", ++ "version": "6.0.3", ++ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", ++ "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "dev": true, ++ "license": "BSD-3-Clause", + "dependencies": { +- "@babel/core": "^7.12.3", +- "@babel/parser": "^7.14.7", +- "@istanbuljs/schema": "^0.1.2", ++ "@babel/core": "^7.23.9", ++ "@babel/parser": "^7.23.9", ++ "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, +@@ -4957,6 +5939,7 @@ + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, ++ "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", +@@ -4966,46 +5949,27 @@ + "node": ">=10" + } + }, +- "node_modules/istanbul-lib-report/node_modules/has-flag": { +- "version": "4.0.0", +- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", +- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", +- "dev": true, +- "engines": { +- "node": ">=8" +- } +- }, +- "node_modules/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, +- "dependencies": { +- "has-flag": "^4.0.0" +- }, +- "engines": { +- "node": ">=8" +- } +- }, + "node_modules/istanbul-lib-source-maps": { +- "version": "4.0.1", +- "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", +- "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", ++ "version": "5.0.6", ++ "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", ++ "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", + "dev": true, ++ "license": "BSD-3-Clause", + "dependencies": { ++ "@jridgewell/trace-mapping": "^0.3.23", + "debug": "^4.1.1", +- "istanbul-lib-coverage": "^3.0.0", +- "source-map": "^0.6.1" ++ "istanbul-lib-coverage": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { +- "version": "3.1.6", +- "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", +- "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", ++ "version": "3.2.0", ++ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", ++ "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", + "dev": true, ++ "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" +@@ -5014,22 +5978,39 @@ + "node": ">=8" + } + }, ++ "node_modules/jackspeak": { ++ "version": "3.4.3", ++ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", ++ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", ++ "dev": true, ++ "license": "BlueOak-1.0.0", ++ "dependencies": { ++ "@isaacs/cliui": "^8.0.2" ++ }, ++ "funding": { ++ "url": "https://github.com/sponsors/isaacs" ++ }, ++ "optionalDependencies": { ++ "@pkgjs/parseargs": "^0.11.0" ++ } ++ }, + "node_modules/jest": { +- "version": "29.7.0", +- "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", +- "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest/-/jest-30.2.0.tgz", ++ "integrity": "sha512-F26gjC0yWN8uAA5m5Ss8ZQf5nDHWGlN/xWZIh8S5SRbsEKBovwZhxGd6LJlbZYxBgCYOtreSUyb8hpXyGC5O4A==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "@jest/core": "^29.7.0", +- "@jest/types": "^29.6.3", +- "import-local": "^3.0.2", +- "jest-cli": "^29.7.0" ++ "@jest/core": "30.2.0", ++ "@jest/types": "30.2.0", ++ "import-local": "^3.2.0", ++ "jest-cli": "30.2.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { +- "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" +@@ -5041,28 +6022,85 @@ + } + }, + "node_modules/jest-changed-files": { +- "version": "29.7.0", +- "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", +- "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.2.0.tgz", ++ "integrity": "sha512-L8lR1ChrRnSdfeOvTrwZMlnWV8G/LLjQ0nG9MBclwWZidA2N5FviRki0Bvh20WRMOX31/JYvzdqTJrk5oBdydQ==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "execa": "^5.0.0", +- "jest-util": "^29.7.0", ++ "execa": "^5.1.1", ++ "jest-util": "30.2.0", + "p-limit": "^3.1.0" + }, + "engines": { +- "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/jest-changed-files/node_modules/execa": { +- "version": "5.1.1", +- "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", +- "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", ++ "node_modules/jest-changed-files/node_modules/@jest/schemas": { ++ "version": "30.0.5", ++ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", ++ "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "cross-spawn": "^7.0.3", +- "get-stream": "^6.0.0", +- "human-signals": "^2.1.0", ++ "@sinclair/typebox": "^0.34.0" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-changed-files/node_modules/@jest/types": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", ++ "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/pattern": "30.0.1", ++ "@jest/schemas": "30.0.5", ++ "@types/istanbul-lib-coverage": "^2.0.6", ++ "@types/istanbul-reports": "^3.0.4", ++ "@types/node": "*", ++ "@types/yargs": "^17.0.33", ++ "chalk": "^4.1.2" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-changed-files/node_modules/@sinclair/typebox": { ++ "version": "0.34.41", ++ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", ++ "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", ++ "dev": true, ++ "license": "MIT" ++ }, ++ "node_modules/jest-changed-files/node_modules/ci-info": { ++ "version": "4.3.1", ++ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", ++ "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", ++ "dev": true, ++ "funding": [ ++ { ++ "type": "github", ++ "url": "https://github.com/sponsors/sibiraj-s" ++ } ++ ], ++ "license": "MIT", ++ "engines": { ++ "node": ">=8" ++ } ++ }, ++ "node_modules/jest-changed-files/node_modules/execa": { ++ "version": "5.1.1", ++ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", ++ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "cross-spawn": "^7.0.3", ++ "get-stream": "^6.0.0", ++ "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", +@@ -5082,6 +6120,7 @@ + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, ++ "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } +@@ -5091,6 +6130,7 @@ + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, ++ "license": "MIT", + "engines": { + "node": ">=8" + }, +@@ -5098,11 +6138,30 @@ + "url": "https://github.com/sponsors/sindresorhus" + } + }, ++ "node_modules/jest-changed-files/node_modules/jest-util": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", ++ "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/types": "30.2.0", ++ "@types/node": "*", ++ "chalk": "^4.1.2", ++ "ci-info": "^4.2.0", ++ "graceful-fs": "^4.2.11", ++ "picomatch": "^4.0.2" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, + "node_modules/jest-changed-files/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, ++ "license": "MIT", + "engines": { + "node": ">=6" + } +@@ -5112,6 +6171,7 @@ + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, ++ "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, +@@ -5124,6 +6184,7 @@ + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, ++ "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, +@@ -5134,1448 +6195,3222 @@ + "url": "https://github.com/sponsors/sindresorhus" + } + }, ++ "node_modules/jest-changed-files/node_modules/picomatch": { ++ "version": "4.0.3", ++ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", ++ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", ++ "dev": true, ++ "license": "MIT", ++ "engines": { ++ "node": ">=12" ++ }, ++ "funding": { ++ "url": "https://github.com/sponsors/jonschlinkert" ++ } ++ }, + "node_modules/jest-changed-files/node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, ++ "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-circus": { +- "version": "29.7.0", +- "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", +- "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.2.0.tgz", ++ "integrity": "sha512-Fh0096NC3ZkFx05EP2OXCxJAREVxj1BcW/i6EWqqymcgYKWjyyDpral3fMxVcHXg6oZM7iULer9wGRFvfpl+Tg==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "@jest/environment": "^29.7.0", +- "@jest/expect": "^29.7.0", +- "@jest/test-result": "^29.7.0", +- "@jest/types": "^29.6.3", ++ "@jest/environment": "30.2.0", ++ "@jest/expect": "30.2.0", ++ "@jest/test-result": "30.2.0", ++ "@jest/types": "30.2.0", + "@types/node": "*", +- "chalk": "^4.0.0", ++ "chalk": "^4.1.2", + "co": "^4.6.0", +- "dedent": "^1.0.0", +- "is-generator-fn": "^2.0.0", +- "jest-each": "^29.7.0", +- "jest-matcher-utils": "^29.7.0", +- "jest-message-util": "^29.7.0", +- "jest-runtime": "^29.7.0", +- "jest-snapshot": "^29.7.0", +- "jest-util": "^29.7.0", ++ "dedent": "^1.6.0", ++ "is-generator-fn": "^2.1.0", ++ "jest-each": "30.2.0", ++ "jest-matcher-utils": "30.2.0", ++ "jest-message-util": "30.2.0", ++ "jest-runtime": "30.2.0", ++ "jest-snapshot": "30.2.0", ++ "jest-util": "30.2.0", + "p-limit": "^3.1.0", +- "pretty-format": "^29.7.0", +- "pure-rand": "^6.0.0", ++ "pretty-format": "30.2.0", ++ "pure-rand": "^7.0.0", + "slash": "^3.0.0", +- "stack-utils": "^2.0.3" ++ "stack-utils": "^2.0.6" + }, + "engines": { +- "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.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/@jest/environment": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz", ++ "integrity": "sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "color-convert": "^2.0.1" ++ "@jest/fake-timers": "30.2.0", ++ "@jest/types": "30.2.0", ++ "@types/node": "*", ++ "jest-mock": "30.2.0" + }, + "engines": { +- "node": ">=8" +- }, +- "funding": { +- "url": "https://github.com/chalk/ansi-styles?sponsor=1" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "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/@jest/expect": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.2.0.tgz", ++ "integrity": "sha512-V9yxQK5erfzx99Sf+7LbhBwNWEZ9eZay8qQ9+JSC0TrMR1pMDHLMY+BnVPacWU6Jamrh252/IKo4F1Xn/zfiqA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "ansi-styles": "^4.1.0", +- "supports-color": "^7.1.0" ++ "expect": "30.2.0", ++ "jest-snapshot": "30.2.0" + }, + "engines": { +- "node": ">=10" +- }, +- "funding": { +- "url": "https://github.com/chalk/chalk?sponsor=1" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/jest-circus/node_modules/color-convert": { +- "version": "2.0.1", +- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", +- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", ++ "node_modules/jest-circus/node_modules/@jest/expect-utils": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz", ++ "integrity": "sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "color-name": "~1.1.4" ++ "@jest/get-type": "30.1.0" + }, + "engines": { +- "node": ">=7.0.0" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/jest-circus/node_modules/color-name": { +- "version": "1.1.4", +- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", +- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", +- "dev": true +- }, +- "node_modules/jest-circus/node_modules/has-flag": { +- "version": "4.0.0", +- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", +- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", ++ "node_modules/jest-circus/node_modules/@jest/fake-timers": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz", ++ "integrity": "sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==", + "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/types": "30.2.0", ++ "@sinonjs/fake-timers": "^13.0.0", ++ "@types/node": "*", ++ "jest-message-util": "30.2.0", ++ "jest-mock": "30.2.0", ++ "jest-util": "30.2.0" ++ }, + "engines": { +- "node": ">=8" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "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==", ++ "node_modules/jest-circus/node_modules/@jest/schemas": { ++ "version": "30.0.5", ++ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", ++ "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "has-flag": "^4.0.0" ++ "@sinclair/typebox": "^0.34.0" + }, + "engines": { +- "node": ">=8" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/jest-cli": { +- "version": "29.7.0", +- "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", +- "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", ++ "node_modules/jest-circus/node_modules/@jest/transform": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", ++ "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "@jest/core": "^29.7.0", +- "@jest/test-result": "^29.7.0", +- "@jest/types": "^29.6.3", +- "chalk": "^4.0.0", +- "create-jest": "^29.7.0", +- "exit": "^0.1.2", +- "import-local": "^3.0.2", +- "jest-config": "^29.7.0", +- "jest-util": "^29.7.0", +- "jest-validate": "^29.7.0", +- "yargs": "^17.3.1" +- }, +- "bin": { +- "jest": "bin/jest.js" ++ "@babel/core": "^7.27.4", ++ "@jest/types": "30.2.0", ++ "@jridgewell/trace-mapping": "^0.3.25", ++ "babel-plugin-istanbul": "^7.0.1", ++ "chalk": "^4.1.2", ++ "convert-source-map": "^2.0.0", ++ "fast-json-stable-stringify": "^2.1.0", ++ "graceful-fs": "^4.2.11", ++ "jest-haste-map": "30.2.0", ++ "jest-regex-util": "30.0.1", ++ "jest-util": "30.2.0", ++ "micromatch": "^4.0.8", ++ "pirates": "^4.0.7", ++ "slash": "^3.0.0", ++ "write-file-atomic": "^5.0.1" + }, + "engines": { +- "node": "^14.15.0 || ^16.10.0 || >=18.0.0" +- }, +- "peerDependencies": { +- "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" +- }, +- "peerDependenciesMeta": { +- "node-notifier": { +- "optional": true +- } ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/jest-cli/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/@jest/types": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", ++ "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "color-convert": "^2.0.1" ++ "@jest/pattern": "30.0.1", ++ "@jest/schemas": "30.0.5", ++ "@types/istanbul-lib-coverage": "^2.0.6", ++ "@types/istanbul-reports": "^3.0.4", ++ "@types/node": "*", ++ "@types/yargs": "^17.0.33", ++ "chalk": "^4.1.2" + }, + "engines": { +- "node": ">=8" +- }, +- "funding": { +- "url": "https://github.com/chalk/ansi-styles?sponsor=1" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/jest-cli/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/@sinclair/typebox": { ++ "version": "0.34.41", ++ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", ++ "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", + "dev": true, ++ "license": "MIT" ++ }, ++ "node_modules/jest-circus/node_modules/@sinonjs/fake-timers": { ++ "version": "13.0.5", ++ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", ++ "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", ++ "dev": true, ++ "license": "BSD-3-Clause", + "dependencies": { +- "ansi-styles": "^4.1.0", +- "supports-color": "^7.1.0" +- }, ++ "@sinonjs/commons": "^3.0.1" ++ } ++ }, ++ "node_modules/jest-circus/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/chalk?sponsor=1" ++ "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, +- "node_modules/jest-cli/node_modules/color-convert": { +- "version": "2.0.1", +- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", +- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", ++ "node_modules/jest-circus/node_modules/babel-plugin-istanbul": { ++ "version": "7.0.1", ++ "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", ++ "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", + "dev": true, ++ "license": "BSD-3-Clause", ++ "workspaces": [ ++ "test/babel-8" ++ ], + "dependencies": { +- "color-name": "~1.1.4" ++ "@babel/helper-plugin-utils": "^7.0.0", ++ "@istanbuljs/load-nyc-config": "^1.0.0", ++ "@istanbuljs/schema": "^0.1.3", ++ "istanbul-lib-instrument": "^6.0.2", ++ "test-exclude": "^6.0.0" + }, + "engines": { +- "node": ">=7.0.0" ++ "node": ">=12" + } + }, +- "node_modules/jest-cli/node_modules/color-name": { +- "version": "1.1.4", +- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", +- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", +- "dev": true +- }, +- "node_modules/jest-cli/node_modules/has-flag": { +- "version": "4.0.0", +- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", +- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", ++ "node_modules/jest-circus/node_modules/ci-info": { ++ "version": "4.3.1", ++ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", ++ "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", + "dev": true, ++ "funding": [ ++ { ++ "type": "github", ++ "url": "https://github.com/sponsors/sibiraj-s" ++ } ++ ], ++ "license": "MIT", + "engines": { + "node": ">=8" + } + }, +- "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==", ++ "node_modules/jest-circus/node_modules/expect": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", ++ "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "has-flag": "^4.0.0" ++ "@jest/expect-utils": "30.2.0", ++ "@jest/get-type": "30.1.0", ++ "jest-matcher-utils": "30.2.0", ++ "jest-message-util": "30.2.0", ++ "jest-mock": "30.2.0", ++ "jest-util": "30.2.0" + }, + "engines": { +- "node": ">=8" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/jest-config": { +- "version": "29.7.0", +- "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", +- "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", ++ "node_modules/jest-circus/node_modules/jest-diff": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz", ++ "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "@babel/core": "^7.11.6", +- "@jest/test-sequencer": "^29.7.0", +- "@jest/types": "^29.6.3", +- "babel-jest": "^29.7.0", +- "chalk": "^4.0.0", +- "ci-info": "^3.2.0", +- "deepmerge": "^4.2.2", +- "glob": "^7.1.3", +- "graceful-fs": "^4.2.9", +- "jest-circus": "^29.7.0", +- "jest-environment-node": "^29.7.0", +- "jest-get-type": "^29.6.3", +- "jest-regex-util": "^29.6.3", +- "jest-resolve": "^29.7.0", +- "jest-runner": "^29.7.0", +- "jest-util": "^29.7.0", +- "jest-validate": "^29.7.0", +- "micromatch": "^4.0.4", +- "parse-json": "^5.2.0", +- "pretty-format": "^29.7.0", +- "slash": "^3.0.0", +- "strip-json-comments": "^3.1.1" ++ "@jest/diff-sequences": "30.0.1", ++ "@jest/get-type": "30.1.0", ++ "chalk": "^4.1.2", ++ "pretty-format": "30.2.0" + }, + "engines": { +- "node": "^14.15.0 || ^16.10.0 || >=18.0.0" +- }, +- "peerDependencies": { +- "@types/node": "*", +- "ts-node": ">=9.0.0" +- }, +- "peerDependenciesMeta": { +- "@types/node": { +- "optional": true +- }, +- "ts-node": { +- "optional": true +- } ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "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-circus/node_modules/jest-haste-map": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", ++ "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "color-convert": "^2.0.1" ++ "@jest/types": "30.2.0", ++ "@types/node": "*", ++ "anymatch": "^3.1.3", ++ "fb-watchman": "^2.0.2", ++ "graceful-fs": "^4.2.11", ++ "jest-regex-util": "30.0.1", ++ "jest-util": "30.2.0", ++ "jest-worker": "30.2.0", ++ "micromatch": "^4.0.8", ++ "walker": "^1.0.8" + }, + "engines": { +- "node": ">=8" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, +- "funding": { +- "url": "https://github.com/chalk/ansi-styles?sponsor=1" ++ "optionalDependencies": { ++ "fsevents": "^2.3.3" + } + }, +- "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-circus/node_modules/jest-matcher-utils": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz", ++ "integrity": "sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "ansi-styles": "^4.1.0", +- "supports-color": "^7.1.0" ++ "@jest/get-type": "30.1.0", ++ "chalk": "^4.1.2", ++ "jest-diff": "30.2.0", ++ "pretty-format": "30.2.0" + }, + "engines": { +- "node": ">=10" +- }, +- "funding": { +- "url": "https://github.com/chalk/chalk?sponsor=1" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/jest-config/node_modules/color-convert": { +- "version": "2.0.1", +- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", +- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", ++ "node_modules/jest-circus/node_modules/jest-message-util": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", ++ "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "color-name": "~1.1.4" ++ "@babel/code-frame": "^7.27.1", ++ "@jest/types": "30.2.0", ++ "@types/stack-utils": "^2.0.3", ++ "chalk": "^4.1.2", ++ "graceful-fs": "^4.2.11", ++ "micromatch": "^4.0.8", ++ "pretty-format": "30.2.0", ++ "slash": "^3.0.0", ++ "stack-utils": "^2.0.6" + }, + "engines": { +- "node": ">=7.0.0" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/jest-config/node_modules/color-name": { +- "version": "1.1.4", +- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", +- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", +- "dev": true ++ "node_modules/jest-circus/node_modules/jest-mock": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", ++ "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/types": "30.2.0", ++ "@types/node": "*", ++ "jest-util": "30.2.0" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } + }, +- "node_modules/jest-config/node_modules/has-flag": { +- "version": "4.0.0", +- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", +- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", ++ "node_modules/jest-circus/node_modules/jest-regex-util": { ++ "version": "30.0.1", ++ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", ++ "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "dev": true, ++ "license": "MIT", + "engines": { +- "node": ">=8" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "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==", ++ "node_modules/jest-circus/node_modules/jest-snapshot": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.2.0.tgz", ++ "integrity": "sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "has-flag": "^4.0.0" ++ "@babel/core": "^7.27.4", ++ "@babel/generator": "^7.27.5", ++ "@babel/plugin-syntax-jsx": "^7.27.1", ++ "@babel/plugin-syntax-typescript": "^7.27.1", ++ "@babel/types": "^7.27.3", ++ "@jest/expect-utils": "30.2.0", ++ "@jest/get-type": "30.1.0", ++ "@jest/snapshot-utils": "30.2.0", ++ "@jest/transform": "30.2.0", ++ "@jest/types": "30.2.0", ++ "babel-preset-current-node-syntax": "^1.2.0", ++ "chalk": "^4.1.2", ++ "expect": "30.2.0", ++ "graceful-fs": "^4.2.11", ++ "jest-diff": "30.2.0", ++ "jest-matcher-utils": "30.2.0", ++ "jest-message-util": "30.2.0", ++ "jest-util": "30.2.0", ++ "pretty-format": "30.2.0", ++ "semver": "^7.7.2", ++ "synckit": "^0.11.8" + }, + "engines": { +- "node": ">=8" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/jest-diff": { +- "version": "29.7.0", +- "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", +- "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", ++ "node_modules/jest-circus/node_modules/jest-util": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", ++ "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "chalk": "^4.0.0", +- "diff-sequences": "^29.6.3", +- "jest-get-type": "^29.6.3", +- "pretty-format": "^29.7.0" ++ "@jest/types": "30.2.0", ++ "@types/node": "*", ++ "chalk": "^4.1.2", ++ "ci-info": "^4.2.0", ++ "graceful-fs": "^4.2.11", ++ "picomatch": "^4.0.2" + }, + "engines": { +- "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.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-circus/node_modules/jest-util/node_modules/picomatch": { ++ "version": "4.0.3", ++ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", ++ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, +- "dependencies": { +- "color-convert": "^2.0.1" +- }, ++ "license": "MIT", + "engines": { +- "node": ">=8" ++ "node": ">=12" + }, + "funding": { +- "url": "https://github.com/chalk/ansi-styles?sponsor=1" ++ "url": "https://github.com/sponsors/jonschlinkert" + } + }, +- "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-circus/node_modules/jest-worker": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", ++ "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "ansi-styles": "^4.1.0", +- "supports-color": "^7.1.0" ++ "@types/node": "*", ++ "@ungap/structured-clone": "^1.3.0", ++ "jest-util": "30.2.0", ++ "merge-stream": "^2.0.0", ++ "supports-color": "^8.1.1" + }, + "engines": { +- "node": ">=10" +- }, +- "funding": { +- "url": "https://github.com/chalk/chalk?sponsor=1" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/jest-diff/node_modules/color-convert": { +- "version": "2.0.1", +- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", +- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", ++ "node_modules/jest-circus/node_modules/micromatch": { ++ "version": "4.0.8", ++ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", ++ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "color-name": "~1.1.4" ++ "braces": "^3.0.3", ++ "picomatch": "^2.3.1" + }, + "engines": { +- "node": ">=7.0.0" ++ "node": ">=8.6" + } + }, +- "node_modules/jest-diff/node_modules/color-name": { +- "version": "1.1.4", +- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", +- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", +- "dev": true +- }, +- "node_modules/jest-diff/node_modules/has-flag": { +- "version": "4.0.0", +- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", +- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", ++ "node_modules/jest-circus/node_modules/pretty-format": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", ++ "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/schemas": "30.0.5", ++ "ansi-styles": "^5.2.0", ++ "react-is": "^18.3.1" ++ }, + "engines": { +- "node": ">=8" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "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==", ++ "node_modules/jest-circus/node_modules/signal-exit": { ++ "version": "4.1.0", ++ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", ++ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, +- "dependencies": { +- "has-flag": "^4.0.0" +- }, ++ "license": "ISC", + "engines": { +- "node": ">=8" ++ "node": ">=14" ++ }, ++ "funding": { ++ "url": "https://github.com/sponsors/isaacs" + } + }, +- "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-circus/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": { +- "detect-newline": "^3.0.0" ++ "has-flag": "^4.0.0" + }, + "engines": { +- "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ "node": ">=10" ++ }, ++ "funding": { ++ "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, +- "node_modules/jest-each": { +- "version": "29.7.0", +- "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", +- "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", ++ "node_modules/jest-circus/node_modules/write-file-atomic": { ++ "version": "5.0.1", ++ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", ++ "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dev": true, ++ "license": "ISC", + "dependencies": { +- "@jest/types": "^29.6.3", +- "chalk": "^4.0.0", +- "jest-get-type": "^29.6.3", +- "jest-util": "^29.7.0", +- "pretty-format": "^29.7.0" ++ "imurmurhash": "^0.1.4", ++ "signal-exit": "^4.0.1" + }, + "engines": { +- "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ "node": "^14.17.0 || ^16.13.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==", +- "dev": true, +- "dependencies": { +- "color-convert": "^2.0.1" ++ "node_modules/jest-cli": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.2.0.tgz", ++ "integrity": "sha512-Os9ukIvADX/A9sLt6Zse3+nmHtHaE6hqOsjQtNiugFTbKRHYIYtZXNGNK9NChseXy7djFPjndX1tL0sCTlfpAA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/core": "30.2.0", ++ "@jest/test-result": "30.2.0", ++ "@jest/types": "30.2.0", ++ "chalk": "^4.1.2", ++ "exit-x": "^0.2.2", ++ "import-local": "^3.2.0", ++ "jest-config": "30.2.0", ++ "jest-util": "30.2.0", ++ "jest-validate": "30.2.0", ++ "yargs": "^17.7.2" ++ }, ++ "bin": { ++ "jest": "bin/jest.js" + }, + "engines": { +- "node": ">=8" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, +- "funding": { +- "url": "https://github.com/chalk/ansi-styles?sponsor=1" ++ "peerDependencies": { ++ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" ++ }, ++ "peerDependenciesMeta": { ++ "node-notifier": { ++ "optional": true ++ } + } + }, +- "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-cli/node_modules/@jest/schemas": { ++ "version": "30.0.5", ++ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", ++ "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "ansi-styles": "^4.1.0", +- "supports-color": "^7.1.0" ++ "@sinclair/typebox": "^0.34.0" + }, + "engines": { +- "node": ">=10" +- }, +- "funding": { +- "url": "https://github.com/chalk/chalk?sponsor=1" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/jest-each/node_modules/color-convert": { +- "version": "2.0.1", +- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", +- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", ++ "node_modules/jest-cli/node_modules/@jest/types": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", ++ "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "color-name": "~1.1.4" ++ "@jest/pattern": "30.0.1", ++ "@jest/schemas": "30.0.5", ++ "@types/istanbul-lib-coverage": "^2.0.6", ++ "@types/istanbul-reports": "^3.0.4", ++ "@types/node": "*", ++ "@types/yargs": "^17.0.33", ++ "chalk": "^4.1.2" + }, + "engines": { +- "node": ">=7.0.0" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/jest-each/node_modules/color-name": { +- "version": "1.1.4", +- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", +- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", +- "dev": true ++ "node_modules/jest-cli/node_modules/@sinclair/typebox": { ++ "version": "0.34.41", ++ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", ++ "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", ++ "dev": true, ++ "license": "MIT" + }, +- "node_modules/jest-each/node_modules/has-flag": { +- "version": "4.0.0", +- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", +- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", ++ "node_modules/jest-cli/node_modules/ci-info": { ++ "version": "4.3.1", ++ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", ++ "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", + "dev": true, ++ "funding": [ ++ { ++ "type": "github", ++ "url": "https://github.com/sponsors/sibiraj-s" ++ } ++ ], ++ "license": "MIT", + "engines": { + "node": ">=8" + } + }, +- "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==", ++ "node_modules/jest-cli/node_modules/jest-util": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", ++ "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "has-flag": "^4.0.0" ++ "@jest/types": "30.2.0", ++ "@types/node": "*", ++ "chalk": "^4.1.2", ++ "ci-info": "^4.2.0", ++ "graceful-fs": "^4.2.11", ++ "picomatch": "^4.0.2" + }, + "engines": { +- "node": ">=8" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/jest-environment-jsdom": { +- "version": "29.7.0", +- "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", +- "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", ++ "node_modules/jest-cli/node_modules/picomatch": { ++ "version": "4.0.3", ++ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", ++ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, +- "dependencies": { +- "@jest/environment": "^29.7.0", +- "@jest/fake-timers": "^29.7.0", +- "@jest/types": "^29.6.3", +- "@types/jsdom": "^20.0.0", +- "@types/node": "*", +- "jest-mock": "^29.7.0", +- "jest-util": "^29.7.0", +- "jsdom": "^20.0.0" ++ "license": "MIT", ++ "engines": { ++ "node": ">=12" ++ }, ++ "funding": { ++ "url": "https://github.com/sponsors/jonschlinkert" ++ } ++ }, ++ "node_modules/jest-config": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.2.0.tgz", ++ "integrity": "sha512-g4WkyzFQVWHtu6uqGmQR4CQxz/CH3yDSlhzXMWzNjDx843gYjReZnMRanjRCq5XZFuQrGDxgUaiYWE8BRfVckA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@babel/core": "^7.27.4", ++ "@jest/get-type": "30.1.0", ++ "@jest/pattern": "30.0.1", ++ "@jest/test-sequencer": "30.2.0", ++ "@jest/types": "30.2.0", ++ "babel-jest": "30.2.0", ++ "chalk": "^4.1.2", ++ "ci-info": "^4.2.0", ++ "deepmerge": "^4.3.1", ++ "glob": "^10.3.10", ++ "graceful-fs": "^4.2.11", ++ "jest-circus": "30.2.0", ++ "jest-docblock": "30.2.0", ++ "jest-environment-node": "30.2.0", ++ "jest-regex-util": "30.0.1", ++ "jest-resolve": "30.2.0", ++ "jest-runner": "30.2.0", ++ "jest-util": "30.2.0", ++ "jest-validate": "30.2.0", ++ "micromatch": "^4.0.8", ++ "parse-json": "^5.2.0", ++ "pretty-format": "30.2.0", ++ "slash": "^3.0.0", ++ "strip-json-comments": "^3.1.1" + }, + "engines": { +- "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { +- "canvas": "^2.5.0" ++ "@types/node": "*", ++ "esbuild-register": ">=3.4.0", ++ "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { +- "canvas": { ++ "@types/node": { ++ "optional": true ++ }, ++ "esbuild-register": { ++ "optional": true ++ }, ++ "ts-node": { + "optional": true + } + } + }, +- "node_modules/jest-environment-jsdom/node_modules/cssstyle": { +- "version": "2.3.0", +- "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", +- "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", ++ "node_modules/jest-config/node_modules/@jest/schemas": { ++ "version": "30.0.5", ++ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", ++ "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "cssom": "~0.3.6" ++ "@sinclair/typebox": "^0.34.0" + }, + "engines": { +- "node": ">=8" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/jest-environment-jsdom/node_modules/cssstyle/node_modules/cssom": { +- "version": "0.3.8", +- "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", +- "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", +- "dev": true +- }, +- "node_modules/jest-environment-jsdom/node_modules/data-urls": { +- "version": "3.0.2", +- "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", +- "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", ++ "node_modules/jest-config/node_modules/@jest/types": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", ++ "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "abab": "^2.0.6", +- "whatwg-mimetype": "^3.0.0", +- "whatwg-url": "^11.0.0" ++ "@jest/pattern": "30.0.1", ++ "@jest/schemas": "30.0.5", ++ "@types/istanbul-lib-coverage": "^2.0.6", ++ "@types/istanbul-reports": "^3.0.4", ++ "@types/node": "*", ++ "@types/yargs": "^17.0.33", ++ "chalk": "^4.1.2" + }, + "engines": { +- "node": ">=12" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/jest-environment-jsdom/node_modules/jsdom": { +- "version": "20.0.3", +- "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", +- "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", ++ "node_modules/jest-config/node_modules/@sinclair/typebox": { ++ "version": "0.34.41", ++ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", ++ "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", + "dev": true, +- "dependencies": { +- "abab": "^2.0.6", +- "acorn": "^8.8.1", +- "acorn-globals": "^7.0.0", +- "cssom": "^0.5.0", +- "cssstyle": "^2.3.0", +- "data-urls": "^3.0.2", +- "decimal.js": "^10.4.2", +- "domexception": "^4.0.0", +- "escodegen": "^2.0.0", +- "form-data": "^4.0.0", +- "html-encoding-sniffer": "^3.0.0", +- "http-proxy-agent": "^5.0.0", +- "https-proxy-agent": "^5.0.1", +- "is-potential-custom-element-name": "^1.0.1", +- "nwsapi": "^2.2.2", +- "parse5": "^7.1.1", +- "saxes": "^6.0.0", +- "symbol-tree": "^3.2.4", +- "tough-cookie": "^4.1.2", +- "w3c-xmlserializer": "^4.0.0", +- "webidl-conversions": "^7.0.0", +- "whatwg-encoding": "^2.0.0", +- "whatwg-mimetype": "^3.0.0", +- "whatwg-url": "^11.0.0", +- "ws": "^8.11.0", +- "xml-name-validator": "^4.0.0" +- }, ++ "license": "MIT" ++ }, ++ "node_modules/jest-config/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": ">=14" +- }, +- "peerDependencies": { +- "canvas": "^2.5.0" ++ "node": ">=10" + }, +- "peerDependenciesMeta": { +- "canvas": { +- "optional": true +- } ++ "funding": { ++ "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, +- "node_modules/jest-environment-jsdom/node_modules/tr46": { +- "version": "3.0.0", +- "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", +- "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", ++ "node_modules/jest-config/node_modules/brace-expansion": { ++ "version": "2.0.2", ++ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", ++ "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "punycode": "^2.1.1" +- }, ++ "balanced-match": "^1.0.0" ++ } ++ }, ++ "node_modules/jest-config/node_modules/ci-info": { ++ "version": "4.3.1", ++ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", ++ "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", ++ "dev": true, ++ "funding": [ ++ { ++ "type": "github", ++ "url": "https://github.com/sponsors/sibiraj-s" ++ } ++ ], ++ "license": "MIT", + "engines": { +- "node": ">=12" ++ "node": ">=8" + } + }, +- "node_modules/jest-environment-jsdom/node_modules/whatwg-url": { +- "version": "11.0.0", +- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", +- "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", ++ "node_modules/jest-config/node_modules/glob": { ++ "version": "10.4.5", ++ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", ++ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, ++ "license": "ISC", + "dependencies": { +- "tr46": "^3.0.0", +- "webidl-conversions": "^7.0.0" ++ "foreground-child": "^3.1.0", ++ "jackspeak": "^3.1.2", ++ "minimatch": "^9.0.4", ++ "minipass": "^7.1.2", ++ "package-json-from-dist": "^1.0.0", ++ "path-scurry": "^1.11.1" ++ }, ++ "bin": { ++ "glob": "dist/esm/bin.mjs" ++ }, ++ "funding": { ++ "url": "https://github.com/sponsors/isaacs" ++ } ++ }, ++ "node_modules/jest-config/node_modules/jest-regex-util": { ++ "version": "30.0.1", ++ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", ++ "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", ++ "dev": true, ++ "license": "MIT", ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-config/node_modules/jest-util": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", ++ "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/types": "30.2.0", ++ "@types/node": "*", ++ "chalk": "^4.1.2", ++ "ci-info": "^4.2.0", ++ "graceful-fs": "^4.2.11", ++ "picomatch": "^4.0.2" + }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-config/node_modules/jest-util/node_modules/picomatch": { ++ "version": "4.0.3", ++ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", ++ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", ++ "dev": true, ++ "license": "MIT", + "engines": { + "node": ">=12" ++ }, ++ "funding": { ++ "url": "https://github.com/sponsors/jonschlinkert" + } + }, +- "node_modules/jest-environment-node": { ++ "node_modules/jest-config/node_modules/micromatch": { ++ "version": "4.0.8", ++ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", ++ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "braces": "^3.0.3", ++ "picomatch": "^2.3.1" ++ }, ++ "engines": { ++ "node": ">=8.6" ++ } ++ }, ++ "node_modules/jest-config/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/jest-config/node_modules/pretty-format": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", ++ "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/schemas": "30.0.5", ++ "ansi-styles": "^5.2.0", ++ "react-is": "^18.3.1" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-diff": { + "version": "29.7.0", +- "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", +- "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", ++ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", ++ "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "dependencies": { +- "@jest/environment": "^29.7.0", +- "@jest/fake-timers": "^29.7.0", +- "@jest/types": "^29.6.3", +- "@types/node": "*", +- "jest-mock": "^29.7.0", +- "jest-util": "^29.7.0" ++ "chalk": "^4.0.0", ++ "diff-sequences": "^29.6.3", ++ "jest-get-type": "^29.6.3", ++ "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, +- "node_modules/jest-get-type": { +- "version": "29.6.3", +- "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", +- "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", ++ "node_modules/jest-docblock": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz", ++ "integrity": "sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==", + "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "detect-newline": "^3.1.0" ++ }, + "engines": { +- "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/jest-haste-map": { ++ "node_modules/jest-each": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.2.0.tgz", ++ "integrity": "sha512-lpWlJlM7bCUf1mfmuqTA8+j2lNURW9eNafOy99knBM01i5CQeY5UH1vZjgT9071nDJac1M4XsbyI44oNOdhlDQ==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/get-type": "30.1.0", ++ "@jest/types": "30.2.0", ++ "chalk": "^4.1.2", ++ "jest-util": "30.2.0", ++ "pretty-format": "30.2.0" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-each/node_modules/@jest/schemas": { ++ "version": "30.0.5", ++ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", ++ "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@sinclair/typebox": "^0.34.0" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-each/node_modules/@jest/types": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", ++ "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/pattern": "30.0.1", ++ "@jest/schemas": "30.0.5", ++ "@types/istanbul-lib-coverage": "^2.0.6", ++ "@types/istanbul-reports": "^3.0.4", ++ "@types/node": "*", ++ "@types/yargs": "^17.0.33", ++ "chalk": "^4.1.2" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-each/node_modules/@sinclair/typebox": { ++ "version": "0.34.41", ++ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", ++ "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", ++ "dev": true, ++ "license": "MIT" ++ }, ++ "node_modules/jest-each/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/jest-each/node_modules/ci-info": { ++ "version": "4.3.1", ++ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", ++ "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", ++ "dev": true, ++ "funding": [ ++ { ++ "type": "github", ++ "url": "https://github.com/sponsors/sibiraj-s" ++ } ++ ], ++ "license": "MIT", ++ "engines": { ++ "node": ">=8" ++ } ++ }, ++ "node_modules/jest-each/node_modules/jest-util": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", ++ "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/types": "30.2.0", ++ "@types/node": "*", ++ "chalk": "^4.1.2", ++ "ci-info": "^4.2.0", ++ "graceful-fs": "^4.2.11", ++ "picomatch": "^4.0.2" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-each/node_modules/picomatch": { ++ "version": "4.0.3", ++ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", ++ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", ++ "dev": true, ++ "license": "MIT", ++ "engines": { ++ "node": ">=12" ++ }, ++ "funding": { ++ "url": "https://github.com/sponsors/jonschlinkert" ++ } ++ }, ++ "node_modules/jest-each/node_modules/pretty-format": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", ++ "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/schemas": "30.0.5", ++ "ansi-styles": "^5.2.0", ++ "react-is": "^18.3.1" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-environment-jsdom": { + "version": "29.7.0", +- "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", +- "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", ++ "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", ++ "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", + "dev": true, + "dependencies": { ++ "@jest/environment": "^29.7.0", ++ "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", +- "@types/graceful-fs": "^4.1.3", ++ "@types/jsdom": "^20.0.0", + "@types/node": "*", +- "anymatch": "^3.0.3", +- "fb-watchman": "^2.0.0", +- "graceful-fs": "^4.2.9", +- "jest-regex-util": "^29.6.3", ++ "jest-mock": "^29.7.0", + "jest-util": "^29.7.0", +- "jest-worker": "^29.7.0", +- "micromatch": "^4.0.4", +- "walker": "^1.0.8" ++ "jsdom": "^20.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, +- "optionalDependencies": { +- "fsevents": "^2.3.2" ++ "peerDependencies": { ++ "canvas": "^2.5.0" ++ }, ++ "peerDependenciesMeta": { ++ "canvas": { ++ "optional": true ++ } + } + }, +- "node_modules/jest-leak-detector": { +- "version": "29.7.0", +- "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", +- "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", ++ "node_modules/jest-environment-jsdom/node_modules/cssstyle": { ++ "version": "2.3.0", ++ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", ++ "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "dependencies": { +- "jest-get-type": "^29.6.3", +- "pretty-format": "^29.7.0" ++ "cssom": "~0.3.6" + }, + "engines": { +- "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ "node": ">=8" + } + }, +- "node_modules/jest-matcher-utils": { +- "version": "29.7.0", +- "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", +- "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", ++ "node_modules/jest-environment-jsdom/node_modules/cssstyle/node_modules/cssom": { ++ "version": "0.3.8", ++ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", ++ "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", ++ "dev": true ++ }, ++ "node_modules/jest-environment-jsdom/node_modules/data-urls": { ++ "version": "3.0.2", ++ "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", ++ "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "dev": true, + "dependencies": { +- "chalk": "^4.0.0", +- "jest-diff": "^29.7.0", +- "jest-get-type": "^29.6.3", +- "pretty-format": "^29.7.0" ++ "abab": "^2.0.6", ++ "whatwg-mimetype": "^3.0.0", ++ "whatwg-url": "^11.0.0" ++ }, ++ "engines": { ++ "node": ">=12" ++ } ++ }, ++ "node_modules/jest-environment-jsdom/node_modules/jsdom": { ++ "version": "20.0.3", ++ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", ++ "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", ++ "dev": true, ++ "dependencies": { ++ "abab": "^2.0.6", ++ "acorn": "^8.8.1", ++ "acorn-globals": "^7.0.0", ++ "cssom": "^0.5.0", ++ "cssstyle": "^2.3.0", ++ "data-urls": "^3.0.2", ++ "decimal.js": "^10.4.2", ++ "domexception": "^4.0.0", ++ "escodegen": "^2.0.0", ++ "form-data": "^4.0.0", ++ "html-encoding-sniffer": "^3.0.0", ++ "http-proxy-agent": "^5.0.0", ++ "https-proxy-agent": "^5.0.1", ++ "is-potential-custom-element-name": "^1.0.1", ++ "nwsapi": "^2.2.2", ++ "parse5": "^7.1.1", ++ "saxes": "^6.0.0", ++ "symbol-tree": "^3.2.4", ++ "tough-cookie": "^4.1.2", ++ "w3c-xmlserializer": "^4.0.0", ++ "webidl-conversions": "^7.0.0", ++ "whatwg-encoding": "^2.0.0", ++ "whatwg-mimetype": "^3.0.0", ++ "whatwg-url": "^11.0.0", ++ "ws": "^8.11.0", ++ "xml-name-validator": "^4.0.0" ++ }, ++ "engines": { ++ "node": ">=14" ++ }, ++ "peerDependencies": { ++ "canvas": "^2.5.0" ++ }, ++ "peerDependenciesMeta": { ++ "canvas": { ++ "optional": true ++ } ++ } ++ }, ++ "node_modules/jest-environment-jsdom/node_modules/tr46": { ++ "version": "3.0.0", ++ "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", ++ "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", ++ "dev": true, ++ "dependencies": { ++ "punycode": "^2.1.1" ++ }, ++ "engines": { ++ "node": ">=12" ++ } ++ }, ++ "node_modules/jest-environment-jsdom/node_modules/whatwg-url": { ++ "version": "11.0.0", ++ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", ++ "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", ++ "dev": true, ++ "dependencies": { ++ "tr46": "^3.0.0", ++ "webidl-conversions": "^7.0.0" ++ }, ++ "engines": { ++ "node": ">=12" ++ } ++ }, ++ "node_modules/jest-environment-node": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.2.0.tgz", ++ "integrity": "sha512-ElU8v92QJ9UrYsKrxDIKCxu6PfNj4Hdcktcn0JX12zqNdqWHB0N+hwOnnBBXvjLd2vApZtuLUGs1QSY+MsXoNA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/environment": "30.2.0", ++ "@jest/fake-timers": "30.2.0", ++ "@jest/types": "30.2.0", ++ "@types/node": "*", ++ "jest-mock": "30.2.0", ++ "jest-util": "30.2.0", ++ "jest-validate": "30.2.0" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-environment-node/node_modules/@jest/environment": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz", ++ "integrity": "sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/fake-timers": "30.2.0", ++ "@jest/types": "30.2.0", ++ "@types/node": "*", ++ "jest-mock": "30.2.0" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-environment-node/node_modules/@jest/fake-timers": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz", ++ "integrity": "sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/types": "30.2.0", ++ "@sinonjs/fake-timers": "^13.0.0", ++ "@types/node": "*", ++ "jest-message-util": "30.2.0", ++ "jest-mock": "30.2.0", ++ "jest-util": "30.2.0" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-environment-node/node_modules/@jest/schemas": { ++ "version": "30.0.5", ++ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", ++ "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@sinclair/typebox": "^0.34.0" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-environment-node/node_modules/@jest/types": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", ++ "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/pattern": "30.0.1", ++ "@jest/schemas": "30.0.5", ++ "@types/istanbul-lib-coverage": "^2.0.6", ++ "@types/istanbul-reports": "^3.0.4", ++ "@types/node": "*", ++ "@types/yargs": "^17.0.33", ++ "chalk": "^4.1.2" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-environment-node/node_modules/@sinclair/typebox": { ++ "version": "0.34.41", ++ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", ++ "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", ++ "dev": true, ++ "license": "MIT" ++ }, ++ "node_modules/jest-environment-node/node_modules/@sinonjs/fake-timers": { ++ "version": "13.0.5", ++ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", ++ "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", ++ "dev": true, ++ "license": "BSD-3-Clause", ++ "dependencies": { ++ "@sinonjs/commons": "^3.0.1" ++ } ++ }, ++ "node_modules/jest-environment-node/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/jest-environment-node/node_modules/ci-info": { ++ "version": "4.3.1", ++ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", ++ "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", ++ "dev": true, ++ "funding": [ ++ { ++ "type": "github", ++ "url": "https://github.com/sponsors/sibiraj-s" ++ } ++ ], ++ "license": "MIT", ++ "engines": { ++ "node": ">=8" ++ } ++ }, ++ "node_modules/jest-environment-node/node_modules/jest-message-util": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", ++ "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@babel/code-frame": "^7.27.1", ++ "@jest/types": "30.2.0", ++ "@types/stack-utils": "^2.0.3", ++ "chalk": "^4.1.2", ++ "graceful-fs": "^4.2.11", ++ "micromatch": "^4.0.8", ++ "pretty-format": "30.2.0", ++ "slash": "^3.0.0", ++ "stack-utils": "^2.0.6" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-environment-node/node_modules/jest-mock": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", ++ "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/types": "30.2.0", ++ "@types/node": "*", ++ "jest-util": "30.2.0" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-environment-node/node_modules/jest-util": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", ++ "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/types": "30.2.0", ++ "@types/node": "*", ++ "chalk": "^4.1.2", ++ "ci-info": "^4.2.0", ++ "graceful-fs": "^4.2.11", ++ "picomatch": "^4.0.2" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-environment-node/node_modules/jest-util/node_modules/picomatch": { ++ "version": "4.0.3", ++ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", ++ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", ++ "dev": true, ++ "license": "MIT", ++ "engines": { ++ "node": ">=12" ++ }, ++ "funding": { ++ "url": "https://github.com/sponsors/jonschlinkert" ++ } ++ }, ++ "node_modules/jest-environment-node/node_modules/micromatch": { ++ "version": "4.0.8", ++ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", ++ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "braces": "^3.0.3", ++ "picomatch": "^2.3.1" ++ }, ++ "engines": { ++ "node": ">=8.6" ++ } ++ }, ++ "node_modules/jest-environment-node/node_modules/pretty-format": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", ++ "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/schemas": "30.0.5", ++ "ansi-styles": "^5.2.0", ++ "react-is": "^18.3.1" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-get-type": { ++ "version": "29.6.3", ++ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", ++ "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", ++ "dev": true, ++ "engines": { ++ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ } ++ }, ++ "node_modules/jest-haste-map": { ++ "version": "29.7.0", ++ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", ++ "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", ++ "dev": true, ++ "dependencies": { ++ "@jest/types": "^29.6.3", ++ "@types/graceful-fs": "^4.1.3", ++ "@types/node": "*", ++ "anymatch": "^3.0.3", ++ "fb-watchman": "^2.0.0", ++ "graceful-fs": "^4.2.9", ++ "jest-regex-util": "^29.6.3", ++ "jest-util": "^29.7.0", ++ "jest-worker": "^29.7.0", ++ "micromatch": "^4.0.4", ++ "walker": "^1.0.8" ++ }, ++ "engines": { ++ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ }, ++ "optionalDependencies": { ++ "fsevents": "^2.3.2" ++ } ++ }, ++ "node_modules/jest-leak-detector": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.2.0.tgz", ++ "integrity": "sha512-M6jKAjyzjHG0SrQgwhgZGy9hFazcudwCNovY/9HPIicmNSBuockPSedAP9vlPK6ONFJ1zfyH/M2/YYJxOz5cdQ==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/get-type": "30.1.0", ++ "pretty-format": "30.2.0" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-leak-detector/node_modules/@jest/schemas": { ++ "version": "30.0.5", ++ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", ++ "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@sinclair/typebox": "^0.34.0" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-leak-detector/node_modules/@sinclair/typebox": { ++ "version": "0.34.41", ++ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", ++ "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", ++ "dev": true, ++ "license": "MIT" ++ }, ++ "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", ++ "engines": { ++ "node": ">=10" ++ }, ++ "funding": { ++ "url": "https://github.com/chalk/ansi-styles?sponsor=1" ++ } ++ }, ++ "node_modules/jest-leak-detector/node_modules/pretty-format": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", ++ "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/schemas": "30.0.5", ++ "ansi-styles": "^5.2.0", ++ "react-is": "^18.3.1" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-matcher-utils": { ++ "version": "29.7.0", ++ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", ++ "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", ++ "dev": true, ++ "dependencies": { ++ "chalk": "^4.0.0", ++ "jest-diff": "^29.7.0", ++ "jest-get-type": "^29.6.3", ++ "pretty-format": "^29.7.0" ++ }, ++ "engines": { ++ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ } ++ }, ++ "node_modules/jest-message-util": { ++ "version": "29.7.0", ++ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", ++ "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", ++ "dev": true, ++ "dependencies": { ++ "@babel/code-frame": "^7.12.13", ++ "@jest/types": "^29.6.3", ++ "@types/stack-utils": "^2.0.0", ++ "chalk": "^4.0.0", ++ "graceful-fs": "^4.2.9", ++ "micromatch": "^4.0.4", ++ "pretty-format": "^29.7.0", ++ "slash": "^3.0.0", ++ "stack-utils": "^2.0.3" ++ }, ++ "engines": { ++ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ } ++ }, ++ "node_modules/jest-mock": { ++ "version": "29.7.0", ++ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", ++ "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", ++ "dev": true, ++ "dependencies": { ++ "@jest/types": "^29.6.3", ++ "@types/node": "*", ++ "jest-util": "^29.7.0" ++ }, ++ "engines": { ++ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ } ++ }, ++ "node_modules/jest-pnp-resolver": { ++ "version": "1.2.3", ++ "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", ++ "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", ++ "dev": true, ++ "license": "MIT", ++ "engines": { ++ "node": ">=6" ++ }, ++ "peerDependencies": { ++ "jest-resolve": "*" ++ }, ++ "peerDependenciesMeta": { ++ "jest-resolve": { ++ "optional": true ++ } ++ } ++ }, ++ "node_modules/jest-regex-util": { ++ "version": "29.6.3", ++ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", ++ "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", ++ "dev": true, ++ "engines": { ++ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ } ++ }, ++ "node_modules/jest-resolve": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.2.0.tgz", ++ "integrity": "sha512-TCrHSxPlx3tBY3hWNtRQKbtgLhsXa1WmbJEqBlTBrGafd5fiQFByy2GNCEoGR+Tns8d15GaL9cxEzKOO3GEb2A==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "chalk": "^4.1.2", ++ "graceful-fs": "^4.2.11", ++ "jest-haste-map": "30.2.0", ++ "jest-pnp-resolver": "^1.2.3", ++ "jest-util": "30.2.0", ++ "jest-validate": "30.2.0", ++ "slash": "^3.0.0", ++ "unrs-resolver": "^1.7.11" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-resolve-dependencies": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.2.0.tgz", ++ "integrity": "sha512-xTOIGug/0RmIe3mmCqCT95yO0vj6JURrn1TKWlNbhiAefJRWINNPgwVkrVgt/YaerPzY3iItufd80v3lOrFJ2w==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "jest-regex-util": "30.0.1", ++ "jest-snapshot": "30.2.0" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-resolve-dependencies/node_modules/@jest/expect-utils": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz", ++ "integrity": "sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/get-type": "30.1.0" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-resolve-dependencies/node_modules/@jest/schemas": { ++ "version": "30.0.5", ++ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", ++ "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@sinclair/typebox": "^0.34.0" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-resolve-dependencies/node_modules/@jest/transform": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", ++ "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@babel/core": "^7.27.4", ++ "@jest/types": "30.2.0", ++ "@jridgewell/trace-mapping": "^0.3.25", ++ "babel-plugin-istanbul": "^7.0.1", ++ "chalk": "^4.1.2", ++ "convert-source-map": "^2.0.0", ++ "fast-json-stable-stringify": "^2.1.0", ++ "graceful-fs": "^4.2.11", ++ "jest-haste-map": "30.2.0", ++ "jest-regex-util": "30.0.1", ++ "jest-util": "30.2.0", ++ "micromatch": "^4.0.8", ++ "pirates": "^4.0.7", ++ "slash": "^3.0.0", ++ "write-file-atomic": "^5.0.1" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-resolve-dependencies/node_modules/@jest/types": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", ++ "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/pattern": "30.0.1", ++ "@jest/schemas": "30.0.5", ++ "@types/istanbul-lib-coverage": "^2.0.6", ++ "@types/istanbul-reports": "^3.0.4", ++ "@types/node": "*", ++ "@types/yargs": "^17.0.33", ++ "chalk": "^4.1.2" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-resolve-dependencies/node_modules/@sinclair/typebox": { ++ "version": "0.34.41", ++ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", ++ "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", ++ "dev": true, ++ "license": "MIT" ++ }, ++ "node_modules/jest-resolve-dependencies/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/jest-resolve-dependencies/node_modules/babel-plugin-istanbul": { ++ "version": "7.0.1", ++ "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", ++ "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", ++ "dev": true, ++ "license": "BSD-3-Clause", ++ "workspaces": [ ++ "test/babel-8" ++ ], ++ "dependencies": { ++ "@babel/helper-plugin-utils": "^7.0.0", ++ "@istanbuljs/load-nyc-config": "^1.0.0", ++ "@istanbuljs/schema": "^0.1.3", ++ "istanbul-lib-instrument": "^6.0.2", ++ "test-exclude": "^6.0.0" ++ }, ++ "engines": { ++ "node": ">=12" ++ } ++ }, ++ "node_modules/jest-resolve-dependencies/node_modules/ci-info": { ++ "version": "4.3.1", ++ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", ++ "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", ++ "dev": true, ++ "funding": [ ++ { ++ "type": "github", ++ "url": "https://github.com/sponsors/sibiraj-s" ++ } ++ ], ++ "license": "MIT", ++ "engines": { ++ "node": ">=8" ++ } ++ }, ++ "node_modules/jest-resolve-dependencies/node_modules/expect": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", ++ "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/expect-utils": "30.2.0", ++ "@jest/get-type": "30.1.0", ++ "jest-matcher-utils": "30.2.0", ++ "jest-message-util": "30.2.0", ++ "jest-mock": "30.2.0", ++ "jest-util": "30.2.0" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-resolve-dependencies/node_modules/jest-diff": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz", ++ "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/diff-sequences": "30.0.1", ++ "@jest/get-type": "30.1.0", ++ "chalk": "^4.1.2", ++ "pretty-format": "30.2.0" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-resolve-dependencies/node_modules/jest-haste-map": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", ++ "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/types": "30.2.0", ++ "@types/node": "*", ++ "anymatch": "^3.1.3", ++ "fb-watchman": "^2.0.2", ++ "graceful-fs": "^4.2.11", ++ "jest-regex-util": "30.0.1", ++ "jest-util": "30.2.0", ++ "jest-worker": "30.2.0", ++ "micromatch": "^4.0.8", ++ "walker": "^1.0.8" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ }, ++ "optionalDependencies": { ++ "fsevents": "^2.3.3" ++ } ++ }, ++ "node_modules/jest-resolve-dependencies/node_modules/jest-matcher-utils": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz", ++ "integrity": "sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/get-type": "30.1.0", ++ "chalk": "^4.1.2", ++ "jest-diff": "30.2.0", ++ "pretty-format": "30.2.0" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-resolve-dependencies/node_modules/jest-message-util": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", ++ "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@babel/code-frame": "^7.27.1", ++ "@jest/types": "30.2.0", ++ "@types/stack-utils": "^2.0.3", ++ "chalk": "^4.1.2", ++ "graceful-fs": "^4.2.11", ++ "micromatch": "^4.0.8", ++ "pretty-format": "30.2.0", ++ "slash": "^3.0.0", ++ "stack-utils": "^2.0.6" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-resolve-dependencies/node_modules/jest-mock": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", ++ "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/types": "30.2.0", ++ "@types/node": "*", ++ "jest-util": "30.2.0" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-resolve-dependencies/node_modules/jest-regex-util": { ++ "version": "30.0.1", ++ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", ++ "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", ++ "dev": true, ++ "license": "MIT", ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-resolve-dependencies/node_modules/jest-snapshot": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.2.0.tgz", ++ "integrity": "sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@babel/core": "^7.27.4", ++ "@babel/generator": "^7.27.5", ++ "@babel/plugin-syntax-jsx": "^7.27.1", ++ "@babel/plugin-syntax-typescript": "^7.27.1", ++ "@babel/types": "^7.27.3", ++ "@jest/expect-utils": "30.2.0", ++ "@jest/get-type": "30.1.0", ++ "@jest/snapshot-utils": "30.2.0", ++ "@jest/transform": "30.2.0", ++ "@jest/types": "30.2.0", ++ "babel-preset-current-node-syntax": "^1.2.0", ++ "chalk": "^4.1.2", ++ "expect": "30.2.0", ++ "graceful-fs": "^4.2.11", ++ "jest-diff": "30.2.0", ++ "jest-matcher-utils": "30.2.0", ++ "jest-message-util": "30.2.0", ++ "jest-util": "30.2.0", ++ "pretty-format": "30.2.0", ++ "semver": "^7.7.2", ++ "synckit": "^0.11.8" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-resolve-dependencies/node_modules/jest-util": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", ++ "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/types": "30.2.0", ++ "@types/node": "*", ++ "chalk": "^4.1.2", ++ "ci-info": "^4.2.0", ++ "graceful-fs": "^4.2.11", ++ "picomatch": "^4.0.2" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-resolve-dependencies/node_modules/jest-util/node_modules/picomatch": { ++ "version": "4.0.3", ++ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", ++ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", ++ "dev": true, ++ "license": "MIT", ++ "engines": { ++ "node": ">=12" ++ }, ++ "funding": { ++ "url": "https://github.com/sponsors/jonschlinkert" ++ } ++ }, ++ "node_modules/jest-resolve-dependencies/node_modules/jest-worker": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", ++ "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@types/node": "*", ++ "@ungap/structured-clone": "^1.3.0", ++ "jest-util": "30.2.0", ++ "merge-stream": "^2.0.0", ++ "supports-color": "^8.1.1" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-resolve-dependencies/node_modules/micromatch": { ++ "version": "4.0.8", ++ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", ++ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "braces": "^3.0.3", ++ "picomatch": "^2.3.1" ++ }, ++ "engines": { ++ "node": ">=8.6" ++ } ++ }, ++ "node_modules/jest-resolve-dependencies/node_modules/pretty-format": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", ++ "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/schemas": "30.0.5", ++ "ansi-styles": "^5.2.0", ++ "react-is": "^18.3.1" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-resolve-dependencies/node_modules/signal-exit": { ++ "version": "4.1.0", ++ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", ++ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", ++ "dev": true, ++ "license": "ISC", ++ "engines": { ++ "node": ">=14" ++ }, ++ "funding": { ++ "url": "https://github.com/sponsors/isaacs" ++ } ++ }, ++ "node_modules/jest-resolve-dependencies/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/jest-resolve-dependencies/node_modules/write-file-atomic": { ++ "version": "5.0.1", ++ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", ++ "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", ++ "dev": true, ++ "license": "ISC", ++ "dependencies": { ++ "imurmurhash": "^0.1.4", ++ "signal-exit": "^4.0.1" ++ }, ++ "engines": { ++ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" ++ } ++ }, ++ "node_modules/jest-resolve/node_modules/@jest/schemas": { ++ "version": "30.0.5", ++ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", ++ "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@sinclair/typebox": "^0.34.0" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-resolve/node_modules/@jest/types": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", ++ "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/pattern": "30.0.1", ++ "@jest/schemas": "30.0.5", ++ "@types/istanbul-lib-coverage": "^2.0.6", ++ "@types/istanbul-reports": "^3.0.4", ++ "@types/node": "*", ++ "@types/yargs": "^17.0.33", ++ "chalk": "^4.1.2" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-resolve/node_modules/@sinclair/typebox": { ++ "version": "0.34.41", ++ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", ++ "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", ++ "dev": true, ++ "license": "MIT" ++ }, ++ "node_modules/jest-resolve/node_modules/ci-info": { ++ "version": "4.3.1", ++ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", ++ "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", ++ "dev": true, ++ "funding": [ ++ { ++ "type": "github", ++ "url": "https://github.com/sponsors/sibiraj-s" ++ } ++ ], ++ "license": "MIT", ++ "engines": { ++ "node": ">=8" ++ } ++ }, ++ "node_modules/jest-resolve/node_modules/jest-haste-map": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", ++ "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/types": "30.2.0", ++ "@types/node": "*", ++ "anymatch": "^3.1.3", ++ "fb-watchman": "^2.0.2", ++ "graceful-fs": "^4.2.11", ++ "jest-regex-util": "30.0.1", ++ "jest-util": "30.2.0", ++ "jest-worker": "30.2.0", ++ "micromatch": "^4.0.8", ++ "walker": "^1.0.8" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ }, ++ "optionalDependencies": { ++ "fsevents": "^2.3.3" ++ } ++ }, ++ "node_modules/jest-resolve/node_modules/jest-regex-util": { ++ "version": "30.0.1", ++ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", ++ "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", ++ "dev": true, ++ "license": "MIT", ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-resolve/node_modules/jest-util": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", ++ "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/types": "30.2.0", ++ "@types/node": "*", ++ "chalk": "^4.1.2", ++ "ci-info": "^4.2.0", ++ "graceful-fs": "^4.2.11", ++ "picomatch": "^4.0.2" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-resolve/node_modules/jest-util/node_modules/picomatch": { ++ "version": "4.0.3", ++ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", ++ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", ++ "dev": true, ++ "license": "MIT", ++ "engines": { ++ "node": ">=12" ++ }, ++ "funding": { ++ "url": "https://github.com/sponsors/jonschlinkert" ++ } ++ }, ++ "node_modules/jest-resolve/node_modules/jest-worker": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", ++ "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@types/node": "*", ++ "@ungap/structured-clone": "^1.3.0", ++ "jest-util": "30.2.0", ++ "merge-stream": "^2.0.0", ++ "supports-color": "^8.1.1" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-resolve/node_modules/micromatch": { ++ "version": "4.0.8", ++ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", ++ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "braces": "^3.0.3", ++ "picomatch": "^2.3.1" ++ }, ++ "engines": { ++ "node": ">=8.6" ++ } ++ }, ++ "node_modules/jest-resolve/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/jest-runner": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.2.0.tgz", ++ "integrity": "sha512-PqvZ2B2XEyPEbclp+gV6KO/F1FIFSbIwewRgmROCMBo/aZ6J1w8Qypoj2pEOcg3G2HzLlaP6VUtvwCI8dM3oqQ==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/console": "30.2.0", ++ "@jest/environment": "30.2.0", ++ "@jest/test-result": "30.2.0", ++ "@jest/transform": "30.2.0", ++ "@jest/types": "30.2.0", ++ "@types/node": "*", ++ "chalk": "^4.1.2", ++ "emittery": "^0.13.1", ++ "exit-x": "^0.2.2", ++ "graceful-fs": "^4.2.11", ++ "jest-docblock": "30.2.0", ++ "jest-environment-node": "30.2.0", ++ "jest-haste-map": "30.2.0", ++ "jest-leak-detector": "30.2.0", ++ "jest-message-util": "30.2.0", ++ "jest-resolve": "30.2.0", ++ "jest-runtime": "30.2.0", ++ "jest-util": "30.2.0", ++ "jest-watcher": "30.2.0", ++ "jest-worker": "30.2.0", ++ "p-limit": "^3.1.0", ++ "source-map-support": "0.5.13" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-runner/node_modules/@jest/environment": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz", ++ "integrity": "sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/fake-timers": "30.2.0", ++ "@jest/types": "30.2.0", ++ "@types/node": "*", ++ "jest-mock": "30.2.0" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-runner/node_modules/@jest/fake-timers": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz", ++ "integrity": "sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/types": "30.2.0", ++ "@sinonjs/fake-timers": "^13.0.0", ++ "@types/node": "*", ++ "jest-message-util": "30.2.0", ++ "jest-mock": "30.2.0", ++ "jest-util": "30.2.0" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-runner/node_modules/@jest/schemas": { ++ "version": "30.0.5", ++ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", ++ "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@sinclair/typebox": "^0.34.0" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-runner/node_modules/@jest/transform": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", ++ "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@babel/core": "^7.27.4", ++ "@jest/types": "30.2.0", ++ "@jridgewell/trace-mapping": "^0.3.25", ++ "babel-plugin-istanbul": "^7.0.1", ++ "chalk": "^4.1.2", ++ "convert-source-map": "^2.0.0", ++ "fast-json-stable-stringify": "^2.1.0", ++ "graceful-fs": "^4.2.11", ++ "jest-haste-map": "30.2.0", ++ "jest-regex-util": "30.0.1", ++ "jest-util": "30.2.0", ++ "micromatch": "^4.0.8", ++ "pirates": "^4.0.7", ++ "slash": "^3.0.0", ++ "write-file-atomic": "^5.0.1" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-runner/node_modules/@jest/types": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", ++ "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/pattern": "30.0.1", ++ "@jest/schemas": "30.0.5", ++ "@types/istanbul-lib-coverage": "^2.0.6", ++ "@types/istanbul-reports": "^3.0.4", ++ "@types/node": "*", ++ "@types/yargs": "^17.0.33", ++ "chalk": "^4.1.2" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-runner/node_modules/@sinclair/typebox": { ++ "version": "0.34.41", ++ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", ++ "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", ++ "dev": true, ++ "license": "MIT" ++ }, ++ "node_modules/jest-runner/node_modules/@sinonjs/fake-timers": { ++ "version": "13.0.5", ++ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", ++ "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", ++ "dev": true, ++ "license": "BSD-3-Clause", ++ "dependencies": { ++ "@sinonjs/commons": "^3.0.1" ++ } ++ }, ++ "node_modules/jest-runner/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/jest-runner/node_modules/babel-plugin-istanbul": { ++ "version": "7.0.1", ++ "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", ++ "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", ++ "dev": true, ++ "license": "BSD-3-Clause", ++ "workspaces": [ ++ "test/babel-8" ++ ], ++ "dependencies": { ++ "@babel/helper-plugin-utils": "^7.0.0", ++ "@istanbuljs/load-nyc-config": "^1.0.0", ++ "@istanbuljs/schema": "^0.1.3", ++ "istanbul-lib-instrument": "^6.0.2", ++ "test-exclude": "^6.0.0" ++ }, ++ "engines": { ++ "node": ">=12" ++ } ++ }, ++ "node_modules/jest-runner/node_modules/ci-info": { ++ "version": "4.3.1", ++ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", ++ "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", ++ "dev": true, ++ "funding": [ ++ { ++ "type": "github", ++ "url": "https://github.com/sponsors/sibiraj-s" ++ } ++ ], ++ "license": "MIT", ++ "engines": { ++ "node": ">=8" ++ } ++ }, ++ "node_modules/jest-runner/node_modules/jest-haste-map": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", ++ "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/types": "30.2.0", ++ "@types/node": "*", ++ "anymatch": "^3.1.3", ++ "fb-watchman": "^2.0.2", ++ "graceful-fs": "^4.2.11", ++ "jest-regex-util": "30.0.1", ++ "jest-util": "30.2.0", ++ "jest-worker": "30.2.0", ++ "micromatch": "^4.0.8", ++ "walker": "^1.0.8" + }, + "engines": { +- "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ }, ++ "optionalDependencies": { ++ "fsevents": "^2.3.3" + } + }, +- "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-runner/node_modules/jest-message-util": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", ++ "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "color-convert": "^2.0.1" ++ "@babel/code-frame": "^7.27.1", ++ "@jest/types": "30.2.0", ++ "@types/stack-utils": "^2.0.3", ++ "chalk": "^4.1.2", ++ "graceful-fs": "^4.2.11", ++ "micromatch": "^4.0.8", ++ "pretty-format": "30.2.0", ++ "slash": "^3.0.0", ++ "stack-utils": "^2.0.6" + }, + "engines": { +- "node": ">=8" +- }, +- "funding": { +- "url": "https://github.com/chalk/ansi-styles?sponsor=1" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "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-runner/node_modules/jest-mock": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", ++ "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "ansi-styles": "^4.1.0", +- "supports-color": "^7.1.0" ++ "@jest/types": "30.2.0", ++ "@types/node": "*", ++ "jest-util": "30.2.0" + }, + "engines": { +- "node": ">=10" +- }, +- "funding": { +- "url": "https://github.com/chalk/chalk?sponsor=1" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/jest-matcher-utils/node_modules/color-convert": { +- "version": "2.0.1", +- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", +- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", ++ "node_modules/jest-runner/node_modules/jest-regex-util": { ++ "version": "30.0.1", ++ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", ++ "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", ++ "dev": true, ++ "license": "MIT", ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-runner/node_modules/jest-util": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", ++ "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "color-name": "~1.1.4" ++ "@jest/types": "30.2.0", ++ "@types/node": "*", ++ "chalk": "^4.1.2", ++ "ci-info": "^4.2.0", ++ "graceful-fs": "^4.2.11", ++ "picomatch": "^4.0.2" + }, + "engines": { +- "node": ">=7.0.0" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/jest-matcher-utils/node_modules/color-name": { +- "version": "1.1.4", +- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", +- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", +- "dev": true +- }, +- "node_modules/jest-matcher-utils/node_modules/has-flag": { +- "version": "4.0.0", +- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", +- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", ++ "node_modules/jest-runner/node_modules/jest-util/node_modules/picomatch": { ++ "version": "4.0.3", ++ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", ++ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, ++ "license": "MIT", + "engines": { +- "node": ">=8" ++ "node": ">=12" ++ }, ++ "funding": { ++ "url": "https://github.com/sponsors/jonschlinkert" + } + }, +- "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==", ++ "node_modules/jest-runner/node_modules/jest-worker": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", ++ "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "has-flag": "^4.0.0" ++ "@types/node": "*", ++ "@ungap/structured-clone": "^1.3.0", ++ "jest-util": "30.2.0", ++ "merge-stream": "^2.0.0", ++ "supports-color": "^8.1.1" + }, + "engines": { +- "node": ">=8" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/jest-message-util": { +- "version": "29.7.0", +- "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", +- "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", ++ "node_modules/jest-runner/node_modules/micromatch": { ++ "version": "4.0.8", ++ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", ++ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "@babel/code-frame": "^7.12.13", +- "@jest/types": "^29.6.3", +- "@types/stack-utils": "^2.0.0", +- "chalk": "^4.0.0", +- "graceful-fs": "^4.2.9", +- "micromatch": "^4.0.4", +- "pretty-format": "^29.7.0", +- "slash": "^3.0.0", +- "stack-utils": "^2.0.3" ++ "braces": "^3.0.3", ++ "picomatch": "^2.3.1" + }, + "engines": { +- "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ "node": ">=8.6" + } + }, +- "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-runner/node_modules/pretty-format": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", ++ "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "color-convert": "^2.0.1" ++ "@jest/schemas": "30.0.5", ++ "ansi-styles": "^5.2.0", ++ "react-is": "^18.3.1" + }, + "engines": { +- "node": ">=8" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest-runner/node_modules/signal-exit": { ++ "version": "4.1.0", ++ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", ++ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", ++ "dev": true, ++ "license": "ISC", ++ "engines": { ++ "node": ">=14" + }, + "funding": { +- "url": "https://github.com/chalk/ansi-styles?sponsor=1" ++ "url": "https://github.com/sponsors/isaacs" + } + }, +- "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-runner/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": { +- "ansi-styles": "^4.1.0", +- "supports-color": "^7.1.0" ++ "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { +- "url": "https://github.com/chalk/chalk?sponsor=1" ++ "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, +- "node_modules/jest-message-util/node_modules/color-convert": { +- "version": "2.0.1", +- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", +- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", ++ "node_modules/jest-runner/node_modules/write-file-atomic": { ++ "version": "5.0.1", ++ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", ++ "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dev": true, ++ "license": "ISC", + "dependencies": { +- "color-name": "~1.1.4" ++ "imurmurhash": "^0.1.4", ++ "signal-exit": "^4.0.1" + }, + "engines": { +- "node": ">=7.0.0" ++ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, +- "node_modules/jest-message-util/node_modules/color-name": { +- "version": "1.1.4", +- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", +- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", +- "dev": true +- }, +- "node_modules/jest-message-util/node_modules/has-flag": { +- "version": "4.0.0", +- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", +- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", +- "dev": true, ++ "node_modules/jest-runtime": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.2.0.tgz", ++ "integrity": "sha512-p1+GVX/PJqTucvsmERPMgCPvQJpFt4hFbM+VN3n8TMo47decMUcJbt+rgzwrEme0MQUA/R+1de2axftTHkKckg==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/environment": "30.2.0", ++ "@jest/fake-timers": "30.2.0", ++ "@jest/globals": "30.2.0", ++ "@jest/source-map": "30.0.1", ++ "@jest/test-result": "30.2.0", ++ "@jest/transform": "30.2.0", ++ "@jest/types": "30.2.0", ++ "@types/node": "*", ++ "chalk": "^4.1.2", ++ "cjs-module-lexer": "^2.1.0", ++ "collect-v8-coverage": "^1.0.2", ++ "glob": "^10.3.10", ++ "graceful-fs": "^4.2.11", ++ "jest-haste-map": "30.2.0", ++ "jest-message-util": "30.2.0", ++ "jest-mock": "30.2.0", ++ "jest-regex-util": "30.0.1", ++ "jest-resolve": "30.2.0", ++ "jest-snapshot": "30.2.0", ++ "jest-util": "30.2.0", ++ "slash": "^3.0.0", ++ "strip-bom": "^4.0.0" ++ }, + "engines": { +- "node": ">=8" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "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==", ++ "node_modules/jest-runtime/node_modules/@jest/environment": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz", ++ "integrity": "sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "has-flag": "^4.0.0" ++ "@jest/fake-timers": "30.2.0", ++ "@jest/types": "30.2.0", ++ "@types/node": "*", ++ "jest-mock": "30.2.0" + }, + "engines": { +- "node": ">=8" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/jest-mock": { +- "version": "29.7.0", +- "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", +- "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", ++ "node_modules/jest-runtime/node_modules/@jest/expect": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.2.0.tgz", ++ "integrity": "sha512-V9yxQK5erfzx99Sf+7LbhBwNWEZ9eZay8qQ9+JSC0TrMR1pMDHLMY+BnVPacWU6Jamrh252/IKo4F1Xn/zfiqA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "@jest/types": "^29.6.3", +- "@types/node": "*", +- "jest-util": "^29.7.0" ++ "expect": "30.2.0", ++ "jest-snapshot": "30.2.0" + }, + "engines": { +- "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/jest-pnp-resolver": { +- "version": "1.2.3", +- "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", +- "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", ++ "node_modules/jest-runtime/node_modules/@jest/expect-utils": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz", ++ "integrity": "sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==", + "dev": true, +- "engines": { +- "node": ">=6" +- }, +- "peerDependencies": { +- "jest-resolve": "*" ++ "license": "MIT", ++ "dependencies": { ++ "@jest/get-type": "30.1.0" + }, +- "peerDependenciesMeta": { +- "jest-resolve": { +- "optional": true +- } +- } +- }, +- "node_modules/jest-regex-util": { +- "version": "29.6.3", +- "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", +- "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", +- "dev": true, + "engines": { +- "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/jest-resolve": { +- "version": "29.7.0", +- "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", +- "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", ++ "node_modules/jest-runtime/node_modules/@jest/fake-timers": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz", ++ "integrity": "sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "chalk": "^4.0.0", +- "graceful-fs": "^4.2.9", +- "jest-haste-map": "^29.7.0", +- "jest-pnp-resolver": "^1.2.2", +- "jest-util": "^29.7.0", +- "jest-validate": "^29.7.0", +- "resolve": "^1.20.0", +- "resolve.exports": "^2.0.0", +- "slash": "^3.0.0" ++ "@jest/types": "30.2.0", ++ "@sinonjs/fake-timers": "^13.0.0", ++ "@types/node": "*", ++ "jest-message-util": "30.2.0", ++ "jest-mock": "30.2.0", ++ "jest-util": "30.2.0" + }, + "engines": { +- "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/jest-resolve-dependencies": { +- "version": "29.7.0", +- "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", +- "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", ++ "node_modules/jest-runtime/node_modules/@jest/globals": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.2.0.tgz", ++ "integrity": "sha512-b63wmnKPaK+6ZZfpYhz9K61oybvbI1aMcIs80++JI1O1rR1vaxHUCNqo3ITu6NU0d4V34yZFoHMn/uoKr/Rwfw==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "jest-regex-util": "^29.6.3", +- "jest-snapshot": "^29.7.0" ++ "@jest/environment": "30.2.0", ++ "@jest/expect": "30.2.0", ++ "@jest/types": "30.2.0", ++ "jest-mock": "30.2.0" + }, + "engines": { +- "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/jest-resolve/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-runtime/node_modules/@jest/schemas": { ++ "version": "30.0.5", ++ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", ++ "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "color-convert": "^2.0.1" ++ "@sinclair/typebox": "^0.34.0" + }, + "engines": { +- "node": ">=8" +- }, +- "funding": { +- "url": "https://github.com/chalk/ansi-styles?sponsor=1" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/jest-resolve/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-runtime/node_modules/@jest/transform": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", ++ "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "ansi-styles": "^4.1.0", +- "supports-color": "^7.1.0" ++ "@babel/core": "^7.27.4", ++ "@jest/types": "30.2.0", ++ "@jridgewell/trace-mapping": "^0.3.25", ++ "babel-plugin-istanbul": "^7.0.1", ++ "chalk": "^4.1.2", ++ "convert-source-map": "^2.0.0", ++ "fast-json-stable-stringify": "^2.1.0", ++ "graceful-fs": "^4.2.11", ++ "jest-haste-map": "30.2.0", ++ "jest-regex-util": "30.0.1", ++ "jest-util": "30.2.0", ++ "micromatch": "^4.0.8", ++ "pirates": "^4.0.7", ++ "slash": "^3.0.0", ++ "write-file-atomic": "^5.0.1" + }, + "engines": { +- "node": ">=10" +- }, +- "funding": { +- "url": "https://github.com/chalk/chalk?sponsor=1" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/jest-resolve/node_modules/color-convert": { +- "version": "2.0.1", +- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", +- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", ++ "node_modules/jest-runtime/node_modules/@jest/types": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", ++ "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "color-name": "~1.1.4" ++ "@jest/pattern": "30.0.1", ++ "@jest/schemas": "30.0.5", ++ "@types/istanbul-lib-coverage": "^2.0.6", ++ "@types/istanbul-reports": "^3.0.4", ++ "@types/node": "*", ++ "@types/yargs": "^17.0.33", ++ "chalk": "^4.1.2" + }, + "engines": { +- "node": ">=7.0.0" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/jest-resolve/node_modules/color-name": { +- "version": "1.1.4", +- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", +- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", +- "dev": true ++ "node_modules/jest-runtime/node_modules/@sinclair/typebox": { ++ "version": "0.34.41", ++ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", ++ "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", ++ "dev": true, ++ "license": "MIT" + }, +- "node_modules/jest-resolve/node_modules/has-flag": { +- "version": "4.0.0", +- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", +- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", ++ "node_modules/jest-runtime/node_modules/@sinonjs/fake-timers": { ++ "version": "13.0.5", ++ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", ++ "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", ++ "dev": true, ++ "license": "BSD-3-Clause", ++ "dependencies": { ++ "@sinonjs/commons": "^3.0.1" ++ } ++ }, ++ "node_modules/jest-runtime/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": ">=8" ++ "node": ">=10" ++ }, ++ "funding": { ++ "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, +- "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==", ++ "node_modules/jest-runtime/node_modules/babel-plugin-istanbul": { ++ "version": "7.0.1", ++ "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", ++ "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", + "dev": true, ++ "license": "BSD-3-Clause", ++ "workspaces": [ ++ "test/babel-8" ++ ], + "dependencies": { +- "has-flag": "^4.0.0" ++ "@babel/helper-plugin-utils": "^7.0.0", ++ "@istanbuljs/load-nyc-config": "^1.0.0", ++ "@istanbuljs/schema": "^0.1.3", ++ "istanbul-lib-instrument": "^6.0.2", ++ "test-exclude": "^6.0.0" + }, + "engines": { +- "node": ">=8" ++ "node": ">=12" + } + }, +- "node_modules/jest-runner": { +- "version": "29.7.0", +- "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", +- "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", ++ "node_modules/jest-runtime/node_modules/brace-expansion": { ++ "version": "2.0.2", ++ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", ++ "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "@jest/console": "^29.7.0", +- "@jest/environment": "^29.7.0", +- "@jest/test-result": "^29.7.0", +- "@jest/transform": "^29.7.0", +- "@jest/types": "^29.6.3", +- "@types/node": "*", +- "chalk": "^4.0.0", +- "emittery": "^0.13.1", +- "graceful-fs": "^4.2.9", +- "jest-docblock": "^29.7.0", +- "jest-environment-node": "^29.7.0", +- "jest-haste-map": "^29.7.0", +- "jest-leak-detector": "^29.7.0", +- "jest-message-util": "^29.7.0", +- "jest-resolve": "^29.7.0", +- "jest-runtime": "^29.7.0", +- "jest-util": "^29.7.0", +- "jest-watcher": "^29.7.0", +- "jest-worker": "^29.7.0", +- "p-limit": "^3.1.0", +- "source-map-support": "0.5.13" +- }, ++ "balanced-match": "^1.0.0" ++ } ++ }, ++ "node_modules/jest-runtime/node_modules/ci-info": { ++ "version": "4.3.1", ++ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", ++ "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", ++ "dev": true, ++ "funding": [ ++ { ++ "type": "github", ++ "url": "https://github.com/sponsors/sibiraj-s" ++ } ++ ], ++ "license": "MIT", + "engines": { +- "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ "node": ">=8" + } + }, +- "node_modules/jest-runner/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-runtime/node_modules/expect": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", ++ "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "color-convert": "^2.0.1" ++ "@jest/expect-utils": "30.2.0", ++ "@jest/get-type": "30.1.0", ++ "jest-matcher-utils": "30.2.0", ++ "jest-message-util": "30.2.0", ++ "jest-mock": "30.2.0", ++ "jest-util": "30.2.0" + }, + "engines": { +- "node": ">=8" +- }, +- "funding": { +- "url": "https://github.com/chalk/ansi-styles?sponsor=1" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/jest-runner/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-runtime/node_modules/glob": { ++ "version": "10.4.5", ++ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", ++ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, ++ "license": "ISC", + "dependencies": { +- "ansi-styles": "^4.1.0", +- "supports-color": "^7.1.0" ++ "foreground-child": "^3.1.0", ++ "jackspeak": "^3.1.2", ++ "minimatch": "^9.0.4", ++ "minipass": "^7.1.2", ++ "package-json-from-dist": "^1.0.0", ++ "path-scurry": "^1.11.1" + }, +- "engines": { +- "node": ">=10" ++ "bin": { ++ "glob": "dist/esm/bin.mjs" + }, + "funding": { +- "url": "https://github.com/chalk/chalk?sponsor=1" ++ "url": "https://github.com/sponsors/isaacs" + } + }, +- "node_modules/jest-runner/node_modules/color-convert": { +- "version": "2.0.1", +- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", +- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", ++ "node_modules/jest-runtime/node_modules/jest-diff": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz", ++ "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "color-name": "~1.1.4" ++ "@jest/diff-sequences": "30.0.1", ++ "@jest/get-type": "30.1.0", ++ "chalk": "^4.1.2", ++ "pretty-format": "30.2.0" + }, + "engines": { +- "node": ">=7.0.0" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/jest-runner/node_modules/color-name": { +- "version": "1.1.4", +- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", +- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", +- "dev": true +- }, +- "node_modules/jest-runner/node_modules/has-flag": { +- "version": "4.0.0", +- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", +- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", ++ "node_modules/jest-runtime/node_modules/jest-haste-map": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", ++ "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", + "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/types": "30.2.0", ++ "@types/node": "*", ++ "anymatch": "^3.1.3", ++ "fb-watchman": "^2.0.2", ++ "graceful-fs": "^4.2.11", ++ "jest-regex-util": "30.0.1", ++ "jest-util": "30.2.0", ++ "jest-worker": "30.2.0", ++ "micromatch": "^4.0.8", ++ "walker": "^1.0.8" ++ }, + "engines": { +- "node": ">=8" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ }, ++ "optionalDependencies": { ++ "fsevents": "^2.3.3" + } + }, +- "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==", ++ "node_modules/jest-runtime/node_modules/jest-matcher-utils": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz", ++ "integrity": "sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "has-flag": "^4.0.0" ++ "@jest/get-type": "30.1.0", ++ "chalk": "^4.1.2", ++ "jest-diff": "30.2.0", ++ "pretty-format": "30.2.0" + }, + "engines": { +- "node": ">=8" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/jest-runtime": { +- "version": "29.7.0", +- "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", +- "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", ++ "node_modules/jest-runtime/node_modules/jest-message-util": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", ++ "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "@jest/environment": "^29.7.0", +- "@jest/fake-timers": "^29.7.0", +- "@jest/globals": "^29.7.0", +- "@jest/source-map": "^29.6.3", +- "@jest/test-result": "^29.7.0", +- "@jest/transform": "^29.7.0", +- "@jest/types": "^29.6.3", +- "@types/node": "*", +- "chalk": "^4.0.0", +- "cjs-module-lexer": "^1.0.0", +- "collect-v8-coverage": "^1.0.0", +- "glob": "^7.1.3", +- "graceful-fs": "^4.2.9", +- "jest-haste-map": "^29.7.0", +- "jest-message-util": "^29.7.0", +- "jest-mock": "^29.7.0", +- "jest-regex-util": "^29.6.3", +- "jest-resolve": "^29.7.0", +- "jest-snapshot": "^29.7.0", +- "jest-util": "^29.7.0", ++ "@babel/code-frame": "^7.27.1", ++ "@jest/types": "30.2.0", ++ "@types/stack-utils": "^2.0.3", ++ "chalk": "^4.1.2", ++ "graceful-fs": "^4.2.11", ++ "micromatch": "^4.0.8", ++ "pretty-format": "30.2.0", + "slash": "^3.0.0", +- "strip-bom": "^4.0.0" ++ "stack-utils": "^2.0.6" + }, + "engines": { +- "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/jest-runtime/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-runtime/node_modules/jest-mock": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", ++ "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "color-convert": "^2.0.1" ++ "@jest/types": "30.2.0", ++ "@types/node": "*", ++ "jest-util": "30.2.0" + }, + "engines": { +- "node": ">=8" +- }, +- "funding": { +- "url": "https://github.com/chalk/ansi-styles?sponsor=1" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/jest-runtime/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-runtime/node_modules/jest-regex-util": { ++ "version": "30.0.1", ++ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", ++ "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "dev": true, +- "dependencies": { +- "ansi-styles": "^4.1.0", +- "supports-color": "^7.1.0" +- }, ++ "license": "MIT", + "engines": { +- "node": ">=10" +- }, +- "funding": { +- "url": "https://github.com/chalk/chalk?sponsor=1" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/jest-runtime/node_modules/color-convert": { +- "version": "2.0.1", +- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", +- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", ++ "node_modules/jest-runtime/node_modules/jest-snapshot": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.2.0.tgz", ++ "integrity": "sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "color-name": "~1.1.4" ++ "@babel/core": "^7.27.4", ++ "@babel/generator": "^7.27.5", ++ "@babel/plugin-syntax-jsx": "^7.27.1", ++ "@babel/plugin-syntax-typescript": "^7.27.1", ++ "@babel/types": "^7.27.3", ++ "@jest/expect-utils": "30.2.0", ++ "@jest/get-type": "30.1.0", ++ "@jest/snapshot-utils": "30.2.0", ++ "@jest/transform": "30.2.0", ++ "@jest/types": "30.2.0", ++ "babel-preset-current-node-syntax": "^1.2.0", ++ "chalk": "^4.1.2", ++ "expect": "30.2.0", ++ "graceful-fs": "^4.2.11", ++ "jest-diff": "30.2.0", ++ "jest-matcher-utils": "30.2.0", ++ "jest-message-util": "30.2.0", ++ "jest-util": "30.2.0", ++ "pretty-format": "30.2.0", ++ "semver": "^7.7.2", ++ "synckit": "^0.11.8" + }, + "engines": { +- "node": ">=7.0.0" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/jest-runtime/node_modules/color-name": { +- "version": "1.1.4", +- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", +- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", +- "dev": true +- }, +- "node_modules/jest-runtime/node_modules/has-flag": { +- "version": "4.0.0", +- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", +- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", ++ "node_modules/jest-runtime/node_modules/jest-util": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", ++ "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", + "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/types": "30.2.0", ++ "@types/node": "*", ++ "chalk": "^4.1.2", ++ "ci-info": "^4.2.0", ++ "graceful-fs": "^4.2.11", ++ "picomatch": "^4.0.2" ++ }, + "engines": { +- "node": ">=8" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "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==", ++ "node_modules/jest-runtime/node_modules/jest-util/node_modules/picomatch": { ++ "version": "4.0.3", ++ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", ++ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, +- "dependencies": { +- "has-flag": "^4.0.0" +- }, ++ "license": "MIT", + "engines": { +- "node": ">=8" ++ "node": ">=12" ++ }, ++ "funding": { ++ "url": "https://github.com/sponsors/jonschlinkert" + } + }, +- "node_modules/jest-snapshot": { +- "version": "29.7.0", +- "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", +- "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", ++ "node_modules/jest-runtime/node_modules/jest-worker": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", ++ "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "@babel/core": "^7.11.6", +- "@babel/generator": "^7.7.2", +- "@babel/plugin-syntax-jsx": "^7.7.2", +- "@babel/plugin-syntax-typescript": "^7.7.2", +- "@babel/types": "^7.3.3", +- "@jest/expect-utils": "^29.7.0", +- "@jest/transform": "^29.7.0", +- "@jest/types": "^29.6.3", +- "babel-preset-current-node-syntax": "^1.0.0", +- "chalk": "^4.0.0", +- "expect": "^29.7.0", +- "graceful-fs": "^4.2.9", +- "jest-diff": "^29.7.0", +- "jest-get-type": "^29.6.3", +- "jest-matcher-utils": "^29.7.0", +- "jest-message-util": "^29.7.0", +- "jest-util": "^29.7.0", +- "natural-compare": "^1.4.0", +- "pretty-format": "^29.7.0", +- "semver": "^7.5.3" ++ "@types/node": "*", ++ "@ungap/structured-clone": "^1.3.0", ++ "jest-util": "30.2.0", ++ "merge-stream": "^2.0.0", ++ "supports-color": "^8.1.1" + }, + "engines": { +- "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.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-runtime/node_modules/micromatch": { ++ "version": "4.0.8", ++ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", ++ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "color-convert": "^2.0.1" ++ "braces": "^3.0.3", ++ "picomatch": "^2.3.1" + }, + "engines": { +- "node": ">=8" +- }, +- "funding": { +- "url": "https://github.com/chalk/ansi-styles?sponsor=1" ++ "node": ">=8.6" + } + }, +- "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-runtime/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": { +- "ansi-styles": "^4.1.0", +- "supports-color": "^7.1.0" ++ "brace-expansion": "^2.0.1" + }, + "engines": { +- "node": ">=10" ++ "node": ">=16 || 14 >=14.17" + }, + "funding": { +- "url": "https://github.com/chalk/chalk?sponsor=1" ++ "url": "https://github.com/sponsors/isaacs" + } + }, +- "node_modules/jest-snapshot/node_modules/color-convert": { +- "version": "2.0.1", +- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", +- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", ++ "node_modules/jest-runtime/node_modules/pretty-format": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", ++ "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "color-name": "~1.1.4" ++ "@jest/schemas": "30.0.5", ++ "ansi-styles": "^5.2.0", ++ "react-is": "^18.3.1" + }, + "engines": { +- "node": ">=7.0.0" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/jest-snapshot/node_modules/color-name": { +- "version": "1.1.4", +- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", +- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", +- "dev": true +- }, +- "node_modules/jest-snapshot/node_modules/has-flag": { +- "version": "4.0.0", +- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", +- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", ++ "node_modules/jest-runtime/node_modules/signal-exit": { ++ "version": "4.1.0", ++ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", ++ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, ++ "license": "ISC", + "engines": { +- "node": ">=8" ++ "node": ">=14" ++ }, ++ "funding": { ++ "url": "https://github.com/sponsors/isaacs" + } + }, +- "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==", ++ "node_modules/jest-runtime/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": ">=8" +- } +- }, +- "node_modules/jest-util": { +- "version": "29.7.0", +- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", +- "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", +- "dev": true, +- "dependencies": { +- "@jest/types": "^29.6.3", +- "@types/node": "*", +- "chalk": "^4.0.0", +- "ci-info": "^3.2.0", +- "graceful-fs": "^4.2.9", +- "picomatch": "^2.2.3" ++ "node": ">=10" + }, +- "engines": { +- "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ "funding": { ++ "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, +- "node_modules/jest-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-runtime/node_modules/write-file-atomic": { ++ "version": "5.0.1", ++ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", ++ "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dev": true, ++ "license": "ISC", + "dependencies": { +- "color-convert": "^2.0.1" ++ "imurmurhash": "^0.1.4", ++ "signal-exit": "^4.0.1" + }, + "engines": { +- "node": ">=8" +- }, +- "funding": { +- "url": "https://github.com/chalk/ansi-styles?sponsor=1" ++ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, +- "node_modules/jest-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-snapshot": { ++ "version": "29.7.0", ++ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", ++ "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, + "dependencies": { +- "ansi-styles": "^4.1.0", +- "supports-color": "^7.1.0" ++ "@babel/core": "^7.11.6", ++ "@babel/generator": "^7.7.2", ++ "@babel/plugin-syntax-jsx": "^7.7.2", ++ "@babel/plugin-syntax-typescript": "^7.7.2", ++ "@babel/types": "^7.3.3", ++ "@jest/expect-utils": "^29.7.0", ++ "@jest/transform": "^29.7.0", ++ "@jest/types": "^29.6.3", ++ "babel-preset-current-node-syntax": "^1.0.0", ++ "chalk": "^4.0.0", ++ "expect": "^29.7.0", ++ "graceful-fs": "^4.2.9", ++ "jest-diff": "^29.7.0", ++ "jest-get-type": "^29.6.3", ++ "jest-matcher-utils": "^29.7.0", ++ "jest-message-util": "^29.7.0", ++ "jest-util": "^29.7.0", ++ "natural-compare": "^1.4.0", ++ "pretty-format": "^29.7.0", ++ "semver": "^7.5.3" + }, + "engines": { +- "node": ">=10" +- }, +- "funding": { +- "url": "https://github.com/chalk/chalk?sponsor=1" +- } +- }, +- "node_modules/jest-util/node_modules/color-convert": { +- "version": "2.0.1", +- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", +- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", ++ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ } ++ }, ++ "node_modules/jest-util": { ++ "version": "29.7.0", ++ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", ++ "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "dependencies": { +- "color-name": "~1.1.4" ++ "@jest/types": "^29.6.3", ++ "@types/node": "*", ++ "chalk": "^4.0.0", ++ "ci-info": "^3.2.0", ++ "graceful-fs": "^4.2.9", ++ "picomatch": "^2.2.3" + }, + "engines": { +- "node": ">=7.0.0" ++ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, +- "node_modules/jest-util/node_modules/color-name": { +- "version": "1.1.4", +- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", +- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", +- "dev": true +- }, +- "node_modules/jest-util/node_modules/has-flag": { +- "version": "4.0.0", +- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", +- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", ++ "node_modules/jest-validate": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.2.0.tgz", ++ "integrity": "sha512-FBGWi7dP2hpdi8nBoWxSsLvBFewKAg0+uSQwBaof4Y4DPgBabXgpSYC5/lR7VmnIlSpASmCi/ntRWPbv7089Pw==", + "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/get-type": "30.1.0", ++ "@jest/types": "30.2.0", ++ "camelcase": "^6.3.0", ++ "chalk": "^4.1.2", ++ "leven": "^3.1.0", ++ "pretty-format": "30.2.0" ++ }, + "engines": { +- "node": ">=8" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "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==", ++ "node_modules/jest-validate/node_modules/@jest/schemas": { ++ "version": "30.0.5", ++ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", ++ "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "has-flag": "^4.0.0" ++ "@sinclair/typebox": "^0.34.0" + }, + "engines": { +- "node": ">=8" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/jest-validate": { +- "version": "29.7.0", +- "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", +- "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", ++ "node_modules/jest-validate/node_modules/@jest/types": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", ++ "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "@jest/types": "^29.6.3", +- "camelcase": "^6.2.0", +- "chalk": "^4.0.0", +- "jest-get-type": "^29.6.3", +- "leven": "^3.1.0", +- "pretty-format": "^29.7.0" ++ "@jest/pattern": "30.0.1", ++ "@jest/schemas": "30.0.5", ++ "@types/istanbul-lib-coverage": "^2.0.6", ++ "@types/istanbul-reports": "^3.0.4", ++ "@types/node": "*", ++ "@types/yargs": "^17.0.33", ++ "chalk": "^4.1.2" + }, + "engines": { +- "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, ++ "node_modules/jest-validate/node_modules/@sinclair/typebox": { ++ "version": "0.34.41", ++ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", ++ "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", ++ "dev": true, ++ "license": "MIT" ++ }, + "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==", ++ "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, +- "dependencies": { +- "color-convert": "^2.0.1" +- }, ++ "license": "MIT", + "engines": { +- "node": ">=8" ++ "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" +@@ -6586,6 +9421,7 @@ + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, ++ "license": "MIT", + "engines": { + "node": ">=10" + }, +@@ -6593,85 +9429,86 @@ + "url": "https://github.com/sponsors/sindresorhus" + } + }, +- "node_modules/jest-validate/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-validate/node_modules/pretty-format": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", ++ "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "ansi-styles": "^4.1.0", +- "supports-color": "^7.1.0" ++ "@jest/schemas": "30.0.5", ++ "ansi-styles": "^5.2.0", ++ "react-is": "^18.3.1" + }, + "engines": { +- "node": ">=10" +- }, +- "funding": { +- "url": "https://github.com/chalk/chalk?sponsor=1" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/jest-validate/node_modules/color-convert": { +- "version": "2.0.1", +- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", +- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", ++ "node_modules/jest-watcher": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.2.0.tgz", ++ "integrity": "sha512-PYxa28dxJ9g777pGm/7PrbnMeA0Jr7osHP9bS7eJy9DuAjMgdGtxgf0uKMyoIsTWAkIbUW5hSDdJ3urmgXBqxg==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "color-name": "~1.1.4" ++ "@jest/test-result": "30.2.0", ++ "@jest/types": "30.2.0", ++ "@types/node": "*", ++ "ansi-escapes": "^4.3.2", ++ "chalk": "^4.1.2", ++ "emittery": "^0.13.1", ++ "jest-util": "30.2.0", ++ "string-length": "^4.0.2" + }, + "engines": { +- "node": ">=7.0.0" +- } +- }, +- "node_modules/jest-validate/node_modules/color-name": { +- "version": "1.1.4", +- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", +- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", +- "dev": true +- }, +- "node_modules/jest-validate/node_modules/has-flag": { +- "version": "4.0.0", +- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", +- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", +- "dev": true, +- "engines": { +- "node": ">=8" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "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==", ++ "node_modules/jest-watcher/node_modules/@jest/schemas": { ++ "version": "30.0.5", ++ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", ++ "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "has-flag": "^4.0.0" ++ "@sinclair/typebox": "^0.34.0" + }, + "engines": { +- "node": ">=8" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/jest-watcher": { +- "version": "29.7.0", +- "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", +- "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", ++ "node_modules/jest-watcher/node_modules/@jest/types": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", ++ "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "@jest/test-result": "^29.7.0", +- "@jest/types": "^29.6.3", ++ "@jest/pattern": "30.0.1", ++ "@jest/schemas": "30.0.5", ++ "@types/istanbul-lib-coverage": "^2.0.6", ++ "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", +- "ansi-escapes": "^4.2.1", +- "chalk": "^4.0.0", +- "emittery": "^0.13.1", +- "jest-util": "^29.7.0", +- "string-length": "^4.0.1" ++ "@types/yargs": "^17.0.33", ++ "chalk": "^4.1.2" + }, + "engines": { +- "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, ++ "node_modules/jest-watcher/node_modules/@sinclair/typebox": { ++ "version": "0.34.41", ++ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", ++ "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", ++ "dev": true, ++ "license": "MIT" ++ }, + "node_modules/jest-watcher/node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, ++ "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, +@@ -6682,74 +9519,51 @@ + "url": "https://github.com/sponsors/sindresorhus" + } + }, +- "node_modules/jest-watcher/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-watcher/node_modules/ci-info": { ++ "version": "4.3.1", ++ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", ++ "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", + "dev": true, +- "dependencies": { +- "color-convert": "^2.0.1" +- }, ++ "funding": [ ++ { ++ "type": "github", ++ "url": "https://github.com/sponsors/sibiraj-s" ++ } ++ ], ++ "license": "MIT", + "engines": { + "node": ">=8" +- }, +- "funding": { +- "url": "https://github.com/chalk/ansi-styles?sponsor=1" +- } +- }, +- "node_modules/jest-watcher/node_modules/chalk": { +- "version": "4.1.2", +- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", +- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", +- "dev": true, +- "dependencies": { +- "ansi-styles": "^4.1.0", +- "supports-color": "^7.1.0" +- }, +- "engines": { +- "node": ">=10" +- }, +- "funding": { +- "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, +- "node_modules/jest-watcher/node_modules/color-convert": { +- "version": "2.0.1", +- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", +- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", ++ "node_modules/jest-watcher/node_modules/jest-util": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", ++ "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "color-name": "~1.1.4" ++ "@jest/types": "30.2.0", ++ "@types/node": "*", ++ "chalk": "^4.1.2", ++ "ci-info": "^4.2.0", ++ "graceful-fs": "^4.2.11", ++ "picomatch": "^4.0.2" + }, + "engines": { +- "node": ">=7.0.0" ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, +- "node_modules/jest-watcher/node_modules/color-name": { +- "version": "1.1.4", +- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", +- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", +- "dev": true +- }, +- "node_modules/jest-watcher/node_modules/has-flag": { +- "version": "4.0.0", +- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", +- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", ++ "node_modules/jest-watcher/node_modules/picomatch": { ++ "version": "4.0.3", ++ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", ++ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, ++ "license": "MIT", + "engines": { +- "node": ">=8" +- } +- }, +- "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, +- "dependencies": { +- "has-flag": "^4.0.0" ++ "node": ">=12" + }, +- "engines": { +- "node": ">=8" ++ "funding": { ++ "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-watcher/node_modules/type-fest": { +@@ -6757,6 +9571,7 @@ + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, ++ "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, +@@ -6779,15 +9594,6 @@ + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, +- "node_modules/jest-worker/node_modules/has-flag": { +- "version": "4.0.0", +- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", +- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", +- "dev": true, +- "engines": { +- "node": ">=8" +- } +- }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", +@@ -6803,6 +9609,45 @@ + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, ++ "node_modules/jest/node_modules/@jest/schemas": { ++ "version": "30.0.5", ++ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", ++ "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@sinclair/typebox": "^0.34.0" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest/node_modules/@jest/types": { ++ "version": "30.2.0", ++ "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", ++ "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@jest/pattern": "30.0.1", ++ "@jest/schemas": "30.0.5", ++ "@types/istanbul-lib-coverage": "^2.0.6", ++ "@types/istanbul-reports": "^3.0.4", ++ "@types/node": "*", ++ "@types/yargs": "^17.0.33", ++ "chalk": "^4.1.2" ++ }, ++ "engines": { ++ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" ++ } ++ }, ++ "node_modules/jest/node_modules/@sinclair/typebox": { ++ "version": "0.34.41", ++ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", ++ "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", ++ "dev": true, ++ "license": "MIT" ++ }, + "node_modules/jiti": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.20.0.tgz", +@@ -6872,15 +9717,16 @@ + } + }, + "node_modules/jsesc": { +- "version": "2.5.2", +- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", +- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", ++ "version": "3.1.0", ++ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", ++ "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, ++ "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { +- "node": ">=4" ++ "node": ">=6" + } + }, + "node_modules/json-buffer": { +@@ -6893,7 +9739,8 @@ + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", +- "dev": true ++ "dev": true, ++ "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", +@@ -6928,20 +9775,12 @@ + "json-buffer": "3.0.1" + } + }, +- "node_modules/kleur": { +- "version": "3.0.3", +- "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", +- "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", +- "dev": true, +- "engines": { +- "node": ">=6" +- } +- }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, ++ "license": "MIT", + "engines": { + "node": ">=6" + } +@@ -7071,12 +9910,6 @@ + "url": "https://github.com/sponsors/sindresorhus" + } + }, +- "node_modules/lodash": { +- "version": "4.17.21", +- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", +- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", +- "dev": true +- }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", +@@ -7151,6 +9984,7 @@ + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, ++ "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } +@@ -7169,6 +10003,7 @@ + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, ++ "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, +@@ -7276,6 +10111,26 @@ + "node": "*" + } + }, ++ "node_modules/minimist": { ++ "version": "1.2.8", ++ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", ++ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", ++ "dev": true, ++ "license": "MIT", ++ "funding": { ++ "url": "https://github.com/sponsors/ljharb" ++ } ++ }, ++ "node_modules/minipass": { ++ "version": "7.1.2", ++ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", ++ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", ++ "dev": true, ++ "license": "ISC", ++ "engines": { ++ "node": ">=16 || 14 >=14.17" ++ } ++ }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", +@@ -7311,12 +10166,35 @@ + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, ++ "node_modules/napi-postinstall": { ++ "version": "0.3.4", ++ "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", ++ "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", ++ "dev": true, ++ "license": "MIT", ++ "bin": { ++ "napi-postinstall": "lib/cli.js" ++ }, ++ "engines": { ++ "node": "^12.20.0 || ^14.18.0 || >=16.0.0" ++ }, ++ "funding": { ++ "url": "https://opencollective.com/napi-postinstall" ++ } ++ }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, ++ "node_modules/neo-async": { ++ "version": "2.6.2", ++ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", ++ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", ++ "dev": true, ++ "license": "MIT" ++ }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", +@@ -7324,10 +10202,11 @@ + "dev": true + }, + "node_modules/node-releases": { +- "version": "2.0.13", +- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", +- "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", +- "dev": true ++ "version": "2.0.23", ++ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.23.tgz", ++ "integrity": "sha512-cCmFDMSm26S6tQSDpBCg/NR8NENrVPhAJSf+XbxBG4rPFaaonlEoE9wHQmun+cls499TQGSb7ZyPBRlzgKfpeg==", ++ "dev": true, ++ "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", +@@ -7398,58 +10277,6 @@ + "node": ">= 6" + } + }, +- "node_modules/object-inspect": { +- "version": "1.12.3", +- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", +- "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", +- "dev": true, +- "funding": { +- "url": "https://github.com/sponsors/ljharb" +- } +- }, +- "node_modules/object-is": { +- "version": "1.1.5", +- "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", +- "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", +- "dev": true, +- "dependencies": { +- "call-bind": "^1.0.2", +- "define-properties": "^1.1.3" +- }, +- "engines": { +- "node": ">= 0.4" +- }, +- "funding": { +- "url": "https://github.com/sponsors/ljharb" +- } +- }, +- "node_modules/object-keys": { +- "version": "1.1.1", +- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", +- "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", +- "dev": true, +- "engines": { +- "node": ">= 0.4" +- } +- }, +- "node_modules/object.assign": { +- "version": "4.1.4", +- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", +- "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", +- "dev": true, +- "dependencies": { +- "call-bind": "^1.0.2", +- "define-properties": "^1.1.4", +- "has-symbols": "^1.0.3", +- "object-keys": "^1.1.1" +- }, +- "engines": { +- "node": ">= 0.4" +- }, +- "funding": { +- "url": "https://github.com/sponsors/ljharb" +- } +- }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", +@@ -7530,6 +10357,13 @@ + "node": ">=6" + } + }, ++ "node_modules/package-json-from-dist": { ++ "version": "1.0.1", ++ "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", ++ "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", ++ "dev": true, ++ "license": "BlueOak-1.0.0" ++ }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", +@@ -7547,6 +10381,7 @@ + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, ++ "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", +@@ -7605,6 +10440,30 @@ + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, ++ "node_modules/path-scurry": { ++ "version": "1.11.1", ++ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", ++ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", ++ "dev": true, ++ "license": "BlueOak-1.0.0", ++ "dependencies": { ++ "lru-cache": "^10.2.0", ++ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" ++ }, ++ "engines": { ++ "node": ">=16 || 14 >=14.18" ++ }, ++ "funding": { ++ "url": "https://github.com/sponsors/isaacs" ++ } ++ }, ++ "node_modules/path-scurry/node_modules/lru-cache": { ++ "version": "10.4.3", ++ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", ++ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", ++ "dev": true, ++ "license": "ISC" ++ }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", +@@ -7615,10 +10474,11 @@ + } + }, + "node_modules/picocolors": { +- "version": "1.0.0", +- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", +- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", +- "dev": true ++ "version": "1.1.1", ++ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", ++ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", ++ "dev": true, ++ "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", +@@ -7654,10 +10514,11 @@ + } + }, + "node_modules/pirates": { +- "version": "4.0.6", +- "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", +- "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", ++ "version": "4.0.7", ++ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", ++ "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "dev": true, ++ "license": "MIT", + "engines": { + "node": ">= 6" + } +@@ -7667,6 +10528,7 @@ + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, ++ "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, +@@ -7679,6 +10541,7 @@ + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, ++ "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" +@@ -7692,6 +10555,7 @@ + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, ++ "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, +@@ -7704,6 +10568,7 @@ + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, ++ "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, +@@ -7719,6 +10584,7 @@ + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, ++ "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, +@@ -7907,19 +10773,6 @@ + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, +- "node_modules/prompts": { +- "version": "2.4.2", +- "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", +- "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", +- "dev": true, +- "dependencies": { +- "kleur": "^3.0.3", +- "sisteransi": "^1.0.5" +- }, +- "engines": { +- "node": ">= 6" +- } +- }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", +@@ -7936,9 +10789,9 @@ + } + }, + "node_modules/pure-rand": { +- "version": "6.0.3", +- "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.3.tgz", +- "integrity": "sha512-KddyFewCsO0j3+np81IQ+SweXLDnDQTs5s67BOnrYmYe/yNmUhttQyGsYzy8yUnoljGAQ9sl38YB4vH8ur7Y+w==", ++ "version": "7.0.1", ++ "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-7.0.1.tgz", ++ "integrity": "sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==", + "dev": true, + "funding": [ + { +@@ -7949,7 +10802,8 @@ + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } +- ] ++ ], ++ "license": "MIT" + }, + "node_modules/querystringify": { + "version": "2.2.0", +@@ -8001,10 +10855,11 @@ + } + }, + "node_modules/react-is": { +- "version": "18.2.0", +- "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", +- "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", +- "dev": true ++ "version": "18.3.1", ++ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", ++ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", ++ "dev": true, ++ "license": "MIT" + }, + "node_modules/react-refresh": { + "version": "0.14.0", +@@ -8085,28 +10940,12 @@ + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", + "dev": true + }, +- "node_modules/regexp.prototype.flags": { +- "version": "1.5.1", +- "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", +- "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", +- "dev": true, +- "dependencies": { +- "call-bind": "^1.0.2", +- "define-properties": "^1.2.0", +- "set-function-name": "^2.0.0" +- }, +- "engines": { +- "node": ">= 0.4" +- }, +- "funding": { +- "url": "https://github.com/sponsors/ljharb" +- } +- }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, ++ "license": "MIT", + "engines": { + "node": ">=0.10.0" + } +@@ -8139,6 +10978,7 @@ + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, ++ "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, +@@ -8151,6 +10991,7 @@ + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, ++ "license": "MIT", + "engines": { + "node": ">=8" + } +@@ -8164,15 +11005,6 @@ + "node": ">=4" + } + }, +- "node_modules/resolve.exports": { +- "version": "2.0.2", +- "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", +- "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", +- "dev": true, +- "engines": { +- "node": ">=10" +- } +- }, + "node_modules/restore-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", +@@ -8316,13 +11148,11 @@ + } + }, + "node_modules/semver": { +- "version": "7.5.4", +- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", +- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", ++ "version": "7.7.3", ++ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", ++ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, +- "dependencies": { +- "lru-cache": "^6.0.0" +- }, ++ "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, +@@ -8330,38 +11160,6 @@ + "node": ">=10" + } + }, +- "node_modules/semver/node_modules/lru-cache": { +- "version": "6.0.0", +- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", +- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", +- "dev": true, +- "dependencies": { +- "yallist": "^4.0.0" +- }, +- "engines": { +- "node": ">=10" +- } +- }, +- "node_modules/semver/node_modules/yallist": { +- "version": "4.0.0", +- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", +- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", +- "dev": true +- }, +- "node_modules/set-function-name": { +- "version": "2.0.1", +- "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", +- "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", +- "dev": true, +- "dependencies": { +- "define-data-property": "^1.0.1", +- "functions-have-names": "^1.2.3", +- "has-property-descriptors": "^1.0.0" +- }, +- "engines": { +- "node": ">= 0.4" +- } +- }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", +@@ -8383,32 +11181,12 @@ + "node": ">=8" + } + }, +- "node_modules/side-channel": { +- "version": "1.0.4", +- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", +- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", +- "dev": true, +- "dependencies": { +- "call-bind": "^1.0.0", +- "get-intrinsic": "^1.0.2", +- "object-inspect": "^1.9.0" +- }, +- "funding": { +- "url": "https://github.com/sponsors/ljharb" +- } +- }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, +- "node_modules/sisteransi": { +- "version": "1.0.5", +- "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", +- "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", +- "dev": true +- }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", +@@ -8469,6 +11247,7 @@ + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, ++ "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" +@@ -8501,18 +11280,6 @@ + "node": ">=8" + } + }, +- "node_modules/stop-iteration-iterator": { +- "version": "1.0.0", +- "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", +- "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", +- "dev": true, +- "dependencies": { +- "internal-slot": "^1.0.4" +- }, +- "engines": { +- "node": ">= 0.4" +- } +- }, + "node_modules/string-argv": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", +@@ -8527,6 +11294,7 @@ + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, ++ "license": "MIT", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" +@@ -8552,6 +11320,39 @@ + "url": "https://github.com/sponsors/sindresorhus" + } + }, ++ "node_modules/string-width-cjs": { ++ "name": "string-width", ++ "version": "4.2.3", ++ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", ++ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "emoji-regex": "^8.0.0", ++ "is-fullwidth-code-point": "^3.0.0", ++ "strip-ansi": "^6.0.1" ++ }, ++ "engines": { ++ "node": ">=8" ++ } ++ }, ++ "node_modules/string-width-cjs/node_modules/emoji-regex": { ++ "version": "8.0.0", ++ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", ++ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", ++ "dev": true, ++ "license": "MIT" ++ }, ++ "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { ++ "version": "3.0.0", ++ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", ++ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", ++ "dev": true, ++ "license": "MIT", ++ "engines": { ++ "node": ">=8" ++ } ++ }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", +@@ -8591,11 +11392,26 @@ + "node": ">=8" + } + }, ++ "node_modules/strip-ansi-cjs": { ++ "name": "strip-ansi", ++ "version": "6.0.1", ++ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", ++ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "ansi-regex": "^5.0.1" ++ }, ++ "engines": { ++ "node": ">=8" ++ } ++ }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, ++ "license": "MIT", + "engines": { + "node": ">=8" + } +@@ -8659,15 +11475,16 @@ + } + }, + "node_modules/supports-color": { +- "version": "5.5.0", +- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", +- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", ++ "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": "^3.0.0" ++ "has-flag": "^4.0.0" + }, + "engines": { +- "node": ">=4" ++ "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { +@@ -8688,6 +11505,22 @@ + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, ++ "node_modules/synckit": { ++ "version": "0.11.11", ++ "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz", ++ "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "@pkgr/core": "^0.2.9" ++ }, ++ "engines": { ++ "node": "^14.18.0 || >=16.0.0" ++ }, ++ "funding": { ++ "url": "https://opencollective.com/synckit" ++ } ++ }, + "node_modules/tailwindcss": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.3.tgz", +@@ -8784,20 +11617,12 @@ + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, +- "node_modules/to-fast-properties": { +- "version": "2.0.0", +- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", +- "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", +- "dev": true, +- "engines": { +- "node": ">=4" +- } +- }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, ++ "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, +@@ -8851,37 +11676,44 @@ + "dev": true + }, + "node_modules/ts-jest": { +- "version": "29.1.1", +- "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz", +- "integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==", ++ "version": "29.4.5", ++ "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.5.tgz", ++ "integrity": "sha512-HO3GyiWn2qvTQA4kTgjDcXiMwYQt68a1Y8+JuLRVpdIzm+UOLSHgl/XqR4c6nzJkq5rOkjc02O2I7P7l/Yof0Q==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "bs-logger": "0.x", +- "fast-json-stable-stringify": "2.x", +- "jest-util": "^29.0.0", ++ "bs-logger": "^0.2.6", ++ "fast-json-stable-stringify": "^2.1.0", ++ "handlebars": "^4.7.8", + "json5": "^2.2.3", +- "lodash.memoize": "4.x", +- "make-error": "1.x", +- "semver": "^7.5.3", +- "yargs-parser": "^21.0.1" ++ "lodash.memoize": "^4.1.2", ++ "make-error": "^1.3.6", ++ "semver": "^7.7.3", ++ "type-fest": "^4.41.0", ++ "yargs-parser": "^21.1.1" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { +- "node": "^14.15.0 || ^16.10.0 || >=18.0.0" ++ "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", +- "@jest/types": "^29.0.0", +- "babel-jest": "^29.0.0", +- "jest": "^29.0.0", ++ "@jest/transform": "^29.0.0 || ^30.0.0", ++ "@jest/types": "^29.0.0 || ^30.0.0", ++ "babel-jest": "^29.0.0 || ^30.0.0", ++ "jest": "^29.0.0 || ^30.0.0", ++ "jest-util": "^29.0.0 || ^30.0.0", + "typescript": ">=4.3 <6" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, ++ "@jest/transform": { ++ "optional": true ++ }, + "@jest/types": { + "optional": true + }, +@@ -8890,9 +11722,33 @@ + }, + "esbuild": { + "optional": true ++ }, ++ "jest-util": { ++ "optional": true + } + } + }, ++ "node_modules/ts-jest/node_modules/type-fest": { ++ "version": "4.41.0", ++ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", ++ "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", ++ "dev": true, ++ "license": "(MIT OR CC0-1.0)", ++ "engines": { ++ "node": ">=16" ++ }, ++ "funding": { ++ "url": "https://github.com/sponsors/sindresorhus" ++ } ++ }, ++ "node_modules/tslib": { ++ "version": "2.8.1", ++ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", ++ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", ++ "dev": true, ++ "license": "0BSD", ++ "optional": true ++ }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", +@@ -8939,6 +11795,20 @@ + "node": ">=14.17" + } + }, ++ "node_modules/uglify-js": { ++ "version": "3.19.3", ++ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", ++ "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", ++ "dev": true, ++ "license": "BSD-2-Clause", ++ "optional": true, ++ "bin": { ++ "uglifyjs": "bin/uglifyjs" ++ }, ++ "engines": { ++ "node": ">=0.8.0" ++ } ++ }, + "node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", +@@ -8948,10 +11818,45 @@ + "node": ">= 4.0.0" + } + }, ++ "node_modules/unrs-resolver": { ++ "version": "1.11.1", ++ "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", ++ "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", ++ "dev": true, ++ "hasInstallScript": true, ++ "license": "MIT", ++ "dependencies": { ++ "napi-postinstall": "^0.3.0" ++ }, ++ "funding": { ++ "url": "https://opencollective.com/unrs-resolver" ++ }, ++ "optionalDependencies": { ++ "@unrs/resolver-binding-android-arm-eabi": "1.11.1", ++ "@unrs/resolver-binding-android-arm64": "1.11.1", ++ "@unrs/resolver-binding-darwin-arm64": "1.11.1", ++ "@unrs/resolver-binding-darwin-x64": "1.11.1", ++ "@unrs/resolver-binding-freebsd-x64": "1.11.1", ++ "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", ++ "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", ++ "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", ++ "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", ++ "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", ++ "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", ++ "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", ++ "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", ++ "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", ++ "@unrs/resolver-binding-linux-x64-musl": "1.11.1", ++ "@unrs/resolver-binding-wasm32-wasi": "1.11.1", ++ "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", ++ "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", ++ "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" ++ } ++ }, + "node_modules/update-browserslist-db": { +- "version": "1.0.11", +- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", +- "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", ++ "version": "1.1.3", ++ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", ++ "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "dev": true, + "funding": [ + { +@@ -8967,9 +11872,10 @@ + "url": "https://github.com/sponsors/ai" + } + ], ++ "license": "MIT", + "dependencies": { +- "escalade": "^3.1.1", +- "picocolors": "^1.0.0" ++ "escalade": "^3.2.0", ++ "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" +@@ -9004,14 +11910,15 @@ + "dev": true + }, + "node_modules/v8-to-istanbul": { +- "version": "9.1.0", +- "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", +- "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", ++ "version": "9.3.0", ++ "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", ++ "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "dev": true, ++ "license": "ISC", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", +- "convert-source-map": "^1.6.0" ++ "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" +@@ -9164,71 +12071,79 @@ + "node": ">= 8" + } + }, +- "node_modules/which-boxed-primitive": { +- "version": "1.0.2", +- "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", +- "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", ++ "node_modules/wordwrap": { ++ "version": "1.0.0", ++ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", ++ "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true, +- "dependencies": { +- "is-bigint": "^1.0.1", +- "is-boolean-object": "^1.1.0", +- "is-number-object": "^1.0.4", +- "is-string": "^1.0.5", +- "is-symbol": "^1.0.3" +- }, +- "funding": { +- "url": "https://github.com/sponsors/ljharb" +- } ++ "license": "MIT" + }, +- "node_modules/which-collection": { +- "version": "1.0.1", +- "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", +- "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", ++ "node_modules/wrap-ansi": { ++ "version": "8.1.0", ++ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", ++ "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { +- "is-map": "^2.0.1", +- "is-set": "^2.0.1", +- "is-weakmap": "^2.0.1", +- "is-weakset": "^2.0.1" ++ "ansi-styles": "^6.1.0", ++ "string-width": "^5.0.1", ++ "strip-ansi": "^7.0.1" ++ }, ++ "engines": { ++ "node": ">=12" + }, + "funding": { +- "url": "https://github.com/sponsors/ljharb" ++ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, +- "node_modules/which-typed-array": { +- "version": "1.1.11", +- "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", +- "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", ++ "node_modules/wrap-ansi-cjs": { ++ "name": "wrap-ansi", ++ "version": "7.0.0", ++ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", ++ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "available-typed-arrays": "^1.0.5", +- "call-bind": "^1.0.2", +- "for-each": "^0.3.3", +- "gopd": "^1.0.1", +- "has-tostringtag": "^1.0.0" ++ "ansi-styles": "^4.0.0", ++ "string-width": "^4.1.0", ++ "strip-ansi": "^6.0.0" + }, + "engines": { +- "node": ">= 0.4" ++ "node": ">=10" + }, + "funding": { +- "url": "https://github.com/sponsors/ljharb" ++ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, +- "node_modules/wrap-ansi": { +- "version": "8.1.0", +- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", +- "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", ++ "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { ++ "version": "8.0.0", ++ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", ++ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", ++ "dev": true, ++ "license": "MIT" ++ }, ++ "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { ++ "version": "3.0.0", ++ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", ++ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", ++ "dev": true, ++ "license": "MIT", ++ "engines": { ++ "node": ">=8" ++ } ++ }, ++ "node_modules/wrap-ansi-cjs/node_modules/string-width": { ++ "version": "4.2.3", ++ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", ++ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, ++ "license": "MIT", + "dependencies": { +- "ansi-styles": "^6.1.0", +- "string-width": "^5.0.1", +- "strip-ansi": "^7.0.1" ++ "emoji-regex": "^8.0.0", ++ "is-fullwidth-code-point": "^3.0.0", ++ "strip-ansi": "^6.0.1" + }, + "engines": { +- "node": ">=12" +- }, +- "funding": { +- "url": "https://github.com/chalk/wrap-ansi?sponsor=1" ++ "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { +@@ -9330,6 +12245,7 @@ + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, ++ "license": "ISC", + "engines": { + "node": ">=10" + } +@@ -9338,7 +12254,8 @@ + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", +- "dev": true ++ "dev": true, ++ "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.3.2", +@@ -9354,6 +12271,7 @@ + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, ++ "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", +@@ -9380,13 +12298,15 @@ + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", +- "dev": true ++ "dev": true, ++ "license": "MIT" + }, + "node_modules/yargs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, ++ "license": "MIT", + "engines": { + "node": ">=8" + } +@@ -9396,6 +12316,7 @@ + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, ++ "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", +diff --git a/package.json b/package.json +index a711522..8c908ec 100644 +--- a/package.json ++++ b/package.json +@@ -20,9 +20,13 @@ + "react-router-dom": "6.16.0" + }, + "devDependencies": { ++ "@babel/generator": "^7.28.3", + "@jest/globals": "^29.7.0", +- "@testing-library/jest-dom": "^6.1.3", +- "@testing-library/react": "^14.0.0", ++ "@jridgewell/gen-mapping": "^0.3.13", ++ "@testing-library/dom": "^10.4.1", ++ "@testing-library/jest-dom": "^6.9.1", ++ "@testing-library/react": "^16.3.0", ++ "@types/jest": "^30.0.0", + "@types/node": "18.17.17", + "@types/react": "^18.2.21", + "@types/react-dom": "18.2.7", +@@ -35,14 +39,14 @@ + "eslint-plugin-react-hooks": "4.6.0", + "eslint-plugin-react-refresh": "0.4.3", + "husky": "^8.0.3", +- "jest": "29.7.0", ++ "jest": "^30.2.0", + "jest-environment-jsdom": "29.7.0", + "jsdom": "^22.1.0", + "lint-staged": "^14.0.1", + "postcss": "8.4.29", + "prettier": "2.8.8", + "tailwindcss": "3.3.3", +- "ts-jest": "29.1.1", ++ "ts-jest": "^29.4.5", + "typescript": "^5.2.2", + "vite": "4.4.9", + "vite-plugin-ruby": "3.2.2" +diff --git a/yarn.lock b/yarn.lock +index 63cb40d..e08dbd0 100644 +--- a/yarn.lock ++++ b/yarn.lock +@@ -7,173 +7,129 @@ + resolved "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz" + integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== + +-"@adobe/css-tools@^4.3.0": +- version "4.3.1" +- resolved "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.1.tgz" +- integrity sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg== ++"@adobe/css-tools@^4.4.0": ++ version "4.4.4" ++ resolved "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.4.tgz" ++ integrity sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg== + + "@alloc/quick-lru@^5.2.0": + version "5.2.0" + resolved "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz" + integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== + +-"@ampproject/remapping@^2.2.0": +- version "2.2.1" +- resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz" +- integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== +- dependencies: +- "@jridgewell/gen-mapping" "^0.3.0" +- "@jridgewell/trace-mapping" "^0.3.9" +- +-"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.22.13": +- version "7.22.13" +- resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz" +- integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== +- dependencies: +- "@babel/highlight" "^7.22.13" +- chalk "^2.4.2" +- +-"@babel/compat-data@^7.22.9": +- version "7.22.20" +- resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.20.tgz" +- integrity sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw== +- +-"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.22.9", "@babel/core@^7.8.0", "@babel/core@>=7.0.0-beta.0 <8": +- version "7.22.20" +- resolved "https://registry.npmjs.org/@babel/core/-/core-7.22.20.tgz" +- integrity sha512-Y6jd1ahLubuYweD/zJH+vvOY141v4f9igNQAQ+MBgq9JlHS2iTsZKn1aMsb3vGccZsXI16VzTBw52Xx0DWmtnA== +- dependencies: +- "@ampproject/remapping" "^2.2.0" +- "@babel/code-frame" "^7.22.13" +- "@babel/generator" "^7.22.15" +- "@babel/helper-compilation-targets" "^7.22.15" +- "@babel/helper-module-transforms" "^7.22.20" +- "@babel/helpers" "^7.22.15" +- "@babel/parser" "^7.22.16" +- "@babel/template" "^7.22.15" +- "@babel/traverse" "^7.22.20" +- "@babel/types" "^7.22.19" +- convert-source-map "^1.7.0" ++"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.27.1": ++ version "7.27.1" ++ resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz" ++ integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== ++ dependencies: ++ "@babel/helper-validator-identifier" "^7.27.1" ++ js-tokens "^4.0.0" ++ picocolors "^1.1.1" ++ ++"@babel/compat-data@^7.27.2": ++ version "7.28.4" ++ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz" ++ integrity sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw== ++ ++"@babel/core@^7.0.0", "@babel/core@^7.0.0 || ^8.0.0-0", "@babel/core@^7.0.0-0", "@babel/core@^7.11.0 || ^8.0.0-0", "@babel/core@^7.11.0 || ^8.0.0-beta.1", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.22.9", "@babel/core@^7.23.9", "@babel/core@^7.27.4", "@babel/core@>=7.0.0-beta.0 <8": ++ version "7.28.4" ++ resolved "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz" ++ integrity sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA== ++ dependencies: ++ "@babel/code-frame" "^7.27.1" ++ "@babel/generator" "^7.28.3" ++ "@babel/helper-compilation-targets" "^7.27.2" ++ "@babel/helper-module-transforms" "^7.28.3" ++ "@babel/helpers" "^7.28.4" ++ "@babel/parser" "^7.28.4" ++ "@babel/template" "^7.27.2" ++ "@babel/traverse" "^7.28.4" ++ "@babel/types" "^7.28.4" ++ "@jridgewell/remapping" "^2.3.5" ++ convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +-"@babel/generator@^7.22.15", "@babel/generator@^7.7.2": +- version "7.22.15" +- resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.22.15.tgz" +- integrity sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA== +- dependencies: +- "@babel/types" "^7.22.15" +- "@jridgewell/gen-mapping" "^0.3.2" +- "@jridgewell/trace-mapping" "^0.3.17" +- jsesc "^2.5.1" +- +-"@babel/helper-compilation-targets@^7.22.15": +- version "7.22.15" +- resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz" +- integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw== +- dependencies: +- "@babel/compat-data" "^7.22.9" +- "@babel/helper-validator-option" "^7.22.15" +- browserslist "^4.21.9" ++"@babel/generator@^7.27.5", "@babel/generator@^7.28.3", "@babel/generator@^7.7.2": ++ version "7.28.3" ++ resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz" ++ integrity sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw== ++ dependencies: ++ "@babel/parser" "^7.28.3" ++ "@babel/types" "^7.28.2" ++ "@jridgewell/gen-mapping" "^0.3.12" ++ "@jridgewell/trace-mapping" "^0.3.28" ++ jsesc "^3.0.2" ++ ++"@babel/helper-compilation-targets@^7.27.2": ++ version "7.27.2" ++ resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz" ++ integrity sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ== ++ dependencies: ++ "@babel/compat-data" "^7.27.2" ++ "@babel/helper-validator-option" "^7.27.1" ++ browserslist "^4.24.0" + lru-cache "^5.1.1" + semver "^6.3.1" + +-"@babel/helper-environment-visitor@^7.22.20": +- version "7.22.20" +- resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz" +- integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== ++"@babel/helper-globals@^7.28.0": ++ version "7.28.0" ++ resolved "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz" ++ integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw== + +-"@babel/helper-function-name@^7.22.5": +- version "7.22.5" +- resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz" +- integrity sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ== ++"@babel/helper-module-imports@^7.27.1": ++ version "7.27.1" ++ resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz" ++ integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w== + dependencies: +- "@babel/template" "^7.22.5" +- "@babel/types" "^7.22.5" +- +-"@babel/helper-hoist-variables@^7.22.5": +- version "7.22.5" +- resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz" +- integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== +- dependencies: +- "@babel/types" "^7.22.5" +- +-"@babel/helper-module-imports@^7.22.15": +- version "7.22.15" +- resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz" +- integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== +- dependencies: +- "@babel/types" "^7.22.15" +- +-"@babel/helper-module-transforms@^7.22.20": +- version "7.22.20" +- resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.20.tgz" +- integrity sha512-dLT7JVWIUUxKOs1UnJUBR3S70YK+pKX6AbJgB2vMIvEkZkrfJDbYDJesnPshtKV4LhDOR3Oc5YULeDizRek+5A== +- dependencies: +- "@babel/helper-environment-visitor" "^7.22.20" +- "@babel/helper-module-imports" "^7.22.15" +- "@babel/helper-simple-access" "^7.22.5" +- "@babel/helper-split-export-declaration" "^7.22.6" +- "@babel/helper-validator-identifier" "^7.22.20" +- +-"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0": +- version "7.22.5" +- resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz" +- integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== ++ "@babel/traverse" "^7.27.1" ++ "@babel/types" "^7.27.1" + +-"@babel/helper-simple-access@^7.22.5": +- version "7.22.5" +- resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz" +- integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== ++"@babel/helper-module-transforms@^7.28.3": ++ version "7.28.3" ++ resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz" ++ integrity sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw== + dependencies: +- "@babel/types" "^7.22.5" ++ "@babel/helper-module-imports" "^7.27.1" ++ "@babel/helper-validator-identifier" "^7.27.1" ++ "@babel/traverse" "^7.28.3" + +-"@babel/helper-split-export-declaration@^7.22.6": +- version "7.22.6" +- resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz" +- integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== +- dependencies: +- "@babel/types" "^7.22.5" ++"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.27.1", "@babel/helper-plugin-utils@^7.8.0": ++ version "7.27.1" ++ resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz" ++ integrity sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw== + +-"@babel/helper-string-parser@^7.22.5": +- version "7.22.5" +- resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz" +- integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== ++"@babel/helper-string-parser@^7.27.1": ++ version "7.27.1" ++ resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz" ++ integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== + +-"@babel/helper-validator-identifier@^7.22.19", "@babel/helper-validator-identifier@^7.22.20": +- version "7.22.20" +- resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz" +- integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== ++"@babel/helper-validator-identifier@^7.27.1": ++ version "7.27.1" ++ resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz" ++ integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== + +-"@babel/helper-validator-option@^7.22.15": +- version "7.22.15" +- resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz" +- integrity sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA== ++"@babel/helper-validator-option@^7.27.1": ++ version "7.27.1" ++ resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz" ++ integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== + +-"@babel/helpers@^7.22.15": +- version "7.22.15" +- resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.15.tgz" +- integrity sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw== ++"@babel/helpers@^7.28.4": ++ version "7.28.4" ++ resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz" ++ integrity sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w== + dependencies: +- "@babel/template" "^7.22.15" +- "@babel/traverse" "^7.22.15" +- "@babel/types" "^7.22.15" ++ "@babel/template" "^7.27.2" ++ "@babel/types" "^7.28.4" + +-"@babel/highlight@^7.22.13": +- version "7.22.20" +- resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz" +- integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== ++"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.27.2", "@babel/parser@^7.28.3", "@babel/parser@^7.28.4": ++ version "7.28.4" ++ resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz" ++ integrity sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg== + dependencies: +- "@babel/helper-validator-identifier" "^7.22.20" +- chalk "^2.4.2" +- js-tokens "^4.0.0" +- +-"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.15", "@babel/parser@^7.22.16": +- version "7.22.16" +- resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.22.16.tgz" +- integrity sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA== ++ "@babel/types" "^7.28.4" + + "@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" +@@ -189,14 +145,28 @@ + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +-"@babel/plugin-syntax-class-properties@^7.8.3": ++"@babel/plugin-syntax-class-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +-"@babel/plugin-syntax-import-meta@^7.8.3": ++"@babel/plugin-syntax-class-static-block@^7.14.5": ++ version "7.14.5" ++ resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz" ++ integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== ++ dependencies: ++ "@babel/helper-plugin-utils" "^7.14.5" ++ ++"@babel/plugin-syntax-import-attributes@^7.24.7": ++ version "7.27.1" ++ resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz" ++ integrity sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww== ++ dependencies: ++ "@babel/helper-plugin-utils" "^7.27.1" ++ ++"@babel/plugin-syntax-import-meta@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== +@@ -210,14 +180,14 @@ + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +-"@babel/plugin-syntax-jsx@^7.7.2": +- version "7.22.5" +- resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz" +- integrity sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg== ++"@babel/plugin-syntax-jsx@^7.27.1", "@babel/plugin-syntax-jsx@^7.7.2": ++ version "7.27.1" ++ resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz" ++ integrity sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w== + dependencies: +- "@babel/helper-plugin-utils" "^7.22.5" ++ "@babel/helper-plugin-utils" "^7.27.1" + +-"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": ++"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== +@@ -231,7 +201,7 @@ + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +-"@babel/plugin-syntax-numeric-separator@^7.8.3": ++"@babel/plugin-syntax-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== +@@ -259,19 +229,26 @@ + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +-"@babel/plugin-syntax-top-level-await@^7.8.3": ++"@babel/plugin-syntax-private-property-in-object@^7.14.5": ++ version "7.14.5" ++ resolved "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz" ++ integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== ++ dependencies: ++ "@babel/helper-plugin-utils" "^7.14.5" ++ ++"@babel/plugin-syntax-top-level-await@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +-"@babel/plugin-syntax-typescript@^7.7.2": +- version "7.22.5" +- resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz" +- integrity sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ== ++"@babel/plugin-syntax-typescript@^7.27.1", "@babel/plugin-syntax-typescript@^7.7.2": ++ version "7.27.1" ++ resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz" ++ integrity sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ== + dependencies: +- "@babel/helper-plugin-utils" "^7.22.5" ++ "@babel/helper-plugin-utils" "^7.27.1" + + "@babel/plugin-transform-react-jsx-self@^7.22.5": + version "7.22.5" +@@ -287,52 +264,70 @@ + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +-"@babel/runtime@^7.12.5", "@babel/runtime@^7.9.2": ++"@babel/runtime@^7.12.5": + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.15.tgz" + integrity sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA== + dependencies: + regenerator-runtime "^0.14.0" + +-"@babel/template@^7.22.15", "@babel/template@^7.22.5", "@babel/template@^7.3.3": +- version "7.22.15" +- resolved "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz" +- integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== +- dependencies: +- "@babel/code-frame" "^7.22.13" +- "@babel/parser" "^7.22.15" +- "@babel/types" "^7.22.15" +- +-"@babel/traverse@^7.22.15", "@babel/traverse@^7.22.20": +- version "7.22.20" +- resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.20.tgz" +- integrity sha512-eU260mPZbU7mZ0N+X10pxXhQFMGTeLb9eFS0mxehS8HZp9o1uSnFeWQuG1UPrlxgA7QoUzFhOnilHDp0AXCyHw== +- dependencies: +- "@babel/code-frame" "^7.22.13" +- "@babel/generator" "^7.22.15" +- "@babel/helper-environment-visitor" "^7.22.20" +- "@babel/helper-function-name" "^7.22.5" +- "@babel/helper-hoist-variables" "^7.22.5" +- "@babel/helper-split-export-declaration" "^7.22.6" +- "@babel/parser" "^7.22.16" +- "@babel/types" "^7.22.19" +- debug "^4.1.0" +- globals "^11.1.0" ++"@babel/template@^7.27.2": ++ version "7.27.2" ++ resolved "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz" ++ integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== ++ dependencies: ++ "@babel/code-frame" "^7.27.1" ++ "@babel/parser" "^7.27.2" ++ "@babel/types" "^7.27.1" + +-"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.3.3": +- version "7.22.19" +- resolved "https://registry.npmjs.org/@babel/types/-/types-7.22.19.tgz" +- integrity sha512-P7LAw/LbojPzkgp5oznjE6tQEIWbp4PkkfrZDINTro9zgBRtI324/EYsiSI7lhPbpIQ+DCeR2NNmMWANGGfZsg== ++"@babel/traverse@^7.27.1", "@babel/traverse@^7.28.3", "@babel/traverse@^7.28.4": ++ version "7.28.4" ++ resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz" ++ integrity sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ== + dependencies: +- "@babel/helper-string-parser" "^7.22.5" +- "@babel/helper-validator-identifier" "^7.22.19" +- to-fast-properties "^2.0.0" ++ "@babel/code-frame" "^7.27.1" ++ "@babel/generator" "^7.28.3" ++ "@babel/helper-globals" "^7.28.0" ++ "@babel/parser" "^7.28.4" ++ "@babel/template" "^7.27.2" ++ "@babel/types" "^7.28.4" ++ debug "^4.3.1" ++ ++"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.2", "@babel/types@^7.28.4", "@babel/types@^7.3.3": ++ version "7.28.4" ++ resolved "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz" ++ integrity sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q== ++ dependencies: ++ "@babel/helper-string-parser" "^7.27.1" ++ "@babel/helper-validator-identifier" "^7.27.1" + + "@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + ++"@emnapi/core@^1.4.3": ++ version "1.5.0" ++ resolved "https://registry.npmjs.org/@emnapi/core/-/core-1.5.0.tgz" ++ integrity sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg== ++ dependencies: ++ "@emnapi/wasi-threads" "1.1.0" ++ tslib "^2.4.0" ++ ++"@emnapi/runtime@^1.4.3": ++ version "1.5.0" ++ resolved "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.5.0.tgz" ++ integrity sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ== ++ dependencies: ++ tslib "^2.4.0" ++ ++"@emnapi/wasi-threads@1.1.0": ++ version "1.1.0" ++ resolved "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz" ++ integrity sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ== ++ dependencies: ++ tslib "^2.4.0" ++ + "@esbuild/darwin-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz" +@@ -389,6 +384,18 @@ + resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + ++"@isaacs/cliui@^8.0.2": ++ version "8.0.2" ++ resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz" ++ integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== ++ dependencies: ++ string-width "^5.1.2" ++ string-width-cjs "npm:string-width@^4.2.0" ++ strip-ansi "^7.0.1" ++ strip-ansi-cjs "npm:strip-ansi@^6.0.1" ++ wrap-ansi "^8.1.0" ++ wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" ++ + "@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" +@@ -400,56 +407,61 @@ + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +-"@istanbuljs/schema@^0.1.2": ++"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": + version "0.1.3" + resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +-"@jest/console@^29.7.0": +- version "29.7.0" +- resolved "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz" +- integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== ++"@jest/console@30.2.0": ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/@jest/console/-/console-30.2.0.tgz" ++ integrity sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ== + dependencies: +- "@jest/types" "^29.6.3" ++ "@jest/types" "30.2.0" + "@types/node" "*" +- chalk "^4.0.0" +- jest-message-util "^29.7.0" +- jest-util "^29.7.0" ++ chalk "^4.1.2" ++ jest-message-util "30.2.0" ++ jest-util "30.2.0" + slash "^3.0.0" + +-"@jest/core@^29.7.0": +- version "29.7.0" +- resolved "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz" +- integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== +- dependencies: +- "@jest/console" "^29.7.0" +- "@jest/reporters" "^29.7.0" +- "@jest/test-result" "^29.7.0" +- "@jest/transform" "^29.7.0" +- "@jest/types" "^29.6.3" ++"@jest/core@30.2.0": ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/@jest/core/-/core-30.2.0.tgz" ++ integrity sha512-03W6IhuhjqTlpzh/ojut/pDB2LPRygyWX8ExpgHtQA8H/3K7+1vKmcINx5UzeOX1se6YEsBsOHQ1CRzf3fOwTQ== ++ dependencies: ++ "@jest/console" "30.2.0" ++ "@jest/pattern" "30.0.1" ++ "@jest/reporters" "30.2.0" ++ "@jest/test-result" "30.2.0" ++ "@jest/transform" "30.2.0" ++ "@jest/types" "30.2.0" + "@types/node" "*" +- ansi-escapes "^4.2.1" +- chalk "^4.0.0" +- ci-info "^3.2.0" +- exit "^0.1.2" +- graceful-fs "^4.2.9" +- jest-changed-files "^29.7.0" +- jest-config "^29.7.0" +- jest-haste-map "^29.7.0" +- jest-message-util "^29.7.0" +- jest-regex-util "^29.6.3" +- jest-resolve "^29.7.0" +- jest-resolve-dependencies "^29.7.0" +- jest-runner "^29.7.0" +- jest-runtime "^29.7.0" +- jest-snapshot "^29.7.0" +- jest-util "^29.7.0" +- jest-validate "^29.7.0" +- jest-watcher "^29.7.0" +- micromatch "^4.0.4" +- pretty-format "^29.7.0" ++ ansi-escapes "^4.3.2" ++ chalk "^4.1.2" ++ ci-info "^4.2.0" ++ exit-x "^0.2.2" ++ graceful-fs "^4.2.11" ++ jest-changed-files "30.2.0" ++ jest-config "30.2.0" ++ jest-haste-map "30.2.0" ++ jest-message-util "30.2.0" ++ jest-regex-util "30.0.1" ++ jest-resolve "30.2.0" ++ jest-resolve-dependencies "30.2.0" ++ jest-runner "30.2.0" ++ jest-runtime "30.2.0" ++ jest-snapshot "30.2.0" ++ jest-util "30.2.0" ++ jest-validate "30.2.0" ++ jest-watcher "30.2.0" ++ micromatch "^4.0.8" ++ pretty-format "30.2.0" + slash "^3.0.0" +- strip-ansi "^6.0.0" ++ ++"@jest/diff-sequences@30.0.1": ++ version "30.0.1" ++ resolved "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz" ++ integrity sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw== + + "@jest/environment@^29.7.0": + version "29.7.0" +@@ -461,6 +473,16 @@ + "@types/node" "*" + jest-mock "^29.7.0" + ++"@jest/environment@30.2.0": ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz" ++ integrity sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g== ++ dependencies: ++ "@jest/fake-timers" "30.2.0" ++ "@jest/types" "30.2.0" ++ "@types/node" "*" ++ jest-mock "30.2.0" ++ + "@jest/expect-utils@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz" +@@ -468,6 +490,13 @@ + dependencies: + jest-get-type "^29.6.3" + ++"@jest/expect-utils@30.2.0": ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz" ++ integrity sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA== ++ dependencies: ++ "@jest/get-type" "30.1.0" ++ + "@jest/expect@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz" +@@ -476,6 +505,14 @@ + expect "^29.7.0" + jest-snapshot "^29.7.0" + ++"@jest/expect@30.2.0": ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/@jest/expect/-/expect-30.2.0.tgz" ++ integrity sha512-V9yxQK5erfzx99Sf+7LbhBwNWEZ9eZay8qQ9+JSC0TrMR1pMDHLMY+BnVPacWU6Jamrh252/IKo4F1Xn/zfiqA== ++ dependencies: ++ expect "30.2.0" ++ jest-snapshot "30.2.0" ++ + "@jest/fake-timers@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz" +@@ -488,7 +525,24 @@ + jest-mock "^29.7.0" + jest-util "^29.7.0" + +-"@jest/globals@^29.7.0", "@jest/globals@>= 28": ++"@jest/fake-timers@30.2.0": ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz" ++ integrity sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw== ++ dependencies: ++ "@jest/types" "30.2.0" ++ "@sinonjs/fake-timers" "^13.0.0" ++ "@types/node" "*" ++ jest-message-util "30.2.0" ++ jest-mock "30.2.0" ++ jest-util "30.2.0" ++ ++"@jest/get-type@30.1.0": ++ version "30.1.0" ++ resolved "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz" ++ integrity sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA== ++ ++"@jest/globals@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz" + integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== +@@ -498,34 +552,51 @@ + "@jest/types" "^29.6.3" + jest-mock "^29.7.0" + +-"@jest/reporters@^29.7.0": +- version "29.7.0" +- resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz" +- integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== ++"@jest/globals@30.2.0": ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/@jest/globals/-/globals-30.2.0.tgz" ++ integrity sha512-b63wmnKPaK+6ZZfpYhz9K61oybvbI1aMcIs80++JI1O1rR1vaxHUCNqo3ITu6NU0d4V34yZFoHMn/uoKr/Rwfw== ++ dependencies: ++ "@jest/environment" "30.2.0" ++ "@jest/expect" "30.2.0" ++ "@jest/types" "30.2.0" ++ jest-mock "30.2.0" ++ ++"@jest/pattern@30.0.1": ++ version "30.0.1" ++ resolved "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz" ++ integrity sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA== ++ dependencies: ++ "@types/node" "*" ++ jest-regex-util "30.0.1" ++ ++"@jest/reporters@30.2.0": ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-30.2.0.tgz" ++ integrity sha512-DRyW6baWPqKMa9CzeiBjHwjd8XeAyco2Vt8XbcLFjiwCOEKOvy82GJ8QQnJE9ofsxCMPjH4MfH8fCWIHHDKpAQ== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" +- "@jest/console" "^29.7.0" +- "@jest/test-result" "^29.7.0" +- "@jest/transform" "^29.7.0" +- "@jest/types" "^29.6.3" +- "@jridgewell/trace-mapping" "^0.3.18" ++ "@jest/console" "30.2.0" ++ "@jest/test-result" "30.2.0" ++ "@jest/transform" "30.2.0" ++ "@jest/types" "30.2.0" ++ "@jridgewell/trace-mapping" "^0.3.25" + "@types/node" "*" +- chalk "^4.0.0" +- collect-v8-coverage "^1.0.0" +- exit "^0.1.2" +- glob "^7.1.3" +- graceful-fs "^4.2.9" ++ chalk "^4.1.2" ++ collect-v8-coverage "^1.0.2" ++ exit-x "^0.2.2" ++ glob "^10.3.10" ++ graceful-fs "^4.2.11" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^6.0.0" + istanbul-lib-report "^3.0.0" +- istanbul-lib-source-maps "^4.0.0" ++ istanbul-lib-source-maps "^5.0.0" + istanbul-reports "^3.1.3" +- jest-message-util "^29.7.0" +- jest-util "^29.7.0" +- jest-worker "^29.7.0" ++ jest-message-util "30.2.0" ++ jest-util "30.2.0" ++ jest-worker "30.2.0" + slash "^3.0.0" +- string-length "^4.0.1" +- strip-ansi "^6.0.0" ++ string-length "^4.0.2" + v8-to-istanbul "^9.0.1" + + "@jest/schemas@^29.6.3": +@@ -535,36 +606,53 @@ + dependencies: + "@sinclair/typebox" "^0.27.8" + +-"@jest/source-map@^29.6.3": +- version "29.6.3" +- resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz" +- integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== ++"@jest/schemas@30.0.5": ++ version "30.0.5" ++ resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz" ++ integrity sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA== + dependencies: +- "@jridgewell/trace-mapping" "^0.3.18" +- callsites "^3.0.0" +- graceful-fs "^4.2.9" ++ "@sinclair/typebox" "^0.34.0" + +-"@jest/test-result@^29.7.0": +- version "29.7.0" +- resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz" +- integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== ++"@jest/snapshot-utils@30.2.0": ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.2.0.tgz" ++ integrity sha512-0aVxM3RH6DaiLcjj/b0KrIBZhSX1373Xci4l3cW5xiUWPctZ59zQ7jj4rqcJQ/Z8JuN/4wX3FpJSa3RssVvCug== + dependencies: +- "@jest/console" "^29.7.0" +- "@jest/types" "^29.6.3" +- "@types/istanbul-lib-coverage" "^2.0.0" +- collect-v8-coverage "^1.0.0" ++ "@jest/types" "30.2.0" ++ chalk "^4.1.2" ++ graceful-fs "^4.2.11" ++ natural-compare "^1.4.0" + +-"@jest/test-sequencer@^29.7.0": +- version "29.7.0" +- resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz" +- integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== +- dependencies: +- "@jest/test-result" "^29.7.0" +- graceful-fs "^4.2.9" +- jest-haste-map "^29.7.0" ++"@jest/source-map@30.0.1": ++ version "30.0.1" ++ resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz" ++ integrity sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg== ++ dependencies: ++ "@jridgewell/trace-mapping" "^0.3.25" ++ callsites "^3.1.0" ++ graceful-fs "^4.2.11" ++ ++"@jest/test-result@30.2.0": ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-30.2.0.tgz" ++ integrity sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg== ++ dependencies: ++ "@jest/console" "30.2.0" ++ "@jest/types" "30.2.0" ++ "@types/istanbul-lib-coverage" "^2.0.6" ++ collect-v8-coverage "^1.0.2" ++ ++"@jest/test-sequencer@30.2.0": ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.2.0.tgz" ++ integrity sha512-wXKgU/lk8fKXMu/l5Hog1R61bL4q5GCdT6OJvdAFz1P+QrpoFuLU68eoKuVc4RbrTtNnTL5FByhWdLgOPSph+Q== ++ dependencies: ++ "@jest/test-result" "30.2.0" ++ graceful-fs "^4.2.11" ++ jest-haste-map "30.2.0" + slash "^3.0.0" + +-"@jest/transform@^29.7.0": ++"@jest/transform@^29.0.0 || ^30.0.0", "@jest/transform@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz" + integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== +@@ -585,7 +673,28 @@ + slash "^3.0.0" + write-file-atomic "^4.0.2" + +-"@jest/types@^29.0.0", "@jest/types@^29.6.3": ++"@jest/transform@30.2.0": ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz" ++ integrity sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA== ++ dependencies: ++ "@babel/core" "^7.27.4" ++ "@jest/types" "30.2.0" ++ "@jridgewell/trace-mapping" "^0.3.25" ++ babel-plugin-istanbul "^7.0.1" ++ chalk "^4.1.2" ++ convert-source-map "^2.0.0" ++ fast-json-stable-stringify "^2.1.0" ++ graceful-fs "^4.2.11" ++ jest-haste-map "30.2.0" ++ jest-regex-util "30.0.1" ++ jest-util "30.2.0" ++ micromatch "^4.0.8" ++ pirates "^4.0.7" ++ slash "^3.0.0" ++ write-file-atomic "^5.0.1" ++ ++"@jest/types@^29.0.0 || ^30.0.0", "@jest/types@^29.6.3": + version "29.6.3" + resolved "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz" + integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== +@@ -597,38 +706,62 @@ + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +-"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": +- version "0.3.3" +- resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz" +- integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== ++"@jest/types@30.2.0": ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz" ++ integrity sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg== ++ dependencies: ++ "@jest/pattern" "30.0.1" ++ "@jest/schemas" "30.0.5" ++ "@types/istanbul-lib-coverage" "^2.0.6" ++ "@types/istanbul-reports" "^3.0.4" ++ "@types/node" "*" ++ "@types/yargs" "^17.0.33" ++ chalk "^4.1.2" ++ ++"@jridgewell/gen-mapping@^0.3.12", "@jridgewell/gen-mapping@^0.3.13", "@jridgewell/gen-mapping@^0.3.2", "@jridgewell/gen-mapping@^0.3.5": ++ version "0.3.13" ++ resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz" ++ integrity sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA== ++ dependencies: ++ "@jridgewell/sourcemap-codec" "^1.5.0" ++ "@jridgewell/trace-mapping" "^0.3.24" ++ ++"@jridgewell/remapping@^2.3.5": ++ version "2.3.5" ++ resolved "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz" ++ integrity sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ== + dependencies: +- "@jridgewell/set-array" "^1.0.1" +- "@jridgewell/sourcemap-codec" "^1.4.10" +- "@jridgewell/trace-mapping" "^0.3.9" ++ "@jridgewell/gen-mapping" "^0.3.5" ++ "@jridgewell/trace-mapping" "^0.3.24" + + "@jridgewell/resolve-uri@^3.1.0": + version "3.1.1" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + +-"@jridgewell/set-array@^1.0.1": +- version "1.1.2" +- resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" +- integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== +- +-"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": +- version "1.4.15" +- resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" +- integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== ++"@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0": ++ version "1.5.5" ++ resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz" ++ integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== + +-"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": +- version "0.3.19" +- resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz" +- integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== ++"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.23", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.28": ++ version "0.3.31" ++ resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz" ++ integrity sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + ++"@napi-rs/wasm-runtime@^0.2.11": ++ version "0.2.12" ++ resolved "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz" ++ integrity sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ== ++ dependencies: ++ "@emnapi/core" "^1.4.3" ++ "@emnapi/runtime" "^1.4.3" ++ "@tybys/wasm-util" "^0.10.0" ++ + "@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" +@@ -650,6 +783,16 @@ + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + ++"@pkgjs/parseargs@^0.11.0": ++ version "0.11.0" ++ resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" ++ integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== ++ ++"@pkgr/core@^0.2.9": ++ version "0.2.9" ++ resolved "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz" ++ integrity sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA== ++ + "@remix-run/router@1.9.0": + version "1.9.0" + resolved "https://registry.npmjs.org/@remix-run/router/-/router-1.9.0.tgz" +@@ -660,10 +803,15 @@ + resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== + +-"@sinonjs/commons@^3.0.0": +- version "3.0.0" +- resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz" +- integrity sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA== ++"@sinclair/typebox@^0.34.0": ++ version "0.34.41" ++ resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz" ++ integrity sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g== ++ ++"@sinonjs/commons@^3.0.0", "@sinonjs/commons@^3.0.1": ++ version "3.0.1" ++ resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz" ++ integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== + dependencies: + type-detect "4.0.8" + +@@ -674,6 +822,13 @@ + dependencies: + "@sinonjs/commons" "^3.0.0" + ++"@sinonjs/fake-timers@^13.0.0": ++ version "13.0.5" ++ resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz" ++ integrity sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw== ++ dependencies: ++ "@sinonjs/commons" "^3.0.1" ++ + "@swc/core-darwin-arm64@1.3.85": + version "1.3.85" + resolved "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.85.tgz" +@@ -702,57 +857,60 @@ + resolved "https://registry.npmjs.org/@swc/types/-/types-0.1.4.tgz" + integrity sha512-z/G02d+59gyyUb7KYhKi9jOhicek6QD2oMaotUyG+lUkybpXoV49dY9bj7Ah5Q+y7knK2jU67UTX9FyfGzaxQg== + +-"@testing-library/dom@^9.0.0": +- version "9.3.3" +- resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.3.tgz" +- integrity sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw== ++"@testing-library/dom@^10.0.0", "@testing-library/dom@^10.4.1": ++ version "10.4.1" ++ resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz" ++ integrity sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/runtime" "^7.12.5" + "@types/aria-query" "^5.0.1" +- aria-query "5.1.3" +- chalk "^4.1.0" ++ aria-query "5.3.0" + dom-accessibility-api "^0.5.9" + lz-string "^1.5.0" ++ picocolors "1.1.1" + pretty-format "^27.0.2" + +-"@testing-library/jest-dom@^6.1.3": +- version "6.1.3" +- resolved "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.1.3.tgz" +- integrity sha512-YzpjRHoCBWPzpPNtg6gnhasqtE/5O4qz8WCwDEaxtfnPO6gkaLrnuXusrGSPyhIGPezr1HM7ZH0CFaUTY9PJEQ== ++"@testing-library/jest-dom@^6.9.1": ++ version "6.9.1" ++ resolved "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.9.1.tgz" ++ integrity sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA== + dependencies: +- "@adobe/css-tools" "^4.3.0" +- "@babel/runtime" "^7.9.2" ++ "@adobe/css-tools" "^4.4.0" + aria-query "^5.0.0" +- chalk "^3.0.0" + css.escape "^1.5.1" +- dom-accessibility-api "^0.5.6" +- lodash "^4.17.15" ++ dom-accessibility-api "^0.6.3" ++ picocolors "^1.1.1" + redent "^3.0.0" + +-"@testing-library/react@^14.0.0": +- version "14.0.0" +- resolved "https://registry.npmjs.org/@testing-library/react/-/react-14.0.0.tgz" +- integrity sha512-S04gSNJbYE30TlIMLTzv6QCTzt9AqIF5y6s6SzVFILNcNvbV/jU96GeiTPillGQo+Ny64M/5PV7klNYYgv5Dfg== ++"@testing-library/react@^16.3.0": ++ version "16.3.0" ++ resolved "https://registry.npmjs.org/@testing-library/react/-/react-16.3.0.tgz" ++ integrity sha512-kFSyxiEDwv1WLl2fgsq6pPBbw5aWKrsY2/noi1Id0TK0UParSF62oFQFGHXIyaG4pp2tEub/Zlel+fjjZILDsw== + dependencies: + "@babel/runtime" "^7.12.5" +- "@testing-library/dom" "^9.0.0" +- "@types/react-dom" "^18.0.0" + + "@tootallnate/once@2": + version "2.0.0" + resolved "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz" + integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== + ++"@tybys/wasm-util@^0.10.0": ++ version "0.10.1" ++ resolved "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz" ++ integrity sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg== ++ dependencies: ++ tslib "^2.4.0" ++ + "@types/aria-query@^5.0.1": + version "5.0.1" + resolved "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.1.tgz" + integrity sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q== + +-"@types/babel__core@^7.1.14": +- version "7.20.2" +- resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.2.tgz" +- integrity sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA== ++"@types/babel__core@^7.20.5": ++ version "7.20.5" ++ resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz" ++ integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== + dependencies: + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" +@@ -761,26 +919,26 @@ + "@types/babel__traverse" "*" + + "@types/babel__generator@*": +- version "7.6.5" +- resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.5.tgz" +- integrity sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w== ++ version "7.27.0" ++ resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz" ++ integrity sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg== + dependencies: + "@babel/types" "^7.0.0" + + "@types/babel__template@*": +- version "7.4.2" +- resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.2.tgz" +- integrity sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ== ++ version "7.4.4" ++ resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz" ++ integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +-"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": +- version "7.20.2" +- resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.2.tgz" +- integrity sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw== ++"@types/babel__traverse@*": ++ version "7.28.0" ++ resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz" ++ integrity sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q== + dependencies: +- "@babel/types" "^7.20.7" ++ "@babel/types" "^7.28.2" + + "@types/graceful-fs@^4.1.3": + version "4.1.7" +@@ -789,10 +947,10 @@ + dependencies: + "@types/node" "*" + +-"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": +- version "2.0.4" +- resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz" +- integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== ++"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1", "@types/istanbul-lib-coverage@^2.0.6": ++ version "2.0.6" ++ resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz" ++ integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== + + "@types/istanbul-lib-report@*": + version "3.0.0" +@@ -801,13 +959,21 @@ + dependencies: + "@types/istanbul-lib-coverage" "*" + +-"@types/istanbul-reports@^3.0.0": +- version "3.0.1" +- resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz" +- integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== ++"@types/istanbul-reports@^3.0.0", "@types/istanbul-reports@^3.0.4": ++ version "3.0.4" ++ resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz" ++ integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== + dependencies: + "@types/istanbul-lib-report" "*" + ++"@types/jest@^30.0.0": ++ version "30.0.0" ++ resolved "https://registry.npmjs.org/@types/jest/-/jest-30.0.0.tgz" ++ integrity sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA== ++ dependencies: ++ expect "^30.0.0" ++ pretty-format "^30.0.0" ++ + "@types/jsdom@^20.0.0": + version "20.0.1" + resolved "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz" +@@ -832,14 +998,14 @@ + resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz" + integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== + +-"@types/react-dom@^18.0.0", "@types/react-dom@18.2.7": ++"@types/react-dom@^18.0.0 || ^19.0.0", "@types/react-dom@18.2.7": + version "18.2.7" + resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.7.tgz" + integrity sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA== + dependencies: + "@types/react" "*" + +-"@types/react@*", "@types/react@^18.2.21": ++"@types/react@*", "@types/react@^18.0.0 || ^19.0.0", "@types/react@^18.2.21": + version "18.2.21" + resolved "https://registry.npmjs.org/@types/react/-/react-18.2.21.tgz" + integrity sha512-neFKG/sBAwGxHgXiIxnbm3/AAVQ/cMRS93hvBpg8xYRbeQSPVABp9U2bRnPf0iI4+Ucdv3plSxKK+3CW2ENJxA== +@@ -858,10 +1024,10 @@ + resolved "https://registry.npmjs.org/@types/semver/-/semver-7.5.2.tgz" + integrity sha512-7aqorHYgdNO4DM36stTiGO3DvKoex9TQRwsJU6vMaFGyqpBA1MNZkz+PG3gaNUPpTAOYhT1WR7M1JyA3fbS9Cw== + +-"@types/stack-utils@^2.0.0": +- version "2.0.1" +- resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz" +- integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== ++"@types/stack-utils@^2.0.0", "@types/stack-utils@^2.0.3": ++ version "2.0.3" ++ resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz" ++ integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== + + "@types/tough-cookie@*": + version "4.0.3" +@@ -873,10 +1039,10 @@ + resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz" + integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== + +-"@types/yargs@^17.0.8": +- version "17.0.24" +- resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz" +- integrity sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw== ++"@types/yargs@^17.0.33", "@types/yargs@^17.0.8": ++ version "17.0.33" ++ resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz" ++ integrity sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA== + dependencies: + "@types/yargs-parser" "*" + +@@ -965,6 +1131,108 @@ + "@typescript-eslint/types" "6.7.0" + eslint-visitor-keys "^3.4.1" + ++"@ungap/structured-clone@^1.3.0": ++ version "1.3.0" ++ resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz" ++ integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== ++ ++"@unrs/resolver-binding-android-arm-eabi@1.11.1": ++ version "1.11.1" ++ resolved "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz" ++ integrity sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw== ++ ++"@unrs/resolver-binding-android-arm64@1.11.1": ++ version "1.11.1" ++ resolved "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz" ++ integrity sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g== ++ ++"@unrs/resolver-binding-darwin-arm64@1.11.1": ++ version "1.11.1" ++ resolved "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz" ++ integrity sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g== ++ ++"@unrs/resolver-binding-darwin-x64@1.11.1": ++ version "1.11.1" ++ resolved "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz" ++ integrity sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ== ++ ++"@unrs/resolver-binding-freebsd-x64@1.11.1": ++ version "1.11.1" ++ resolved "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz" ++ integrity sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw== ++ ++"@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1": ++ version "1.11.1" ++ resolved "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz" ++ integrity sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw== ++ ++"@unrs/resolver-binding-linux-arm-musleabihf@1.11.1": ++ version "1.11.1" ++ resolved "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz" ++ integrity sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw== ++ ++"@unrs/resolver-binding-linux-arm64-gnu@1.11.1": ++ version "1.11.1" ++ resolved "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz" ++ integrity sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ== ++ ++"@unrs/resolver-binding-linux-arm64-musl@1.11.1": ++ version "1.11.1" ++ resolved "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz" ++ integrity sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w== ++ ++"@unrs/resolver-binding-linux-ppc64-gnu@1.11.1": ++ version "1.11.1" ++ resolved "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz" ++ integrity sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA== ++ ++"@unrs/resolver-binding-linux-riscv64-gnu@1.11.1": ++ version "1.11.1" ++ resolved "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz" ++ integrity sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ== ++ ++"@unrs/resolver-binding-linux-riscv64-musl@1.11.1": ++ version "1.11.1" ++ resolved "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz" ++ integrity sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew== ++ ++"@unrs/resolver-binding-linux-s390x-gnu@1.11.1": ++ version "1.11.1" ++ resolved "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz" ++ integrity sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg== ++ ++"@unrs/resolver-binding-linux-x64-gnu@1.11.1": ++ version "1.11.1" ++ resolved "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz" ++ integrity sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w== ++ ++"@unrs/resolver-binding-linux-x64-musl@1.11.1": ++ version "1.11.1" ++ resolved "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz" ++ integrity sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA== ++ ++"@unrs/resolver-binding-wasm32-wasi@1.11.1": ++ version "1.11.1" ++ resolved "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz" ++ integrity sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ== ++ dependencies: ++ "@napi-rs/wasm-runtime" "^0.2.11" ++ ++"@unrs/resolver-binding-win32-arm64-msvc@1.11.1": ++ version "1.11.1" ++ resolved "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz" ++ integrity sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw== ++ ++"@unrs/resolver-binding-win32-ia32-msvc@1.11.1": ++ version "1.11.1" ++ resolved "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz" ++ integrity sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ== ++ ++"@unrs/resolver-binding-win32-x64-msvc@1.11.1": ++ version "1.11.1" ++ resolved "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz" ++ integrity sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g== ++ + "@vitejs/plugin-react-swc@3.3.2": + version "3.3.2" + resolved "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.3.2.tgz" +@@ -1027,7 +1295,7 @@ ajv@^6.12.4: + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +-ansi-escapes@^4.2.1: ++ansi-escapes@^4.3.2: + version "4.3.2" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== +@@ -1047,25 +1315,11 @@ ansi-regex@^5.0.1: + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + + ansi-regex@^6.0.1: +- version "6.0.1" +- resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" +- integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== +- +-ansi-styles@^3.2.1: +- version "3.2.1" +- resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" +- integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== +- dependencies: +- color-convert "^1.9.0" ++ version "6.2.2" ++ resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz" ++ integrity sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg== + +-ansi-styles@^4.0.0: +- version "4.3.0" +- resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" +- integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== +- dependencies: +- color-convert "^2.0.1" +- +-ansi-styles@^4.1.0: ++ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== +@@ -1077,6 +1331,11 @@ ansi-styles@^5.0.0: + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + ++ansi-styles@^5.2.0: ++ version "5.2.0" ++ resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" ++ integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== ++ + ansi-styles@^6.0.0: + version "6.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" +@@ -1092,7 +1351,7 @@ any-promise@^1.0.0: + resolved "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + +-anymatch@^3.0.3, anymatch@~3.1.2: ++anymatch@^3.0.3, anymatch@^3.1.3, anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== +@@ -1117,20 +1376,12 @@ argparse@^2.0.1: + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +-aria-query@^5.0.0, aria-query@5.1.3: +- version "5.1.3" +- resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz" +- integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== +- dependencies: +- deep-equal "^2.0.5" +- +-array-buffer-byte-length@^1.0.0: +- version "1.0.0" +- resolved "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz" +- integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== ++aria-query@^5.0.0, aria-query@5.3.0: ++ version "5.3.0" ++ resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz" ++ integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== + dependencies: +- call-bind "^1.0.2" +- is-array-buffer "^3.0.1" ++ dequal "^2.0.3" + + array-union@^2.1.0: + version "2.1.0" +@@ -1154,22 +1405,17 @@ autoprefixer@10.4.15: + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" + +-available-typed-arrays@^1.0.5: +- version "1.0.5" +- resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" +- integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== +- +-babel-jest@^29.0.0, babel-jest@^29.7.0: +- version "29.7.0" +- resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz" +- integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== +- dependencies: +- "@jest/transform" "^29.7.0" +- "@types/babel__core" "^7.1.14" +- babel-plugin-istanbul "^6.1.1" +- babel-preset-jest "^29.6.3" +- chalk "^4.0.0" +- graceful-fs "^4.2.9" ++"babel-jest@^29.0.0 || ^30.0.0", babel-jest@30.2.0: ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-30.2.0.tgz" ++ integrity sha512-0YiBEOxWqKkSQWL9nNGGEgndoeL0ZpWrbLMNL5u/Kaxrli3Eaxlt3ZtIDktEvXt4L/R9r3ODr2zKwGM/2BjxVw== ++ dependencies: ++ "@jest/transform" "30.2.0" ++ "@types/babel__core" "^7.20.5" ++ babel-plugin-istanbul "^7.0.1" ++ babel-preset-jest "30.2.0" ++ chalk "^4.1.2" ++ graceful-fs "^4.2.11" + slash "^3.0.0" + + babel-plugin-istanbul@^6.1.1: +@@ -1183,47 +1429,63 @@ babel-plugin-istanbul@^6.1.1: + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" + +-babel-plugin-jest-hoist@^29.6.3: +- version "29.6.3" +- resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz" +- integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== ++babel-plugin-istanbul@^7.0.1: ++ version "7.0.1" ++ resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz" ++ integrity sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA== + dependencies: +- "@babel/template" "^7.3.3" +- "@babel/types" "^7.3.3" +- "@types/babel__core" "^7.1.14" +- "@types/babel__traverse" "^7.0.6" ++ "@babel/helper-plugin-utils" "^7.0.0" ++ "@istanbuljs/load-nyc-config" "^1.0.0" ++ "@istanbuljs/schema" "^0.1.3" ++ istanbul-lib-instrument "^6.0.2" ++ test-exclude "^6.0.0" + +-babel-preset-current-node-syntax@^1.0.0: +- version "1.0.1" +- resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz" +- integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== ++babel-plugin-jest-hoist@30.2.0: ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.2.0.tgz" ++ integrity sha512-ftzhzSGMUnOzcCXd6WHdBGMyuwy15Wnn0iyyWGKgBDLxf9/s5ABuraCSpBX2uG0jUg4rqJnxsLc5+oYBqoxVaA== ++ dependencies: ++ "@types/babel__core" "^7.20.5" ++ ++babel-preset-current-node-syntax@^1.0.0, babel-preset-current-node-syntax@^1.2.0: ++ version "1.2.0" ++ resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz" ++ integrity sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" +- "@babel/plugin-syntax-class-properties" "^7.8.3" +- "@babel/plugin-syntax-import-meta" "^7.8.3" ++ "@babel/plugin-syntax-class-properties" "^7.12.13" ++ "@babel/plugin-syntax-class-static-block" "^7.14.5" ++ "@babel/plugin-syntax-import-attributes" "^7.24.7" ++ "@babel/plugin-syntax-import-meta" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.3" +- "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" ++ "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" +- "@babel/plugin-syntax-numeric-separator" "^7.8.3" ++ "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" +- "@babel/plugin-syntax-top-level-await" "^7.8.3" ++ "@babel/plugin-syntax-private-property-in-object" "^7.14.5" ++ "@babel/plugin-syntax-top-level-await" "^7.14.5" + +-babel-preset-jest@^29.6.3: +- version "29.6.3" +- resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz" +- integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== ++babel-preset-jest@30.2.0: ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.2.0.tgz" ++ integrity sha512-US4Z3NOieAQumwFnYdUWKvUKh8+YSnS/gB3t6YBiz0bskpu7Pine8pPCheNxlPEW4wnUkma2a94YuW2q3guvCQ== + dependencies: +- babel-plugin-jest-hoist "^29.6.3" +- babel-preset-current-node-syntax "^1.0.0" ++ babel-plugin-jest-hoist "30.2.0" ++ babel-preset-current-node-syntax "^1.2.0" + + balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + ++baseline-browser-mapping@^2.8.9: ++ version "2.8.16" ++ resolved "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.16.tgz" ++ integrity sha512-OMu3BGQ4E7P1ErFsIPpbJh0qvDudM/UuJeHgkAvfWe+0HFJCXh+t/l8L6fVLR55RI/UbKrVLnAXZSVwd9ysWYw== ++ + binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" +@@ -1237,24 +1499,32 @@ brace-expansion@^1.1.7: + balanced-match "^1.0.0" + concat-map "0.0.1" + +-braces@^3.0.2, braces@~3.0.2: +- version "3.0.2" +- resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" +- integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== ++brace-expansion@^2.0.1: ++ version "2.0.2" ++ resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz" ++ integrity sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ== + dependencies: +- fill-range "^7.0.1" ++ balanced-match "^1.0.0" + +-browserslist@^4.21.10, browserslist@^4.21.9, "browserslist@>= 4.21.0": +- version "4.21.10" +- resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz" +- integrity sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ== ++braces@^3.0.2, braces@^3.0.3, braces@~3.0.2: ++ version "3.0.3" ++ resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz" ++ integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: +- caniuse-lite "^1.0.30001517" +- electron-to-chromium "^1.4.477" +- node-releases "^2.0.13" +- update-browserslist-db "^1.0.11" ++ fill-range "^7.1.1" + +-bs-logger@0.x: ++browserslist@^4.21.10, browserslist@^4.24.0, "browserslist@>= 4.21.0": ++ version "4.26.3" ++ resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.26.3.tgz" ++ integrity sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w== ++ dependencies: ++ baseline-browser-mapping "^2.8.9" ++ caniuse-lite "^1.0.30001746" ++ electron-to-chromium "^1.5.227" ++ node-releases "^2.0.21" ++ update-browserslist-db "^1.1.3" ++ ++bs-logger@^0.2.6: + version "0.2.6" + resolved "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz" + integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== +@@ -1273,15 +1543,7 @@ buffer-from@^1.0.0: + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +-call-bind@^1.0.0, call-bind@^1.0.2: +- version "1.0.2" +- resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" +- integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== +- dependencies: +- function-bind "^1.1.1" +- get-intrinsic "^1.0.2" +- +-callsites@^3.0.0: ++callsites@^3.0.0, callsites@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== +@@ -1296,42 +1558,17 @@ camelcase@^5.3.1: + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +-camelcase@^6.2.0: ++camelcase@^6.3.0: + version "6.3.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +-caniuse-lite@^1.0.30001517, caniuse-lite@^1.0.30001520: +- version "1.0.30001534" +- resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001534.tgz" +- integrity sha512-vlPVrhsCS7XaSh2VvWluIQEzVhefrUQcEsQWSS5A5V+dM07uv1qHeQzAOTGIMy9i3e9bH15+muvI/UHojVgS/Q== +- +-chalk@^2.4.2: +- version "2.4.2" +- resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" +- integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== +- dependencies: +- ansi-styles "^3.2.1" +- escape-string-regexp "^1.0.5" +- supports-color "^5.3.0" +- +-chalk@^3.0.0: +- version "3.0.0" +- resolved "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz" +- integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== +- dependencies: +- ansi-styles "^4.1.0" +- supports-color "^7.1.0" +- +-chalk@^4.0.0: +- version "4.1.2" +- resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" +- integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== +- dependencies: +- ansi-styles "^4.1.0" +- supports-color "^7.1.0" ++caniuse-lite@^1.0.30001520, caniuse-lite@^1.0.30001746: ++ version "1.0.30001750" ++ resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001750.tgz" ++ integrity sha512-cuom0g5sdX6rw00qOoLNSFCJ9/mYIsuSOA+yzpDw8eopiFqcVwQvZHqov0vmEighRxX++cfC0Vg1G+1Iy/mSpQ== + +-chalk@^4.1.0: ++chalk@^4.0.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== +@@ -1369,10 +1606,15 @@ ci-info@^3.2.0: + resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz" + integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== + +-cjs-module-lexer@^1.0.0: +- version "1.2.3" +- resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz" +- integrity sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ== ++ci-info@^4.2.0: ++ version "4.3.1" ++ resolved "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz" ++ integrity sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA== ++ ++cjs-module-lexer@^2.1.0: ++ version "2.1.0" ++ resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.1.0.tgz" ++ integrity sha512-UX0OwmYRYQQetfrLEZeewIFFI+wSTofC+pMBLNuH3RUuu/xzG1oz84UCEDOSoQlN3fZ4+AzmV50ZYvGqkMh9yA== + + classnames@^2.5.1: + version "2.5.1" +@@ -1408,18 +1650,11 @@ co@^4.6.0: + resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== + +-collect-v8-coverage@^1.0.0: ++collect-v8-coverage@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz" + integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== + +-color-convert@^1.9.0: +- version "1.9.3" +- resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" +- integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== +- dependencies: +- color-name "1.1.3" +- + color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" +@@ -1432,11 +1667,6 @@ color-name@~1.1.4: + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +-color-name@1.1.3: +- version "1.1.3" +- resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" +- integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== +- + colorette@^2.0.20: + version "2.0.20" + resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz" +@@ -1464,33 +1694,15 @@ concat-map@0.0.1: + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +-convert-source-map@^1.6.0, convert-source-map@^1.7.0: +- version "1.9.0" +- resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz" +- integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== +- + convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + +-create-jest@^29.7.0: +- version "29.7.0" +- resolved "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz" +- integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== +- dependencies: +- "@jest/types" "^29.6.3" +- chalk "^4.0.0" +- exit "^0.1.2" +- graceful-fs "^4.2.9" +- jest-config "^29.7.0" +- jest-util "^29.7.0" +- prompts "^2.0.1" +- +-cross-spawn@^7.0.2, cross-spawn@^7.0.3: +- version "7.0.3" +- resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" +- integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== ++cross-spawn@^7.0.2, cross-spawn@^7.0.3, cross-spawn@^7.0.6: ++ version "7.0.6" ++ resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz" ++ integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" +@@ -1553,7 +1765,7 @@ data-urls@^4.0.0: + whatwg-mimetype "^3.0.0" + whatwg-url "^12.0.0" + +-debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4, debug@4, debug@4.3.4: ++debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@4, debug@4.3.4: + version "4.3.4" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== +@@ -1565,69 +1777,32 @@ decimal.js@^10.4.2, decimal.js@^10.4.3: + resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz" + integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== + +-dedent@^1.0.0: +- version "1.5.1" +- resolved "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz" +- integrity sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg== +- +-deep-equal@^2.0.5: +- version "2.2.2" +- resolved "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.2.tgz" +- integrity sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA== +- dependencies: +- array-buffer-byte-length "^1.0.0" +- call-bind "^1.0.2" +- es-get-iterator "^1.1.3" +- get-intrinsic "^1.2.1" +- is-arguments "^1.1.1" +- is-array-buffer "^3.0.2" +- is-date-object "^1.0.5" +- is-regex "^1.1.4" +- is-shared-array-buffer "^1.0.2" +- isarray "^2.0.5" +- object-is "^1.1.5" +- object-keys "^1.1.1" +- object.assign "^4.1.4" +- regexp.prototype.flags "^1.5.0" +- side-channel "^1.0.4" +- which-boxed-primitive "^1.0.2" +- which-collection "^1.0.1" +- which-typed-array "^1.1.9" ++dedent@^1.6.0: ++ version "1.7.0" ++ resolved "https://registry.npmjs.org/dedent/-/dedent-1.7.0.tgz" ++ integrity sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ== + + deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +-deepmerge@^4.2.2: ++deepmerge@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + +-define-data-property@^1.0.1: +- version "1.1.0" +- resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz" +- integrity sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g== +- dependencies: +- get-intrinsic "^1.2.1" +- gopd "^1.0.1" +- has-property-descriptors "^1.0.0" +- +-define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: +- version "1.2.1" +- resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz" +- integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== +- dependencies: +- define-data-property "^1.0.1" +- has-property-descriptors "^1.0.0" +- object-keys "^1.1.1" +- + delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +-detect-newline@^3.0.0: ++dequal@^2.0.3: ++ version "2.0.3" ++ resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz" ++ integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== ++ ++detect-newline@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== +@@ -1661,11 +1836,16 @@ doctrine@^3.0.0: + dependencies: + esutils "^2.0.2" + +-dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9: ++dom-accessibility-api@^0.5.9: + version "0.5.16" + resolved "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz" + integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg== + ++dom-accessibility-api@^0.6.3: ++ version "0.6.3" ++ resolved "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz" ++ integrity sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w== ++ + domexception@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz" +@@ -1678,10 +1858,10 @@ eastasianwidth@^0.2.0: + resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +-electron-to-chromium@^1.4.477: +- version "1.4.523" +- resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.523.tgz" +- integrity sha512-9AreocSUWnzNtvLcbpng6N+GkXnCcBR80IQkxRC9Dfdyg4gaWNUPBujAHUpKkiUkoSoR9UlhA4zD/IgBklmhzg== ++electron-to-chromium@^1.5.227: ++ version "1.5.234" ++ resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.234.tgz" ++ integrity sha512-RXfEp2x+VRYn8jbKfQlRImzoJU01kyDvVPBmG39eU2iuRVhuS6vQNocB8J0/8GrIMLnPzgz4eW6WiRnJkTuNWg== + + emittery@^0.13.1: + version "0.13.1" +@@ -1704,27 +1884,12 @@ entities@^4.4.0: + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + + error-ex@^1.3.1: +- version "1.3.2" +- resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" +- integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== ++ version "1.3.4" ++ resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz" ++ integrity sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ== + dependencies: + is-arrayish "^0.2.1" + +-es-get-iterator@^1.1.3: +- version "1.1.3" +- resolved "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz" +- integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw== +- dependencies: +- call-bind "^1.0.2" +- get-intrinsic "^1.1.3" +- has-symbols "^1.0.3" +- is-arguments "^1.1.1" +- is-map "^2.0.2" +- is-set "^2.0.2" +- is-string "^1.0.7" +- isarray "^2.0.5" +- stop-iteration-iterator "^1.0.0" +- + esbuild@^0.18.10: + version "0.18.20" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz" +@@ -1753,15 +1918,10 @@ esbuild@^0.18.10: + "@esbuild/win32-ia32" "0.18.20" + "@esbuild/win32-x64" "0.18.20" + +-escalade@^3.1.1: +- version "3.1.1" +- resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" +- integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== +- +-escape-string-regexp@^1.0.5: +- version "1.0.5" +- resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" +- integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== ++escalade@^3.1.1, escalade@^3.2.0: ++ version "3.2.0" ++ resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz" ++ integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + + escape-string-regexp@^2.0.0: + version "2.0.0" +@@ -1893,7 +2053,7 @@ eventemitter3@^5.0.1: + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz" + integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== + +-execa@^5.0.0: ++execa@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== +@@ -1923,10 +2083,10 @@ execa@7.2.0: + signal-exit "^3.0.7" + strip-final-newline "^3.0.0" + +-exit@^0.1.2: +- version "0.1.2" +- resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" +- integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== ++exit-x@^0.2.2: ++ version "0.2.2" ++ resolved "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz" ++ integrity sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ== + + expect@^29.7.0: + version "29.7.0" +@@ -1939,6 +2099,30 @@ expect@^29.7.0: + jest-message-util "^29.7.0" + jest-util "^29.7.0" + ++expect@^30.0.0: ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz" ++ integrity sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw== ++ dependencies: ++ "@jest/expect-utils" "30.2.0" ++ "@jest/get-type" "30.1.0" ++ jest-matcher-utils "30.2.0" ++ jest-message-util "30.2.0" ++ jest-mock "30.2.0" ++ jest-util "30.2.0" ++ ++expect@30.2.0: ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz" ++ integrity sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw== ++ dependencies: ++ "@jest/expect-utils" "30.2.0" ++ "@jest/get-type" "30.1.0" ++ jest-matcher-utils "30.2.0" ++ jest-message-util "30.2.0" ++ jest-mock "30.2.0" ++ jest-util "30.2.0" ++ + fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" +@@ -1972,7 +2156,7 @@ fastq@^1.6.0: + dependencies: + reusify "^1.0.4" + +-fb-watchman@^2.0.0: ++fb-watchman@^2.0.0, fb-watchman@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== +@@ -1986,10 +2170,10 @@ file-entry-cache@^6.0.1: + dependencies: + flat-cache "^3.0.4" + +-fill-range@^7.0.1: +- version "7.0.1" +- resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" +- integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== ++fill-range@^7.1.1: ++ version "7.1.1" ++ resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz" ++ integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +@@ -2031,12 +2215,13 @@ flatted@^3.2.7: + resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz" + integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== + +-for-each@^0.3.3: +- version "0.3.3" +- resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" +- integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== ++foreground-child@^3.1.0: ++ version "3.3.1" ++ resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz" ++ integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw== + dependencies: +- is-callable "^1.1.3" ++ cross-spawn "^7.0.6" ++ signal-exit "^4.0.1" + + form-data@^4.0.0: + version "4.0.0" +@@ -2057,7 +2242,7 @@ fs.realpath@^1.0.0: + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +-fsevents@^2.3.2, fsevents@~2.3.2: ++fsevents@^2.3.2, fsevents@^2.3.3, fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== +@@ -2067,11 +2252,6 @@ function-bind@^1.1.1: + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +-functions-have-names@^1.2.3: +- version "1.2.3" +- resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" +- integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== +- + gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" +@@ -2082,16 +2262,6 @@ get-caller-file@^2.0.5: + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +-get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1: +- version "1.2.1" +- resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz" +- integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== +- dependencies: +- function-bind "^1.1.1" +- has "^1.0.3" +- has-proto "^1.0.1" +- has-symbols "^1.0.3" +- + get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" +@@ -2116,6 +2286,18 @@ glob-parent@^6.0.2: + dependencies: + is-glob "^4.0.3" + ++glob@^10.3.10: ++ version "10.4.5" ++ resolved "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz" ++ integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== ++ dependencies: ++ foreground-child "^3.1.0" ++ jackspeak "^3.1.2" ++ minimatch "^9.0.4" ++ minipass "^7.1.2" ++ package-json-from-dist "^1.0.0" ++ path-scurry "^1.11.1" ++ + glob@^7.1.3, glob@^7.1.4, glob@7.1.6: + version "7.1.6" + resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz" +@@ -2128,11 +2310,6 @@ glob@^7.1.3, glob@^7.1.4, glob@7.1.6: + once "^1.3.0" + path-is-absolute "^1.0.0" + +-globals@^11.1.0: +- version "11.12.0" +- resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" +- integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== +- + globals@^13.19.0: + version "13.21.0" + resolved "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz" +@@ -2152,14 +2329,7 @@ globby@^11.1.0: + merge2 "^1.4.1" + slash "^3.0.0" + +-gopd@^1.0.1: +- version "1.0.1" +- resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" +- integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== +- dependencies: +- get-intrinsic "^1.1.3" +- +-graceful-fs@^4.2.9: ++graceful-fs@^4.2.11, graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== +@@ -2169,45 +2339,23 @@ graphemer@^1.4.0: + resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +-has-bigints@^1.0.1: +- version "1.0.2" +- resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" +- integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== +- +-has-flag@^3.0.0: +- version "3.0.0" +- resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" +- integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== ++handlebars@^4.7.8: ++ version "4.7.8" ++ resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz" ++ integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== ++ dependencies: ++ minimist "^1.2.5" ++ neo-async "^2.6.2" ++ source-map "^0.6.1" ++ wordwrap "^1.0.0" ++ optionalDependencies: ++ uglify-js "^3.1.4" + + has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +-has-property-descriptors@^1.0.0: +- version "1.0.0" +- resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz" +- integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== +- dependencies: +- get-intrinsic "^1.1.1" +- +-has-proto@^1.0.1: +- version "1.0.1" +- resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz" +- integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== +- +-has-symbols@^1.0.2, has-symbols@^1.0.3: +- version "1.0.3" +- resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" +- integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== +- +-has-tostringtag@^1.0.0: +- version "1.0.0" +- resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" +- integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== +- dependencies: +- has-symbols "^1.0.2" +- + has@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" +@@ -2279,10 +2427,10 @@ import-fresh@^3.2.1: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +-import-local@^3.0.2: +- version "3.1.0" +- resolved "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz" +- integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== ++import-local@^3.2.0: ++ version "3.2.0" ++ resolved "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz" ++ integrity sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" +@@ -2310,44 +2458,11 @@ inherits@2: + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +-internal-slot@^1.0.4: +- version "1.0.5" +- resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz" +- integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== +- dependencies: +- get-intrinsic "^1.2.0" +- has "^1.0.3" +- side-channel "^1.0.4" +- +-is-arguments@^1.1.1: +- version "1.1.1" +- resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" +- integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== +- dependencies: +- call-bind "^1.0.2" +- has-tostringtag "^1.0.0" +- +-is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: +- version "3.0.2" +- resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz" +- integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== +- dependencies: +- call-bind "^1.0.2" +- get-intrinsic "^1.2.0" +- is-typed-array "^1.1.10" +- + is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +-is-bigint@^1.0.1: +- version "1.0.4" +- resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" +- integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== +- dependencies: +- has-bigints "^1.0.1" +- + is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" +@@ -2355,19 +2470,6 @@ is-binary-path@~2.1.0: + dependencies: + binary-extensions "^2.0.0" + +-is-boolean-object@^1.1.0: +- version "1.1.2" +- resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" +- integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== +- dependencies: +- call-bind "^1.0.2" +- has-tostringtag "^1.0.0" +- +-is-callable@^1.1.3: +- version "1.2.7" +- resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" +- integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== +- + is-core-module@^2.13.0: + version "2.13.0" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz" +@@ -2375,13 +2477,6 @@ is-core-module@^2.13.0: + dependencies: + has "^1.0.3" + +-is-date-object@^1.0.5: +- version "1.0.5" +- resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" +- integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== +- dependencies: +- has-tostringtag "^1.0.0" +- + is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" +@@ -2397,7 +2492,7 @@ is-fullwidth-code-point@^4.0.0: + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz" + integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== + +-is-generator-fn@^2.0.0: ++is-generator-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== +@@ -2409,18 +2504,6 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + dependencies: + is-extglob "^2.1.1" + +-is-map@^2.0.1, is-map@^2.0.2: +- version "2.0.2" +- resolved "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz" +- integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== +- +-is-number-object@^1.0.4: +- version "1.0.7" +- resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" +- integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== +- dependencies: +- has-tostringtag "^1.0.0" +- + is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" +@@ -2436,74 +2519,15 @@ is-potential-custom-element-name@^1.0.1: + resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== + +-is-regex@^1.1.4: +- version "1.1.4" +- resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" +- integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== +- dependencies: +- call-bind "^1.0.2" +- has-tostringtag "^1.0.0" +- +-is-set@^2.0.1, is-set@^2.0.2: +- version "2.0.2" +- resolved "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz" +- integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== +- +-is-shared-array-buffer@^1.0.2: +- version "1.0.2" +- resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz" +- integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== +- dependencies: +- call-bind "^1.0.2" +- + is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +-is-stream@^3.0.0: +- version "3.0.0" +- resolved "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz" +- integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== +- +-is-string@^1.0.5, is-string@^1.0.7: +- version "1.0.7" +- resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" +- integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== +- dependencies: +- has-tostringtag "^1.0.0" +- +-is-symbol@^1.0.3: +- version "1.0.4" +- resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" +- integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== +- dependencies: +- has-symbols "^1.0.2" +- +-is-typed-array@^1.1.10: +- version "1.1.12" +- resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz" +- integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== +- dependencies: +- which-typed-array "^1.1.11" +- +-is-weakmap@^2.0.1: +- version "2.0.1" +- resolved "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz" +- integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== +- +-is-weakset@^2.0.1: +- version "2.0.2" +- resolved "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz" +- integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== +- dependencies: +- call-bind "^1.0.2" +- get-intrinsic "^1.1.1" +- +-isarray@^2.0.5: +- version "2.0.5" +- resolved "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz" +- integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== ++is-stream@^3.0.0: ++ version "3.0.0" ++ resolved "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz" ++ integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== + + isexe@^2.0.0: + version "2.0.0" +@@ -2526,14 +2550,14 @@ istanbul-lib-instrument@^5.0.4: + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" + +-istanbul-lib-instrument@^6.0.0: +- version "6.0.0" +- resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.0.tgz" +- integrity sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw== ++istanbul-lib-instrument@^6.0.0, istanbul-lib-instrument@^6.0.2: ++ version "6.0.3" ++ resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz" ++ integrity sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q== + dependencies: +- "@babel/core" "^7.12.3" +- "@babel/parser" "^7.14.7" +- "@istanbuljs/schema" "^0.1.2" ++ "@babel/core" "^7.23.9" ++ "@babel/parser" "^7.23.9" ++ "@istanbuljs/schema" "^0.1.3" + istanbul-lib-coverage "^3.2.0" + semver "^7.5.4" + +@@ -2546,100 +2570,110 @@ istanbul-lib-report@^3.0.0: + make-dir "^4.0.0" + supports-color "^7.1.0" + +-istanbul-lib-source-maps@^4.0.0: +- version "4.0.1" +- resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz" +- integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== ++istanbul-lib-source-maps@^5.0.0: ++ version "5.0.6" ++ resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz" ++ integrity sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A== + dependencies: ++ "@jridgewell/trace-mapping" "^0.3.23" + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" +- source-map "^0.6.1" + + istanbul-reports@^3.1.3: +- version "3.1.6" +- resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz" +- integrity sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg== ++ version "3.2.0" ++ resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz" ++ integrity sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +-jest-changed-files@^29.7.0: +- version "29.7.0" +- resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz" +- integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== ++jackspeak@^3.1.2: ++ version "3.4.3" ++ resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz" ++ integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== + dependencies: +- execa "^5.0.0" +- jest-util "^29.7.0" ++ "@isaacs/cliui" "^8.0.2" ++ optionalDependencies: ++ "@pkgjs/parseargs" "^0.11.0" ++ ++jest-changed-files@30.2.0: ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.2.0.tgz" ++ integrity sha512-L8lR1ChrRnSdfeOvTrwZMlnWV8G/LLjQ0nG9MBclwWZidA2N5FviRki0Bvh20WRMOX31/JYvzdqTJrk5oBdydQ== ++ dependencies: ++ execa "^5.1.1" ++ jest-util "30.2.0" + p-limit "^3.1.0" + +-jest-circus@^29.7.0: +- version "29.7.0" +- resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz" +- integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== ++jest-circus@30.2.0: ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-30.2.0.tgz" ++ integrity sha512-Fh0096NC3ZkFx05EP2OXCxJAREVxj1BcW/i6EWqqymcgYKWjyyDpral3fMxVcHXg6oZM7iULer9wGRFvfpl+Tg== + dependencies: +- "@jest/environment" "^29.7.0" +- "@jest/expect" "^29.7.0" +- "@jest/test-result" "^29.7.0" +- "@jest/types" "^29.6.3" ++ "@jest/environment" "30.2.0" ++ "@jest/expect" "30.2.0" ++ "@jest/test-result" "30.2.0" ++ "@jest/types" "30.2.0" + "@types/node" "*" +- chalk "^4.0.0" ++ chalk "^4.1.2" + co "^4.6.0" +- dedent "^1.0.0" +- is-generator-fn "^2.0.0" +- jest-each "^29.7.0" +- jest-matcher-utils "^29.7.0" +- jest-message-util "^29.7.0" +- jest-runtime "^29.7.0" +- jest-snapshot "^29.7.0" +- jest-util "^29.7.0" ++ dedent "^1.6.0" ++ is-generator-fn "^2.1.0" ++ jest-each "30.2.0" ++ jest-matcher-utils "30.2.0" ++ jest-message-util "30.2.0" ++ jest-runtime "30.2.0" ++ jest-snapshot "30.2.0" ++ jest-util "30.2.0" + p-limit "^3.1.0" +- pretty-format "^29.7.0" +- pure-rand "^6.0.0" ++ pretty-format "30.2.0" ++ pure-rand "^7.0.0" + slash "^3.0.0" +- stack-utils "^2.0.3" +- +-jest-cli@^29.7.0: +- version "29.7.0" +- resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz" +- integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== +- dependencies: +- "@jest/core" "^29.7.0" +- "@jest/test-result" "^29.7.0" +- "@jest/types" "^29.6.3" +- chalk "^4.0.0" +- create-jest "^29.7.0" +- exit "^0.1.2" +- import-local "^3.0.2" +- jest-config "^29.7.0" +- jest-util "^29.7.0" +- jest-validate "^29.7.0" +- yargs "^17.3.1" +- +-jest-config@^29.7.0: +- version "29.7.0" +- resolved "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz" +- integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== +- dependencies: +- "@babel/core" "^7.11.6" +- "@jest/test-sequencer" "^29.7.0" +- "@jest/types" "^29.6.3" +- babel-jest "^29.7.0" +- chalk "^4.0.0" +- ci-info "^3.2.0" +- deepmerge "^4.2.2" +- glob "^7.1.3" +- graceful-fs "^4.2.9" +- jest-circus "^29.7.0" +- jest-environment-node "^29.7.0" +- jest-get-type "^29.6.3" +- jest-regex-util "^29.6.3" +- jest-resolve "^29.7.0" +- jest-runner "^29.7.0" +- jest-util "^29.7.0" +- jest-validate "^29.7.0" +- micromatch "^4.0.4" ++ stack-utils "^2.0.6" ++ ++jest-cli@30.2.0: ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-30.2.0.tgz" ++ integrity sha512-Os9ukIvADX/A9sLt6Zse3+nmHtHaE6hqOsjQtNiugFTbKRHYIYtZXNGNK9NChseXy7djFPjndX1tL0sCTlfpAA== ++ dependencies: ++ "@jest/core" "30.2.0" ++ "@jest/test-result" "30.2.0" ++ "@jest/types" "30.2.0" ++ chalk "^4.1.2" ++ exit-x "^0.2.2" ++ import-local "^3.2.0" ++ jest-config "30.2.0" ++ jest-util "30.2.0" ++ jest-validate "30.2.0" ++ yargs "^17.7.2" ++ ++jest-config@30.2.0: ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/jest-config/-/jest-config-30.2.0.tgz" ++ integrity sha512-g4WkyzFQVWHtu6uqGmQR4CQxz/CH3yDSlhzXMWzNjDx843gYjReZnMRanjRCq5XZFuQrGDxgUaiYWE8BRfVckA== ++ dependencies: ++ "@babel/core" "^7.27.4" ++ "@jest/get-type" "30.1.0" ++ "@jest/pattern" "30.0.1" ++ "@jest/test-sequencer" "30.2.0" ++ "@jest/types" "30.2.0" ++ babel-jest "30.2.0" ++ chalk "^4.1.2" ++ ci-info "^4.2.0" ++ deepmerge "^4.3.1" ++ glob "^10.3.10" ++ graceful-fs "^4.2.11" ++ jest-circus "30.2.0" ++ jest-docblock "30.2.0" ++ jest-environment-node "30.2.0" ++ jest-regex-util "30.0.1" ++ jest-resolve "30.2.0" ++ jest-runner "30.2.0" ++ jest-util "30.2.0" ++ jest-validate "30.2.0" ++ micromatch "^4.0.8" + parse-json "^5.2.0" +- pretty-format "^29.7.0" ++ pretty-format "30.2.0" + slash "^3.0.0" + strip-json-comments "^3.1.1" + +@@ -2653,23 +2687,33 @@ jest-diff@^29.7.0: + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +-jest-docblock@^29.7.0: +- version "29.7.0" +- resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz" +- integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== ++jest-diff@30.2.0: ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz" ++ integrity sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A== + dependencies: +- detect-newline "^3.0.0" ++ "@jest/diff-sequences" "30.0.1" ++ "@jest/get-type" "30.1.0" ++ chalk "^4.1.2" ++ pretty-format "30.2.0" + +-jest-each@^29.7.0: +- version "29.7.0" +- resolved "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz" +- integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== ++jest-docblock@30.2.0: ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz" ++ integrity sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA== + dependencies: +- "@jest/types" "^29.6.3" +- chalk "^4.0.0" +- jest-get-type "^29.6.3" +- jest-util "^29.7.0" +- pretty-format "^29.7.0" ++ detect-newline "^3.1.0" ++ ++jest-each@30.2.0: ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/jest-each/-/jest-each-30.2.0.tgz" ++ integrity sha512-lpWlJlM7bCUf1mfmuqTA8+j2lNURW9eNafOy99knBM01i5CQeY5UH1vZjgT9071nDJac1M4XsbyI44oNOdhlDQ== ++ dependencies: ++ "@jest/get-type" "30.1.0" ++ "@jest/types" "30.2.0" ++ chalk "^4.1.2" ++ jest-util "30.2.0" ++ pretty-format "30.2.0" + + jest-environment-jsdom@29.7.0: + version "29.7.0" +@@ -2685,17 +2729,18 @@ jest-environment-jsdom@29.7.0: + jest-util "^29.7.0" + jsdom "^20.0.0" + +-jest-environment-node@^29.7.0: +- version "29.7.0" +- resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz" +- integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== ++jest-environment-node@30.2.0: ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.2.0.tgz" ++ integrity sha512-ElU8v92QJ9UrYsKrxDIKCxu6PfNj4Hdcktcn0JX12zqNdqWHB0N+hwOnnBBXvjLd2vApZtuLUGs1QSY+MsXoNA== + dependencies: +- "@jest/environment" "^29.7.0" +- "@jest/fake-timers" "^29.7.0" +- "@jest/types" "^29.6.3" ++ "@jest/environment" "30.2.0" ++ "@jest/fake-timers" "30.2.0" ++ "@jest/types" "30.2.0" + "@types/node" "*" +- jest-mock "^29.7.0" +- jest-util "^29.7.0" ++ jest-mock "30.2.0" ++ jest-util "30.2.0" ++ jest-validate "30.2.0" + + jest-get-type@^29.6.3: + version "29.6.3" +@@ -2721,13 +2766,31 @@ jest-haste-map@^29.7.0: + optionalDependencies: + fsevents "^2.3.2" + +-jest-leak-detector@^29.7.0: +- version "29.7.0" +- resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz" +- integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== ++jest-haste-map@30.2.0: ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz" ++ integrity sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw== + dependencies: +- jest-get-type "^29.6.3" +- pretty-format "^29.7.0" ++ "@jest/types" "30.2.0" ++ "@types/node" "*" ++ anymatch "^3.1.3" ++ fb-watchman "^2.0.2" ++ graceful-fs "^4.2.11" ++ jest-regex-util "30.0.1" ++ jest-util "30.2.0" ++ jest-worker "30.2.0" ++ micromatch "^4.0.8" ++ walker "^1.0.8" ++ optionalDependencies: ++ fsevents "^2.3.3" ++ ++jest-leak-detector@30.2.0: ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.2.0.tgz" ++ integrity sha512-M6jKAjyzjHG0SrQgwhgZGy9hFazcudwCNovY/9HPIicmNSBuockPSedAP9vlPK6ONFJ1zfyH/M2/YYJxOz5cdQ== ++ dependencies: ++ "@jest/get-type" "30.1.0" ++ pretty-format "30.2.0" + + jest-matcher-utils@^29.7.0: + version "29.7.0" +@@ -2739,6 +2802,16 @@ jest-matcher-utils@^29.7.0: + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + ++jest-matcher-utils@30.2.0: ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz" ++ integrity sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg== ++ dependencies: ++ "@jest/get-type" "30.1.0" ++ chalk "^4.1.2" ++ jest-diff "30.2.0" ++ pretty-format "30.2.0" ++ + jest-message-util@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz" +@@ -2754,6 +2827,21 @@ jest-message-util@^29.7.0: + slash "^3.0.0" + stack-utils "^2.0.3" + ++jest-message-util@30.2.0: ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz" ++ integrity sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw== ++ dependencies: ++ "@babel/code-frame" "^7.27.1" ++ "@jest/types" "30.2.0" ++ "@types/stack-utils" "^2.0.3" ++ chalk "^4.1.2" ++ graceful-fs "^4.2.11" ++ micromatch "^4.0.8" ++ pretty-format "30.2.0" ++ slash "^3.0.0" ++ stack-utils "^2.0.6" ++ + jest-mock@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz" +@@ -2763,7 +2851,16 @@ jest-mock@^29.7.0: + "@types/node" "*" + jest-util "^29.7.0" + +-jest-pnp-resolver@^1.2.2: ++jest-mock@30.2.0: ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz" ++ integrity sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw== ++ dependencies: ++ "@jest/types" "30.2.0" ++ "@types/node" "*" ++ jest-util "30.2.0" ++ ++jest-pnp-resolver@^1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== +@@ -2773,81 +2870,86 @@ jest-regex-util@^29.6.3: + resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz" + integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== + +-jest-resolve-dependencies@^29.7.0: +- version "29.7.0" +- resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz" +- integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== +- dependencies: +- jest-regex-util "^29.6.3" +- jest-snapshot "^29.7.0" +- +-jest-resolve@*, jest-resolve@^29.7.0: +- version "29.7.0" +- resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz" +- integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== +- dependencies: +- chalk "^4.0.0" +- graceful-fs "^4.2.9" +- jest-haste-map "^29.7.0" +- jest-pnp-resolver "^1.2.2" +- jest-util "^29.7.0" +- jest-validate "^29.7.0" +- resolve "^1.20.0" +- resolve.exports "^2.0.0" ++jest-regex-util@30.0.1: ++ version "30.0.1" ++ resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz" ++ integrity sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA== ++ ++jest-resolve-dependencies@30.2.0: ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.2.0.tgz" ++ integrity sha512-xTOIGug/0RmIe3mmCqCT95yO0vj6JURrn1TKWlNbhiAefJRWINNPgwVkrVgt/YaerPzY3iItufd80v3lOrFJ2w== ++ dependencies: ++ jest-regex-util "30.0.1" ++ jest-snapshot "30.2.0" ++ ++jest-resolve@*, jest-resolve@30.2.0: ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.2.0.tgz" ++ integrity sha512-TCrHSxPlx3tBY3hWNtRQKbtgLhsXa1WmbJEqBlTBrGafd5fiQFByy2GNCEoGR+Tns8d15GaL9cxEzKOO3GEb2A== ++ dependencies: ++ chalk "^4.1.2" ++ graceful-fs "^4.2.11" ++ jest-haste-map "30.2.0" ++ jest-pnp-resolver "^1.2.3" ++ jest-util "30.2.0" ++ jest-validate "30.2.0" + slash "^3.0.0" +- +-jest-runner@^29.7.0: +- version "29.7.0" +- resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz" +- integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== +- dependencies: +- "@jest/console" "^29.7.0" +- "@jest/environment" "^29.7.0" +- "@jest/test-result" "^29.7.0" +- "@jest/transform" "^29.7.0" +- "@jest/types" "^29.6.3" ++ unrs-resolver "^1.7.11" ++ ++jest-runner@30.2.0: ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-30.2.0.tgz" ++ integrity sha512-PqvZ2B2XEyPEbclp+gV6KO/F1FIFSbIwewRgmROCMBo/aZ6J1w8Qypoj2pEOcg3G2HzLlaP6VUtvwCI8dM3oqQ== ++ dependencies: ++ "@jest/console" "30.2.0" ++ "@jest/environment" "30.2.0" ++ "@jest/test-result" "30.2.0" ++ "@jest/transform" "30.2.0" ++ "@jest/types" "30.2.0" + "@types/node" "*" +- chalk "^4.0.0" ++ chalk "^4.1.2" + emittery "^0.13.1" +- graceful-fs "^4.2.9" +- jest-docblock "^29.7.0" +- jest-environment-node "^29.7.0" +- jest-haste-map "^29.7.0" +- jest-leak-detector "^29.7.0" +- jest-message-util "^29.7.0" +- jest-resolve "^29.7.0" +- jest-runtime "^29.7.0" +- jest-util "^29.7.0" +- jest-watcher "^29.7.0" +- jest-worker "^29.7.0" ++ exit-x "^0.2.2" ++ graceful-fs "^4.2.11" ++ jest-docblock "30.2.0" ++ jest-environment-node "30.2.0" ++ jest-haste-map "30.2.0" ++ jest-leak-detector "30.2.0" ++ jest-message-util "30.2.0" ++ jest-resolve "30.2.0" ++ jest-runtime "30.2.0" ++ jest-util "30.2.0" ++ jest-watcher "30.2.0" ++ jest-worker "30.2.0" + p-limit "^3.1.0" + source-map-support "0.5.13" + +-jest-runtime@^29.7.0: +- version "29.7.0" +- resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz" +- integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== +- dependencies: +- "@jest/environment" "^29.7.0" +- "@jest/fake-timers" "^29.7.0" +- "@jest/globals" "^29.7.0" +- "@jest/source-map" "^29.6.3" +- "@jest/test-result" "^29.7.0" +- "@jest/transform" "^29.7.0" +- "@jest/types" "^29.6.3" ++jest-runtime@30.2.0: ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.2.0.tgz" ++ integrity sha512-p1+GVX/PJqTucvsmERPMgCPvQJpFt4hFbM+VN3n8TMo47decMUcJbt+rgzwrEme0MQUA/R+1de2axftTHkKckg== ++ dependencies: ++ "@jest/environment" "30.2.0" ++ "@jest/fake-timers" "30.2.0" ++ "@jest/globals" "30.2.0" ++ "@jest/source-map" "30.0.1" ++ "@jest/test-result" "30.2.0" ++ "@jest/transform" "30.2.0" ++ "@jest/types" "30.2.0" + "@types/node" "*" +- chalk "^4.0.0" +- cjs-module-lexer "^1.0.0" +- collect-v8-coverage "^1.0.0" +- glob "^7.1.3" +- graceful-fs "^4.2.9" +- jest-haste-map "^29.7.0" +- jest-message-util "^29.7.0" +- jest-mock "^29.7.0" +- jest-regex-util "^29.6.3" +- jest-resolve "^29.7.0" +- jest-snapshot "^29.7.0" +- jest-util "^29.7.0" ++ chalk "^4.1.2" ++ cjs-module-lexer "^2.1.0" ++ collect-v8-coverage "^1.0.2" ++ glob "^10.3.10" ++ graceful-fs "^4.2.11" ++ jest-haste-map "30.2.0" ++ jest-message-util "30.2.0" ++ jest-mock "30.2.0" ++ jest-regex-util "30.0.1" ++ jest-resolve "30.2.0" ++ jest-snapshot "30.2.0" ++ jest-util "30.2.0" + slash "^3.0.0" + strip-bom "^4.0.0" + +@@ -2877,7 +2979,34 @@ jest-snapshot@^29.7.0: + pretty-format "^29.7.0" + semver "^7.5.3" + +-jest-util@^29.0.0, jest-util@^29.7.0: ++jest-snapshot@30.2.0: ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.2.0.tgz" ++ integrity sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA== ++ dependencies: ++ "@babel/core" "^7.27.4" ++ "@babel/generator" "^7.27.5" ++ "@babel/plugin-syntax-jsx" "^7.27.1" ++ "@babel/plugin-syntax-typescript" "^7.27.1" ++ "@babel/types" "^7.27.3" ++ "@jest/expect-utils" "30.2.0" ++ "@jest/get-type" "30.1.0" ++ "@jest/snapshot-utils" "30.2.0" ++ "@jest/transform" "30.2.0" ++ "@jest/types" "30.2.0" ++ babel-preset-current-node-syntax "^1.2.0" ++ chalk "^4.1.2" ++ expect "30.2.0" ++ graceful-fs "^4.2.11" ++ jest-diff "30.2.0" ++ jest-matcher-utils "30.2.0" ++ jest-message-util "30.2.0" ++ jest-util "30.2.0" ++ pretty-format "30.2.0" ++ semver "^7.7.2" ++ synckit "^0.11.8" ++ ++"jest-util@^29.0.0 || ^30.0.0", jest-util@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz" + integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== +@@ -2889,31 +3018,43 @@ jest-util@^29.0.0, jest-util@^29.7.0: + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +-jest-validate@^29.7.0: +- version "29.7.0" +- resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz" +- integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== ++jest-util@30.2.0: ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz" ++ integrity sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA== + dependencies: +- "@jest/types" "^29.6.3" +- camelcase "^6.2.0" +- chalk "^4.0.0" +- jest-get-type "^29.6.3" ++ "@jest/types" "30.2.0" ++ "@types/node" "*" ++ chalk "^4.1.2" ++ ci-info "^4.2.0" ++ graceful-fs "^4.2.11" ++ picomatch "^4.0.2" ++ ++jest-validate@30.2.0: ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-30.2.0.tgz" ++ integrity sha512-FBGWi7dP2hpdi8nBoWxSsLvBFewKAg0+uSQwBaof4Y4DPgBabXgpSYC5/lR7VmnIlSpASmCi/ntRWPbv7089Pw== ++ dependencies: ++ "@jest/get-type" "30.1.0" ++ "@jest/types" "30.2.0" ++ camelcase "^6.3.0" ++ chalk "^4.1.2" + leven "^3.1.0" +- pretty-format "^29.7.0" ++ pretty-format "30.2.0" + +-jest-watcher@^29.7.0: +- version "29.7.0" +- resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz" +- integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== ++jest-watcher@30.2.0: ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.2.0.tgz" ++ integrity sha512-PYxa28dxJ9g777pGm/7PrbnMeA0Jr7osHP9bS7eJy9DuAjMgdGtxgf0uKMyoIsTWAkIbUW5hSDdJ3urmgXBqxg== + dependencies: +- "@jest/test-result" "^29.7.0" +- "@jest/types" "^29.6.3" ++ "@jest/test-result" "30.2.0" ++ "@jest/types" "30.2.0" + "@types/node" "*" +- ansi-escapes "^4.2.1" +- chalk "^4.0.0" ++ ansi-escapes "^4.3.2" ++ chalk "^4.1.2" + emittery "^0.13.1" +- jest-util "^29.7.0" +- string-length "^4.0.1" ++ jest-util "30.2.0" ++ string-length "^4.0.2" + + jest-worker@^29.7.0: + version "29.7.0" +@@ -2925,15 +3066,26 @@ jest-worker@^29.7.0: + merge-stream "^2.0.0" + supports-color "^8.0.0" + +-jest@^29.0.0, "jest@>= 28", jest@29.7.0: +- version "29.7.0" +- resolved "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz" +- integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== ++jest-worker@30.2.0: ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz" ++ integrity sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g== + dependencies: +- "@jest/core" "^29.7.0" +- "@jest/types" "^29.6.3" +- import-local "^3.0.2" +- jest-cli "^29.7.0" ++ "@types/node" "*" ++ "@ungap/structured-clone" "^1.3.0" ++ jest-util "30.2.0" ++ merge-stream "^2.0.0" ++ supports-color "^8.1.1" ++ ++"jest@^29.0.0 || ^30.0.0", jest@^30.2.0: ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/jest/-/jest-30.2.0.tgz" ++ integrity sha512-F26gjC0yWN8uAA5m5Ss8ZQf5nDHWGlN/xWZIh8S5SRbsEKBovwZhxGd6LJlbZYxBgCYOtreSUyb8hpXyGC5O4A== ++ dependencies: ++ "@jest/core" "30.2.0" ++ "@jest/types" "30.2.0" ++ import-local "^3.2.0" ++ jest-cli "30.2.0" + + jiti@^1.18.2: + version "1.20.0" +@@ -3021,10 +3173,10 @@ jsdom@^22.1.0: + ws "^8.13.0" + xml-name-validator "^4.0.0" + +-jsesc@^2.5.1: +- version "2.5.2" +- resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" +- integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== ++jsesc@^3.0.2: ++ version "3.1.0" ++ resolved "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz" ++ integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== + + json-buffer@3.0.1: + version "3.0.1" +@@ -3058,11 +3210,6 @@ keyv@^4.5.3: + dependencies: + json-buffer "3.0.1" + +-kleur@^3.0.3: +- version "3.0.3" +- resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" +- integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== +- + leven@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" +@@ -3128,7 +3275,7 @@ locate-path@^6.0.0: + dependencies: + p-locate "^5.0.0" + +-lodash.memoize@4.x: ++lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== +@@ -3138,11 +3285,6 @@ lodash.merge@^4.6.2: + resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +-lodash@^4.17.15: +- version "4.17.21" +- resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" +- integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== +- + log-update@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/log-update/-/log-update-5.0.1.tgz" +@@ -3161,6 +3303,11 @@ loose-envify@^1.1.0: + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + ++lru-cache@^10.2.0: ++ version "10.4.3" ++ resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz" ++ integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== ++ + lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" +@@ -3168,13 +3315,6 @@ lru-cache@^5.1.1: + dependencies: + yallist "^3.0.2" + +-lru-cache@^6.0.0: +- version "6.0.0" +- resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" +- integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== +- dependencies: +- yallist "^4.0.0" +- + lz-string@^1.5.0: + version "1.5.0" + resolved "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz" +@@ -3187,7 +3327,7 @@ make-dir@^4.0.0: + dependencies: + semver "^7.5.3" + +-make-error@1.x: ++make-error@^1.3.6: + version "1.3.6" + resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== +@@ -3217,6 +3357,14 @@ micromatch@^4.0.4, micromatch@^4.0.5, micromatch@4.0.5: + braces "^3.0.2" + picomatch "^2.3.1" + ++micromatch@^4.0.8: ++ version "4.0.8" ++ resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz" ++ integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== ++ dependencies: ++ braces "^3.0.3" ++ picomatch "^2.3.1" ++ + mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" +@@ -3251,6 +3399,23 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.2: + dependencies: + brace-expansion "^1.1.7" + ++minimatch@^9.0.4: ++ version "9.0.5" ++ resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz" ++ integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== ++ dependencies: ++ brace-expansion "^2.0.1" ++ ++minimist@^1.2.5: ++ version "1.2.8" ++ resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" ++ integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== ++ ++"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: ++ version "7.1.2" ++ resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz" ++ integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== ++ + ms@2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" +@@ -3270,20 +3435,30 @@ nanoid@^3.3.6: + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz" + integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== + ++napi-postinstall@^0.3.0: ++ version "0.3.4" ++ resolved "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz" ++ integrity sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ== ++ + natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + ++neo-async@^2.6.2: ++ version "2.6.2" ++ resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" ++ integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== ++ + node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== + +-node-releases@^2.0.13: +- version "2.0.13" +- resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz" +- integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== ++node-releases@^2.0.21: ++ version "2.0.23" ++ resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.23.tgz" ++ integrity sha512-cCmFDMSm26S6tQSDpBCg/NR8NENrVPhAJSf+XbxBG4rPFaaonlEoE9wHQmun+cls499TQGSb7ZyPBRlzgKfpeg== + + normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" +@@ -3324,34 +3499,6 @@ object-hash@^3.0.0: + resolved "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz" + integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== + +-object-inspect@^1.9.0: +- version "1.12.3" +- resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz" +- integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== +- +-object-is@^1.1.5: +- version "1.1.5" +- resolved "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz" +- integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== +- dependencies: +- call-bind "^1.0.2" +- define-properties "^1.1.3" +- +-object-keys@^1.1.1: +- version "1.1.1" +- resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" +- integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== +- +-object.assign@^4.1.4: +- version "4.1.4" +- resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz" +- integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== +- dependencies: +- call-bind "^1.0.2" +- define-properties "^1.1.4" +- has-symbols "^1.0.3" +- object-keys "^1.1.1" +- + once@^1.3.0: + version "1.4.0" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" +@@ -3425,6 +3572,11 @@ p-try@^2.0.0: + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + ++package-json-from-dist@^1.0.0: ++ version "1.0.1" ++ resolved "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz" ++ integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== ++ + parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" +@@ -3474,21 +3626,34 @@ path-parse@^1.0.7: + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + ++path-scurry@^1.11.1: ++ version "1.11.1" ++ resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz" ++ integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== ++ dependencies: ++ lru-cache "^10.2.0" ++ minipass "^5.0.0 || ^6.0.2 || ^7.0.0" ++ + path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +-picocolors@^1.0.0: +- version "1.0.0" +- resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" +- integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== ++picocolors@^1.0.0, picocolors@^1.1.1, picocolors@1.1.1: ++ version "1.1.1" ++ resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz" ++ integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + + picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + ++picomatch@^4.0.2: ++ version "4.0.3" ++ resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz" ++ integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== ++ + pidtree@0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz" +@@ -3499,10 +3664,10 @@ pify@^2.3.0: + resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +-pirates@^4.0.1, pirates@^4.0.4: +- version "4.0.6" +- resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz" +- integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== ++pirates@^4.0.1, pirates@^4.0.4, pirates@^4.0.7: ++ version "4.0.7" ++ resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz" ++ integrity sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA== + + pkg-dir@^4.2.0: + version "4.2.0" +@@ -3592,13 +3757,14 @@ pretty-format@^29.7.0: + ansi-styles "^5.0.0" + react-is "^18.0.0" + +-prompts@^2.0.1: +- version "2.4.2" +- resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" +- integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== ++pretty-format@^30.0.0, pretty-format@30.2.0: ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz" ++ integrity sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA== + dependencies: +- kleur "^3.0.3" +- sisteransi "^1.0.5" ++ "@jest/schemas" "30.0.5" ++ ansi-styles "^5.2.0" ++ react-is "^18.3.1" + + psl@^1.1.33: + version "1.9.0" +@@ -3610,10 +3776,10 @@ punycode@^2.1.0, punycode@^2.1.1, punycode@^2.3.0: + resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== + +-pure-rand@^6.0.0: +- version "6.0.3" +- resolved "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.3.tgz" +- integrity sha512-KddyFewCsO0j3+np81IQ+SweXLDnDQTs5s67BOnrYmYe/yNmUhttQyGsYzy8yUnoljGAQ9sl38YB4vH8ur7Y+w== ++pure-rand@^7.0.0: ++ version "7.0.1" ++ resolved "https://registry.npmjs.org/pure-rand/-/pure-rand-7.0.1.tgz" ++ integrity sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ== + + querystringify@^2.1.1: + version "2.2.0" +@@ -3625,7 +3791,7 @@ queue-microtask@^1.2.2: + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +-react-dom@^18.0.0, react-dom@>=16.8, react-dom@18.2.0: ++"react-dom@^18.0.0 || ^19.0.0", react-dom@>=16.8, react-dom@18.2.0: + version "18.2.0" + resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz" + integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== +@@ -3638,10 +3804,10 @@ react-is@^17.0.1: + resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + +-react-is@^18.0.0: +- version "18.2.0" +- resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" +- integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== ++react-is@^18.0.0, react-is@^18.3.1: ++ version "18.3.1" ++ resolved "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz" ++ integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== + + react-refresh@^0.14.0: + version "0.14.0" +@@ -3663,7 +3829,7 @@ react-router@6.16.0: + dependencies: + "@remix-run/router" "1.9.0" + +-react@^18.0.0, react@^18.2.0, react@>=16.8, react@18.2.0: ++"react@^18.0.0 || ^19.0.0", react@^18.2.0, react@>=16.8, react@18.2.0: + version "18.2.0" + resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz" + integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== +@@ -3697,15 +3863,6 @@ regenerator-runtime@^0.14.0: + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz" + integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== + +-regexp.prototype.flags@^1.5.0: +- version "1.5.1" +- resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz" +- integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== +- dependencies: +- call-bind "^1.0.2" +- define-properties "^1.2.0" +- set-function-name "^2.0.0" +- + require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" +@@ -3733,12 +3890,7 @@ resolve-from@^5.0.0: + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +-resolve.exports@^2.0.0: +- version "2.0.2" +- resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz" +- integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== +- +-resolve@^1.1.7, resolve@^1.20.0, resolve@^1.22.2: ++resolve@^1.1.7, resolve@^1.22.2: + version "1.22.6" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz" + integrity sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw== +@@ -3820,21 +3972,10 @@ semver@^6.3.1: + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +-semver@^7.5.3, semver@^7.5.4: +- version "7.5.4" +- resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" +- integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== +- dependencies: +- lru-cache "^6.0.0" +- +-set-function-name@^2.0.0: +- version "2.0.1" +- resolved "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz" +- integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== +- dependencies: +- define-data-property "^1.0.1" +- functions-have-names "^1.2.3" +- has-property-descriptors "^1.0.0" ++semver@^7.5.3, semver@^7.5.4, semver@^7.7.2, semver@^7.7.3: ++ version "7.7.3" ++ resolved "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz" ++ integrity sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q== + + shebang-command@^2.0.0: + version "2.0.0" +@@ -3848,24 +3989,15 @@ shebang-regex@^3.0.0: + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +-side-channel@^1.0.4: +- version "1.0.4" +- resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" +- integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== +- dependencies: +- call-bind "^1.0.0" +- get-intrinsic "^1.0.2" +- object-inspect "^1.9.0" +- + signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +-sisteransi@^1.0.5: +- version "1.0.5" +- resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" +- integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== ++signal-exit@^4.0.1: ++ version "4.1.0" ++ resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" ++ integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + + slash@^3.0.0: + version "3.0.0" +@@ -3903,26 +4035,19 @@ sprintf-js@~1.0.2: + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +-stack-utils@^2.0.3: ++stack-utils@^2.0.3, stack-utils@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== + dependencies: + escape-string-regexp "^2.0.0" + +-stop-iteration-iterator@^1.0.0: +- version "1.0.0" +- resolved "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz" +- integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ== +- dependencies: +- internal-slot "^1.0.4" +- + string-argv@0.3.2: + version "0.3.2" + resolved "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz" + integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== + +-string-length@^4.0.1: ++string-length@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== +@@ -3930,6 +4055,15 @@ string-length@^4.0.1: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + ++"string-width-cjs@npm:string-width@^4.2.0": ++ version "4.2.3" ++ resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" ++ integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== ++ dependencies: ++ emoji-regex "^8.0.0" ++ is-fullwidth-code-point "^3.0.0" ++ strip-ansi "^6.0.1" ++ + string-width@^4.1.0, string-width@^4.2.0: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" +@@ -3948,7 +4082,7 @@ string-width@^4.2.3: + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +-string-width@^5.0.0, string-width@^5.0.1: ++string-width@^5.0.0, string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== +@@ -3957,6 +4091,13 @@ string-width@^5.0.0, string-width@^5.0.1: + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + ++"strip-ansi-cjs@npm:strip-ansi@^6.0.1": ++ version "6.0.1" ++ resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" ++ integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== ++ dependencies: ++ ansi-regex "^5.0.1" ++ + strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" +@@ -3965,9 +4106,9 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: + ansi-regex "^5.0.1" + + strip-ansi@^7.0.1: +- version "7.1.0" +- resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" +- integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== ++ version "7.1.2" ++ resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz" ++ integrity sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA== + dependencies: + ansi-regex "^6.0.1" + +@@ -4011,13 +4152,6 @@ sucrase@^3.32.0: + pirates "^4.0.1" + ts-interface-checker "^0.1.9" + +-supports-color@^5.3.0: +- version "5.5.0" +- resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" +- integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== +- dependencies: +- has-flag "^3.0.0" +- + supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" +@@ -4032,6 +4166,13 @@ supports-color@^8.0.0: + dependencies: + has-flag "^4.0.0" + ++supports-color@^8.1.1: ++ version "8.1.1" ++ resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" ++ integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== ++ dependencies: ++ has-flag "^4.0.0" ++ + supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" +@@ -4042,6 +4183,13 @@ symbol-tree@^3.2.4: + resolved "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + ++synckit@^0.11.8: ++ version "0.11.11" ++ resolved "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz" ++ integrity sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw== ++ dependencies: ++ "@pkgr/core" "^0.2.9" ++ + tailwindcss@3.3.3: + version "3.3.3" + resolved "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.3.tgz" +@@ -4103,11 +4251,6 @@ tmpl@1.0.5: + resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +-to-fast-properties@^2.0.0: +- version "2.0.0" +- resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" +- integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== +- + to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" +@@ -4149,19 +4292,25 @@ ts-interface-checker@^0.1.9: + resolved "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz" + integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== + +-ts-jest@29.1.1: +- version "29.1.1" +- resolved "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz" +- integrity sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA== ++ts-jest@^29.4.5: ++ version "29.4.5" ++ resolved "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.5.tgz" ++ integrity sha512-HO3GyiWn2qvTQA4kTgjDcXiMwYQt68a1Y8+JuLRVpdIzm+UOLSHgl/XqR4c6nzJkq5rOkjc02O2I7P7l/Yof0Q== + dependencies: +- bs-logger "0.x" +- fast-json-stable-stringify "2.x" +- jest-util "^29.0.0" ++ bs-logger "^0.2.6" ++ fast-json-stable-stringify "^2.1.0" ++ handlebars "^4.7.8" + json5 "^2.2.3" +- lodash.memoize "4.x" +- make-error "1.x" +- semver "^7.5.3" +- yargs-parser "^21.0.1" ++ lodash.memoize "^4.1.2" ++ make-error "^1.3.6" ++ semver "^7.7.3" ++ type-fest "^4.41.0" ++ yargs-parser "^21.1.1" ++ ++tslib@^2.4.0: ++ version "2.8.1" ++ resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz" ++ integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + + type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" +@@ -4190,23 +4339,60 @@ type-fest@^1.0.2: + resolved "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz" + integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA== + ++type-fest@^4.41.0: ++ version "4.41.0" ++ resolved "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz" ++ integrity sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA== ++ + typescript@^5.2.2, typescript@>=4.2.0, "typescript@>=4.3 <6": + version "5.2.2" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz" + integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== + ++uglify-js@^3.1.4: ++ version "3.19.3" ++ resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz" ++ integrity sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ== ++ + universalify@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz" + integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== + +-update-browserslist-db@^1.0.11: +- version "1.0.11" +- resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz" +- integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== ++unrs-resolver@^1.7.11: ++ version "1.11.1" ++ resolved "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz" ++ integrity sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg== + dependencies: +- escalade "^3.1.1" +- picocolors "^1.0.0" ++ napi-postinstall "^0.3.0" ++ optionalDependencies: ++ "@unrs/resolver-binding-android-arm-eabi" "1.11.1" ++ "@unrs/resolver-binding-android-arm64" "1.11.1" ++ "@unrs/resolver-binding-darwin-arm64" "1.11.1" ++ "@unrs/resolver-binding-darwin-x64" "1.11.1" ++ "@unrs/resolver-binding-freebsd-x64" "1.11.1" ++ "@unrs/resolver-binding-linux-arm-gnueabihf" "1.11.1" ++ "@unrs/resolver-binding-linux-arm-musleabihf" "1.11.1" ++ "@unrs/resolver-binding-linux-arm64-gnu" "1.11.1" ++ "@unrs/resolver-binding-linux-arm64-musl" "1.11.1" ++ "@unrs/resolver-binding-linux-ppc64-gnu" "1.11.1" ++ "@unrs/resolver-binding-linux-riscv64-gnu" "1.11.1" ++ "@unrs/resolver-binding-linux-riscv64-musl" "1.11.1" ++ "@unrs/resolver-binding-linux-s390x-gnu" "1.11.1" ++ "@unrs/resolver-binding-linux-x64-gnu" "1.11.1" ++ "@unrs/resolver-binding-linux-x64-musl" "1.11.1" ++ "@unrs/resolver-binding-wasm32-wasi" "1.11.1" ++ "@unrs/resolver-binding-win32-arm64-msvc" "1.11.1" ++ "@unrs/resolver-binding-win32-ia32-msvc" "1.11.1" ++ "@unrs/resolver-binding-win32-x64-msvc" "1.11.1" ++ ++update-browserslist-db@^1.1.3: ++ version "1.1.3" ++ resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz" ++ integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw== ++ dependencies: ++ escalade "^3.2.0" ++ picocolors "^1.1.1" + + uri-js@^4.2.2: + version "4.4.1" +@@ -4229,13 +4415,13 @@ util-deprecate@^1.0.2: + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + + v8-to-istanbul@^9.0.1: +- version "9.1.0" +- resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz" +- integrity sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA== ++ version "9.3.0" ++ resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz" ++ integrity sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA== + dependencies: + "@jridgewell/trace-mapping" "^0.3.12" + "@types/istanbul-lib-coverage" "^2.0.1" +- convert-source-map "^1.6.0" ++ convert-source-map "^2.0.0" + + vite-plugin-ruby@3.2.2: + version "3.2.2" +@@ -4303,38 +4489,6 @@ whatwg-url@^12.0.0, whatwg-url@^12.0.1: + tr46 "^4.1.1" + webidl-conversions "^7.0.0" + +-which-boxed-primitive@^1.0.2: +- version "1.0.2" +- resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" +- integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== +- dependencies: +- is-bigint "^1.0.1" +- is-boolean-object "^1.1.0" +- is-number-object "^1.0.4" +- is-string "^1.0.5" +- is-symbol "^1.0.3" +- +-which-collection@^1.0.1: +- version "1.0.1" +- resolved "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz" +- integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== +- dependencies: +- is-map "^2.0.1" +- is-set "^2.0.1" +- is-weakmap "^2.0.1" +- is-weakset "^2.0.1" +- +-which-typed-array@^1.1.11, which-typed-array@^1.1.9: +- version "1.1.11" +- resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz" +- integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== +- dependencies: +- available-typed-arrays "^1.0.5" +- call-bind "^1.0.2" +- for-each "^0.3.3" +- gopd "^1.0.1" +- has-tostringtag "^1.0.0" +- + which@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" +@@ -4342,6 +4496,20 @@ which@^2.0.1: + dependencies: + isexe "^2.0.0" + ++wordwrap@^1.0.0: ++ version "1.0.0" ++ resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz" ++ integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== ++ ++"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": ++ version "7.0.0" ++ resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" ++ integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== ++ dependencies: ++ ansi-styles "^4.0.0" ++ string-width "^4.1.0" ++ strip-ansi "^6.0.0" ++ + wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" +@@ -4373,6 +4541,14 @@ write-file-atomic@^4.0.2: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + ++write-file-atomic@^5.0.1: ++ version "5.0.1" ++ resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz" ++ integrity sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw== ++ dependencies: ++ imurmurhash "^0.1.4" ++ signal-exit "^4.0.1" ++ + ws@^8.11.0, ws@^8.13.0: + version "8.14.1" + resolved "https://registry.npmjs.org/ws/-/ws-8.14.1.tgz" +@@ -4398,11 +4574,6 @@ yallist@^3.0.2: + resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +-yallist@^4.0.0: +- version "4.0.0" +- resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" +- integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== +- + yaml@^2.1.1: + version "2.3.2" + resolved "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz" +@@ -4413,12 +4584,12 @@ yaml@2.3.1: + resolved "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz" + integrity sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ== + +-yargs-parser@^21.0.1, yargs-parser@^21.1.1: ++yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +-yargs@^17.3.1: ++yargs@^17.7.2: + version "17.7.2" + resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + +From 3834357b38daf01b366c9c607b00cf21b4875c8c Mon Sep 17 00:00:00 2001 +From: Genevieve Capolongo +Date: Mon, 13 Oct 2025 11:43:28 -0400 +Subject: [PATCH 12/22] adding proper error messaging to guest when they try to + access sign up page + +--- + app/frontend/constants.ts | 1 + + app/frontend/entrypoints/main.tsx | 5 ++- + .../providers/AlertProvider/index.tsx | 17 ++++++++++ + .../providers/AlertProvider/reducer.ts | 23 +++++++++++++ + app/frontend/providers/AlertProvider/types.ts | 33 +++++++++++++++++++ + .../reusable-components/alert/index.tsx | 28 ++++++++++++++++ + .../routes/create-account/create-account.tsx | 9 +++++ + .../account-selection/account-selection.tsx | 8 +++++ + .../routes/signup/create-user/create-user.tsx | 14 ++++++-- + .../routes/signup/deposit/deposit.tsx | 10 +++++- + .../signup/joint-access/joint-access.tsx | 14 ++++++-- + bin/rails | 0 + 12 files changed, 154 insertions(+), 8 deletions(-) + create mode 100644 app/frontend/constants.ts + create mode 100644 app/frontend/providers/AlertProvider/index.tsx + create mode 100644 app/frontend/providers/AlertProvider/reducer.ts + create mode 100644 app/frontend/providers/AlertProvider/types.ts + create mode 100644 app/frontend/reusable-components/alert/index.tsx + mode change 100644 => 100755 bin/rails + +diff --git a/app/frontend/constants.ts b/app/frontend/constants.ts +new file mode 100644 +index 0000000..6681f1b +--- /dev/null ++++ b/app/frontend/constants.ts +@@ -0,0 +1 @@ ++export const SIGN_UP_ERROR_MESSAGE = 'Unable to access this page. Please create an account first.'; +diff --git a/app/frontend/entrypoints/main.tsx b/app/frontend/entrypoints/main.tsx +index e4f34d5..9bda00e 100644 +--- a/app/frontend/entrypoints/main.tsx ++++ b/app/frontend/entrypoints/main.tsx +@@ -3,11 +3,14 @@ import ReactDOM from 'react-dom/client'; + import { Router } from '../router.tsx'; + import { AccountProvider } from '../providers/AccountProvider/index.tsx'; + import '../tailwind.css'; ++import { AlertProvider } from '../providers/AlertProvider/index.tsx'; + + ReactDOM.createRoot(document.getElementById('vite-app')!).render( + + +- ++ ++ ++ + + + ); +diff --git a/app/frontend/providers/AlertProvider/index.tsx b/app/frontend/providers/AlertProvider/index.tsx +new file mode 100644 +index 0000000..17c95a2 +--- /dev/null ++++ b/app/frontend/providers/AlertProvider/index.tsx +@@ -0,0 +1,17 @@ ++import React, { createContext, useReducer } from 'react'; ++import { alertReducer, EmptyAlert } from './reducer'; ++import { AlertStateType, AlertDispatchType, AlertProviderProps } from './types'; ++ ++export const AlertContext = createContext< ++ | { ++ state: AlertStateType; ++ dispatch: AlertDispatchType; // connect the action to the state ++ } ++ | undefined ++>(undefined); ++ ++export function AlertProvider({ children }: AlertProviderProps) { ++ const [state, dispatch] = useReducer(alertReducer, EmptyAlert); ++ const value = { state, dispatch }; ++ return {children}; ++} +diff --git a/app/frontend/providers/AlertProvider/reducer.ts b/app/frontend/providers/AlertProvider/reducer.ts +new file mode 100644 +index 0000000..86449bc +--- /dev/null ++++ b/app/frontend/providers/AlertProvider/reducer.ts +@@ -0,0 +1,23 @@ ++import { Reducer } from 'react'; ++import { AlertActions, AlertActionTypes, AlertStateType } from './types'; ++ ++export const EmptyAlert = { ++ alert: { message: '' }, ++}; ++ ++export const alertReducer: Reducer = (state, action) => { ++ switch (action.type) { ++ case AlertActionTypes.SET_ALERT: { ++ return { ++ ...state, ++ alert: action.payload?.alert, ++ }; ++ } ++ case AlertActionTypes.DELETE_ALERT: { ++ return { ++ ...state, ++ alert: { message: '' }, ++ }; ++ } ++ } ++}; +diff --git a/app/frontend/providers/AlertProvider/types.ts b/app/frontend/providers/AlertProvider/types.ts +new file mode 100644 +index 0000000..57754f3 +--- /dev/null ++++ b/app/frontend/providers/AlertProvider/types.ts +@@ -0,0 +1,33 @@ ++import { ReactNode } from 'react'; ++ ++type AlertType = { ++ message: string; ++}; ++ ++export type AlertStateType = { ++ alert: AlertType; ++}; ++ ++export type AlertDispatchType = (action: AlertActions) => void; ++ ++export type AlertProviderProps = { ++ children: ReactNode; ++}; ++ ++export enum AlertActionTypes { ++ SET_ALERT = 'SET_ALERT', ++ DELETE_ALERT = 'DELETE_ALERT', ++} ++ ++interface SetAlert { ++ type: typeof AlertActionTypes.SET_ALERT; ++ payload: { ++ alert: AlertType; ++ }; ++} ++ ++interface DeleteAlert { ++ type: typeof AlertActionTypes.DELETE_ALERT; ++} ++ ++export type AlertActions = SetAlert | DeleteAlert; +diff --git a/app/frontend/reusable-components/alert/index.tsx b/app/frontend/reusable-components/alert/index.tsx +new file mode 100644 +index 0000000..00670ce +--- /dev/null ++++ b/app/frontend/reusable-components/alert/index.tsx +@@ -0,0 +1,28 @@ ++import React from 'react'; ++ ++interface AlertProps { ++ message?: string; ++} ++ ++export const Alert = ({ message }: AlertProps) => { ++ if (!message) return null; ++ ++ return ( ++
++ ++ {message} ++
++ ); ++}; +diff --git a/app/frontend/routes/create-account/create-account.tsx b/app/frontend/routes/create-account/create-account.tsx +index 1c9050f..e76c9af 100644 +--- a/app/frontend/routes/create-account/create-account.tsx ++++ b/app/frontend/routes/create-account/create-account.tsx +@@ -8,6 +8,9 @@ import { useNavigate } from 'react-router-dom'; + import { CREATE_ACCOUNT_ERROR_MAP } from './constants'; + import { AccountContext } from 'app/frontend/providers/AccountProvider'; + import { AccountActionTypes } from 'app/frontend/providers/AccountProvider/types'; ++import { Alert } from 'app/frontend/reusable-components/alert'; ++import { AlertContext } from 'app/frontend/providers/AlertProvider'; ++import { AlertActionTypes } from 'app/frontend/providers/AlertProvider/types'; + + export function CreateAccount() { + const [username, setUsername] = React.useState(''); +@@ -15,6 +18,7 @@ export function CreateAccount() { + const [validation, setValidation] = React.useState<{ username?: string; password?: string } | null>(null); + const navigate = useNavigate(); + const user = useContext(AccountContext); ++ const alerts = useContext(AlertContext); + const [isLoading, setIsLoading] = React.useState(false); + + const handleUsernameChange = useCallback((value: string) => { +@@ -31,6 +35,8 @@ export function CreateAccount() { + setIsLoading(true); + setValidation(null); + ++ alerts?.dispatch({ type: AlertActionTypes.DELETE_ALERT }); ++ + try { + const res = await fetch('/api/validate_account', { + method: 'POST', +@@ -60,6 +66,9 @@ export function CreateAccount() { + return ( + + ++
++ ++
+
+ { + if (user && user.state && !user.state.isValid) { + navigate('/create-account'); ++ alerts?.dispatch({ ++ type: AlertActionTypes.SET_ALERT, ++ payload: { alert: { message: SIGN_UP_ERROR_MESSAGE } }, ++ }); + } + }, [user, navigate]); + +diff --git a/app/frontend/routes/signup/create-user/create-user.tsx b/app/frontend/routes/signup/create-user/create-user.tsx +index e7cc4ba..f194253 100644 +--- a/app/frontend/routes/signup/create-user/create-user.tsx ++++ b/app/frontend/routes/signup/create-user/create-user.tsx +@@ -5,14 +5,22 @@ import { FlowLayout } from '../../../reusable-components/flow-layout/flow-layout + import { Input } from '../../../reusable-components/input/input'; + import { AccountContext } from 'app/frontend/providers/AccountProvider/index.tsx'; + import { useNavigate } from 'react-router-dom'; ++import { SIGN_UP_ERROR_MESSAGE } from 'app/frontend/constants.ts'; ++import { AlertContext } from 'app/frontend/providers/AlertProvider/index.tsx'; ++import { AlertActionTypes } from 'app/frontend/providers/AlertProvider/types.ts'; + + export function CreateUser() { + const user = useContext(AccountContext); + const navigate = useNavigate(); ++ const alerts = useContext(AlertContext); + + useEffect(() => { + if (user && user.state && !user.state.isValid) { + navigate('/create-account'); ++ alerts?.dispatch({ ++ type: AlertActionTypes.SET_ALERT, ++ payload: { alert: { message: SIGN_UP_ERROR_MESSAGE } }, ++ }); + } + }, [user, navigate]); + +@@ -20,9 +28,9 @@ export function CreateUser() { + + +
+- +- +- ++ ++ ++ + +
+
+diff --git a/app/frontend/routes/signup/deposit/deposit.tsx b/app/frontend/routes/signup/deposit/deposit.tsx +index 255e190..36637d8 100644 +--- a/app/frontend/routes/signup/deposit/deposit.tsx ++++ b/app/frontend/routes/signup/deposit/deposit.tsx +@@ -5,14 +5,22 @@ import { FlowLayout } from '../../../reusable-components/flow-layout/flow-layout + import { Input } from '../../../reusable-components/input/input.tsx'; + import { AccountContext } from 'app/frontend/providers/AccountProvider/index.tsx'; + import { useNavigate } from 'react-router-dom'; ++import { SIGN_UP_ERROR_MESSAGE } from 'app/frontend/constants.ts'; ++import { AlertContext } from 'app/frontend/providers/AlertProvider/index.tsx'; ++import { AlertActionTypes } from 'app/frontend/providers/AlertProvider/types.ts'; + + export function Deposit() { + const user = useContext(AccountContext); ++ const alerts = useContext(AlertContext); + const navigate = useNavigate(); + + useEffect(() => { + if (user && user.state && !user.state.isValid) { + navigate('/create-account'); ++ alerts?.dispatch({ ++ type: AlertActionTypes.SET_ALERT, ++ payload: { alert: { message: SIGN_UP_ERROR_MESSAGE } }, ++ }); + } + }, [user, navigate]); + +@@ -20,7 +28,7 @@ export function Deposit() { + + +
+- ++ + +
+
+diff --git a/app/frontend/routes/signup/joint-access/joint-access.tsx b/app/frontend/routes/signup/joint-access/joint-access.tsx +index 37d3b43..0c8bf58 100644 +--- a/app/frontend/routes/signup/joint-access/joint-access.tsx ++++ b/app/frontend/routes/signup/joint-access/joint-access.tsx +@@ -5,14 +5,22 @@ import { FlowLayout } from '../../../reusable-components/flow-layout/flow-layout + import { Input } from '../../../reusable-components/input/input'; + import { AccountContext } from 'app/frontend/providers/AccountProvider/index.tsx'; + import { useNavigate } from 'react-router-dom'; ++import { SIGN_UP_ERROR_MESSAGE } from 'app/frontend/constants.ts'; ++import { AlertContext } from 'app/frontend/providers/AlertProvider/index.tsx'; ++import { AlertActionTypes } from 'app/frontend/providers/AlertProvider/types.ts'; + + export function JointAccess() { + const user = useContext(AccountContext); ++ const alerts = useContext(AlertContext); + const navigate = useNavigate(); + + useEffect(() => { + if (user && user.state && !user.state.isValid) { + navigate('/create-account'); ++ alerts?.dispatch({ ++ type: AlertActionTypes.SET_ALERT, ++ payload: { alert: { message: SIGN_UP_ERROR_MESSAGE } }, ++ }); + } + }, [user, navigate]); + +@@ -24,9 +32,9 @@ export function JointAccess() { + description="Joint accounts allow for a secondary account holder which provides the same level of access as the primary." + > +
+- +- +- ++ ++ ++ + +
+ +diff --git a/bin/rails b/bin/rails +old mode 100644 +new mode 100755 + +From e554353bddf36156014a4f1b02f34f0bfbce33e2 Mon Sep 17 00:00:00 2001 +From: Genevieve Capolongo +Date: Mon, 13 Oct 2025 11:45:48 -0400 +Subject: [PATCH 13/22] updating todos + +--- + app/frontend/reusable-components/flow-layout/flow-layout.tsx | 2 +- + app/frontend/router.tsx | 2 -- + 2 files changed, 1 insertion(+), 3 deletions(-) + +diff --git a/app/frontend/reusable-components/flow-layout/flow-layout.tsx b/app/frontend/reusable-components/flow-layout/flow-layout.tsx +index fbe8dfd..576371e 100644 +--- a/app/frontend/reusable-components/flow-layout/flow-layout.tsx ++++ b/app/frontend/reusable-components/flow-layout/flow-layout.tsx +@@ -15,7 +15,7 @@ export function FlowLayout({ children }: Props) { + const isValid = user?.state.isValid; + + // TODO: need to add session storage logic for this +- // Test coverage for everything ++ // Test coverage for storage logic + + const handleLogout = useCallback(() => { + user?.dispatch({ type: AccountActionTypes.DELETE_USERNAME }); +diff --git a/app/frontend/router.tsx b/app/frontend/router.tsx +index 02d18f1..b628ab7 100644 +--- a/app/frontend/router.tsx ++++ b/app/frontend/router.tsx +@@ -39,8 +39,6 @@ const router = createBrowserRouter([ + }, + ]); + +-// TODO: authentication logic needs to go here? +- + export function Router() { + return ( +
+ +From 64ee88cca6a268fcbbbef26123316e7cbc99ed68 Mon Sep 17 00:00:00 2001 +From: Genevieve Capolongo +Date: Tue, 14 Oct 2025 16:14:00 -0400 +Subject: [PATCH 14/22] adding proper validation for server side errrors + +--- + app/controllers/api_controller.rb | 36 ++++++++++++++++--- + app/frontend/constants.ts | 1 + + .../routes/create-account/create-account.tsx | 9 +++-- + 3 files changed, 39 insertions(+), 7 deletions(-) + +diff --git a/app/controllers/api_controller.rb b/app/controllers/api_controller.rb +index 3fa686d..ac81107 100644 +--- a/app/controllers/api_controller.rb ++++ b/app/controllers/api_controller.rb +@@ -10,9 +10,37 @@ def validate_account + username_result = User.validate_username(username) + password_result = User.validate_password(password) + +- render json: { +- username: username_result, +- password: password_result +- } ++ # This is created the user on the table ++ user = User.create(username: username, password: password) ++ ++ if user ++ # session[:user_id] = user.id ++ render json: { ++ logged_in: true, ++ status: :created, ++ user: user, ++ } ++ # redirect_to signup_account_selection_path ++ else ++ render json: { ++ username: username_result, ++ password: password_result ++ } ++ end ++ end ++ ++ def get_account ++ if session[:user_id] ++ user = User.find(session[:user_id]) ++ render json: { ++ logged_in: true, ++ user: user ++ } ++ else ++ render json: { ++ logged_in: false, ++ message: 'No user logged in' ++ } ++ end + end + end +diff --git a/app/frontend/constants.ts b/app/frontend/constants.ts +index 6681f1b..25f118c 100644 +--- a/app/frontend/constants.ts ++++ b/app/frontend/constants.ts +@@ -1 +1,2 @@ + export const SIGN_UP_ERROR_MESSAGE = 'Unable to access this page. Please create an account first.'; ++export const SERVER_ERROR_MESSAGE = 'Something went wrong. Please try again later.'; +diff --git a/app/frontend/routes/create-account/create-account.tsx b/app/frontend/routes/create-account/create-account.tsx +index e76c9af..dac0f6b 100644 +--- a/app/frontend/routes/create-account/create-account.tsx ++++ b/app/frontend/routes/create-account/create-account.tsx +@@ -11,6 +11,7 @@ import { AccountActionTypes } from 'app/frontend/providers/AccountProvider/types + import { Alert } from 'app/frontend/reusable-components/alert'; + import { AlertContext } from 'app/frontend/providers/AlertProvider'; + import { AlertActionTypes } from 'app/frontend/providers/AlertProvider/types'; ++import { SERVER_ERROR_MESSAGE } from 'app/frontend/constants'; + + export function CreateAccount() { + const [username, setUsername] = React.useState(''); +@@ -40,16 +41,18 @@ export function CreateAccount() { + try { + const res = await fetch('/api/validate_account', { + method: 'POST', ++ credentials: 'include', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ username, password }), + }); + const data = await res.json(); + +- if (data.username === true && data.password === true) { ++ console.log('response from backend:', data); ++ ++ if (data?.logged_in) { + navigate('/signup/account-selection'); + + user?.dispatch({ type: AccountActionTypes.SET_USERNAME, payload: { username } }); +- return; + } + + const usernameError = CREATE_ACCOUNT_ERROR_MAP[data.username as keyof typeof CREATE_ACCOUNT_ERROR_MAP]; +@@ -57,7 +60,7 @@ export function CreateAccount() { + + setValidation({ username: usernameError, password: passwordError }); + } catch (e) { +- setValidation({ username: 'SERVER_ERROR', password: 'SERVER_ERROR' }); ++ alerts?.dispatch({ type: AlertActionTypes.SET_ALERT, payload: { alert: { message: SERVER_ERROR_MESSAGE } } }); + } finally { + setIsLoading(false); + } + +From 97d3b1149dd100d53ab32fc36f712d0ab8b176f7 Mon Sep 17 00:00:00 2001 +From: Genevieve Capolongo +Date: Tue, 14 Oct 2025 16:29:47 -0400 +Subject: [PATCH 15/22] adding secure password to gemfile + +--- + Gemfile | 2 +- + Gemfile.lock | 2 ++ + app/models/user.rb | 19 ++++++++++--------- + 3 files changed, 13 insertions(+), 10 deletions(-) + +diff --git a/Gemfile b/Gemfile +index 4552e5d..24e2045 100644 +--- a/Gemfile ++++ b/Gemfile +@@ -32,7 +32,7 @@ gem "stimulus-rails", "1.2.2" + gem "jbuilder", "2.11.5" + + # Use Active Model has_secure_password [https://guides.rubyonrails.org/active_model_basics.html#securepassword] +-# gem "bcrypt", "~> 3.1.7" ++gem "bcrypt", "~> 3.1.7" + + # Windows does not include zoneinfo files, so bundle the tzinfo-data gem + gem "tzinfo-data", "1.2023.3", platforms: %i[ mingw mswin x64_mingw jruby ] +diff --git a/Gemfile.lock b/Gemfile.lock +index da8d13d..6e1091e 100644 +--- a/Gemfile.lock ++++ b/Gemfile.lock +@@ -68,6 +68,7 @@ GEM + tzinfo (~> 2.0) + addressable (2.8.5) + public_suffix (>= 2.0.2, < 6.0) ++ bcrypt (3.1.20) + bindex (0.8.1) + bootsnap (1.16.0) + msgpack (~> 1.2) +@@ -215,6 +216,7 @@ PLATFORMS + arm64-darwin-23 + + DEPENDENCIES ++ bcrypt (~> 3.1.7) + bootsnap (= 1.16.0) + capybara (= 3.39.2) + importmap-rails (= 1.2.1) +diff --git a/app/models/user.rb b/app/models/user.rb +index 15ee27c..6d0fe60 100644 +--- a/app/models/user.rb ++++ b/app/models/user.rb +@@ -1,22 +1,23 @@ + require 'zxcvbn' + class User < ApplicationRecord ++ has_secure_password + validates :username, presence: true + validates :password, presence: true + + def self.validate_username(username) +- return 'NO_USERNAME_GIVEN' if username.nil? || username.strip.empty? +- return 'USERNAME_NOT_VALID' unless username.length >= 10 && username.length <= 50 +- true ++ return 'NO_USERNAME_GIVEN' if username.nil? || username.strip.empty? ++ return 'USERNAME_NOT_VALID' unless username.length >= 10 && username.length <= 50 ++ true + end + + def self.validate_password(password) +- return 'NO_PASSWORD_GIVEN' if password.nil? || password.strip.empty? +- return 'PASSWORD_NOT_VALID' unless password.length >= 20 && password.length <= 50 +- return 'PASSWORD_LETTER_NUMBER_MISSING' unless password.match?(/[a-zA-Z]/) +- return 'PASSWORD_LETTER_NUMBER_MISSING' unless password.match?(/[0-9]/) ++ return 'NO_PASSWORD_GIVEN' if password.nil? || password.strip.empty? ++ return 'PASSWORD_NOT_VALID' unless password.length >= 20 && password.length <= 50 ++ return 'PASSWORD_LETTER_NUMBER_MISSING' unless password.match?(/[a-zA-Z]/) ++ return 'PASSWORD_LETTER_NUMBER_MISSING' unless password.match?(/[0-9]/) + +- zxcvbn = Zxcvbn.test(password) +- return 'PASSWORD_WEAK' if zxcvbn.score < 2 ++ zxcvbn = Zxcvbn.test(password) ++ return 'PASSWORD_WEAK' if zxcvbn.score < 2 + + true + end + +From e62b18cbb041837643727daaa16b854d0edafeae Mon Sep 17 00:00:00 2001 +From: Genevieve Capolongo +Date: Tue, 14 Oct 2025 16:40:34 -0400 +Subject: [PATCH 16/22] getting too fancy + +--- + Gemfile | 2 +- + Gemfile.lock | 2 -- + app/models/user.rb | 1 - + 3 files changed, 1 insertion(+), 4 deletions(-) + +diff --git a/Gemfile b/Gemfile +index 24e2045..4552e5d 100644 +--- a/Gemfile ++++ b/Gemfile +@@ -32,7 +32,7 @@ gem "stimulus-rails", "1.2.2" + gem "jbuilder", "2.11.5" + + # Use Active Model has_secure_password [https://guides.rubyonrails.org/active_model_basics.html#securepassword] +-gem "bcrypt", "~> 3.1.7" ++# gem "bcrypt", "~> 3.1.7" + + # Windows does not include zoneinfo files, so bundle the tzinfo-data gem + gem "tzinfo-data", "1.2023.3", platforms: %i[ mingw mswin x64_mingw jruby ] +diff --git a/Gemfile.lock b/Gemfile.lock +index 6e1091e..da8d13d 100644 +--- a/Gemfile.lock ++++ b/Gemfile.lock +@@ -68,7 +68,6 @@ GEM + tzinfo (~> 2.0) + addressable (2.8.5) + public_suffix (>= 2.0.2, < 6.0) +- bcrypt (3.1.20) + bindex (0.8.1) + bootsnap (1.16.0) + msgpack (~> 1.2) +@@ -216,7 +215,6 @@ PLATFORMS + arm64-darwin-23 + + DEPENDENCIES +- bcrypt (~> 3.1.7) + bootsnap (= 1.16.0) + capybara (= 3.39.2) + importmap-rails (= 1.2.1) +diff --git a/app/models/user.rb b/app/models/user.rb +index 6d0fe60..0c18e2c 100644 +--- a/app/models/user.rb ++++ b/app/models/user.rb +@@ -1,6 +1,5 @@ + require 'zxcvbn' + class User < ApplicationRecord +- has_secure_password + validates :username, presence: true + validates :password, presence: true + + +From 9910ed3b46e68420a34d6bfeb21bc72e8949621a Mon Sep 17 00:00:00 2001 +From: Genevieve Capolongo +Date: Tue, 14 Oct 2025 21:08:15 -0400 +Subject: [PATCH 17/22] add session storage things + +--- + app/controllers/api_controller.rb | 2 +- + app/frontend/get-user.ts | 12 ++++++++++++ + .../signup/account-selection/account-selection.tsx | 3 +++ + config/initializers/session_store.rb | 1 + + config/routes.rb | 2 ++ + 5 files changed, 19 insertions(+), 1 deletion(-) + create mode 100644 app/frontend/get-user.ts + create mode 100644 config/initializers/session_store.rb + +diff --git a/app/controllers/api_controller.rb b/app/controllers/api_controller.rb +index ac81107..d6f351e 100644 +--- a/app/controllers/api_controller.rb ++++ b/app/controllers/api_controller.rb +@@ -14,7 +14,7 @@ def validate_account + user = User.create(username: username, password: password) + + if user +- # session[:user_id] = user.id ++ session[:user_id] = user.id + render json: { + logged_in: true, + status: :created, +diff --git a/app/frontend/get-user.ts b/app/frontend/get-user.ts +new file mode 100644 +index 0000000..3de1a61 +--- /dev/null ++++ b/app/frontend/get-user.ts +@@ -0,0 +1,12 @@ ++export const getUserSession = async () => { ++ const res = await fetch('/api/get_account', { ++ method: 'GET', ++ credentials: 'include', ++ headers: { 'Content-Type': 'application/json' }, ++ }); ++ ++ const data = await res.json(); ++ ++ console.log('getUserSession response:', data); ++ return data; ++}; +diff --git a/app/frontend/routes/signup/account-selection/account-selection.tsx b/app/frontend/routes/signup/account-selection/account-selection.tsx +index 2ad33ad..5dd2fbd 100644 +--- a/app/frontend/routes/signup/account-selection/account-selection.tsx ++++ b/app/frontend/routes/signup/account-selection/account-selection.tsx +@@ -7,6 +7,7 @@ import { WelcomeMessage } from 'app/frontend/reusable-components/welcomeMessage/ + import { AlertActionTypes } from 'app/frontend/providers/AlertProvider/types.ts'; + import { AlertContext } from 'app/frontend/providers/AlertProvider/index.tsx'; + import { SIGN_UP_ERROR_MESSAGE } from 'app/frontend/constants.ts'; ++import { getUserSession } from 'app/frontend/get-user.ts'; + + export function AccountSelection() { + const user = useContext(AccountContext); +@@ -14,6 +15,8 @@ export function AccountSelection() { + const navigate = useNavigate(); + + useEffect(() => { ++ // TODO: this is returning false ++ getUserSession(); + if (user && user.state && !user.state.isValid) { + navigate('/create-account'); + alerts?.dispatch({ +diff --git a/config/initializers/session_store.rb b/config/initializers/session_store.rb +new file mode 100644 +index 0000000..e2d6958 +--- /dev/null ++++ b/config/initializers/session_store.rb +@@ -0,0 +1 @@ ++Rails.application.config.session_store :cookie_store, key: '_proj_session' +\ No newline at end of file +diff --git a/config/routes.rb b/config/routes.rb +index e2c8608..c1fe69e 100644 +--- a/config/routes.rb ++++ b/config/routes.rb +@@ -1,9 +1,11 @@ + Rails.application.routes.draw do + # Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html ++ resources :sessions, only: [:create, :destroy] + + get '/', to: 'application#render_react', as: :root + get 'signup/*all', to: 'application#render_react', as: :signup + get 'create-account', to: 'application#render_react', as: :createAccount + + post 'api/validate_account', to: 'api#validate_account' ++ get 'api/get_account', to: 'api#get_account' + end + +From fd761493dd9cdb0c02d9af50fac195094ec3648b Mon Sep 17 00:00:00 2001 +From: Genevieve Capolongo +Date: Thu, 16 Oct 2025 13:53:45 -0400 +Subject: [PATCH 18/22] adding test coverage + +--- + .../welcomeMessage/index.tsx | 2 +- + .../account-selection.test.tsx | 41 ++++++++++++++--- + .../account-selection/account-selection.tsx | 21 ++++----- + .../signup/create-user/create-user.test.tsx | 38 +++++++++++++--- + .../routes/signup/deposit/deposit.test.tsx | 42 +++++++++++++++++ + .../signup/joint-access/joint-access.test.tsx | 45 +++++++++++++++++++ + .../stock-restrictions.test.tsx | 42 +++++++++++++++++ + .../stock-restrictions/stock-restrictions.tsx | 2 +- + 8 files changed, 211 insertions(+), 22 deletions(-) + create mode 100644 app/frontend/routes/signup/deposit/deposit.test.tsx + create mode 100644 app/frontend/routes/signup/joint-access/joint-access.test.tsx + create mode 100644 app/frontend/routes/signup/stock-restrictions/stock-restrictions.test.tsx + +diff --git a/app/frontend/reusable-components/welcomeMessage/index.tsx b/app/frontend/reusable-components/welcomeMessage/index.tsx +index f3e7315..467d063 100644 +--- a/app/frontend/reusable-components/welcomeMessage/index.tsx ++++ b/app/frontend/reusable-components/welcomeMessage/index.tsx +@@ -4,7 +4,7 @@ import React, { useContext } from 'react'; + export const WelcomeMessage = () => { + const user = useContext(AccountContext); + return ( +-
++
+

Welcome {user?.state.username || 'Guest'}!

+

We're glad to have you here.

+
+diff --git a/app/frontend/routes/signup/account-selection/account-selection.test.tsx b/app/frontend/routes/signup/account-selection/account-selection.test.tsx +index 9b9fed6..063d6a2 100644 +--- a/app/frontend/routes/signup/account-selection/account-selection.test.tsx ++++ b/app/frontend/routes/signup/account-selection/account-selection.test.tsx +@@ -1,12 +1,43 @@ +-import { describe, test } from '@jest/globals'; ++import { describe } from '@jest/globals'; + import { render, screen } from '@testing-library/react'; + import React from 'react'; + import { BrowserRouter } from 'react-router-dom'; + import { AccountSelection } from './account-selection'; ++import '@testing-library/jest-dom'; ++import { AccountContext } from 'app/frontend/providers/AccountProvider'; ++import { AccountStateType } from 'app/frontend/providers/AccountProvider/types'; ++ ++global.fetch = jest.fn(); ++const getUserSessionMock = jest.fn(); ++const mockNavigate = jest.fn(); ++jest.mock('react-router-dom', () => ({ ++ ...jest.requireActual('react-router-dom'), ++ useNavigate: () => mockNavigate, ++})); ++jest.mock('app/frontend/get-user', () => ({ ++ getUserSession: () => getUserSessionMock, ++})); + + describe('AccountSelection', () => { +- test('render', () => {}); +- render(, { wrapper: BrowserRouter }); +- screen.getByText('I want to open a cash account.'); +- screen.getByText('I want to open an investing account.'); ++ it('displays proper elements', () => { ++ render(, { wrapper: BrowserRouter }); ++ expect(screen.getByTestId('welcome-message')).toBeInTheDocument(); ++ expect(screen.getByText('I want to open a cash account.')).toBeInTheDocument(); ++ expect(screen.getByText('I want to open an investing account.')).toBeInTheDocument(); ++ }); ++ ++ it('routes to create-account when valid user not found', () => { ++ jest.resetModules(); ++ const invalidUser = { state: { isValid: false } as AccountStateType, dispatch: jest.fn() }; ++ render( ++ ++ ++ ++ ++ ++ ); ++ ++ // The effect should trigger navigation ++ expect(mockNavigate).toHaveBeenCalledWith('/create-account'); ++ }); + }); +diff --git a/app/frontend/routes/signup/account-selection/account-selection.tsx b/app/frontend/routes/signup/account-selection/account-selection.tsx +index 5dd2fbd..779b4ec 100644 +--- a/app/frontend/routes/signup/account-selection/account-selection.tsx ++++ b/app/frontend/routes/signup/account-selection/account-selection.tsx +@@ -1,15 +1,15 @@ ++import { SIGN_UP_ERROR_MESSAGE } from 'app/frontend/constants'; ++import { getUserSession } from 'app/frontend/get-user'; ++import { AccountContext } from 'app/frontend/providers/AccountProvider'; ++import { AlertContext } from 'app/frontend/providers/AlertProvider'; ++import { AlertActionTypes } from 'app/frontend/providers/AlertProvider/types'; ++import { Card } from 'app/frontend/reusable-components/card/card'; ++import { FlowLayout } from 'app/frontend/reusable-components/flow-layout/flow-layout'; ++import { WelcomeMessage } from 'app/frontend/reusable-components/welcomeMessage'; + import React, { useContext, useEffect } from 'react'; + import { Link, useNavigate } from 'react-router-dom'; +-import { Card } from '../../../reusable-components/card/card.tsx'; +-import { FlowLayout } from '../../../reusable-components/flow-layout/flow-layout.tsx'; +-import { AccountContext } from 'app/frontend/providers/AccountProvider/index.tsx'; +-import { WelcomeMessage } from 'app/frontend/reusable-components/welcomeMessage/index.tsx'; +-import { AlertActionTypes } from 'app/frontend/providers/AlertProvider/types.ts'; +-import { AlertContext } from 'app/frontend/providers/AlertProvider/index.tsx'; +-import { SIGN_UP_ERROR_MESSAGE } from 'app/frontend/constants.ts'; +-import { getUserSession } from 'app/frontend/get-user.ts'; + +-export function AccountSelection() { ++export const AccountSelection = () => { + const user = useContext(AccountContext); + const alerts = useContext(AlertContext); + const navigate = useNavigate(); +@@ -18,6 +18,7 @@ export function AccountSelection() { + // TODO: this is returning false + getUserSession(); + if (user && user.state && !user.state.isValid) { ++ console.log('user is not valid, redirecting to create-account'); + navigate('/create-account'); + alerts?.dispatch({ + type: AlertActionTypes.SET_ALERT, +@@ -52,4 +53,4 @@ export function AccountSelection() { + + + ); +-} ++}; +diff --git a/app/frontend/routes/signup/create-user/create-user.test.tsx b/app/frontend/routes/signup/create-user/create-user.test.tsx +index 0140250..5889b7c 100644 +--- a/app/frontend/routes/signup/create-user/create-user.test.tsx ++++ b/app/frontend/routes/signup/create-user/create-user.test.tsx +@@ -1,13 +1,41 @@ +-import { describe, test } from '@jest/globals'; ++import { describe } from '@jest/globals'; + import { render } from '@testing-library/react'; + import { screen } from '@testing-library/dom'; + import React from 'react'; + import { BrowserRouter } from 'react-router-dom'; + import { CreateUser } from './create-user'; ++import { AccountContext } from 'app/frontend/providers/AccountProvider'; ++import { AccountStateType } from 'app/frontend/providers/AccountProvider/types'; ++ ++global.fetch = jest.fn(); ++const getUserSessionMock = jest.fn(); ++const mockNavigate = jest.fn(); ++jest.mock('react-router-dom', () => ({ ++ ...jest.requireActual('react-router-dom'), ++ useNavigate: () => mockNavigate, ++})); ++jest.mock('app/frontend/get-user', () => ({ ++ getUserSession: () => getUserSessionMock, ++})); + + describe('CreateUser', () => { +- test('render', () => {}); +- render(, { wrapper: BrowserRouter }); +- screen.getByLabelText('First name'); +- screen.getByLabelText('Last name'); ++ it('displays proper elements', () => { ++ render(, { wrapper: BrowserRouter }); ++ expect(screen.getByTestId('first-name')).toBeInTheDocument(); ++ expect(screen.getByTestId('last-name')).toBeInTheDocument(); ++ }); ++ ++ it('routes to create-account when valid user not found', () => { ++ jest.resetModules(); ++ const invalidUser = { state: { isValid: false } as AccountStateType, dispatch: jest.fn() }; ++ render( ++ ++ ++ ++ ++ ++ ); ++ ++ expect(mockNavigate).toHaveBeenCalledWith('/create-account'); ++ }); + }); +diff --git a/app/frontend/routes/signup/deposit/deposit.test.tsx b/app/frontend/routes/signup/deposit/deposit.test.tsx +new file mode 100644 +index 0000000..75805b5 +--- /dev/null ++++ b/app/frontend/routes/signup/deposit/deposit.test.tsx +@@ -0,0 +1,42 @@ ++import { describe } from '@jest/globals'; ++import { render } from '@testing-library/react'; ++import { screen } from '@testing-library/dom'; ++import React from 'react'; ++import { BrowserRouter } from 'react-router-dom'; ++import { AccountContext } from 'app/frontend/providers/AccountProvider'; ++import { AccountStateType } from 'app/frontend/providers/AccountProvider/types'; ++import { Deposit } from './deposit'; ++import '@testing-library/jest-dom'; ++ ++global.fetch = jest.fn(); ++const getUserSessionMock = jest.fn(); ++const mockNavigate = jest.fn(); ++jest.mock('react-router-dom', () => ({ ++ ...jest.requireActual('react-router-dom'), ++ useNavigate: () => mockNavigate, ++})); ++jest.mock('app/frontend/get-user', () => ({ ++ getUserSession: () => getUserSessionMock, ++})); ++ ++describe('Deposit', () => { ++ it('displays proper elements', () => { ++ render(, { wrapper: BrowserRouter }); ++ expect(screen.getByText('Deposit funds')).toBeInTheDocument(); ++ expect(screen.getByRole('link', { name: 'Start over' })).toBeInTheDocument(); ++ }); ++ ++ it('routes to create-account when valid user not found', () => { ++ jest.resetModules(); ++ const invalidUser = { state: { isValid: false } as AccountStateType, dispatch: jest.fn() }; ++ render( ++ ++ ++ ++ ++ ++ ); ++ ++ expect(mockNavigate).toHaveBeenCalledWith('/create-account'); ++ }); ++}); +diff --git a/app/frontend/routes/signup/joint-access/joint-access.test.tsx b/app/frontend/routes/signup/joint-access/joint-access.test.tsx +new file mode 100644 +index 0000000..8c085e0 +--- /dev/null ++++ b/app/frontend/routes/signup/joint-access/joint-access.test.tsx +@@ -0,0 +1,45 @@ ++import { describe } from '@jest/globals'; ++import { render } from '@testing-library/react'; ++import { screen } from '@testing-library/dom'; ++import React from 'react'; ++import { BrowserRouter } from 'react-router-dom'; ++import { AccountContext } from 'app/frontend/providers/AccountProvider'; ++import { AccountStateType } from 'app/frontend/providers/AccountProvider/types'; ++import { JointAccess } from './joint-access'; ++import '@testing-library/jest-dom'; ++ ++global.fetch = jest.fn(); ++const getUserSessionMock = jest.fn(); ++const mockNavigate = jest.fn(); ++jest.mock('react-router-dom', () => ({ ++ ...jest.requireActual('react-router-dom'), ++ useNavigate: () => mockNavigate, ++})); ++jest.mock('app/frontend/get-user', () => ({ ++ getUserSession: () => getUserSessionMock, ++})); ++ ++describe('JointAccess', () => { ++ it('displays proper elements', () => { ++ render(, { wrapper: BrowserRouter }); ++ expect(screen.getByText('Will this be a joint account?')).toBeInTheDocument(); ++ expect(screen.getByTestId('first-name-joint-access')).toBeInTheDocument(); ++ expect(screen.getByTestId('last-name-joint-access')).toBeInTheDocument(); ++ expect(screen.getByTestId('email-joint-access')).toBeInTheDocument(); ++ expect(screen.getByRole('link', { name: 'Continue' })).toBeInTheDocument(); ++ }); ++ ++ it('routes to create-account when valid user not found', () => { ++ jest.resetModules(); ++ const invalidUser = { state: { isValid: false } as AccountStateType, dispatch: jest.fn() }; ++ render( ++ ++ ++ ++ ++ ++ ); ++ ++ expect(mockNavigate).toHaveBeenCalledWith('/create-account'); ++ }); ++}); +diff --git a/app/frontend/routes/signup/stock-restrictions/stock-restrictions.test.tsx b/app/frontend/routes/signup/stock-restrictions/stock-restrictions.test.tsx +new file mode 100644 +index 0000000..6050c42 +--- /dev/null ++++ b/app/frontend/routes/signup/stock-restrictions/stock-restrictions.test.tsx +@@ -0,0 +1,42 @@ ++import { describe } from '@jest/globals'; ++import { render } from '@testing-library/react'; ++import { screen } from '@testing-library/dom'; ++import React from 'react'; ++import { BrowserRouter } from 'react-router-dom'; ++import { AccountContext } from 'app/frontend/providers/AccountProvider'; ++import { AccountStateType } from 'app/frontend/providers/AccountProvider/types'; ++import '@testing-library/jest-dom'; ++import { StockRestrictions } from './stock-restrictions'; ++ ++global.fetch = jest.fn(); ++const getUserSessionMock = jest.fn(); ++const mockNavigate = jest.fn(); ++jest.mock('react-router-dom', () => ({ ++ ...jest.requireActual('react-router-dom'), ++ useNavigate: () => mockNavigate, ++})); ++jest.mock('app/frontend/get-user', () => ({ ++ getUserSession: () => getUserSessionMock, ++})); ++ ++describe('StockRestrictions', () => { ++ it('displays proper elements', () => { ++ render(, { wrapper: BrowserRouter }); ++ expect(screen.getByTestId('stock-symbol')).toBeInTheDocument(); ++ expect(screen.getByRole('link', { name: 'Continue' })).toBeInTheDocument(); ++ }); ++ ++ it('routes to create-account when valid user not found', () => { ++ jest.resetModules(); ++ const invalidUser = { state: { isValid: false } as AccountStateType, dispatch: jest.fn() }; ++ render( ++ ++ ++ ++ ++ ++ ); ++ ++ expect(mockNavigate).toHaveBeenCalledWith('/create-account'); ++ }); ++}); +diff --git a/app/frontend/routes/signup/stock-restrictions/stock-restrictions.tsx b/app/frontend/routes/signup/stock-restrictions/stock-restrictions.tsx +index bc70e79..c6c3091 100644 +--- a/app/frontend/routes/signup/stock-restrictions/stock-restrictions.tsx ++++ b/app/frontend/routes/signup/stock-restrictions/stock-restrictions.tsx +@@ -25,7 +25,7 @@ export function StockRestrictions() { + > + {/*
  • style UI to look like given mock, make sure the typeahead is realtime feeling search
  • */} +
    +- ++ + +
    + + +From 65d7917cc2a41c68672552bd150897c400af4d85 Mon Sep 17 00:00:00 2001 +From: Genevieve Capolongo +Date: Fri, 17 Oct 2025 12:46:46 -0400 +Subject: [PATCH 19/22] adding proper cookie management + +--- + app/controllers/session_controller.rb | 12 +++++++++++ + app/frontend/cookies/helpers.ts | 21 +++++++++++++++++++ + .../routes/create-account/create-account.tsx | 3 ++- + .../account-selection/account-selection.tsx | 14 ++++++++----- + .../signup/create-user/create-user.test.tsx | 1 + + .../routes/signup/create-user/create-user.tsx | 12 +++++++++-- + .../routes/signup/deposit/deposit.tsx | 12 +++++++++-- + .../signup/joint-access/joint-access.tsx | 12 +++++++++-- + .../stock-restrictions/stock-restrictions.tsx | 20 ++++++++++++++++-- + .../20251016164647_add_sessions_table.rb | 12 +++++++++++ + 10 files changed, 105 insertions(+), 14 deletions(-) + create mode 100644 app/controllers/session_controller.rb + create mode 100644 app/frontend/cookies/helpers.ts + create mode 100644 db/migrate/20251016164647_add_sessions_table.rb + +diff --git a/app/controllers/session_controller.rb b/app/controllers/session_controller.rb +new file mode 100644 +index 0000000..5dd52eb +--- /dev/null ++++ b/app/controllers/session_controller.rb +@@ -0,0 +1,12 @@ ++class SessionsController < ApplicationController ++ def create ++ user = User.find_by(username: params[:username]) ++ session[:session_id] = user.id ++ redirect_to user_path(user) ++ end ++ ++ def destroy ++ reset_session ++ redirect_to root_path, notice: "You have been logged out." ++ end ++end +\ No newline at end of file +diff --git a/app/frontend/cookies/helpers.ts b/app/frontend/cookies/helpers.ts +new file mode 100644 +index 0000000..2f54d48 +--- /dev/null ++++ b/app/frontend/cookies/helpers.ts +@@ -0,0 +1,21 @@ ++// Setting a cookie ++export const setCookie = (name: string, value: string): void => { ++ document.cookie = name + '=' + (value || '') + '; Path=/;'; ++}; ++ ++// Getting a cookie ++export const getCookie = (name: string): string | undefined => { ++ const nameEQ = name + '='; ++ const ca = document.cookie.split(';'); ++ for (let i = 0; i < ca.length; i++) { ++ let c = ca[i]; ++ while (c.charAt(0) === ' ') c = c.substring(1, c.length); ++ if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length); ++ } ++ return undefined; ++}; ++ ++// Deleting a cookie ++export const eraseCookie = (name: string): void => { ++ document.cookie = name + '=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;'; ++}; +diff --git a/app/frontend/routes/create-account/create-account.tsx b/app/frontend/routes/create-account/create-account.tsx +index dac0f6b..be2d5f4 100644 +--- a/app/frontend/routes/create-account/create-account.tsx ++++ b/app/frontend/routes/create-account/create-account.tsx +@@ -12,6 +12,7 @@ import { Alert } from 'app/frontend/reusable-components/alert'; + import { AlertContext } from 'app/frontend/providers/AlertProvider'; + import { AlertActionTypes } from 'app/frontend/providers/AlertProvider/types'; + import { SERVER_ERROR_MESSAGE } from 'app/frontend/constants'; ++import { setCookie } from 'app/frontend/cookies/helpers'; + + export function CreateAccount() { + const [username, setUsername] = React.useState(''); +@@ -46,7 +47,7 @@ export function CreateAccount() { + body: JSON.stringify({ username, password }), + }); + const data = await res.json(); +- ++ setCookie('session_token', username); + console.log('response from backend:', data); + + if (data?.logged_in) { +diff --git a/app/frontend/routes/signup/account-selection/account-selection.tsx b/app/frontend/routes/signup/account-selection/account-selection.tsx +index 779b4ec..a246071 100644 +--- a/app/frontend/routes/signup/account-selection/account-selection.tsx ++++ b/app/frontend/routes/signup/account-selection/account-selection.tsx +@@ -1,6 +1,7 @@ + import { SIGN_UP_ERROR_MESSAGE } from 'app/frontend/constants'; +-import { getUserSession } from 'app/frontend/get-user'; ++import { getCookie } from 'app/frontend/cookies/helpers'; + import { AccountContext } from 'app/frontend/providers/AccountProvider'; ++import { AccountActionTypes } from 'app/frontend/providers/AccountProvider/types'; + import { AlertContext } from 'app/frontend/providers/AlertProvider'; + import { AlertActionTypes } from 'app/frontend/providers/AlertProvider/types'; + import { Card } from 'app/frontend/reusable-components/card/card'; +@@ -13,11 +14,11 @@ export const AccountSelection = () => { + const user = useContext(AccountContext); + const alerts = useContext(AlertContext); + const navigate = useNavigate(); ++ const sessionToken = getCookie('session_token'); ++ const shouldRoute = !sessionToken && (!user?.state.isValid || !user); + + useEffect(() => { +- // TODO: this is returning false +- getUserSession(); +- if (user && user.state && !user.state.isValid) { ++ if (shouldRoute) { + console.log('user is not valid, redirecting to create-account'); + navigate('/create-account'); + alerts?.dispatch({ +@@ -25,7 +26,10 @@ export const AccountSelection = () => { + payload: { alert: { message: SIGN_UP_ERROR_MESSAGE } }, + }); + } +- }, [user, navigate]); ++ if (!user?.state.username) { ++ user?.dispatch({ type: AccountActionTypes.SET_USERNAME, payload: { username: sessionToken || 'Guest' } }); ++ } ++ }, [user, navigate, alerts]); + + return ( + +diff --git a/app/frontend/routes/signup/create-user/create-user.test.tsx b/app/frontend/routes/signup/create-user/create-user.test.tsx +index 5889b7c..6ea0aa1 100644 +--- a/app/frontend/routes/signup/create-user/create-user.test.tsx ++++ b/app/frontend/routes/signup/create-user/create-user.test.tsx +@@ -6,6 +6,7 @@ import { BrowserRouter } from 'react-router-dom'; + import { CreateUser } from './create-user'; + import { AccountContext } from 'app/frontend/providers/AccountProvider'; + import { AccountStateType } from 'app/frontend/providers/AccountProvider/types'; ++import '@testing-library/jest-dom'; + + global.fetch = jest.fn(); + const getUserSessionMock = jest.fn(); +diff --git a/app/frontend/routes/signup/create-user/create-user.tsx b/app/frontend/routes/signup/create-user/create-user.tsx +index f194253..9bbcf28 100644 +--- a/app/frontend/routes/signup/create-user/create-user.tsx ++++ b/app/frontend/routes/signup/create-user/create-user.tsx +@@ -8,21 +8,29 @@ import { useNavigate } from 'react-router-dom'; + import { SIGN_UP_ERROR_MESSAGE } from 'app/frontend/constants.ts'; + import { AlertContext } from 'app/frontend/providers/AlertProvider/index.tsx'; + import { AlertActionTypes } from 'app/frontend/providers/AlertProvider/types.ts'; ++import { getCookie } from 'app/frontend/cookies/helpers.ts'; ++import { AccountActionTypes } from 'app/frontend/providers/AccountProvider/types.ts'; + + export function CreateUser() { + const user = useContext(AccountContext); + const navigate = useNavigate(); + const alerts = useContext(AlertContext); ++ const sessionToken = getCookie('session_token'); ++ const shouldRoute = !sessionToken && (!user?.state.isValid || !user); + + useEffect(() => { +- if (user && user.state && !user.state.isValid) { ++ if (shouldRoute) { ++ console.log('user is not valid, redirecting to create-account'); + navigate('/create-account'); + alerts?.dispatch({ + type: AlertActionTypes.SET_ALERT, + payload: { alert: { message: SIGN_UP_ERROR_MESSAGE } }, + }); + } +- }, [user, navigate]); ++ if (!user?.state.username) { ++ user?.dispatch({ type: AccountActionTypes.SET_USERNAME, payload: { username: sessionToken || 'Guest' } }); ++ } ++ }, [user, navigate, alerts]); + + return ( + +diff --git a/app/frontend/routes/signup/deposit/deposit.tsx b/app/frontend/routes/signup/deposit/deposit.tsx +index 36637d8..6e620a0 100644 +--- a/app/frontend/routes/signup/deposit/deposit.tsx ++++ b/app/frontend/routes/signup/deposit/deposit.tsx +@@ -8,21 +8,29 @@ import { useNavigate } from 'react-router-dom'; + import { SIGN_UP_ERROR_MESSAGE } from 'app/frontend/constants.ts'; + import { AlertContext } from 'app/frontend/providers/AlertProvider/index.tsx'; + import { AlertActionTypes } from 'app/frontend/providers/AlertProvider/types.ts'; ++import { getCookie } from 'app/frontend/cookies/helpers.ts'; ++import { AccountActionTypes } from 'app/frontend/providers/AccountProvider/types.ts'; + + export function Deposit() { + const user = useContext(AccountContext); + const alerts = useContext(AlertContext); + const navigate = useNavigate(); ++ const sessionToken = getCookie('session_token'); ++ const shouldRoute = !sessionToken && (!user?.state.isValid || !user); + + useEffect(() => { +- if (user && user.state && !user.state.isValid) { ++ if (shouldRoute) { ++ console.log('user is not valid, redirecting to create-account'); + navigate('/create-account'); + alerts?.dispatch({ + type: AlertActionTypes.SET_ALERT, + payload: { alert: { message: SIGN_UP_ERROR_MESSAGE } }, + }); + } +- }, [user, navigate]); ++ if (!user?.state.username) { ++ user?.dispatch({ type: AccountActionTypes.SET_USERNAME, payload: { username: sessionToken || 'Guest' } }); ++ } ++ }, [user, navigate, alerts]); + + return ( + +diff --git a/app/frontend/routes/signup/joint-access/joint-access.tsx b/app/frontend/routes/signup/joint-access/joint-access.tsx +index 0c8bf58..918a577 100644 +--- a/app/frontend/routes/signup/joint-access/joint-access.tsx ++++ b/app/frontend/routes/signup/joint-access/joint-access.tsx +@@ -8,21 +8,29 @@ import { useNavigate } from 'react-router-dom'; + import { SIGN_UP_ERROR_MESSAGE } from 'app/frontend/constants.ts'; + import { AlertContext } from 'app/frontend/providers/AlertProvider/index.tsx'; + import { AlertActionTypes } from 'app/frontend/providers/AlertProvider/types.ts'; ++import { getCookie } from 'app/frontend/cookies/helpers.ts'; ++import { AccountActionTypes } from 'app/frontend/providers/AccountProvider/types.ts'; + + export function JointAccess() { + const user = useContext(AccountContext); + const alerts = useContext(AlertContext); + const navigate = useNavigate(); ++ const sessionToken = getCookie('session_token'); ++ const shouldRoute = !sessionToken && (!user?.state.isValid || !user); + + useEffect(() => { +- if (user && user.state && !user.state.isValid) { ++ if (shouldRoute) { ++ console.log('user is not valid, redirecting to create-account'); + navigate('/create-account'); + alerts?.dispatch({ + type: AlertActionTypes.SET_ALERT, + payload: { alert: { message: SIGN_UP_ERROR_MESSAGE } }, + }); + } +- }, [user, navigate]); ++ if (!user?.state.username) { ++ user?.dispatch({ type: AccountActionTypes.SET_USERNAME, payload: { username: sessionToken || 'Guest' } }); ++ } ++ }, [user, navigate, alerts]); + + return ( + +diff --git a/app/frontend/routes/signup/stock-restrictions/stock-restrictions.tsx b/app/frontend/routes/signup/stock-restrictions/stock-restrictions.tsx +index c6c3091..dc1f29a 100644 +--- a/app/frontend/routes/signup/stock-restrictions/stock-restrictions.tsx ++++ b/app/frontend/routes/signup/stock-restrictions/stock-restrictions.tsx +@@ -5,16 +5,32 @@ import { FlowLayout } from '../../../reusable-components/flow-layout/flow-layout + import { Input } from '../../../reusable-components/input/input.tsx'; + import { AccountContext } from 'app/frontend/providers/AccountProvider/index.tsx'; + import { useNavigate } from 'react-router-dom'; ++import { SIGN_UP_ERROR_MESSAGE } from 'app/frontend/constants.ts'; ++import { getCookie } from 'app/frontend/cookies/helpers.ts'; ++import { AccountActionTypes } from 'app/frontend/providers/AccountProvider/types.ts'; ++import { AlertContext } from 'app/frontend/providers/AlertProvider/index.tsx'; ++import { AlertActionTypes } from 'app/frontend/providers/AlertProvider/types.ts'; + + export function StockRestrictions() { + const user = useContext(AccountContext); ++ const alerts = useContext(AlertContext); + const navigate = useNavigate(); ++ const sessionToken = getCookie('session_token'); ++ const shouldRoute = !sessionToken && (!user?.state.isValid || !user); + + useEffect(() => { +- if (user && user.state && !user.state.isValid) { ++ if (shouldRoute) { ++ console.log('user is not valid, redirecting to create-account'); + navigate('/create-account'); ++ alerts?.dispatch({ ++ type: AlertActionTypes.SET_ALERT, ++ payload: { alert: { message: SIGN_UP_ERROR_MESSAGE } }, ++ }); + } +- }, [user, navigate]); ++ if (!user?.state.username) { ++ user?.dispatch({ type: AccountActionTypes.SET_USERNAME, payload: { username: sessionToken || 'Guest' } }); ++ } ++ }, [user, navigate, alerts]); + + return ( + +diff --git a/db/migrate/20251016164647_add_sessions_table.rb b/db/migrate/20251016164647_add_sessions_table.rb +new file mode 100644 +index 0000000..0f48db9 +--- /dev/null ++++ b/db/migrate/20251016164647_add_sessions_table.rb +@@ -0,0 +1,12 @@ ++class AddSessionsTable < ActiveRecord::Migration[7.0] ++ def change ++ create_table :sessions do |t| ++ t.string :session_id, :null => false ++ t.text :data ++ t.timestamps ++ end ++ ++ add_index :sessions, :session_id, :unique => true ++ add_index :sessions, :updated_at ++ end ++end + +From fd20b4920705f8cf40a1a22e67a25cb0d3095bc7 Mon Sep 17 00:00:00 2001 +From: Genevieve Capolongo +Date: Fri, 17 Oct 2025 12:59:14 -0400 +Subject: [PATCH 20/22] clean up and log out flow + +--- + app/controllers/api_controller.rb | 19 ------------------- + app/frontend/get-user.ts | 12 ------------ + .../flow-layout/flow-layout.tsx | 8 ++++---- + .../account-selection.test.tsx | 4 ---- + .../signup/create-user/create-user.test.tsx | 4 ---- + .../routes/signup/deposit/deposit.test.tsx | 4 ---- + .../signup/joint-access/joint-access.test.tsx | 4 ---- + .../stock-restrictions.test.tsx | 4 ---- + config/routes.rb | 1 - + 9 files changed, 4 insertions(+), 56 deletions(-) + delete mode 100644 app/frontend/get-user.ts + +diff --git a/app/controllers/api_controller.rb b/app/controllers/api_controller.rb +index d6f351e..1067fd5 100644 +--- a/app/controllers/api_controller.rb ++++ b/app/controllers/api_controller.rb +@@ -10,11 +10,7 @@ def validate_account + username_result = User.validate_username(username) + password_result = User.validate_password(password) + +- # This is created the user on the table +- user = User.create(username: username, password: password) +- + if user +- session[:user_id] = user.id + render json: { + logged_in: true, + status: :created, +@@ -28,19 +24,4 @@ def validate_account + } + end + end +- +- def get_account +- if session[:user_id] +- user = User.find(session[:user_id]) +- render json: { +- logged_in: true, +- user: user +- } +- else +- render json: { +- logged_in: false, +- message: 'No user logged in' +- } +- end +- end + end +diff --git a/app/frontend/get-user.ts b/app/frontend/get-user.ts +deleted file mode 100644 +index 3de1a61..0000000 +--- a/app/frontend/get-user.ts ++++ /dev/null +@@ -1,12 +0,0 @@ +-export const getUserSession = async () => { +- const res = await fetch('/api/get_account', { +- method: 'GET', +- credentials: 'include', +- headers: { 'Content-Type': 'application/json' }, +- }); +- +- const data = await res.json(); +- +- console.log('getUserSession response:', data); +- return data; +-}; +diff --git a/app/frontend/reusable-components/flow-layout/flow-layout.tsx b/app/frontend/reusable-components/flow-layout/flow-layout.tsx +index 576371e..77d241a 100644 +--- a/app/frontend/reusable-components/flow-layout/flow-layout.tsx ++++ b/app/frontend/reusable-components/flow-layout/flow-layout.tsx +@@ -4,6 +4,7 @@ import React, { ReactNode, useCallback, useContext } from 'react'; + import { useNavigate } from 'react-router-dom'; + import { Button } from '../button/button'; + import { ButtonVariants } from '../button/types'; ++import { getCookie, eraseCookie } from 'app/frontend/cookies/helpers'; + + interface Props { + children: ReactNode; +@@ -12,13 +13,12 @@ interface Props { + export function FlowLayout({ children }: Props) { + const user = useContext(AccountContext); + const navigate = useNavigate(); +- const isValid = user?.state.isValid; +- +- // TODO: need to add session storage logic for this +- // Test coverage for storage logic ++ const sessionToken = getCookie('session_token'); ++ const isValid = user?.state.isValid || Boolean(sessionToken); + + const handleLogout = useCallback(() => { + user?.dispatch({ type: AccountActionTypes.DELETE_USERNAME }); ++ eraseCookie('session_token'); + navigate('/create-account'); + }, [user, navigate]); + +diff --git a/app/frontend/routes/signup/account-selection/account-selection.test.tsx b/app/frontend/routes/signup/account-selection/account-selection.test.tsx +index 063d6a2..62b2955 100644 +--- a/app/frontend/routes/signup/account-selection/account-selection.test.tsx ++++ b/app/frontend/routes/signup/account-selection/account-selection.test.tsx +@@ -8,15 +8,11 @@ import { AccountContext } from 'app/frontend/providers/AccountProvider'; + import { AccountStateType } from 'app/frontend/providers/AccountProvider/types'; + + global.fetch = jest.fn(); +-const getUserSessionMock = jest.fn(); + const mockNavigate = jest.fn(); + jest.mock('react-router-dom', () => ({ + ...jest.requireActual('react-router-dom'), + useNavigate: () => mockNavigate, + })); +-jest.mock('app/frontend/get-user', () => ({ +- getUserSession: () => getUserSessionMock, +-})); + + describe('AccountSelection', () => { + it('displays proper elements', () => { +diff --git a/app/frontend/routes/signup/create-user/create-user.test.tsx b/app/frontend/routes/signup/create-user/create-user.test.tsx +index 6ea0aa1..a63e61b 100644 +--- a/app/frontend/routes/signup/create-user/create-user.test.tsx ++++ b/app/frontend/routes/signup/create-user/create-user.test.tsx +@@ -9,15 +9,11 @@ import { AccountStateType } from 'app/frontend/providers/AccountProvider/types'; + import '@testing-library/jest-dom'; + + global.fetch = jest.fn(); +-const getUserSessionMock = jest.fn(); + const mockNavigate = jest.fn(); + jest.mock('react-router-dom', () => ({ + ...jest.requireActual('react-router-dom'), + useNavigate: () => mockNavigate, + })); +-jest.mock('app/frontend/get-user', () => ({ +- getUserSession: () => getUserSessionMock, +-})); + + describe('CreateUser', () => { + it('displays proper elements', () => { +diff --git a/app/frontend/routes/signup/deposit/deposit.test.tsx b/app/frontend/routes/signup/deposit/deposit.test.tsx +index 75805b5..449ba0c 100644 +--- a/app/frontend/routes/signup/deposit/deposit.test.tsx ++++ b/app/frontend/routes/signup/deposit/deposit.test.tsx +@@ -9,15 +9,11 @@ import { Deposit } from './deposit'; + import '@testing-library/jest-dom'; + + global.fetch = jest.fn(); +-const getUserSessionMock = jest.fn(); + const mockNavigate = jest.fn(); + jest.mock('react-router-dom', () => ({ + ...jest.requireActual('react-router-dom'), + useNavigate: () => mockNavigate, + })); +-jest.mock('app/frontend/get-user', () => ({ +- getUserSession: () => getUserSessionMock, +-})); + + describe('Deposit', () => { + it('displays proper elements', () => { +diff --git a/app/frontend/routes/signup/joint-access/joint-access.test.tsx b/app/frontend/routes/signup/joint-access/joint-access.test.tsx +index 8c085e0..ddeb095 100644 +--- a/app/frontend/routes/signup/joint-access/joint-access.test.tsx ++++ b/app/frontend/routes/signup/joint-access/joint-access.test.tsx +@@ -9,15 +9,11 @@ import { JointAccess } from './joint-access'; + import '@testing-library/jest-dom'; + + global.fetch = jest.fn(); +-const getUserSessionMock = jest.fn(); + const mockNavigate = jest.fn(); + jest.mock('react-router-dom', () => ({ + ...jest.requireActual('react-router-dom'), + useNavigate: () => mockNavigate, + })); +-jest.mock('app/frontend/get-user', () => ({ +- getUserSession: () => getUserSessionMock, +-})); + + describe('JointAccess', () => { + it('displays proper elements', () => { +diff --git a/app/frontend/routes/signup/stock-restrictions/stock-restrictions.test.tsx b/app/frontend/routes/signup/stock-restrictions/stock-restrictions.test.tsx +index 6050c42..8452a62 100644 +--- a/app/frontend/routes/signup/stock-restrictions/stock-restrictions.test.tsx ++++ b/app/frontend/routes/signup/stock-restrictions/stock-restrictions.test.tsx +@@ -9,15 +9,11 @@ import '@testing-library/jest-dom'; + import { StockRestrictions } from './stock-restrictions'; + + global.fetch = jest.fn(); +-const getUserSessionMock = jest.fn(); + const mockNavigate = jest.fn(); + jest.mock('react-router-dom', () => ({ + ...jest.requireActual('react-router-dom'), + useNavigate: () => mockNavigate, + })); +-jest.mock('app/frontend/get-user', () => ({ +- getUserSession: () => getUserSessionMock, +-})); + + describe('StockRestrictions', () => { + it('displays proper elements', () => { +diff --git a/config/routes.rb b/config/routes.rb +index c1fe69e..4095a9b 100644 +--- a/config/routes.rb ++++ b/config/routes.rb +@@ -7,5 +7,4 @@ + get 'create-account', to: 'application#render_react', as: :createAccount + + post 'api/validate_account', to: 'api#validate_account' +- get 'api/get_account', to: 'api#get_account' + end + +From 9bbe399779b3c2761fa64a817db6a68445c347b6 Mon Sep 17 00:00:00 2001 +From: Genevieve Capolongo +Date: Fri, 17 Oct 2025 13:51:57 -0400 +Subject: [PATCH 21/22] clean up + +--- + app/controllers/api_controller.rb | 17 +- + app/controllers/session_controller.rb | 12 - + .../routes/create-account/create-account.tsx | 2 +- + config/initializers/session_store.rb | 1 - + db/schema.rb | 11 +- + yarn.lock | 744 ++++++++++-------- + 6 files changed, 433 insertions(+), 354 deletions(-) + delete mode 100644 app/controllers/session_controller.rb + delete mode 100644 config/initializers/session_store.rb + +diff --git a/app/controllers/api_controller.rb b/app/controllers/api_controller.rb +index 1067fd5..3fa686d 100644 +--- a/app/controllers/api_controller.rb ++++ b/app/controllers/api_controller.rb +@@ -10,18 +10,9 @@ def validate_account + username_result = User.validate_username(username) + password_result = User.validate_password(password) + +- if user +- render json: { +- logged_in: true, +- status: :created, +- user: user, +- } +- # redirect_to signup_account_selection_path +- else +- render json: { +- username: username_result, +- password: password_result +- } +- end ++ render json: { ++ username: username_result, ++ password: password_result ++ } + end + end +diff --git a/app/controllers/session_controller.rb b/app/controllers/session_controller.rb +deleted file mode 100644 +index 5dd52eb..0000000 +--- a/app/controllers/session_controller.rb ++++ /dev/null +@@ -1,12 +0,0 @@ +-class SessionsController < ApplicationController +- def create +- user = User.find_by(username: params[:username]) +- session[:session_id] = user.id +- redirect_to user_path(user) +- end +- +- def destroy +- reset_session +- redirect_to root_path, notice: "You have been logged out." +- end +-end +\ No newline at end of file +diff --git a/app/frontend/routes/create-account/create-account.tsx b/app/frontend/routes/create-account/create-account.tsx +index be2d5f4..3c14a56 100644 +--- a/app/frontend/routes/create-account/create-account.tsx ++++ b/app/frontend/routes/create-account/create-account.tsx +@@ -50,7 +50,7 @@ export function CreateAccount() { + setCookie('session_token', username); + console.log('response from backend:', data); + +- if (data?.logged_in) { ++ if (data?.username === true && data?.password === true) { + navigate('/signup/account-selection'); + + user?.dispatch({ type: AccountActionTypes.SET_USERNAME, payload: { username } }); +diff --git a/config/initializers/session_store.rb b/config/initializers/session_store.rb +deleted file mode 100644 +index e2d6958..0000000 +--- a/config/initializers/session_store.rb ++++ /dev/null +@@ -1 +0,0 @@ +-Rails.application.config.session_store :cookie_store, key: '_proj_session' +\ No newline at end of file +diff --git a/db/schema.rb b/db/schema.rb +index 64994fe..75cc2ae 100644 +--- a/db/schema.rb ++++ b/db/schema.rb +@@ -10,7 +10,16 @@ + # + # It's strongly recommended that you check this file into your version control system. + +-ActiveRecord::Schema[7.0].define(version: 2023_09_18_002530) do ++ActiveRecord::Schema[7.0].define(version: 2025_10_16_164647) do ++ create_table "sessions", force: :cascade do |t| ++ t.string "session_id", null: false ++ t.text "data" ++ t.datetime "created_at", null: false ++ t.datetime "updated_at", null: false ++ t.index ["session_id"], name: "index_sessions_on_session_id", unique: true ++ t.index ["updated_at"], name: "index_sessions_on_updated_at" ++ end ++ + create_table "users", force: :cascade do |t| + t.string "username" + t.string "password" +diff --git a/yarn.lock b/yarn.lock +index e08dbd0..133f9f0 100644 +--- a/yarn.lock ++++ b/yarn.lock +@@ -31,7 +31,7 @@ + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz" + integrity sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw== + +-"@babel/core@^7.0.0", "@babel/core@^7.0.0 || ^8.0.0-0", "@babel/core@^7.0.0-0", "@babel/core@^7.11.0 || ^8.0.0-0", "@babel/core@^7.11.0 || ^8.0.0-beta.1", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.22.9", "@babel/core@^7.23.9", "@babel/core@^7.27.4", "@babel/core@>=7.0.0-beta.0 <8": ++"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.22.9", "@babel/core@^7.23.9", "@babel/core@^7.27.4": + version "7.28.4" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz" + integrity sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA== +@@ -328,11 +328,116 @@ + dependencies: + tslib "^2.4.0" + ++"@esbuild/android-arm64@0.18.20": ++ version "0.18.20" ++ resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622" ++ integrity sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ== ++ ++"@esbuild/android-arm@0.18.20": ++ version "0.18.20" ++ resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz#fedb265bc3a589c84cc11f810804f234947c3682" ++ integrity sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw== ++ ++"@esbuild/android-x64@0.18.20": ++ version "0.18.20" ++ resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2" ++ integrity sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg== ++ + "@esbuild/darwin-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz" + integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA== + ++"@esbuild/darwin-x64@0.18.20": ++ version "0.18.20" ++ resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d" ++ integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ== ++ ++"@esbuild/freebsd-arm64@0.18.20": ++ version "0.18.20" ++ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54" ++ integrity sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw== ++ ++"@esbuild/freebsd-x64@0.18.20": ++ version "0.18.20" ++ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e" ++ integrity sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ== ++ ++"@esbuild/linux-arm64@0.18.20": ++ version "0.18.20" ++ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0" ++ integrity sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA== ++ ++"@esbuild/linux-arm@0.18.20": ++ version "0.18.20" ++ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0" ++ integrity sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg== ++ ++"@esbuild/linux-ia32@0.18.20": ++ version "0.18.20" ++ resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7" ++ integrity sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA== ++ ++"@esbuild/linux-loong64@0.18.20": ++ version "0.18.20" ++ resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz#e6fccb7aac178dd2ffb9860465ac89d7f23b977d" ++ integrity sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg== ++ ++"@esbuild/linux-mips64el@0.18.20": ++ version "0.18.20" ++ resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231" ++ integrity sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ== ++ ++"@esbuild/linux-ppc64@0.18.20": ++ version "0.18.20" ++ resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb" ++ integrity sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA== ++ ++"@esbuild/linux-riscv64@0.18.20": ++ version "0.18.20" ++ resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6" ++ integrity sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A== ++ ++"@esbuild/linux-s390x@0.18.20": ++ version "0.18.20" ++ resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071" ++ integrity sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ== ++ ++"@esbuild/linux-x64@0.18.20": ++ version "0.18.20" ++ resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz#c7690b3417af318a9b6f96df3031a8865176d338" ++ integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w== ++ ++"@esbuild/netbsd-x64@0.18.20": ++ version "0.18.20" ++ resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1" ++ integrity sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A== ++ ++"@esbuild/openbsd-x64@0.18.20": ++ version "0.18.20" ++ resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae" ++ integrity sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg== ++ ++"@esbuild/sunos-x64@0.18.20": ++ version "0.18.20" ++ resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d" ++ integrity sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ== ++ ++"@esbuild/win32-arm64@0.18.20": ++ version "0.18.20" ++ resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9" ++ integrity sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg== ++ ++"@esbuild/win32-ia32@0.18.20": ++ version "0.18.20" ++ resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102" ++ integrity sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g== ++ ++"@esbuild/win32-x64@0.18.20": ++ version "0.18.20" ++ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d" ++ integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ== ++ + "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": + version "4.4.0" + resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" +@@ -463,16 +568,6 @@ + resolved "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz" + integrity sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw== + +-"@jest/environment@^29.7.0": +- version "29.7.0" +- resolved "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz" +- integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== +- dependencies: +- "@jest/fake-timers" "^29.7.0" +- "@jest/types" "^29.6.3" +- "@types/node" "*" +- jest-mock "^29.7.0" +- + "@jest/environment@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz" +@@ -483,12 +578,15 @@ + "@types/node" "*" + jest-mock "30.2.0" + +-"@jest/expect-utils@^29.7.0": ++"@jest/environment@^29.7.0": + version "29.7.0" +- resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz" +- integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== ++ resolved "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz" ++ integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== + dependencies: +- jest-get-type "^29.6.3" ++ "@jest/fake-timers" "^29.7.0" ++ "@jest/types" "^29.6.3" ++ "@types/node" "*" ++ jest-mock "^29.7.0" + + "@jest/expect-utils@30.2.0": + version "30.2.0" +@@ -497,13 +595,12 @@ + dependencies: + "@jest/get-type" "30.1.0" + +-"@jest/expect@^29.7.0": ++"@jest/expect-utils@^29.7.0": + version "29.7.0" +- resolved "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz" +- integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== ++ resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz" ++ integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== + dependencies: +- expect "^29.7.0" +- jest-snapshot "^29.7.0" ++ jest-get-type "^29.6.3" + + "@jest/expect@30.2.0": + version "30.2.0" +@@ -513,17 +610,13 @@ + expect "30.2.0" + jest-snapshot "30.2.0" + +-"@jest/fake-timers@^29.7.0": ++"@jest/expect@^29.7.0": + version "29.7.0" +- resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz" +- integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== ++ resolved "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz" ++ integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== + dependencies: +- "@jest/types" "^29.6.3" +- "@sinonjs/fake-timers" "^10.0.2" +- "@types/node" "*" +- jest-message-util "^29.7.0" +- jest-mock "^29.7.0" +- jest-util "^29.7.0" ++ expect "^29.7.0" ++ jest-snapshot "^29.7.0" + + "@jest/fake-timers@30.2.0": + version "30.2.0" +@@ -537,20 +630,22 @@ + jest-mock "30.2.0" + jest-util "30.2.0" + +-"@jest/get-type@30.1.0": +- version "30.1.0" +- resolved "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz" +- integrity sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA== +- +-"@jest/globals@^29.7.0": ++"@jest/fake-timers@^29.7.0": + version "29.7.0" +- resolved "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz" +- integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== ++ resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz" ++ integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== + dependencies: +- "@jest/environment" "^29.7.0" +- "@jest/expect" "^29.7.0" + "@jest/types" "^29.6.3" ++ "@sinonjs/fake-timers" "^10.0.2" ++ "@types/node" "*" ++ jest-message-util "^29.7.0" + jest-mock "^29.7.0" ++ jest-util "^29.7.0" ++ ++"@jest/get-type@30.1.0": ++ version "30.1.0" ++ resolved "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz" ++ integrity sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA== + + "@jest/globals@30.2.0": + version "30.2.0" +@@ -562,6 +657,16 @@ + "@jest/types" "30.2.0" + jest-mock "30.2.0" + ++"@jest/globals@^29.7.0": ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz" ++ integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== ++ dependencies: ++ "@jest/environment" "^29.7.0" ++ "@jest/expect" "^29.7.0" ++ "@jest/types" "^29.6.3" ++ jest-mock "^29.7.0" ++ + "@jest/pattern@30.0.1": + version "30.0.1" + resolved "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz" +@@ -599,13 +704,6 @@ + string-length "^4.0.2" + v8-to-istanbul "^9.0.1" + +-"@jest/schemas@^29.6.3": +- version "29.6.3" +- resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz" +- integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== +- dependencies: +- "@sinclair/typebox" "^0.27.8" +- + "@jest/schemas@30.0.5": + version "30.0.5" + resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz" +@@ -613,6 +711,13 @@ + dependencies: + "@sinclair/typebox" "^0.34.0" + ++"@jest/schemas@^29.6.3": ++ version "29.6.3" ++ resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz" ++ integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== ++ dependencies: ++ "@sinclair/typebox" "^0.27.8" ++ + "@jest/snapshot-utils@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.2.0.tgz" +@@ -652,27 +757,6 @@ + jest-haste-map "30.2.0" + slash "^3.0.0" + +-"@jest/transform@^29.0.0 || ^30.0.0", "@jest/transform@^29.7.0": +- version "29.7.0" +- resolved "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz" +- integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== +- dependencies: +- "@babel/core" "^7.11.6" +- "@jest/types" "^29.6.3" +- "@jridgewell/trace-mapping" "^0.3.18" +- babel-plugin-istanbul "^6.1.1" +- chalk "^4.0.0" +- convert-source-map "^2.0.0" +- fast-json-stable-stringify "^2.1.0" +- graceful-fs "^4.2.9" +- jest-haste-map "^29.7.0" +- jest-regex-util "^29.6.3" +- jest-util "^29.7.0" +- micromatch "^4.0.4" +- pirates "^4.0.4" +- slash "^3.0.0" +- write-file-atomic "^4.0.2" +- + "@jest/transform@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz" +@@ -694,17 +778,26 @@ + slash "^3.0.0" + write-file-atomic "^5.0.1" + +-"@jest/types@^29.0.0 || ^30.0.0", "@jest/types@^29.6.3": +- version "29.6.3" +- resolved "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz" +- integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== ++"@jest/transform@^29.7.0": ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz" ++ integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== + dependencies: +- "@jest/schemas" "^29.6.3" +- "@types/istanbul-lib-coverage" "^2.0.0" +- "@types/istanbul-reports" "^3.0.0" +- "@types/node" "*" +- "@types/yargs" "^17.0.8" ++ "@babel/core" "^7.11.6" ++ "@jest/types" "^29.6.3" ++ "@jridgewell/trace-mapping" "^0.3.18" ++ babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" ++ convert-source-map "^2.0.0" ++ fast-json-stable-stringify "^2.1.0" ++ graceful-fs "^4.2.9" ++ jest-haste-map "^29.7.0" ++ jest-regex-util "^29.6.3" ++ jest-util "^29.7.0" ++ micromatch "^4.0.4" ++ pirates "^4.0.4" ++ slash "^3.0.0" ++ write-file-atomic "^4.0.2" + + "@jest/types@30.2.0": + version "30.2.0" +@@ -719,6 +812,18 @@ + "@types/yargs" "^17.0.33" + chalk "^4.1.2" + ++"@jest/types@^29.6.3": ++ version "29.6.3" ++ resolved "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz" ++ integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== ++ dependencies: ++ "@jest/schemas" "^29.6.3" ++ "@types/istanbul-lib-coverage" "^2.0.0" ++ "@types/istanbul-reports" "^3.0.0" ++ "@types/node" "*" ++ "@types/yargs" "^17.0.8" ++ chalk "^4.0.0" ++ + "@jridgewell/gen-mapping@^0.3.12", "@jridgewell/gen-mapping@^0.3.13", "@jridgewell/gen-mapping@^0.3.2", "@jridgewell/gen-mapping@^0.3.5": + version "0.3.13" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz" +@@ -770,7 +875,7 @@ + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +-"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": ++"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== +@@ -834,6 +939,51 @@ + resolved "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.85.tgz" + integrity sha512-jTikp+i4nO4Ofe6qGm4I3sFeebD1OvueBCHITux5tQKD6umN1c2z4CRGv6K49NIz/qEpUcdr6Qny6K+3yibVFQ== + ++"@swc/core-darwin-x64@1.3.85": ++ version "1.3.85" ++ resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.3.85.tgz#ce623656ee427876423f07d898fbd7fa767d39bd" ++ integrity sha512-3uHYkjVU+2F+YbVYtq5rH0uCJIztFTALaS3mQEfQUZKXZ5/8jD5titTCRqFKtSlQg0CzaFZgsYsuqwYBmgN0mA== ++ ++"@swc/core-linux-arm-gnueabihf@1.3.85": ++ version "1.3.85" ++ resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.85.tgz#9eb958e3b2c4af0d208dc2d1e71270797605c71b" ++ integrity sha512-ouHzAHsFaEOkRuoTAOI/8n2m8BQAAnb4vr/xbMhhDOmix0lp5eNsW5Iac/EcJ2uG6B3n7P2K8oycj9SWkj+pfw== ++ ++"@swc/core-linux-arm64-gnu@1.3.85": ++ version "1.3.85" ++ resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.85.tgz#2932636d5414709c56b9a670ca804dc317201a41" ++ integrity sha512-/Z1CZOWiO+NqJEh1J20PIxQFHMH43upQJ1l7FJ5Z7+MyuYF8WkeJ7OSovau729pBR+38vvvccEJrMZIztfv7hQ== ++ ++"@swc/core-linux-arm64-musl@1.3.85": ++ version "1.3.85" ++ resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.85.tgz#3b312c57ac0b6861d87a7c0f7ff24e232eb792d5" ++ integrity sha512-gfh7CfKavi076dbMBTzfdawSGcYfZ4+1Q+8aRkSesqepKHcIWIJti8Cf3zB4a6CHNhJe+VN0Gb7DEfumydAm1w== ++ ++"@swc/core-linux-x64-gnu@1.3.85": ++ version "1.3.85" ++ resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.85.tgz#d9fd7ff6ba4e693274604926b82027cb4c2a3306" ++ integrity sha512-lWVqjHKzofb9q1qrBM4dLqO7CIisp08/xMS5Hz9DWex1gTc5F2b6yJO6Ceqwa256GMweJcdP6A5EvEFQAiZ5dg== ++ ++"@swc/core-linux-x64-musl@1.3.85": ++ version "1.3.85" ++ resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.85.tgz#0a80efac999fb125131385a8937227819549939f" ++ integrity sha512-EPJmlfqC05TUetnlErxNRyIp7Nc3B2w9abET6oQ/EgldeAeQnZ3M6svMViET/c2QSomgrU3rdP+Qcozkt62/4A== ++ ++"@swc/core-win32-arm64-msvc@1.3.85": ++ version "1.3.85" ++ resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.85.tgz#9808ee0d35eeb315efa7b73edcca80001451c9f3" ++ integrity sha512-ibckJDZw8kNosciMexwk0z75ZyUhwtiFMV9rSBpup0opa7NNCUCoERCJ1e9LRyMdhsVUoLpZg/KZiHCdTw96hQ== ++ ++"@swc/core-win32-ia32-msvc@1.3.85": ++ version "1.3.85" ++ resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.85.tgz#9b85ba050f333199e88e54ba0dd7b72302af64be" ++ integrity sha512-hY4MpHGUVQHL1T2kgRXOigDho4DTIpVPYzJ4uyy8VQRbS7GzN5XtvdGP/fA4zp8+2BQjcig+6J7Y92SY15ouNQ== ++ ++"@swc/core-win32-x64-msvc@1.3.85": ++ version "1.3.85" ++ resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.85.tgz#5c7f3f366804b512cf26e1731d8714f0409f1204" ++ integrity sha512-ktxWOMFJ0iqKn6WUHtXqi4CS7xkyHmrRtjllGRuGqxmLmDX/HSOfuQ55Tm1KXKk5oHLacJkUbOSF2kBrpZ8dpg== ++ + "@swc/core@^1.3.61": + version "1.3.85" + resolved "https://registry.npmjs.org/@swc/core/-/core-1.3.85.tgz" +@@ -857,7 +1007,7 @@ + resolved "https://registry.npmjs.org/@swc/types/-/types-0.1.4.tgz" + integrity sha512-z/G02d+59gyyUb7KYhKi9jOhicek6QD2oMaotUyG+lUkybpXoV49dY9bj7Ah5Q+y7knK2jU67UTX9FyfGzaxQg== + +-"@testing-library/dom@^10.0.0", "@testing-library/dom@^10.4.1": ++"@testing-library/dom@^10.4.1": + version "10.4.1" + resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz" + integrity sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg== +@@ -988,7 +1138,7 @@ + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz" + integrity sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ== + +-"@types/node@*", "@types/node@>= 14", "@types/node@18.17.17": ++"@types/node@*", "@types/node@18.17.17": + version "18.17.17" + resolved "https://registry.npmjs.org/@types/node/-/node-18.17.17.tgz" + integrity sha512-cOxcXsQ2sxiwkykdJqvyFS+MLQPLvIdwh5l6gNg8qF6s+C7XSkEWOZjK+XhUZd+mYvHV/180g2cnCcIl4l06Pw== +@@ -998,14 +1148,14 @@ + resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz" + integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== + +-"@types/react-dom@^18.0.0 || ^19.0.0", "@types/react-dom@18.2.7": ++"@types/react-dom@18.2.7": + version "18.2.7" + resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.7.tgz" + integrity sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA== + dependencies: + "@types/react" "*" + +-"@types/react@*", "@types/react@^18.0.0 || ^19.0.0", "@types/react@^18.2.21": ++"@types/react@*", "@types/react@^18.2.21": + version "18.2.21" + resolved "https://registry.npmjs.org/@types/react/-/react-18.2.21.tgz" + integrity sha512-neFKG/sBAwGxHgXiIxnbm3/AAVQ/cMRS93hvBpg8xYRbeQSPVABp9U2bRnPf0iI4+Ucdv3plSxKK+3CW2ENJxA== +@@ -1063,7 +1213,7 @@ + semver "^7.5.4" + ts-api-utils "^1.0.1" + +-"@typescript-eslint/parser@^6.0.0 || ^6.0.0-alpha", "@typescript-eslint/parser@^6.7.0": ++"@typescript-eslint/parser@^6.7.0": + version "6.7.0" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.0.tgz" + integrity sha512-jZKYwqNpNm5kzPVP5z1JXAuxjtl2uG+5NpaMocFPTNC2EdYIgbXIPImObOkhbONxtFTTdoZstLZefbaK+wXZng== +@@ -1273,7 +1423,7 @@ acorn-walk@^8.0.2: + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + +-"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.1.0, acorn@^8.8.1, acorn@^8.9.0: ++acorn@^8.1.0, acorn@^8.8.1, acorn@^8.9.0: + version "8.10.0" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz" + integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== +@@ -1326,22 +1476,12 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: + dependencies: + color-convert "^2.0.1" + +-ansi-styles@^5.0.0: +- version "5.2.0" +- resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" +- integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== +- +-ansi-styles@^5.2.0: ++ansi-styles@^5.0.0, ansi-styles@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +-ansi-styles@^6.0.0: +- version "6.2.1" +- resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" +- integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== +- +-ansi-styles@^6.1.0: ++ansi-styles@^6.0.0, ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== +@@ -1376,7 +1516,7 @@ argparse@^2.0.1: + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +-aria-query@^5.0.0, aria-query@5.3.0: ++aria-query@5.3.0, aria-query@^5.0.0: + version "5.3.0" + resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz" + integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== +@@ -1405,7 +1545,7 @@ autoprefixer@10.4.15: + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" + +-"babel-jest@^29.0.0 || ^30.0.0", babel-jest@30.2.0: ++babel-jest@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-30.2.0.tgz" + integrity sha512-0YiBEOxWqKkSQWL9nNGGEgndoeL0ZpWrbLMNL5u/Kaxrli3Eaxlt3ZtIDktEvXt4L/R9r3ODr2zKwGM/2BjxVw== +@@ -1513,7 +1653,7 @@ braces@^3.0.2, braces@^3.0.3, braces@~3.0.2: + dependencies: + fill-range "^7.1.1" + +-browserslist@^4.21.10, browserslist@^4.24.0, "browserslist@>= 4.21.0": ++browserslist@^4.21.10, browserslist@^4.24.0: + version "4.26.3" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.26.3.tgz" + integrity sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w== +@@ -1568,6 +1708,11 @@ caniuse-lite@^1.0.30001520, caniuse-lite@^1.0.30001746: + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001750.tgz" + integrity sha512-cuom0g5sdX6rw00qOoLNSFCJ9/mYIsuSOA+yzpDw8eopiFqcVwQvZHqov0vmEighRxX++cfC0Vg1G+1Iy/mSpQ== + ++chalk@5.3.0: ++ version "5.3.0" ++ resolved "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz" ++ integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== ++ + chalk@^4.0.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" +@@ -1576,11 +1721,6 @@ chalk@^4.0.0, chalk@^4.1.2: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +-chalk@5.3.0: +- version "5.3.0" +- resolved "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz" +- integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== +- + char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" +@@ -1679,16 +1819,16 @@ combined-stream@^1.0.8: + dependencies: + delayed-stream "~1.0.0" + +-commander@^4.0.0: +- version "4.1.1" +- resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" +- integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== +- + commander@11.0.0: + version "11.0.0" + resolved "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz" + integrity sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ== + ++commander@^4.0.0: ++ version "4.1.1" ++ resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" ++ integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== ++ + concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" +@@ -1765,7 +1905,7 @@ data-urls@^4.0.0: + whatwg-mimetype "^3.0.0" + whatwg-url "^12.0.0" + +-debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@4, debug@4.3.4: ++debug@4, debug@4.3.4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== +@@ -1967,7 +2107,7 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4 + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +-"eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0", eslint@^8.49.0, eslint@>=7: ++eslint@^8.49.0: + version "8.49.0" + resolved "https://registry.npmjs.org/eslint/-/eslint-8.49.0.tgz" + integrity sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ== +@@ -2053,21 +2193,6 @@ eventemitter3@^5.0.1: + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz" + integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== + +-execa@^5.1.1: +- version "5.1.1" +- resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" +- integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== +- dependencies: +- cross-spawn "^7.0.3" +- get-stream "^6.0.0" +- human-signals "^2.1.0" +- is-stream "^2.0.0" +- merge-stream "^2.0.0" +- npm-run-path "^4.0.1" +- onetime "^5.1.2" +- signal-exit "^3.0.3" +- strip-final-newline "^2.0.0" +- + execa@7.2.0: + version "7.2.0" + resolved "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz" +@@ -2083,23 +2208,27 @@ execa@7.2.0: + signal-exit "^3.0.7" + strip-final-newline "^3.0.0" + ++execa@^5.1.1: ++ version "5.1.1" ++ resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" ++ integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== ++ dependencies: ++ cross-spawn "^7.0.3" ++ get-stream "^6.0.0" ++ human-signals "^2.1.0" ++ is-stream "^2.0.0" ++ merge-stream "^2.0.0" ++ npm-run-path "^4.0.1" ++ onetime "^5.1.2" ++ signal-exit "^3.0.3" ++ strip-final-newline "^2.0.0" ++ + exit-x@^0.2.2: + version "0.2.2" + resolved "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz" + integrity sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ== + +-expect@^29.7.0: +- version "29.7.0" +- resolved "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz" +- integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== +- dependencies: +- "@jest/expect-utils" "^29.7.0" +- jest-get-type "^29.6.3" +- jest-matcher-utils "^29.7.0" +- jest-message-util "^29.7.0" +- jest-util "^29.7.0" +- +-expect@^30.0.0: ++expect@30.2.0, expect@^30.0.0: + version "30.2.0" + resolved "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz" + integrity sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw== +@@ -2111,17 +2240,16 @@ expect@^30.0.0: + jest-mock "30.2.0" + jest-util "30.2.0" + +-expect@30.2.0: +- version "30.2.0" +- resolved "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz" +- integrity sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw== ++expect@^29.7.0: ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz" ++ integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== + dependencies: +- "@jest/expect-utils" "30.2.0" +- "@jest/get-type" "30.1.0" +- jest-matcher-utils "30.2.0" +- jest-message-util "30.2.0" +- jest-mock "30.2.0" +- jest-util "30.2.0" ++ "@jest/expect-utils" "^29.7.0" ++ jest-get-type "^29.6.3" ++ jest-matcher-utils "^29.7.0" ++ jest-message-util "^29.7.0" ++ jest-util "^29.7.0" + + fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" +@@ -2139,7 +2267,7 @@ fast-glob@^3.2.12, fast-glob@^3.2.9: + merge2 "^1.3.0" + micromatch "^4.0.4" + +-fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0, fast-json-stable-stringify@2.x: ++fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== +@@ -2177,15 +2305,7 @@ fill-range@^7.1.1: + dependencies: + to-regex-range "^5.0.1" + +-find-up@^4.0.0: +- version "4.1.0" +- resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" +- integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== +- dependencies: +- locate-path "^5.0.0" +- path-exists "^4.0.0" +- +-find-up@^4.1.0: ++find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== +@@ -2286,19 +2406,7 @@ glob-parent@^6.0.2: + dependencies: + is-glob "^4.0.3" + +-glob@^10.3.10: +- version "10.4.5" +- resolved "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz" +- integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== +- dependencies: +- foreground-child "^3.1.0" +- jackspeak "^3.1.2" +- minimatch "^9.0.4" +- minipass "^7.1.2" +- package-json-from-dist "^1.0.0" +- path-scurry "^1.11.1" +- +-glob@^7.1.3, glob@^7.1.4, glob@7.1.6: ++glob@7.1.6, glob@^7.1.3, glob@^7.1.4: + version "7.1.6" + resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== +@@ -2310,6 +2418,18 @@ glob@^7.1.3, glob@^7.1.4, glob@7.1.6: + once "^1.3.0" + path-is-absolute "^1.0.0" + ++glob@^10.3.10: ++ version "10.4.5" ++ resolved "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz" ++ integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== ++ dependencies: ++ foreground-child "^3.1.0" ++ jackspeak "^3.1.2" ++ minimatch "^9.0.4" ++ minipass "^7.1.2" ++ package-json-from-dist "^1.0.0" ++ path-scurry "^1.11.1" ++ + globals@^13.19.0: + version "13.21.0" + resolved "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz" +@@ -2677,16 +2797,6 @@ jest-config@30.2.0: + slash "^3.0.0" + strip-json-comments "^3.1.1" + +-jest-diff@^29.7.0: +- version "29.7.0" +- resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz" +- integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== +- dependencies: +- chalk "^4.0.0" +- diff-sequences "^29.6.3" +- jest-get-type "^29.6.3" +- pretty-format "^29.7.0" +- + jest-diff@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz" +@@ -2697,6 +2807,16 @@ jest-diff@30.2.0: + chalk "^4.1.2" + pretty-format "30.2.0" + ++jest-diff@^29.7.0: ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz" ++ integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== ++ dependencies: ++ chalk "^4.0.0" ++ diff-sequences "^29.6.3" ++ jest-get-type "^29.6.3" ++ pretty-format "^29.7.0" ++ + jest-docblock@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz" +@@ -2747,6 +2867,24 @@ jest-get-type@^29.6.3: + resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz" + integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== + ++jest-haste-map@30.2.0: ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz" ++ integrity sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw== ++ dependencies: ++ "@jest/types" "30.2.0" ++ "@types/node" "*" ++ anymatch "^3.1.3" ++ fb-watchman "^2.0.2" ++ graceful-fs "^4.2.11" ++ jest-regex-util "30.0.1" ++ jest-util "30.2.0" ++ jest-worker "30.2.0" ++ micromatch "^4.0.8" ++ walker "^1.0.8" ++ optionalDependencies: ++ fsevents "^2.3.3" ++ + jest-haste-map@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz" +@@ -2766,24 +2904,6 @@ jest-haste-map@^29.7.0: + optionalDependencies: + fsevents "^2.3.2" + +-jest-haste-map@30.2.0: +- version "30.2.0" +- resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz" +- integrity sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw== +- dependencies: +- "@jest/types" "30.2.0" +- "@types/node" "*" +- anymatch "^3.1.3" +- fb-watchman "^2.0.2" +- graceful-fs "^4.2.11" +- jest-regex-util "30.0.1" +- jest-util "30.2.0" +- jest-worker "30.2.0" +- micromatch "^4.0.8" +- walker "^1.0.8" +- optionalDependencies: +- fsevents "^2.3.3" +- + jest-leak-detector@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.2.0.tgz" +@@ -2792,16 +2912,6 @@ jest-leak-detector@30.2.0: + "@jest/get-type" "30.1.0" + pretty-format "30.2.0" + +-jest-matcher-utils@^29.7.0: +- version "29.7.0" +- resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz" +- integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== +- dependencies: +- chalk "^4.0.0" +- jest-diff "^29.7.0" +- jest-get-type "^29.6.3" +- pretty-format "^29.7.0" +- + jest-matcher-utils@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz" +@@ -2812,20 +2922,15 @@ jest-matcher-utils@30.2.0: + jest-diff "30.2.0" + pretty-format "30.2.0" + +-jest-message-util@^29.7.0: ++jest-matcher-utils@^29.7.0: + version "29.7.0" +- resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz" +- integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== ++ resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz" ++ integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== + dependencies: +- "@babel/code-frame" "^7.12.13" +- "@jest/types" "^29.6.3" +- "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" +- graceful-fs "^4.2.9" +- micromatch "^4.0.4" ++ jest-diff "^29.7.0" ++ jest-get-type "^29.6.3" + pretty-format "^29.7.0" +- slash "^3.0.0" +- stack-utils "^2.0.3" + + jest-message-util@30.2.0: + version "30.2.0" +@@ -2842,14 +2947,20 @@ jest-message-util@30.2.0: + slash "^3.0.0" + stack-utils "^2.0.6" + +-jest-mock@^29.7.0: ++jest-message-util@^29.7.0: + version "29.7.0" +- resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz" +- integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== ++ resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz" ++ integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== + dependencies: ++ "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.6.3" +- "@types/node" "*" +- jest-util "^29.7.0" ++ "@types/stack-utils" "^2.0.0" ++ chalk "^4.0.0" ++ graceful-fs "^4.2.9" ++ micromatch "^4.0.4" ++ pretty-format "^29.7.0" ++ slash "^3.0.0" ++ stack-utils "^2.0.3" + + jest-mock@30.2.0: + version "30.2.0" +@@ -2860,21 +2971,30 @@ jest-mock@30.2.0: + "@types/node" "*" + jest-util "30.2.0" + ++jest-mock@^29.7.0: ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz" ++ integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== ++ dependencies: ++ "@jest/types" "^29.6.3" ++ "@types/node" "*" ++ jest-util "^29.7.0" ++ + jest-pnp-resolver@^1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== + +-jest-regex-util@^29.6.3: +- version "29.6.3" +- resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz" +- integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== +- + jest-regex-util@30.0.1: + version "30.0.1" + resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz" + integrity sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA== + ++jest-regex-util@^29.6.3: ++ version "29.6.3" ++ resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz" ++ integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== ++ + jest-resolve-dependencies@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.2.0.tgz" +@@ -2883,7 +3003,7 @@ jest-resolve-dependencies@30.2.0: + jest-regex-util "30.0.1" + jest-snapshot "30.2.0" + +-jest-resolve@*, jest-resolve@30.2.0: ++jest-resolve@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.2.0.tgz" + integrity sha512-TCrHSxPlx3tBY3hWNtRQKbtgLhsXa1WmbJEqBlTBrGafd5fiQFByy2GNCEoGR+Tns8d15GaL9cxEzKOO3GEb2A== +@@ -2953,32 +3073,6 @@ jest-runtime@30.2.0: + slash "^3.0.0" + strip-bom "^4.0.0" + +-jest-snapshot@^29.7.0: +- version "29.7.0" +- resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz" +- integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== +- dependencies: +- "@babel/core" "^7.11.6" +- "@babel/generator" "^7.7.2" +- "@babel/plugin-syntax-jsx" "^7.7.2" +- "@babel/plugin-syntax-typescript" "^7.7.2" +- "@babel/types" "^7.3.3" +- "@jest/expect-utils" "^29.7.0" +- "@jest/transform" "^29.7.0" +- "@jest/types" "^29.6.3" +- babel-preset-current-node-syntax "^1.0.0" +- chalk "^4.0.0" +- expect "^29.7.0" +- graceful-fs "^4.2.9" +- jest-diff "^29.7.0" +- jest-get-type "^29.6.3" +- jest-matcher-utils "^29.7.0" +- jest-message-util "^29.7.0" +- jest-util "^29.7.0" +- natural-compare "^1.4.0" +- pretty-format "^29.7.0" +- semver "^7.5.3" +- + jest-snapshot@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.2.0.tgz" +@@ -3006,17 +3100,31 @@ jest-snapshot@30.2.0: + semver "^7.7.2" + synckit "^0.11.8" + +-"jest-util@^29.0.0 || ^30.0.0", jest-util@^29.7.0: ++jest-snapshot@^29.7.0: + version "29.7.0" +- resolved "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz" +- integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== ++ resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz" ++ integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== + dependencies: ++ "@babel/core" "^7.11.6" ++ "@babel/generator" "^7.7.2" ++ "@babel/plugin-syntax-jsx" "^7.7.2" ++ "@babel/plugin-syntax-typescript" "^7.7.2" ++ "@babel/types" "^7.3.3" ++ "@jest/expect-utils" "^29.7.0" ++ "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" +- "@types/node" "*" ++ babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" +- ci-info "^3.2.0" ++ expect "^29.7.0" + graceful-fs "^4.2.9" +- picomatch "^2.2.3" ++ jest-diff "^29.7.0" ++ jest-get-type "^29.6.3" ++ jest-matcher-utils "^29.7.0" ++ jest-message-util "^29.7.0" ++ jest-util "^29.7.0" ++ natural-compare "^1.4.0" ++ pretty-format "^29.7.0" ++ semver "^7.5.3" + + jest-util@30.2.0: + version "30.2.0" +@@ -3030,6 +3138,18 @@ jest-util@30.2.0: + graceful-fs "^4.2.11" + picomatch "^4.0.2" + ++jest-util@^29.7.0: ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz" ++ integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== ++ dependencies: ++ "@jest/types" "^29.6.3" ++ "@types/node" "*" ++ chalk "^4.0.0" ++ ci-info "^3.2.0" ++ graceful-fs "^4.2.9" ++ picomatch "^2.2.3" ++ + jest-validate@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-30.2.0.tgz" +@@ -3056,16 +3176,6 @@ jest-watcher@30.2.0: + jest-util "30.2.0" + string-length "^4.0.2" + +-jest-worker@^29.7.0: +- version "29.7.0" +- resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz" +- integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== +- dependencies: +- "@types/node" "*" +- jest-util "^29.7.0" +- merge-stream "^2.0.0" +- supports-color "^8.0.0" +- + jest-worker@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz" +@@ -3077,7 +3187,17 @@ jest-worker@30.2.0: + merge-stream "^2.0.0" + supports-color "^8.1.1" + +-"jest@^29.0.0 || ^30.0.0", jest@^30.2.0: ++jest-worker@^29.7.0: ++ version "29.7.0" ++ resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz" ++ integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== ++ dependencies: ++ "@types/node" "*" ++ jest-util "^29.7.0" ++ merge-stream "^2.0.0" ++ supports-color "^8.0.0" ++ ++jest@^30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest/-/jest-30.2.0.tgz" + integrity sha512-F26gjC0yWN8uAA5m5Ss8ZQf5nDHWGlN/xWZIh8S5SRbsEKBovwZhxGd6LJlbZYxBgCYOtreSUyb8hpXyGC5O4A== +@@ -3223,7 +3343,7 @@ levn@^0.4.1: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +-lilconfig@^2.0.5, lilconfig@^2.1.0, lilconfig@2.1.0: ++lilconfig@2.1.0, lilconfig@^2.0.5, lilconfig@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== +@@ -3349,7 +3469,7 @@ merge2@^1.3.0, merge2@^1.4.1: + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +-micromatch@^4.0.4, micromatch@^4.0.5, micromatch@4.0.5: ++micromatch@4.0.5, micromatch@^4.0.4, micromatch@^4.0.5: + version "4.0.5" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== +@@ -3506,14 +3626,7 @@ once@^1.3.0: + dependencies: + wrappy "1" + +-onetime@^5.1.0: +- version "5.1.2" +- resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" +- integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== +- dependencies: +- mimic-fn "^2.1.0" +- +-onetime@^5.1.2: ++onetime@^5.1.0, onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== +@@ -3639,7 +3752,7 @@ path-type@^4.0.0: + resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +-picocolors@^1.0.0, picocolors@^1.1.1, picocolors@1.1.1: ++picocolors@1.1.1, picocolors@^1.0.0, picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== +@@ -3720,7 +3833,7 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: + resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +-postcss@^8.0.0, postcss@^8.1.0, postcss@^8.2.14, postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.27, postcss@>=8.0.9, postcss@8.4.29: ++postcss@8.4.29, postcss@^8.4.23, postcss@^8.4.27: + version "8.4.29" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.29.tgz" + integrity sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw== +@@ -3739,6 +3852,15 @@ prettier@2.8.8: + resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== + ++pretty-format@30.2.0, pretty-format@^30.0.0: ++ version "30.2.0" ++ resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz" ++ integrity sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA== ++ dependencies: ++ "@jest/schemas" "30.0.5" ++ ansi-styles "^5.2.0" ++ react-is "^18.3.1" ++ + pretty-format@^27.0.2: + version "27.5.1" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz" +@@ -3757,15 +3879,6 @@ pretty-format@^29.7.0: + ansi-styles "^5.0.0" + react-is "^18.0.0" + +-pretty-format@^30.0.0, pretty-format@30.2.0: +- version "30.2.0" +- resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz" +- integrity sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA== +- dependencies: +- "@jest/schemas" "30.0.5" +- ansi-styles "^5.2.0" +- react-is "^18.3.1" +- + psl@^1.1.33: + version "1.9.0" + resolved "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz" +@@ -3791,7 +3904,7 @@ queue-microtask@^1.2.2: + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +-"react-dom@^18.0.0 || ^19.0.0", react-dom@>=16.8, react-dom@18.2.0: ++react-dom@18.2.0: + version "18.2.0" + resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz" + integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== +@@ -3829,7 +3942,7 @@ react-router@6.16.0: + dependencies: + "@remix-run/router" "1.9.0" + +-"react@^18.0.0 || ^19.0.0", react@^18.2.0, react@>=16.8, react@18.2.0: ++react@18.2.0: + version "18.2.0" + resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz" + integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== +@@ -3962,12 +4075,7 @@ scheduler@^0.23.0: + dependencies: + loose-envify "^1.1.0" + +-semver@^6.3.0: +- version "6.3.1" +- resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" +- integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== +- +-semver@^6.3.1: ++semver@^6.3.0, semver@^6.3.1: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== +@@ -4064,16 +4172,7 @@ string-length@^4.0.2: + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +-string-width@^4.1.0, string-width@^4.2.0: +- version "4.2.3" +- resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" +- integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== +- dependencies: +- emoji-regex "^8.0.0" +- is-fullwidth-code-point "^3.0.0" +- strip-ansi "^6.0.1" +- +-string-width@^4.2.3: ++string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== +@@ -4159,14 +4258,7 @@ supports-color@^7.1.0: + dependencies: + has-flag "^4.0.0" + +-supports-color@^8.0.0: +- version "8.1.1" +- resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" +- integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== +- dependencies: +- has-flag "^4.0.0" +- +-supports-color@^8.1.1: ++supports-color@^8.0.0, supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== +@@ -4344,7 +4436,7 @@ type-fest@^4.41.0: + resolved "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz" + integrity sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA== + +-typescript@^5.2.2, typescript@>=4.2.0, "typescript@>=4.3 <6": ++typescript@^5.2.2: + version "5.2.2" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz" + integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== +@@ -4431,7 +4523,7 @@ vite-plugin-ruby@3.2.2: + debug "^4.3.4" + fast-glob "^3.2.12" + +-vite@^4, vite@^4.2.0, vite@>=4.0.0, vite@4.4.9: ++vite@4.4.9: + version "4.4.9" + resolved "https://registry.npmjs.org/vite/-/vite-4.4.9.tgz" + integrity sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA== +@@ -4574,16 +4666,16 @@ yallist@^3.0.2: + resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +-yaml@^2.1.1: +- version "2.3.2" +- resolved "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz" +- integrity sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg== +- + yaml@2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz" + integrity sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ== + ++yaml@^2.1.1: ++ version "2.3.2" ++ resolved "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz" ++ integrity sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg== ++ + yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" diff --git a/app/controllers/api_controller.rb b/app/controllers/api_controller.rb index d87dd2e..3fa686d 100644 --- a/app/controllers/api_controller.rb +++ b/app/controllers/api_controller.rb @@ -1,4 +1,18 @@ # frozen_string_literal: true class ApiController < ApplicationController + protect_from_forgery with: :null_session + + def validate_account + username = params[:username] + password = params[:password] + + username_result = User.validate_username(username) + password_result = User.validate_password(password) + + render json: { + username: username_result, + password: password_result + } + end end diff --git a/app/frontend/constants.ts b/app/frontend/constants.ts new file mode 100644 index 0000000..25f118c --- /dev/null +++ b/app/frontend/constants.ts @@ -0,0 +1,2 @@ +export const SIGN_UP_ERROR_MESSAGE = 'Unable to access this page. Please create an account first.'; +export const SERVER_ERROR_MESSAGE = 'Something went wrong. Please try again later.'; diff --git a/app/frontend/cookies/helpers.ts b/app/frontend/cookies/helpers.ts new file mode 100644 index 0000000..2f54d48 --- /dev/null +++ b/app/frontend/cookies/helpers.ts @@ -0,0 +1,21 @@ +// Setting a cookie +export const setCookie = (name: string, value: string): void => { + document.cookie = name + '=' + (value || '') + '; Path=/;'; +}; + +// Getting a cookie +export const getCookie = (name: string): string | undefined => { + const nameEQ = name + '='; + const ca = document.cookie.split(';'); + for (let i = 0; i < ca.length; i++) { + let c = ca[i]; + while (c.charAt(0) === ' ') c = c.substring(1, c.length); + if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length); + } + return undefined; +}; + +// Deleting a cookie +export const eraseCookie = (name: string): void => { + document.cookie = name + '=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;'; +}; diff --git a/app/frontend/entrypoints/main.tsx b/app/frontend/entrypoints/main.tsx index cbcceab..9bda00e 100644 --- a/app/frontend/entrypoints/main.tsx +++ b/app/frontend/entrypoints/main.tsx @@ -1,10 +1,16 @@ import React from 'react'; import ReactDOM from 'react-dom/client'; import { Router } from '../router.tsx'; +import { AccountProvider } from '../providers/AccountProvider/index.tsx'; import '../tailwind.css'; +import { AlertProvider } from '../providers/AlertProvider/index.tsx'; ReactDOM.createRoot(document.getElementById('vite-app')!).render( - + + + + + ); diff --git a/app/frontend/providers/AccountProvider/index.tsx b/app/frontend/providers/AccountProvider/index.tsx new file mode 100644 index 0000000..f743d42 --- /dev/null +++ b/app/frontend/providers/AccountProvider/index.tsx @@ -0,0 +1,17 @@ +import React, { createContext, useReducer } from 'react'; +import { accountReducer, AnonymousUser } from './reducer'; +import { AccountStateType, AccountDispatchType, AccountProviderProps } from './types'; + +export const AccountContext = createContext< + | { + state: AccountStateType; + dispatch: AccountDispatchType; // connect the action to the state + } + | undefined +>(undefined); + +export function AccountProvider({ children }: AccountProviderProps) { + const [state, dispatch] = useReducer(accountReducer, AnonymousUser); + const value = { state, dispatch }; + return {children}; +} diff --git a/app/frontend/providers/AccountProvider/reducer.ts b/app/frontend/providers/AccountProvider/reducer.ts new file mode 100644 index 0000000..762de1c --- /dev/null +++ b/app/frontend/providers/AccountProvider/reducer.ts @@ -0,0 +1,27 @@ +import { Reducer } from 'react'; +import { AccountActions, AccountActionTypes } from './types'; +import { AccountStateType } from './types'; + +export const AnonymousUser = { + username: '', + isValid: false, +}; + +export const accountReducer: Reducer = (state, action) => { + switch (action.type) { + case AccountActionTypes.SET_USERNAME: { + return { + ...state, + username: action.payload?.username, + isValid: true, + }; + } + case AccountActionTypes.DELETE_USERNAME: { + return { + ...state, + username: '', + isValid: false, + }; + } + } +}; diff --git a/app/frontend/providers/AccountProvider/types.ts b/app/frontend/providers/AccountProvider/types.ts new file mode 100644 index 0000000..7eff8fe --- /dev/null +++ b/app/frontend/providers/AccountProvider/types.ts @@ -0,0 +1,31 @@ +import { ReactNode } from 'react'; + +export type AccountStateType = { + username: string; + isValid: boolean; +}; + +// a function that takes in an action +export type AccountDispatchType = (action: AccountActions) => void; + +export type AccountProviderProps = { + children: ReactNode; +}; + +export enum AccountActionTypes { + SET_USERNAME = 'SET_USERNAME', + DELETE_USERNAME = 'DELETE_USERNAME', +} + +interface SetUsername { + type: typeof AccountActionTypes.SET_USERNAME; + payload: { + username: string; + }; +} + +interface DeleteUsername { + type: typeof AccountActionTypes.DELETE_USERNAME; +} + +export type AccountActions = SetUsername | DeleteUsername; diff --git a/app/frontend/providers/AlertProvider/index.tsx b/app/frontend/providers/AlertProvider/index.tsx new file mode 100644 index 0000000..17c95a2 --- /dev/null +++ b/app/frontend/providers/AlertProvider/index.tsx @@ -0,0 +1,17 @@ +import React, { createContext, useReducer } from 'react'; +import { alertReducer, EmptyAlert } from './reducer'; +import { AlertStateType, AlertDispatchType, AlertProviderProps } from './types'; + +export const AlertContext = createContext< + | { + state: AlertStateType; + dispatch: AlertDispatchType; // connect the action to the state + } + | undefined +>(undefined); + +export function AlertProvider({ children }: AlertProviderProps) { + const [state, dispatch] = useReducer(alertReducer, EmptyAlert); + const value = { state, dispatch }; + return {children}; +} diff --git a/app/frontend/providers/AlertProvider/reducer.ts b/app/frontend/providers/AlertProvider/reducer.ts new file mode 100644 index 0000000..86449bc --- /dev/null +++ b/app/frontend/providers/AlertProvider/reducer.ts @@ -0,0 +1,23 @@ +import { Reducer } from 'react'; +import { AlertActions, AlertActionTypes, AlertStateType } from './types'; + +export const EmptyAlert = { + alert: { message: '' }, +}; + +export const alertReducer: Reducer = (state, action) => { + switch (action.type) { + case AlertActionTypes.SET_ALERT: { + return { + ...state, + alert: action.payload?.alert, + }; + } + case AlertActionTypes.DELETE_ALERT: { + return { + ...state, + alert: { message: '' }, + }; + } + } +}; diff --git a/app/frontend/providers/AlertProvider/types.ts b/app/frontend/providers/AlertProvider/types.ts new file mode 100644 index 0000000..57754f3 --- /dev/null +++ b/app/frontend/providers/AlertProvider/types.ts @@ -0,0 +1,33 @@ +import { ReactNode } from 'react'; + +type AlertType = { + message: string; +}; + +export type AlertStateType = { + alert: AlertType; +}; + +export type AlertDispatchType = (action: AlertActions) => void; + +export type AlertProviderProps = { + children: ReactNode; +}; + +export enum AlertActionTypes { + SET_ALERT = 'SET_ALERT', + DELETE_ALERT = 'DELETE_ALERT', +} + +interface SetAlert { + type: typeof AlertActionTypes.SET_ALERT; + payload: { + alert: AlertType; + }; +} + +interface DeleteAlert { + type: typeof AlertActionTypes.DELETE_ALERT; +} + +export type AlertActions = SetAlert | DeleteAlert; diff --git a/app/frontend/reusable-components/alert/index.tsx b/app/frontend/reusable-components/alert/index.tsx new file mode 100644 index 0000000..00670ce --- /dev/null +++ b/app/frontend/reusable-components/alert/index.tsx @@ -0,0 +1,28 @@ +import React from 'react'; + +interface AlertProps { + message?: string; +} + +export const Alert = ({ message }: AlertProps) => { + if (!message) return null; + + return ( +
    + + {message} +
    + ); +}; diff --git a/app/frontend/reusable-components/button/button.tsx b/app/frontend/reusable-components/button/button.tsx index e568b61..ae19dd5 100644 --- a/app/frontend/reusable-components/button/button.tsx +++ b/app/frontend/reusable-components/button/button.tsx @@ -1,25 +1,44 @@ -import React, { ReactNode } from 'react'; +import React, { useMemo } from 'react'; import { Link } from 'react-router-dom'; +import { ButtonProps, ButtonVariants } from './types'; +import classNames from 'classnames'; -interface Props { - type?: 'button' | 'submit'; - href?: string; - children: ReactNode; -} - -const classes = 'inline-block py-3 px-6 bg-[hsla(244,49%,49%,1)] text-white'; +export function Button({ href, children, type, variant, isFullWidth, onClick, disabled }: ButtonProps) { + const buttonStyling = useMemo(() => { + switch (variant) { + case ButtonVariants.PRIMARY: + return 'py-3 px-6 bg-[hsla(244,49%,49%,1)] text-white rounded-[8px]'; + case ButtonVariants.SECONDARY: + return 'py-3 px-6 bg-white text-[hsla(244,49%,49%,1)] rounded-[8px]'; + case ButtonVariants.TERTIARY: + return 'pt-1 pr-2 border-b-4 border-solid border-slate-500 text-slate-500'; + default: + return 'py-3 px-6 bg-[hsla(244,49%,49%,1)] text-white rounded-[8px]'; + } + }, []); -export function Button({ href, children, type }: Props) { if (href) { return ( - + {children} ); } return ( - ); diff --git a/app/frontend/reusable-components/button/types.ts b/app/frontend/reusable-components/button/types.ts new file mode 100644 index 0000000..66c7745 --- /dev/null +++ b/app/frontend/reusable-components/button/types.ts @@ -0,0 +1,19 @@ +import { ReactNode } from 'react'; + +export interface ButtonProps { + type?: 'button' | 'submit'; + href?: string; + children: ReactNode; + isFullWidth?: boolean; + variant?: VariantTypes | undefined; + onClick?: () => void; + disabled?: boolean; +} + +export enum ButtonVariants { + PRIMARY = 'primary', + SECONDARY = 'secondary', + TERTIARY = 'tertiary', +} + +export type VariantTypes = ButtonVariants.PRIMARY | ButtonVariants.SECONDARY | ButtonVariants.TERTIARY; diff --git a/app/frontend/reusable-components/card/card.tsx b/app/frontend/reusable-components/card/card.tsx index 650345c..149efe8 100644 --- a/app/frontend/reusable-components/card/card.tsx +++ b/app/frontend/reusable-components/card/card.tsx @@ -1,15 +1,23 @@ +import classNames from 'classnames'; import React, { ReactNode } from 'react'; interface Props { children: ReactNode; title: string; description?: string; + isFullWidth?: boolean; + titleStyles?: string; } -export function Card({ children, title, description }: Props) { +export function Card({ children, title, description, isFullWidth, titleStyles }: Props) { return ( -
    -

    {title}

    +
    +

    {title}

    {description}

    {children}
    diff --git a/app/frontend/reusable-components/flow-layout/flow-layout.tsx b/app/frontend/reusable-components/flow-layout/flow-layout.tsx index c9b25d5..77d241a 100644 --- a/app/frontend/reusable-components/flow-layout/flow-layout.tsx +++ b/app/frontend/reusable-components/flow-layout/flow-layout.tsx @@ -1,17 +1,35 @@ -import React, { ReactNode } from 'react'; -import { Link } from 'react-router-dom'; +import { AccountContext } from 'app/frontend/providers/AccountProvider'; +import { AccountActionTypes } from 'app/frontend/providers/AccountProvider/types'; +import React, { ReactNode, useCallback, useContext } from 'react'; +import { useNavigate } from 'react-router-dom'; +import { Button } from '../button/button'; +import { ButtonVariants } from '../button/types'; +import { getCookie, eraseCookie } from 'app/frontend/cookies/helpers'; interface Props { children: ReactNode; } export function FlowLayout({ children }: Props) { + const user = useContext(AccountContext); + const navigate = useNavigate(); + const sessionToken = getCookie('session_token'); + const isValid = user?.state.isValid || Boolean(sessionToken); + + const handleLogout = useCallback(() => { + user?.dispatch({ type: AccountActionTypes.DELETE_USERNAME }); + eraseCookie('session_token'); + navigate('/create-account'); + }, [user, navigate]); + return ( -
    +
    - - Logout - + {isValid && ( + + )}
    {children}
    diff --git a/app/frontend/reusable-components/input/input.tsx b/app/frontend/reusable-components/input/input.tsx index 08cbae9..581e49a 100644 --- a/app/frontend/reusable-components/input/input.tsx +++ b/app/frontend/reusable-components/input/input.tsx @@ -1,11 +1,16 @@ +import classNames from 'classnames'; import React, { ChangeEvent, useState } from 'react'; +import { InputVariants } from './types'; -interface Props { +interface InputProps { label: string; + dataTest: string; onChange?: (value: string) => void; + variant?: InputVariants | undefined; + errorText?: string; } -export function Input({ onChange, label }: Props) { +export function Input({ onChange, label, dataTest, variant, errorText }: InputProps) { const [value, setValue] = useState(''); const id = label.replace(/ /gm, '_'); @@ -18,10 +23,15 @@ export function Input({ onChange, label }: Props) { + {errorText &&
    {errorText}
    }
    ); } diff --git a/app/frontend/reusable-components/input/types.ts b/app/frontend/reusable-components/input/types.ts new file mode 100644 index 0000000..73c390f --- /dev/null +++ b/app/frontend/reusable-components/input/types.ts @@ -0,0 +1,6 @@ +export enum InputVariants { + BLOCK = 'BLOCK', + UNDERLINE = 'UNDERLINE' +} + +export type VariantTypes = InputVariants.BLOCK | InputVariants.UNDERLINE; \ No newline at end of file diff --git a/app/frontend/reusable-components/welcomeMessage/index.tsx b/app/frontend/reusable-components/welcomeMessage/index.tsx new file mode 100644 index 0000000..467d063 --- /dev/null +++ b/app/frontend/reusable-components/welcomeMessage/index.tsx @@ -0,0 +1,12 @@ +import { AccountContext } from 'app/frontend/providers/AccountProvider'; +import React, { useContext } from 'react'; + +export const WelcomeMessage = () => { + const user = useContext(AccountContext); + return ( +
    +

    Welcome {user?.state.username || 'Guest'}!

    +

    We're glad to have you here.

    +
    + ); +}; diff --git a/app/frontend/router.tsx b/app/frontend/router.tsx index 95d0a53..b628ab7 100644 --- a/app/frontend/router.tsx +++ b/app/frontend/router.tsx @@ -6,6 +6,7 @@ import { CreateUser } from './routes/signup/create-user/create-user.tsx'; import { Deposit } from './routes/signup/deposit/deposit.tsx'; import { JointAccess } from './routes/signup/joint-access/joint-access.tsx'; import { StockRestrictions } from './routes/signup/stock-restrictions/stock-restrictions.tsx'; +import { CreateAccount } from './routes/create-account/create-account.tsx'; const router = createBrowserRouter([ { @@ -32,6 +33,10 @@ const router = createBrowserRouter([ path: '/signup/deposit', element: , }, + { + path: '/create-account', + element: , + }, ]); export function Router() { diff --git a/app/frontend/routes/create-account/constants.ts b/app/frontend/routes/create-account/constants.ts new file mode 100644 index 0000000..d7c9996 --- /dev/null +++ b/app/frontend/routes/create-account/constants.ts @@ -0,0 +1,15 @@ +export const USERNAME_NOT_VALID = 'USERNAME_NOT_VALID'; +export const PASSWORD_NOT_VALID = 'PASSWORD_NOT_VALID'; +export const NO_USERNAME_GIVEN = 'NO_USERNAME_GIVEN'; +export const NO_PASSWORD_GIVEN = 'NO_PASSWORD_GIVEN'; +export const PASSWORD_LETTER_NUMBER_MISSING = 'PASSWORD_LETTER_NUMBER_MISSING'; +export const SERVER_ERROR = 'SERVER_ERROR'; + +export const CREATE_ACCOUNT_ERROR_MAP = { + NO_USERNAME_GIVEN: 'Please provide a username.', + USERNAME_NOT_VALID: 'Username must be between 10 and 50 characters.', + NO_PASSWORD_GIVEN: 'Please provide a password.', + PASSWORD_NOT_VALID: 'Password must be between 20 and 50 characters.', + PASSWORD_LETTER_NUMBER_MISSING: 'Password must contain at least one letter and one number.', + SERVER_ERROR: 'Something went wrong. Please try again later.', +}; diff --git a/app/frontend/routes/create-account/create-account.test.tsx b/app/frontend/routes/create-account/create-account.test.tsx new file mode 100644 index 0000000..d98b899 --- /dev/null +++ b/app/frontend/routes/create-account/create-account.test.tsx @@ -0,0 +1,87 @@ +import React from 'react'; +import { render, fireEvent, waitFor } from '@testing-library/react'; +import { screen } from '@testing-library/dom'; +import '@testing-library/jest-dom'; +import { CreateAccount } from './create-account'; +import { + CREATE_ACCOUNT_ERROR_MAP, + NO_PASSWORD_GIVEN, + NO_USERNAME_GIVEN, + PASSWORD_LETTER_NUMBER_MISSING, + PASSWORD_NOT_VALID, + SERVER_ERROR, + USERNAME_NOT_VALID, +} from './constants'; + +global.fetch = jest.fn(); +const mockNavigate = jest.fn(); +jest.mock('react-router-dom', () => ({ + useNavigate: () => mockNavigate, +})); + +describe('CreateAccount', () => { + beforeEach(() => { + (fetch as jest.Mock).mockClear(); + }); + + it('renders username and password inputs', () => { + render(); + expect(screen.getByTestId('usernameInput')).toBeInTheDocument(); + expect(screen.getByTestId('passwordInput')).toBeInTheDocument(); + }); + + it('shows validation errors from backend', async () => { + (fetch as jest.Mock).mockResolvedValueOnce({ + json: async () => ({ username: 'USERNAME_NOT_VALID', password: 'PASSWORD_NOT_VALID' }), + }); + render(); + fireEvent.change(screen.getByTestId('usernameInput'), { target: { value: 'short' } }); + fireEvent.change(screen.getByTestId('passwordInput'), { target: { value: 'short' } }); + fireEvent.click(screen.getByRole('button', { name: /create account/i })); + await waitFor(() => { + expect(screen.getByText(CREATE_ACCOUNT_ERROR_MAP[USERNAME_NOT_VALID])).toBeInTheDocument(); + expect(screen.getByText(CREATE_ACCOUNT_ERROR_MAP[PASSWORD_NOT_VALID])).toBeInTheDocument(); + }); + }); + + it.each` + usernameError | passwordError | usernameInput | passwordInput + ${NO_USERNAME_GIVEN} | ${NO_PASSWORD_GIVEN} | ${''} | ${''} + ${USERNAME_NOT_VALID} | ${PASSWORD_NOT_VALID} | ${'short'} | ${'short'} + ${USERNAME_NOT_VALID} | ${PASSWORD_LETTER_NUMBER_MISSING} | ${'validusername'} | ${'aaaaaaaaaaaaaaaaaaaaaaa'} + ${SERVER_ERROR} | ${PASSWORD_NOT_VALID} | ${'short'} | ${''} + ${USERNAME_NOT_VALID} | ${SERVER_ERROR} | ${''} | ${'short'} + `( + 'should show proper validation for $usernameError and $passwordError', + async ({ usernameError, passwordError, usernameInput, passwordInput }) => { + (fetch as jest.Mock).mockResolvedValueOnce({ + json: async () => ({ username: usernameError, password: passwordError }), + }); + render(); + fireEvent.change(screen.getByTestId('usernameInput'), { target: { value: usernameInput } }); + fireEvent.change(screen.getByTestId('passwordInput'), { target: { value: passwordInput } }); + fireEvent.click(screen.getByRole('button', { name: /create account/i })); + await waitFor(() => { + expect( + screen.getByText(CREATE_ACCOUNT_ERROR_MAP[usernameError as keyof typeof CREATE_ACCOUNT_ERROR_MAP]) + ).toBeInTheDocument(); + expect( + screen.getByText(CREATE_ACCOUNT_ERROR_MAP[passwordError as keyof typeof CREATE_ACCOUNT_ERROR_MAP]) + ).toBeInTheDocument(); + }); + } + ); + + it('navigates to account selection on valid input', async () => { + (fetch as jest.Mock).mockResolvedValueOnce({ + json: async () => ({ username: true, password: true }), + }); + render(); + fireEvent.change(screen.getByTestId('usernameInput'), { target: { value: 'validusername' } }); + fireEvent.change(screen.getByTestId('passwordInput'), { target: { value: 'validpassword1234567890' } }); + fireEvent.click(screen.getByRole('button', { name: /create account/i })); + await waitFor(() => { + expect(mockNavigate).toHaveBeenCalledWith('/signup/account-selection'); + }); + }); +}); diff --git a/app/frontend/routes/create-account/create-account.tsx b/app/frontend/routes/create-account/create-account.tsx new file mode 100644 index 0000000..3c14a56 --- /dev/null +++ b/app/frontend/routes/create-account/create-account.tsx @@ -0,0 +1,100 @@ +import { Button } from 'app/frontend/reusable-components/button/button'; +import { Card } from 'app/frontend/reusable-components/card/card'; +import { FlowLayout } from 'app/frontend/reusable-components/flow-layout/flow-layout'; +import { Input } from 'app/frontend/reusable-components/input/input'; +import { InputVariants } from 'app/frontend/reusable-components/input/types'; +import React, { useCallback, useContext } from 'react'; +import { useNavigate } from 'react-router-dom'; +import { CREATE_ACCOUNT_ERROR_MAP } from './constants'; +import { AccountContext } from 'app/frontend/providers/AccountProvider'; +import { AccountActionTypes } from 'app/frontend/providers/AccountProvider/types'; +import { Alert } from 'app/frontend/reusable-components/alert'; +import { AlertContext } from 'app/frontend/providers/AlertProvider'; +import { AlertActionTypes } from 'app/frontend/providers/AlertProvider/types'; +import { SERVER_ERROR_MESSAGE } from 'app/frontend/constants'; +import { setCookie } from 'app/frontend/cookies/helpers'; + +export function CreateAccount() { + const [username, setUsername] = React.useState(''); + const [password, setPassword] = React.useState(''); + const [validation, setValidation] = React.useState<{ username?: string; password?: string } | null>(null); + const navigate = useNavigate(); + const user = useContext(AccountContext); + const alerts = useContext(AlertContext); + const [isLoading, setIsLoading] = React.useState(false); + + const handleUsernameChange = useCallback((value: string) => { + setUsername(value); + setValidation(null); + }, []); + + const handlePasswordChange = useCallback((value: string) => { + setPassword(value); + setValidation(null); + }, []); + + const handleCreateAccount = useCallback(async () => { + setIsLoading(true); + setValidation(null); + + alerts?.dispatch({ type: AlertActionTypes.DELETE_ALERT }); + + try { + const res = await fetch('/api/validate_account', { + method: 'POST', + credentials: 'include', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ username, password }), + }); + const data = await res.json(); + setCookie('session_token', username); + console.log('response from backend:', data); + + if (data?.username === true && data?.password === true) { + navigate('/signup/account-selection'); + + user?.dispatch({ type: AccountActionTypes.SET_USERNAME, payload: { username } }); + } + + const usernameError = CREATE_ACCOUNT_ERROR_MAP[data.username as keyof typeof CREATE_ACCOUNT_ERROR_MAP]; + const passwordError = CREATE_ACCOUNT_ERROR_MAP[data.password as keyof typeof CREATE_ACCOUNT_ERROR_MAP]; + + setValidation({ username: usernameError, password: passwordError }); + } catch (e) { + alerts?.dispatch({ type: AlertActionTypes.SET_ALERT, payload: { alert: { message: SERVER_ERROR_MESSAGE } } }); + } finally { + setIsLoading(false); + } + }, [username, password, navigate, user]); + + return ( + + +
    + +
    +
    + + +
    + +
    +
    +
    +
    + ); +} diff --git a/app/frontend/routes/root/root.tsx b/app/frontend/routes/root/root.tsx index c13f167..3ee9abb 100644 --- a/app/frontend/routes/root/root.tsx +++ b/app/frontend/routes/root/root.tsx @@ -5,7 +5,7 @@ import { FlowLayout } from '../../reusable-components/flow-layout/flow-layout.ts export function Root() { return ( - + Get started diff --git a/app/frontend/routes/signup/account-selection/account-selection.test.tsx b/app/frontend/routes/signup/account-selection/account-selection.test.tsx index 9b9fed6..62b2955 100644 --- a/app/frontend/routes/signup/account-selection/account-selection.test.tsx +++ b/app/frontend/routes/signup/account-selection/account-selection.test.tsx @@ -1,12 +1,39 @@ -import { describe, test } from '@jest/globals'; +import { describe } from '@jest/globals'; import { render, screen } from '@testing-library/react'; import React from 'react'; import { BrowserRouter } from 'react-router-dom'; import { AccountSelection } from './account-selection'; +import '@testing-library/jest-dom'; +import { AccountContext } from 'app/frontend/providers/AccountProvider'; +import { AccountStateType } from 'app/frontend/providers/AccountProvider/types'; + +global.fetch = jest.fn(); +const mockNavigate = jest.fn(); +jest.mock('react-router-dom', () => ({ + ...jest.requireActual('react-router-dom'), + useNavigate: () => mockNavigate, +})); describe('AccountSelection', () => { - test('render', () => {}); - render(, { wrapper: BrowserRouter }); - screen.getByText('I want to open a cash account.'); - screen.getByText('I want to open an investing account.'); + it('displays proper elements', () => { + render(, { wrapper: BrowserRouter }); + expect(screen.getByTestId('welcome-message')).toBeInTheDocument(); + expect(screen.getByText('I want to open a cash account.')).toBeInTheDocument(); + expect(screen.getByText('I want to open an investing account.')).toBeInTheDocument(); + }); + + it('routes to create-account when valid user not found', () => { + jest.resetModules(); + const invalidUser = { state: { isValid: false } as AccountStateType, dispatch: jest.fn() }; + render( + + + + + + ); + + // The effect should trigger navigation + expect(mockNavigate).toHaveBeenCalledWith('/create-account'); + }); }); diff --git a/app/frontend/routes/signup/account-selection/account-selection.tsx b/app/frontend/routes/signup/account-selection/account-selection.tsx index beab828..a246071 100644 --- a/app/frontend/routes/signup/account-selection/account-selection.tsx +++ b/app/frontend/routes/signup/account-selection/account-selection.tsx @@ -1,12 +1,44 @@ -import React from 'react'; -import { Link } from 'react-router-dom'; -import { Card } from '../../../reusable-components/card/card.tsx'; -import { FlowLayout } from '../../../reusable-components/flow-layout/flow-layout.tsx'; +import { SIGN_UP_ERROR_MESSAGE } from 'app/frontend/constants'; +import { getCookie } from 'app/frontend/cookies/helpers'; +import { AccountContext } from 'app/frontend/providers/AccountProvider'; +import { AccountActionTypes } from 'app/frontend/providers/AccountProvider/types'; +import { AlertContext } from 'app/frontend/providers/AlertProvider'; +import { AlertActionTypes } from 'app/frontend/providers/AlertProvider/types'; +import { Card } from 'app/frontend/reusable-components/card/card'; +import { FlowLayout } from 'app/frontend/reusable-components/flow-layout/flow-layout'; +import { WelcomeMessage } from 'app/frontend/reusable-components/welcomeMessage'; +import React, { useContext, useEffect } from 'react'; +import { Link, useNavigate } from 'react-router-dom'; + +export const AccountSelection = () => { + const user = useContext(AccountContext); + const alerts = useContext(AlertContext); + const navigate = useNavigate(); + const sessionToken = getCookie('session_token'); + const shouldRoute = !sessionToken && (!user?.state.isValid || !user); + + useEffect(() => { + if (shouldRoute) { + console.log('user is not valid, redirecting to create-account'); + navigate('/create-account'); + alerts?.dispatch({ + type: AlertActionTypes.SET_ALERT, + payload: { alert: { message: SIGN_UP_ERROR_MESSAGE } }, + }); + } + if (!user?.state.username) { + user?.dispatch({ type: AccountActionTypes.SET_USERNAME, payload: { username: sessionToken || 'Guest' } }); + } + }, [user, navigate, alerts]); -export function AccountSelection() { return ( - + +
    ); -} +}; diff --git a/app/frontend/routes/signup/create-user/create-user.test.tsx b/app/frontend/routes/signup/create-user/create-user.test.tsx index dcc8034..a63e61b 100644 --- a/app/frontend/routes/signup/create-user/create-user.test.tsx +++ b/app/frontend/routes/signup/create-user/create-user.test.tsx @@ -1,12 +1,38 @@ -import { describe, test } from '@jest/globals'; -import { render, screen } from '@testing-library/react'; +import { describe } from '@jest/globals'; +import { render } from '@testing-library/react'; +import { screen } from '@testing-library/dom'; import React from 'react'; import { BrowserRouter } from 'react-router-dom'; import { CreateUser } from './create-user'; +import { AccountContext } from 'app/frontend/providers/AccountProvider'; +import { AccountStateType } from 'app/frontend/providers/AccountProvider/types'; +import '@testing-library/jest-dom'; + +global.fetch = jest.fn(); +const mockNavigate = jest.fn(); +jest.mock('react-router-dom', () => ({ + ...jest.requireActual('react-router-dom'), + useNavigate: () => mockNavigate, +})); describe('CreateUser', () => { - test('render', () => {}); - render(, { wrapper: BrowserRouter }); - screen.getByLabelText('First name'); - screen.getByLabelText('Last name'); + it('displays proper elements', () => { + render(, { wrapper: BrowserRouter }); + expect(screen.getByTestId('first-name')).toBeInTheDocument(); + expect(screen.getByTestId('last-name')).toBeInTheDocument(); + }); + + it('routes to create-account when valid user not found', () => { + jest.resetModules(); + const invalidUser = { state: { isValid: false } as AccountStateType, dispatch: jest.fn() }; + render( + + + + + + ); + + expect(mockNavigate).toHaveBeenCalledWith('/create-account'); + }); }); diff --git a/app/frontend/routes/signup/create-user/create-user.tsx b/app/frontend/routes/signup/create-user/create-user.tsx index c697f2e..9bbcf28 100644 --- a/app/frontend/routes/signup/create-user/create-user.tsx +++ b/app/frontend/routes/signup/create-user/create-user.tsx @@ -1,17 +1,44 @@ -import React from 'react'; +import React, { useContext, useEffect } from 'react'; import { Button } from '../../../reusable-components/button/button.tsx'; import { Card } from '../../../reusable-components/card/card.tsx'; import { FlowLayout } from '../../../reusable-components/flow-layout/flow-layout.tsx'; import { Input } from '../../../reusable-components/input/input'; +import { AccountContext } from 'app/frontend/providers/AccountProvider/index.tsx'; +import { useNavigate } from 'react-router-dom'; +import { SIGN_UP_ERROR_MESSAGE } from 'app/frontend/constants.ts'; +import { AlertContext } from 'app/frontend/providers/AlertProvider/index.tsx'; +import { AlertActionTypes } from 'app/frontend/providers/AlertProvider/types.ts'; +import { getCookie } from 'app/frontend/cookies/helpers.ts'; +import { AccountActionTypes } from 'app/frontend/providers/AccountProvider/types.ts'; export function CreateUser() { + const user = useContext(AccountContext); + const navigate = useNavigate(); + const alerts = useContext(AlertContext); + const sessionToken = getCookie('session_token'); + const shouldRoute = !sessionToken && (!user?.state.isValid || !user); + + useEffect(() => { + if (shouldRoute) { + console.log('user is not valid, redirecting to create-account'); + navigate('/create-account'); + alerts?.dispatch({ + type: AlertActionTypes.SET_ALERT, + payload: { alert: { message: SIGN_UP_ERROR_MESSAGE } }, + }); + } + if (!user?.state.username) { + user?.dispatch({ type: AccountActionTypes.SET_USERNAME, payload: { username: sessionToken || 'Guest' } }); + } + }, [user, navigate, alerts]); + return ( - +
    - - - + + +
    diff --git a/app/frontend/routes/signup/deposit/deposit.test.tsx b/app/frontend/routes/signup/deposit/deposit.test.tsx new file mode 100644 index 0000000..449ba0c --- /dev/null +++ b/app/frontend/routes/signup/deposit/deposit.test.tsx @@ -0,0 +1,38 @@ +import { describe } from '@jest/globals'; +import { render } from '@testing-library/react'; +import { screen } from '@testing-library/dom'; +import React from 'react'; +import { BrowserRouter } from 'react-router-dom'; +import { AccountContext } from 'app/frontend/providers/AccountProvider'; +import { AccountStateType } from 'app/frontend/providers/AccountProvider/types'; +import { Deposit } from './deposit'; +import '@testing-library/jest-dom'; + +global.fetch = jest.fn(); +const mockNavigate = jest.fn(); +jest.mock('react-router-dom', () => ({ + ...jest.requireActual('react-router-dom'), + useNavigate: () => mockNavigate, +})); + +describe('Deposit', () => { + it('displays proper elements', () => { + render(, { wrapper: BrowserRouter }); + expect(screen.getByText('Deposit funds')).toBeInTheDocument(); + expect(screen.getByRole('link', { name: 'Start over' })).toBeInTheDocument(); + }); + + it('routes to create-account when valid user not found', () => { + jest.resetModules(); + const invalidUser = { state: { isValid: false } as AccountStateType, dispatch: jest.fn() }; + render( + + + + + + ); + + expect(mockNavigate).toHaveBeenCalledWith('/create-account'); + }); +}); diff --git a/app/frontend/routes/signup/deposit/deposit.tsx b/app/frontend/routes/signup/deposit/deposit.tsx index 73eed54..6e620a0 100644 --- a/app/frontend/routes/signup/deposit/deposit.tsx +++ b/app/frontend/routes/signup/deposit/deposit.tsx @@ -1,15 +1,42 @@ -import React from 'react'; +import React, { useContext, useEffect } from 'react'; import { Button } from '../../../reusable-components/button/button.tsx'; import { Card } from '../../../reusable-components/card/card.tsx'; import { FlowLayout } from '../../../reusable-components/flow-layout/flow-layout.tsx'; import { Input } from '../../../reusable-components/input/input.tsx'; +import { AccountContext } from 'app/frontend/providers/AccountProvider/index.tsx'; +import { useNavigate } from 'react-router-dom'; +import { SIGN_UP_ERROR_MESSAGE } from 'app/frontend/constants.ts'; +import { AlertContext } from 'app/frontend/providers/AlertProvider/index.tsx'; +import { AlertActionTypes } from 'app/frontend/providers/AlertProvider/types.ts'; +import { getCookie } from 'app/frontend/cookies/helpers.ts'; +import { AccountActionTypes } from 'app/frontend/providers/AccountProvider/types.ts'; export function Deposit() { + const user = useContext(AccountContext); + const alerts = useContext(AlertContext); + const navigate = useNavigate(); + const sessionToken = getCookie('session_token'); + const shouldRoute = !sessionToken && (!user?.state.isValid || !user); + + useEffect(() => { + if (shouldRoute) { + console.log('user is not valid, redirecting to create-account'); + navigate('/create-account'); + alerts?.dispatch({ + type: AlertActionTypes.SET_ALERT, + payload: { alert: { message: SIGN_UP_ERROR_MESSAGE } }, + }); + } + if (!user?.state.username) { + user?.dispatch({ type: AccountActionTypes.SET_USERNAME, payload: { username: sessionToken || 'Guest' } }); + } + }, [user, navigate, alerts]); + return ( - +
    - +
    diff --git a/app/frontend/routes/signup/joint-access/joint-access.test.tsx b/app/frontend/routes/signup/joint-access/joint-access.test.tsx new file mode 100644 index 0000000..ddeb095 --- /dev/null +++ b/app/frontend/routes/signup/joint-access/joint-access.test.tsx @@ -0,0 +1,41 @@ +import { describe } from '@jest/globals'; +import { render } from '@testing-library/react'; +import { screen } from '@testing-library/dom'; +import React from 'react'; +import { BrowserRouter } from 'react-router-dom'; +import { AccountContext } from 'app/frontend/providers/AccountProvider'; +import { AccountStateType } from 'app/frontend/providers/AccountProvider/types'; +import { JointAccess } from './joint-access'; +import '@testing-library/jest-dom'; + +global.fetch = jest.fn(); +const mockNavigate = jest.fn(); +jest.mock('react-router-dom', () => ({ + ...jest.requireActual('react-router-dom'), + useNavigate: () => mockNavigate, +})); + +describe('JointAccess', () => { + it('displays proper elements', () => { + render(, { wrapper: BrowserRouter }); + expect(screen.getByText('Will this be a joint account?')).toBeInTheDocument(); + expect(screen.getByTestId('first-name-joint-access')).toBeInTheDocument(); + expect(screen.getByTestId('last-name-joint-access')).toBeInTheDocument(); + expect(screen.getByTestId('email-joint-access')).toBeInTheDocument(); + expect(screen.getByRole('link', { name: 'Continue' })).toBeInTheDocument(); + }); + + it('routes to create-account when valid user not found', () => { + jest.resetModules(); + const invalidUser = { state: { isValid: false } as AccountStateType, dispatch: jest.fn() }; + render( + + + + + + ); + + expect(mockNavigate).toHaveBeenCalledWith('/create-account'); + }); +}); diff --git a/app/frontend/routes/signup/joint-access/joint-access.tsx b/app/frontend/routes/signup/joint-access/joint-access.tsx index 4f50d23..918a577 100644 --- a/app/frontend/routes/signup/joint-access/joint-access.tsx +++ b/app/frontend/routes/signup/joint-access/joint-access.tsx @@ -1,20 +1,48 @@ -import React from 'react'; +import React, { useContext, useEffect } from 'react'; import { Button } from '../../../reusable-components/button/button.tsx'; import { Card } from '../../../reusable-components/card/card.tsx'; import { FlowLayout } from '../../../reusable-components/flow-layout/flow-layout.tsx'; import { Input } from '../../../reusable-components/input/input'; +import { AccountContext } from 'app/frontend/providers/AccountProvider/index.tsx'; +import { useNavigate } from 'react-router-dom'; +import { SIGN_UP_ERROR_MESSAGE } from 'app/frontend/constants.ts'; +import { AlertContext } from 'app/frontend/providers/AlertProvider/index.tsx'; +import { AlertActionTypes } from 'app/frontend/providers/AlertProvider/types.ts'; +import { getCookie } from 'app/frontend/cookies/helpers.ts'; +import { AccountActionTypes } from 'app/frontend/providers/AccountProvider/types.ts'; export function JointAccess() { + const user = useContext(AccountContext); + const alerts = useContext(AlertContext); + const navigate = useNavigate(); + const sessionToken = getCookie('session_token'); + const shouldRoute = !sessionToken && (!user?.state.isValid || !user); + + useEffect(() => { + if (shouldRoute) { + console.log('user is not valid, redirecting to create-account'); + navigate('/create-account'); + alerts?.dispatch({ + type: AlertActionTypes.SET_ALERT, + payload: { alert: { message: SIGN_UP_ERROR_MESSAGE } }, + }); + } + if (!user?.state.username) { + user?.dispatch({ type: AccountActionTypes.SET_USERNAME, payload: { username: sessionToken || 'Guest' } }); + } + }, [user, navigate, alerts]); + return (
    - - - + + +
    diff --git a/app/frontend/routes/signup/stock-restrictions/stock-restrictions.test.tsx b/app/frontend/routes/signup/stock-restrictions/stock-restrictions.test.tsx new file mode 100644 index 0000000..8452a62 --- /dev/null +++ b/app/frontend/routes/signup/stock-restrictions/stock-restrictions.test.tsx @@ -0,0 +1,38 @@ +import { describe } from '@jest/globals'; +import { render } from '@testing-library/react'; +import { screen } from '@testing-library/dom'; +import React from 'react'; +import { BrowserRouter } from 'react-router-dom'; +import { AccountContext } from 'app/frontend/providers/AccountProvider'; +import { AccountStateType } from 'app/frontend/providers/AccountProvider/types'; +import '@testing-library/jest-dom'; +import { StockRestrictions } from './stock-restrictions'; + +global.fetch = jest.fn(); +const mockNavigate = jest.fn(); +jest.mock('react-router-dom', () => ({ + ...jest.requireActual('react-router-dom'), + useNavigate: () => mockNavigate, +})); + +describe('StockRestrictions', () => { + it('displays proper elements', () => { + render(, { wrapper: BrowserRouter }); + expect(screen.getByTestId('stock-symbol')).toBeInTheDocument(); + expect(screen.getByRole('link', { name: 'Continue' })).toBeInTheDocument(); + }); + + it('routes to create-account when valid user not found', () => { + jest.resetModules(); + const invalidUser = { state: { isValid: false } as AccountStateType, dispatch: jest.fn() }; + render( + + + + + + ); + + expect(mockNavigate).toHaveBeenCalledWith('/create-account'); + }); +}); diff --git a/app/frontend/routes/signup/stock-restrictions/stock-restrictions.tsx b/app/frontend/routes/signup/stock-restrictions/stock-restrictions.tsx index 9d74286..dc1f29a 100644 --- a/app/frontend/routes/signup/stock-restrictions/stock-restrictions.tsx +++ b/app/frontend/routes/signup/stock-restrictions/stock-restrictions.tsx @@ -1,19 +1,47 @@ -import React from 'react'; +import React, { useContext, useEffect } from 'react'; import { Button } from '../../../reusable-components/button/button.tsx'; import { Card } from '../../../reusable-components/card/card.tsx'; import { FlowLayout } from '../../../reusable-components/flow-layout/flow-layout.tsx'; import { Input } from '../../../reusable-components/input/input.tsx'; +import { AccountContext } from 'app/frontend/providers/AccountProvider/index.tsx'; +import { useNavigate } from 'react-router-dom'; +import { SIGN_UP_ERROR_MESSAGE } from 'app/frontend/constants.ts'; +import { getCookie } from 'app/frontend/cookies/helpers.ts'; +import { AccountActionTypes } from 'app/frontend/providers/AccountProvider/types.ts'; +import { AlertContext } from 'app/frontend/providers/AlertProvider/index.tsx'; +import { AlertActionTypes } from 'app/frontend/providers/AlertProvider/types.ts'; export function StockRestrictions() { + const user = useContext(AccountContext); + const alerts = useContext(AlertContext); + const navigate = useNavigate(); + const sessionToken = getCookie('session_token'); + const shouldRoute = !sessionToken && (!user?.state.isValid || !user); + + useEffect(() => { + if (shouldRoute) { + console.log('user is not valid, redirecting to create-account'); + navigate('/create-account'); + alerts?.dispatch({ + type: AlertActionTypes.SET_ALERT, + payload: { alert: { message: SIGN_UP_ERROR_MESSAGE } }, + }); + } + if (!user?.state.username) { + user?.dispatch({ type: AccountActionTypes.SET_USERNAME, payload: { username: sessionToken || 'Guest' } }); + } + }, [user, navigate, alerts]); + return ( {/*
  • style UI to look like given mock, make sure the typeahead is realtime feeling search
  • */}
    - +
    diff --git a/app/models/user.rb b/app/models/user.rb index d582619..0c18e2c 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -1,10 +1,23 @@ +require 'zxcvbn' class User < ApplicationRecord validates :username, presence: true validates :password, presence: true - def self.validate_username + def self.validate_username(username) + return 'NO_USERNAME_GIVEN' if username.nil? || username.strip.empty? + return 'USERNAME_NOT_VALID' unless username.length >= 10 && username.length <= 50 + true end - def self.validate_password + def self.validate_password(password) + return 'NO_PASSWORD_GIVEN' if password.nil? || password.strip.empty? + return 'PASSWORD_NOT_VALID' unless password.length >= 20 && password.length <= 50 + return 'PASSWORD_LETTER_NUMBER_MISSING' unless password.match?(/[a-zA-Z]/) + return 'PASSWORD_LETTER_NUMBER_MISSING' unless password.match?(/[0-9]/) + + zxcvbn = Zxcvbn.test(password) + return 'PASSWORD_WEAK' if zxcvbn.score < 2 + + true end end diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 9438e80..fdbcbd8 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -1,7 +1,7 @@ - Coding Challenge + Genevieve's Wealthfront Version <%= csrf_meta_tags %> <%= csp_meta_tag %> diff --git a/bin/rails b/bin/rails old mode 100644 new mode 100755 diff --git a/config/routes.rb b/config/routes.rb index 0609320..4095a9b 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,6 +1,10 @@ Rails.application.routes.draw do # Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html + resources :sessions, only: [:create, :destroy] get '/', to: 'application#render_react', as: :root get 'signup/*all', to: 'application#render_react', as: :signup + get 'create-account', to: 'application#render_react', as: :createAccount + + post 'api/validate_account', to: 'api#validate_account' end diff --git a/db/migrate/20251016164647_add_sessions_table.rb b/db/migrate/20251016164647_add_sessions_table.rb new file mode 100644 index 0000000..0f48db9 --- /dev/null +++ b/db/migrate/20251016164647_add_sessions_table.rb @@ -0,0 +1,12 @@ +class AddSessionsTable < ActiveRecord::Migration[7.0] + def change + create_table :sessions do |t| + t.string :session_id, :null => false + t.text :data + t.timestamps + end + + add_index :sessions, :session_id, :unique => true + add_index :sessions, :updated_at + end +end diff --git a/db/schema.rb b/db/schema.rb index 64994fe..75cc2ae 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,16 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.0].define(version: 2023_09_18_002530) do +ActiveRecord::Schema[7.0].define(version: 2025_10_16_164647) do + create_table "sessions", force: :cascade do |t| + t.string "session_id", null: false + t.text "data" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["session_id"], name: "index_sessions_on_session_id", unique: true + t.index ["updated_at"], name: "index_sessions_on_updated_at" + end + create_table "users", force: :cascade do |t| t.string "username" t.string "password" diff --git a/jest.config.js b/jest.config.js index b914815..d4c41af 100644 --- a/jest.config.js +++ b/jest.config.js @@ -2,4 +2,7 @@ module.exports = { preset: 'ts-jest', testEnvironment: 'jsdom', + moduleNameMapper: { + '^app/(.*)$': '/app/$1', + }, }; diff --git a/package-lock.json b/package-lock.json index 573ed70..de6fba3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,14 +7,19 @@ "": { "version": "0.0.1", "dependencies": { + "classnames": "^2.5.1", "react": "18.2.0", "react-dom": "18.2.0", "react-router-dom": "6.16.0" }, "devDependencies": { + "@babel/generator": "^7.28.3", "@jest/globals": "^29.7.0", - "@testing-library/jest-dom": "^6.1.3", - "@testing-library/react": "^14.0.0", + "@jridgewell/gen-mapping": "^0.3.13", + "@testing-library/dom": "^10.4.1", + "@testing-library/jest-dom": "^6.9.1", + "@testing-library/react": "^16.3.0", + "@types/jest": "^30.0.0", "@types/node": "18.17.17", "@types/react": "^18.2.21", "@types/react-dom": "18.2.7", @@ -27,14 +32,14 @@ "eslint-plugin-react-hooks": "4.6.0", "eslint-plugin-react-refresh": "0.4.3", "husky": "^8.0.3", - "jest": "29.7.0", + "jest": "^30.2.0", "jest-environment-jsdom": "29.7.0", "jsdom": "^22.1.0", "lint-staged": "^14.0.1", "postcss": "8.4.29", "prettier": "2.8.8", "tailwindcss": "3.3.3", - "ts-jest": "29.1.1", + "ts-jest": "^29.4.5", "typescript": "^5.2.2", "vite": "4.4.9", "vite-plugin-ruby": "3.2.2" @@ -50,10 +55,11 @@ } }, "node_modules/@adobe/css-tools": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.1.tgz", - "integrity": "sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg==", - "dev": true + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.4.tgz", + "integrity": "sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==", + "dev": true, + "license": "MIT" }, "node_modules/@alloc/quick-lru": { "version": "5.2.0", @@ -67,58 +73,49 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.20.tgz", - "integrity": "sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz", + "integrity": "sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.20.tgz", - "integrity": "sha512-Y6jd1ahLubuYweD/zJH+vvOY141v4f9igNQAQ+MBgq9JlHS2iTsZKn1aMsb3vGccZsXI16VzTBw52Xx0DWmtnA==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.22.15", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-module-transforms": "^7.22.20", - "@babel/helpers": "^7.22.15", - "@babel/parser": "^7.22.16", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.22.20", - "@babel/types": "^7.22.19", - "convert-source-map": "^1.7.0", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz", + "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helpers": "^7.28.4", + "@babel/parser": "^7.28.4", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.4", + "@babel/types": "^7.28.4", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", @@ -142,29 +139,32 @@ } }, "node_modules/@babel/generator": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.15.tgz", - "integrity": "sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz", + "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.15", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" + "@babel/parser": "^7.28.3", + "@babel/types": "^7.28.2", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", - "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -177,67 +177,45 @@ "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/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", - "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.15" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.20.tgz", - "integrity": "sha512-dLT7JVWIUUxKOs1UnJUBR3S70YK+pKX6AbJgB2vMIvEkZkrfJDbYDJesnPshtKV4LhDOR3Oc5YULeDizRek+5A==", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.28.3" }, "engines": { "node": ">=6.9.0" @@ -247,98 +225,68 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", - "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.15.tgz", - "integrity": "sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", + "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "node_modules/@babel/parser": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz", + "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "@babel/types": "^7.28.4" }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.22.16", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.16.tgz", - "integrity": "sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==", - "dev": true, "bin": { "parser": "bin/babel-parser.js" }, @@ -382,6 +330,38 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", + "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-import-meta": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", @@ -407,12 +387,13 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", - "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", + "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -493,6 +474,22 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-top-level-await": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", @@ -509,12 +506,13 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", - "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", + "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -566,49 +564,48 @@ } }, "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.20.tgz", - "integrity": "sha512-eU260mPZbU7mZ0N+X10pxXhQFMGTeLb9eFS0mxehS8HZp9o1uSnFeWQuG1UPrlxgA7QoUzFhOnilHDp0AXCyHw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.22.15", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.22.16", - "@babel/types": "^7.22.19", - "debug": "^4.1.0", - "globals": "^11.1.0" + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz", + "integrity": "sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.3", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.4", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4", + "debug": "^4.3.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/types": { - "version": "7.22.19", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.19.tgz", - "integrity": "sha512-P7LAw/LbojPzkgp5oznjE6tQEIWbp4PkkfrZDINTro9zgBRtI324/EYsiSI7lhPbpIQ+DCeR2NNmMWANGGfZsg==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz", + "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.19", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -618,7 +615,42 @@ "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/@emnapi/core": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.5.0.tgz", + "integrity": "sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.1.0", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.5.0.tgz", + "integrity": "sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", + "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } }, "node_modules/@esbuild/darwin-arm64": { "version": "0.18.20", @@ -740,6 +772,53 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -849,129 +928,210 @@ } }, "node_modules/@jest/console": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", - "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.2.0.tgz", + "integrity": "sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", + "@jest/types": "30.2.0", "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", + "chalk": "^4.1.2", + "jest-message-util": "30.2.0", + "jest-util": "30.2.0", "slash": "^3.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@jest/console/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/console/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@sinclair/typebox": "^0.34.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@jest/console/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/console/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/console/node_modules/@sinclair/typebox": { + "version": "0.34.41", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", + "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jest/console/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/chalk?sponsor=1" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@jest/console/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@jest/console/node_modules/ci-info": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console/node_modules/jest-message-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", + "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.2.0", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "micromatch": "^4.0.8", + "pretty-format": "30.2.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" }, "engines": { - "node": ">=7.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@jest/console/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "node_modules/@jest/console/node_modules/jest-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } }, - "node_modules/@jest/console/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/@jest/console/node_modules/jest-util/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "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==", + "node_modules/@jest/console/node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "braces": "^3.0.3", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=8" + "node": ">=8.6" } }, - "node_modules/@jest/core": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", - "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "node_modules/@jest/console/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/console": "^29.7.0", - "@jest/reporters": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/core": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-30.2.0.tgz", + "integrity": "sha512-03W6IhuhjqTlpzh/ojut/pDB2LPRygyWX8ExpgHtQA8H/3K7+1vKmcINx5UzeOX1se6YEsBsOHQ1CRzf3fOwTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "30.2.0", + "@jest/pattern": "30.0.1", + "@jest/reporters": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.7.0", - "jest-config": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-resolve-dependencies": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "jest-watcher": "^29.7.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" + "ansi-escapes": "^4.3.2", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "exit-x": "^0.2.2", + "graceful-fs": "^4.2.11", + "jest-changed-files": "30.2.0", + "jest-config": "30.2.0", + "jest-haste-map": "30.2.0", + "jest-message-util": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-resolve": "30.2.0", + "jest-resolve-dependencies": "30.2.0", + "jest-runner": "30.2.0", + "jest-runtime": "30.2.0", + "jest-snapshot": "30.2.0", + "jest-util": "30.2.0", + "jest-validate": "30.2.0", + "jest-watcher": "30.2.0", + "micromatch": "^4.0.8", + "pretty-format": "30.2.0", + "slash": "^3.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -982,89 +1142,408 @@ } } }, - "node_modules/@jest/core/node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "node_modules/@jest/core/node_modules/@jest/expect-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz", + "integrity": "sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==", "dev": true, + "license": "MIT", "dependencies": { - "type-fest": "^0.21.3" + "@jest/get-type": "30.1.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "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/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/core/node_modules/@jest/transform": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", + "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.27.4", + "@jest/types": "30.2.0", + "@jridgewell/trace-mapping": "^0.3.25", + "babel-plugin-istanbul": "^7.0.1", + "chalk": "^4.1.2", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "micromatch": "^4.0.8", + "pirates": "^4.0.7", + "slash": "^3.0.0", + "write-file-atomic": "^5.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/core/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/core/node_modules/@sinclair/typebox": { + "version": "0.34.41", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", + "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jest/core/node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" }, "engines": { "node": ">=8" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@jest/core/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/@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/babel-plugin-istanbul": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", + "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", "dev": true, + "license": "BSD-3-Clause", + "workspaces": [ + "test/babel-8" + ], "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-instrument": "^6.0.2", + "test-exclude": "^6.0.0" }, "engines": { - "node": ">=10" + "node": ">=12" + } + }, + "node_modules/@jest/core/node_modules/ci-info": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/expect": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", + "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/expect-utils": "30.2.0", + "@jest/get-type": "30.1.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/core/node_modules/jest-diff": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz", + "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/diff-sequences": "30.0.1", + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "pretty-format": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/core/node_modules/jest-haste-map": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", + "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "anymatch": "^3.1.3", + "fb-watchman": "^2.0.2", + "graceful-fs": "^4.2.11", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "jest-worker": "30.2.0", + "micromatch": "^4.0.8", + "walker": "^1.0.8" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.3" + } + }, + "node_modules/@jest/core/node_modules/jest-matcher-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz", + "integrity": "sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "jest-diff": "30.2.0", + "pretty-format": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/core/node_modules/jest-message-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", + "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.2.0", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "micromatch": "^4.0.8", + "pretty-format": "30.2.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/core/node_modules/jest-mock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", + "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/core/node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/core/node_modules/jest-snapshot": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.2.0.tgz", + "integrity": "sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.27.4", + "@babel/generator": "^7.27.5", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.27.1", + "@babel/types": "^7.27.3", + "@jest/expect-utils": "30.2.0", + "@jest/get-type": "30.1.0", + "@jest/snapshot-utils": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "babel-preset-current-node-syntax": "^1.2.0", + "chalk": "^4.1.2", + "expect": "30.2.0", + "graceful-fs": "^4.2.11", + "jest-diff": "30.2.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-util": "30.2.0", + "pretty-format": "30.2.0", + "semver": "^7.7.2", + "synckit": "^0.11.8" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/core/node_modules/jest-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/core/node_modules/jest-util/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/@jest/core/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@jest/core/node_modules/jest-worker": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", + "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "@types/node": "*", + "@ungap/structured-clone": "^1.3.0", + "jest-util": "30.2.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.1.1" }, "engines": { - "node": ">=7.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@jest/core/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "node_modules/@jest/core/node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } }, - "node_modules/@jest/core/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/@jest/core/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/core/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, + "license": "ISC", "engines": { - "node": ">=8" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "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==", + "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/@jest/core/node_modules/type-fest": { @@ -1072,6 +1551,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -1079,6 +1559,30 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@jest/core/node_modules/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@jest/diff-sequences": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", + "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, "node_modules/@jest/environment": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", @@ -1136,6 +1640,16 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/@jest/get-type": { + "version": "30.1.0", + "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", + "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, "node_modules/@jest/globals": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", @@ -1151,39 +1665,63 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/@jest/pattern": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", + "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-regex-util": "30.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/pattern/node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, "node_modules/@jest/reporters": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", - "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.2.0.tgz", + "integrity": "sha512-DRyW6baWPqKMa9CzeiBjHwjd8XeAyco2Vt8XbcLFjiwCOEKOvy82GJ8QQnJE9ofsxCMPjH4MfH8fCWIHHDKpAQ==", "dev": true, + "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", + "@jest/console": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "@jridgewell/trace-mapping": "^0.3.25", "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", + "chalk": "^4.1.2", + "collect-v8-coverage": "^1.0.2", + "exit-x": "^0.2.2", + "glob": "^10.3.10", + "graceful-fs": "^4.2.11", "istanbul-lib-coverage": "^3.0.0", "istanbul-lib-instrument": "^6.0.0", "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", + "istanbul-lib-source-maps": "^5.0.0", "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", + "jest-message-util": "30.2.0", + "jest-util": "30.2.0", + "jest-worker": "30.2.0", "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", + "string-length": "^4.0.2", "v8-to-istanbul": "^9.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -1194,407 +1732,832 @@ } } }, - "node_modules/@jest/reporters/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/reporters/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@sinclair/typebox": "^0.34.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@jest/reporters/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/reporters/node_modules/@jest/transform": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", + "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@babel/core": "^7.27.4", + "@jest/types": "30.2.0", + "@jridgewell/trace-mapping": "^0.3.25", + "babel-plugin-istanbul": "^7.0.1", + "chalk": "^4.1.2", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "micromatch": "^4.0.8", + "pirates": "^4.0.7", + "slash": "^3.0.0", + "write-file-atomic": "^5.0.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@jest/reporters/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@jest/reporters/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" }, "engines": { - "node": ">=7.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@jest/reporters/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@jest/reporters/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/@jest/reporters/node_modules/@sinclair/typebox": { + "version": "0.34.41", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", + "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", "dev": true, - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "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==", + "node_modules/@jest/reporters/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, - "dependencies": { - "has-flag": "^4.0.0" - }, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "node_modules/@jest/reporters/node_modules/babel-plugin-istanbul": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", + "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", "dev": true, + "license": "BSD-3-Clause", + "workspaces": [ + "test/babel-8" + ], "dependencies": { - "@sinclair/typebox": "^0.27.8" + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-instrument": "^6.0.2", + "test-exclude": "^6.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12" } }, - "node_modules/@jest/source-map": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "node_modules/@jest/reporters/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, + "balanced-match": "^1.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/ci-info": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/@jest/test-result": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "node_modules/@jest/reporters/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, + "license": "ISC", "dependencies": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@jest/test-sequencer": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "node_modules/@jest/reporters/node_modules/jest-haste-map": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", + "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "slash": "^3.0.0" + "@jest/types": "30.2.0", + "@types/node": "*", + "anymatch": "^3.1.3", + "fb-watchman": "^2.0.2", + "graceful-fs": "^4.2.11", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "jest-worker": "30.2.0", + "micromatch": "^4.0.8", + "walker": "^1.0.8" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.3" } }, - "node_modules/@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "node_modules/@jest/reporters/node_modules/jest-message-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", + "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.2.0", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "micromatch": "^4.0.8", + "pretty-format": "30.2.0", "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" + "stack-utils": "^2.0.6" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@jest/transform/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/reporters/node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, + "license": "MIT", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@jest/transform/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/reporters/node_modules/jest-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" }, "engines": { - "node": ">=10" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/jest-util/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/@jest/transform/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@jest/reporters/node_modules/jest-worker": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", + "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "@types/node": "*", + "@ungap/structured-clone": "^1.3.0", + "jest-util": "30.2.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.1.1" }, "engines": { - "node": ">=7.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@jest/transform/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@jest/transform/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "node_modules/@jest/transform/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/@jest/reporters/node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, "engines": { - "node": ">=8" + "node": ">=8.6" } }, - "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==", + "node_modules/@jest/reporters/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": { - "has-flag": "^4.0.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/@jest/reporters/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@jest/types/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/reporters/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, + "license": "ISC", "engines": { - "node": ">=8" + "node": ">=14" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@jest/types/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/reporters/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": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "has-flag": "^4.0.0" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/@jest/types/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@jest/reporters/node_modules/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", "dev": true, + "license": "ISC", "dependencies": { - "color-name": "~1.1.4" + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=7.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@jest/types/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@jest/types/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "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==", + "node_modules/@jest/snapshot-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.2.0.tgz", + "integrity": "sha512-0aVxM3RH6DaiLcjj/b0KrIBZhSX1373Xci4l3cW5xiUWPctZ59zQ7jj4rqcJQ/Z8JuN/4wX3FpJSa3RssVvCug==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@jest/types": "30.2.0", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "natural-compare": "^1.4.0" }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "node_modules/@jest/snapshot-utils/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@sinclair/typebox": "^0.34.0" }, "engines": { - "node": ">=6.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "node_modules/@jest/snapshot-utils/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", "dev": true, + "license": "MIT", + "dependencies": { + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, "engines": { - "node": ">=6.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "node_modules/@jest/snapshot-utils/node_modules/@sinclair/typebox": { + "version": "0.34.41", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", + "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true + "license": "MIT" }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", - "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", + "node_modules/@jest/source-map": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz", + "integrity": "sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "@jridgewell/trace-mapping": "^0.3.25", + "callsites": "^3.1.0", + "graceful-fs": "^4.2.11" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "node_modules/@jest/test-result": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.2.0.tgz", + "integrity": "sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg==", "dev": true, + "license": "MIT", "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "@jest/console": "30.2.0", + "@jest/types": "30.2.0", + "@types/istanbul-lib-coverage": "^2.0.6", + "collect-v8-coverage": "^1.0.2" }, "engines": { - "node": ">= 8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "node_modules/@jest/test-result/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, "engines": { - "node": ">= 8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/@jest/test-result/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", "dev": true, + "license": "MIT", "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" }, "engines": { - "node": ">= 8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@remix-run/router": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.9.0.tgz", + "node_modules/@jest/test-result/node_modules/@sinclair/typebox": { + "version": "0.34.41", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", + "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jest/test-sequencer": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.2.0.tgz", + "integrity": "sha512-wXKgU/lk8fKXMu/l5Hog1R61bL4q5GCdT6OJvdAFz1P+QrpoFuLU68eoKuVc4RbrTtNnTL5FByhWdLgOPSph+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "30.2.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/test-sequencer/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/test-sequencer/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/test-sequencer/node_modules/@sinclair/typebox": { + "version": "0.34.41", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", + "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jest/test-sequencer/node_modules/ci-info": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/test-sequencer/node_modules/jest-haste-map": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", + "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "anymatch": "^3.1.3", + "fb-watchman": "^2.0.2", + "graceful-fs": "^4.2.11", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "jest-worker": "30.2.0", + "micromatch": "^4.0.8", + "walker": "^1.0.8" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.3" + } + }, + "node_modules/@jest/test-sequencer/node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/test-sequencer/node_modules/jest-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/test-sequencer/node_modules/jest-util/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@jest/test-sequencer/node_modules/jest-worker": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", + "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@ungap/structured-clone": "^1.3.0", + "jest-util": "30.2.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.1.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/test-sequencer/node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/@jest/test-sequencer/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/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pkgr/core": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" + } + }, + "node_modules/@remix-run/router": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.9.0.tgz", "integrity": "sha512-bV63itrKBC0zdT27qYm6SDZHlkXwFL1xMBuhkn+X7l0+IIhNaH5wuuvZKp6eKhCD4KFhujhfhCT1YxXW6esUIA==", "engines": { "node": ">=14.0.0" @@ -1607,10 +2570,11 @@ "dev": true }, "node_modules/@sinonjs/commons": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", - "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "type-detect": "4.0.8" } @@ -1684,106 +2648,49 @@ "dev": true }, "node_modules/@testing-library/dom": { - "version": "9.3.3", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.3.tgz", - "integrity": "sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw==", + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz", + "integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", "@types/aria-query": "^5.0.1", - "aria-query": "5.1.3", - "chalk": "^4.1.0", + "aria-query": "5.3.0", "dom-accessibility-api": "^0.5.9", "lz-string": "^1.5.0", + "picocolors": "1.1.1", "pretty-format": "^27.0.2" }, "engines": { - "node": ">=14" + "node": ">=18" } }, - "node_modules/@testing-library/dom/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/@testing-library/dom/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@testing-library/dom/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/@testing-library/dom/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, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@testing-library/dom/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@testing-library/dom/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@testing-library/dom/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@testing-library/dom/node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@testing-library/dom/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, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/@testing-library/dom/node_modules/react-is": { @@ -1792,142 +2699,59 @@ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "dev": true }, - "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, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@testing-library/jest-dom": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.1.3.tgz", - "integrity": "sha512-YzpjRHoCBWPzpPNtg6gnhasqtE/5O4qz8WCwDEaxtfnPO6gkaLrnuXusrGSPyhIGPezr1HM7ZH0CFaUTY9PJEQ==", + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.9.1.tgz", + "integrity": "sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==", "dev": true, + "license": "MIT", "dependencies": { - "@adobe/css-tools": "^4.3.0", - "@babel/runtime": "^7.9.2", + "@adobe/css-tools": "^4.4.0", "aria-query": "^5.0.0", - "chalk": "^3.0.0", "css.escape": "^1.5.1", - "dom-accessibility-api": "^0.5.6", - "lodash": "^4.17.15", + "dom-accessibility-api": "^0.6.3", + "picocolors": "^1.1.1", "redent": "^3.0.0" }, "engines": { "node": ">=14", "npm": ">=6", "yarn": ">=1" - }, - "peerDependencies": { - "@jest/globals": ">= 28", - "@types/jest": ">= 28", - "jest": ">= 28", - "vitest": ">= 0.32" - }, - "peerDependenciesMeta": { - "@jest/globals": { - "optional": true - }, - "@types/jest": { - "optional": true - }, - "jest": { - "optional": true - }, - "vitest": { - "optional": true - } - } - }, - "node_modules/@testing-library/jest-dom/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@testing-library/jest-dom/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@testing-library/jest-dom/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@testing-library/jest-dom/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@testing-library/jest-dom/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" } }, - "node_modules/@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==", + "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", + "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } + "license": "MIT" }, "node_modules/@testing-library/react": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-14.0.0.tgz", - "integrity": "sha512-S04gSNJbYE30TlIMLTzv6QCTzt9AqIF5y6s6SzVFILNcNvbV/jU96GeiTPillGQo+Ny64M/5PV7klNYYgv5Dfg==", + "version": "16.3.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.3.0.tgz", + "integrity": "sha512-kFSyxiEDwv1WLl2fgsq6pPBbw5aWKrsY2/noi1Id0TK0UParSF62oFQFGHXIyaG4pp2tEub/Zlel+fjjZILDsw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.12.5", - "@testing-library/dom": "^9.0.0", - "@types/react-dom": "^18.0.0" + "@babel/runtime": "^7.12.5" }, "engines": { - "node": ">=14" + "node": ">=18" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "@testing-library/dom": "^10.0.0", + "@types/react": "^18.0.0 || ^19.0.0", + "@types/react-dom": "^18.0.0 || ^19.0.0", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, "node_modules/@tootallnate/once": { @@ -1939,6 +2763,17 @@ "node": ">= 10" } }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@types/aria-query": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.1.tgz", @@ -1946,10 +2781,11 @@ "dev": true }, "node_modules/@types/babel__core": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.2.tgz", - "integrity": "sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", @@ -1959,50 +2795,34 @@ } }, "node_modules/@types/babel__generator": { - "version": "7.6.5", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.5.tgz", - "integrity": "sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.0.0" } }, "node_modules/@types/babel__template": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.2.tgz", - "integrity": "sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dev": true, + "license": "MIT", "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" } }, "node_modules/@types/babel__traverse": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.2.tgz", - "integrity": "sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.20.7" - } - }, - "node_modules/@types/chai": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.6.tgz", - "integrity": "sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/@types/chai-subset": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.3.tgz", - "integrity": "sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/chai": "*" + "@babel/types": "^7.28.2" } }, "node_modules/@types/graceful-fs": { @@ -2015,10 +2835,11 @@ } }, "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true, + "license": "MIT" }, "node_modules/@types/istanbul-lib-report": { "version": "3.0.0", @@ -2030,123 +2851,352 @@ } }, "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/istanbul-lib-report": "*" } }, "node_modules/@types/jest": { - "version": "29.5.5", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.5.tgz", - "integrity": "sha512-ebylz2hnsWR9mYvmBFbXJXr+33UPc4+ZdxyDXh5w0FlPBTfCVN3wPL+kuOiQt3xvrK419v7XWeAs+AeOksafXg==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-30.0.0.tgz", + "integrity": "sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==", "dev": true, - "optional": true, - "peer": true, + "license": "MIT", "dependencies": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" + "expect": "^30.0.0", + "pretty-format": "^30.0.0" } }, - "node_modules/@types/jsdom": { - "version": "20.0.1", - "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", - "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", + "node_modules/@types/jest/node_modules/@jest/expect-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz", + "integrity": "sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==", "dev": true, + "license": "MIT", "dependencies": { - "@types/node": "*", - "@types/tough-cookie": "*", - "parse5": "^7.0.0" + "@jest/get-type": "30.1.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@types/json-schema": { - "version": "7.0.13", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz", - "integrity": "sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==", - "dev": true - }, - "node_modules/@types/node": { - "version": "18.17.17", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.17.tgz", - "integrity": "sha512-cOxcXsQ2sxiwkykdJqvyFS+MLQPLvIdwh5l6gNg8qF6s+C7XSkEWOZjK+XhUZd+mYvHV/180g2cnCcIl4l06Pw==", - "dev": true - }, - "node_modules/@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", - "dev": true - }, - "node_modules/@types/react": { - "version": "18.2.21", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.21.tgz", - "integrity": "sha512-neFKG/sBAwGxHgXiIxnbm3/AAVQ/cMRS93hvBpg8xYRbeQSPVABp9U2bRnPf0iI4+Ucdv3plSxKK+3CW2ENJxA==", + "node_modules/@types/jest/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", "dev": true, + "license": "MIT", "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@types/react-dom": { - "version": "18.2.7", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.7.tgz", - "integrity": "sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==", + "node_modules/@types/jest/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", "dev": true, + "license": "MIT", "dependencies": { - "@types/react": "*" + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@types/scheduler": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", - "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", - "dev": true - }, - "node_modules/@types/semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-7aqorHYgdNO4DM36stTiGO3DvKoex9TQRwsJU6vMaFGyqpBA1MNZkz+PG3gaNUPpTAOYhT1WR7M1JyA3fbS9Cw==", - "dev": true - }, - "node_modules/@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true + "node_modules/@types/jest/node_modules/@sinclair/typebox": { + "version": "0.34.41", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", + "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", + "dev": true, + "license": "MIT" }, - "node_modules/@types/tough-cookie": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.3.tgz", - "integrity": "sha512-THo502dA5PzG/sfQH+42Lw3fvmYkceefOspdCwpHRul8ik2Jv1K8I5OZz1AT3/rs46kwgMCe9bSBmDLYkkOMGg==", - "dev": true + "node_modules/@types/jest/node_modules/ci-info": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "node_modules/@types/jest/node_modules/expect": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", + "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", "dev": true, + "license": "MIT", "dependencies": { - "@types/yargs-parser": "*" + "@jest/expect-utils": "30.2.0", + "@jest/get-type": "30.1.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "dev": true + "node_modules/@types/jest/node_modules/jest-diff": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz", + "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/diff-sequences": "30.0.1", + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "pretty-format": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.0.tgz", - "integrity": "sha512-gUqtknHm0TDs1LhY12K2NA3Rmlmp88jK9Tx8vGZMfHeNMLE3GH2e9TRub+y+SOjuYgtOmok+wt1AyDPZqxbNag==", + "node_modules/@types/jest/node_modules/jest-matcher-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz", + "integrity": "sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==", "dev": true, + "license": "MIT", "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.7.0", - "@typescript-eslint/type-utils": "6.7.0", + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "jest-diff": "30.2.0", + "pretty-format": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@types/jest/node_modules/jest-message-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", + "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.2.0", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "micromatch": "^4.0.8", + "pretty-format": "30.2.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@types/jest/node_modules/jest-mock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", + "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@types/jest/node_modules/jest-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@types/jest/node_modules/jest-util/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@types/jest/node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/@types/jest/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@types/jest/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/@types/jsdom": { + "version": "20.0.1", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", + "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/tough-cookie": "*", + "parse5": "^7.0.0" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.13", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz", + "integrity": "sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.17.17", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.17.tgz", + "integrity": "sha512-cOxcXsQ2sxiwkykdJqvyFS+MLQPLvIdwh5l6gNg8qF6s+C7XSkEWOZjK+XhUZd+mYvHV/180g2cnCcIl4l06Pw==", + "dev": true + }, + "node_modules/@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "dev": true + }, + "node_modules/@types/react": { + "version": "18.2.21", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.21.tgz", + "integrity": "sha512-neFKG/sBAwGxHgXiIxnbm3/AAVQ/cMRS93hvBpg8xYRbeQSPVABp9U2bRnPf0iI4+Ucdv3plSxKK+3CW2ENJxA==", + "dev": true, + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.2.7", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.7.tgz", + "integrity": "sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", + "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", + "dev": true + }, + "node_modules/@types/semver": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.2.tgz", + "integrity": "sha512-7aqorHYgdNO4DM36stTiGO3DvKoex9TQRwsJU6vMaFGyqpBA1MNZkz+PG3gaNUPpTAOYhT1WR7M1JyA3fbS9Cw==", + "dev": true + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/tough-cookie": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.3.tgz", + "integrity": "sha512-THo502dA5PzG/sfQH+42Lw3fvmYkceefOspdCwpHRul8ik2Jv1K8I5OZz1AT3/rs46kwgMCe9bSBmDLYkkOMGg==", + "dev": true + }, + "node_modules/@types/yargs": { + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.0.tgz", + "integrity": "sha512-gUqtknHm0TDs1LhY12K2NA3Rmlmp88jK9Tx8vGZMfHeNMLE3GH2e9TRub+y+SOjuYgtOmok+wt1AyDPZqxbNag==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.7.0", + "@typescript-eslint/type-utils": "6.7.0", "@typescript-eslint/utils": "6.7.0", "@typescript-eslint/visitor-keys": "6.7.0", "debug": "^4.3.4", @@ -2327,149 +3377,316 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@vitejs/plugin-react": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.0.4.tgz", - "integrity": "sha512-7wU921ABnNYkETiMaZy7XqpueMnpu5VxvVps13MjmCo+utBdD79sZzrApHawHtVX66cCJQQTXFcjH0y9dSUK8g==", + "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==", "dev": true, - "dependencies": { - "@babel/core": "^7.22.9", - "@babel/plugin-transform-react-jsx-self": "^7.22.5", - "@babel/plugin-transform-react-jsx-source": "^7.22.5", - "react-refresh": "^0.14.0" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "peerDependencies": { - "vite": "^4.2.0" - } + "license": "ISC" }, - "node_modules/@vitejs/plugin-react-swc": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.3.2.tgz", - "integrity": "sha512-VJFWY5sfoZerQRvJrh518h3AcQt6f/yTuWn4/TRB+dqmYU0NX1qz7qM5Wfd+gOQqUzQW4gxKqKN3KpE/P3+zrA==", + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", + "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "@swc/core": "^1.3.61" - }, - "peerDependencies": { - "vite": "^4" - } + "license": "MIT", + "optional": true, + "os": [ + "android" + ] }, - "node_modules/@vitest/expect": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.34.4.tgz", - "integrity": "sha512-XlMKX8HyYUqB8dsY8Xxrc64J2Qs9pKMt2Z8vFTL4mBWXJsg4yoALHzJfDWi8h5nkO4Zua4zjqtapQ/IluVkSnA==", + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", + "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", + "cpu": [ + "arm64" + ], "dev": true, + "license": "MIT", "optional": true, - "peer": true, - "dependencies": { - "@vitest/spy": "0.34.4", - "@vitest/utils": "0.34.4", - "chai": "^4.3.7" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } + "os": [ + "android" + ] }, - "node_modules/@vitest/runner": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.34.4.tgz", - "integrity": "sha512-hwwdB1StERqUls8oV8YcpmTIpVeJMe4WgYuDongVzixl5hlYLT2G8afhcdADeDeqCaAmZcSgLTLtqkjPQF7x+w==", + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", + "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", + "cpu": [ + "arm64" + ], "dev": true, + "license": "MIT", "optional": true, - "peer": true, - "dependencies": { - "@vitest/utils": "0.34.4", - "p-limit": "^4.0.0", - "pathe": "^1.1.1" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } + "os": [ + "darwin" + ] }, - "node_modules/@vitest/runner/node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", + "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", + "cpu": [ + "x64" + ], "dev": true, + "license": "MIT", "optional": true, - "peer": true, - "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "os": [ + "darwin" + ] }, - "node_modules/@vitest/runner/node_modules/yocto-queue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", + "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", + "cpu": [ + "x64" + ], "dev": true, + "license": "MIT", "optional": true, - "peer": true, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "os": [ + "freebsd" + ] }, - "node_modules/@vitest/snapshot": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.34.4.tgz", - "integrity": "sha512-GCsh4coc3YUSL/o+BPUo7lHQbzpdttTxL6f4q0jRx2qVGoYz/cyTRDJHbnwks6TILi6560bVWoBpYC10PuTLHw==", + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", + "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", + "cpu": [ + "arm" + ], "dev": true, + "license": "MIT", "optional": true, - "peer": true, - "dependencies": { - "magic-string": "^0.30.1", - "pathe": "^1.1.1", - "pretty-format": "^29.5.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } + "os": [ + "linux" + ] }, - "node_modules/@vitest/spy": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.34.4.tgz", - "integrity": "sha512-PNU+fd7DUPgA3Ya924b1qKuQkonAW6hL7YUjkON3wmBwSTIlhOSpy04SJ0NrRsEbrXgMMj6Morh04BMf8k+w0g==", + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", + "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", + "cpu": [ + "arm" + ], "dev": true, + "license": "MIT", "optional": true, - "peer": true, - "dependencies": { - "tinyspy": "^2.1.1" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } + "os": [ + "linux" + ] }, - "node_modules/@vitest/utils": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.34.4.tgz", - "integrity": "sha512-yR2+5CHhp/K4ySY0Qtd+CAL9f5Yh1aXrKfAT42bq6CtlGPh92jIDDDSg7ydlRow1CP+dys4TrOrbELOyNInHSg==", + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", + "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", + "cpu": [ + "arm64" + ], "dev": true, + "license": "MIT", "optional": true, - "peer": true, - "dependencies": { - "diff-sequences": "^29.4.3", - "loupe": "^2.3.6", - "pretty-format": "^29.5.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } + "os": [ + "linux" + ] }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", + "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", + "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", + "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", + "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", + "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", + "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", + "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", + "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.11" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", + "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", + "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", + "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.0.4.tgz", + "integrity": "sha512-7wU921ABnNYkETiMaZy7XqpueMnpu5VxvVps13MjmCo+utBdD79sZzrApHawHtVX66cCJQQTXFcjH0y9dSUK8g==", + "dev": true, + "dependencies": { + "@babel/core": "^7.22.9", + "@babel/plugin-transform-react-jsx-self": "^7.22.5", + "@babel/plugin-transform-react-jsx-source": "^7.22.5", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0" + } + }, + "node_modules/@vitejs/plugin-react-swc": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.3.2.tgz", + "integrity": "sha512-VJFWY5sfoZerQRvJrh518h3AcQt6f/yTuWn4/TRB+dqmYU0NX1qz7qM5Wfd+gOQqUzQW4gxKqKN3KpE/P3+zrA==", + "dev": true, + "dependencies": { + "@swc/core": "^1.3.61" + }, + "peerDependencies": { + "vite": "^4" + } + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", "dev": true }, "node_modules/acorn": { @@ -2577,15 +3794,19 @@ } }, "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": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^1.9.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/any-promise": { @@ -2620,25 +3841,13 @@ "dev": true }, "node_modules/aria-query": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", - "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", - "dev": true, - "dependencies": { - "deep-equal": "^2.0.5" - } - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dequal": "^2.0.3" } }, "node_modules/array-union": { @@ -2650,17 +3859,6 @@ "node": ">=8" } }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": "*" - } - }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -2704,202 +3902,366 @@ "postcss": "^8.1.0" } }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/babel-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", - "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", - "dev": true, - "dependencies": { - "@jest/transform": "^29.7.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.6.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.2.0.tgz", + "integrity": "sha512-0YiBEOxWqKkSQWL9nNGGEgndoeL0ZpWrbLMNL5u/Kaxrli3Eaxlt3ZtIDktEvXt4L/R9r3ODr2zKwGM/2BjxVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/transform": "30.2.0", + "@types/babel__core": "^7.20.5", + "babel-plugin-istanbul": "^7.0.1", + "babel-preset-jest": "30.2.0", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", "slash": "^3.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { - "@babel/core": "^7.8.0" + "@babel/core": "^7.11.0 || ^8.0.0-0" } }, - "node_modules/babel-jest/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/babel-jest/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@sinclair/typebox": "^0.34.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/babel-jest/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/babel-jest/node_modules/@jest/transform": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", + "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@babel/core": "^7.27.4", + "@jest/types": "30.2.0", + "@jridgewell/trace-mapping": "^0.3.25", + "babel-plugin-istanbul": "^7.0.1", + "chalk": "^4.1.2", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "micromatch": "^4.0.8", + "pirates": "^4.0.7", + "slash": "^3.0.0", + "write-file-atomic": "^5.0.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/babel-jest/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/babel-jest/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" }, "engines": { - "node": ">=7.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/babel-jest/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/babel-jest/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/babel-jest/node_modules/@sinclair/typebox": { + "version": "0.34.41", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", + "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", "dev": true, - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "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==", + "node_modules/babel-jest/node_modules/babel-plugin-istanbul": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", + "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", "dev": true, + "license": "BSD-3-Clause", + "workspaces": [ + "test/babel-8" + ], "dependencies": { - "has-flag": "^4.0.0" + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-instrument": "^6.0.2", + "test-exclude": "^6.0.0" }, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "node_modules/babel-jest/node_modules/ci-info": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "node_modules/babel-jest/node_modules/jest-haste-map": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", + "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" + "@jest/types": "30.2.0", + "@types/node": "*", + "anymatch": "^3.1.3", + "fb-watchman": "^2.0.2", + "graceful-fs": "^4.2.11", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "jest-worker": "30.2.0", + "micromatch": "^4.0.8", + "walker": "^1.0.8" }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.3" } }, - "node_modules/babel-plugin-istanbul/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/babel-jest/node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", "dev": true, - "bin": { - "semver": "bin/semver.js" + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/babel-plugin-jest-hoist": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", - "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "node_modules/babel-jest/node_modules/jest-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "node_modules/babel-jest/node_modules/jest-util/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/babel-jest/node_modules/jest-worker": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", + "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@ungap/structured-clone": "^1.3.0", + "jest-util": "30.2.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.1.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/babel-jest/node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/babel-jest/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/babel-jest/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/babel-jest/node_modules/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.2.0.tgz", + "integrity": "sha512-ftzhzSGMUnOzcCXd6WHdBGMyuwy15Wnn0iyyWGKgBDLxf9/s5ABuraCSpBX2uG0jUg4rqJnxsLc5+oYBqoxVaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/babel__core": "^7.20.5" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", + "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.0.0 || ^8.0.0-0" } }, "node_modules/babel-preset-jest": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", - "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.2.0.tgz", + "integrity": "sha512-US4Z3NOieAQumwFnYdUWKvUKh8+YSnS/gB3t6YBiz0bskpu7Pine8pPCheNxlPEW4wnUkma2a94YuW2q3guvCQ==", "dev": true, + "license": "MIT", "dependencies": { - "babel-plugin-jest-hoist": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0" + "babel-plugin-jest-hoist": "30.2.0", + "babel-preset-current-node-syntax": "^1.2.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.11.0 || ^8.0.0-beta.1" } }, "node_modules/balanced-match": { @@ -2908,6 +4270,16 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "node_modules/baseline-browser-mapping": { + "version": "2.8.16", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.16.tgz", + "integrity": "sha512-OMu3BGQ4E7P1ErFsIPpbJh0qvDudM/UuJeHgkAvfWe+0HFJCXh+t/l8L6fVLR55RI/UbKrVLnAXZSVwd9ysWYw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -2928,21 +4300,22 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" } }, "node_modules/browserslist": { - "version": "4.21.10", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", - "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", + "version": "4.26.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.26.3.tgz", + "integrity": "sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==", "dev": true, "funding": [ { @@ -2958,11 +4331,13 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001517", - "electron-to-chromium": "^1.4.477", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.11" + "baseline-browser-mapping": "^2.8.9", + "caniuse-lite": "^1.0.30001746", + "electron-to-chromium": "^1.5.227", + "node-releases": "^2.0.21", + "update-browserslist-db": "^1.1.3" }, "bin": { "browserslist": "cli.js" @@ -2996,31 +4371,8 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/cac": { - "version": "6.7.14", - "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", - "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "license": "MIT" }, "node_modules/callsites": { "version": "3.1.0", @@ -3050,9 +4402,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001534", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001534.tgz", - "integrity": "sha512-vlPVrhsCS7XaSh2VvWluIQEzVhefrUQcEsQWSS5A5V+dM07uv1qHeQzAOTGIMy9i3e9bH15+muvI/UHojVgS/Q==", + "version": "1.0.30001750", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001750.tgz", + "integrity": "sha512-cuom0g5sdX6rw00qOoLNSFCJ9/mYIsuSOA+yzpDw8eopiFqcVwQvZHqov0vmEighRxX++cfC0Vg1G+1Iy/mSpQ==", "dev": true, "funding": [ { @@ -3067,40 +4419,24 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] - }, - "node_modules/chai": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.8.tgz", - "integrity": "sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" - }, - "engines": { - "node": ">=4" - } + ], + "license": "CC-BY-4.0" }, "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/char-regex": { @@ -3108,21 +4444,11 @@ "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } }, - "node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": "*" - } - }, "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -3166,10 +4492,17 @@ } }, "node_modules/cjs-module-lexer": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", - "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", - "dev": true + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.1.0.tgz", + "integrity": "sha512-UX0OwmYRYQQetfrLEZeewIFFI+wSTofC+pMBLNuH3RUuu/xzG1oz84UCEDOSoQlN3fZ4+AzmV50ZYvGqkMh9yA==", + "dev": true, + "license": "MIT" + }, + "node_modules/classnames": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==", + "license": "MIT" }, "node_modules/cli-cursor": { "version": "4.0.0", @@ -3207,6 +4540,7 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -3216,50 +4550,19 @@ "node": ">=12" } }, - "node_modules/cliui/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/cliui/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/cliui/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/cliui/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cliui/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -3269,6 +4572,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -3283,6 +4587,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -3300,6 +4605,7 @@ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true, + "license": "MIT", "engines": { "iojs": ">= 1.0.0", "node": ">= 0.12.0" @@ -3309,22 +4615,28 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", - "dev": true + "dev": true, + "license": "MIT" }, "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==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "1.1.3" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, "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 + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" }, "node_modules/colorette": { "version": "2.0.20", @@ -3360,132 +4672,43 @@ "dev": true }, "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" }, - "node_modules/create-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", - "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "prompts": "^2.0.1" - }, - "bin": { - "create-jest": "bin/create-jest.js" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 8" } }, - "node_modules/create-jest/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/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "dev": true + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, - "dependencies": { - "color-convert": "^2.0.1" + "bin": { + "cssesc": "bin/cssesc" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/create-jest/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/create-jest/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/create-jest/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/create-jest/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/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, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/css.escape": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", - "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", - "dev": true - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" + "node": ">=4" } }, "node_modules/cssom": { @@ -3550,10 +4773,11 @@ "dev": true }, "node_modules/dedent": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", - "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.0.tgz", + "integrity": "sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ==", "dev": true, + "license": "MIT", "peerDependencies": { "babel-plugin-macros": "^3.1.0" }, @@ -3563,49 +4787,6 @@ } } }, - "node_modules/deep-eql": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/deep-equal": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.2.tgz", - "integrity": "sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "es-get-iterator": "^1.1.3", - "get-intrinsic": "^1.2.1", - "is-arguments": "^1.1.1", - "is-array-buffer": "^3.0.2", - "is-date-object": "^1.0.5", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "isarray": "^2.0.5", - "object-is": "^1.1.5", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.0", - "side-channel": "^1.0.4", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -3617,41 +4798,11 @@ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -3661,11 +4812,22 @@ "node": ">=0.4.0" } }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/detect-newline": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -3740,16 +4902,18 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.523", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.523.tgz", - "integrity": "sha512-9AreocSUWnzNtvLcbpng6N+GkXnCcBR80IQkxRC9Dfdyg4gaWNUPBujAHUpKkiUkoSoR9UlhA4zD/IgBklmhzg==", - "dev": true + "version": "1.5.234", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.234.tgz", + "integrity": "sha512-RXfEp2x+VRYn8jbKfQlRImzoJU01kyDvVPBmG39eU2iuRVhuS6vQNocB8J0/8GrIMLnPzgz4eW6WiRnJkTuNWg==", + "dev": true, + "license": "ISC" }, "node_modules/emittery": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -3776,34 +4940,15 @@ } }, "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", "dev": true, + "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } }, - "node_modules/es-get-iterator": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", - "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "is-arguments": "^1.1.1", - "is-map": "^2.0.2", - "is-set": "^2.0.2", - "is-string": "^1.0.7", - "isarray": "^2.0.5", - "stop-iteration-iterator": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/esbuild": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", @@ -3842,23 +4987,15 @@ } }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/escodegen": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", @@ -3983,55 +5120,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/eslint/node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -4071,27 +5159,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/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, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/espree": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", @@ -4193,11 +5260,12 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "node_modules/exit-x": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz", + "integrity": "sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8.0" } @@ -4283,10 +5351,11 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -4330,13 +5399,34 @@ "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", "dev": true }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, + "license": "ISC", "dependencies": { - "is-callable": "^1.1.3" + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/form-data": { @@ -4392,15 +5482,6 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -4415,36 +5496,11 @@ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, + "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": "*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/get-package-type": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", @@ -4498,15 +5554,6 @@ "node": ">= 6" } }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", @@ -4527,18 +5574,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -4551,20 +5586,26 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, - "node_modules/happy-dom": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-12.0.1.tgz", - "integrity": "sha512-kBH54b92GFP3pn9tdMBAtjNHoddE4om6vfFoTme2PCG6u/YYiYKas2yxJCd5MAINX+pYfalfpUKQHVQDTljLnw==", + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", "dev": true, - "optional": true, - "peer": true, + "license": "MIT", "dependencies": { - "css.escape": "^1.5.1", - "entities": "^4.5.0", - "iconv-lite": "^0.6.3", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0" + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" } }, "node_modules/has": { @@ -4579,73 +5620,14 @@ "node": ">= 0.4.0" } }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, + "license": "MIT", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, "node_modules/html-encoding-sniffer": { @@ -4664,7 +5646,8 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/http-proxy-agent": { "version": "5.0.0", @@ -4755,10 +5738,11 @@ } }, "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", "dev": true, + "license": "MIT", "dependencies": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" @@ -4807,67 +5791,12 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "license": "MIT" }, "node_modules/is-binary-path": { "version": "2.1.0", @@ -4881,34 +5810,6 @@ "node": ">=8" } }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-core-module": { "version": "2.13.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", @@ -4921,21 +5822,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -4962,6 +5848,7 @@ "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -4978,39 +5865,16 @@ "node": ">=0.10.0" } }, - "node_modules/is-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", - "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -5026,43 +5890,6 @@ "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", "dev": true }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-set": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", - "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", @@ -5075,79 +5902,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", - "dev": true, - "dependencies": { - "which-typed-array": "^1.1.11" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", - "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", - "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -5164,14 +5918,15 @@ } }, "node_modules/istanbul-lib-instrument": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.0.tgz", - "integrity": "sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", "istanbul-lib-coverage": "^3.2.0", "semver": "^7.5.4" }, @@ -5184,6 +5939,7 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^4.0.0", @@ -5193,46 +5949,27 @@ "node": ">=10" } }, - "node_modules/istanbul-lib-report/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/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, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", + "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { + "@jridgewell/trace-mapping": "^0.3.23", "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" + "istanbul-lib-coverage": "^3.0.0" }, "engines": { "node": ">=10" } }, "node_modules/istanbul-reports": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" @@ -5241,22 +5978,39 @@ "node": ">=8" } }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", - "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-30.2.0.tgz", + "integrity": "sha512-F26gjC0yWN8uAA5m5Ss8ZQf5nDHWGlN/xWZIh8S5SRbsEKBovwZhxGd6LJlbZYxBgCYOtreSUyb8hpXyGC5O4A==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/core": "^29.7.0", - "@jest/types": "^29.6.3", - "import-local": "^3.0.2", - "jest-cli": "^29.7.0" + "@jest/core": "30.2.0", + "@jest/types": "30.2.0", + "import-local": "^3.2.0", + "jest-cli": "30.2.0" }, "bin": { "jest": "bin/jest.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -5268,17 +6022,73 @@ } }, "node_modules/jest-changed-files": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", - "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.2.0.tgz", + "integrity": "sha512-L8lR1ChrRnSdfeOvTrwZMlnWV8G/LLjQ0nG9MBclwWZidA2N5FviRki0Bvh20WRMOX31/JYvzdqTJrk5oBdydQ==", "dev": true, + "license": "MIT", "dependencies": { - "execa": "^5.0.0", - "jest-util": "^29.7.0", + "execa": "^5.1.1", + "jest-util": "30.2.0", "p-limit": "^3.1.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-changed-files/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-changed-files/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-changed-files/node_modules/@sinclair/typebox": { + "version": "0.34.41", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", + "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-changed-files/node_modules/ci-info": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" } }, "node_modules/jest-changed-files/node_modules/execa": { @@ -5286,6 +6096,7 @@ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, + "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -5309,6 +6120,7 @@ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=10.17.0" } @@ -5318,6 +6130,7 @@ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -5325,11 +6138,30 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/jest-changed-files/node_modules/jest-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, "node_modules/jest-changed-files/node_modules/mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -5339,6 +6171,7 @@ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.0.0" }, @@ -5351,6 +6184,7 @@ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, + "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" }, @@ -5361,536 +6195,1132 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/jest-changed-files/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/jest-changed-files/node_modules/strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/jest-circus": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", - "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.2.0.tgz", + "integrity": "sha512-Fh0096NC3ZkFx05EP2OXCxJAREVxj1BcW/i6EWqqymcgYKWjyyDpral3fMxVcHXg6oZM7iULer9wGRFvfpl+Tg==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", + "@jest/environment": "30.2.0", + "@jest/expect": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/types": "30.2.0", "@types/node": "*", - "chalk": "^4.0.0", + "chalk": "^4.1.2", "co": "^4.6.0", - "dedent": "^1.0.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.7.0", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", + "dedent": "^1.6.0", + "is-generator-fn": "^2.1.0", + "jest-each": "30.2.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-runtime": "30.2.0", + "jest-snapshot": "30.2.0", + "jest-util": "30.2.0", "p-limit": "^3.1.0", - "pretty-format": "^29.7.0", - "pure-rand": "^6.0.0", + "pretty-format": "30.2.0", + "pure-rand": "^7.0.0", "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "stack-utils": "^2.0.6" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.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/@jest/environment": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz", + "integrity": "sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@jest/fake-timers": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-mock": "30.2.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "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/@jest/expect": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.2.0.tgz", + "integrity": "sha512-V9yxQK5erfzx99Sf+7LbhBwNWEZ9eZay8qQ9+JSC0TrMR1pMDHLMY+BnVPacWU6Jamrh252/IKo4F1Xn/zfiqA==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "expect": "30.2.0", + "jest-snapshot": "30.2.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-circus/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/jest-circus/node_modules/@jest/expect-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz", + "integrity": "sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "@jest/get-type": "30.1.0" }, "engines": { - "node": ">=7.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-circus/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-circus/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/jest-circus/node_modules/@jest/fake-timers": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz", + "integrity": "sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==", "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@sinonjs/fake-timers": "^13.0.0", + "@types/node": "*", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" + }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "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==", + "node_modules/jest-circus/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@sinclair/typebox": "^0.34.0" }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-cli": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", - "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "node_modules/jest-circus/node_modules/@jest/transform": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", + "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/core": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "create-jest": "^29.7.0", - "exit": "^0.1.2", - "import-local": "^3.0.2", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "yargs": "^17.3.1" - }, - "bin": { - "jest": "bin/jest.js" + "@babel/core": "^7.27.4", + "@jest/types": "30.2.0", + "@jridgewell/trace-mapping": "^0.3.25", + "babel-plugin-istanbul": "^7.0.1", + "chalk": "^4.1.2", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "micromatch": "^4.0.8", + "pirates": "^4.0.7", + "slash": "^3.0.0", + "write-file-atomic": "^5.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-cli/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/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-cli/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/@sinclair/typebox": { + "version": "0.34.41", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", + "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-circus/node_modules/@sinonjs/fake-timers": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", + "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "@sinonjs/commons": "^3.0.1" + } + }, + "node_modules/jest-circus/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/chalk?sponsor=1" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-cli/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/jest-circus/node_modules/babel-plugin-istanbul": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", + "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", "dev": true, + "license": "BSD-3-Clause", + "workspaces": [ + "test/babel-8" + ], "dependencies": { - "color-name": "~1.1.4" + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-instrument": "^6.0.2", + "test-exclude": "^6.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=12" } }, - "node_modules/jest-cli/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-cli/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/jest-circus/node_modules/ci-info": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", "engines": { "node": ">=8" } }, - "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==", + "node_modules/jest-circus/node_modules/expect": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", + "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@jest/expect-utils": "30.2.0", + "@jest/get-type": "30.1.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-config": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", - "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "node_modules/jest-circus/node_modules/jest-diff": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz", + "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-jest": "^29.7.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" + "@jest/diff-sequences": "30.0.1", + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "pretty-format": "30.2.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { - "optional": true - } + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "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-circus/node_modules/jest-haste-map": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", + "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@jest/types": "30.2.0", + "@types/node": "*", + "anymatch": "^3.1.3", + "fb-watchman": "^2.0.2", + "graceful-fs": "^4.2.11", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "jest-worker": "30.2.0", + "micromatch": "^4.0.8", + "walker": "^1.0.8" }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "optionalDependencies": { + "fsevents": "^2.3.3" } }, - "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-circus/node_modules/jest-matcher-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz", + "integrity": "sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "jest-diff": "30.2.0", + "pretty-format": "30.2.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-config/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/jest-circus/node_modules/jest-message-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", + "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.2.0", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "micromatch": "^4.0.8", + "pretty-format": "30.2.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" }, "engines": { - "node": ">=7.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-config/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "node_modules/jest-circus/node_modules/jest-mock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", + "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } }, - "node_modules/jest-config/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/jest-circus/node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "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==", + "node_modules/jest-circus/node_modules/jest-snapshot": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.2.0.tgz", + "integrity": "sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@babel/core": "^7.27.4", + "@babel/generator": "^7.27.5", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.27.1", + "@babel/types": "^7.27.3", + "@jest/expect-utils": "30.2.0", + "@jest/get-type": "30.1.0", + "@jest/snapshot-utils": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "babel-preset-current-node-syntax": "^1.2.0", + "chalk": "^4.1.2", + "expect": "30.2.0", + "graceful-fs": "^4.2.11", + "jest-diff": "30.2.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-util": "30.2.0", + "pretty-format": "30.2.0", + "semver": "^7.7.2", + "synckit": "^0.11.8" }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "node_modules/jest-circus/node_modules/jest-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.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-circus/node_modules/jest-util/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-circus/node_modules/jest-worker": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", + "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@types/node": "*", + "@ungap/structured-clone": "^1.3.0", + "jest-util": "30.2.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.1.1" }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-circus/node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/jest-circus/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-circus/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "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-circus/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": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "has-flag": "^4.0.0" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/jest-diff/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/jest-circus/node_modules/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", "dev": true, + "license": "ISC", "dependencies": { - "color-name": "~1.1.4" + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=7.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/jest-diff/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "node_modules/jest-cli": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.2.0.tgz", + "integrity": "sha512-Os9ukIvADX/A9sLt6Zse3+nmHtHaE6hqOsjQtNiugFTbKRHYIYtZXNGNK9NChseXy7djFPjndX1tL0sCTlfpAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/types": "30.2.0", + "chalk": "^4.1.2", + "exit-x": "^0.2.2", + "import-local": "^3.2.0", + "jest-config": "30.2.0", + "jest-util": "30.2.0", + "jest-validate": "30.2.0", + "yargs": "^17.7.2" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } }, - "node_modules/jest-diff/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/jest-cli/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "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==", + "node_modules/jest-cli/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-cli/node_modules/@sinclair/typebox": { + "version": "0.34.41", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", + "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-cli/node_modules/ci-info": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", "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==", + "node_modules/jest-cli/node_modules/jest-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", "dev": true, + "license": "MIT", "dependencies": { - "detect-newline": "^3.0.0" + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-each": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", - "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "node_modules/jest-cli/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-config": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.2.0.tgz", + "integrity": "sha512-g4WkyzFQVWHtu6uqGmQR4CQxz/CH3yDSlhzXMWzNjDx843gYjReZnMRanjRCq5XZFuQrGDxgUaiYWE8BRfVckA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.27.4", + "@jest/get-type": "30.1.0", + "@jest/pattern": "30.0.1", + "@jest/test-sequencer": "30.2.0", + "@jest/types": "30.2.0", + "babel-jest": "30.2.0", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "deepmerge": "^4.3.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.11", + "jest-circus": "30.2.0", + "jest-docblock": "30.2.0", + "jest-environment-node": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-resolve": "30.2.0", + "jest-runner": "30.2.0", + "jest-util": "30.2.0", + "jest-validate": "30.2.0", + "micromatch": "^4.0.8", + "parse-json": "^5.2.0", + "pretty-format": "30.2.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "esbuild-register": ">=3.4.0", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "esbuild-register": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-config/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "jest-util": "^29.7.0", - "pretty-format": "^29.7.0" + "@sinclair/typebox": "^0.34.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.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-config/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-config/node_modules/@sinclair/typebox": { + "version": "0.34.41", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", + "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-config/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/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-config/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "balanced-match": "^1.0.0" + } + }, + "node_modules/jest-config/node_modules/ci-info": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=8" + } + }, + "node_modules/jest-config/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-each/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/jest-config/node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-config/node_modules/jest-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" }, "engines": { - "node": ">=7.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-each/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "node_modules/jest-config/node_modules/jest-util/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } }, - "node_modules/jest-each/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/jest-config/node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, "engines": { - "node": ">=8" + "node": ">=8.6" } }, - "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==", + "node_modules/jest-config/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": { - "has-flag": "^4.0.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-environment-jsdom": { + "node_modules/jest-config/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-diff": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", - "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", "dev": true, "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/jsdom": "^20.0.0", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0", - "jsdom": "^20.0.0" + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { + } + }, + "node_modules/jest-docblock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz", + "integrity": "sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "detect-newline": "^3.1.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-each": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.2.0.tgz", + "integrity": "sha512-lpWlJlM7bCUf1mfmuqTA8+j2lNURW9eNafOy99knBM01i5CQeY5UH1vZjgT9071nDJac1M4XsbyI44oNOdhlDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "@jest/types": "30.2.0", + "chalk": "^4.1.2", + "jest-util": "30.2.0", + "pretty-format": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-each/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-each/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-each/node_modules/@sinclair/typebox": { + "version": "0.34.41", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", + "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-each/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/jest-each/node_modules/ci-info": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-each/node_modules/jest-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-each/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-each/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-environment-jsdom": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", + "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/jsdom": "^20.0.0", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0", + "jsdom": "^20.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jest-environment-jsdom/node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-environment-jsdom/node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "node_modules/jest-environment-jsdom/node_modules/data-urls": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "dev": true, + "dependencies": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/jest-environment-jsdom/node_modules/jsdom": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", + "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", + "dev": true, + "dependencies": { + "abab": "^2.0.6", + "acorn": "^8.8.1", + "acorn-globals": "^7.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.2", + "decimal.js": "^10.4.2", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.2", + "parse5": "^7.1.1", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.2", + "w3c-xmlserializer": "^4.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0", + "ws": "^8.11.0", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { "canvas": "^2.5.0" }, "peerDependenciesMeta": { @@ -5899,693 +7329,1973 @@ } } }, - "node_modules/jest-environment-jsdom/node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "node_modules/jest-environment-jsdom/node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dev": true, + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/jest-environment-jsdom/node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dev": true, + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/jest-environment-node": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.2.0.tgz", + "integrity": "sha512-ElU8v92QJ9UrYsKrxDIKCxu6PfNj4Hdcktcn0JX12zqNdqWHB0N+hwOnnBBXvjLd2vApZtuLUGs1QSY+MsXoNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "30.2.0", + "@jest/fake-timers": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-mock": "30.2.0", + "jest-util": "30.2.0", + "jest-validate": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-environment-node/node_modules/@jest/environment": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz", + "integrity": "sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-mock": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-environment-node/node_modules/@jest/fake-timers": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz", + "integrity": "sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@sinonjs/fake-timers": "^13.0.0", + "@types/node": "*", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-environment-node/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-environment-node/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-environment-node/node_modules/@sinclair/typebox": { + "version": "0.34.41", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", + "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-environment-node/node_modules/@sinonjs/fake-timers": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", + "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1" + } + }, + "node_modules/jest-environment-node/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/jest-environment-node/node_modules/ci-info": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-environment-node/node_modules/jest-message-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", + "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.2.0", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "micromatch": "^4.0.8", + "pretty-format": "30.2.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-environment-node/node_modules/jest-mock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", + "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-environment-node/node_modules/jest-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-environment-node/node_modules/jest-util/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-environment-node/node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/jest-environment-node/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-leak-detector": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.2.0.tgz", + "integrity": "sha512-M6jKAjyzjHG0SrQgwhgZGy9hFazcudwCNovY/9HPIicmNSBuockPSedAP9vlPK6ONFJ1zfyH/M2/YYJxOz5cdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "pretty-format": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-leak-detector/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-leak-detector/node_modules/@sinclair/typebox": { + "version": "0.34.41", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", + "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", + "dev": true, + "license": "MIT" + }, + "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", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-leak-detector/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.2.0.tgz", + "integrity": "sha512-TCrHSxPlx3tBY3hWNtRQKbtgLhsXa1WmbJEqBlTBrGafd5fiQFByy2GNCEoGR+Tns8d15GaL9cxEzKOO3GEb2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "jest-pnp-resolver": "^1.2.3", + "jest-util": "30.2.0", + "jest-validate": "30.2.0", + "slash": "^3.0.0", + "unrs-resolver": "^1.7.11" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.2.0.tgz", + "integrity": "sha512-xTOIGug/0RmIe3mmCqCT95yO0vj6JURrn1TKWlNbhiAefJRWINNPgwVkrVgt/YaerPzY3iItufd80v3lOrFJ2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-regex-util": "30.0.1", + "jest-snapshot": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/@jest/expect-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz", + "integrity": "sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/@jest/transform": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", + "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.27.4", + "@jest/types": "30.2.0", + "@jridgewell/trace-mapping": "^0.3.25", + "babel-plugin-istanbul": "^7.0.1", + "chalk": "^4.1.2", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "micromatch": "^4.0.8", + "pirates": "^4.0.7", + "slash": "^3.0.0", + "write-file-atomic": "^5.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/@sinclair/typebox": { + "version": "0.34.41", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", + "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-resolve-dependencies/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/jest-resolve-dependencies/node_modules/babel-plugin-istanbul": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", + "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", + "dev": true, + "license": "BSD-3-Clause", + "workspaces": [ + "test/babel-8" + ], + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-instrument": "^6.0.2", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/ci-info": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/expect": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", + "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/expect-utils": "30.2.0", + "@jest/get-type": "30.1.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/jest-diff": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz", + "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/diff-sequences": "30.0.1", + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "pretty-format": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/jest-haste-map": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", + "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "anymatch": "^3.1.3", + "fb-watchman": "^2.0.2", + "graceful-fs": "^4.2.11", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "jest-worker": "30.2.0", + "micromatch": "^4.0.8", + "walker": "^1.0.8" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.3" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/jest-matcher-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz", + "integrity": "sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "jest-diff": "30.2.0", + "pretty-format": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/jest-message-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", + "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.2.0", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "micromatch": "^4.0.8", + "pretty-format": "30.2.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/jest-mock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", + "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/jest-snapshot": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.2.0.tgz", + "integrity": "sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.27.4", + "@babel/generator": "^7.27.5", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.27.1", + "@babel/types": "^7.27.3", + "@jest/expect-utils": "30.2.0", + "@jest/get-type": "30.1.0", + "@jest/snapshot-utils": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "babel-preset-current-node-syntax": "^1.2.0", + "chalk": "^4.1.2", + "expect": "30.2.0", + "graceful-fs": "^4.2.11", + "jest-diff": "30.2.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-util": "30.2.0", + "pretty-format": "30.2.0", + "semver": "^7.7.2", + "synckit": "^0.11.8" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/jest-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/jest-util/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/jest-worker": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", + "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@ungap/structured-clone": "^1.3.0", + "jest-util": "30.2.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.1.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-resolve-dependencies/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-resolve-dependencies/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/jest-resolve-dependencies/node_modules/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-resolve/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-resolve/node_modules/@sinclair/typebox": { + "version": "0.34.41", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", + "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-resolve/node_modules/ci-info": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/node_modules/jest-haste-map": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", + "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "anymatch": "^3.1.3", + "fb-watchman": "^2.0.2", + "graceful-fs": "^4.2.11", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "jest-worker": "30.2.0", + "micromatch": "^4.0.8", + "walker": "^1.0.8" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.3" + } + }, + "node_modules/jest-resolve/node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-resolve/node_modules/jest-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-resolve/node_modules/jest-util/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-resolve/node_modules/jest-worker": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", + "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@ungap/structured-clone": "^1.3.0", + "jest-util": "30.2.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.1.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-resolve/node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/jest-resolve/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/jest-runner": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.2.0.tgz", + "integrity": "sha512-PqvZ2B2XEyPEbclp+gV6KO/F1FIFSbIwewRgmROCMBo/aZ6J1w8Qypoj2pEOcg3G2HzLlaP6VUtvwCI8dM3oqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "30.2.0", + "@jest/environment": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "emittery": "^0.13.1", + "exit-x": "^0.2.2", + "graceful-fs": "^4.2.11", + "jest-docblock": "30.2.0", + "jest-environment-node": "30.2.0", + "jest-haste-map": "30.2.0", + "jest-leak-detector": "30.2.0", + "jest-message-util": "30.2.0", + "jest-resolve": "30.2.0", + "jest-runtime": "30.2.0", + "jest-util": "30.2.0", + "jest-watcher": "30.2.0", + "jest-worker": "30.2.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-runner/node_modules/@jest/environment": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz", + "integrity": "sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-mock": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-runner/node_modules/@jest/fake-timers": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz", + "integrity": "sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==", "dev": true, + "license": "MIT", "dependencies": { - "cssom": "~0.3.6" + "@jest/types": "30.2.0", + "@sinonjs/fake-timers": "^13.0.0", + "@types/node": "*", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-environment-jsdom/node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, - "node_modules/jest-environment-jsdom/node_modules/data-urls": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", - "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "node_modules/jest-runner/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", "dev": true, + "license": "MIT", "dependencies": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" + "@sinclair/typebox": "^0.34.0" }, "engines": { - "node": ">=12" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-environment-jsdom/node_modules/jsdom": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", - "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", + "node_modules/jest-runner/node_modules/@jest/transform": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", + "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", "dev": true, + "license": "MIT", "dependencies": { - "abab": "^2.0.6", - "acorn": "^8.8.1", - "acorn-globals": "^7.0.0", - "cssom": "^0.5.0", - "cssstyle": "^2.3.0", - "data-urls": "^3.0.2", - "decimal.js": "^10.4.2", - "domexception": "^4.0.0", - "escodegen": "^2.0.0", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.1", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.2", - "parse5": "^7.1.1", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.1.2", - "w3c-xmlserializer": "^4.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0", - "ws": "^8.11.0", - "xml-name-validator": "^4.0.0" + "@babel/core": "^7.27.4", + "@jest/types": "30.2.0", + "@jridgewell/trace-mapping": "^0.3.25", + "babel-plugin-istanbul": "^7.0.1", + "chalk": "^4.1.2", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "micromatch": "^4.0.8", + "pirates": "^4.0.7", + "slash": "^3.0.0", + "write-file-atomic": "^5.0.1" }, "engines": { - "node": ">=14" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-environment-jsdom/node_modules/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "node_modules/jest-runner/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", "dev": true, + "license": "MIT", "dependencies": { - "punycode": "^2.1.1" + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" }, "engines": { - "node": ">=12" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-environment-jsdom/node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "node_modules/jest-runner/node_modules/@sinclair/typebox": { + "version": "0.34.41", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", + "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-runner/node_modules/@sinonjs/fake-timers": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", + "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - }, + "@sinonjs/commons": "^3.0.1" + } + }, + "node_modules/jest-runner/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": ">=12" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-environment-node": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", - "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "node_modules/jest-runner/node_modules/babel-plugin-istanbul": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", + "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", "dev": true, + "license": "BSD-3-Clause", + "workspaces": [ + "test/babel-8" + ], "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-instrument": "^6.0.2", + "test-exclude": "^6.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12" } }, - "node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "node_modules/jest-runner/node_modules/ci-info": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "node_modules/jest-runner/node_modules/jest-haste-map": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", + "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", + "@jest/types": "30.2.0", "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", + "anymatch": "^3.1.3", + "fb-watchman": "^2.0.2", + "graceful-fs": "^4.2.11", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "jest-worker": "30.2.0", + "micromatch": "^4.0.8", "walker": "^1.0.8" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "optionalDependencies": { - "fsevents": "^2.3.2" + "fsevents": "^2.3.3" } }, - "node_modules/jest-leak-detector": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", - "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "node_modules/jest-runner/node_modules/jest-message-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", + "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", "dev": true, + "license": "MIT", "dependencies": { - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.2.0", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "micromatch": "^4.0.8", + "pretty-format": "30.2.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "node_modules/jest-runner/node_modules/jest-mock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", + "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-util": "30.2.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.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-runner/node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, + "license": "MIT", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "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-runner/node_modules/jest-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" }, "engines": { - "node": ">=10" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-runner/node_modules/jest-util/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/jest-matcher-utils/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/jest-runner/node_modules/jest-worker": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", + "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "@types/node": "*", + "@ungap/structured-clone": "^1.3.0", + "jest-util": "30.2.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.1.1" }, "engines": { - "node": ">=7.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-matcher-utils/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-matcher-utils/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/jest-runner/node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, "engines": { - "node": ">=8" + "node": ">=8.6" } }, - "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==", + "node_modules/jest-runner/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "node_modules/jest-runner/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, + "license": "ISC", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "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-runner/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": { - "color-convert": "^2.0.1" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/chalk/supports-color?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-runner/node_modules/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", "dev": true, + "license": "ISC", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.2.0.tgz", + "integrity": "sha512-p1+GVX/PJqTucvsmERPMgCPvQJpFt4hFbM+VN3n8TMo47decMUcJbt+rgzwrEme0MQUA/R+1de2axftTHkKckg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "30.2.0", + "@jest/fake-timers": "30.2.0", + "@jest/globals": "30.2.0", + "@jest/source-map": "30.0.1", + "@jest/test-result": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "cjs-module-lexer": "^2.1.0", + "collect-v8-coverage": "^1.0.2", + "glob": "^10.3.10", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-resolve": "30.2.0", + "jest-snapshot": "30.2.0", + "jest-util": "30.2.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-message-util/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/jest-runtime/node_modules/@jest/environment": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz", + "integrity": "sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "@jest/fake-timers": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-mock": "30.2.0" }, "engines": { - "node": ">=7.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-message-util/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-message-util/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/jest-runtime/node_modules/@jest/expect": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.2.0.tgz", + "integrity": "sha512-V9yxQK5erfzx99Sf+7LbhBwNWEZ9eZay8qQ9+JSC0TrMR1pMDHLMY+BnVPacWU6Jamrh252/IKo4F1Xn/zfiqA==", "dev": true, + "license": "MIT", + "dependencies": { + "expect": "30.2.0", + "jest-snapshot": "30.2.0" + }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "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==", + "node_modules/jest-runtime/node_modules/@jest/expect-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz", + "integrity": "sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@jest/get-type": "30.1.0" }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "node_modules/jest-runtime/node_modules/@jest/fake-timers": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz", + "integrity": "sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", + "@jest/types": "30.2.0", + "@sinonjs/fake-timers": "^13.0.0", "@types/node": "*", - "jest-util": "^29.7.0" + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "node_modules/jest-runtime/node_modules/@jest/globals": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.2.0.tgz", + "integrity": "sha512-b63wmnKPaK+6ZZfpYhz9K61oybvbI1aMcIs80++JI1O1rR1vaxHUCNqo3ITu6NU0d4V34yZFoHMn/uoKr/Rwfw==", "dev": true, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" + "license": "MIT", + "dependencies": { + "@jest/environment": "30.2.0", + "@jest/expect": "30.2.0", + "@jest/types": "30.2.0", + "jest-mock": "30.2.0" }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", - "dev": true, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-resolve": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", - "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "node_modules/jest-runtime/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" + "@sinclair/typebox": "^0.34.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-resolve-dependencies": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", - "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "node_modules/jest-runtime/node_modules/@jest/transform": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", + "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", "dev": true, + "license": "MIT", "dependencies": { - "jest-regex-util": "^29.6.3", - "jest-snapshot": "^29.7.0" + "@babel/core": "^7.27.4", + "@jest/types": "30.2.0", + "@jridgewell/trace-mapping": "^0.3.25", + "babel-plugin-istanbul": "^7.0.1", + "chalk": "^4.1.2", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "micromatch": "^4.0.8", + "pirates": "^4.0.7", + "slash": "^3.0.0", + "write-file-atomic": "^5.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-resolve/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-runtime/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-resolve/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-runtime/node_modules/@sinclair/typebox": { + "version": "0.34.41", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", + "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-runtime/node_modules/@sinonjs/fake-timers": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", + "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "@sinonjs/commons": "^3.0.1" + } + }, + "node_modules/jest-runtime/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/chalk?sponsor=1" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-resolve/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/jest-runtime/node_modules/babel-plugin-istanbul": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", + "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", "dev": true, + "license": "BSD-3-Clause", + "workspaces": [ + "test/babel-8" + ], "dependencies": { - "color-name": "~1.1.4" + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-instrument": "^6.0.2", + "test-exclude": "^6.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=12" } }, - "node_modules/jest-resolve/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "node_modules/jest-runtime/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } }, - "node_modules/jest-resolve/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/jest-runtime/node_modules/ci-info": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", "engines": { "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==", + "node_modules/jest-runtime/node_modules/expect": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", + "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@jest/expect-utils": "30.2.0", + "@jest/get-type": "30.1.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-runner": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", - "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "node_modules/jest-runtime/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, + "license": "ISC", "dependencies": { - "@jest/console": "^29.7.0", - "@jest/environment": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-leak-detector": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-resolve": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-util": "^29.7.0", - "jest-watcher": "^29.7.0", - "jest-worker": "^29.7.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-runtime/node_modules/jest-diff": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz", + "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/diff-sequences": "30.0.1", + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "pretty-format": "30.2.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-runner/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-runtime/node_modules/jest-haste-map": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", + "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@jest/types": "30.2.0", + "@types/node": "*", + "anymatch": "^3.1.3", + "fb-watchman": "^2.0.2", + "graceful-fs": "^4.2.11", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "jest-worker": "30.2.0", + "micromatch": "^4.0.8", + "walker": "^1.0.8" }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "optionalDependencies": { + "fsevents": "^2.3.3" } }, - "node_modules/jest-runner/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-runtime/node_modules/jest-matcher-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz", + "integrity": "sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "jest-diff": "30.2.0", + "pretty-format": "30.2.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-runner/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/jest-runtime/node_modules/jest-message-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", + "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.2.0", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "micromatch": "^4.0.8", + "pretty-format": "30.2.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" }, "engines": { - "node": ">=7.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-runner/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "node_modules/jest-runtime/node_modules/jest-mock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", + "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } }, - "node_modules/jest-runner/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/jest-runtime/node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "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==", + "node_modules/jest-runtime/node_modules/jest-snapshot": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.2.0.tgz", + "integrity": "sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@babel/core": "^7.27.4", + "@babel/generator": "^7.27.5", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.27.1", + "@babel/types": "^7.27.3", + "@jest/expect-utils": "30.2.0", + "@jest/get-type": "30.1.0", + "@jest/snapshot-utils": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "babel-preset-current-node-syntax": "^1.2.0", + "chalk": "^4.1.2", + "expect": "30.2.0", + "graceful-fs": "^4.2.11", + "jest-diff": "30.2.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-util": "30.2.0", + "pretty-format": "30.2.0", + "semver": "^7.7.2", + "synckit": "^0.11.8" }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-runtime": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", - "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "node_modules/jest-runtime/node_modules/jest-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/globals": "^29.7.0", - "@jest/source-map": "^29.6.3", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", + "@jest/types": "30.2.0", "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-runtime/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-runtime/node_modules/jest-util/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-runtime/node_modules/jest-worker": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", + "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@types/node": "*", + "@ungap/structured-clone": "^1.3.0", + "jest-util": "30.2.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.1.1" }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-runtime/node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "engines": { + "node": ">=8.6" } }, - "node_modules/jest-runtime/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-runtime/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": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-runtime/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/jest-runtime/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" }, "engines": { - "node": ">=7.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-runtime/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-runtime/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/jest-runtime/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, + "license": "ISC", "engines": { - "node": ">=8" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "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==", + "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/jest-runtime/node_modules/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/jest-snapshot": { @@ -6619,76 +9329,6 @@ "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==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?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==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-snapshot/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-snapshot/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/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, - "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", @@ -6706,103 +9346,71 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-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==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-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-validate": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.2.0.tgz", + "integrity": "sha512-FBGWi7dP2hpdi8nBoWxSsLvBFewKAg0+uSQwBaof4Y4DPgBabXgpSYC5/lR7VmnIlSpASmCi/ntRWPbv7089Pw==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@jest/get-type": "30.1.0", + "@jest/types": "30.2.0", + "camelcase": "^6.3.0", + "chalk": "^4.1.2", + "leven": "^3.1.0", + "pretty-format": "30.2.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-util/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/jest-validate/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "@sinclair/typebox": "^0.34.0" }, "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-util/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-util/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "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==", + "node_modules/jest-validate/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-validate": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", - "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "node_modules/jest-validate/node_modules/@sinclair/typebox": { + "version": "0.34.41", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", + "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "leven": "^3.1.0", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } + "license": "MIT" }, "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==", + "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, - "dependencies": { - "color-convert": "^2.0.1" - }, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" @@ -6813,6 +9421,7 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -6820,163 +9429,141 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-validate/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-validate/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-validate/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-validate/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/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==", + "node_modules/jest-validate/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-watcher": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", - "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.2.0.tgz", + "integrity": "sha512-PYxa28dxJ9g777pGm/7PrbnMeA0Jr7osHP9bS7eJy9DuAjMgdGtxgf0uKMyoIsTWAkIbUW5hSDdJ3urmgXBqxg==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", + "@jest/test-result": "30.2.0", + "@jest/types": "30.2.0", "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", + "ansi-escapes": "^4.3.2", + "chalk": "^4.1.2", "emittery": "^0.13.1", - "jest-util": "^29.7.0", - "string-length": "^4.0.1" + "jest-util": "30.2.0", + "string-length": "^4.0.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-watcher/node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "node_modules/jest-watcher/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", "dev": true, + "license": "MIT", "dependencies": { - "type-fest": "^0.21.3" + "@sinclair/typebox": "^0.34.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-watcher/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-watcher/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-watcher/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-watcher/node_modules/@sinclair/typebox": { + "version": "0.34.41", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", + "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } + "license": "MIT" }, - "node_modules/jest-watcher/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/jest-watcher/node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "type-fest": "^0.21.3" }, "engines": { - "node": ">=7.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-watcher/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-watcher/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/jest-watcher/node_modules/ci-info": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", "engines": { "node": ">=8" } }, - "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==", + "node_modules/jest-watcher/node_modules/jest-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-watcher/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/jest-watcher/node_modules/type-fest": { @@ -6984,6 +9571,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -7006,15 +9594,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -7030,6 +9609,45 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/jest/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest/node_modules/@sinclair/typebox": { + "version": "0.34.41", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", + "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", + "dev": true, + "license": "MIT" + }, "node_modules/jiti": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.20.0.tgz", @@ -7099,15 +9717,16 @@ } }, "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, + "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/json-buffer": { @@ -7120,7 +9739,8 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-schema-traverse": { "version": "0.4.1", @@ -7146,14 +9766,6 @@ "node": ">=6" } }, - "node_modules/jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/keyv": { "version": "4.5.3", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", @@ -7163,20 +9775,12 @@ "json-buffer": "3.0.1" } }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -7291,20 +9895,6 @@ } } }, - "node_modules/local-pkg": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", - "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -7320,12 +9910,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "node_modules/lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", @@ -7395,22 +9979,12 @@ "loose-envify": "cli.js" } }, - "node_modules/loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "get-func-name": "^2.0.0" - } - }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^3.0.2" } @@ -7424,25 +9998,12 @@ "lz-string": "bin/bin.js" } }, - "node_modules/magic-string": { - "version": "0.30.3", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.3.tgz", - "integrity": "sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/make-dir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^7.5.3" }, @@ -7550,18 +10111,24 @@ "node": "*" } }, - "node_modules/mlly": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.4.2.tgz", - "integrity": "sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==", + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "acorn": "^8.10.0", - "pathe": "^1.1.1", - "pkg-types": "^1.0.3", - "ufo": "^1.3.0" + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" } }, "node_modules/ms": { @@ -7599,12 +10166,35 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/napi-postinstall": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", + "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", + "dev": true, + "license": "MIT", + "bin": { + "napi-postinstall": "lib/cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/napi-postinstall" + } + }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, + "license": "MIT" + }, "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -7612,10 +10202,11 @@ "dev": true }, "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", - "dev": true + "version": "2.0.23", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.23.tgz", + "integrity": "sha512-cCmFDMSm26S6tQSDpBCg/NR8NENrVPhAJSf+XbxBG4rPFaaonlEoE9wHQmun+cls499TQGSb7ZyPBRlzgKfpeg==", + "dev": true, + "license": "MIT" }, "node_modules/normalize-path": { "version": "3.0.0", @@ -7686,58 +10277,6 @@ "node": ">= 6" } }, - "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -7818,6 +10357,13 @@ "node": ">=6" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -7835,6 +10381,7 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -7893,39 +10440,45 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/pathe": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz", - "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==", + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "optional": true, - "peer": true + "license": "ISC" }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, - "optional": true, - "peer": true, "engines": { - "node": "*" + "node": ">=8" } }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", @@ -7961,10 +10514,11 @@ } }, "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6" } @@ -7974,6 +10528,7 @@ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^4.0.0" }, @@ -7986,6 +10541,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -7999,6 +10555,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -8011,6 +10568,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -8026,6 +10584,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -8033,19 +10592,6 @@ "node": ">=8" } }, - "node_modules/pkg-types": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz", - "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "jsonc-parser": "^3.2.0", - "mlly": "^1.2.0", - "pathe": "^1.1.0" - } - }, "node_modules/postcss": { "version": "8.4.29", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.29.tgz", @@ -8227,19 +10773,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", @@ -8256,9 +10789,9 @@ } }, "node_modules/pure-rand": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.3.tgz", - "integrity": "sha512-KddyFewCsO0j3+np81IQ+SweXLDnDQTs5s67BOnrYmYe/yNmUhttQyGsYzy8yUnoljGAQ9sl38YB4vH8ur7Y+w==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-7.0.1.tgz", + "integrity": "sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==", "dev": true, "funding": [ { @@ -8269,7 +10802,8 @@ "type": "opencollective", "url": "https://opencollective.com/fast-check" } - ] + ], + "license": "MIT" }, "node_modules/querystringify": { "version": "2.2.0", @@ -8321,10 +10855,11 @@ } }, "node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" }, "node_modules/react-refresh": { "version": "0.14.0", @@ -8405,28 +10940,12 @@ "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", "dev": true }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", - "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -8459,6 +10978,7 @@ "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, + "license": "MIT", "dependencies": { "resolve-from": "^5.0.0" }, @@ -8471,6 +10991,7 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -8484,15 +11005,6 @@ "node": ">=4" } }, - "node_modules/resolve.exports": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/restore-cursor": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", @@ -8636,13 +11148,11 @@ } }, "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -8650,38 +11160,6 @@ "node": ">=10" } }, - "node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/set-function-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", - "dev": true, - "dependencies": { - "define-data-property": "^1.0.1", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -8696,34 +11174,12 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/siginfo": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", - "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, - "optional": true, - "peer": true + "engines": { + "node": ">=8" + } }, "node_modules/signal-exit": { "version": "3.0.7", @@ -8731,12 +11187,6 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -8797,6 +11247,7 @@ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "dev": true, + "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -8829,34 +11280,6 @@ "node": ">=8" } }, - "node_modules/stackback": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", - "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/std-env": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.4.3.tgz", - "integrity": "sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/stop-iteration-iterator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", - "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", - "dev": true, - "dependencies": { - "internal-slot": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/string-argv": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", @@ -8871,6 +11294,7 @@ "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", "dev": true, + "license": "MIT", "dependencies": { "char-regex": "^1.0.2", "strip-ansi": "^6.0.0" @@ -8896,6 +11320,39 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/string-width/node_modules/ansi-regex": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", @@ -8935,11 +11392,26 @@ "node": ">=8" } }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -8980,20 +11452,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/strip-literal": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.3.0.tgz", - "integrity": "sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "acorn": "^8.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, "node_modules/sucrase": { "version": "3.34.0", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", @@ -9017,15 +11475,16 @@ } }, "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "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": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/supports-preserve-symlinks-flag": { @@ -9046,6 +11505,22 @@ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", "dev": true }, + "node_modules/synckit": { + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz", + "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.2.9" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/synckit" + } + }, "node_modules/tailwindcss": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.3.tgz", @@ -9136,56 +11611,18 @@ "node": ">=0.8" } }, - "node_modules/tinybench": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.5.1.tgz", - "integrity": "sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/tinypool": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.7.0.tgz", - "integrity": "sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tinyspy": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.1.1.tgz", - "integrity": "sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", "dev": true }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -9239,37 +11676,44 @@ "dev": true }, "node_modules/ts-jest": { - "version": "29.1.1", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz", - "integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==", + "version": "29.4.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.5.tgz", + "integrity": "sha512-HO3GyiWn2qvTQA4kTgjDcXiMwYQt68a1Y8+JuLRVpdIzm+UOLSHgl/XqR4c6nzJkq5rOkjc02O2I7P7l/Yof0Q==", "dev": true, + "license": "MIT", "dependencies": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^29.0.0", + "bs-logger": "^0.2.6", + "fast-json-stable-stringify": "^2.1.0", + "handlebars": "^4.7.8", "json5": "^2.2.3", - "lodash.memoize": "4.x", - "make-error": "1.x", - "semver": "^7.5.3", - "yargs-parser": "^21.0.1" + "lodash.memoize": "^4.1.2", + "make-error": "^1.3.6", + "semver": "^7.7.3", + "type-fest": "^4.41.0", + "yargs-parser": "^21.1.1" }, "bin": { "ts-jest": "cli.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" }, "peerDependencies": { "@babel/core": ">=7.0.0-beta.0 <8", - "@jest/types": "^29.0.0", - "babel-jest": "^29.0.0", - "jest": "^29.0.0", + "@jest/transform": "^29.0.0 || ^30.0.0", + "@jest/types": "^29.0.0 || ^30.0.0", + "babel-jest": "^29.0.0 || ^30.0.0", + "jest": "^29.0.0 || ^30.0.0", + "jest-util": "^29.0.0 || ^30.0.0", "typescript": ">=4.3 <6" }, "peerDependenciesMeta": { "@babel/core": { "optional": true }, + "@jest/transform": { + "optional": true + }, "@jest/types": { "optional": true }, @@ -9278,9 +11722,33 @@ }, "esbuild": { "optional": true + }, + "jest-util": { + "optional": true } } }, + "node_modules/ts-jest/node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD", + "optional": true + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -9327,13 +11795,19 @@ "node": ">=14.17" } }, - "node_modules/ufo": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.0.tgz", - "integrity": "sha512-bRn3CsoojyNStCZe0BG0Mt4Nr/4KF+rhFlnNXybgqt5pXHNFRlqinSoQaTrGyzE4X8aHplSb+TorH+COin9Yxw==", + "node_modules/uglify-js": { + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", "dev": true, + "license": "BSD-2-Clause", "optional": true, - "peer": true + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } }, "node_modules/universalify": { "version": "0.2.0", @@ -9344,10 +11818,45 @@ "node": ">= 4.0.0" } }, + "node_modules/unrs-resolver": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", + "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "napi-postinstall": "^0.3.0" + }, + "funding": { + "url": "https://opencollective.com/unrs-resolver" + }, + "optionalDependencies": { + "@unrs/resolver-binding-android-arm-eabi": "1.11.1", + "@unrs/resolver-binding-android-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-x64": "1.11.1", + "@unrs/resolver-binding-freebsd-x64": "1.11.1", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", + "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-musl": "1.11.1", + "@unrs/resolver-binding-wasm32-wasi": "1.11.1", + "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", + "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", + "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" + } + }, "node_modules/update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", "dev": true, "funding": [ { @@ -9363,9 +11872,10 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.2.0", + "picocolors": "^1.1.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -9400,14 +11910,15 @@ "dev": true }, "node_modules/v8-to-istanbul": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", - "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", "dev": true, + "license": "ISC", "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" + "convert-source-map": "^2.0.0" }, "engines": { "node": ">=10.12.0" @@ -9468,31 +11979,6 @@ } } }, - "node_modules/vite-node": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.34.4.tgz", - "integrity": "sha512-ho8HtiLc+nsmbwZMw8SlghESEE3KxJNp04F/jPUCLVvaURwt0d+r9LxEqCX5hvrrOQ0GSyxbYr5ZfRYhQ0yVKQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "cac": "^6.7.14", - "debug": "^4.3.4", - "mlly": "^1.4.0", - "pathe": "^1.1.1", - "picocolors": "^1.0.0", - "vite": "^3.0.0 || ^4.0.0" - }, - "bin": { - "vite-node": "vite-node.mjs" - }, - "engines": { - "node": ">=v14.18.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, "node_modules/vite-plugin-ruby": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/vite-plugin-ruby/-/vite-plugin-ruby-3.2.2.tgz", @@ -9506,85 +11992,6 @@ "vite": ">=4.0.0" } }, - "node_modules/vitest": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.34.4.tgz", - "integrity": "sha512-SE/laOsB6995QlbSE6BtkpXDeVNLJc1u2LHRG/OpnN4RsRzM3GQm4nm3PQCK5OBtrsUqnhzLdnT7se3aeNGdlw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/chai": "^4.3.5", - "@types/chai-subset": "^1.3.3", - "@types/node": "*", - "@vitest/expect": "0.34.4", - "@vitest/runner": "0.34.4", - "@vitest/snapshot": "0.34.4", - "@vitest/spy": "0.34.4", - "@vitest/utils": "0.34.4", - "acorn": "^8.9.0", - "acorn-walk": "^8.2.0", - "cac": "^6.7.14", - "chai": "^4.3.7", - "debug": "^4.3.4", - "local-pkg": "^0.4.3", - "magic-string": "^0.30.1", - "pathe": "^1.1.1", - "picocolors": "^1.0.0", - "std-env": "^3.3.3", - "strip-literal": "^1.0.1", - "tinybench": "^2.5.0", - "tinypool": "^0.7.0", - "vite": "^3.1.0 || ^4.0.0 || ^5.0.0-0", - "vite-node": "0.34.4", - "why-is-node-running": "^2.2.2" - }, - "bin": { - "vitest": "vitest.mjs" - }, - "engines": { - "node": ">=v14.18.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "@edge-runtime/vm": "*", - "@vitest/browser": "*", - "@vitest/ui": "*", - "happy-dom": "*", - "jsdom": "*", - "playwright": "*", - "safaridriver": "*", - "webdriverio": "*" - }, - "peerDependenciesMeta": { - "@edge-runtime/vm": { - "optional": true - }, - "@vitest/browser": { - "optional": true - }, - "@vitest/ui": { - "optional": true - }, - "happy-dom": { - "optional": true - }, - "jsdom": { - "optional": true - }, - "playwright": { - "optional": true - }, - "safaridriver": { - "optional": true - }, - "webdriverio": { - "optional": true - } - } - }, "node_modules/w3c-xmlserializer": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", @@ -9664,89 +12071,79 @@ "node": ">= 8" } }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "license": "MIT" }, - "node_modules/which-collection": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", - "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, "dependencies": { - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-weakmap": "^2.0.1", - "is-weakset": "^2.0.1" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/why-is-node-running": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz", - "integrity": "sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==", + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "siginfo": "^2.0.0", - "stackback": "0.0.2" - }, - "bin": { - "why-is-node-running": "cli.js" - }, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">=8" } }, "node_modules/wrap-ansi/node_modules/ansi-regex": { @@ -9848,6 +12245,7 @@ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } @@ -9856,7 +12254,8 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/yaml": { "version": "2.3.2", @@ -9872,6 +12271,7 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -9898,13 +12298,15 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/yargs/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -9914,6 +12316,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", diff --git a/package.json b/package.json index 5fd2f23..8c908ec 100644 --- a/package.json +++ b/package.json @@ -5,21 +5,28 @@ "dev": "vite", "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", "test": "jest", - "prepare": "husky install" + "test:ruby": "bin/rails test", + "prepare": "husky install", + "start": "bin/rails s" }, "lint-staged": { "*.{ts,tsx}": "eslint --cache --fix", "*.{js,css,md}": "prettier --write" }, "dependencies": { + "classnames": "^2.5.1", "react": "18.2.0", "react-dom": "18.2.0", "react-router-dom": "6.16.0" }, "devDependencies": { + "@babel/generator": "^7.28.3", "@jest/globals": "^29.7.0", - "@testing-library/jest-dom": "^6.1.3", - "@testing-library/react": "^14.0.0", + "@jridgewell/gen-mapping": "^0.3.13", + "@testing-library/dom": "^10.4.1", + "@testing-library/jest-dom": "^6.9.1", + "@testing-library/react": "^16.3.0", + "@types/jest": "^30.0.0", "@types/node": "18.17.17", "@types/react": "^18.2.21", "@types/react-dom": "18.2.7", @@ -32,14 +39,14 @@ "eslint-plugin-react-hooks": "4.6.0", "eslint-plugin-react-refresh": "0.4.3", "husky": "^8.0.3", - "jest": "29.7.0", + "jest": "^30.2.0", "jest-environment-jsdom": "29.7.0", "jsdom": "^22.1.0", "lint-staged": "^14.0.1", "postcss": "8.4.29", "prettier": "2.8.8", "tailwindcss": "3.3.3", - "ts-jest": "29.1.1", + "ts-jest": "^29.4.5", "typescript": "^5.2.2", "vite": "4.4.9", "vite-plugin-ruby": "3.2.2" diff --git a/test/models/user_test.rb b/test/models/user_test.rb index 97fc819..b576ab4 100644 --- a/test/models/user_test.rb +++ b/test/models/user_test.rb @@ -1,6 +1,14 @@ require "test_helper" class UserTest < ActiveSupport::TestCase + def with_stubbed_zxcvbn(score) + original = Zxcvbn.method(:test) + Zxcvbn.define_singleton_method(:test) { |_| OpenStruct.new(score: score) } + yield + ensure + Zxcvbn.define_singleton_method(:test, original) + end + test "should not save user without username" do user = User.new(password: '123') assert_not user.save @@ -16,17 +24,51 @@ class UserTest < ActiveSupport::TestCase assert user.save end - test "should validate username" do - assert_not User.validate_username('123456789'), "< 10" - assert User.validate_username('1234567890'), ">= 10" - assert User.validate_username('12345678901234567890123456789012345678901234567890'), "<= 50" - assert_not User.validate_username('123456789012345678901234567890123456789012345678901'), "> 50" + test "validate_username returns NO_USERNAME_GIVEN for nil or blank" do + assert_equal 'NO_USERNAME_GIVEN', User.validate_username(nil) + assert_equal 'NO_USERNAME_GIVEN', User.validate_username(' ') + end + + test "validate_username returns USERNAME_NOT_VALID for < 10 or > 50 chars" do + assert_equal 'USERNAME_NOT_VALID', User.validate_username('short') + assert_equal 'USERNAME_NOT_VALID', User.validate_username('a' * 51) + end + + test "validate_username returns true for valid length" do + assert_equal true, User.validate_username('a' * 10) + assert_equal true, User.validate_username('a' * 50) + end + + test "validate_password returns NO_PASSWORD_GIVEN for nil or blank" do + assert_equal 'NO_PASSWORD_GIVEN', User.validate_password(nil) + assert_equal 'NO_PASSWORD_GIVEN', User.validate_password(' ') + end + + test "validate_password returns PASSWORD_NOT_VALID for < 20 or > 50 chars" do + valid = 'w3althfrontCodingChallenge3' + assert_equal 'PASSWORD_NOT_VALID', User.validate_password('aA1' * 6) # 18 chars + assert_equal 'PASSWORD_NOT_VALID', User.validate_password('aA1' * 200) # 600 chars + assert_equal true, User.validate_password(valid) + end + + test "validate_password returns PASSWORD_LETTER_NUMBER_MISSING for missing letter or number" do + pw_num = '1' * 21 + pw_letter = 'a' * 21 + assert_equal 'PASSWORD_LETTER_NUMBER_MISSING', User.validate_password(pw_num) + assert_equal 'PASSWORD_LETTER_NUMBER_MISSING', User.validate_password(pw_letter) + end + + test "validate_password returns PASSWORD_WEAK for weak password" do + weak_pw = 'a1' * 11 # 22 chars, but weak + with_stubbed_zxcvbn(1) do + assert_equal 'PASSWORD_WEAK', User.validate_password(weak_pw) + end end - test "should validate password" do - assert_not User.validate_password('123456789012345678a'), "< 20" - assert User.validate_password('1234567890123456789a'), ">= 20" - assert User.validate_password('1234567890123456789012345678901234567890123456789a'), "<= 50" - assert_not User.validate_password('123456789012345678901234567890123456789012345678901a'), "> 50" + test "validate_password returns true for strong, valid password" do + strong_pw = 'aA1' * 7 # 21 chars + with_stubbed_zxcvbn(3) do + assert_equal true, User.validate_password(strong_pw) + end end end diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..133f9f0 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,4700 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@aashutoshrathi/word-wrap@^1.2.3": + version "1.2.6" + resolved "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz" + integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== + +"@adobe/css-tools@^4.4.0": + version "4.4.4" + resolved "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.4.tgz" + integrity sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg== + +"@alloc/quick-lru@^5.2.0": + version "5.2.0" + resolved "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz" + integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz" + integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== + dependencies: + "@babel/helper-validator-identifier" "^7.27.1" + js-tokens "^4.0.0" + picocolors "^1.1.1" + +"@babel/compat-data@^7.27.2": + version "7.28.4" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz" + integrity sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw== + +"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.22.9", "@babel/core@^7.23.9", "@babel/core@^7.27.4": + version "7.28.4" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz" + integrity sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/generator" "^7.28.3" + "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-module-transforms" "^7.28.3" + "@babel/helpers" "^7.28.4" + "@babel/parser" "^7.28.4" + "@babel/template" "^7.27.2" + "@babel/traverse" "^7.28.4" + "@babel/types" "^7.28.4" + "@jridgewell/remapping" "^2.3.5" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/generator@^7.27.5", "@babel/generator@^7.28.3", "@babel/generator@^7.7.2": + version "7.28.3" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz" + integrity sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw== + dependencies: + "@babel/parser" "^7.28.3" + "@babel/types" "^7.28.2" + "@jridgewell/gen-mapping" "^0.3.12" + "@jridgewell/trace-mapping" "^0.3.28" + jsesc "^3.0.2" + +"@babel/helper-compilation-targets@^7.27.2": + version "7.27.2" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz" + integrity sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ== + dependencies: + "@babel/compat-data" "^7.27.2" + "@babel/helper-validator-option" "^7.27.1" + browserslist "^4.24.0" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-globals@^7.28.0": + version "7.28.0" + resolved "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz" + integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw== + +"@babel/helper-module-imports@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz" + integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w== + dependencies: + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/helper-module-transforms@^7.28.3": + version "7.28.3" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz" + integrity sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw== + dependencies: + "@babel/helper-module-imports" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" + "@babel/traverse" "^7.28.3" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.27.1", "@babel/helper-plugin-utils@^7.8.0": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz" + integrity sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw== + +"@babel/helper-string-parser@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz" + integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== + +"@babel/helper-validator-identifier@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz" + integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== + +"@babel/helper-validator-option@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz" + integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== + +"@babel/helpers@^7.28.4": + version "7.28.4" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz" + integrity sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w== + dependencies: + "@babel/template" "^7.27.2" + "@babel/types" "^7.28.4" + +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.27.2", "@babel/parser@^7.28.3", "@babel/parser@^7.28.4": + version "7.28.4" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz" + integrity sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg== + dependencies: + "@babel/types" "^7.28.4" + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-import-attributes@^7.24.7": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz" + integrity sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-syntax-import-meta@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.27.1", "@babel/plugin-syntax-jsx@^7.7.2": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz" + integrity sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.27.1", "@babel/plugin-syntax-typescript@^7.7.2": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz" + integrity sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-react-jsx-self@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.22.5.tgz" + integrity sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-react-jsx-source@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.22.5.tgz" + integrity sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/runtime@^7.12.5": + version "7.22.15" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.15.tgz" + integrity sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA== + dependencies: + regenerator-runtime "^0.14.0" + +"@babel/template@^7.27.2": + version "7.27.2" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz" + integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/parser" "^7.27.2" + "@babel/types" "^7.27.1" + +"@babel/traverse@^7.27.1", "@babel/traverse@^7.28.3", "@babel/traverse@^7.28.4": + version "7.28.4" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz" + integrity sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/generator" "^7.28.3" + "@babel/helper-globals" "^7.28.0" + "@babel/parser" "^7.28.4" + "@babel/template" "^7.27.2" + "@babel/types" "^7.28.4" + debug "^4.3.1" + +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.2", "@babel/types@^7.28.4", "@babel/types@^7.3.3": + version "7.28.4" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz" + integrity sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q== + dependencies: + "@babel/helper-string-parser" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@emnapi/core@^1.4.3": + version "1.5.0" + resolved "https://registry.npmjs.org/@emnapi/core/-/core-1.5.0.tgz" + integrity sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg== + dependencies: + "@emnapi/wasi-threads" "1.1.0" + tslib "^2.4.0" + +"@emnapi/runtime@^1.4.3": + version "1.5.0" + resolved "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.5.0.tgz" + integrity sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ== + dependencies: + tslib "^2.4.0" + +"@emnapi/wasi-threads@1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz" + integrity sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ== + dependencies: + tslib "^2.4.0" + +"@esbuild/android-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622" + integrity sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ== + +"@esbuild/android-arm@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz#fedb265bc3a589c84cc11f810804f234947c3682" + integrity sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw== + +"@esbuild/android-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2" + integrity sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg== + +"@esbuild/darwin-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz" + integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA== + +"@esbuild/darwin-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d" + integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ== + +"@esbuild/freebsd-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54" + integrity sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw== + +"@esbuild/freebsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e" + integrity sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ== + +"@esbuild/linux-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0" + integrity sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA== + +"@esbuild/linux-arm@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0" + integrity sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg== + +"@esbuild/linux-ia32@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7" + integrity sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA== + +"@esbuild/linux-loong64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz#e6fccb7aac178dd2ffb9860465ac89d7f23b977d" + integrity sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg== + +"@esbuild/linux-mips64el@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231" + integrity sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ== + +"@esbuild/linux-ppc64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb" + integrity sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA== + +"@esbuild/linux-riscv64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6" + integrity sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A== + +"@esbuild/linux-s390x@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071" + integrity sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ== + +"@esbuild/linux-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz#c7690b3417af318a9b6f96df3031a8865176d338" + integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w== + +"@esbuild/netbsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1" + integrity sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A== + +"@esbuild/openbsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae" + integrity sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg== + +"@esbuild/sunos-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d" + integrity sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ== + +"@esbuild/win32-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9" + integrity sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg== + +"@esbuild/win32-ia32@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102" + integrity sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g== + +"@esbuild/win32-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d" + integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ== + +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": + version "4.4.0" + resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": + version "4.8.1" + resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.1.tgz" + integrity sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ== + +"@eslint/eslintrc@^2.1.2": + version "2.1.2" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz" + integrity sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@8.49.0": + version "8.49.0" + resolved "https://registry.npmjs.org/@eslint/js/-/js-8.49.0.tgz" + integrity sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w== + +"@humanwhocodes/config-array@^0.11.11": + version "0.11.11" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz" + integrity sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA== + dependencies: + "@humanwhocodes/object-schema" "^1.2.1" + debug "^4.1.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^1.2.1": + version "1.2.1" + resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": + version "0.1.3" + resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/console/-/console-30.2.0.tgz" + integrity sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ== + dependencies: + "@jest/types" "30.2.0" + "@types/node" "*" + chalk "^4.1.2" + jest-message-util "30.2.0" + jest-util "30.2.0" + slash "^3.0.0" + +"@jest/core@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/core/-/core-30.2.0.tgz" + integrity sha512-03W6IhuhjqTlpzh/ojut/pDB2LPRygyWX8ExpgHtQA8H/3K7+1vKmcINx5UzeOX1se6YEsBsOHQ1CRzf3fOwTQ== + dependencies: + "@jest/console" "30.2.0" + "@jest/pattern" "30.0.1" + "@jest/reporters" "30.2.0" + "@jest/test-result" "30.2.0" + "@jest/transform" "30.2.0" + "@jest/types" "30.2.0" + "@types/node" "*" + ansi-escapes "^4.3.2" + chalk "^4.1.2" + ci-info "^4.2.0" + exit-x "^0.2.2" + graceful-fs "^4.2.11" + jest-changed-files "30.2.0" + jest-config "30.2.0" + jest-haste-map "30.2.0" + jest-message-util "30.2.0" + jest-regex-util "30.0.1" + jest-resolve "30.2.0" + jest-resolve-dependencies "30.2.0" + jest-runner "30.2.0" + jest-runtime "30.2.0" + jest-snapshot "30.2.0" + jest-util "30.2.0" + jest-validate "30.2.0" + jest-watcher "30.2.0" + micromatch "^4.0.8" + pretty-format "30.2.0" + slash "^3.0.0" + +"@jest/diff-sequences@30.0.1": + version "30.0.1" + resolved "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz" + integrity sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw== + +"@jest/environment@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz" + integrity sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g== + dependencies: + "@jest/fake-timers" "30.2.0" + "@jest/types" "30.2.0" + "@types/node" "*" + jest-mock "30.2.0" + +"@jest/environment@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz" + integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== + dependencies: + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.7.0" + +"@jest/expect-utils@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz" + integrity sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA== + dependencies: + "@jest/get-type" "30.1.0" + +"@jest/expect-utils@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz" + integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== + dependencies: + jest-get-type "^29.6.3" + +"@jest/expect@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/expect/-/expect-30.2.0.tgz" + integrity sha512-V9yxQK5erfzx99Sf+7LbhBwNWEZ9eZay8qQ9+JSC0TrMR1pMDHLMY+BnVPacWU6Jamrh252/IKo4F1Xn/zfiqA== + dependencies: + expect "30.2.0" + jest-snapshot "30.2.0" + +"@jest/expect@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz" + integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== + dependencies: + expect "^29.7.0" + jest-snapshot "^29.7.0" + +"@jest/fake-timers@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz" + integrity sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw== + dependencies: + "@jest/types" "30.2.0" + "@sinonjs/fake-timers" "^13.0.0" + "@types/node" "*" + jest-message-util "30.2.0" + jest-mock "30.2.0" + jest-util "30.2.0" + +"@jest/fake-timers@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz" + integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== + dependencies: + "@jest/types" "^29.6.3" + "@sinonjs/fake-timers" "^10.0.2" + "@types/node" "*" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-util "^29.7.0" + +"@jest/get-type@30.1.0": + version "30.1.0" + resolved "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz" + integrity sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA== + +"@jest/globals@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/globals/-/globals-30.2.0.tgz" + integrity sha512-b63wmnKPaK+6ZZfpYhz9K61oybvbI1aMcIs80++JI1O1rR1vaxHUCNqo3ITu6NU0d4V34yZFoHMn/uoKr/Rwfw== + dependencies: + "@jest/environment" "30.2.0" + "@jest/expect" "30.2.0" + "@jest/types" "30.2.0" + jest-mock "30.2.0" + +"@jest/globals@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz" + integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/types" "^29.6.3" + jest-mock "^29.7.0" + +"@jest/pattern@30.0.1": + version "30.0.1" + resolved "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz" + integrity sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA== + dependencies: + "@types/node" "*" + jest-regex-util "30.0.1" + +"@jest/reporters@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-30.2.0.tgz" + integrity sha512-DRyW6baWPqKMa9CzeiBjHwjd8XeAyco2Vt8XbcLFjiwCOEKOvy82GJ8QQnJE9ofsxCMPjH4MfH8fCWIHHDKpAQ== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "30.2.0" + "@jest/test-result" "30.2.0" + "@jest/transform" "30.2.0" + "@jest/types" "30.2.0" + "@jridgewell/trace-mapping" "^0.3.25" + "@types/node" "*" + chalk "^4.1.2" + collect-v8-coverage "^1.0.2" + exit-x "^0.2.2" + glob "^10.3.10" + graceful-fs "^4.2.11" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^6.0.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^5.0.0" + istanbul-reports "^3.1.3" + jest-message-util "30.2.0" + jest-util "30.2.0" + jest-worker "30.2.0" + slash "^3.0.0" + string-length "^4.0.2" + v8-to-istanbul "^9.0.1" + +"@jest/schemas@30.0.5": + version "30.0.5" + resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz" + integrity sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA== + dependencies: + "@sinclair/typebox" "^0.34.0" + +"@jest/schemas@^29.6.3": + version "29.6.3" + resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== + dependencies: + "@sinclair/typebox" "^0.27.8" + +"@jest/snapshot-utils@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.2.0.tgz" + integrity sha512-0aVxM3RH6DaiLcjj/b0KrIBZhSX1373Xci4l3cW5xiUWPctZ59zQ7jj4rqcJQ/Z8JuN/4wX3FpJSa3RssVvCug== + dependencies: + "@jest/types" "30.2.0" + chalk "^4.1.2" + graceful-fs "^4.2.11" + natural-compare "^1.4.0" + +"@jest/source-map@30.0.1": + version "30.0.1" + resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz" + integrity sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg== + dependencies: + "@jridgewell/trace-mapping" "^0.3.25" + callsites "^3.1.0" + graceful-fs "^4.2.11" + +"@jest/test-result@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-30.2.0.tgz" + integrity sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg== + dependencies: + "@jest/console" "30.2.0" + "@jest/types" "30.2.0" + "@types/istanbul-lib-coverage" "^2.0.6" + collect-v8-coverage "^1.0.2" + +"@jest/test-sequencer@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.2.0.tgz" + integrity sha512-wXKgU/lk8fKXMu/l5Hog1R61bL4q5GCdT6OJvdAFz1P+QrpoFuLU68eoKuVc4RbrTtNnTL5FByhWdLgOPSph+Q== + dependencies: + "@jest/test-result" "30.2.0" + graceful-fs "^4.2.11" + jest-haste-map "30.2.0" + slash "^3.0.0" + +"@jest/transform@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz" + integrity sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA== + dependencies: + "@babel/core" "^7.27.4" + "@jest/types" "30.2.0" + "@jridgewell/trace-mapping" "^0.3.25" + babel-plugin-istanbul "^7.0.1" + chalk "^4.1.2" + convert-source-map "^2.0.0" + fast-json-stable-stringify "^2.1.0" + graceful-fs "^4.2.11" + jest-haste-map "30.2.0" + jest-regex-util "30.0.1" + jest-util "30.2.0" + micromatch "^4.0.8" + pirates "^4.0.7" + slash "^3.0.0" + write-file-atomic "^5.0.1" + +"@jest/transform@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz" + integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== + dependencies: + "@babel/core" "^7.11.6" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^2.0.0" + fast-json-stable-stringify "^2.1.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + write-file-atomic "^4.0.2" + +"@jest/types@30.2.0": + version "30.2.0" + resolved "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz" + integrity sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg== + dependencies: + "@jest/pattern" "30.0.1" + "@jest/schemas" "30.0.5" + "@types/istanbul-lib-coverage" "^2.0.6" + "@types/istanbul-reports" "^3.0.4" + "@types/node" "*" + "@types/yargs" "^17.0.33" + chalk "^4.1.2" + +"@jest/types@^29.6.3": + version "29.6.3" + resolved "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz" + integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== + dependencies: + "@jest/schemas" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jridgewell/gen-mapping@^0.3.12", "@jridgewell/gen-mapping@^0.3.13", "@jridgewell/gen-mapping@^0.3.2", "@jridgewell/gen-mapping@^0.3.5": + version "0.3.13" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz" + integrity sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.0" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/remapping@^2.3.5": + version "2.3.5" + resolved "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz" + integrity sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.1" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + +"@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0": + version "1.5.5" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz" + integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== + +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.23", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.28": + version "0.3.31" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz" + integrity sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@napi-rs/wasm-runtime@^0.2.11": + version "0.2.12" + resolved "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz" + integrity sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ== + dependencies: + "@emnapi/core" "^1.4.3" + "@emnapi/runtime" "^1.4.3" + "@tybys/wasm-util" "^0.10.0" + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"@pkgr/core@^0.2.9": + version "0.2.9" + resolved "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz" + integrity sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA== + +"@remix-run/router@1.9.0": + version "1.9.0" + resolved "https://registry.npmjs.org/@remix-run/router/-/router-1.9.0.tgz" + integrity sha512-bV63itrKBC0zdT27qYm6SDZHlkXwFL1xMBuhkn+X7l0+IIhNaH5wuuvZKp6eKhCD4KFhujhfhCT1YxXW6esUIA== + +"@sinclair/typebox@^0.27.8": + version "0.27.8" + resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== + +"@sinclair/typebox@^0.34.0": + version "0.34.41" + resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz" + integrity sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g== + +"@sinonjs/commons@^3.0.0", "@sinonjs/commons@^3.0.1": + version "3.0.1" + resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz" + integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^10.0.2": + version "10.3.0" + resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz" + integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== + dependencies: + "@sinonjs/commons" "^3.0.0" + +"@sinonjs/fake-timers@^13.0.0": + version "13.0.5" + resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz" + integrity sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw== + dependencies: + "@sinonjs/commons" "^3.0.1" + +"@swc/core-darwin-arm64@1.3.85": + version "1.3.85" + resolved "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.85.tgz" + integrity sha512-jTikp+i4nO4Ofe6qGm4I3sFeebD1OvueBCHITux5tQKD6umN1c2z4CRGv6K49NIz/qEpUcdr6Qny6K+3yibVFQ== + +"@swc/core-darwin-x64@1.3.85": + version "1.3.85" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.3.85.tgz#ce623656ee427876423f07d898fbd7fa767d39bd" + integrity sha512-3uHYkjVU+2F+YbVYtq5rH0uCJIztFTALaS3mQEfQUZKXZ5/8jD5titTCRqFKtSlQg0CzaFZgsYsuqwYBmgN0mA== + +"@swc/core-linux-arm-gnueabihf@1.3.85": + version "1.3.85" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.85.tgz#9eb958e3b2c4af0d208dc2d1e71270797605c71b" + integrity sha512-ouHzAHsFaEOkRuoTAOI/8n2m8BQAAnb4vr/xbMhhDOmix0lp5eNsW5Iac/EcJ2uG6B3n7P2K8oycj9SWkj+pfw== + +"@swc/core-linux-arm64-gnu@1.3.85": + version "1.3.85" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.85.tgz#2932636d5414709c56b9a670ca804dc317201a41" + integrity sha512-/Z1CZOWiO+NqJEh1J20PIxQFHMH43upQJ1l7FJ5Z7+MyuYF8WkeJ7OSovau729pBR+38vvvccEJrMZIztfv7hQ== + +"@swc/core-linux-arm64-musl@1.3.85": + version "1.3.85" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.85.tgz#3b312c57ac0b6861d87a7c0f7ff24e232eb792d5" + integrity sha512-gfh7CfKavi076dbMBTzfdawSGcYfZ4+1Q+8aRkSesqepKHcIWIJti8Cf3zB4a6CHNhJe+VN0Gb7DEfumydAm1w== + +"@swc/core-linux-x64-gnu@1.3.85": + version "1.3.85" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.85.tgz#d9fd7ff6ba4e693274604926b82027cb4c2a3306" + integrity sha512-lWVqjHKzofb9q1qrBM4dLqO7CIisp08/xMS5Hz9DWex1gTc5F2b6yJO6Ceqwa256GMweJcdP6A5EvEFQAiZ5dg== + +"@swc/core-linux-x64-musl@1.3.85": + version "1.3.85" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.85.tgz#0a80efac999fb125131385a8937227819549939f" + integrity sha512-EPJmlfqC05TUetnlErxNRyIp7Nc3B2w9abET6oQ/EgldeAeQnZ3M6svMViET/c2QSomgrU3rdP+Qcozkt62/4A== + +"@swc/core-win32-arm64-msvc@1.3.85": + version "1.3.85" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.85.tgz#9808ee0d35eeb315efa7b73edcca80001451c9f3" + integrity sha512-ibckJDZw8kNosciMexwk0z75ZyUhwtiFMV9rSBpup0opa7NNCUCoERCJ1e9LRyMdhsVUoLpZg/KZiHCdTw96hQ== + +"@swc/core-win32-ia32-msvc@1.3.85": + version "1.3.85" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.85.tgz#9b85ba050f333199e88e54ba0dd7b72302af64be" + integrity sha512-hY4MpHGUVQHL1T2kgRXOigDho4DTIpVPYzJ4uyy8VQRbS7GzN5XtvdGP/fA4zp8+2BQjcig+6J7Y92SY15ouNQ== + +"@swc/core-win32-x64-msvc@1.3.85": + version "1.3.85" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.85.tgz#5c7f3f366804b512cf26e1731d8714f0409f1204" + integrity sha512-ktxWOMFJ0iqKn6WUHtXqi4CS7xkyHmrRtjllGRuGqxmLmDX/HSOfuQ55Tm1KXKk5oHLacJkUbOSF2kBrpZ8dpg== + +"@swc/core@^1.3.61": + version "1.3.85" + resolved "https://registry.npmjs.org/@swc/core/-/core-1.3.85.tgz" + integrity sha512-qnoxp+2O0GtvRdYnXgR1v8J7iymGGYpx6f6yCK9KxipOZOjrlKILFANYlghQxZyPUfXwK++TFxfSlX4r9wK+kg== + dependencies: + "@swc/types" "^0.1.4" + optionalDependencies: + "@swc/core-darwin-arm64" "1.3.85" + "@swc/core-darwin-x64" "1.3.85" + "@swc/core-linux-arm-gnueabihf" "1.3.85" + "@swc/core-linux-arm64-gnu" "1.3.85" + "@swc/core-linux-arm64-musl" "1.3.85" + "@swc/core-linux-x64-gnu" "1.3.85" + "@swc/core-linux-x64-musl" "1.3.85" + "@swc/core-win32-arm64-msvc" "1.3.85" + "@swc/core-win32-ia32-msvc" "1.3.85" + "@swc/core-win32-x64-msvc" "1.3.85" + +"@swc/types@^0.1.4": + version "0.1.4" + resolved "https://registry.npmjs.org/@swc/types/-/types-0.1.4.tgz" + integrity sha512-z/G02d+59gyyUb7KYhKi9jOhicek6QD2oMaotUyG+lUkybpXoV49dY9bj7Ah5Q+y7knK2jU67UTX9FyfGzaxQg== + +"@testing-library/dom@^10.4.1": + version "10.4.1" + resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz" + integrity sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/runtime" "^7.12.5" + "@types/aria-query" "^5.0.1" + aria-query "5.3.0" + dom-accessibility-api "^0.5.9" + lz-string "^1.5.0" + picocolors "1.1.1" + pretty-format "^27.0.2" + +"@testing-library/jest-dom@^6.9.1": + version "6.9.1" + resolved "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.9.1.tgz" + integrity sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA== + dependencies: + "@adobe/css-tools" "^4.4.0" + aria-query "^5.0.0" + css.escape "^1.5.1" + dom-accessibility-api "^0.6.3" + picocolors "^1.1.1" + redent "^3.0.0" + +"@testing-library/react@^16.3.0": + version "16.3.0" + resolved "https://registry.npmjs.org/@testing-library/react/-/react-16.3.0.tgz" + integrity sha512-kFSyxiEDwv1WLl2fgsq6pPBbw5aWKrsY2/noi1Id0TK0UParSF62oFQFGHXIyaG4pp2tEub/Zlel+fjjZILDsw== + dependencies: + "@babel/runtime" "^7.12.5" + +"@tootallnate/once@2": + version "2.0.0" + resolved "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz" + integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== + +"@tybys/wasm-util@^0.10.0": + version "0.10.1" + resolved "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz" + integrity sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg== + dependencies: + tslib "^2.4.0" + +"@types/aria-query@^5.0.1": + version "5.0.1" + resolved "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.1.tgz" + integrity sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q== + +"@types/babel__core@^7.20.5": + version "7.20.5" + resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz" + integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== + dependencies: + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.27.0" + resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz" + integrity sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.4" + resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz" + integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*": + version "7.28.0" + resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz" + integrity sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q== + dependencies: + "@babel/types" "^7.28.2" + +"@types/graceful-fs@^4.1.3": + version "4.1.7" + resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.7.tgz" + integrity sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw== + dependencies: + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1", "@types/istanbul-lib-coverage@^2.0.6": + version "2.0.6" + resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz" + integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0", "@types/istanbul-reports@^3.0.4": + version "3.0.4" + resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz" + integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest@^30.0.0": + version "30.0.0" + resolved "https://registry.npmjs.org/@types/jest/-/jest-30.0.0.tgz" + integrity sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA== + dependencies: + expect "^30.0.0" + pretty-format "^30.0.0" + +"@types/jsdom@^20.0.0": + version "20.0.1" + resolved "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz" + integrity sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ== + dependencies: + "@types/node" "*" + "@types/tough-cookie" "*" + parse5 "^7.0.0" + +"@types/json-schema@^7.0.12": + version "7.0.13" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz" + integrity sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ== + +"@types/node@*", "@types/node@18.17.17": + version "18.17.17" + resolved "https://registry.npmjs.org/@types/node/-/node-18.17.17.tgz" + integrity sha512-cOxcXsQ2sxiwkykdJqvyFS+MLQPLvIdwh5l6gNg8qF6s+C7XSkEWOZjK+XhUZd+mYvHV/180g2cnCcIl4l06Pw== + +"@types/prop-types@*": + version "15.7.5" + resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz" + integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== + +"@types/react-dom@18.2.7": + version "18.2.7" + resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.7.tgz" + integrity sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA== + dependencies: + "@types/react" "*" + +"@types/react@*", "@types/react@^18.2.21": + version "18.2.21" + resolved "https://registry.npmjs.org/@types/react/-/react-18.2.21.tgz" + integrity sha512-neFKG/sBAwGxHgXiIxnbm3/AAVQ/cMRS93hvBpg8xYRbeQSPVABp9U2bRnPf0iI4+Ucdv3plSxKK+3CW2ENJxA== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/scheduler@*": + version "0.16.3" + resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz" + integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ== + +"@types/semver@^7.5.0": + version "7.5.2" + resolved "https://registry.npmjs.org/@types/semver/-/semver-7.5.2.tgz" + integrity sha512-7aqorHYgdNO4DM36stTiGO3DvKoex9TQRwsJU6vMaFGyqpBA1MNZkz+PG3gaNUPpTAOYhT1WR7M1JyA3fbS9Cw== + +"@types/stack-utils@^2.0.0", "@types/stack-utils@^2.0.3": + version "2.0.3" + resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz" + integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== + +"@types/tough-cookie@*": + version "4.0.3" + resolved "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.3.tgz" + integrity sha512-THo502dA5PzG/sfQH+42Lw3fvmYkceefOspdCwpHRul8ik2Jv1K8I5OZz1AT3/rs46kwgMCe9bSBmDLYkkOMGg== + +"@types/yargs-parser@*": + version "21.0.0" + resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz" + integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== + +"@types/yargs@^17.0.33", "@types/yargs@^17.0.8": + version "17.0.33" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz" + integrity sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA== + dependencies: + "@types/yargs-parser" "*" + +"@typescript-eslint/eslint-plugin@^6.7.0": + version "6.7.0" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.0.tgz" + integrity sha512-gUqtknHm0TDs1LhY12K2NA3Rmlmp88jK9Tx8vGZMfHeNMLE3GH2e9TRub+y+SOjuYgtOmok+wt1AyDPZqxbNag== + dependencies: + "@eslint-community/regexpp" "^4.5.1" + "@typescript-eslint/scope-manager" "6.7.0" + "@typescript-eslint/type-utils" "6.7.0" + "@typescript-eslint/utils" "6.7.0" + "@typescript-eslint/visitor-keys" "6.7.0" + debug "^4.3.4" + graphemer "^1.4.0" + ignore "^5.2.4" + natural-compare "^1.4.0" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/parser@^6.7.0": + version "6.7.0" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.0.tgz" + integrity sha512-jZKYwqNpNm5kzPVP5z1JXAuxjtl2uG+5NpaMocFPTNC2EdYIgbXIPImObOkhbONxtFTTdoZstLZefbaK+wXZng== + dependencies: + "@typescript-eslint/scope-manager" "6.7.0" + "@typescript-eslint/types" "6.7.0" + "@typescript-eslint/typescript-estree" "6.7.0" + "@typescript-eslint/visitor-keys" "6.7.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@6.7.0": + version "6.7.0" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.0.tgz" + integrity sha512-lAT1Uau20lQyjoLUQ5FUMSX/dS07qux9rYd5FGzKz/Kf8W8ccuvMyldb8hadHdK/qOI7aikvQWqulnEq2nCEYA== + dependencies: + "@typescript-eslint/types" "6.7.0" + "@typescript-eslint/visitor-keys" "6.7.0" + +"@typescript-eslint/type-utils@6.7.0": + version "6.7.0" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.0.tgz" + integrity sha512-f/QabJgDAlpSz3qduCyQT0Fw7hHpmhOzY/Rv6zO3yO+HVIdPfIWhrQoAyG+uZVtWAIS85zAyzgAFfyEr+MgBpg== + dependencies: + "@typescript-eslint/typescript-estree" "6.7.0" + "@typescript-eslint/utils" "6.7.0" + debug "^4.3.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/types@6.7.0": + version "6.7.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.0.tgz" + integrity sha512-ihPfvOp7pOcN/ysoj0RpBPOx3HQTJTrIN8UZK+WFd3/iDeFHHqeyYxa4hQk4rMhsz9H9mXpR61IzwlBVGXtl9Q== + +"@typescript-eslint/typescript-estree@6.7.0": + version "6.7.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.0.tgz" + integrity sha512-dPvkXj3n6e9yd/0LfojNU8VMUGHWiLuBZvbM6V6QYD+2qxqInE7J+J/ieY2iGwR9ivf/R/haWGkIj04WVUeiSQ== + dependencies: + "@typescript-eslint/types" "6.7.0" + "@typescript-eslint/visitor-keys" "6.7.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/utils@6.7.0": + version "6.7.0" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.0.tgz" + integrity sha512-MfCq3cM0vh2slSikQYqK2Gq52gvOhe57vD2RM3V4gQRZYX4rDPnKLu5p6cm89+LJiGlwEXU8hkYxhqqEC/V3qA== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "6.7.0" + "@typescript-eslint/types" "6.7.0" + "@typescript-eslint/typescript-estree" "6.7.0" + semver "^7.5.4" + +"@typescript-eslint/visitor-keys@6.7.0": + version "6.7.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.0.tgz" + integrity sha512-/C1RVgKFDmGMcVGeD8HjKv2bd72oI1KxQDeY8uc66gw9R0OK0eMq48cA+jv9/2Ag6cdrsUGySm1yzYmfz0hxwQ== + dependencies: + "@typescript-eslint/types" "6.7.0" + eslint-visitor-keys "^3.4.1" + +"@ungap/structured-clone@^1.3.0": + version "1.3.0" + resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz" + integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== + +"@unrs/resolver-binding-android-arm-eabi@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz" + integrity sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw== + +"@unrs/resolver-binding-android-arm64@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz" + integrity sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g== + +"@unrs/resolver-binding-darwin-arm64@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz" + integrity sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g== + +"@unrs/resolver-binding-darwin-x64@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz" + integrity sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ== + +"@unrs/resolver-binding-freebsd-x64@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz" + integrity sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw== + +"@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz" + integrity sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw== + +"@unrs/resolver-binding-linux-arm-musleabihf@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz" + integrity sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw== + +"@unrs/resolver-binding-linux-arm64-gnu@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz" + integrity sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ== + +"@unrs/resolver-binding-linux-arm64-musl@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz" + integrity sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w== + +"@unrs/resolver-binding-linux-ppc64-gnu@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz" + integrity sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA== + +"@unrs/resolver-binding-linux-riscv64-gnu@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz" + integrity sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ== + +"@unrs/resolver-binding-linux-riscv64-musl@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz" + integrity sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew== + +"@unrs/resolver-binding-linux-s390x-gnu@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz" + integrity sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg== + +"@unrs/resolver-binding-linux-x64-gnu@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz" + integrity sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w== + +"@unrs/resolver-binding-linux-x64-musl@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz" + integrity sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA== + +"@unrs/resolver-binding-wasm32-wasi@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz" + integrity sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ== + dependencies: + "@napi-rs/wasm-runtime" "^0.2.11" + +"@unrs/resolver-binding-win32-arm64-msvc@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz" + integrity sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw== + +"@unrs/resolver-binding-win32-ia32-msvc@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz" + integrity sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ== + +"@unrs/resolver-binding-win32-x64-msvc@1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz" + integrity sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g== + +"@vitejs/plugin-react-swc@3.3.2": + version "3.3.2" + resolved "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.3.2.tgz" + integrity sha512-VJFWY5sfoZerQRvJrh518h3AcQt6f/yTuWn4/TRB+dqmYU0NX1qz7qM5Wfd+gOQqUzQW4gxKqKN3KpE/P3+zrA== + dependencies: + "@swc/core" "^1.3.61" + +"@vitejs/plugin-react@4.0.4": + version "4.0.4" + resolved "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.0.4.tgz" + integrity sha512-7wU921ABnNYkETiMaZy7XqpueMnpu5VxvVps13MjmCo+utBdD79sZzrApHawHtVX66cCJQQTXFcjH0y9dSUK8g== + dependencies: + "@babel/core" "^7.22.9" + "@babel/plugin-transform-react-jsx-self" "^7.22.5" + "@babel/plugin-transform-react-jsx-source" "^7.22.5" + react-refresh "^0.14.0" + +abab@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz" + integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== + +acorn-globals@^7.0.0: + version "7.0.1" + resolved "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz" + integrity sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q== + dependencies: + acorn "^8.1.0" + acorn-walk "^8.0.2" + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-walk@^8.0.2: + version "8.2.0" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + +acorn@^8.1.0, acorn@^8.8.1, acorn@^8.9.0: + version "8.10.0" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz" + integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== + +agent-base@6: + version "6.0.2" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-escapes@^4.3.2: + version "4.3.2" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-escapes@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz" + integrity sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA== + dependencies: + type-fest "^1.0.2" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.2.2" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz" + integrity sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg== + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^5.0.0, ansi-styles@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +ansi-styles@^6.0.0, ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + +anymatch@^3.0.3, anymatch@^3.1.3, anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arg@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz" + integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +aria-query@5.3.0, aria-query@^5.0.0: + version "5.3.0" + resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz" + integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== + dependencies: + dequal "^2.0.3" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +autoprefixer@10.4.15: + version "10.4.15" + resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.15.tgz" + integrity sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew== + dependencies: + browserslist "^4.21.10" + caniuse-lite "^1.0.30001520" + fraction.js "^4.2.0" + normalize-range "^0.1.2" + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" + +babel-jest@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-30.2.0.tgz" + integrity sha512-0YiBEOxWqKkSQWL9nNGGEgndoeL0ZpWrbLMNL5u/Kaxrli3Eaxlt3ZtIDktEvXt4L/R9r3ODr2zKwGM/2BjxVw== + dependencies: + "@jest/transform" "30.2.0" + "@types/babel__core" "^7.20.5" + babel-plugin-istanbul "^7.0.1" + babel-preset-jest "30.2.0" + chalk "^4.1.2" + graceful-fs "^4.2.11" + slash "^3.0.0" + +babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" + +babel-plugin-istanbul@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz" + integrity sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.3" + istanbul-lib-instrument "^6.0.2" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.2.0.tgz" + integrity sha512-ftzhzSGMUnOzcCXd6WHdBGMyuwy15Wnn0iyyWGKgBDLxf9/s5ABuraCSpBX2uG0jUg4rqJnxsLc5+oYBqoxVaA== + dependencies: + "@types/babel__core" "^7.20.5" + +babel-preset-current-node-syntax@^1.0.0, babel-preset-current-node-syntax@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz" + integrity sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-import-attributes" "^7.24.7" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + +babel-preset-jest@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.2.0.tgz" + integrity sha512-US4Z3NOieAQumwFnYdUWKvUKh8+YSnS/gB3t6YBiz0bskpu7Pine8pPCheNxlPEW4wnUkma2a94YuW2q3guvCQ== + dependencies: + babel-plugin-jest-hoist "30.2.0" + babel-preset-current-node-syntax "^1.2.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +baseline-browser-mapping@^2.8.9: + version "2.8.16" + resolved "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.16.tgz" + integrity sha512-OMu3BGQ4E7P1ErFsIPpbJh0qvDudM/UuJeHgkAvfWe+0HFJCXh+t/l8L6fVLR55RI/UbKrVLnAXZSVwd9ysWYw== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz" + integrity sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.2, braces@^3.0.3, braces@~3.0.2: + version "3.0.3" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +browserslist@^4.21.10, browserslist@^4.24.0: + version "4.26.3" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.26.3.tgz" + integrity sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w== + dependencies: + baseline-browser-mapping "^2.8.9" + caniuse-lite "^1.0.30001746" + electron-to-chromium "^1.5.227" + node-releases "^2.0.21" + update-browserslist-db "^1.1.3" + +bs-logger@^0.2.6: + version "0.2.6" + resolved "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz" + integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== + dependencies: + fast-json-stable-stringify "2.x" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +callsites@^3.0.0, callsites@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase-css@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + +camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.3.0: + version "6.3.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-lite@^1.0.30001520, caniuse-lite@^1.0.30001746: + version "1.0.30001750" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001750.tgz" + integrity sha512-cuom0g5sdX6rw00qOoLNSFCJ9/mYIsuSOA+yzpDw8eopiFqcVwQvZHqov0vmEighRxX++cfC0Vg1G+1Iy/mSpQ== + +chalk@5.3.0: + version "5.3.0" + resolved "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz" + integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== + +chalk@^4.0.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + +chokidar@^3.5.3: + version "3.5.3" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +ci-info@^3.2.0: + version "3.8.0" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz" + integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== + +ci-info@^4.2.0: + version "4.3.1" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz" + integrity sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA== + +cjs-module-lexer@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.1.0.tgz" + integrity sha512-UX0OwmYRYQQetfrLEZeewIFFI+wSTofC+pMBLNuH3RUuu/xzG1oz84UCEDOSoQlN3fZ4+AzmV50ZYvGqkMh9yA== + +classnames@^2.5.1: + version "2.5.1" + resolved "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz" + integrity sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow== + +cli-cursor@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz" + integrity sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg== + dependencies: + restore-cursor "^4.0.0" + +cli-truncate@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz" + integrity sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA== + dependencies: + slice-ansi "^5.0.0" + string-width "^5.0.0" + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== + +collect-v8-coverage@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz" + integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colorette@^2.0.20: + version "2.0.20" + resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@11.0.0: + version "11.0.0" + resolved "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz" + integrity sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ== + +commander@^4.0.0: + version "4.1.1" + resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + +cross-spawn@^7.0.2, cross-spawn@^7.0.3, cross-spawn@^7.0.6: + version "7.0.6" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +css.escape@^1.5.1: + version "1.5.1" + resolved "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz" + integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssom@^0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz" + integrity sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw== + +cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== + dependencies: + cssom "~0.3.6" + +cssstyle@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-3.0.0.tgz" + integrity sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg== + dependencies: + rrweb-cssom "^0.6.0" + +csstype@^3.0.2: + version "3.1.2" + resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz" + integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== + +data-urls@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz" + integrity sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ== + dependencies: + abab "^2.0.6" + whatwg-mimetype "^3.0.0" + whatwg-url "^11.0.0" + +data-urls@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/data-urls/-/data-urls-4.0.0.tgz" + integrity sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g== + dependencies: + abab "^2.0.6" + whatwg-mimetype "^3.0.0" + whatwg-url "^12.0.0" + +debug@4, debug@4.3.4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +decimal.js@^10.4.2, decimal.js@^10.4.3: + version "10.4.3" + resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz" + integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== + +dedent@^1.6.0: + version "1.7.0" + resolved "https://registry.npmjs.org/dedent/-/dedent-1.7.0.tgz" + integrity sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ== + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +deepmerge@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +dequal@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + +detect-newline@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +didyoumean@^1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz" + integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== + +diff-sequences@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz" + integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dlv@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-accessibility-api@^0.5.9: + version "0.5.16" + resolved "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz" + integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg== + +dom-accessibility-api@^0.6.3: + version "0.6.3" + resolved "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz" + integrity sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w== + +domexception@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz" + integrity sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw== + dependencies: + webidl-conversions "^7.0.0" + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +electron-to-chromium@^1.5.227: + version "1.5.234" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.234.tgz" + integrity sha512-RXfEp2x+VRYn8jbKfQlRImzoJU01kyDvVPBmG39eU2iuRVhuS6vQNocB8J0/8GrIMLnPzgz4eW6WiRnJkTuNWg== + +emittery@^0.13.1: + version "0.13.1" + resolved "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz" + integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +entities@^4.4.0: + version "4.5.0" + resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + +error-ex@^1.3.1: + version "1.3.4" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz" + integrity sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ== + dependencies: + is-arrayish "^0.2.1" + +esbuild@^0.18.10: + version "0.18.20" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz" + integrity sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA== + optionalDependencies: + "@esbuild/android-arm" "0.18.20" + "@esbuild/android-arm64" "0.18.20" + "@esbuild/android-x64" "0.18.20" + "@esbuild/darwin-arm64" "0.18.20" + "@esbuild/darwin-x64" "0.18.20" + "@esbuild/freebsd-arm64" "0.18.20" + "@esbuild/freebsd-x64" "0.18.20" + "@esbuild/linux-arm" "0.18.20" + "@esbuild/linux-arm64" "0.18.20" + "@esbuild/linux-ia32" "0.18.20" + "@esbuild/linux-loong64" "0.18.20" + "@esbuild/linux-mips64el" "0.18.20" + "@esbuild/linux-ppc64" "0.18.20" + "@esbuild/linux-riscv64" "0.18.20" + "@esbuild/linux-s390x" "0.18.20" + "@esbuild/linux-x64" "0.18.20" + "@esbuild/netbsd-x64" "0.18.20" + "@esbuild/openbsd-x64" "0.18.20" + "@esbuild/sunos-x64" "0.18.20" + "@esbuild/win32-arm64" "0.18.20" + "@esbuild/win32-ia32" "0.18.20" + "@esbuild/win32-x64" "0.18.20" + +escalade@^3.1.1, escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escodegen@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz" + integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionalDependencies: + source-map "~0.6.1" + +eslint-plugin-react-hooks@4.6.0: + version "4.6.0" + resolved "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz" + integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== + +eslint-plugin-react-refresh@0.4.3: + version "0.4.3" + resolved "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.3.tgz" + integrity sha512-Hh0wv8bUNY877+sI0BlCUlsS0TYYQqvzEwJsJJPM2WF4RnTStSnSR3zdJYa2nPOJgg3UghXi54lVyMSmpCalzA== + +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + 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== + +eslint@^8.49.0: + version "8.49.0" + resolved "https://registry.npmjs.org/eslint/-/eslint-8.49.0.tgz" + integrity sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.2" + "@eslint/js" "8.49.0" + "@humanwhocodes/config-array" "^0.11.11" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" + 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" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + 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" + +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + +esprima@^4.0.0, esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.4.2: + version "1.5.0" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +eventemitter3@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz" + integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== + +execa@7.2.0: + version "7.2.0" + resolved "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz" + integrity sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.1" + human-signals "^4.3.0" + is-stream "^3.0.0" + merge-stream "^2.0.0" + npm-run-path "^5.1.0" + onetime "^6.0.0" + signal-exit "^3.0.7" + strip-final-newline "^3.0.0" + +execa@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +exit-x@^0.2.2: + version "0.2.2" + resolved "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz" + integrity sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ== + +expect@30.2.0, expect@^30.0.0: + version "30.2.0" + resolved "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz" + integrity sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw== + dependencies: + "@jest/expect-utils" "30.2.0" + "@jest/get-type" "30.1.0" + jest-matcher-utils "30.2.0" + jest-message-util "30.2.0" + jest-mock "30.2.0" + jest-util "30.2.0" + +expect@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz" + integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== + dependencies: + "@jest/expect-utils" "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.2.12, fast-glob@^3.2.9: + version "3.3.1" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz" + integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fastq@^1.6.0: + version "1.15.0" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== + dependencies: + reusify "^1.0.4" + +fb-watchman@^2.0.0, fb-watchman@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== + dependencies: + bser "2.1.1" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.1.0" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz" + integrity sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew== + dependencies: + flatted "^3.2.7" + keyv "^4.5.3" + rimraf "^3.0.2" + +flatted@^3.2.7: + version "3.2.9" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz" + integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== + +foreground-child@^3.1.0: + version "3.3.1" + resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz" + integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw== + dependencies: + cross-spawn "^7.0.6" + signal-exit "^4.0.1" + +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +fraction.js@^4.2.0: + version "4.3.6" + resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.6.tgz" + integrity sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@^2.3.2, fsevents@^2.3.3, fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-stream@^6.0.0, get-stream@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob@7.1.6, glob@^7.1.3, glob@^7.1.4: + version "7.1.6" + resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^10.3.10: + version "10.4.5" + resolved "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz" + integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== + dependencies: + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" + +globals@^13.19.0: + version "13.21.0" + resolved "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz" + integrity sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg== + dependencies: + type-fest "^0.20.2" + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +graceful-fs@^4.2.11, graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +handlebars@^4.7.8: + version "4.7.8" + resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz" + integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== + dependencies: + minimist "^1.2.5" + neo-async "^2.6.2" + source-map "^0.6.1" + wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +html-encoding-sniffer@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz" + integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA== + dependencies: + whatwg-encoding "^2.0.0" + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +http-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz" + integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== + dependencies: + "@tootallnate/once" "2" + agent-base "6" + debug "4" + +https-proxy-agent@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +human-signals@^4.3.0: + version "4.3.1" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz" + integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== + +husky@^8.0.3: + version "8.0.3" + resolved "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz" + integrity sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg== + +iconv-lite@0.6.3: + version "0.6.3" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +ignore@^5.2.0, ignore@^5.2.4: + version "5.2.4" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz" + integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== + +import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-local@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz" + integrity sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2: + version "2.0.4" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-core-module@^2.13.0: + version "2.13.0" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz" + integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== + dependencies: + has "^1.0.3" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-fullwidth-code-point@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz" + integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== + +is-generator-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-potential-custom-element-name@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz" + integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== + +istanbul-lib-instrument@^5.0.4: + version "5.2.1" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" + +istanbul-lib-instrument@^6.0.0, istanbul-lib-instrument@^6.0.2: + version "6.0.3" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz" + integrity sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q== + dependencies: + "@babel/core" "^7.23.9" + "@babel/parser" "^7.23.9" + "@istanbuljs/schema" "^0.1.3" + istanbul-lib-coverage "^3.2.0" + semver "^7.5.4" + +istanbul-lib-report@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz" + integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^4.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^5.0.0: + version "5.0.6" + resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz" + integrity sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A== + dependencies: + "@jridgewell/trace-mapping" "^0.3.23" + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + +istanbul-reports@^3.1.3: + version "3.2.0" + resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz" + integrity sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +jackspeak@^3.1.2: + version "3.4.3" + resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz" + integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + +jest-changed-files@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.2.0.tgz" + integrity sha512-L8lR1ChrRnSdfeOvTrwZMlnWV8G/LLjQ0nG9MBclwWZidA2N5FviRki0Bvh20WRMOX31/JYvzdqTJrk5oBdydQ== + dependencies: + execa "^5.1.1" + jest-util "30.2.0" + p-limit "^3.1.0" + +jest-circus@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-30.2.0.tgz" + integrity sha512-Fh0096NC3ZkFx05EP2OXCxJAREVxj1BcW/i6EWqqymcgYKWjyyDpral3fMxVcHXg6oZM7iULer9wGRFvfpl+Tg== + dependencies: + "@jest/environment" "30.2.0" + "@jest/expect" "30.2.0" + "@jest/test-result" "30.2.0" + "@jest/types" "30.2.0" + "@types/node" "*" + chalk "^4.1.2" + co "^4.6.0" + dedent "^1.6.0" + is-generator-fn "^2.1.0" + jest-each "30.2.0" + jest-matcher-utils "30.2.0" + jest-message-util "30.2.0" + jest-runtime "30.2.0" + jest-snapshot "30.2.0" + jest-util "30.2.0" + p-limit "^3.1.0" + pretty-format "30.2.0" + pure-rand "^7.0.0" + slash "^3.0.0" + stack-utils "^2.0.6" + +jest-cli@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-30.2.0.tgz" + integrity sha512-Os9ukIvADX/A9sLt6Zse3+nmHtHaE6hqOsjQtNiugFTbKRHYIYtZXNGNK9NChseXy7djFPjndX1tL0sCTlfpAA== + dependencies: + "@jest/core" "30.2.0" + "@jest/test-result" "30.2.0" + "@jest/types" "30.2.0" + chalk "^4.1.2" + exit-x "^0.2.2" + import-local "^3.2.0" + jest-config "30.2.0" + jest-util "30.2.0" + jest-validate "30.2.0" + yargs "^17.7.2" + +jest-config@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-config/-/jest-config-30.2.0.tgz" + integrity sha512-g4WkyzFQVWHtu6uqGmQR4CQxz/CH3yDSlhzXMWzNjDx843gYjReZnMRanjRCq5XZFuQrGDxgUaiYWE8BRfVckA== + dependencies: + "@babel/core" "^7.27.4" + "@jest/get-type" "30.1.0" + "@jest/pattern" "30.0.1" + "@jest/test-sequencer" "30.2.0" + "@jest/types" "30.2.0" + babel-jest "30.2.0" + chalk "^4.1.2" + ci-info "^4.2.0" + deepmerge "^4.3.1" + glob "^10.3.10" + graceful-fs "^4.2.11" + jest-circus "30.2.0" + jest-docblock "30.2.0" + jest-environment-node "30.2.0" + jest-regex-util "30.0.1" + jest-resolve "30.2.0" + jest-runner "30.2.0" + jest-util "30.2.0" + jest-validate "30.2.0" + micromatch "^4.0.8" + parse-json "^5.2.0" + pretty-format "30.2.0" + slash "^3.0.0" + strip-json-comments "^3.1.1" + +jest-diff@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz" + integrity sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A== + dependencies: + "@jest/diff-sequences" "30.0.1" + "@jest/get-type" "30.1.0" + chalk "^4.1.2" + pretty-format "30.2.0" + +jest-diff@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz" + integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== + dependencies: + chalk "^4.0.0" + diff-sequences "^29.6.3" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-docblock@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz" + integrity sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA== + dependencies: + detect-newline "^3.1.0" + +jest-each@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-each/-/jest-each-30.2.0.tgz" + integrity sha512-lpWlJlM7bCUf1mfmuqTA8+j2lNURW9eNafOy99knBM01i5CQeY5UH1vZjgT9071nDJac1M4XsbyI44oNOdhlDQ== + dependencies: + "@jest/get-type" "30.1.0" + "@jest/types" "30.2.0" + chalk "^4.1.2" + jest-util "30.2.0" + pretty-format "30.2.0" + +jest-environment-jsdom@29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz" + integrity sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/jsdom" "^20.0.0" + "@types/node" "*" + jest-mock "^29.7.0" + jest-util "^29.7.0" + jsdom "^20.0.0" + +jest-environment-node@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.2.0.tgz" + integrity sha512-ElU8v92QJ9UrYsKrxDIKCxu6PfNj4Hdcktcn0JX12zqNdqWHB0N+hwOnnBBXvjLd2vApZtuLUGs1QSY+MsXoNA== + dependencies: + "@jest/environment" "30.2.0" + "@jest/fake-timers" "30.2.0" + "@jest/types" "30.2.0" + "@types/node" "*" + jest-mock "30.2.0" + jest-util "30.2.0" + jest-validate "30.2.0" + +jest-get-type@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz" + integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== + +jest-haste-map@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz" + integrity sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw== + dependencies: + "@jest/types" "30.2.0" + "@types/node" "*" + anymatch "^3.1.3" + fb-watchman "^2.0.2" + graceful-fs "^4.2.11" + jest-regex-util "30.0.1" + jest-util "30.2.0" + jest-worker "30.2.0" + micromatch "^4.0.8" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.3" + +jest-haste-map@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz" + integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== + dependencies: + "@jest/types" "^29.6.3" + "@types/graceful-fs" "^4.1.3" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + jest-worker "^29.7.0" + micromatch "^4.0.4" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.2" + +jest-leak-detector@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.2.0.tgz" + integrity sha512-M6jKAjyzjHG0SrQgwhgZGy9hFazcudwCNovY/9HPIicmNSBuockPSedAP9vlPK6ONFJ1zfyH/M2/YYJxOz5cdQ== + dependencies: + "@jest/get-type" "30.1.0" + pretty-format "30.2.0" + +jest-matcher-utils@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz" + integrity sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg== + dependencies: + "@jest/get-type" "30.1.0" + chalk "^4.1.2" + jest-diff "30.2.0" + pretty-format "30.2.0" + +jest-matcher-utils@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz" + integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== + dependencies: + chalk "^4.0.0" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-message-util@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz" + integrity sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw== + dependencies: + "@babel/code-frame" "^7.27.1" + "@jest/types" "30.2.0" + "@types/stack-utils" "^2.0.3" + chalk "^4.1.2" + graceful-fs "^4.2.11" + micromatch "^4.0.8" + pretty-format "30.2.0" + slash "^3.0.0" + stack-utils "^2.0.6" + +jest-message-util@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz" + integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.6.3" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.7.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz" + integrity sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw== + dependencies: + "@jest/types" "30.2.0" + "@types/node" "*" + jest-util "30.2.0" + +jest-mock@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz" + integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-util "^29.7.0" + +jest-pnp-resolver@^1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== + +jest-regex-util@30.0.1: + version "30.0.1" + resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz" + integrity sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA== + +jest-regex-util@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz" + integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== + +jest-resolve-dependencies@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.2.0.tgz" + integrity sha512-xTOIGug/0RmIe3mmCqCT95yO0vj6JURrn1TKWlNbhiAefJRWINNPgwVkrVgt/YaerPzY3iItufd80v3lOrFJ2w== + dependencies: + jest-regex-util "30.0.1" + jest-snapshot "30.2.0" + +jest-resolve@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.2.0.tgz" + integrity sha512-TCrHSxPlx3tBY3hWNtRQKbtgLhsXa1WmbJEqBlTBrGafd5fiQFByy2GNCEoGR+Tns8d15GaL9cxEzKOO3GEb2A== + dependencies: + chalk "^4.1.2" + graceful-fs "^4.2.11" + jest-haste-map "30.2.0" + jest-pnp-resolver "^1.2.3" + jest-util "30.2.0" + jest-validate "30.2.0" + slash "^3.0.0" + unrs-resolver "^1.7.11" + +jest-runner@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-30.2.0.tgz" + integrity sha512-PqvZ2B2XEyPEbclp+gV6KO/F1FIFSbIwewRgmROCMBo/aZ6J1w8Qypoj2pEOcg3G2HzLlaP6VUtvwCI8dM3oqQ== + dependencies: + "@jest/console" "30.2.0" + "@jest/environment" "30.2.0" + "@jest/test-result" "30.2.0" + "@jest/transform" "30.2.0" + "@jest/types" "30.2.0" + "@types/node" "*" + chalk "^4.1.2" + emittery "^0.13.1" + exit-x "^0.2.2" + graceful-fs "^4.2.11" + jest-docblock "30.2.0" + jest-environment-node "30.2.0" + jest-haste-map "30.2.0" + jest-leak-detector "30.2.0" + jest-message-util "30.2.0" + jest-resolve "30.2.0" + jest-runtime "30.2.0" + jest-util "30.2.0" + jest-watcher "30.2.0" + jest-worker "30.2.0" + p-limit "^3.1.0" + source-map-support "0.5.13" + +jest-runtime@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.2.0.tgz" + integrity sha512-p1+GVX/PJqTucvsmERPMgCPvQJpFt4hFbM+VN3n8TMo47decMUcJbt+rgzwrEme0MQUA/R+1de2axftTHkKckg== + dependencies: + "@jest/environment" "30.2.0" + "@jest/fake-timers" "30.2.0" + "@jest/globals" "30.2.0" + "@jest/source-map" "30.0.1" + "@jest/test-result" "30.2.0" + "@jest/transform" "30.2.0" + "@jest/types" "30.2.0" + "@types/node" "*" + chalk "^4.1.2" + cjs-module-lexer "^2.1.0" + collect-v8-coverage "^1.0.2" + glob "^10.3.10" + graceful-fs "^4.2.11" + jest-haste-map "30.2.0" + jest-message-util "30.2.0" + jest-mock "30.2.0" + jest-regex-util "30.0.1" + jest-resolve "30.2.0" + jest-snapshot "30.2.0" + jest-util "30.2.0" + slash "^3.0.0" + strip-bom "^4.0.0" + +jest-snapshot@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.2.0.tgz" + integrity sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA== + dependencies: + "@babel/core" "^7.27.4" + "@babel/generator" "^7.27.5" + "@babel/plugin-syntax-jsx" "^7.27.1" + "@babel/plugin-syntax-typescript" "^7.27.1" + "@babel/types" "^7.27.3" + "@jest/expect-utils" "30.2.0" + "@jest/get-type" "30.1.0" + "@jest/snapshot-utils" "30.2.0" + "@jest/transform" "30.2.0" + "@jest/types" "30.2.0" + babel-preset-current-node-syntax "^1.2.0" + chalk "^4.1.2" + expect "30.2.0" + graceful-fs "^4.2.11" + jest-diff "30.2.0" + jest-matcher-utils "30.2.0" + jest-message-util "30.2.0" + jest-util "30.2.0" + pretty-format "30.2.0" + semver "^7.7.2" + synckit "^0.11.8" + +jest-snapshot@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz" + integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== + dependencies: + "@babel/core" "^7.11.6" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-jsx" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/types" "^7.3.3" + "@jest/expect-utils" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^29.7.0" + graceful-fs "^4.2.9" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + natural-compare "^1.4.0" + pretty-format "^29.7.0" + semver "^7.5.3" + +jest-util@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz" + integrity sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA== + dependencies: + "@jest/types" "30.2.0" + "@types/node" "*" + chalk "^4.1.2" + ci-info "^4.2.0" + graceful-fs "^4.2.11" + picomatch "^4.0.2" + +jest-util@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz" + integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-validate@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-30.2.0.tgz" + integrity sha512-FBGWi7dP2hpdi8nBoWxSsLvBFewKAg0+uSQwBaof4Y4DPgBabXgpSYC5/lR7VmnIlSpASmCi/ntRWPbv7089Pw== + dependencies: + "@jest/get-type" "30.1.0" + "@jest/types" "30.2.0" + camelcase "^6.3.0" + chalk "^4.1.2" + leven "^3.1.0" + pretty-format "30.2.0" + +jest-watcher@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.2.0.tgz" + integrity sha512-PYxa28dxJ9g777pGm/7PrbnMeA0Jr7osHP9bS7eJy9DuAjMgdGtxgf0uKMyoIsTWAkIbUW5hSDdJ3urmgXBqxg== + dependencies: + "@jest/test-result" "30.2.0" + "@jest/types" "30.2.0" + "@types/node" "*" + ansi-escapes "^4.3.2" + chalk "^4.1.2" + emittery "^0.13.1" + jest-util "30.2.0" + string-length "^4.0.2" + +jest-worker@30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz" + integrity sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g== + dependencies: + "@types/node" "*" + "@ungap/structured-clone" "^1.3.0" + jest-util "30.2.0" + merge-stream "^2.0.0" + supports-color "^8.1.1" + +jest-worker@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz" + integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== + dependencies: + "@types/node" "*" + jest-util "^29.7.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest@^30.2.0: + version "30.2.0" + resolved "https://registry.npmjs.org/jest/-/jest-30.2.0.tgz" + integrity sha512-F26gjC0yWN8uAA5m5Ss8ZQf5nDHWGlN/xWZIh8S5SRbsEKBovwZhxGd6LJlbZYxBgCYOtreSUyb8hpXyGC5O4A== + dependencies: + "@jest/core" "30.2.0" + "@jest/types" "30.2.0" + import-local "^3.2.0" + jest-cli "30.2.0" + +jiti@^1.18.2: + version "1.20.0" + resolved "https://registry.npmjs.org/jiti/-/jiti-1.20.0.tgz" + integrity sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA== + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsdom@^20.0.0: + version "20.0.3" + resolved "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz" + integrity sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ== + dependencies: + abab "^2.0.6" + acorn "^8.8.1" + acorn-globals "^7.0.0" + cssom "^0.5.0" + cssstyle "^2.3.0" + data-urls "^3.0.2" + decimal.js "^10.4.2" + domexception "^4.0.0" + escodegen "^2.0.0" + form-data "^4.0.0" + html-encoding-sniffer "^3.0.0" + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.1" + is-potential-custom-element-name "^1.0.1" + nwsapi "^2.2.2" + parse5 "^7.1.1" + saxes "^6.0.0" + symbol-tree "^3.2.4" + tough-cookie "^4.1.2" + w3c-xmlserializer "^4.0.0" + webidl-conversions "^7.0.0" + whatwg-encoding "^2.0.0" + whatwg-mimetype "^3.0.0" + whatwg-url "^11.0.0" + ws "^8.11.0" + xml-name-validator "^4.0.0" + +jsdom@^22.1.0: + version "22.1.0" + resolved "https://registry.npmjs.org/jsdom/-/jsdom-22.1.0.tgz" + integrity sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw== + dependencies: + abab "^2.0.6" + cssstyle "^3.0.0" + data-urls "^4.0.0" + decimal.js "^10.4.3" + domexception "^4.0.0" + form-data "^4.0.0" + html-encoding-sniffer "^3.0.0" + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.1" + is-potential-custom-element-name "^1.0.1" + nwsapi "^2.2.4" + parse5 "^7.1.2" + rrweb-cssom "^0.6.0" + saxes "^6.0.0" + symbol-tree "^3.2.4" + tough-cookie "^4.1.2" + w3c-xmlserializer "^4.0.0" + webidl-conversions "^7.0.0" + whatwg-encoding "^2.0.0" + whatwg-mimetype "^3.0.0" + whatwg-url "^12.0.1" + ws "^8.13.0" + xml-name-validator "^4.0.0" + +jsesc@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz" + integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json5@^2.2.3: + version "2.2.3" + resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +keyv@^4.5.3: + version "4.5.3" + resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz" + integrity sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug== + dependencies: + json-buffer "3.0.1" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +lilconfig@2.1.0, lilconfig@^2.0.5, lilconfig@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +lint-staged@^14.0.1: + version "14.0.1" + resolved "https://registry.npmjs.org/lint-staged/-/lint-staged-14.0.1.tgz" + integrity sha512-Mw0cL6HXnHN1ag0mN/Dg4g6sr8uf8sn98w2Oc1ECtFto9tvRF7nkXGJRbx8gPlHyoR0pLyBr2lQHbWwmUHe1Sw== + dependencies: + chalk "5.3.0" + commander "11.0.0" + debug "4.3.4" + execa "7.2.0" + lilconfig "2.1.0" + listr2 "6.6.1" + micromatch "4.0.5" + pidtree "0.6.0" + string-argv "0.3.2" + yaml "2.3.1" + +listr2@6.6.1: + version "6.6.1" + resolved "https://registry.npmjs.org/listr2/-/listr2-6.6.1.tgz" + integrity sha512-+rAXGHh0fkEWdXBmX+L6mmfmXmXvDGEKzkjxO+8mP3+nI/r/CWznVBvsibXdxda9Zz0OW2e2ikphN3OwCT/jSg== + dependencies: + cli-truncate "^3.1.0" + colorette "^2.0.20" + eventemitter3 "^5.0.1" + log-update "^5.0.1" + rfdc "^1.3.0" + wrap-ansi "^8.1.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +log-update@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/log-update/-/log-update-5.0.1.tgz" + integrity sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw== + dependencies: + ansi-escapes "^5.0.0" + cli-cursor "^4.0.0" + slice-ansi "^5.0.0" + strip-ansi "^7.0.1" + wrap-ansi "^8.0.1" + +loose-envify@^1.1.0: + version "1.4.0" + resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lru-cache@^10.2.0: + version "10.4.3" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lz-string@^1.5.0: + version "1.5.0" + resolved "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz" + integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== + +make-dir@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz" + integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== + dependencies: + semver "^7.5.3" + +make-error@^1.3.6: + version "1.3.6" + resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@4.0.5, micromatch@^4.0.4, micromatch@^4.0.5: + version "4.0.5" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +micromatch@^4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-fn@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz" + integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== + +min-indent@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.2.5: + version "1.2.8" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +mz@^2.7.0: + version "2.7.0" + resolved "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + +nanoid@^3.3.6: + version "3.3.6" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz" + integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== + +napi-postinstall@^0.3.0: + version "0.3.4" + resolved "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz" + integrity sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== + +node-releases@^2.0.21: + version "2.0.23" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.23.tgz" + integrity sha512-cCmFDMSm26S6tQSDpBCg/NR8NENrVPhAJSf+XbxBG4rPFaaonlEoE9wHQmun+cls499TQGSb7ZyPBRlzgKfpeg== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz" + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +npm-run-path@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz" + integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q== + dependencies: + path-key "^4.0.0" + +nwsapi@^2.2.2, nwsapi@^2.2.4: + version "2.2.7" + resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz" + integrity sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ== + +object-assign@^4.0.1: + version "4.1.1" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-hash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz" + integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.0, onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +onetime@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz" + integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== + dependencies: + mimic-fn "^4.0.0" + +optionator@^0.9.3: + version "0.9.3" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz" + integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== + dependencies: + "@aashutoshrathi/word-wrap" "^1.2.3" + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2, p-limit@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +package-json-from-dist@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz" + integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse5@^7.0.0, parse5@^7.1.1, parse5@^7.1.2: + version "7.1.2" + resolved "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz" + integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== + dependencies: + entities "^4.4.0" + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-key@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz" + integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-scurry@^1.11.1: + version "1.11.1" + resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +picocolors@1.1.1, picocolors@^1.0.0, picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +picomatch@^4.0.2: + version "4.0.3" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz" + integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== + +pidtree@0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz" + integrity sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g== + +pify@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pirates@^4.0.1, pirates@^4.0.4, pirates@^4.0.7: + version "4.0.7" + resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz" + integrity sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA== + +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +postcss-import@^15.1.0: + version "15.1.0" + resolved "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz" + integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew== + dependencies: + postcss-value-parser "^4.0.0" + read-cache "^1.0.0" + resolve "^1.1.7" + +postcss-js@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz" + integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== + dependencies: + camelcase-css "^2.0.1" + +postcss-load-config@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz" + integrity sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA== + dependencies: + lilconfig "^2.0.5" + yaml "^2.1.1" + +postcss-nested@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz" + integrity sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ== + dependencies: + postcss-selector-parser "^6.0.11" + +postcss-selector-parser@^6.0.11: + version "6.0.13" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz" + integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@8.4.29, postcss@^8.4.23, postcss@^8.4.27: + version "8.4.29" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.29.tgz" + integrity sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw== + dependencies: + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prettier@2.8.8: + version "2.8.8" + resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== + +pretty-format@30.2.0, pretty-format@^30.0.0: + version "30.2.0" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz" + integrity sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA== + dependencies: + "@jest/schemas" "30.0.5" + ansi-styles "^5.2.0" + react-is "^18.3.1" + +pretty-format@^27.0.2: + version "27.5.1" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz" + integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== + dependencies: + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^17.0.1" + +pretty-format@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz" + integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== + dependencies: + "@jest/schemas" "^29.6.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +psl@^1.1.33: + version "1.9.0" + resolved "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== + +punycode@^2.1.0, punycode@^2.1.1, punycode@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== + +pure-rand@^7.0.0: + version "7.0.1" + resolved "https://registry.npmjs.org/pure-rand/-/pure-rand-7.0.1.tgz" + integrity sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ== + +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +react-dom@18.2.0: + version "18.2.0" + resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz" + integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== + dependencies: + loose-envify "^1.1.0" + scheduler "^0.23.0" + +react-is@^17.0.1: + version "17.0.2" + resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + +react-is@^18.0.0, react-is@^18.3.1: + version "18.3.1" + resolved "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz" + integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== + +react-refresh@^0.14.0: + version "0.14.0" + resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz" + integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== + +react-router-dom@6.16.0: + version "6.16.0" + resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.16.0.tgz" + integrity sha512-aTfBLv3mk/gaKLxgRDUPbPw+s4Y/O+ma3rEN1u8EgEpLpPe6gNjIsWt9rxushMHHMb7mSwxRGdGlGdvmFsyPIg== + dependencies: + "@remix-run/router" "1.9.0" + react-router "6.16.0" + +react-router@6.16.0: + version "6.16.0" + resolved "https://registry.npmjs.org/react-router/-/react-router-6.16.0.tgz" + integrity sha512-VT4Mmc4jj5YyjpOi5jOf0I+TYzGpvzERy4ckNSvSh2RArv8LLoCxlsZ2D+tc7zgjxcY34oTz2hZaeX5RVprKqA== + dependencies: + "@remix-run/router" "1.9.0" + +react@18.2.0: + version "18.2.0" + resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz" + integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== + dependencies: + loose-envify "^1.1.0" + +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz" + integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== + dependencies: + pify "^2.3.0" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +redent@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz" + integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== + dependencies: + indent-string "^4.0.0" + strip-indent "^3.0.0" + +regenerator-runtime@^0.14.0: + version "0.14.0" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz" + integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve@^1.1.7, resolve@^1.22.2: + version "1.22.6" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz" + integrity sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +restore-cursor@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz" + integrity sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rfdc@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz" + integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rollup@^3.27.1: + version "3.29.2" + resolved "https://registry.npmjs.org/rollup/-/rollup-3.29.2.tgz" + integrity sha512-CJouHoZ27v6siztc21eEQGo0kIcE5D1gVPA571ez0mMYb25LGYGKnVNXpEj5MGlepmDWGXNjDB5q7uNiPHC11A== + optionalDependencies: + fsevents "~2.3.2" + +rrweb-cssom@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz" + integrity sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw== + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +"safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +saxes@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz" + integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA== + dependencies: + xmlchars "^2.2.0" + +scheduler@^0.23.0: + version "0.23.0" + resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz" + integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== + dependencies: + loose-envify "^1.1.0" + +semver@^6.3.0, semver@^6.3.1: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.5.3, semver@^7.5.4, semver@^7.7.2, semver@^7.7.3: + version "7.7.3" + resolved "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz" + integrity sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz" + integrity sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ== + dependencies: + ansi-styles "^6.0.0" + is-fullwidth-code-point "^4.0.0" + +source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +source-map-support@0.5.13: + version "0.5.13" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +stack-utils@^2.0.3, stack-utils@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== + dependencies: + escape-string-regexp "^2.0.0" + +string-argv@0.3.2: + version "0.3.2" + resolved "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz" + integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== + +string-length@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^5.0.0, string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.1: + version "7.1.2" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz" + integrity sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA== + dependencies: + ansi-regex "^6.0.1" + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-final-newline@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz" + integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== + +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" + +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +sucrase@^3.32.0: + version "3.34.0" + resolved "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz" + integrity sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.2" + commander "^4.0.0" + glob "7.1.6" + lines-and-columns "^1.1.6" + mz "^2.7.0" + pirates "^4.0.1" + ts-interface-checker "^0.1.9" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0, supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +symbol-tree@^3.2.4: + version "3.2.4" + resolved "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + +synckit@^0.11.8: + version "0.11.11" + resolved "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz" + integrity sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw== + dependencies: + "@pkgr/core" "^0.2.9" + +tailwindcss@3.3.3: + version "3.3.3" + resolved "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.3.tgz" + integrity sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w== + dependencies: + "@alloc/quick-lru" "^5.2.0" + arg "^5.0.2" + chokidar "^3.5.3" + didyoumean "^1.2.2" + dlv "^1.1.3" + fast-glob "^3.2.12" + glob-parent "^6.0.2" + is-glob "^4.0.3" + jiti "^1.18.2" + lilconfig "^2.1.0" + micromatch "^4.0.5" + normalize-path "^3.0.0" + object-hash "^3.0.0" + picocolors "^1.0.0" + postcss "^8.4.23" + postcss-import "^15.1.0" + postcss-js "^4.0.1" + postcss-load-config "^4.0.1" + postcss-nested "^6.0.1" + postcss-selector-parser "^6.0.11" + resolve "^1.22.2" + sucrase "^3.32.0" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz" + integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.1" + resolved "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== + dependencies: + any-promise "^1.0.0" + +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +tough-cookie@^4.1.2: + version "4.1.3" + resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz" + integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== + dependencies: + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.2.0" + url-parse "^1.5.3" + +tr46@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz" + integrity sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA== + dependencies: + punycode "^2.1.1" + +tr46@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz" + integrity sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw== + dependencies: + punycode "^2.3.0" + +ts-api-utils@^1.0.1: + version "1.0.3" + resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz" + integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== + +ts-interface-checker@^0.1.9: + version "0.1.13" + resolved "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz" + integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== + +ts-jest@^29.4.5: + version "29.4.5" + resolved "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.5.tgz" + integrity sha512-HO3GyiWn2qvTQA4kTgjDcXiMwYQt68a1Y8+JuLRVpdIzm+UOLSHgl/XqR4c6nzJkq5rOkjc02O2I7P7l/Yof0Q== + dependencies: + bs-logger "^0.2.6" + fast-json-stable-stringify "^2.1.0" + handlebars "^4.7.8" + json5 "^2.2.3" + lodash.memoize "^4.1.2" + make-error "^1.3.6" + semver "^7.7.3" + type-fest "^4.41.0" + yargs-parser "^21.1.1" + +tslib@^2.4.0: + version "2.8.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.20.2: + 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== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-fest@^1.0.2: + version "1.4.0" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz" + integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA== + +type-fest@^4.41.0: + version "4.41.0" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz" + integrity sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA== + +typescript@^5.2.2: + version "5.2.2" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz" + integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== + +uglify-js@^3.1.4: + version "3.19.3" + resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz" + integrity sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ== + +universalify@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz" + integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== + +unrs-resolver@^1.7.11: + version "1.11.1" + resolved "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz" + integrity sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg== + dependencies: + napi-postinstall "^0.3.0" + optionalDependencies: + "@unrs/resolver-binding-android-arm-eabi" "1.11.1" + "@unrs/resolver-binding-android-arm64" "1.11.1" + "@unrs/resolver-binding-darwin-arm64" "1.11.1" + "@unrs/resolver-binding-darwin-x64" "1.11.1" + "@unrs/resolver-binding-freebsd-x64" "1.11.1" + "@unrs/resolver-binding-linux-arm-gnueabihf" "1.11.1" + "@unrs/resolver-binding-linux-arm-musleabihf" "1.11.1" + "@unrs/resolver-binding-linux-arm64-gnu" "1.11.1" + "@unrs/resolver-binding-linux-arm64-musl" "1.11.1" + "@unrs/resolver-binding-linux-ppc64-gnu" "1.11.1" + "@unrs/resolver-binding-linux-riscv64-gnu" "1.11.1" + "@unrs/resolver-binding-linux-riscv64-musl" "1.11.1" + "@unrs/resolver-binding-linux-s390x-gnu" "1.11.1" + "@unrs/resolver-binding-linux-x64-gnu" "1.11.1" + "@unrs/resolver-binding-linux-x64-musl" "1.11.1" + "@unrs/resolver-binding-wasm32-wasi" "1.11.1" + "@unrs/resolver-binding-win32-arm64-msvc" "1.11.1" + "@unrs/resolver-binding-win32-ia32-msvc" "1.11.1" + "@unrs/resolver-binding-win32-x64-msvc" "1.11.1" + +update-browserslist-db@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz" + integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw== + dependencies: + escalade "^3.2.0" + picocolors "^1.1.1" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +url-parse@^1.5.3: + version "1.5.10" + resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +util-deprecate@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +v8-to-istanbul@^9.0.1: + version "9.3.0" + resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz" + integrity sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA== + dependencies: + "@jridgewell/trace-mapping" "^0.3.12" + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^2.0.0" + +vite-plugin-ruby@3.2.2: + version "3.2.2" + resolved "https://registry.npmjs.org/vite-plugin-ruby/-/vite-plugin-ruby-3.2.2.tgz" + integrity sha512-cuHG1MajRWPR8YdfF6lvgsQRnKFEBRwZF//asFbRiI1psacxB5aPlHSvYZYxAu5IflrAa0MdR0HxEq+g98M3iQ== + dependencies: + debug "^4.3.4" + fast-glob "^3.2.12" + +vite@4.4.9: + version "4.4.9" + resolved "https://registry.npmjs.org/vite/-/vite-4.4.9.tgz" + integrity sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA== + dependencies: + esbuild "^0.18.10" + postcss "^8.4.27" + rollup "^3.27.1" + optionalDependencies: + fsevents "~2.3.2" + +w3c-xmlserializer@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz" + integrity sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw== + dependencies: + xml-name-validator "^4.0.0" + +walker@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + +webidl-conversions@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz" + integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== + +whatwg-encoding@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz" + integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg== + dependencies: + iconv-lite "0.6.3" + +whatwg-mimetype@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz" + integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== + +whatwg-url@^11.0.0: + version "11.0.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz" + integrity sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ== + dependencies: + tr46 "^3.0.0" + webidl-conversions "^7.0.0" + +whatwg-url@^12.0.0, whatwg-url@^12.0.1: + version "12.0.1" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz" + integrity sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ== + dependencies: + tr46 "^4.1.1" + webidl-conversions "^7.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz" + integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^8.0.1, wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz" + integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + +write-file-atomic@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz" + integrity sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^4.0.1" + +ws@^8.11.0, ws@^8.13.0: + version "8.14.1" + resolved "https://registry.npmjs.org/ws/-/ws-8.14.1.tgz" + integrity sha512-4OOseMUq8AzRBI/7SLMUwO+FEDnguetSk7KMb1sHwvF2w2Wv5Hoj0nlifx8vtGsftE/jWHojPy8sMMzYLJ2G/A== + +xml-name-validator@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz" + integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== + +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yaml@2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz" + integrity sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ== + +yaml@^2.1.1: + version "2.3.2" + resolved "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz" + integrity sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg== + +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@^17.7.2: + version "17.7.2" + resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==