From f1971780063bf010082d03125813c8e39c199540 Mon Sep 17 00:00:00 2001 From: Axel Bocciarelli Date: Thu, 5 Dec 2024 16:37:06 +0100 Subject: [PATCH] Temp --- .gitignore | 1 + eslint.shared.cjs | 28 +- packages/app/.eslintrc.cjs | 5 +- packages/shared/.eslintignore | 2 - packages/shared/.eslintrc.cjs | 5 - packages/shared/eslint.config.js | 521 +++++++++ packages/shared/package.json | 14 +- packages/shared/rollup.utils.js | 6 +- packages/shared/src/createMemo.ts | 6 +- packages/shared/src/guards.ts | 65 +- packages/shared/src/hdf5-models.ts | 18 +- packages/shared/src/hdf5-utils.ts | 38 +- packages/shared/src/mock-models.ts | 9 +- packages/shared/src/mock-utils.ts | 43 +- packages/shared/src/mock-values.ts | 7 +- packages/shared/src/nexus-models.ts | 2 +- packages/shared/src/react-suspense-fetch.ts | 11 +- packages/shared/src/vis-models.ts | 4 +- packages/shared/src/vis-utils.ts | 49 +- packages/shared/tsconfig.json | 2 +- pnpm-lock.yaml | 1073 +++++++++++++++++-- tsconfig.json | 2 - 22 files changed, 1697 insertions(+), 214 deletions(-) delete mode 100644 packages/shared/.eslintignore delete mode 100644 packages/shared/.eslintrc.cjs create mode 100644 packages/shared/eslint.config.js diff --git a/.gitignore b/.gitignore index 770b17198..eea0bf324 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ dist*/ Thumbs.db *.log *.tsbuildinfo +.eslintcache diff --git a/eslint.shared.cjs b/eslint.shared.cjs index e1b85bcff..a4776f6c6 100644 --- a/eslint.shared.cjs +++ b/eslint.shared.cjs @@ -15,41 +15,41 @@ module.exports = { cwd, enableJavaScriptSpecificRulesInTypeScriptProject: true, // to lint `.eslintrc.js` files and the like rules: { - 'sort-keys-fix/sort-keys-fix': 'off', // keys should be sorted based on significance - 'simple-import-sort/exports': 'off', // can make package entry files with numerous exports difficult to read - 'import/no-default-export': 'off', // default exports are common in React - 'import/dynamic-import-chunkname': 'off', // Vite generates human-readable chunk names + // 'sort-keys-fix/sort-keys-fix': 'off', // keys should be sorted based on significance + // 'simple-import-sort/exports': 'off', // can make package entry files with numerous exports difficult to read + // 'import/no-default-export': 'off', // default exports are common in React + // 'import/dynamic-import-chunkname': 'off', // Vite generates human-readable chunk names // Ternaries are sometimes more readable when `true` branch is most significant branch - 'no-negated-condition': 'off', - 'unicorn/no-negated-condition': 'off', + // 'no-negated-condition': 'off', + // 'unicorn/no-negated-condition': 'off', // Prefer explicit, consistent return - e.g. `return undefined;` - 'unicorn/no-useless-undefined': 'off', - 'consistent-return': 'error', + // 'unicorn/no-useless-undefined': 'off', + // 'consistent-return': 'error', // Properties available after typeguard may be tedious to destructure (e.g. in JSX) - 'unicorn/consistent-destructuring': 'off', + // =====> 'unicorn/consistent-destructuring': 'off', // Not really more readable and makes Jest crash - 'unicorn/prefer-prototype-methods': 'off', + // =====> 'unicorn/prefer-prototype-methods': 'off', /* Forcing use of `else` for consistency with mandatory `default` clause in `switch` statements is unreasonable. * `if`/`else if` serves a different purpose than `switch`. */ - 'sonarjs/elseif-without-else': 'off', + // 'sonarjs/elseif-without-else': 'off', // DOM dataset API is confusing since we deal with HDF5 datasets 'unicorn/prefer-dom-node-dataset': 'off', // The point of `switch` is to be less verbose than if/else if/else - 'unicorn/switch-case-braces': ['warn', 'avoid'], + // 'unicorn/switch-case-braces': ['warn', 'avoid'], // `import { type Foo }` requires TS 5.0's `verbatimModuleSyntax`, which causes issues with Jest // Sticking with `importsNotUsedAsValues` and `import type { Foo }` for now... - 'import/consistent-type-specifier-style': ['error', 'prefer-top-level'], + // 'import/consistent-type-specifier-style': ['error', 'prefer-top-level'], // Galex currently disables checking for duplicate imports in a TS environment, even though TS doesn't warn about this - 'import/no-duplicates': 'error', + // 'import/no-duplicates': 'error', }, overrides: [ createReactOverride({ diff --git a/packages/app/.eslintrc.cjs b/packages/app/.eslintrc.cjs index 9f7137dda..565e626ba 100644 --- a/packages/app/.eslintrc.cjs +++ b/packages/app/.eslintrc.cjs @@ -2,4 +2,7 @@ const { getDependencies } = require('eslint-config-galex/dist/getDependencies'); const { createConfig } = require('../../eslint.shared.cjs'); -module.exports = createConfig(__dirname, getDependencies()); +const config = createConfig(__dirname, getDependencies()); +console.log(config); + +module.exports = config; diff --git a/packages/shared/.eslintignore b/packages/shared/.eslintignore deleted file mode 100644 index fd3cf4d39..000000000 --- a/packages/shared/.eslintignore +++ /dev/null @@ -1,2 +0,0 @@ -/dist*/ -/node_modules/ diff --git a/packages/shared/.eslintrc.cjs b/packages/shared/.eslintrc.cjs deleted file mode 100644 index 9f7137dda..000000000 --- a/packages/shared/.eslintrc.cjs +++ /dev/null @@ -1,5 +0,0 @@ -const { getDependencies } = require('eslint-config-galex/dist/getDependencies'); - -const { createConfig } = require('../../eslint.shared.cjs'); - -module.exports = createConfig(__dirname, getDependencies()); diff --git a/packages/shared/eslint.config.js b/packages/shared/eslint.config.js new file mode 100644 index 000000000..e3b0c184b --- /dev/null +++ b/packages/shared/eslint.config.js @@ -0,0 +1,521 @@ +import js from '@eslint/js'; +import restrictedGlobals from 'confusing-browser-globals'; +import importPlugin from 'eslint-plugin-import'; +import promisePlugin from 'eslint-plugin-promise'; +import regexpPlugin from 'eslint-plugin-regexp'; +import simpleImportSortPlugin from 'eslint-plugin-simple-import-sort'; +import unicornPlugin from 'eslint-plugin-unicorn'; +import globals from 'globals'; +import tseslint from 'typescript-eslint'; + +const config = tseslint.config([ + { + name: 'h5web/shared/ignores', + ignores: ['/dist-ts/'], + }, + { + /** + * Configure type-aware linting + * + * To disable on a subset of files, see: + * https://typescript-eslint.io/getting-started/typed-linting#how-can-i-disable-type-aware-linting-for-a-subset-of-files + */ + name: 'h5web/shared/languages-ts', + languageOptions: { + parserOptions: { + projectService: true, + tsconfigRootDir: import.meta.dirname, + }, + }, + }, + { + /** + * ESLint core rules: https://eslint.org/docs/latest/rules/ + * Approach: + * 1. Globally enable all rules as errors for future-proofing. + * 2. Then, downgrade/configure/disable specific rules as needed. + */ + name: 'h5web/shared/rules/core', + rules: { + // Enable all rules as errors + ...js.configs.all.rules, + + // Downgrade, configure or disable specific rules + 'array-callback-return': [ + 'error', + { checkForEach: true }, // enforce no return in `forEach` + ], + 'arrow-body-style': 'off', // use of curly braces in arrow functions should first be dictated by readabillity + 'block-scoped-var': 'off', // useless with `no-var` + camelcase: 'warn', + 'capitalized-comments': 'off', // too nitpicky + 'class-methods-use-this': 'off', // too nitpicky + complexity: 'warn', + 'consistent-this': 'off', // too nitpicky + curly: [ + 'warn', + 'all', // curly braces are good for readability and help avoid silly bugs + ], + 'default-case': 'warn', + 'default-param-last': 'off', // replaced with `@typescript-eslint/default-param-last` + 'dot-notation': 'warn', + eqeqeq: 'warn', + 'func-name-matching': 'warn', + 'func-names': [ + 'warn', + 'as-needed', // unnecessary function names add clutter + ], + 'func-style': [ + 'warn', + 'declaration', // make functions stand out from variables + ], + 'grouped-accessor-pairs': 'warn', + 'guard-for-in': 'warn', + 'id-denylist': 'off', + 'id-length': 'off', + 'id-match': 'off', + 'init-declarations': 'off', + 'logical-assignment-operators': [ + 'warn', // i.e. `||=`, `&&=`, `??=` + 'never', // if re-assigning a variable is unavoidable, at least make the logic explicit + ], + 'max-classes-per-file': ['warn', 1], + 'max-depth': 'warn', + 'max-lines': 'off', // too arbitrary + 'max-lines-per-function': 'off', // too arbitrary; prefer limiting complexity + 'max-nested-callbacks': 'off', // `max-depth` is more generic + 'max-params': 'off', // too arbitrary + 'max-statements': 'off', // too arbitrary + 'new-cap': 'warn', + 'no-alert': 'warn', + + 'no-await-in-loop': 'warn', // promises should by parallelized (disable inline for legitimate cases) + 'no-case-declarations': 'warn', + 'no-console': 'warn', + 'no-continue': 'warn', + 'no-debugger': 'warn', + 'no-duplicate-imports': 'off', // replaced with `imports/no-duplicates` + 'no-else-return': [ + 'warn', + { allowElseIf: false }, // `else if` is unnecessary when all previous branch returns + ], + 'no-empty': 'warn', + 'no-empty-function': 'warn', // insert "noop" comment (or equivalent) in function body if intentional + 'no-empty-pattern': 'warn', + 'no-empty-static-block': 'warn', + 'no-eq-null': 'off', // useless with `eqeqeq` + 'no-extra-bind': 'warn', + 'no-extra-boolean-cast': ['warn', { enforceForInnerExpressions: true }], + 'no-extra-label': 'off', // useless with `no-labels` + 'no-implicit-coercion': [ + 'warn', + { allow: ['!!'] }, // allow only coercing to boolean with `!!` + ], + 'no-inline-comments': 'off', // inline comments are very handy... + 'no-inner-declarations': [ + 'warn', + 'functions', + { blockScopedFunctions: 'disallow' }, // stricter stylistic choice (disable inline for legitimate cases) + ], + 'no-irregular-whitespace': 'warn', + 'no-label-var': 'off', // useless with `no-labels` + 'no-lonely-if': 'off', + 'no-loop-func': 'off', // replaced with `@typescript-eslint/no-loop-func` + 'no-magic-numbers': 'off', // impractical + 'no-multi-assign': 'warn', + 'no-negated-condition': 'off', // sometimes more readable + 'no-nested-ternary': 'off', // sometimes convenient + 'no-new': 'warn', + 'no-param-reassign': [ + 'warn', + { props: true }, // disallow mutating function parameters + ], + 'no-plusplus': 'off', // risk obsolete with Prettier configured with `semi: true` (default) + 'no-redeclare': 'off', // useless with `no-var` + 'no-restricted-exports': 'off', + 'no-restricted-globals': [ + 'error', // access globals explicitly via `window`, `self`, etc. + ...restrictedGlobals, // https://github.com/facebook/create-react-app/blob/main/packages/confusing-browser-globals/index.js + ], + 'no-restricted-imports': 'off', + 'no-restricted-properties': 'off', + 'no-restricted-syntax': 'off', + 'no-shadow': 'off', // replaced with `@typescript-eslint/no-shadow` + 'no-template-curly-in-string': 'warn', + 'no-ternary': 'off', // hmm, no thank you + 'no-undef-init': 'warn', + 'no-undefined': 'off', // already enforced by `no-shadow-restricted-names` + 'no-underscore-dangle': 'off', // not worth arguing about + 'no-unexpected-multiline': 'warn', + 'no-unneeded-ternary': 'warn', + 'no-unreachable-loop': 'warn', + 'no-unsafe-optional-chaining': [ + 'error', + { disallowArithmeticOperators: true }, // prevent implicit type coercion of `undefined` + ], + 'no-unused-expressions': 'warn', + 'no-unused-labels': 'off', // useless with `no-labels` + 'no-unused-private-class-members': 'warn', + 'no-unused-vars': [ + 'warn', + { + args: 'all', // report all unused arguments + ignoreRestSiblings: true, // allow using destructuring to remove properties from objects + }, + ], + 'no-use-before-define': 'off', + 'no-useless-assignment': 'warn', + 'no-useless-catch': 'warn', + 'no-useless-computed-key': 'warn', + 'no-useless-concat': 'warn', + 'no-useless-constructor': 'warn', + 'no-useless-escape': 'warn', + 'no-useless-rename': 'warn', + 'no-useless-return': 'warn', + 'no-void': [ + 'warn', + { allowAsStatement: true }, // useful to identify promises that don't need to be chained/awaited + ], + 'no-warning-comments': 'off', + 'object-shorthand': 'warn', // `{ a }` rather than `{ a: a }` + 'one-var': ['warn', 'never'], // disallow combining variable declarations - e.g. `const a = 1, b = 2;` + 'operator-assignment': ['warn', 'always'], // `x += y` rather than `x = x + y` + 'prefer-arrow-callback': 'warn', + 'prefer-const': 'warn', + 'prefer-destructuring': 'off', // replaced with `@typescript-eslint/prefer-destructuring` + 'prefer-exponentiation-operator': 'warn', + 'prefer-named-capture-group': 'off', // lacks browser support + 'prefer-numeric-literals': 'warn', + 'prefer-object-has-own': 'warn', + 'prefer-object-spread': 'warn', + 'prefer-template': 'warn', + 'require-atomic-updates': 'warn', + 'require-unicode-regexp': 'off', // replaced with `regexp/require-unicode-regexp` + 'sort-imports': 'off', // prefer `simple-import-sort/imports` + 'sort-keys': 'off', + 'sort-vars': 'off', + 'symbol-description': 'warn', + 'unicode-bom': 'off', // handled by Prettier + 'use-isnan': 'off', // replaced with `unicorn/prefer-number-properties` + 'vars-on-top': 'off', // useless with `no-var` + yoda: 'warn', + }, + }, + { + /** + * Promise plugin: https://github.com/eslint-community/eslint-plugin-promise + * Approach: + * - Configure every available rule explictly. + * - Promote use of `async/await` but enforce promise chaining rules as + * fallback in case of local opt-out. + */ + name: 'h5web/shared/rules/promise', + plugins: { promise: promisePlugin }, + rules: { + 'promise/always-return': 'error', + 'promise/avoid-new': 'off', // allow `new Promise()` syntax + 'promise/catch-or-return': 'error', + 'promise/no-callback-in-promise': 'warn', + 'promise/no-multiple-resolved': 'warn', + 'promise/no-native': 'off', // obsolete + 'promise/no-nesting': 'warn', + 'promise/no-new-statics': 'error', + 'promise/no-promise-in-callback': 'warn', + 'promise/no-return-in-finally': 'warn', + 'promise/no-return-wrap': 'error', + 'promise/param-names': 'warn', + 'promise/prefer-await-to-callbacks': 'warn', + 'promise/prefer-await-to-then': [ + 'error', // `async/await` is a must! + { strict: true }, // disallow `await promise.then()` + ], + 'promise/prefer-catch': 'warn', + 'promise/spec-only': 'error', + 'promise/valid-params': 'off', // TypeScript + }, + }, + { + /** + * Regexp plugin: https://ota-meshi.github.io/eslint-plugin-regexp/rules/ + * Approach: use recommended configuration, and then tweak + */ + name: 'h5web/shared/rules/regexp', + plugins: { regexp: regexpPlugin }, + rules: { + ...regexpPlugin.configs['flat/recommended'].rules, + + 'regexp/grapheme-string-literal': 'warn', + 'regexp/hexadecimal-escape': 'warn', + 'regexp/letter-case': 'warn', + 'regexp/no-control-character': 'error', // complements `no-control-regex` + 'regexp/no-octal': 'error', + 'regexp/no-standalone-backslash': 'error', + 'regexp/no-super-linear-move': 'error', // protects from regex DoS + 'regexp/prefer-escape-replacement-dollar-char': 'warn', + 'regexp/prefer-quantifier': 'warn', + 'regexp/require-unicode-regexp': 'warn', + 'regexp/sort-alternatives': 'warn', + 'regexp/sort-character-class-elements': 'warn', + 'regexp/sort-flags': 'warn', // downgrade + }, + }, + { + /** + * Import plugin: https://github.com/import-js/eslint-plugin-import + * Approach: + * - Configure each rule explictly, in a project/bundler-agnostic way + * - Assume ESM (`"type": "module"` in `package.json`); deal with CJS + * files in dedicated config object + * - Assume TypeScript: https://typescript-eslint.io/troubleshooting/typed-linting/performance/#eslint-plugin-import + * + */ + name: 'h5web/shared/rules/import', + plugins: { import: importPlugin }, + rules: { + 'import/consistent-type-specifier-style': [ + 'warn', + 'prefer-inline', // `import { type Foo } from 'foo';` + ], + 'import/default': 'off', // TypeScript + 'import/dynamic-import-chunkname': 'off', // bundler-specific + 'import/export': 'off', // TypeScript + 'import/exports-last': 'off', // can move related pieces of code far apart from one another + 'import/extensions': 'off', // too costly; depends on `moduleResolution` in `tsconfig.json` + 'import/first': 'warn', // move all imports to the top + 'import/group-exports': 'off', // can move related pieces of code far apart from one another + 'import/max-dependencies': 'off', // arbitrary + 'import/named': 'off', // TypeScript + 'import/namespace': 'off', // TypeScript + 'import/newline-after-import': 'warn', + 'import/no-absolute-path': 'off', // depends on `paths` in `tsconfig.json` + 'import/no-amd': 'error', + 'import/no-anonymous-default-export': 'warn', // good for IntelliSense, `console.log` debugging, etc. + 'import/no-commonjs': 'error', // only allowed in CJS files + 'import/no-cycle': [ + 'warn', + { + ignoreExternal: true, + maxDepth: 5, // performance vs benefit tradeoff + }, + ], + 'import/no-default-export': 'off', // common practice in React projects + 'import/no-deprecated': 'warn', + 'import/no-duplicates': [ + 'warn', + { + considerQueryString: true, // e.g. `?worker` + 'prefer-inline': true, // for compatibility with TypeScript inline `type` imports + }, + ], + 'import/no-dynamic-require': 'off', // CommonJS + 'import/no-empty-named-blocks': 'off', + 'import/no-extraneous-dependencies': 'off', + 'import/no-import-module-exports': 'off', // CommonJS + 'import/no-internal-modules': 'off', // project-specific; enable as needed to forbid specific submodule imports + 'import/no-mutable-exports': 'error', + 'import/no-named-as-default': 'error', // likely a mistake + 'import/no-named-default': 'warn', + 'import/no-named-as-default-member': 'off', // TypeScript + 'import/no-named-export': 'off', + 'import/no-namespace': 'warn', // namespaces make it difficult to find unused code, rename exports, etc. + 'import/no-nodejs-modules': 'off', // project-specific + 'import/no-relative-packages': 'off', // project-specific + 'import/no-relative-parent-imports': 'off', // project-specific + 'import/no-restricted-paths': 'off', // project-specific + 'import/no-self-import': 'error', + 'import/no-unassigned-import': 'off', // project-specific + 'import/no-unresolved': 'off', // TypeScript + 'import/no-unused-modules': 'warn', + 'import/no-useless-path-segments': 'warn', + 'import/no-webpack-loader-syntax': 'off', // bundler-specific + 'import/order': 'off', // prefer `simple-import-sort/imports` + 'import/prefer-default-export': 'off', // project-specific + 'import/unambiguous': 'off', + }, + }, + { + /** + * Import plugin on CJS files: https://github.com/import-js/eslint-plugin-import + * Approach: expect CommonJS module system in `.cjs` files + */ + name: 'h5web/shared/rules-cjs/import', + files: ['**/*.cjs'], + plugins: { import: importPlugin }, + rules: { + 'import/no-commonjs': 'off', + 'import/no-cycle': 'off', // not supported + 'import/no-dynamic-require': 'error', // allow explicitly when needed + 'import/no-import-module-exports': 'error', + 'import/no-unresolved': ['error', { commonjs: true }], + 'import/no-useless-path-segments': ['warn', { commonjs: true }], + }, + }, + { + /** + * Simple Import Sort plugin: https://github.com/lydell/eslint-plugin-simple-import-sort + * Approach: + * - Sort imports (typically on save for optimal DX) but leave exports alone + * - Prefer this plugin over ESLint's `sort-imports` to avoid debating exact + * sorting order (i.e. Prettier philosophy) + */ + name: 'h5web/shared/rules/import-sort', + plugins: { 'simple-import-sort': simpleImportSortPlugin }, + rules: { + 'simple-import-sort/imports': 'warn', // crucial for consistency and to reduce noise in diffs + 'simple-import-sort/exports': 'off', // exports order often matters for readability/documentation + }, + }, + { + /** + * Unicorn plugin: https://github.com/sindresorhus/eslint-plugin-unicorn + * Approach: enable all rules as warnings for future-proofing, and then tweak + */ + name: 'h5web/shared/rules/unicorn', + languageOptions: { globals: globals.builtin }, + plugins: { unicorn: unicornPlugin }, + rules: { + // Enable all rules as warnings + ...Object.fromEntries( + Object.keys(unicornPlugin.configs['flat/all'].rules) + .filter((k) => k.startsWith('unicorn/')) + .map((k) => [k, 'warn']), + ), + + // Upgrade, configure or disable specific rules + 'unicorn/empty-brace-spaces': 'off', // handled by Prettier + 'unicorn/expiring-todo-comments': 'off', // project-specific + 'unicorn/filename-case': 'off', // would need more fine-grained control + 'unicorn/import-style': 'off', // project-specific + 'unicorn/no-array-for-each': 'off', // `forEach` is sometimes more concise + 'unicorn/no-array-method-this-argument': 'error', // likely a mistake + 'unicorn/no-array-reduce': 'off', // too opinionated + 'unicorn/no-await-in-promise-methods': 'error', // likely a mistake + 'unicorn/no-invalid-fetch-options': 'error', // likely a mistake + 'unicorn/no-invalid-remove-event-listener': 'error', // likely a mistake + 'unicorn/no-keyword-prefix': 'off', // keywords stand out with syntax highlighting + 'unicorn/no-magic-array-flat-depth': 'off', + 'unicorn/no-negated-condition': 'off', // sometimes more readable + 'unicorn/no-nested-ternary': 'off', // sometimes convenient; Prettier provides decent formatting + 'unicorn/no-null': 'off', // `null` declares "active absence" + 'unicorn/no-unnecessary-await': 'off', // TypeScript + 'unicorn/no-unnecessary-polyfills': 'off', // project-specific + 'unicorn/no-useless-undefined': 'off', // prefer explicitness + 'unicorn/number-literal-case': 'off', // handled by Prettier + 'unicorn/prefer-at': 'off', // poor browser support + 'unicorn/prefer-number-properties': [ + 'warn', + { checkInfinity: false }, // `Number.POSITIVE_INFINITY` is too verbose + ], + 'unicorn/prefer-query-selector': 'off', // `getElementById` is simpler + 'unicorn/prefer-string-starts-ends-with': 'off', // replaced with `@typescript-eslint/prefer-string-starts-ends-with` + 'unicorn/prefer-structured-clone': 'off', // poor browser support + 'unicorn/prefer-ternary': 'off', // there's such a thing as ternary overuse... + 'unicorn/prefer-top-level-await': 'off', // difficult to detect if supported + 'unicorn/prevent-abbreviations': 'off', // way too opinionated + 'unicorn/string-content': 'off', // project-specific + 'unicorn/switch-case-braces': ['warn', 'avoid'], // `switch` should be less verbose than if/else if/else + 'unicorn/text-encoding-identifier-case': 'off', // false positives + }, + }, + // { + // name: 'h5web/shared/rules-jsx', + // files: ['**/*.jsx', '**/*.tsx'], + // rules: { + // 'no-unused-expressions': ['warn', { enforceForJSX: true }], + // }, + // }, + { + /** + * TypeScript plugin: https://typescript-eslint.io/rules/ + * Approach: use both `strictTypeChecked` and stylisticTypeChecked` configs, and then tweak + */ + name: 'h5web/shared/rules/typescript', + extends: [ + tseslint.configs.strictTypeChecked, + tseslint.configs.stylisticTypeChecked, + ], + rules: { + '@typescript-eslint/ban-ts-comment': [ + 'error', + { + 'ts-expect-error': 'allow-with-description', // allow explicitly disabling errors + 'ts-ignore': true, + 'ts-nocheck': true, + }, + ], + '@typescript-eslint/consistent-indexed-object-style': 'warn', // downgrade + '@typescript-eslint/consistent-type-assertions': [ + 'error', + { + assertionStyle: 'as', + objectLiteralTypeAssertions: 'never', // prefer `const x: T = { ... };` to `const x = { ... } as T; ` + }, + ], + '@typescript-eslint/consistent-type-exports': 'warn', + '@typescript-eslint/consistent-type-imports': [ + // Prefer this rule to TypeScript's `verbatimModuleSyntax` option + // https://typescript-eslint.io/rules/consistent-type-imports/#comparison-with-importsnotusedasvalues--verbatimmodulesyntax + 'warn', + { + disallowTypeAnnotations: true, + fixStyle: 'inline-type-imports', // `import { type Foo } from 'foo';` + prefer: 'type-imports', + }, + ], + '@typescript-eslint/default-param-last': 'error', + '@typescript-eslint/explicit-member-accessibility': 'warn', + '@typescript-eslint/explicit-module-boundary-types': 'warn', + '@typescript-eslint/member-ordering': 'warn', + '@typescript-eslint/method-signature-style': 'warn', + '@typescript-eslint/no-loop-func': 'error', + '@typescript-eslint/no-shadow': 'warn', + '@typescript-eslint/no-unnecessary-boolean-literal-compare': [ + 'warn', + { + allowComparingNullableBooleansToFalse: false, + allowComparingNullableBooleansToTrue: false, + }, + ], + '@typescript-eslint/no-unnecessary-condition': 'off', // false positives + '@typescript-eslint/no-unnecessary-parameter-property-assignment': 'warn', + '@typescript-eslint/no-unnecessary-qualifier': 'warn', + '@typescript-eslint/no-useless-empty-export': 'error', + '@typescript-eslint/parameter-properties': [ + 'warn', + { prefer: 'parameter-property' }, // e.g. `constructor(public readonly name: string) {}` + ], + '@typescript-eslint/prefer-destructuring': 'warn', + '@typescript-eslint/prefer-enum-initializers': 'error', + '@typescript-eslint/prefer-nullish-coalescing': 'off', // `??` not supported before FF 72 + '@typescript-eslint/prefer-readonly': 'error', + '@typescript-eslint/prefer-regexp-exec': 'off', // handled by `regexp/prefer-regexp-exec` + '@typescript-eslint/promise-function-async': 'error', + '@typescript-eslint/require-array-sort-compare': 'error', + '@typescript-eslint/restrict-template-expressions': [ + 'error', + { allowNumber: true }, + ], + '@typescript-eslint/switch-exhaustiveness-check': 'warn', + + // Disable rules that should only apply to TS files + }, + }, + { + /** + * TypeScript plugin on JS files: https://typescript-eslint.io/rules/ + * Approach: disable rules that may cause issues + */ + name: 'h5web/shared/rules-js/typescript', + files: ['*.js', '*.mjs', '*.cjs', '*.jsx'], + rules: { + '@typescript-eslint/explicit-member-accessibility': 'off', + '@typescript-eslint/explicit-module-boundary-types': 'off', + '@typescript-eslint/no-unsafe-argument': 'off', + '@typescript-eslint/no-unsafe-assignment': 'off', + '@typescript-eslint/no-unsafe-call': 'off', + '@typescript-eslint/no-unsafe-member-access': 'off', + }, + }, +]); + +export default config; diff --git a/packages/shared/package.json b/packages/shared/package.json index da40aab12..77ae00647 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -25,7 +25,7 @@ "scripts": { "build": "pnpm \"/^build:/\"", "build:dts": "tsc --build tsconfig.build.json", - "lint:eslint": "eslint \"**/*.{js,cjs,ts,tsx}\" --max-warnings=0", + "lint:eslint": "eslint --max-warnings=0", "lint:tsc": "tsc" }, "peerDependencies": { @@ -54,20 +54,28 @@ } }, "devDependencies": { + "@eslint/js": "9.16.0", "@types/d3-array": "~3.2.1", "@types/d3-format": "~3.0.4", "@types/ndarray": "~1.0.14", "@types/ndarray-ops": "~1.2.7", "@types/node": "^20.12.11", "@types/react": "^18.3.3", + "confusing-browser-globals": "1.0.11", "d3-array": "3.2.4", "d3-format": "3.1.0", - "eslint": "8.57.0", - "eslint-config-galex": "4.5.2", + "eslint": "9.16.0", + "eslint-plugin-import": "2.31.0", + "eslint-plugin-promise": "7.2.1", + "eslint-plugin-regexp": "2.7.0", + "eslint-plugin-simple-import-sort": "12.1.1", + "eslint-plugin-unicorn": "56.0.1", + "globals": "15.13.0", "ndarray": "1.0.19", "ndarray-ops": "1.2.2", "react": "18.3.1", "typescript": "5.4.5", + "typescript-eslint": "8.18.0", "vitest": "2.0.5", "zustand": "4.5.4" } diff --git a/packages/shared/rollup.utils.js b/packages/shared/rollup.utils.js index 0baf81630..a4d87761d 100644 --- a/packages/shared/rollup.utils.js +++ b/packages/shared/rollup.utils.js @@ -1,6 +1,6 @@ -import fs from 'fs'; -import path from 'path'; -import { fileURLToPath } from 'url'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath, URL } from 'node:url'; const dirname = fileURLToPath(new URL('.', import.meta.url)); const pkg = JSON.parse(fs.readFileSync(path.resolve(dirname, 'package.json'))); diff --git a/packages/shared/src/createMemo.ts b/packages/shared/src/createMemo.ts index c2f97b9f2..d830bee0b 100644 --- a/packages/shared/src/createMemo.ts +++ b/packages/shared/src/createMemo.ts @@ -4,8 +4,8 @@ import { useMemo } from 'react'; export function createMemo any>(fn: T): T; export function createMemo any>(fn: T) { - return (...args: any[]) => { - // eslint-disable-next-line @typescript-eslint/no-unsafe-argument,react-hooks/exhaustive-deps - return useMemo(() => fn(...args), args); + return (...args: unknown[]) => { + // eslint-disable-next-line react-hooks/exhaustive-deps + return useMemo(() => fn(...args), args); }; } diff --git a/packages/shared/src/guards.ts b/packages/shared/src/guards.ts index dfbc4c737..f2c3c88ca 100644 --- a/packages/shared/src/guards.ts +++ b/packages/shared/src/guards.ts @@ -1,34 +1,35 @@ -import type { Data, NdArray, TypedArray } from 'ndarray'; - -import type { - ArrayShape, - BooleanType, - ComplexArray, - ComplexType, - CompoundType, - Dataset, - Datatype, - DType, - Entity, - EnumType, - Group, - GroupWithChildren, - H5WebComplex, - NumericLikeType, - NumericType, - Primitive, - PrintableType, - ScalarShape, - Shape, - StringType, - Value, +import { type Data, type NdArray, type TypedArray } from 'ndarray'; + +import { + type ArrayShape, + type BooleanType, + type ComplexArray, + type ComplexType, + type CompoundType, + type Dataset, + type Datatype, + type DType, + DTypeClass, + type Entity, + EntityKind, + type EnumType, + type Group, + type GroupWithChildren, + type H5WebComplex, + type NumericLikeType, + type NumericType, + type Primitive, + type PrintableType, + type ScalarShape, + type Shape, + type StringType, + type Value, } from './hdf5-models'; -import { DTypeClass, EntityKind } from './hdf5-models'; -import type { - AnyNumArray, - AxisScaleType, - ColorScaleType, - NumArray, +import { + type AnyNumArray, + type AxisScaleType, + type ColorScaleType, + type NumArray, } from './vis-models'; import { AXIS_SCALE_TYPES, COLOR_SCALE_TYPES, getValues } from './vis-utils'; @@ -420,8 +421,8 @@ export function isComplexValue( return type.class === DTypeClass.Complex; } -function assertPrimitiveValue( - type: T, +function assertPrimitiveValue( + type: DType, value: unknown, ): asserts value is Primitive { if (isNumericType(type)) { diff --git a/packages/shared/src/hdf5-models.ts b/packages/shared/src/hdf5-models.ts index d680c5bb3..8b615954a 100644 --- a/packages/shared/src/hdf5-models.ts +++ b/packages/shared/src/hdf5-models.ts @@ -1,15 +1,15 @@ /* -------------------- */ /* ----- ENTITIES ----- */ -import type { TypedArray } from 'ndarray'; - -import type { - H5T_CSET, - H5T_ORDER, - H5T_STR, - H5T_TO_CHAR_SET, - H5T_TO_ENDIANNESS, - H5T_TO_STR_PAD, +import { type TypedArray } from 'ndarray'; + +import { + type H5T_CSET, + type H5T_ORDER, + type H5T_STR, + type H5T_TO_CHAR_SET, + type H5T_TO_ENDIANNESS, + type H5T_TO_STR_PAD, } from './h5t'; export enum EntityKind { diff --git a/packages/shared/src/hdf5-utils.ts b/packages/shared/src/hdf5-utils.ts index d1f3a82c7..1b0e34d7c 100644 --- a/packages/shared/src/hdf5-utils.ts +++ b/packages/shared/src/hdf5-utils.ts @@ -8,26 +8,26 @@ import { H5T_TO_ENDIANNESS, H5T_TO_STR_PAD, } from './h5t'; -import type { - ArrayType, - BitfieldType, - BooleanType, - ChildEntity, - ComplexType, - CompoundType, - DType, - EnumType, - GroupWithChildren, - H5WebComplex, - NumericType, - OpaqueType, - PrintableType, - ReferenceType, - StringType, - TimeType, - UnknownType, +import { + type ArrayType, + type BitfieldType, + type BooleanType, + type ChildEntity, + type ComplexType, + type CompoundType, + type DType, + DTypeClass, + type EnumType, + type GroupWithChildren, + type H5WebComplex, + type NumericType, + type OpaqueType, + type PrintableType, + type ReferenceType, + type StringType, + type TimeType, + type UnknownType, } from './hdf5-models'; -import { DTypeClass } from './hdf5-models'; export function getChildEntity( group: GroupWithChildren, diff --git a/packages/shared/src/mock-models.ts b/packages/shared/src/mock-models.ts index ebc4c4a42..fbbd8b2d2 100644 --- a/packages/shared/src/mock-models.ts +++ b/packages/shared/src/mock-models.ts @@ -1,5 +1,10 @@ -import type { Attribute, Dataset, DType, Shape } from './hdf5-models'; -import type { mockValues } from './mock-values'; +import { + type Attribute, + type Dataset, + type DType, + type Shape, +} from './hdf5-models'; +import { type mockValues } from './mock-values'; export interface MockDataset extends Dataset { diff --git a/packages/shared/src/mock-utils.ts b/packages/shared/src/mock-utils.ts index 8f3dda33e..bae6e86fc 100644 --- a/packages/shared/src/mock-utils.ts +++ b/packages/shared/src/mock-utils.ts @@ -1,20 +1,20 @@ import { hasChildren, isGroup } from './guards'; -import type { - ArrayShape, - Attribute, - ChildEntity, - Dataset, - Datatype, - DType, - Entity, - Group, - GroupWithChildren, - LinkClass, - ScalarShape, - Shape, - UnresolvedEntity, +import { + type ArrayShape, + type Attribute, + type ChildEntity, + type Dataset, + type Datatype, + type DType, + type Entity, + EntityKind, + type Group, + type GroupWithChildren, + type LinkClass, + type ScalarShape, + type Shape, + type UnresolvedEntity, } from './hdf5-models'; -import { EntityKind } from './hdf5-models'; import { boolType, buildEntityPath, @@ -24,9 +24,13 @@ import { strType, unknownType, } from './hdf5-utils'; -import type { MockAttribute, MockDataset, MockValueId } from './mock-models'; +import { + type MockAttribute, + type MockDataset, + type MockValueId, +} from './mock-models'; import { mockValues } from './mock-values'; -import type { SilxStyle } from './nexus-models'; +import { type SilxStyle } from './nexus-models'; export function assertMockDataset( dtst: Dataset, @@ -314,6 +318,7 @@ function guessType(value: unknown): DType { function prefixChildrenPaths(grp: GroupWithChildren, parentPath: string): void { grp.children.forEach((c) => { + // eslint-disable-next-line no-param-reassign c.path = buildEntityPath(parentPath, c.path.slice(1)); if (isGroup(c) && hasChildren(c)) { @@ -328,8 +333,8 @@ function silxStyleAttr(style: SilxStyle): MockAttribute { return scalarAttr( 'SILX_style', JSON.stringify({ - signal_scale_type: signalScaleType, - axes_scale_type: axisScaleTypes, + signal_scale_type: signalScaleType, // eslint-disable-line camelcase + axes_scale_type: axisScaleTypes, // eslint-disable-line camelcase }), ); } diff --git a/packages/shared/src/mock-values.ts b/packages/shared/src/mock-values.ts index d1dcddb29..e0a5c67d6 100644 --- a/packages/shared/src/mock-values.ts +++ b/packages/shared/src/mock-values.ts @@ -1,8 +1,9 @@ +/* eslint-disable func-style */ +/* eslint-disable camelcase */ import { range } from 'd3-array'; -import type { NdArray } from 'ndarray'; -import ndarray from 'ndarray'; +import ndarray, { type NdArray } from 'ndarray'; -import type { ArrayValue, DType, H5WebComplex } from './hdf5-models'; +import { type ArrayValue, type DType, type H5WebComplex } from './hdf5-models'; import { cplx } from './hdf5-utils'; const range1 = () => range(-20, 21); diff --git a/packages/shared/src/nexus-models.ts b/packages/shared/src/nexus-models.ts index dc7e4dfa1..7c9e75fb3 100644 --- a/packages/shared/src/nexus-models.ts +++ b/packages/shared/src/nexus-models.ts @@ -1,4 +1,4 @@ -import type { ScaleType } from './vis-models'; +import { type ScaleType } from './vis-models'; export enum NxInterpretation { Spectrum = 'spectrum', diff --git a/packages/shared/src/react-suspense-fetch.ts b/packages/shared/src/react-suspense-fetch.ts index e20ea8670..5f8b49af5 100644 --- a/packages/shared/src/react-suspense-fetch.ts +++ b/packages/shared/src/react-suspense-fetch.ts @@ -1,5 +1,4 @@ -import type { StoreApi } from 'zustand/vanilla'; -import { createStore } from 'zustand/vanilla'; +import { createStore, type StoreApi } from 'zustand/vanilla'; type FetchFunc = ( input: Input, @@ -88,7 +87,9 @@ export function createFetchStore( cache.get(input)?.abort(reason); }, abortAll: (reason?: string): void => { - cache.values().forEach((instance) => instance.abort(reason)); + cache.values().forEach((instance) => { + instance.abort(reason); + }); }, get progressStore() { return progressStore; @@ -158,10 +159,10 @@ function createInstance( return { get: () => { if (promise) { - throw promise; // eslint-disable-line @typescript-eslint/no-throw-literal + throw promise; // eslint-disable-line @typescript-eslint/only-throw-error } if (error !== undefined) { - throw error; // eslint-disable-line @typescript-eslint/no-throw-literal + throw error; // eslint-disable-line @typescript-eslint/only-throw-error } return result as Result; }, diff --git a/packages/shared/src/vis-models.ts b/packages/shared/src/vis-models.ts index abcc1522a..942b4498a 100644 --- a/packages/shared/src/vis-models.ts +++ b/packages/shared/src/vis-models.ts @@ -1,6 +1,6 @@ -import type { NdArray, TypedArray } from 'ndarray'; +import { type NdArray, type TypedArray } from 'ndarray'; -import type { DType, Primitive } from './hdf5-models'; +import { type DType, type Primitive } from './hdf5-models'; export type NumArray = TypedArray | number[]; export type AnyNumArray = NdArray | NumArray; diff --git a/packages/shared/src/vis-utils.ts b/packages/shared/src/vis-utils.ts index a5e5d25b4..f1ae4999e 100644 --- a/packages/shared/src/vis-utils.ts +++ b/packages/shared/src/vis-utils.ts @@ -1,27 +1,26 @@ import { format } from 'd3-format'; -import type { NdArray, TypedArray } from 'ndarray'; -import ndarray from 'ndarray'; +import ndarray, { type NdArray, type TypedArray } from 'ndarray'; import { assign } from 'ndarray-ops'; import { assertLength, isNdArray } from './guards'; -import type { - BooleanType, - ComplexType, - EnumType, - Primitive, +import { + type BooleanType, + type ComplexType, + type EnumType, + type Primitive, } from './hdf5-models'; -import type { - AnyNumArray, - AxisScaleType, - Bounds, - ColorScaleType, - Dims, - Domain, - NumArray, - TypedArrayConstructor, - ValueFormatter, +import { + type AnyNumArray, + type AxisScaleType, + type Bounds, + type ColorScaleType, + type Dims, + type Domain, + type NumArray, + ScaleType, + type TypedArrayConstructor, + type ValueFormatter, } from './vis-models'; -import { ScaleType } from './vis-models'; export const AXIS_SCALE_TYPES: AxisScaleType[] = [ ScaleType.Linear, @@ -42,11 +41,11 @@ export const formatTooltipErr = format('.3~g'); export const formatScalarComplex = createComplexFormatter('.12~g'); const TICK_PRECISION = 3; -const TICK_DECIMAL_REGEX = /0\.([0-9]+)$/u; // can start with minus sign +const TICK_DECIMAL_REGEX = /0\.(\d+)$/u; // can start with minus sign const formatTickAuto = format(`.${TICK_PRECISION}~g`); // automatic mode (`Number.toPrecision`) const formatTickExp = format(`.${TICK_PRECISION}~e`); // exponent mode -export function formatTick(val: number | { valueOf(): number }): string { +export function formatTick(val: number | { valueOf: () => number }): string { const str = formatTickAuto(val); /* If automatic mode gives a decimal number with more than three decimals, @@ -73,7 +72,7 @@ export function createComplexFormatter( const [real, imag] = value; if (imag === 0 && !full) { - return `${formatVal(real)}`; + return formatVal(real); } if (real === 0 && !full) { @@ -105,13 +104,13 @@ export function toTypedNdArray( export function createArrayFromView( view: NdArray, ): NdArray { - const { data } = view; + const { data, size, shape } = view; const array = ndarray( (Array.isArray(data) ? [] - : new (data.constructor as TypedArrayConstructor)(view.size)) as T, - view.shape, + : new (data.constructor as TypedArrayConstructor)(size)) as T, + shape, ); assign(array, view); @@ -163,7 +162,7 @@ export function getBounds( positiveMin: Infinity, strictPositiveMin: Infinity, }, - ); + ) as Bounds; // Return undefined if min is Infinity (values is empty or contains only NaN/Infinity) return Number.isFinite(bounds.min) ? bounds : undefined; diff --git a/packages/shared/tsconfig.json b/packages/shared/tsconfig.json index 596e2cf72..139ff00c3 100644 --- a/packages/shared/tsconfig.json +++ b/packages/shared/tsconfig.json @@ -1,4 +1,4 @@ { "extends": "../../tsconfig.json", - "include": ["src"] + "include": ["src", "*"] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 834892767..4ba54a359 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -576,6 +576,9 @@ importers: packages/shared: devDependencies: + '@eslint/js': + specifier: 9.16.0 + version: 9.16.0 '@types/d3-array': specifier: ~3.2.1 version: 3.2.1 @@ -594,6 +597,9 @@ importers: '@types/react': specifier: ^18.3.3 version: 18.3.3 + confusing-browser-globals: + specifier: 1.0.11 + version: 1.0.11 d3-array: specifier: 3.2.4 version: 3.2.4 @@ -601,11 +607,26 @@ importers: specifier: 3.1.0 version: 3.1.0 eslint: - specifier: 8.57.0 - version: 8.57.0 - eslint-config-galex: - specifier: 4.5.2 - version: 4.5.2(eslint@8.57.0) + specifier: 9.16.0 + version: 9.16.0 + eslint-plugin-import: + specifier: 2.31.0 + version: 2.31.0(eslint@9.16.0) + eslint-plugin-promise: + specifier: 7.2.1 + version: 7.2.1(eslint@9.16.0) + eslint-plugin-regexp: + specifier: 2.7.0 + version: 2.7.0(eslint@9.16.0) + eslint-plugin-simple-import-sort: + specifier: 12.1.1 + version: 12.1.1(eslint@9.16.0) + eslint-plugin-unicorn: + specifier: 56.0.1 + version: 56.0.1(eslint@9.16.0) + globals: + specifier: 15.13.0 + version: 15.13.0 ndarray: specifier: 1.0.19 version: 1.0.19 @@ -618,6 +639,9 @@ importers: typescript: specifier: 5.4.5 version: 5.4.5 + typescript-eslint: + specifier: 8.18.0 + version: 8.18.0(eslint@9.16.0)(typescript@5.4.5) vitest: specifier: 2.0.5 version: 2.0.5(@types/node@20.12.11)(jsdom@24.1.1) @@ -737,10 +761,6 @@ packages: resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.22.20': - resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} - engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.24.7': resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} engines: {node: '>=6.9.0'} @@ -1005,14 +1025,42 @@ packages: resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.19.0': + resolution: {integrity: sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.9.0': + resolution: {integrity: sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/eslintrc@2.1.4': resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/eslintrc@3.2.0': + resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/js@8.57.0': resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/js@9.16.0': + resolution: {integrity: sha512-tw2HxzQkrbeuvyj1tG2Yqq+0H9wGoI2IMk4EOsQeX+vmd75FtJAzf+gTA69WF+baUKRYQ3x2kbLE08js5OsTVg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.4': + resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.2.3': + resolution: {integrity: sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@floating-ui/core@1.6.5': resolution: {integrity: sha512-8GrTWmoFhm5BsMZOTHeGD2/0FLKLQQHvO/ZmQga4tKempYRLz8aqJGqXVuQgisnMObq2YZ2SgkwctN1LOOxcqA==} @@ -1040,6 +1088,14 @@ packages: '@hapi/topo@5.1.0': resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.6': + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + engines: {node: '>=18.18.0'} + '@humanwhocodes/config-array@0.11.14': resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} @@ -1053,6 +1109,14 @@ packages: resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} deprecated: Use @eslint/object-schema instead + '@humanwhocodes/retry@0.3.1': + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + engines: {node: '>=18.18'} + + '@humanwhocodes/retry@0.4.1': + resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} + engines: {node: '>=18.18'} + '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -1324,6 +1388,9 @@ packages: cpu: [x64] os: [win32] + '@rtsao/scc@1.1.0': + resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + '@sideway/address@4.1.5': resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} @@ -1721,6 +1788,9 @@ packages: '@types/estree@1.0.5': resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + '@types/express-serve-static-core@4.19.0': resolution: {integrity: sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ==} @@ -1890,6 +1960,14 @@ packages: '@typescript-eslint/parser': ^5.0.0 eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + '@typescript-eslint/eslint-plugin@8.18.0': + resolution: {integrity: sha512-NR2yS7qUqCL7AIxdJUQf2MKKNDVNaig/dEB0GBLU7D+ZdHgK1NoH/3wsgO3OnPVipn51tG3MAwaODEGil70WEw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' + '@typescript-eslint/experimental-utils@5.62.0': resolution: {integrity: sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1906,6 +1984,13 @@ packages: typescript: optional: true + '@typescript-eslint/parser@8.18.0': + resolution: {integrity: sha512-hgUZ3kTEpVzKaK3uNibExUYm6SKKOmTU2BOxBSvOYwtJEPdVQ70kZJpPjstlnhCHcuc2WGfSbpKlb/69ttyN5Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' + '@typescript-eslint/scope-manager@5.56.0': resolution: {integrity: sha512-jGYKyt+iBakD0SA5Ww8vFqGpoV2asSjwt60Gl6YcO8ksQ8s2HlUEyHBMSa38bdLopYqGf7EYQMUIGdT/Luw+sw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1914,6 +1999,10 @@ packages: resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/scope-manager@8.18.0': + resolution: {integrity: sha512-PNGcHop0jkK2WVYGotk/hxj+UFLhXtGPiGtiaWgVBVP1jhMoMCHlTyJA+hEj4rszoSdLTK3fN4oOatrL0Cp+Xw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/type-utils@5.56.0': resolution: {integrity: sha512-8WxgOgJjWRy6m4xg9KoSHPzBNZeQbGlQOH7l2QEhQID/+YseaFxg5J/DLwWSsi9Axj4e/cCiKx7PVzOq38tY4A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1924,6 +2013,13 @@ packages: typescript: optional: true + '@typescript-eslint/type-utils@8.18.0': + resolution: {integrity: sha512-er224jRepVAVLnMF2Q7MZJCq5CsdH2oqjP4dT7K6ij09Kyd+R21r7UVJrF0buMVdZS5QRhDzpvzAxHxabQadow==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' + '@typescript-eslint/types@5.56.0': resolution: {integrity: sha512-JyAzbTJcIyhuUhogmiu+t79AkdnqgPUEsxMTMc/dCZczGMJQh1MK2wgrju++yMN6AWroVAy2jxyPcPr3SWCq5w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1932,6 +2028,10 @@ packages: resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/types@8.18.0': + resolution: {integrity: sha512-FNYxgyTCAnFwTrzpBGq+zrnoTO4x0c1CKYY5MuUTzpScqmY5fmsh2o3+57lqdI3NZucBDCzDgdEbIaNfAjAHQA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@5.56.0': resolution: {integrity: sha512-41CH/GncsLXOJi0jb74SnC7jVPWeVJ0pxQj8bOjH1h2O26jXN3YHKDT1ejkVz5YeTEQPeLCCRY0U2r68tfNOcg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1950,6 +2050,12 @@ packages: typescript: optional: true + '@typescript-eslint/typescript-estree@8.18.0': + resolution: {integrity: sha512-rqQgFRu6yPkauz+ms3nQpohwejS8bvgbPyIDq13cgEDbkXt4LH4OkDMT0/fN1RUtzG8e8AKJyDBoocuQh8qNeg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.8.0' + '@typescript-eslint/utils@5.56.0': resolution: {integrity: sha512-XhZDVdLnUJNtbzaJeDSCIYaM+Tgr59gZGbFuELgF7m0IY03PlciidS7UQNKLE0+WpUTn1GlycEr6Ivb/afjbhA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1962,6 +2068,13 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + '@typescript-eslint/utils@8.18.0': + resolution: {integrity: sha512-p6GLdY383i7h5b0Qrfbix3Vc3+J2k6QWw6UMUeY5JGfm3C5LbZ4QIZzJNoNOfgyRe0uuYKjvVOsO/jD4SJO+xg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' + '@typescript-eslint/visitor-keys@5.56.0': resolution: {integrity: sha512-1mFdED7u5bZpX6Xxf5N9U2c18sb+8EvU3tyOIj6LQZ5OOvnmj8BVeNNP603OFPm5KkS1a7IvCIcwrdHXaEMG/Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1970,6 +2083,10 @@ packages: resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/visitor-keys@8.18.0': + resolution: {integrity: sha512-pCh/qEA8Lb1wVIqNvBke8UaRjJ6wrAWkJO5yyIbs8Yx6TNGYyfNjOo61tLv+WwLvoLPp4BQ8B7AHKijl8NGUfw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@ungap/structured-clone@1.2.0': resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} @@ -2084,6 +2201,11 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} + engines: {node: '>=0.4.0'} + hasBin: true + agent-base@7.1.1: resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} engines: {node: '>= 14'} @@ -2154,10 +2276,18 @@ packages: resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} engines: {node: '>= 0.4'} + array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + engines: {node: '>= 0.4'} + array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} + array.prototype.findlastindex@1.2.5: + resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} + engines: {node: '>= 0.4'} + array.prototype.flat@1.3.2: resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} engines: {node: '>= 0.4'} @@ -2289,6 +2419,11 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + browserslist@4.24.2: + resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + buffer-crc32@0.2.13: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} @@ -2314,10 +2449,18 @@ packages: resolution: {integrity: sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==} engines: {node: '>=6'} + call-bind-apply-helpers@1.0.1: + resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==} + engines: {node: '>= 0.4'} + call-bind@1.0.7: resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} engines: {node: '>= 0.4'} + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} + callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -2330,6 +2473,9 @@ packages: caniuse-lite@1.0.30001667: resolution: {integrity: sha512-7LTwJjcRkzKFmtqGsibMeuXmvFDfZq/nzIjnmgCGzKKRVzjD72selLDK1oPF/Oxzmt4fNcPvTDvGqSDG4tCALw==} + caniuse-lite@1.0.30001687: + resolution: {integrity: sha512-0S/FDhf4ZiqrTUiQ39dKeUjYRjkv7lOZU1Dgif2rIqrTzX/1wV2hfKu9TOm1IHkdSijfLswxTFzl/cvir+SLSQ==} + caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} @@ -2375,6 +2521,10 @@ packages: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} + ci-info@4.1.0: + resolution: {integrity: sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==} + engines: {node: '>=8'} + classnames@2.5.1: resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} @@ -2436,6 +2586,10 @@ packages: resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} engines: {node: '>= 12'} + comment-parser@1.4.1: + resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} + engines: {node: '>= 12.0.0'} + common-tags@1.8.2: resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} engines: {node: '>=4.0.0'} @@ -2444,7 +2598,7 @@ packages: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} concat-map@0.0.1: - resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} concat@1.0.3: resolution: {integrity: sha512-f/ZaH1aLe64qHgTILdldbvyfGiGF4uzeo9IuXUloIOLQzFmIPloy9QbZadNsuVv0j5qbKQvQb/H/UYf2UsKTpw==} @@ -2469,12 +2623,15 @@ packages: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} cookie-signature@1.0.6: - resolution: {integrity: sha1-4wOogrNCzD7oylE6eZmXNNqzriw=} + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} cookie@0.6.0: resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} engines: {node: '>= 0.6'} + core-js-compat@3.39.0: + resolution: {integrity: sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==} + core-util-is@1.0.2: resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} @@ -2487,6 +2644,10 @@ packages: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + css.escape@1.5.1: resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} @@ -2574,6 +2735,18 @@ packages: resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} engines: {node: '>=18'} + data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + dayjs@1.11.12: resolution: {integrity: sha512-Rt2g+nTbLlDWZTwwrIXjy9MeiZmSDI375FvZs72ngxx8PDC6YXOeR3q5LAuPzjZQxhiWdRKac7RKV+YyQYfYIg==} @@ -2705,6 +2878,10 @@ packages: draco3d@1.5.7: resolution: {integrity: sha512-m6WCKt/erDXcw+70IJXnG7M3awwQPAsZvJGX5zY7beBqpELw6RDGkYVU0W43AFxye4pDZ5i2Lbyc/NNGqwjUVQ==} + dunder-proto@1.0.0: + resolution: {integrity: sha512-9+Sj30DIu+4KvHqMfLUGLFYL2PkURSYMVXJyXe92nFRvlYq5hBjLEhblKB+vkd/WVlUYMWigiY07T91Fkk0+4A==} + engines: {node: '>= 0.4'} + eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} @@ -2712,11 +2889,14 @@ packages: resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} ee-first@1.1.1: - resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=} + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} electron-to-chromium@1.4.707: resolution: {integrity: sha512-qRq74Mo7ChePOU6GHdfAJ0NREXU8vQTlVlfWz3wNygFay6xrd/fY2J7oGHwrhFeU30OVctGLdTh/FcnokTWpng==} + electron-to-chromium@1.5.72: + resolution: {integrity: sha512-ZpSAUOZ2Izby7qnZluSrAlGgGQzucmFbN0n64dYzocYxnxV5ufurpj3VgEe4cUp7ir9LmeLxNYo8bVnlM8bQHw==} + emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -2749,6 +2929,10 @@ packages: resolution: {integrity: sha512-oW69R+4q2wG+Hc3KZePPZxOiisRIqfKBVo/HLx94QcJeWGU/8sZhCvc829rd1kS366vlJbzBfXf9yWwf0+Ko7w==} engines: {node: '>= 0.4'} + es-abstract@1.23.5: + resolution: {integrity: sha512-vlmniQ0WNPwXqA0BnmwV3Ng7HxiGlh6r5U6JcTMNx8OilcAGqVJBHJcPjqOMaczU9fRuRK5Px2BdVyPRnKMMVQ==} + engines: {node: '>= 0.4'} + es-define-property@1.0.0: resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} engines: {node: '>= 0.4'} @@ -2763,6 +2947,10 @@ packages: es-module-lexer@1.5.4: resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} + es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + es-set-tostringtag@2.0.3: resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} engines: {node: '>= 0.4'} @@ -2788,6 +2976,10 @@ packages: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} @@ -2836,6 +3028,9 @@ packages: eslint-import-resolver-node@0.3.7: resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} + eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + eslint-import-resolver-typescript@3.5.4: resolution: {integrity: sha512-9xUpnedEmSfG57sN1UvWPiEhfJ8bPt0Wg2XysA7Mlc79iFGhmJtRUg9LxtkK81FhMUui0YuR2E8iUsVhePkh4A==} engines: {node: ^14.18.0 || >=16.0.0} @@ -2843,6 +3038,27 @@ packages: eslint: '*' eslint-plugin-import: '*' + eslint-module-utils@2.12.0: + resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + eslint-module-utils@2.8.1: resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} engines: {node: '>=4'} @@ -2880,6 +3096,16 @@ packages: '@typescript-eslint/parser': optional: true + eslint-plugin-import@2.31.0: + resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint-plugin-jest-dom@4.0.3: resolution: {integrity: sha512-9j+n8uj0+V0tmsoS7bYC7fLhQmIvjRqRYEcbDSi+TKPsTThLLXCyj5swMSSf/hTleeMktACnn+HFqXBr5gbcbA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6', yarn: '>=1'} @@ -2917,6 +3143,12 @@ packages: peerDependencies: eslint: ^7.0.0 || ^8.0.0 + eslint-plugin-promise@7.2.1: + resolution: {integrity: sha512-SWKjd+EuvWkYaS+uN2csvj0KoP43YTu7+phKQ5v+xw6+A0gutVX2yqCeCkC3uLCJFiPfR2dD8Es5L7yUsmvEaA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 + eslint-plugin-react-hooks@4.6.0: resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} @@ -2929,11 +3161,22 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + eslint-plugin-regexp@2.7.0: + resolution: {integrity: sha512-U8oZI77SBtH8U3ulZ05iu0qEzIizyEDXd+BWHvyVxTOjGwcDcvy/kEpgFG4DYca2ByRLiVPFZ2GeH7j1pdvZTA==} + engines: {node: ^18 || >=20} + peerDependencies: + eslint: '>=8.44.0' + eslint-plugin-simple-import-sort@10.0.0: resolution: {integrity: sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw==} peerDependencies: eslint: '>=5.0.0' + eslint-plugin-simple-import-sort@12.1.1: + resolution: {integrity: sha512-6nuzu4xwQtE3332Uz0to+TxDQYRLTKRESSc2hefVT48Zc8JthmN23Gx9lnYhu0FtkRSL1oxny3kJ2aveVhmOVA==} + peerDependencies: + eslint: '>=5.0.0' + eslint-plugin-sonarjs@0.19.0: resolution: {integrity: sha512-6+s5oNk5TFtVlbRxqZN7FIGmjdPCYQKaTzFPmqieCmsU1kBYDzndTeQav0xtQNwZJWu5awWfTGe8Srq9xFOGnw==} engines: {node: '>=14'} @@ -2967,6 +3210,12 @@ packages: peerDependencies: eslint: '>=8.28.0' + eslint-plugin-unicorn@56.0.1: + resolution: {integrity: sha512-FwVV0Uwf8XPfVnKSGpMg7NtlZh0G0gBarCaFcMUOoqPxXryxdYxTRRv4kH6B9TFCVIrjRXG+emcxIk2ayZilog==} + engines: {node: '>=18.18'} + peerDependencies: + eslint: '>=8.56.0' + eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} @@ -2975,6 +3224,10 @@ packages: resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-scope@8.2.0: + resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-visitor-keys@2.1.0: resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} engines: {node: '>=10'} @@ -2983,12 +3236,30 @@ packages: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint@8.57.0: resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. hasBin: true + eslint@9.16.0: + resolution: {integrity: sha512-whp8mSQI4C8VXd+fLgSM0lh3UlmcFtVwUQjyKCFfsp+2ItAIYhlq/hqGahGqHE6cv9unM41VlqKk2VtKYR2TaA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.3.0: + resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + espree@9.6.1: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3002,6 +3273,10 @@ packages: resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} engines: {node: '>=0.10'} + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} @@ -3096,6 +3371,10 @@ packages: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + file-selector@0.6.0: resolution: {integrity: sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==} engines: {node: '>= 12'} @@ -3127,6 +3406,10 @@ packages: resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} engines: {node: ^10.12.0 || >=12.0.0} + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + flatted@3.3.1: resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} @@ -3162,7 +3445,7 @@ packages: engines: {node: '>= 0.6'} fresh@0.5.2: - resolution: {integrity: sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=} + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} fs-extra@11.2.0: @@ -3279,10 +3562,22 @@ packages: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globals@15.13.0: + resolution: {integrity: sha512-49TewVEz0UxZjr1WYYsWpPrhyC/B/pA8Bq0fUmet2n+eR7yn0IvNzNaoBwnK6mdkzcN+se7Ez9zUgULTz2QH4g==} + engines: {node: '>=18'} + globalthis@1.0.3: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} engines: {node: '>= 0.4'} + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} @@ -3300,6 +3595,10 @@ packages: gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -3479,6 +3778,10 @@ packages: is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} + is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} @@ -3508,6 +3811,14 @@ packages: is-core-module@2.13.1: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + is-core-module@2.15.1: + resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} + is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} @@ -3521,6 +3832,10 @@ packages: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} + is-finalizationregistry@1.1.0: + resolution: {integrity: sha512-qfMdqbAQEwBw78ZyReKnlA8ezmPdb9BemzIIip/JkjaZUhitfXDkkr+3QTboW0JrSXT1QWyYShpvnNHGZ4c4yA==} + engines: {node: '>= 0.4'} + is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} @@ -3835,10 +4150,6 @@ packages: lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - lz-string@1.5.0: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true @@ -3913,7 +4224,7 @@ packages: resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} media-typer@0.3.0: - resolution: {integrity: sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=} + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} memoize-one@5.2.1: @@ -3923,7 +4234,7 @@ packages: resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==} merge-descriptors@1.0.1: - resolution: {integrity: sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=} + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -4064,6 +4375,10 @@ packages: minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -4112,6 +4427,9 @@ packages: node-releases@2.0.14: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} @@ -4140,6 +4458,10 @@ packages: object-inspect@1.13.1: resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + object-inspect@1.13.3: + resolution: {integrity: sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==} + engines: {node: '>= 0.4'} + object-is@1.1.6: resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} engines: {node: '>= 0.4'} @@ -4160,6 +4482,14 @@ packages: resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} engines: {node: '>= 0.4'} + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + + object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} + object.hasown@1.1.3: resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} @@ -4167,6 +4497,10 @@ packages: resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} engines: {node: '>= 0.4'} + object.values@1.2.0: + resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} + engines: {node: '>= 0.4'} + on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} @@ -4284,6 +4618,9 @@ packages: picocolors@1.0.1: resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} @@ -4567,9 +4904,21 @@ packages: reduce-function-call@1.0.3: resolution: {integrity: sha512-Hl/tuV2VDgWgCSEeWMLwxLZqX7OK59eU1guxXsRKTAyeYimivsKdtcV4fu3r710tpG5GmDKDhQ0HSZLExnNmyQ==} + refa@0.12.1: + resolution: {integrity: sha512-J8rn6v4DBb2nnFqkqwy6/NnTYMcgLA+sLr0iIO41qpv0n+ngb7ksag2tMRl0inb1bbO/esUwzW1vbJi7K0sI0g==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + reflect.getprototypeof@1.0.8: + resolution: {integrity: sha512-B5dj6usc5dkk8uFliwjwDHM8To5/QwdKz9JcBZ8Ic4G1f0YmeeJTtE/ZTdgRFPAfxZFiUaPhZ1Jcs4qeagItGQ==} + engines: {node: '>= 0.4'} + regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + regexp-ast-analysis@0.7.1: + resolution: {integrity: sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + regexp-tree@0.1.27: resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} hasBin: true @@ -4578,10 +4927,18 @@ packages: resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} engines: {node: '>= 0.4'} + regexp.prototype.flags@1.5.3: + resolution: {integrity: sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==} + engines: {node: '>= 0.4'} + regexparam@3.0.0: resolution: {integrity: sha512-RSYAtP31mvYLkAHrOlh25pCNQ5hWnT106VukGaaFfuJrZFkGRX5GhUAdPqpSDXxOhA2c4akmRuplv1mRqnBn6Q==} engines: {node: '>=8'} + regjsparser@0.10.0: + resolution: {integrity: sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==} + hasBin: true + regjsparser@0.9.1: resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} hasBin: true @@ -4722,6 +5079,10 @@ packages: scheduler@0.23.2: resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + scslre@0.3.0: + resolution: {integrity: sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==} + engines: {node: ^14.0.0 || >=16.0.0} + semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true @@ -4730,11 +5091,6 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.6.0: - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} - engines: {node: '>=10'} - hasBin: true - semver@7.6.3: resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} @@ -4875,12 +5231,20 @@ packages: resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} engines: {node: '>= 0.4'} - string.prototype.trimend@1.0.7: - resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} string.prototype.trimstart@1.0.7: resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -5031,6 +5395,12 @@ packages: trough@2.2.0: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + ts-api-utils@1.4.3: + resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + ts-dedent@2.2.0: resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} engines: {node: '>=6.10'} @@ -5114,6 +5484,17 @@ packages: resolution: {integrity: sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==} engines: {node: '>= 0.4'} + typed-array-length@1.0.7: + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} + engines: {node: '>= 0.4'} + + typescript-eslint@8.18.0: + resolution: {integrity: sha512-Xq2rRjn6tzVpAyHr3+nmSg1/9k9aIHnJ2iZeOH7cfGOWqTkXTm3kwpQglEuLGdNrYvPF+2gtAs+/KF5rjVo+WQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' + typescript@5.0.3: resolution: {integrity: sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA==} engines: {node: '>=12.20'} @@ -5183,6 +5564,12 @@ packages: peerDependencies: browserslist: '>= 4.21.0' + update-browserslist-db@1.1.1: + resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} @@ -5210,7 +5597,7 @@ packages: engines: {node: '>= 4'} utils-merge@1.0.1: - resolution: {integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=} + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} uuid@8.3.2: @@ -5229,7 +5616,7 @@ packages: engines: {node: '>= 0.8'} verror@1.10.0: - resolution: {integrity: sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=} + resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} engines: {'0': node >=0.6.0} vfile-message@4.0.2: @@ -5417,6 +5804,10 @@ packages: which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + which-builtin-type@1.2.0: + resolution: {integrity: sha512-I+qLGQ/vucCby4tf5HsLmGueEla4ZhwTBSqaooS+Y0BuxN4Cp+okmGuV+8mXZ84KDI9BA+oklo+RzKg0ONdSUA==} + engines: {node: '>= 0.4'} + which-collection@1.0.2: resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} engines: {node: '>= 0.4'} @@ -5481,9 +5872,6 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} @@ -5562,7 +5950,7 @@ snapshots: '@babel/traverse': 7.24.0 '@babel/types': 7.24.0 convert-source-map: 1.9.0 - debug: 4.3.4 + debug: 4.3.6(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -5680,8 +6068,6 @@ snapshots: '@babel/helper-string-parser@7.24.1': {} - '@babel/helper-validator-identifier@7.22.20': {} - '@babel/helper-validator-identifier@7.24.7': {} '@babel/helper-validator-option@7.23.5': {} @@ -5792,7 +6178,7 @@ snapshots: '@babel/helper-split-export-declaration': 7.22.6 '@babel/parser': 7.24.5 '@babel/types': 7.24.5 - debug: 4.3.4 + debug: 4.3.6(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -5931,12 +6317,29 @@ snapshots: eslint: 8.57.0 eslint-visitor-keys: 3.4.3 + '@eslint-community/eslint-utils@4.4.0(eslint@9.16.0)': + dependencies: + eslint: 9.16.0 + eslint-visitor-keys: 3.4.3 + '@eslint-community/regexpp@4.10.0': {} + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/config-array@0.19.0': + dependencies: + '@eslint/object-schema': 2.1.4 + debug: 4.3.6(supports-color@8.1.1) + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/core@0.9.0': {} + '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 - debug: 4.3.4 + debug: 4.3.6(supports-color@8.1.1) espree: 9.6.1 globals: 13.24.0 ignore: 5.3.1 @@ -5947,8 +6350,30 @@ snapshots: transitivePeerDependencies: - supports-color + '@eslint/eslintrc@3.2.0': + dependencies: + ajv: 6.12.6 + debug: 4.3.6(supports-color@8.1.1) + espree: 10.3.0 + globals: 14.0.0 + ignore: 5.3.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + '@eslint/js@8.57.0': {} + '@eslint/js@9.16.0': {} + + '@eslint/object-schema@2.1.4': {} + + '@eslint/plugin-kit@0.2.3': + dependencies: + levn: 0.4.1 + '@floating-ui/core@1.6.5': dependencies: '@floating-ui/utils': 0.2.5 @@ -5980,10 +6405,17 @@ snapshots: dependencies: '@hapi/hoek': 9.3.0 + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.6': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.1 + '@humanwhocodes/config-array@0.11.14': dependencies: '@humanwhocodes/object-schema': 2.0.2 - debug: 4.3.4 + debug: 4.3.6(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -5992,6 +6424,10 @@ snapshots: '@humanwhocodes/object-schema@2.0.2': {} + '@humanwhocodes/retry@0.3.1': {} + + '@humanwhocodes/retry@0.4.1': {} + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -6252,6 +6688,8 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.20.0': optional: true + '@rtsao/scc@1.1.0': {} + '@sideway/address@4.1.5': dependencies: '@hapi/hoek': 9.3.0 @@ -6726,6 +7164,8 @@ snapshots: '@types/estree@1.0.5': {} + '@types/estree@1.0.6': {} + '@types/express-serve-static-core@4.19.0': dependencies: '@types/node': 20.12.11 @@ -6911,22 +7351,39 @@ snapshots: '@typescript-eslint/eslint-plugin@5.56.0(@typescript-eslint/parser@5.56.0(eslint@8.57.0)(typescript@5.0.3))(eslint@8.57.0)': dependencies: - '@eslint-community/regexpp': 4.10.0 + '@eslint-community/regexpp': 4.12.1 '@typescript-eslint/parser': 5.56.0(eslint@8.57.0)(typescript@5.0.3) '@typescript-eslint/scope-manager': 5.56.0 '@typescript-eslint/type-utils': 5.56.0(eslint@8.57.0)(typescript@5.0.3) '@typescript-eslint/utils': 5.56.0(eslint@8.57.0)(typescript@5.0.3) - debug: 4.3.4 + debug: 4.3.6(supports-color@8.1.1) eslint: 8.57.0 grapheme-splitter: 1.0.4 ignore: 5.3.1 natural-compare-lite: 1.4.0 - semver: 7.6.0 + semver: 7.6.3 tsutils: 3.21.0(typescript@5.0.3) typescript: 5.0.3 transitivePeerDependencies: - supports-color + '@typescript-eslint/eslint-plugin@8.18.0(@typescript-eslint/parser@8.18.0(eslint@9.16.0)(typescript@5.4.5))(eslint@9.16.0)(typescript@5.4.5)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.18.0(eslint@9.16.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 8.18.0 + '@typescript-eslint/type-utils': 8.18.0(eslint@9.16.0)(typescript@5.4.5) + '@typescript-eslint/utils': 8.18.0(eslint@9.16.0)(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 8.18.0 + eslint: 9.16.0 + graphemer: 1.4.0 + ignore: 5.3.1 + natural-compare: 1.4.0 + ts-api-utils: 1.4.3(typescript@5.4.5) + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/experimental-utils@5.62.0(eslint@8.57.0)(typescript@5.0.3)': dependencies: '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.0.3) @@ -6940,13 +7397,25 @@ snapshots: '@typescript-eslint/scope-manager': 5.56.0 '@typescript-eslint/types': 5.56.0 '@typescript-eslint/typescript-estree': 5.56.0(typescript@5.0.3) - debug: 4.3.4 + debug: 4.3.6(supports-color@8.1.1) eslint: 8.57.0 optionalDependencies: typescript: 5.0.3 transitivePeerDependencies: - supports-color + '@typescript-eslint/parser@8.18.0(eslint@9.16.0)(typescript@5.4.5)': + dependencies: + '@typescript-eslint/scope-manager': 8.18.0 + '@typescript-eslint/types': 8.18.0 + '@typescript-eslint/typescript-estree': 8.18.0(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 8.18.0 + debug: 4.3.6(supports-color@8.1.1) + eslint: 9.16.0 + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/scope-manager@5.56.0': dependencies: '@typescript-eslint/types': 5.56.0 @@ -6957,6 +7426,11 @@ snapshots: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 + '@typescript-eslint/scope-manager@8.18.0': + dependencies: + '@typescript-eslint/types': 8.18.0 + '@typescript-eslint/visitor-keys': 8.18.0 + '@typescript-eslint/type-utils@5.56.0(eslint@8.57.0)(typescript@5.0.3)': dependencies: '@typescript-eslint/typescript-estree': 5.56.0(typescript@5.0.3) @@ -6969,10 +7443,23 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/type-utils@8.18.0(eslint@9.16.0)(typescript@5.4.5)': + dependencies: + '@typescript-eslint/typescript-estree': 8.18.0(typescript@5.4.5) + '@typescript-eslint/utils': 8.18.0(eslint@9.16.0)(typescript@5.4.5) + debug: 4.3.6(supports-color@8.1.1) + eslint: 9.16.0 + ts-api-utils: 1.4.3(typescript@5.4.5) + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/types@5.56.0': {} '@typescript-eslint/types@5.62.0': {} + '@typescript-eslint/types@8.18.0': {} + '@typescript-eslint/typescript-estree@5.56.0(typescript@5.0.3)': dependencies: '@typescript-eslint/types': 5.56.0 @@ -7001,9 +7488,23 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@5.56.0(eslint@8.57.0)(typescript@5.0.3)': + '@typescript-eslint/typescript-estree@8.18.0(typescript@5.4.5)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@typescript-eslint/types': 8.18.0 + '@typescript-eslint/visitor-keys': 8.18.0 + debug: 4.3.6(supports-color@8.1.1) + fast-glob: 3.3.2 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 1.4.3(typescript@5.4.5) + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@5.56.0(eslint@8.57.0)(typescript@5.0.3)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.8 '@typescript-eslint/scope-manager': 5.56.0 @@ -7031,6 +7532,17 @@ snapshots: - supports-color - typescript + '@typescript-eslint/utils@8.18.0(eslint@9.16.0)(typescript@5.4.5)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.16.0) + '@typescript-eslint/scope-manager': 8.18.0 + '@typescript-eslint/types': 8.18.0 + '@typescript-eslint/typescript-estree': 8.18.0(typescript@5.4.5) + eslint: 9.16.0 + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/visitor-keys@5.56.0': dependencies: '@typescript-eslint/types': 5.56.0 @@ -7041,6 +7553,11 @@ snapshots: '@typescript-eslint/types': 5.62.0 eslint-visitor-keys: 3.4.3 + '@typescript-eslint/visitor-keys@8.18.0': + dependencies: + '@typescript-eslint/types': 8.18.0 + eslint-visitor-keys: 4.2.0 + '@ungap/structured-clone@1.2.0': {} '@use-gesture/core@10.3.1': {} @@ -7224,12 +7741,18 @@ snapshots: dependencies: acorn: 8.11.3 + acorn-jsx@5.3.2(acorn@8.14.0): + dependencies: + acorn: 8.14.0 + acorn-walk@7.2.0: {} acorn@7.4.1: {} acorn@8.11.3: {} + acorn@8.14.0: {} + agent-base@7.1.1: dependencies: debug: 4.3.6(supports-color@8.1.1) @@ -7302,8 +7825,26 @@ snapshots: get-intrinsic: 1.2.4 is-string: 1.0.7 + array-includes@3.1.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.5 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.4 + is-string: 1.0.7 + array-union@2.1.0: {} + array.prototype.findlastindex@1.2.5: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.5 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-shim-unscopables: 1.0.2 + array.prototype.flat@1.3.2: dependencies: call-bind: 1.0.7 @@ -7331,7 +7872,7 @@ snapshots: array-buffer-byte-length: 1.0.1 call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.23.5 es-errors: 1.3.0 get-intrinsic: 1.2.4 is-array-buffer: 3.0.4 @@ -7456,6 +7997,13 @@ snapshots: node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.23.0) + browserslist@4.24.2: + dependencies: + caniuse-lite: 1.0.30001687 + electron-to-chromium: 1.5.72 + node-releases: 2.0.19 + update-browserslist-db: 1.1.1(browserslist@4.24.2) + buffer-crc32@0.2.13: {} buffer@5.7.1: @@ -7476,6 +8024,11 @@ snapshots: cachedir@2.4.0: {} + call-bind-apply-helpers@1.0.1: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + call-bind@1.0.7: dependencies: es-define-property: 1.0.0 @@ -7484,6 +8037,13 @@ snapshots: get-intrinsic: 1.2.4 set-function-length: 1.2.2 + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.1 + es-define-property: 1.0.0 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 + callsites@3.1.0: {} camera-controls@2.8.5(three@0.167.1): @@ -7492,6 +8052,8 @@ snapshots: caniuse-lite@1.0.30001667: {} + caniuse-lite@1.0.30001687: {} + caseless@0.12.0: {} ccount@2.0.1: {} @@ -7542,6 +8104,8 @@ snapshots: ci-info@3.9.0: {} + ci-info@4.1.0: {} + classnames@2.5.1: {} clean-regexp@1.0.0: @@ -7597,6 +8161,8 @@ snapshots: commander@8.3.0: {} + comment-parser@1.4.1: {} + common-tags@1.8.2: {} commondir@1.0.1: {} @@ -7623,6 +8189,10 @@ snapshots: cookie@0.6.0: {} + core-js-compat@3.39.0: + dependencies: + browserslist: 4.24.2 + core-util-is@1.0.2: {} cross-env@7.0.3: @@ -7635,6 +8205,12 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + css.escape@1.5.1: {} cssesc@3.0.0: {} @@ -7758,6 +8334,24 @@ snapshots: whatwg-mimetype: 4.0.0 whatwg-url: 14.0.0 + data-view-buffer@1.0.1: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + data-view-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + data-view-byte-offset@1.0.0: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dayjs@1.11.12: {} debounce@1.2.1: {} @@ -7877,6 +8471,12 @@ snapshots: draco3d@1.5.7: {} + dunder-proto@1.0.0: + dependencies: + call-bind-apply-helpers: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + eastasianwidth@0.2.0: {} ecc-jsbn@0.1.2: @@ -7888,6 +8488,8 @@ snapshots: electron-to-chromium@1.4.707: {} + electron-to-chromium@1.5.72: {} + emoji-regex@8.0.0: {} emoji-regex@9.2.2: {} @@ -7949,7 +8551,7 @@ snapshots: safe-array-concat: 1.1.2 safe-regex-test: 1.0.3 string.prototype.trim: 1.2.8 - string.prototype.trimend: 1.0.7 + string.prototype.trimend: 1.0.8 string.prototype.trimstart: 1.0.7 typed-array-buffer: 1.0.2 typed-array-byte-length: 1.0.1 @@ -7958,6 +8560,55 @@ snapshots: unbox-primitive: 1.0.2 which-typed-array: 1.1.15 + es-abstract@1.23.5: + dependencies: + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + data-view-buffer: 1.0.1 + data-view-byte-length: 1.0.1 + data-view-byte-offset: 1.0.0 + es-define-property: 1.0.0 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-set-tostringtag: 2.0.3 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.4 + get-symbol-description: 1.0.2 + globalthis: 1.0.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 + is-callable: 1.2.7 + is-data-view: 1.0.1 + is-negative-zero: 2.0.3 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.3 + is-string: 1.0.7 + is-typed-array: 1.1.13 + is-weakref: 1.0.2 + object-inspect: 1.13.3 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.3 + safe-array-concat: 1.1.2 + safe-regex-test: 1.0.3 + string.prototype.trim: 1.2.9 + string.prototype.trimend: 1.0.8 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.2 + typed-array-byte-length: 1.0.1 + typed-array-byte-offset: 1.0.2 + typed-array-length: 1.0.7 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.15 + es-define-property@1.0.0: dependencies: get-intrinsic: 1.2.4 @@ -7978,6 +8629,10 @@ snapshots: es-module-lexer@1.5.4: {} + es-object-atoms@1.0.0: + dependencies: + es-errors: 1.3.0 + es-set-tostringtag@2.0.3: dependencies: get-intrinsic: 1.2.4 @@ -8029,6 +8684,8 @@ snapshots: escalade@3.1.2: {} + escalade@3.2.0: {} + escape-html@1.0.3: {} escape-string-regexp@1.0.5: {} @@ -8113,9 +8770,17 @@ snapshots: transitivePeerDependencies: - supports-color + eslint-import-resolver-node@0.3.9: + dependencies: + debug: 3.2.7(supports-color@8.1.1) + is-core-module: 2.15.1 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + eslint-import-resolver-typescript@3.5.4(eslint-plugin-import@2.27.5)(eslint@8.57.0): dependencies: - debug: 4.3.4 + debug: 4.3.6(supports-color@8.1.1) enhanced-resolve: 5.16.0 eslint: 8.57.0 eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.56.0(eslint@8.57.0)(typescript@5.0.3))(eslint-import-resolver-typescript@3.5.4)(eslint@8.57.0) @@ -8127,6 +8792,15 @@ snapshots: transitivePeerDependencies: - supports-color + eslint-module-utils@2.12.0(eslint-import-resolver-node@0.3.9)(eslint@9.16.0): + dependencies: + debug: 3.2.7(supports-color@8.1.1) + optionalDependencies: + eslint: 9.16.0 + eslint-import-resolver-node: 0.3.9 + transitivePeerDependencies: + - supports-color + eslint-module-utils@2.8.1(@typescript-eslint/parser@5.56.0(eslint@8.57.0)(typescript@5.0.3))(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.4)(eslint@8.57.0): dependencies: debug: 3.2.7(supports-color@8.1.1) @@ -8176,6 +8850,33 @@ snapshots: - eslint-import-resolver-webpack - supports-color + eslint-plugin-import@2.31.0(eslint@9.16.0): + dependencies: + '@rtsao/scc': 1.1.0 + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.5 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7(supports-color@8.1.1) + doctrine: 2.1.0 + eslint: 9.16.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.0(eslint-import-resolver-node@0.3.9)(eslint@9.16.0) + hasown: 2.0.2 + is-core-module: 2.15.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.0 + semver: 6.3.1 + string.prototype.trimend: 1.0.8 + tsconfig-paths: 3.15.0 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + eslint-plugin-jest-dom@4.0.3(eslint@8.57.0): dependencies: '@babel/runtime': 7.24.0 @@ -8221,6 +8922,11 @@ snapshots: dependencies: eslint: 8.57.0 + eslint-plugin-promise@7.2.1(eslint@9.16.0): + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.16.0) + eslint: 9.16.0 + eslint-plugin-react-hooks@4.6.0(eslint@8.57.0): dependencies: eslint: 8.57.0 @@ -8244,10 +8950,25 @@ snapshots: semver: 6.3.1 string.prototype.matchall: 4.0.10 + eslint-plugin-regexp@2.7.0(eslint@9.16.0): + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.16.0) + '@eslint-community/regexpp': 4.12.1 + comment-parser: 1.4.1 + eslint: 9.16.0 + jsdoc-type-pratt-parser: 4.1.0 + refa: 0.12.1 + regexp-ast-analysis: 0.7.1 + scslre: 0.3.0 + eslint-plugin-simple-import-sort@10.0.0(eslint@8.57.0): dependencies: eslint: 8.57.0 + eslint-plugin-simple-import-sort@12.1.1(eslint@9.16.0): + dependencies: + eslint: 9.16.0 + eslint-plugin-sonarjs@0.19.0(eslint@8.57.0): dependencies: eslint: 8.57.0 @@ -8278,7 +8999,7 @@ snapshots: eslint-plugin-unicorn@46.0.0(eslint@8.57.0): dependencies: - '@babel/helper-validator-identifier': 7.22.20 + '@babel/helper-validator-identifier': 7.24.7 '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) ci-info: 3.9.0 clean-regexp: 1.0.0 @@ -8293,7 +9014,27 @@ snapshots: regexp-tree: 0.1.27 regjsparser: 0.9.1 safe-regex: 2.1.1 - semver: 7.6.0 + semver: 7.6.3 + strip-indent: 3.0.0 + + eslint-plugin-unicorn@56.0.1(eslint@9.16.0): + dependencies: + '@babel/helper-validator-identifier': 7.24.7 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.16.0) + ci-info: 4.1.0 + clean-regexp: 1.0.0 + core-js-compat: 3.39.0 + eslint: 9.16.0 + esquery: 1.6.0 + globals: 15.13.0 + indent-string: 4.0.0 + is-builtin-module: 3.2.1 + jsesc: 3.0.2 + pluralize: 8.0.0 + read-pkg-up: 7.0.1 + regexp-tree: 0.1.27 + regjsparser: 0.10.0 + semver: 7.6.3 strip-indent: 3.0.0 eslint-scope@5.1.1: @@ -8306,10 +9047,17 @@ snapshots: esrecurse: 4.3.0 estraverse: 5.3.0 + eslint-scope@8.2.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + eslint-visitor-keys@2.1.0: {} eslint-visitor-keys@3.4.3: {} + eslint-visitor-keys@4.2.0: {} + eslint@8.57.0: dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) @@ -8353,6 +9101,51 @@ snapshots: transitivePeerDependencies: - supports-color + eslint@9.16.0: + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.16.0) + '@eslint-community/regexpp': 4.12.1 + '@eslint/config-array': 0.19.0 + '@eslint/core': 0.9.0 + '@eslint/eslintrc': 3.2.0 + '@eslint/js': 9.16.0 + '@eslint/plugin-kit': 0.2.3 + '@humanfs/node': 0.16.6 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.1 + '@types/estree': 1.0.6 + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.3.6(supports-color@8.1.1) + escape-string-regexp: 4.0.0 + eslint-scope: 8.2.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.1 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + transitivePeerDependencies: + - supports-color + + espree@10.3.0: + dependencies: + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) + eslint-visitor-keys: 4.2.0 + espree@9.6.1: dependencies: acorn: 8.11.3 @@ -8365,6 +9158,10 @@ snapshots: dependencies: estraverse: 5.3.0 + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + esrecurse@4.3.0: dependencies: estraverse: 5.3.0 @@ -8505,6 +9302,10 @@ snapshots: dependencies: flat-cache: 3.2.0 + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + file-selector@0.6.0: dependencies: tslib: 2.6.2 @@ -8549,6 +9350,11 @@ snapshots: keyv: 4.5.4 rimraf: 3.0.2 + flat-cache@4.0.1: + dependencies: + flatted: 3.3.1 + keyv: 4.5.4 + flatted@3.3.1: {} follow-redirects@1.15.6: {} @@ -8604,7 +9410,7 @@ snapshots: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.23.5 functions-have-names: 1.2.3 functions-have-names@1.2.3: {} @@ -8707,10 +9513,19 @@ snapshots: dependencies: type-fest: 0.20.2 + globals@14.0.0: {} + + globals@15.13.0: {} + globalthis@1.0.3: dependencies: define-properties: 1.2.1 + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.0.1 + globby@11.1.0: dependencies: array-union: 2.1.0 @@ -8736,6 +9551,8 @@ snapshots: dependencies: get-intrinsic: 1.2.4 + gopd@1.2.0: {} + graceful-fs@4.2.11: {} grapheme-splitter@1.0.4: {} @@ -8892,6 +9709,10 @@ snapshots: is-arrayish@0.2.1: {} + is-async-function@2.0.0: + dependencies: + has-tostringtag: 1.0.2 + is-bigint@1.0.4: dependencies: has-bigints: 1.0.2 @@ -8921,6 +9742,14 @@ snapshots: dependencies: hasown: 2.0.2 + is-core-module@2.15.1: + dependencies: + hasown: 2.0.2 + + is-data-view@1.0.1: + dependencies: + is-typed-array: 1.1.13 + is-date-object@1.0.5: dependencies: has-tostringtag: 1.0.2 @@ -8929,6 +9758,10 @@ snapshots: is-extglob@2.1.1: {} + is-finalizationregistry@1.1.0: + dependencies: + call-bind: 1.0.8 + is-fullwidth-code-point@3.0.0: {} is-generator-function@1.0.10: @@ -9160,10 +9993,10 @@ snapshots: jsx-ast-utils@3.3.5: dependencies: - array-includes: 3.1.7 + array-includes: 3.1.8 array.prototype.flat: 1.3.2 object.assign: 4.1.5 - object.values: 1.1.7 + object.values: 1.2.0 keyv@4.5.4: dependencies: @@ -9249,10 +10082,6 @@ snapshots: dependencies: yallist: 3.1.1 - lru-cache@6.0.0: - dependencies: - yallist: 4.0.0 - lz-string@1.5.0: {} maath@0.10.8(@types/three@0.167.1)(three@0.167.1): @@ -9627,6 +10456,10 @@ snapshots: dependencies: brace-expansion: 1.1.11 + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + minimist@1.2.8: {} minipass@7.1.2: {} @@ -9660,6 +10493,8 @@ snapshots: node-releases@2.0.14: {} + node-releases@2.0.19: {} + normalize-package-data@2.5.0: dependencies: hosted-git-info: 2.8.9 @@ -9685,6 +10520,8 @@ snapshots: object-inspect@1.13.1: {} + object-inspect@1.13.3: {} + object-is@1.1.6: dependencies: call-bind: 1.0.7 @@ -9711,6 +10548,19 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.22.5 + object.fromentries@2.0.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.5 + es-object-atoms: 1.0.0 + + object.groupby@1.0.3: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.5 + object.hasown@1.1.3: dependencies: define-properties: 1.2.1 @@ -9722,6 +10572,12 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.22.5 + object.values@1.2.0: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + on-finished@2.4.1: dependencies: ee-first: 1.1.1 @@ -9827,6 +10683,8 @@ snapshots: picocolors@1.0.1: {} + picocolors@1.1.1: {} + picomatch@2.3.1: {} pify@2.3.0: {} @@ -10124,8 +10982,28 @@ snapshots: dependencies: balanced-match: 1.0.2 + refa@0.12.1: + dependencies: + '@eslint-community/regexpp': 4.12.1 + + reflect.getprototypeof@1.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + dunder-proto: 1.0.0 + es-abstract: 1.23.5 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + gopd: 1.2.0 + which-builtin-type: 1.2.0 + regenerator-runtime@0.14.1: {} + regexp-ast-analysis@0.7.1: + dependencies: + '@eslint-community/regexpp': 4.12.1 + refa: 0.12.1 + regexp-tree@0.1.27: {} regexp.prototype.flags@1.5.2: @@ -10135,8 +11013,19 @@ snapshots: es-errors: 1.3.0 set-function-name: 2.0.2 + regexp.prototype.flags@1.5.3: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-errors: 1.3.0 + set-function-name: 2.0.2 + regexparam@3.0.0: {} + regjsparser@0.10.0: + dependencies: + jsesc: 0.5.0 + regjsparser@0.9.1: dependencies: jsesc: 0.5.0 @@ -10317,14 +11206,16 @@ snapshots: dependencies: loose-envify: 1.4.0 + scslre@0.3.0: + dependencies: + '@eslint-community/regexpp': 4.12.1 + refa: 0.12.1 + regexp-ast-analysis: 0.7.1 + semver@5.7.2: {} semver@6.3.1: {} - semver@7.6.0: - dependencies: - lru-cache: 6.0.0 - semver@7.6.3: {} send@0.18.0: @@ -10501,11 +11392,18 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.22.5 - string.prototype.trimend@1.0.7: + string.prototype.trim@1.2.9: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.23.5 + es-object-atoms: 1.0.0 + + string.prototype.trimend@1.0.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 string.prototype.trimstart@1.0.7: dependencies: @@ -10513,6 +11411,12 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.22.5 + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 @@ -10639,6 +11543,10 @@ snapshots: trough@2.2.0: {} + ts-api-utils@1.4.3(typescript@5.4.5): + dependencies: + typescript: 5.4.5 + ts-dedent@2.2.0: {} tsconfig-paths@3.15.0: @@ -10735,6 +11643,25 @@ snapshots: is-typed-array: 1.1.13 possible-typed-array-names: 1.0.0 + typed-array-length@1.0.7: + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + is-typed-array: 1.1.13 + possible-typed-array-names: 1.0.0 + reflect.getprototypeof: 1.0.8 + + typescript-eslint@8.18.0(eslint@9.16.0)(typescript@5.4.5): + dependencies: + '@typescript-eslint/eslint-plugin': 8.18.0(@typescript-eslint/parser@8.18.0(eslint@9.16.0)(typescript@5.4.5))(eslint@9.16.0)(typescript@5.4.5) + '@typescript-eslint/parser': 8.18.0(eslint@9.16.0)(typescript@5.4.5) + '@typescript-eslint/utils': 8.18.0(eslint@9.16.0)(typescript@5.4.5) + eslint: 9.16.0 + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + typescript@5.0.3: {} typescript@5.4.5: {} @@ -10808,6 +11735,12 @@ snapshots: escalade: 3.1.2 picocolors: 1.0.0 + update-browserslist-db@1.1.1(browserslist@4.24.2): + dependencies: + browserslist: 4.24.2 + escalade: 3.2.0 + picocolors: 1.1.1 + uri-js@4.4.1: dependencies: punycode: 2.3.1 @@ -11044,6 +11977,22 @@ snapshots: is-string: 1.0.7 is-symbol: 1.0.4 + which-builtin-type@1.2.0: + dependencies: + call-bind: 1.0.8 + function.prototype.name: 1.1.6 + has-tostringtag: 1.0.2 + is-async-function: 2.0.0 + is-date-object: 1.0.5 + is-finalizationregistry: 1.1.0 + is-generator-function: 1.0.10 + is-regex: 1.1.4 + is-weakref: 1.0.2 + isarray: 2.0.5 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.2 + which-typed-array: 1.1.15 + which-collection@1.0.2: dependencies: is-map: 2.0.3 @@ -11105,8 +12054,6 @@ snapshots: yallist@3.1.1: {} - yallist@4.0.0: {} - yargs-parser@21.1.1: {} yargs@17.7.2: diff --git a/tsconfig.json b/tsconfig.json index 1879a0504..30e8dbcb5 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -21,8 +21,6 @@ "noImplicitReturns": true, "noFallthroughCasesInSwitch": true, "forceConsistentCasingInFileNames": true, - "importsNotUsedAsValues": "error", - "ignoreDeprecations": "5.0", "useDefineForClassFields": true, "useUnknownInCatchVariables": true },