diff --git a/.changeset/pre.json b/.changeset/pre.json new file mode 100644 index 00000000..70e904e8 --- /dev/null +++ b/.changeset/pre.json @@ -0,0 +1,17 @@ +{ + "mode": "exit", + "tag": "refactor", + "initialVersions": { + "@example/nextjs": "0.0.0", + "@example/remix": "0.0.0", + "@example/vite": "0.0.0", + "r18gs": "1.1.2", + "@repo/eslint-config": "0.0.0", + "@repo/typescript-config": "0.0.0", + "@repo/shared": "0.0.1", + "@repo/scripts": "0.0.0" + }, + "changesets": [ + "twenty-starfishes-unite" + ] +} diff --git a/.changeset/twenty-starfishes-unite.md b/.changeset/twenty-starfishes-unite.md new file mode 100644 index 00000000..8a5b610d --- /dev/null +++ b/.changeset/twenty-starfishes-unite.md @@ -0,0 +1,5 @@ +--- +"r18gs": patch +--- + +Simplify build - handle prototype pollution vulnerability. diff --git a/contributing.md b/contributing.md index f13085b9..5359389b 100644 --- a/contributing.md +++ b/contributing.md @@ -26,8 +26,6 @@ This TurboRepo comprises the following packages/examples, all written in [TypeSc - `@example/remix`: a Remix app - `@repo/eslint-config`: `eslint` configurations (includes `eslint-config-next` and `eslint-config-prettier`) - `@repo/typescript-config`: `tsconfig.json`s used throughout the monorepo -- `@repo/jest-presets`: Jest presets for unit testing -- `@repo/logger`: A configurable shared logger utility - `@repo/shared`: An internal library of components utilized by the examples - `react18-loaders`: a React component library (The core package published to NPM) diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 78273f4f..565eb85c 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -11,7 +11,6 @@ "start": "next start" }, "dependencies": { - "@repo/logger": "workspace:*", "@repo/shared": "workspace:*", "next": "^14.2.4", "nextjs-darkmode": "^1.0.4", @@ -30,4 +29,4 @@ "@types/react-dom": "^18.3.0", "typescript": "^5.5.2" } -} \ No newline at end of file +} diff --git a/lib/CHANGELOG.md b/lib/CHANGELOG.md index 7dbcd65e..a00ac15e 100644 --- a/lib/CHANGELOG.md +++ b/lib/CHANGELOG.md @@ -1,5 +1,11 @@ # r18gs +## 1.1.3-refactor.0 + +### Patch Changes + +- 07e654a: Simplify build - handle prototype pollution vulnerability. + ## 1.1.2 ### Patch Changes diff --git a/lib/package.json b/lib/package.json index d0adc313..7e13321f 100644 --- a/lib/package.json +++ b/lib/package.json @@ -2,7 +2,7 @@ "name": "r18gs", "author": "Mayank Kumar Chaudhari ", "private": false, - "version": "1.1.2", + "version": "1.1.3-refactor.0", "description": "A simple yet elegant, light weight, react18 global store to replace Zustand for better tree shaking.", "license": "MPL-2.0", "main": "./dist/index.js", @@ -25,7 +25,6 @@ }, "devDependencies": { "@repo/eslint-config": "workspace:*", - "@repo/jest-presets": "workspace:*", "@repo/typescript-config": "workspace:*", "@testing-library/react": "^16.0.0", "@types/node": "^20.14.8", diff --git a/lib/src/index.ts b/lib/src/index.ts index 3c784200..cab23f31 100644 --- a/lib/src/index.ts +++ b/lib/src/index.ts @@ -23,13 +23,13 @@ export type { SetterArgType, SetStateAction, Plugin } from "./utils"; const useRGS = (key: string, value?: ValueType): [T, SetStateAction] => { /** Initialize the named store when invoked for the first time. */ if (!globalRGS[key]) - globalRGS[key] = [ + globalRGS[key] = { // @ts-expect-error -- ok - typeof value === "function" ? value() : value, - [], - createSetter(key), - createSubcriber(key), - ]; + v: typeof value === "function" ? value() : value, + l: [], + s: createSetter(key), + u: createSubcriber(key), + }; return createHook(key); }; diff --git a/lib/src/utils.ts b/lib/src/utils.ts index 1ee02f7d..5fa4e6a7 100644 --- a/lib/src/utils.ts +++ b/lib/src/utils.ts @@ -10,8 +10,7 @@ export type ValueType = T | (() => T); /** * This is a hack to reduce lib size + readability + not encouraging direct access to globalThis */ -const [VALUE, LISTENERS, SETTER, SUBSCRIBER] = [0, 1, 2, 3, 4]; -type RGS = [unknown, Listener[], SetStateAction | null, Subscriber]; +type RGS = { v: unknown; l: Listener[]; s: SetStateAction | null; u: Subscriber }; declare global { // eslint-disable-next-line no-var -- var required for global declaration. @@ -24,16 +23,15 @@ globalThisForBetterMinification.rgs = {}; export const globalRGS = globalThisForBetterMinification.rgs; /** trigger all listeners */ -const triggerListeners = (rgs: RGS) => - (rgs[LISTENERS] as Listener[]).forEach(listener => listener()); +const triggerListeners = (rgs: RGS) => rgs.l.forEach(listener => listener()); /** craete subscriber function to subscribe to the store. */ export const createSubcriber = (key: string): Subscriber => { return listener => { const rgs = globalRGS[key] as RGS; - (rgs[LISTENERS] as Listener[]).push(listener); + (rgs.l as Listener[]).push(listener); return () => { - rgs[LISTENERS] = (rgs[LISTENERS] as Listener[]).filter(l => l !== listener); + rgs.l = (rgs.l as Listener[]).filter(l => l !== listener); }; }; }; @@ -42,8 +40,8 @@ export const createSubcriber = (key: string): Subscriber => { export const createSetter = (key: string): SetStateAction => { return val => { const rgs = globalRGS[key] as RGS; - rgs[VALUE] = typeof val === "function" ? val(rgs[VALUE] as T) : val; - (rgs[LISTENERS] as Listener[]).forEach(listener => listener()); + rgs.v = typeof val === "function" ? val(rgs.v as T) : val; + (rgs.l as Listener[]).forEach(listener => listener()); }; }; @@ -51,9 +49,9 @@ export const createSetter = (key: string): SetStateAction => { export const createHook = (key: string): [T, SetStateAction] => { const rgs = globalRGS[key] as RGS; /** This function is called by react to get the current stored value. */ - const getSnapshot = () => rgs[VALUE] as T; - const val = useSyncExternalStore(rgs[SUBSCRIBER] as Subscriber, getSnapshot, getSnapshot); - return [val, rgs[SETTER] as SetStateAction]; + const getSnapshot = () => rgs.v as T; + const val = useSyncExternalStore(rgs.u as Subscriber, getSnapshot, getSnapshot); + return [val, rgs.s as SetStateAction]; }; type Mutate = (value?: T) => void; @@ -69,12 +67,12 @@ const initPlugins = async (key: string, plugins: Plugin[]) => { const rgs = globalRGS[key] as RGS; /** Mutate function to update the value */ const mutate: Mutate = newValue => { - rgs[VALUE] = newValue; + rgs.v = newValue; triggerListeners(rgs); }; for (const plugin of plugins) { /** Next plugins initializer will get the new value if updated by previous one */ - await plugin.init?.(key, rgs[VALUE] as T, mutate); + await plugin.init?.(key, rgs.v as T, mutate); } allExtentionsInitialized = true; }; @@ -89,7 +87,7 @@ export const initWithPlugins = ( value = value instanceof Function ? value() : value; if (doNotInit) { /** You will not have access to the setter until initialized */ - globalRGS[key] = [value, [], null, createSubcriber(key)]; + globalRGS[key] = { v: value, l: [], s: null, u: createSubcriber(key) }; return; } /** setter function to set the state. */ @@ -97,16 +95,16 @@ export const initWithPlugins = ( /** Do not allow mutating the store before all extentions are initialized */ if (!allExtentionsInitialized) return; const rgs = globalRGS[key] as RGS; - rgs[VALUE] = val instanceof Function ? val(rgs[VALUE] as T) : val; + rgs.v = val instanceof Function ? val(rgs.v as T) : val; triggerListeners(rgs); - plugins.forEach(plugin => plugin.onChange?.(key, rgs[VALUE] as T)); + plugins.forEach(plugin => plugin.onChange?.(key, rgs.v as T)); }; const rgs = globalRGS[key]; if (rgs) { - rgs[VALUE] = value; - rgs[SETTER] = setterWithPlugins; - } else globalRGS[key] = [value, [], setterWithPlugins, createSubcriber(key)]; + rgs.v = value; + rgs.s = setterWithPlugins; + } else globalRGS[key] = { v: value, l: [], s: setterWithPlugins, u: createSubcriber(key) }; initPlugins(key, plugins); }; @@ -133,6 +131,6 @@ export const useRGSWithPlugins = ( plugins?: Plugin[], doNotInit = false, ): [T, SetStateAction] => { - if (!globalRGS[key]?.[SETTER]) initWithPlugins(key, value, plugins, doNotInit); + if (!globalRGS[key]?.s) initWithPlugins(key, value, plugins, doNotInit); return createHook(key); }; diff --git a/lib/tsup.config.ts b/lib/tsup.config.ts index f36865bd..39c5cc52 100644 --- a/lib/tsup.config.ts +++ b/lib/tsup.config.ts @@ -1,5 +1,4 @@ import { defineConfig } from "tsup"; -import fs from "node:fs"; export default defineConfig(options => ({ format: ["cjs", "esm"], @@ -9,36 +8,4 @@ export default defineConfig(options => ({ clean: !options.watch, bundle: true, minify: !options.watch, - esbuildPlugins: [ - { - name: "improve-minify", - setup(build) { - build.onLoad({ filter: /utils.ts/ }, args => { - let contents = fs.readFileSync(args.path, "utf8"); - const lines = contents.split("\n"); - const hackLine = lines.find(line => line.startsWith("const [VALUE,")); - - if (!hackLine) return { contents, loader: "ts" }; - /** remove hackLine */ - contents = contents.replace(hackLine, ""); - - /** clean up */ - const tokens = hackLine - .replace("const", "") - .split("=")[0] - .trim() - .replace(/\]|\[/g, "") - .split(",") - .map((t, i) => ({ token: t.trim(), i })); - - tokens.sort((a, b) => b.token.length - a.token.length); - - for (const t of tokens) { - contents = contents.replace(new RegExp(`${t.token}`, "g"), String(t.i)); - } - return { contents, loader: "ts" }; - }); - }, - }, - ], })); diff --git a/packages/config-eslint/server.js b/packages/config-eslint/server.js index f84343f2..51f61670 100644 --- a/packages/config-eslint/server.js +++ b/packages/config-eslint/server.js @@ -33,9 +33,6 @@ module.exports = { overrides: [ { files: ["**/__tests__/**/*"], - env: { - jest: true, - }, }, ], ignorePatterns: [".*.js", "node_modules/", "dist/"], diff --git a/packages/jest-presets/browser/jest-preset.js b/packages/jest-presets/browser/jest-preset.js deleted file mode 100644 index 3173ffd6..00000000 --- a/packages/jest-presets/browser/jest-preset.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - roots: [""], - testEnvironment: "jsdom", - transform: { - "^.+\\.tsx?$": "ts-jest", - }, - moduleFileExtensions: ["ts", "tsx", "js", "jsx", "json", "node"], - modulePathIgnorePatterns: [ - "/test/__fixtures__", - "/node_modules", - "/dist", - ], - preset: "ts-jest", -}; diff --git a/packages/jest-presets/node/jest-preset.js b/packages/jest-presets/node/jest-preset.js deleted file mode 100644 index b6c25930..00000000 --- a/packages/jest-presets/node/jest-preset.js +++ /dev/null @@ -1,13 +0,0 @@ -module.exports = { - roots: [""], - transform: { - "^.+\\.tsx?$": "ts-jest", - }, - moduleFileExtensions: ["ts", "tsx", "js", "jsx", "json", "node"], - modulePathIgnorePatterns: [ - "/test/__fixtures__", - "/node_modules", - "/dist", - ], - preset: "ts-jest", -}; diff --git a/packages/jest-presets/package.json b/packages/jest-presets/package.json deleted file mode 100644 index 2e41bb45..00000000 --- a/packages/jest-presets/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "@repo/jest-presets", - "version": "0.0.0", - "private": true, - "license": "MIT", - "files": [ - "browser/jest-preset.js", - "node/jest-preset.js" - ], - "dependencies": { - "ts-jest": "^29.1.5" - }, - "devDependencies": { - "jest-environment-jsdom": "^29.7.0" - } -} \ No newline at end of file diff --git a/packages/logger/.eslintrc.js b/packages/logger/.eslintrc.js deleted file mode 100644 index 49f67f37..00000000 --- a/packages/logger/.eslintrc.js +++ /dev/null @@ -1,11 +0,0 @@ -/** @type {import("eslint").Linter.Config} */ -module.exports = { - extends: ["@repo/eslint-config/index.js"], - parser: "@typescript-eslint/parser", - parserOptions: { - project: true, - }, - env: { - jest: true, - }, -}; diff --git a/packages/logger/package.json b/packages/logger/package.json deleted file mode 100644 index 9203faa6..00000000 --- a/packages/logger/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "@repo/logger", - "version": "0.0.0", - "private": true, - "main": "./dist/index.js", - "types": "./dist/index.d.ts", - "files": [ - "dist/**" - ], - "scripts": { - "build": "tsup", - "dev": "tsup --watch", - "lint": "eslint src/", - "typecheck": "tsc --noEmit", - "test": "jest" - }, - "jest": { - "preset": "@repo/jest-presets/node" - }, - "devDependencies": { - "@repo/eslint-config": "workspace:*", - "@repo/jest-presets": "workspace:*", - "@repo/typescript-config": "workspace:*", - "@types/jest": "^29.5.12", - "@types/node": "^20.14.8", - "jest": "^29.7.0", - "tsup": "^8.1.0", - "typescript": "^5.5.2" - } -} \ No newline at end of file diff --git a/packages/logger/src/__tests__/log.test.ts b/packages/logger/src/__tests__/log.test.ts deleted file mode 100644 index e196fcc9..00000000 --- a/packages/logger/src/__tests__/log.test.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { log } from ".."; - -jest.spyOn(global.console, "log"); - -describe("@repo/logger", () => { - it("prints a message", () => { - log("hello"); - // eslint-disable-next-line no-console -- testing console - expect(console.log).toBeCalledWith("LOGGER: ", "hello"); - }); -}); diff --git a/packages/logger/src/index.ts b/packages/logger/src/index.ts deleted file mode 100644 index d573ddf4..00000000 --- a/packages/logger/src/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const log = (...args: unknown[]): void => { - // eslint-disable-next-line no-console -- logger - console.log("LOGGER: ", ...args); -}; diff --git a/packages/logger/tsconfig.json b/packages/logger/tsconfig.json deleted file mode 100644 index a7f4e490..00000000 --- a/packages/logger/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "@repo/typescript-config/base.json", - "compilerOptions": { - "lib": ["ES2015"], - "outDir": "./dist", - "types": ["jest", "node"] - }, - "include": ["."], - "exclude": ["node_modules", "dist"], -} diff --git a/packages/logger/tsup.config.ts b/packages/logger/tsup.config.ts deleted file mode 100644 index be508ff5..00000000 --- a/packages/logger/tsup.config.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { defineConfig, type Options } from "tsup"; - -export default defineConfig((options: Options) => ({ - entryPoints: ["src/index.ts"], - clean: true, - dts: true, - format: ["cjs"], - ...options, -})); diff --git a/packages/logger/turbo.json b/packages/logger/turbo.json deleted file mode 100644 index 52e8c763..00000000 --- a/packages/logger/turbo.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": [ - "//" - ], - "tasks": { - "build": { - "outputs": [ - "dist/**" - ] - } - } -} diff --git a/packages/shared/CHANGELOG.md b/packages/shared/CHANGELOG.md index bb43c6b1..44235c0b 100644 --- a/packages/shared/CHANGELOG.md +++ b/packages/shared/CHANGELOG.md @@ -1,5 +1,12 @@ # @repo/shared +## 0.0.2-refactor.0 + +### Patch Changes + +- Updated dependencies [07e654a] + - r18gs@1.1.3-refactor.0 + ## 0.0.1 ### Patch Changes diff --git a/packages/shared/package.json b/packages/shared/package.json index 0d9184d3..739ee9b9 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -1,6 +1,6 @@ { "name": "@repo/shared", - "version": "0.0.1", + "version": "0.0.2-refactor.0", "private": true, "sideEffects": false, "main": "./dist/index.js", @@ -19,7 +19,6 @@ }, "devDependencies": { "@repo/eslint-config": "workspace:*", - "@repo/jest-presets": "workspace:*", "@repo/typescript-config": "workspace:*", "@testing-library/react": "^16.0.0", "@types/node": "^20.14.8", @@ -56,4 +55,4 @@ "optional": true } } -} \ No newline at end of file +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 26aff6ee..2225d453 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -53,9 +53,6 @@ importers: examples/nextjs: dependencies: - '@repo/logger': - specifier: workspace:* - version: link:../../packages/logger '@repo/shared': specifier: workspace:* version: link:../../packages/shared @@ -215,9 +212,6 @@ importers: '@repo/eslint-config': specifier: workspace:* version: link:../packages/config-eslint - '@repo/jest-presets': - specifier: workspace:* - version: link:../packages/jest-presets '@repo/typescript-config': specifier: workspace:* version: link:../packages/config-typescript @@ -287,43 +281,6 @@ importers: packages/config-typescript: {} - packages/jest-presets: - dependencies: - ts-jest: - specifier: ^29.1.5 - version: 29.1.5(@babel/core@7.24.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@20.14.8))(typescript@5.5.2) - devDependencies: - jest-environment-jsdom: - specifier: ^29.7.0 - version: 29.7.0 - - packages/logger: - devDependencies: - '@repo/eslint-config': - specifier: workspace:* - version: link:../config-eslint - '@repo/jest-presets': - specifier: workspace:* - version: link:../jest-presets - '@repo/typescript-config': - specifier: workspace:* - version: link:../config-typescript - '@types/jest': - specifier: ^29.5.12 - version: 29.5.12 - '@types/node': - specifier: ^20.14.8 - version: 20.14.8 - jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@20.14.8) - tsup: - specifier: ^8.1.0 - version: 8.1.0(postcss@8.4.38)(typescript@5.5.2) - typescript: - specifier: ^5.5.2 - version: 5.5.2 - packages/shared: dependencies: '@mayank1513/fork-me': @@ -354,9 +311,6 @@ importers: '@repo/eslint-config': specifier: workspace:* version: link:../config-eslint - '@repo/jest-presets': - specifier: workspace:* - version: link:../jest-presets '@repo/typescript-config': specifier: workspace:* version: link:../config-typescript @@ -1484,10 +1438,6 @@ packages: '@types/react-dom': optional: true - '@tootallnate/once@2.0.0': - resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} - engines: {node: '>= 10'} - '@types/acorn@4.0.6': resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} @@ -1551,12 +1501,6 @@ packages: '@types/istanbul-reports@3.0.4': resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} - '@types/jest@29.5.12': - resolution: {integrity: sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==} - - '@types/jsdom@20.0.1': - resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} - '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -1614,9 +1558,6 @@ packages: '@types/through@0.0.33': resolution: {integrity: sha512-HsJ+z3QuETzP3cswwtzt2vEIiHBk/dCcHGhbmG5X3ecnwFD/lPrMpliGXxSCg03L9AhrdwA4Oz/qfspkDW+xGQ==} - '@types/tough-cookie@4.0.5': - resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} - '@types/unist@2.0.10': resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} @@ -1792,10 +1733,6 @@ packages: '@zxing/text-encoding@0.9.0': resolution: {integrity: sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==} - abab@2.0.6: - resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} - deprecated: Use your platform's native atob() and btoa() methods instead - abbrev@2.0.0: resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -1808,9 +1745,6 @@ packages: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} - acorn-globals@7.0.1: - resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} - acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -1825,10 +1759,6 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - agent-base@7.1.1: resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} engines: {node: '>= 14'} @@ -2057,10 +1987,6 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - bs-logger@0.2.6: - resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} - engines: {node: '>= 6'} - bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} @@ -2359,16 +2285,6 @@ packages: engines: {node: '>=4'} hasBin: true - cssom@0.3.8: - resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} - - cssom@0.5.0: - resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} - - cssstyle@2.3.0: - resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} - engines: {node: '>=8'} - cssstyle@4.0.1: resolution: {integrity: sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==} engines: {node: '>=18'} @@ -2396,10 +2312,6 @@ packages: resolution: {integrity: sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==} engines: {node: '>= 6'} - data-urls@3.0.2: - resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} - engines: {node: '>=12'} - data-urls@5.0.0: resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} engines: {node: '>=18'} @@ -2554,11 +2466,6 @@ packages: dom-accessibility-api@0.5.16: resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} - domexception@4.0.0: - resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} - engines: {node: '>=12'} - deprecated: Use your platform's native DOMException instead - dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} @@ -2709,11 +2616,6 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} - escodegen@2.1.0: - resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} - engines: {node: '>=6.0'} - hasBin: true - eslint-config-prettier@9.1.0: resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} hasBin: true @@ -3342,10 +3244,6 @@ packages: resolution: {integrity: sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - html-encoding-sniffer@3.0.0: - resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} - engines: {node: '>=12'} - html-encoding-sniffer@4.0.0: resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} engines: {node: '>=18'} @@ -3357,18 +3255,10 @@ packages: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} - http-proxy-agent@5.0.0: - resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} - engines: {node: '>= 6'} - http-proxy-agent@7.0.2: resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} - https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} - https-proxy-agent@7.0.4: resolution: {integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==} engines: {node: '>= 14'} @@ -3810,15 +3700,6 @@ packages: resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-environment-jsdom@29.7.0: - resolution: {integrity: sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - jest-environment-node@29.7.0: resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3927,15 +3808,6 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true - jsdom@20.0.3: - resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} - engines: {node: '>=14'} - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - jsdom@24.1.0: resolution: {integrity: sha512-6gpM7pRXCwIOKxX47cgOyvyQDN/Eh0f1MeKySBV2xGdKtqJBLj8P25eY3EVCWo2mglDDzozR2r2MW4T+JiNUZA==} engines: {node: '>=18'} @@ -4078,9 +3950,6 @@ packages: lodash.get@4.4.2: resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} - lodash.memoize@4.1.2: - resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} - lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} @@ -4145,9 +4014,6 @@ packages: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - make-iterator@1.0.1: resolution: {integrity: sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==} engines: {node: '>=0.10.0'} @@ -5827,10 +5693,6 @@ packages: tr46@1.0.1: resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} - tr46@3.0.0: - resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} - engines: {node: '>=12'} - tr46@5.0.0: resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} engines: {node: '>=18'} @@ -5862,30 +5724,6 @@ packages: ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - ts-jest@29.1.5: - resolution: {integrity: sha512-UuClSYxM7byvvYfyWdFI+/2UxMmwNyJb0NPkZPQE2hew3RurV7l7zURgOHAd/1I1ZdPpe3GUsXNXAcN8TFKSIg==} - engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@babel/core': '>=7.0.0-beta.0 <8' - '@jest/transform': ^29.0.0 - '@jest/types': ^29.0.0 - babel-jest: ^29.0.0 - esbuild: '*' - jest: ^29.0.0 - typescript: '>=4.3 <6' - peerDependenciesMeta: - '@babel/core': - optional: true - '@jest/transform': - optional: true - '@jest/types': - optional: true - babel-jest: - optional: true - esbuild: - optional: true - tsconfck@3.1.0: resolution: {integrity: sha512-CMjc5zMnyAjcS9sPLytrbFmj89st2g+JYtY/c02ug4Q+CZaAtCgbyviI0n1YvjZE/pzoc6FbNsINS13DOL1B9w==} engines: {node: ^18 || >=20} @@ -6324,10 +6162,6 @@ packages: jsdom: optional: true - w3c-xmlserializer@4.0.0: - resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} - engines: {node: '>=14'} - w3c-xmlserializer@5.0.0: resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} engines: {node: '>=18'} @@ -6355,26 +6189,14 @@ packages: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} - whatwg-encoding@2.0.0: - resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} - engines: {node: '>=12'} - whatwg-encoding@3.1.1: resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} engines: {node: '>=18'} - whatwg-mimetype@3.0.0: - resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} - engines: {node: '>=12'} - whatwg-mimetype@4.0.0: resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} engines: {node: '>=18'} - whatwg-url@11.0.0: - resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} - engines: {node: '>=12'} - whatwg-url@14.0.0: resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==} engines: {node: '>=18'} @@ -6473,10 +6295,6 @@ packages: utf-8-validate: optional: true - xml-name-validator@4.0.0: - resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} - engines: {node: '>=12'} - xml-name-validator@5.0.0: resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} engines: {node: '>=18'} @@ -6709,16 +6527,19 @@ snapshots: dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 + optional: true '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 + optional: true '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 + optional: true '@babel/plugin-syntax-decorators@7.24.7(@babel/core@7.24.7)': dependencies: @@ -6729,11 +6550,13 @@ snapshots: dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 + optional: true '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 + optional: true '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.24.7)': dependencies: @@ -6744,36 +6567,43 @@ snapshots: dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 + optional: true '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 + optional: true '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 + optional: true '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 + optional: true '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 + optional: true '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 + optional: true '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 + optional: true '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.24.7)': dependencies: @@ -7216,6 +7046,7 @@ snapshots: get-package-type: 0.1.0 js-yaml: 3.14.1 resolve-from: 5.0.0 + optional: true '@istanbuljs/schema@0.1.3': {} @@ -7227,6 +7058,7 @@ snapshots: jest-message-util: 29.7.0 jest-util: 29.7.0 slash: 3.0.0 + optional: true '@jest/core@29.7.0': dependencies: @@ -7262,6 +7094,7 @@ snapshots: - babel-plugin-macros - supports-color - ts-node + optional: true '@jest/environment@29.7.0': dependencies: @@ -7269,10 +7102,12 @@ snapshots: '@jest/types': 29.6.3 '@types/node': 20.14.8 jest-mock: 29.7.0 + optional: true '@jest/expect-utils@29.7.0': dependencies: jest-get-type: 29.6.3 + optional: true '@jest/expect@29.7.0': dependencies: @@ -7280,6 +7115,7 @@ snapshots: jest-snapshot: 29.7.0 transitivePeerDependencies: - supports-color + optional: true '@jest/fake-timers@29.7.0': dependencies: @@ -7289,6 +7125,7 @@ snapshots: jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 + optional: true '@jest/globals@29.7.0': dependencies: @@ -7298,6 +7135,7 @@ snapshots: jest-mock: 29.7.0 transitivePeerDependencies: - supports-color + optional: true '@jest/reporters@29.7.0': dependencies: @@ -7327,6 +7165,7 @@ snapshots: v8-to-istanbul: 9.3.0 transitivePeerDependencies: - supports-color + optional: true '@jest/schemas@29.6.3': dependencies: @@ -7337,6 +7176,7 @@ snapshots: '@jridgewell/trace-mapping': 0.3.25 callsites: 3.1.0 graceful-fs: 4.2.11 + optional: true '@jest/test-result@29.7.0': dependencies: @@ -7344,6 +7184,7 @@ snapshots: '@jest/types': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 collect-v8-coverage: 1.0.2 + optional: true '@jest/test-sequencer@29.7.0': dependencies: @@ -7351,6 +7192,7 @@ snapshots: graceful-fs: 4.2.11 jest-haste-map: 29.7.0 slash: 3.0.0 + optional: true '@jest/transform@29.7.0': dependencies: @@ -7371,6 +7213,7 @@ snapshots: write-file-atomic: 4.0.2 transitivePeerDependencies: - supports-color + optional: true '@jest/types@29.6.3': dependencies: @@ -7380,6 +7223,7 @@ snapshots: '@types/node': 20.14.8 '@types/yargs': 17.0.32 chalk: 4.1.2 + optional: true '@jridgewell/gen-mapping@0.3.5': dependencies: @@ -7808,10 +7652,12 @@ snapshots: '@sinonjs/commons@3.0.1': dependencies: type-detect: 4.0.8 + optional: true '@sinonjs/fake-timers@10.3.0': dependencies: '@sinonjs/commons': 3.0.1 + optional: true '@storybook/csf@0.0.1': dependencies: @@ -7845,8 +7691,6 @@ snapshots: '@types/react': 18.3.3 '@types/react-dom': 18.3.0 - '@tootallnate/once@2.0.0': {} - '@types/acorn@4.0.6': dependencies: '@types/estree': 1.0.5 @@ -7897,6 +7741,7 @@ snapshots: '@types/graceful-fs@4.1.9': dependencies: '@types/node': 20.14.8 + optional: true '@types/hast@2.3.10': dependencies: @@ -7913,26 +7758,18 @@ snapshots: '@types/is-empty@1.2.3': {} - '@types/istanbul-lib-coverage@2.0.6': {} + '@types/istanbul-lib-coverage@2.0.6': + optional: true '@types/istanbul-lib-report@3.0.3': dependencies: '@types/istanbul-lib-coverage': 2.0.6 + optional: true '@types/istanbul-reports@3.0.4': dependencies: '@types/istanbul-lib-report': 3.0.3 - - '@types/jest@29.5.12': - dependencies: - expect: 29.7.0 - pretty-format: 29.7.0 - - '@types/jsdom@20.0.1': - dependencies: - '@types/node': 20.14.8 - '@types/tough-cookie': 4.0.5 - parse5: 7.1.2 + optional: true '@types/json-schema@7.0.15': {} @@ -7980,7 +7817,8 @@ snapshots: '@types/semver@7.5.8': {} - '@types/stack-utils@2.0.3': {} + '@types/stack-utils@2.0.3': + optional: true '@types/supports-color@8.1.3': {} @@ -7988,17 +7826,17 @@ snapshots: dependencies: '@types/node': 20.14.8 - '@types/tough-cookie@4.0.5': {} - '@types/unist@2.0.10': {} '@types/unist@3.0.2': {} - '@types/yargs-parser@21.0.3': {} + '@types/yargs-parser@21.0.3': + optional: true '@types/yargs@17.0.32': dependencies: '@types/yargs-parser': 21.0.3 + optional: true '@typescript-eslint/eslint-plugin@7.13.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.5.2))(eslint@9.5.0)(typescript@5.5.2)': dependencies: @@ -8284,8 +8122,6 @@ snapshots: '@zxing/text-encoding@0.9.0': optional: true - abab@2.0.6: {} - abbrev@2.0.0: {} abort-controller@3.0.0: @@ -8297,11 +8133,6 @@ snapshots: mime-types: 2.1.35 negotiator: 0.6.3 - acorn-globals@7.0.1: - dependencies: - acorn: 8.12.0 - acorn-walk: 8.3.3 - acorn-jsx@5.3.2(acorn@8.12.0): dependencies: acorn: 8.12.0 @@ -8312,12 +8143,6 @@ snapshots: acorn@8.12.0: {} - agent-base@6.0.2: - dependencies: - debug: 4.3.5 - transitivePeerDependencies: - - supports-color - agent-base@7.1.1: dependencies: debug: 4.3.5 @@ -8508,6 +8333,7 @@ snapshots: slash: 3.0.0 transitivePeerDependencies: - supports-color + optional: true babel-plugin-istanbul@6.1.1: dependencies: @@ -8518,6 +8344,7 @@ snapshots: test-exclude: 6.0.0 transitivePeerDependencies: - supports-color + optional: true babel-plugin-jest-hoist@29.6.3: dependencies: @@ -8525,6 +8352,7 @@ snapshots: '@babel/types': 7.24.7 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.6 + optional: true babel-preset-current-node-syntax@1.0.1(@babel/core@7.24.7): dependencies: @@ -8541,12 +8369,14 @@ snapshots: '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.7) '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.7) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.7) + optional: true babel-preset-jest@29.6.3(@babel/core@7.24.7): dependencies: '@babel/core': 7.24.7 babel-plugin-jest-hoist: 29.6.3 babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.7) + optional: true bail@2.0.2: {} @@ -8615,13 +8445,10 @@ snapshots: node-releases: 2.0.14 update-browserslist-db: 1.0.16(browserslist@4.23.1) - bs-logger@0.2.6: - dependencies: - fast-json-stable-stringify: 2.1.0 - bser@2.1.1: dependencies: node-int64: 0.4.0 + optional: true buffer-from@1.1.2: {} @@ -8685,7 +8512,8 @@ snapshots: camelcase@5.3.1: {} - camelcase@6.3.0: {} + camelcase@6.3.0: + optional: true camelcase@8.0.0: {} @@ -8737,7 +8565,8 @@ snapshots: snake-case: 3.0.4 tslib: 2.6.3 - char-regex@1.0.2: {} + char-regex@1.0.2: + optional: true character-entities-html4@2.1.0: {} @@ -8779,7 +8608,8 @@ snapshots: ci-info@4.0.0: {} - cjs-module-lexer@1.3.1: {} + cjs-module-lexer@1.3.1: + optional: true clean-regexp@1.0.0: dependencies: @@ -8821,9 +8651,11 @@ snapshots: clsx@2.1.1: {} - co@4.6.0: {} + co@4.6.0: + optional: true - collect-v8-coverage@1.0.2: {} + collect-v8-coverage@1.0.2: + optional: true color-convert@1.9.3: dependencies: @@ -8914,6 +8746,7 @@ snapshots: - babel-plugin-macros - supports-color - ts-node + optional: true cross-spawn@5.1.0: dependencies: @@ -8931,14 +8764,6 @@ snapshots: cssesc@3.0.0: {} - cssom@0.3.8: {} - - cssom@0.5.0: {} - - cssstyle@2.3.0: - dependencies: - cssom: 0.3.8 - cssstyle@4.0.1: dependencies: rrweb-cssom: 0.6.0 @@ -8962,12 +8787,6 @@ snapshots: data-uri-to-buffer@3.0.1: {} - data-urls@3.0.2: - dependencies: - abab: 2.0.6 - whatwg-mimetype: 3.0.0 - whatwg-url: 11.0.0 - data-urls@5.0.0: dependencies: whatwg-mimetype: 4.0.0 @@ -9090,7 +8909,8 @@ snapshots: detect-indent@7.0.1: {} - detect-newline@3.1.0: {} + detect-newline@3.1.0: + optional: true detect-newline@4.0.1: {} @@ -9112,10 +8932,6 @@ snapshots: dom-accessibility-api@0.5.16: {} - domexception@4.0.0: - dependencies: - webidl-conversions: 7.0.0 - dot-case@3.0.4: dependencies: no-case: 3.0.4 @@ -9138,7 +8954,8 @@ snapshots: electron-to-chromium@1.4.810: {} - emittery@0.13.1: {} + emittery@0.13.1: + optional: true emoji-regex@10.3.0: {} @@ -9354,20 +9171,13 @@ snapshots: escape-string-regexp@1.0.5: {} - escape-string-regexp@2.0.0: {} + escape-string-regexp@2.0.0: + optional: true escape-string-regexp@4.0.0: {} escape-string-regexp@5.0.0: {} - escodegen@2.1.0: - dependencies: - esprima: 4.0.1 - estraverse: 5.3.0 - esutils: 2.0.3 - optionalDependencies: - source-map: 0.6.1 - eslint-config-prettier@9.1.0(eslint@9.5.0): dependencies: eslint: 9.5.0 @@ -9777,7 +9587,8 @@ snapshots: exit-hook@2.2.1: {} - exit@0.1.2: {} + exit@0.1.2: + optional: true expand-tilde@2.0.2: dependencies: @@ -9790,6 +9601,7 @@ snapshots: jest-matcher-utils: 29.7.0 jest-message-util: 29.7.0 jest-util: 29.7.0 + optional: true express@4.19.2: dependencies: @@ -9862,6 +9674,7 @@ snapshots: fb-watchman@2.0.2: dependencies: bser: 2.1.1 + optional: true file-entry-cache@8.0.0: dependencies: @@ -10015,7 +9828,8 @@ snapshots: has-symbols: 1.0.3 hasown: 2.0.2 - get-package-type@0.1.0: {} + get-package-type@0.1.0: + optional: true get-port@5.1.1: {} @@ -10206,10 +10020,6 @@ snapshots: dependencies: lru-cache: 7.18.3 - html-encoding-sniffer@3.0.0: - dependencies: - whatwg-encoding: 2.0.0 - html-encoding-sniffer@4.0.0: dependencies: whatwg-encoding: 3.1.1 @@ -10224,14 +10034,6 @@ snapshots: statuses: 2.0.1 toidentifier: 1.0.1 - http-proxy-agent@5.0.0: - dependencies: - '@tootallnate/once': 2.0.0 - agent-base: 6.0.2 - debug: 4.3.5 - transitivePeerDependencies: - - supports-color - http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.1 @@ -10239,13 +10041,6 @@ snapshots: transitivePeerDependencies: - supports-color - https-proxy-agent@5.0.1: - dependencies: - agent-base: 6.0.2 - debug: 4.3.5 - transitivePeerDependencies: - - supports-color - https-proxy-agent@7.0.4: dependencies: agent-base: 7.1.1 @@ -10286,6 +10081,7 @@ snapshots: dependencies: pkg-dir: 4.2.0 resolve-cwd: 3.0.0 + optional: true import-meta-resolve@4.1.0: {} @@ -10420,7 +10216,8 @@ snapshots: is-fullwidth-code-point@3.0.0: {} - is-generator-fn@2.1.0: {} + is-generator-fn@2.1.0: + optional: true is-generator-function@1.0.10: dependencies: @@ -10551,6 +10348,7 @@ snapshots: semver: 6.3.1 transitivePeerDependencies: - supports-color + optional: true istanbul-lib-instrument@6.0.2: dependencies: @@ -10561,6 +10359,7 @@ snapshots: semver: 7.6.2 transitivePeerDependencies: - supports-color + optional: true istanbul-lib-report@3.0.1: dependencies: @@ -10575,6 +10374,7 @@ snapshots: source-map: 0.6.1 transitivePeerDependencies: - supports-color + optional: true istanbul-lib-source-maps@5.0.4: dependencies: @@ -10616,6 +10416,7 @@ snapshots: execa: 5.1.1 jest-util: 29.7.0 p-limit: 3.1.0 + optional: true jest-circus@29.7.0: dependencies: @@ -10642,6 +10443,7 @@ snapshots: transitivePeerDependencies: - babel-plugin-macros - supports-color + optional: true jest-cli@29.7.0(@types/node@20.14.8): dependencies: @@ -10661,6 +10463,7 @@ snapshots: - babel-plugin-macros - supports-color - ts-node + optional: true jest-config@29.7.0(@types/node@20.14.8): dependencies: @@ -10691,6 +10494,7 @@ snapshots: transitivePeerDependencies: - babel-plugin-macros - supports-color + optional: true jest-diff@29.7.0: dependencies: @@ -10698,10 +10502,12 @@ snapshots: diff-sequences: 29.6.3 jest-get-type: 29.6.3 pretty-format: 29.7.0 + optional: true jest-docblock@29.7.0: dependencies: detect-newline: 3.1.0 + optional: true jest-each@29.7.0: dependencies: @@ -10710,21 +10516,7 @@ snapshots: jest-get-type: 29.6.3 jest-util: 29.7.0 pretty-format: 29.7.0 - - jest-environment-jsdom@29.7.0: - dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/jsdom': 20.0.1 - '@types/node': 20.14.8 - jest-mock: 29.7.0 - jest-util: 29.7.0 - jsdom: 20.0.3 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate + optional: true jest-environment-node@29.7.0: dependencies: @@ -10734,8 +10526,10 @@ snapshots: '@types/node': 20.14.8 jest-mock: 29.7.0 jest-util: 29.7.0 + optional: true - jest-get-type@29.6.3: {} + jest-get-type@29.6.3: + optional: true jest-haste-map@29.7.0: dependencies: @@ -10752,11 +10546,13 @@ snapshots: walker: 1.0.8 optionalDependencies: fsevents: 2.3.3 + optional: true jest-leak-detector@29.7.0: dependencies: jest-get-type: 29.6.3 pretty-format: 29.7.0 + optional: true jest-matcher-utils@29.7.0: dependencies: @@ -10764,6 +10560,7 @@ snapshots: jest-diff: 29.7.0 jest-get-type: 29.6.3 pretty-format: 29.7.0 + optional: true jest-message-util@29.7.0: dependencies: @@ -10776,18 +10573,22 @@ snapshots: pretty-format: 29.7.0 slash: 3.0.0 stack-utils: 2.0.6 + optional: true jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 '@types/node': 20.14.8 jest-util: 29.7.0 + optional: true jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): optionalDependencies: jest-resolve: 29.7.0 + optional: true - jest-regex-util@29.6.3: {} + jest-regex-util@29.6.3: + optional: true jest-resolve-dependencies@29.7.0: dependencies: @@ -10795,6 +10596,7 @@ snapshots: jest-snapshot: 29.7.0 transitivePeerDependencies: - supports-color + optional: true jest-resolve@29.7.0: dependencies: @@ -10807,6 +10609,7 @@ snapshots: resolve: 1.22.8 resolve.exports: 2.0.2 slash: 3.0.0 + optional: true jest-runner@29.7.0: dependencies: @@ -10833,6 +10636,7 @@ snapshots: source-map-support: 0.5.13 transitivePeerDependencies: - supports-color + optional: true jest-runtime@29.7.0: dependencies: @@ -10860,6 +10664,7 @@ snapshots: strip-bom: 4.0.0 transitivePeerDependencies: - supports-color + optional: true jest-snapshot@29.7.0: dependencies: @@ -10885,6 +10690,7 @@ snapshots: semver: 7.6.2 transitivePeerDependencies: - supports-color + optional: true jest-util@29.7.0: dependencies: @@ -10894,6 +10700,7 @@ snapshots: ci-info: 3.9.0 graceful-fs: 4.2.11 picomatch: 2.3.1 + optional: true jest-validate@29.7.0: dependencies: @@ -10903,6 +10710,7 @@ snapshots: jest-get-type: 29.6.3 leven: 3.1.0 pretty-format: 29.7.0 + optional: true jest-watcher@29.7.0: dependencies: @@ -10914,6 +10722,7 @@ snapshots: emittery: 0.13.1 jest-util: 29.7.0 string-length: 4.0.2 + optional: true jest-worker@29.7.0: dependencies: @@ -10921,6 +10730,7 @@ snapshots: jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 + optional: true jest@29.7.0(@types/node@20.14.8): dependencies: @@ -10933,6 +10743,7 @@ snapshots: - babel-plugin-macros - supports-color - ts-node + optional: true jju@1.4.0: {} @@ -10951,39 +10762,6 @@ snapshots: dependencies: argparse: 2.0.1 - jsdom@20.0.3: - dependencies: - abab: 2.0.6 - acorn: 8.12.0 - acorn-globals: 7.0.1 - cssom: 0.5.0 - cssstyle: 2.3.0 - data-urls: 3.0.2 - decimal.js: 10.4.3 - domexception: 4.0.0 - escodegen: 2.1.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.10 - parse5: 7.1.2 - saxes: 6.0.0 - symbol-tree: 3.2.4 - tough-cookie: 4.1.4 - 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.17.1 - xml-name-validator: 4.0.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - jsdom@24.1.0: dependencies: cssstyle: 4.0.1 @@ -11057,7 +10835,8 @@ snapshots: kind-of@6.0.3: {} - kleur@3.0.3: {} + kleur@3.0.3: + optional: true kleur@4.1.5: {} @@ -11067,7 +10846,8 @@ snapshots: dependencies: language-subtag-registry: 0.3.23 - leven@3.1.0: {} + leven@3.1.0: + optional: true levn@0.4.1: dependencies: @@ -11130,8 +10910,6 @@ snapshots: lodash.get@4.4.2: {} - lodash.memoize@4.1.2: {} - lodash.merge@4.6.2: {} lodash.sortby@4.7.0: {} @@ -11195,8 +10973,6 @@ snapshots: dependencies: semver: 7.6.2 - make-error@1.3.6: {} - make-iterator@1.0.1: dependencies: kind-of: 6.0.3 @@ -11204,6 +10980,7 @@ snapshots: makeerror@1.0.12: dependencies: tmpl: 1.0.5 + optional: true map-cache@0.2.2: {} @@ -12044,7 +11821,8 @@ snapshots: lower-case: 2.0.2 tslib: 2.6.3 - node-int64@0.4.0: {} + node-int64@0.4.0: + optional: true node-plop@0.32.0: dependencies: @@ -12550,6 +12328,7 @@ snapshots: dependencies: kleur: 3.0.3 sisteransi: 1.0.5 + optional: true prop-types@15.8.1: dependencies: @@ -12588,7 +12367,8 @@ snapshots: punycode@2.3.1: {} - pure-rand@6.1.0: {} + pure-rand@6.1.0: + optional: true qs@6.11.0: dependencies: @@ -12833,6 +12613,7 @@ snapshots: resolve-cwd@3.0.0: dependencies: resolve-from: 5.0.0 + optional: true resolve-dir@1.0.1: dependencies: @@ -13047,7 +12828,8 @@ snapshots: signal-exit@4.1.0: {} - sisteransi@1.0.5: {} + sisteransi@1.0.5: + optional: true slash@3.0.0: {} @@ -13086,6 +12868,7 @@ snapshots: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 + optional: true source-map-support@0.5.21: dependencies: @@ -13130,6 +12913,7 @@ snapshots: stack-utils@2.0.6: dependencies: escape-string-regexp: 2.0.0 + optional: true stackback@0.0.2: {} @@ -13159,6 +12943,7 @@ snapshots: dependencies: char-regex: 1.0.2 strip-ansi: 6.0.1 + optional: true string-width@4.2.3: dependencies: @@ -13246,7 +13031,8 @@ snapshots: strip-bom@3.0.0: {} - strip-bom@4.0.0: {} + strip-bom@4.0.0: + optional: true strip-final-newline@2.0.0: {} @@ -13294,6 +13080,7 @@ snapshots: supports-color@8.1.1: dependencies: has-flag: 4.0.0 + optional: true supports-color@9.4.0: {} @@ -13369,7 +13156,8 @@ snapshots: dependencies: os-tmpdir: 1.0.2 - tmpl@1.0.5: {} + tmpl@1.0.5: + optional: true to-fast-properties@2.0.0: {} @@ -13392,10 +13180,6 @@ snapshots: dependencies: punycode: 2.3.1 - tr46@3.0.0: - dependencies: - punycode: 2.3.1 - tr46@5.0.0: dependencies: punycode: 2.3.1 @@ -13416,24 +13200,6 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-jest@29.1.5(@babel/core@7.24.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(jest@29.7.0(@types/node@20.14.8))(typescript@5.5.2): - dependencies: - bs-logger: 0.2.6 - fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.14.8) - jest-util: 29.7.0 - json5: 2.2.3 - lodash.memoize: 4.1.2 - make-error: 1.3.6 - semver: 7.6.2 - typescript: 5.5.2 - yargs-parser: 21.1.1 - optionalDependencies: - '@babel/core': 7.24.7 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.24.7) - tsconfck@3.1.0(typescript@5.5.2): optionalDependencies: typescript: 5.5.2 @@ -13818,6 +13584,7 @@ snapshots: '@jridgewell/trace-mapping': 0.3.25 '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 + optional: true v8flags@4.0.1: {} @@ -13946,10 +13713,6 @@ snapshots: - supports-color - terser - w3c-xmlserializer@4.0.0: - dependencies: - xml-name-validator: 4.0.0 - w3c-xmlserializer@5.0.0: dependencies: xml-name-validator: 5.0.0 @@ -13959,6 +13722,7 @@ snapshots: walker@1.0.8: dependencies: makeerror: 1.0.12 + optional: true wcwidth@1.0.1: dependencies: @@ -13976,23 +13740,12 @@ snapshots: webidl-conversions@7.0.0: {} - whatwg-encoding@2.0.0: - dependencies: - iconv-lite: 0.6.3 - whatwg-encoding@3.1.1: dependencies: iconv-lite: 0.6.3 - whatwg-mimetype@3.0.0: {} - whatwg-mimetype@4.0.0: {} - whatwg-url@11.0.0: - dependencies: - tr46: 3.0.0 - webidl-conversions: 7.0.0 - whatwg-url@14.0.0: dependencies: tr46: 5.0.0 @@ -14094,13 +13847,12 @@ snapshots: dependencies: imurmurhash: 0.1.4 signal-exit: 3.0.7 + optional: true ws@7.5.10: {} ws@8.17.1: {} - xml-name-validator@4.0.0: {} - xml-name-validator@5.0.0: {} xmlchars@2.2.0: {}