diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 79feeb81b..000000000 --- a/.eslintignore +++ /dev/null @@ -1,10 +0,0 @@ -node_modules/ -jest.config.js -*.story.js -*.stories.js -*.mock.js -packages/**/lib/**/*.js -packages/**/umd/**/*.js -story-helpers/ -scripts/ -cypress/ diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100755 index c8e161ee2..000000000 --- a/.eslintrc.js +++ /dev/null @@ -1,180 +0,0 @@ -module.exports = { - parser: "hermes-eslint", - parserOptions: { - ecmaVersion: 2018, - sourceType: "module", - ecmaFeatures: { - jsx: true, - }, - - // typescript-eslint specific options - warnOnUnsupportedTypeScriptVersion: true, - }, - "env": { - "es6": true, - "node": true, - "jest": true, - "browser": true, - "commonjs": true - }, - "extends": ["eslint:recommended", "plugin:jsx-a11y/recommended", "plugin:storybook/recommended"], - "globals": { - "ENV": true, - "globalThis": false, - }, - "plugins": ["import", "react", "jsx-a11y", "react-hooks",, "no-async"], - "settings": { - react: { - version: "detect", - "flowVersion": "0.218" - }, - "import/resolver": "webpack", - "import/core-modules": ["fs", "path", "os"] - }, - "rules": { - "react-hooks/rules-of-hooks": 2, - "react-hooks/exhaustive-deps": 2, - "jsx-a11y/href-no-hash": 0, - "quotes": [2, "double", { - "allowTemplateLiterals": true - }], - "strict": 0, - "no-unused-vars": [2, { - "vars": "all", - "args": "none" - }], - "eqeqeq": 2, - "no-var": 2, - "no-process-exit": 0, - "no-underscore-dangle": 0, - "no-loop-func": 0, - "no-console": 2, - "key-spacing": 0, - "no-mixed-spaces-and-tabs": [2, "smart-tabs"], - "semi": [2, "always"], - "no-trailing-spaces": [2, { - "skipBlankLines": false - }], - "camelcase": [1, { - "properties": "never" - }], - "curly": 2, - "object-curly-spacing": [2, "always"], - "react/jsx-no-bind": 2, - "react/require-render-return": 2, - "react/jsx-boolean-value": 2, - "react/jsx-key": 2, - "react/jsx-uses-vars": 1, - "react/jsx-uses-react": 1, - "react/prefer-es6-class": 2, - "react/jsx-pascal-case": 2, - "react/no-direct-mutation-state": 2, - "react/react-in-jsx-scope": 2, - "react/jsx-no-duplicate-props": 2, - "react/no-deprecated": 2, - "react/jsx-no-undef": 2, - "react/no-unknown-property": 2, - "react/prop-types": 0, - "react/jsx-quotes": 0, - "react/boolean-prop-naming": 2, - "react/jsx-closing-bracket-location": 0, - "react/jsx-equals-spacing": [1, "never"], - "jsx-quotes": 0, - "react/jsx-sort-prop-types": 0, - "react/jsx-filename-extension": 0, - "react/forbid-prop-types": 0, - "react/display-name": 0, - "react/no-unused-prop-types": 0, - "react/require-default-props": 0, - "react/sort-comp": 0, - "jsx-a11y/click-events-have-key-events": 0, - "jsx-a11y/no-noninteractive-tabindex": 0, - "jsx-a11y/no-interactive-element-to-noninteractive-role": 0, - "jsx-a11y/no-noninteractive-element-to-interactive-role": 0, - "jsx-a11y/no-noninteractive-element-interactions": 0, - "jsx-a11y/no-onchange": 0, - "jsx-a11y/label-has-for": [1, { - "components": ["Label"], - "required": { - "every": ["nesting", "id"] - }, - "allowChildren": true - }], - "no-duplicate-imports": 0, - "import/no-extraneous-dependencies": [2, { - "devDependencies": ["!(src|lib)/**"], - "optionalDependencies": false, - "peerDependencies": ["packages/**/src/**", "packages/**/*.stories.js"] - }], - "import/no-unresolved": 0, - "import/no-named-as-default": 0, - "import/extensions": 0, - "import/no-dynamic-require": 0, - "import/no-named-as-default-member": 1, - "import/prefer-default-export": 0, - "import/no-webpack-loader-syntax": 0, - "import/no-duplicates": 2, - "jsx-a11y/no-static-element-interactions": 0, - "jsx-a11y/alt-text": 0, - "jsx-a11y/media-has-caption": 0, - "jsx-a11y/anchor-is-valid": 1, - "max-len": [2, 155], - "no-async/no-async": 2 - }, - "overrides": [ - { - "files": ["*.js", "*.jsx"], - extends: [ "plugin:ft-flow/recommended"], - "plugins": [ "ft-flow"], - }, - { - "files": ["*.ts", "*.tsx"], - "parser": "@typescript-eslint/parser", - "parserOptions": { - "ecmaFeatures": { - "jsx": true - }, - "project": "tsconfig.json", - "tsconfigRootDir": "." - }, - "plugins": ["@typescript-eslint"], - "extends": ["eslint:recommended", "plugin:@typescript-eslint/eslint-recommended", "plugin:@typescript-eslint/recommended"], - rules: { - "import/no-extraneous-dependencies": 0, - "@typescript-eslint/no-explicit-any": 0, - "@typescript-eslint/consistent-type-assertions": "warn", - "@typescript-eslint/no-redeclare": "warn", - "no-console": 0, - "no-async/no-async": 0 - } - }, - { - "files": ["*.test.js", "*.test.jsx", "*.mock.jsx"], - "plugins": ["vitest"], - "env": {}, - "globals": { - "clearViMocks": "readonly", - "jsdom": "readonly", - "vi": "readonly", - "render": "readonly", - "userEvent": "readonly", - "renderHook": "readonly", - "renderHookWithError": "readonly", - }, - "extends": ["plugin:vitest/recommended"], - "rules": { - "no-empty": 0, - "import/first": 0, - "no-new-object": 0, - "no-mixed-spaces-and-tabs": 0, - "object-curly-spacing": 0, - "no-unexpected-multiline": 0, - "react/jsx-no-bind": 0, - "vitest/valid-expect": 0, - "vitest/expect-expect": 2, - "vitest/no-commented-out-tests": 0, - "no-async/no-async": 0 - } - } - ] -}; diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 000000000..cdd49e3ba --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,245 @@ +import globals from "globals"; +import js from "@eslint/js"; +import ts from "typescript-eslint"; +import hermesParser from "hermes-eslint"; +import importPlugin from "eslint-plugin-import"; +import react from "eslint-plugin-react"; +import jsxA11Y from "eslint-plugin-jsx-a11y"; +import reactHooks from "eslint-plugin-react-hooks"; +import noAsync from "eslint-plugin-no-async"; +import ftFlow from "eslint-plugin-ft-flow"; +import vitest from "eslint-plugin-vitest"; + +const JS_RULES_OVERRIDES = { + quotes: [2, "double", { + allowTemplateLiterals: true, + }], + strict: 0, + "no-unused-vars": [2, { + vars: "all", + args: "none", + }], + "max-len": [2, 155], + eqeqeq: 2, + "no-var": 2, + "no-process-exit": 0, + "no-underscore-dangle": 0, + "no-loop-func": 0, + "no-console": 2, + "key-spacing": 0, + "no-mixed-spaces-and-tabs": [2, "smart-tabs"], + semi: [2, "always"], + + "no-trailing-spaces": [2, { + skipBlankLines: false, + }], + + camelcase: [1, { + properties: "never", + }], + + curly: 2, + "object-curly-spacing": [2, "always"], + "no-duplicate-imports": 0, + + "import/no-extraneous-dependencies": [2, { + devDependencies: ["!(src|lib)/**"], + optionalDependencies: false, + peerDependencies: ["packages/**/src/**", "packages/**/*.stories.js"], + }], + + "import/no-unresolved": 0, + "import/no-named-as-default": 0, + "import/extensions": 0, + "import/no-dynamic-require": 0, + "import/no-named-as-default-member": 1, + "import/prefer-default-export": 0, + "import/no-webpack-loader-syntax": 0, + "import/no-duplicates": 2, +}; + +const REACT_RULES_OVERRIDES = { + "react-hooks/rules-of-hooks": 2, + "react-hooks/exhaustive-deps": 2, + "jsx-a11y/href-no-hash": 0, + "react/jsx-no-bind": 2, + "react/require-render-return": 2, + "react/jsx-boolean-value": 2, + "react/jsx-key": 2, + "react/jsx-uses-vars": 1, + "react/jsx-uses-react": 1, + "react/prefer-es6-class": 2, + "react/jsx-pascal-case": 2, + "react/no-direct-mutation-state": 2, + "react/react-in-jsx-scope": 2, + "react/jsx-no-duplicate-props": 2, + "react/no-deprecated": 2, + "react/jsx-no-undef": 2, + "react/no-unknown-property": 2, + "react/prop-types": 0, + "react/jsx-quotes": 0, + "react/boolean-prop-naming": 2, + "react/jsx-closing-bracket-location": 0, + "react/jsx-equals-spacing": [1, "never"], + "jsx-quotes": 0, + "react/jsx-sort-prop-types": 0, + "react/jsx-filename-extension": 0, + "react/forbid-prop-types": 0, + "react/display-name": 0, + "react/no-unused-prop-types": 0, + "react/require-default-props": 0, + "react/sort-comp": 0, + "jsx-a11y/click-events-have-key-events": 0, + "jsx-a11y/no-noninteractive-tabindex": 0, + "jsx-a11y/no-interactive-element-to-noninteractive-role": 0, + "jsx-a11y/no-noninteractive-element-to-interactive-role": 0, + "jsx-a11y/no-noninteractive-element-interactions": 0, + "jsx-a11y/no-onchange": 0, + "jsx-a11y/label-has-for": [1, { + components: ["Label"], + required: { + every: ["nesting", "id"], + }, + allowChildren: true, + }], + "jsx-a11y/no-static-element-interactions": 0, + "jsx-a11y/alt-text": 0, + "jsx-a11y/media-has-caption": 0, + "jsx-a11y/anchor-is-valid": 1, +}; + +const JS_LANGUAGE_OPTIONS = { + parser: hermesParser, + + globals: { + ...globals.node, + ...globals.jest, + ...globals.browser, + ...globals.commonjs, + ENV: true, + globalThis: false, + }, + + parserOptions: { + "ecmaFeatures": { + "jsx": true + } + }, + + ecmaVersion: "latest", + sourceType: "module", +}; + +const SHARED_SETTINGS = { + ...ftFlow.configs.recommended.settings, + react: { + version: "detect", + flowVersion: "0.245", + }, +}; + +const TS_CONFIG = ts.config( + js.configs.recommended, + ...ts.configs.recommended, +).reduce((res, config) => { + res.rules = { + ...res.rules, + ...config.rules, + }; + res.languageOptions = { + ...res.languageOptions, + ...config.languageOptions, + }; + res.plugins = { + ...res.plugins, + ...config.plugins, + } + + return res; +}, { rules: {}, languageOptions: {}, plugins: {} }); + +export default [ + //Ignores + { + ignores: ["**/lib/**", "**/dist/**", "**/*.story.js", "**/*.stories.js"], + }, + + //Source Code (JS/React) + { + ...js.configs.recommended, + + files: ["**/*.js", "**/*.jsx"], + ignores: ["**/*.test.js", "**/*.test.jsx", "**/*.mock.js", "**/*.mock.jsx"], + + "plugins": { + "ft-flow": ftFlow, + react, + "react-hooks": reactHooks, + "jsx-a11y": jsxA11Y, + "no-async": noAsync, + import: importPlugin, + }, + + languageOptions: { + ...JS_LANGUAGE_OPTIONS, + }, + + settings: { + ...SHARED_SETTINGS, + "ft-flow": { + "onlyFilesWithFlowAnnotation": true, + } + }, + + rules: { + ...react.configs.recommended.rules, + ...jsxA11Y.configs.recommended.rules, + ...reactHooks.configs.recommended.rules, + ...ftFlow.configs.recommended.rules, + ...importPlugin.flatConfigs.recommended.rules, + + ...JS_RULES_OVERRIDES, + ...REACT_RULES_OVERRIDES, + + "no-async/no-async": 2, + }, + }, + + //Unit Tests (VITEST) + { + files: ["**/*.test.js", "**/*.test.jsx", "*.mock.jsx"], + + "plugins": { + vitest, + import: importPlugin, + }, + + languageOptions: { + ...JS_LANGUAGE_OPTIONS, + }, + + settings: { + ...SHARED_SETTINGS, + }, + + rules: { + ...JS_RULES_OVERRIDES, + } + }, + + //Types (Typescript) + { + ...TS_CONFIG, + files: ["packages/**/*.ts", "packages/**/*.tsx"], + + rules: { + ...TS_CONFIG.rules, + "import/no-extraneous-dependencies": 0, + "@typescript-eslint/no-explicit-any": 0, + "@typescript-eslint/consistent-type-assertions": "warn", + "@typescript-eslint/no-redeclare": "warn", + "no-console": 0, + "no-async/no-async": 0 + }, + }, +]; diff --git a/package.json b/package.json index 808d82df0..1b3179a48 100644 --- a/package.json +++ b/package.json @@ -17,8 +17,7 @@ "sb:serve": "http-server ./.sb-static -p 8001", "start": "pnpm sb:start", "flow": "flow --show-all-errors", - "lint": "eslint ./packages --cache", - "lint:nocache": "eslint ./packages", + "lint": "eslint ./packages", "ensureTypes": "node scripts/ensureTypes.mjs", "types": "pnpm ensureTypes && tsc --outDir ./tstest", "test": "pnpm flow && pnpm lint && pnpm vitest:cov && pnpm types", @@ -26,7 +25,7 @@ "vitest:cov": "pnpm vitest --coverage --run", "vitest:ci": "pnpm vitest:cov --reporter=junit --reporter=verbose --outputFile.junit=reports/junit/js-test-results.xml", "ci-flow": "pnpm flow", - "ci-lint": "pnpm lint:nocache", + "ci-lint": "pnpm lint", "ci-types": "pnpm types", "test:ci": "concurrently -s all --kill-others-on-fail \"pnpm:ci-* \"", "deps:serve": "concurrently --kill-others \"pnpm sb:serve\" \"pnpm bundle:serve\"", @@ -60,7 +59,6 @@ "@actions/github": "^6.0.0", "@babel/cli": "^7.25.6", "@babel/core": "^7.25.2", - "@babel/eslint-parser": "^7.25.1", "@babel/plugin-proposal-export-default-from": "^7.24.7", "@babel/plugin-proposal-function-bind": "^7.24.7", "@babel/plugin-transform-runtime": "^7.25.4", @@ -72,6 +70,7 @@ "@commitlint/cli": "^19.5.0", "@commitlint/config-conventional": "^19.5.0", "@commitlint/config-lerna-scopes": "^19.5.0", + "@eslint/js": "^9.14.0", "@monorepo-utils/package-utils": "^2.10.4", "@storybook/addon-docs": "^8.4.2", "@storybook/addon-essentials": "^8.4.2", @@ -88,8 +87,6 @@ "@testing-library/react": "^16.0.0", "@testing-library/user-event": "^14.5.2", "@types/react": "^18.3.3", - "@typescript-eslint/eslint-plugin": "^7.16.1", - "@typescript-eslint/parser": "^7.16.1", "@vitest/coverage-istanbul": "^2.0.5", "@vitest/coverage-v8": "^2.1.4", "@vitest/ui": "^2.1.4", @@ -111,23 +108,22 @@ "cypress-intercept-formdata": "^0.6.0", "cypress-mochawesome-reporter": "^3.8.2", "cypress-multi-reporters": "^1.6.4", - "eslint": "^8.57.0", - "eslint-import-resolver-webpack": "^0.13.8", - "eslint-plugin-flowtype": "^8.0.3", + "eslint": "^9.14.0", "eslint-plugin-ft-flow": "^3.0.11", - "eslint-plugin-import": "^2.29.1", + "eslint-plugin-import": "^2.31.0", "eslint-plugin-jsx-a11y": "^6.10.2", - "eslint-plugin-no-async": "^1.1.0", - "eslint-plugin-react": "^7.35.0", - "eslint-plugin-react-hooks": "^4.6.2", + "eslint-plugin-no-async": "^1.2.0", + "eslint-plugin-react": "^7.37.2", + "eslint-plugin-react-hooks": "^5.0.0", "eslint-plugin-storybook": "^0.11.0", - "eslint-plugin-vitest": "^0.3.22", + "eslint-plugin-vitest": "^0.5.4", "execa": "^9.3.0", "filesize": "^10.1.4", "flow-bin": "^0.245.1", "fs-extra": "^11.2.0", "glob": "^11.0.0", - "hermes-eslint": "^0.23.0", + "globals": "^15.12.0", + "hermes-eslint": "^0.25.0", "html-webpack-plugin": "^5.6.0", "http-server": "^14.1.1", "husky": "^9.1.1", @@ -149,6 +145,7 @@ "storybook": "^8.4.2", "styled-components": "^6.1.12", "typescript": "^5.3.3", + "typescript-eslint": "^8.13.0", "vite": "^5.4.10", "vite-plugin-babel": "^1.2.0", "vitest": "^2.1.4", diff --git a/packages/core/abort/src/tests/abort.test.js b/packages/core/abort/src/tests/abort.test.js index 43a384af8..cf734b5f2 100644 --- a/packages/core/abort/src/tests/abort.test.js +++ b/packages/core/abort/src/tests/abort.test.js @@ -176,7 +176,7 @@ describe("abort tests", () => { }, }, { "u1": abort, "u2": abort, "u5": abort }, - {"b1": ["u1", "u2", "u3"], "b2": ["u4"] }, + { "b1": ["u1", "u2", "u3"], "b2": ["u4"] }, finalizeMock, { fastAbortThreshold: 5 } ); @@ -212,7 +212,7 @@ describe("abort tests", () => { }, }, { "u1": abort, "u2": abort }, - {"b1": ["u1", "u2", "u3"], "b2": ["u4"] }, + { "b1": ["u1", "u2", "u3"], "b2": ["u4"] }, finalizeMock, { fastAbortThreshold: 4 }); expect(isFast).toBe(true); diff --git a/packages/core/chunked-sender/src/chunkedSender/tests/createChunkedSender.test.js b/packages/core/chunked-sender/src/chunkedSender/tests/createChunkedSender.test.js index 1cb589700..ddd27dec2 100644 --- a/packages/core/chunked-sender/src/chunkedSender/tests/createChunkedSender.test.js +++ b/packages/core/chunked-sender/src/chunkedSender/tests/createChunkedSender.test.js @@ -51,7 +51,7 @@ describe("chunkedSender index tests", () => { }); it("should use default send for 0 size file", () => { - const items = [{file: {size: 0}}]; + const items = [{ file: { size: 0 } }]; doChunkedSend(items, {}); expect(send).toHaveBeenCalledWith(items, url, sendOptions, onProgress); expect(processChunks).not.toHaveBeenCalled(); diff --git a/packages/core/chunked-sender/src/chunkedSender/tests/processChunks.test.js b/packages/core/chunked-sender/src/chunkedSender/tests/processChunks.test.js index 7d8c749b6..57e441119 100644 --- a/packages/core/chunked-sender/src/chunkedSender/tests/processChunks.test.js +++ b/packages/core/chunked-sender/src/chunkedSender/tests/processChunks.test.js @@ -26,7 +26,7 @@ describe("processChunks tests", () => { }); it("should create state and process chunks", () => { - const item = {file: {name: "file"}}, + const item = { file: { name: "file" } }, chunkedOptions = { parallel: true }, url = "test.com", sendOptions = {}, @@ -74,7 +74,7 @@ describe("processChunks tests", () => { startByte: 4, }); - const item = { file: { size: 1000 }}; + const item = { file: { size: 1000 } }; const onProgress = vi.fn(); const trigger = vi.fn(); @@ -84,7 +84,7 @@ describe("processChunks tests", () => { const onChunkProgress = sendChunks.mock.calls[0][2]; - onChunkProgress({ loaded: 200 }, [{id: "c1"}]); + onChunkProgress({ loaded: 200 }, [{ id: "c1" }]); expect(onProgress).toHaveBeenCalledWith({ loaded: 204, @@ -92,7 +92,7 @@ describe("processChunks tests", () => { }, [item]); vi.runAllTimers(); - onChunkProgress({ loaded: 300 }, [{id: "c1"}]); + onChunkProgress({ loaded: 300 }, [{ id: "c1" }]); expect(onProgress).toHaveBeenCalledWith({ loaded: 304, @@ -100,7 +100,7 @@ describe("processChunks tests", () => { }, [item]); vi.runAllTimers(); - onChunkProgress({ loaded: 300 }, [{id: "c2"}]); + onChunkProgress({ loaded: 300 }, [{ id: "c2" }]); expect(onProgress).toHaveBeenCalledWith({ loaded: 604, diff --git a/packages/core/chunked-sender/src/chunkedSender/tests/sendChunk.test.js b/packages/core/chunked-sender/src/chunkedSender/tests/sendChunk.test.js index 25de91011..6a44798c5 100644 --- a/packages/core/chunked-sender/src/chunkedSender/tests/sendChunk.test.js +++ b/packages/core/chunked-sender/src/chunkedSender/tests/sendChunk.test.js @@ -22,7 +22,7 @@ describe("sendChunk tests", () => { const onProgress = vi.fn(); beforeAll(()=>{ - unwrap.mockReturnValue({unwrapped: true}); + unwrap.mockReturnValue({ unwrapped: true }); }); beforeEach(() => { @@ -39,9 +39,9 @@ describe("sendChunk tests", () => { const url = "test.com", chunk = { id: "c1", start: 1, end: 10, data }, chunks = [{}, {}, chunk], - fileData = data || {size: 10}, + fileData = data || { size: 10 }, file = { size: 400 }, - chunkItem = {id: "ci-1"}, + chunkItem = { id: "ci-1" }, sendOptions = { method: "POST", headers: { "x-test": 123 } }; if (!data) { @@ -92,7 +92,7 @@ describe("sendChunk tests", () => { } expect(triggerUpdater).toHaveBeenCalledWith(trigger, CHUNK_EVENTS.CHUNK_START, { - item: {"unwrapped": true}, + item: { "unwrapped": true }, chunk: { id: chunk.id, start: chunk.start, @@ -108,21 +108,21 @@ describe("sendChunk tests", () => { }); return { - result, - sendResult, - }; + result, + sendResult, + }; }; - it.each([ - null, - {size: 9}, + it.each([ + null, + { size: 9 }, ])("should send chunk with data = %s", async (data) => { const { result } = await testSendChunk(data); expect(result).toEqual({ xhrSend: true }); }); it("should use updated values from chunk start event updater", async () => { - const { result } = await testSendChunk({size: 9}, { + const { result } = await testSendChunk({ size: 9 }, { url: "updated.com", sendOptions: { headers: { @@ -138,7 +138,7 @@ describe("sendChunk tests", () => { }); it("should skip chunk when event updater returns false", async() => { - const { result, sendResult } = await testSendChunk({size: 9}, false); + const { result, sendResult } = await testSendChunk({ size: 9 }, false); expect(xhrSend).not.toHaveBeenCalled(); @@ -159,7 +159,7 @@ describe("sendChunk tests", () => { describe("abort tests", () => { const url = "test.com", - data = {size: 9}, + data = { size: 9 }, chunk = { id: "c1", start: 1, end: 10, data }, file = { size: 400 }, sendOptions = { method: "POST", headers: { "x-test": 123 } }; diff --git a/packages/core/chunked-sender/src/tests/chunkedEnhancer.test.js b/packages/core/chunked-sender/src/tests/chunkedEnhancer.test.js index 54884b064..7ba944403 100644 --- a/packages/core/chunked-sender/src/tests/chunkedEnhancer.test.js +++ b/packages/core/chunked-sender/src/tests/chunkedEnhancer.test.js @@ -8,7 +8,7 @@ describe("chunkedEnhancer tests", () => { const options = { chunkSize: 111 }; const uploader = { update: vi.fn() }; - createChunkedSender.mockReturnValueOnce({send: "chunkedSend"}); + createChunkedSender.mockReturnValueOnce({ send: "chunkedSend" }); const enhancer = getChunkedEnhancer(options); const result = enhancer(uploader, "trigger"); diff --git a/packages/core/life-events/src/tests/utils.test.js b/packages/core/life-events/src/tests/utils.test.js index 34d559b96..47f5aa396 100644 --- a/packages/core/life-events/src/tests/utils.test.js +++ b/packages/core/life-events/src/tests/utils.test.js @@ -1,4 +1,4 @@ -import {isUndefined, validateFunction } from "../utils"; +import { isUndefined, validateFunction } from "../utils"; describe("utils tests", () => { diff --git a/packages/core/mock-sender/src/tests/getMockSenderEnhancer.test.js b/packages/core/mock-sender/src/tests/getMockSenderEnhancer.test.js index 61d202c36..24393f8b4 100644 --- a/packages/core/mock-sender/src/tests/getMockSenderEnhancer.test.js +++ b/packages/core/mock-sender/src/tests/getMockSenderEnhancer.test.js @@ -5,12 +5,12 @@ vi.mock("../mockSender"); describe("getMockSenderEnhancer tests", () => { it("should create enhancer", () => { - createMockSender.mockReturnValueOnce({send: "mock"}); + createMockSender.mockReturnValueOnce({ send: "mock" }); const uploader = { update: vi.fn() }; const enhancer = getMockSenderEnhancer({ test: true }); expect(enhancer(uploader)).toBe(uploader); - expect(uploader.update).toHaveBeenCalledWith({send: "mock"}); + expect(uploader.update).toHaveBeenCalledWith({ send: "mock" }); }); }); diff --git a/packages/core/mock-sender/src/tests/mockSender.test.js b/packages/core/mock-sender/src/tests/mockSender.test.js index 7d5d5d449..389786d18 100644 --- a/packages/core/mock-sender/src/tests/mockSender.test.js +++ b/packages/core/mock-sender/src/tests/mockSender.test.js @@ -202,7 +202,7 @@ describe("mockSender tests", () => { }); it("should add sendOptions to response data", async () => { - const sendOptions = {params: [1,2]}; + const sendOptions = { params: [1,2] }; const result = await doMockSend(null, null, false, false, sendOptions ).request; const response = result.response; diff --git a/packages/core/raw-uploader/src/types.js b/packages/core/raw-uploader/src/types.js index 1be7db67e..b5d4da971 100644 --- a/packages/core/raw-uploader/src/types.js +++ b/packages/core/raw-uploader/src/types.js @@ -2,7 +2,6 @@ import type { Trigger, UploadInfo, UploadOptions } from "@rpldy/shared"; import type { OffMethod, OnAndOnceMethod } from "@rpldy/life-events"; -// eslint-disable-next-line no-use-before-define export type UploaderEnhancer = (uploader: UploaderType, trigger: Trigger) => UploaderType; export type RawCreateOptions = {| diff --git a/packages/core/safe-storage/src/safeStorageCreator.js b/packages/core/safe-storage/src/safeStorageCreator.js index 6d1cf813c..0c14da899 100644 --- a/packages/core/safe-storage/src/safeStorageCreator.js +++ b/packages/core/safe-storage/src/safeStorageCreator.js @@ -14,7 +14,7 @@ const safeStorageCreator = (storageType: string): SafeStorage => { isSupported = true; } } - catch(ex){ + catch(ex){ // eslint-disable-line //fail silently } }; diff --git a/packages/core/sender/src/xhrSender/tests/xhrSender.test.js b/packages/core/sender/src/xhrSender/tests/xhrSender.test.js index 731cbb86b..5e71bf26c 100644 --- a/packages/core/sender/src/xhrSender/tests/xhrSender.test.js +++ b/packages/core/sender/src/xhrSender/tests/xhrSender.test.js @@ -333,7 +333,7 @@ describe("xhrSender tests", () => { it("issueRequest should accept override params", () => { const requestUrl = "override.com", requestDate = "override data", - requestOptions = {test: "override options"}; + requestOptions = { test: "override options" }; const send = getXhrSend({ preRequestHandler: (issueRequest) => { diff --git a/packages/core/shared/src/request/parseResponseHeaders.js b/packages/core/shared/src/request/parseResponseHeaders.js index 73213c6cd..5f75a60a8 100644 --- a/packages/core/shared/src/request/parseResponseHeaders.js +++ b/packages/core/shared/src/request/parseResponseHeaders.js @@ -13,7 +13,7 @@ const parseResponseHeaders = (xhr: XMLHttpRequest): ?Headers => { res[key] = val; return res; }, ({}: { [string]: any })); - } catch (ex) { + } catch (ex) { // eslint-disable-line debugLog("uploady.request: failed to read response headers", xhr); } diff --git a/packages/core/shared/src/tests/batchItem.test.js b/packages/core/shared/src/tests/batchItem.test.js index 1d30196c7..5217b955f 100644 --- a/packages/core/shared/src/tests/batchItem.test.js +++ b/packages/core/shared/src/tests/batchItem.test.js @@ -46,7 +46,7 @@ describe("create batchItem tests", () => { }); it("should recycle file batch item", () => { - const file = { name: "test", type: "image/jpg"}; + const file = { name: "test", type: "image/jpg" }; const fileItem = createItem(file, "b1"); fileItem.state = "DONE"; diff --git a/packages/core/shared/src/utils/isEmpty.js b/packages/core/shared/src/utils/isEmpty.js index 8b5d8437c..532e8ece1 100644 --- a/packages/core/shared/src/utils/isEmpty.js +++ b/packages/core/shared/src/utils/isEmpty.js @@ -2,7 +2,7 @@ type Empty = null | void; -function isEmpty (val: any): val is Empty { // eslint-disable-line +function isEmpty (val: any): val is Empty { return (val === null || val === undefined); } diff --git a/packages/core/shared/src/utils/tests/merge.test.js b/packages/core/shared/src/utils/tests/merge.test.js index 1d78505df..3a09eb3e4 100644 --- a/packages/core/shared/src/utils/tests/merge.test.js +++ b/packages/core/shared/src/utils/tests/merge.test.js @@ -101,15 +101,15 @@ describe("merge (deep) tests", () => { expect(Array.isArray(a.b)).toBe(true); }); - it("should merge array from source", () => { + it("should merge array from source", () => { - const a = {}; - const b = {arr: [1,2,3]}; + const a = {}; + const b = { arr: [1, 2, 3] }; - const result = merge(a, b); + const result = merge(a, b); - expect(Array.isArray(result.arr)).toBe(true); - }); + expect(Array.isArray(result.arr)).toBe(true); + }); it("should merge multiple levels from multiple objects", () => { @@ -243,7 +243,7 @@ describe("merge (deep) tests", () => { c: undefined, }; - const result = getMerge({undefinedOverwrites: true})(a, b); + const result = getMerge({ undefinedOverwrites: true })(a, b); expect(result).toBe(a); expect(a).toEqual(b); @@ -295,7 +295,7 @@ describe("merge (deep) tests", () => { } }; - const result = getMerge({undefinedOverwrites: true})({}, a, b, c); + const result = getMerge({ undefinedOverwrites: true })({}, a, b, c); expect(result).toEqual({ lll: "bbb", diff --git a/packages/core/shared/src/utils/tests/pick.test.js b/packages/core/shared/src/utils/tests/pick.test.js index d1fff38af..a75b049dc 100644 --- a/packages/core/shared/src/utils/tests/pick.test.js +++ b/packages/core/shared/src/utils/tests/pick.test.js @@ -16,10 +16,10 @@ describe("pick tests", () => { foo: "aaa", bar: "bbb", test: true, - more: {level: 2} + more: { level: 2 } }, ["foo", "more"])).toEqual({ foo: "aaa", - more: {level: 2} + more: { level: 2 } }); }); }); diff --git a/packages/core/simple-state/src/tests/unwrap.test.js b/packages/core/simple-state/src/tests/unwrap.test.js index 76fe2de49..36b5e6002 100644 --- a/packages/core/simple-state/src/tests/unwrap.test.js +++ b/packages/core/simple-state/src/tests/unwrap.test.js @@ -9,14 +9,14 @@ describe("unwrap integration tests", () => { const getBatch = () =>({ id: "1", - items: [{id: "i1"}, {id: "i2"}], + items: [{ id: "i1" }, { id: "i2" }], data: { test: true }, [TEST_SYM]: true, }); - const {state , update} = createState({ + const { state , update } = createState({ batches: {} }); diff --git a/packages/core/tus-sender/src/featureDetection.js b/packages/core/tus-sender/src/featureDetection.js index 4775f65cf..90a7ffeb7 100644 --- a/packages/core/tus-sender/src/featureDetection.js +++ b/packages/core/tus-sender/src/featureDetection.js @@ -143,7 +143,7 @@ const handleStoredValue = (url: string, tusState: TusState, storedFd: string): ? } else{ parsed = null; } - } catch (ex) { + } catch (ex) { // eslint-disable-line logger.debugLog(`tusSender.featureDetection: failed to load feature detection data from session storage`); } diff --git a/packages/core/tus-sender/src/tests/utils.test.js b/packages/core/tus-sender/src/tests/utils.test.js index 333ced0c3..deeabce89 100644 --- a/packages/core/tus-sender/src/tests/utils.test.js +++ b/packages/core/tus-sender/src/tests/utils.test.js @@ -1,5 +1,5 @@ import * as utils from "../utils"; -import {DEFAULT_OPTIONS} from "../defaults"; +import { DEFAULT_OPTIONS } from "../defaults"; describe("utils tests", () => { describe("getMandatoryOptions tests", () => { diff --git a/packages/core/tus-sender/src/tusSender/initTusUpload/tests/createUpload.test.js b/packages/core/tus-sender/src/tusSender/initTusUpload/tests/createUpload.test.js index 261f30f1b..a70ee3ba6 100644 --- a/packages/core/tus-sender/src/tusSender/initTusUpload/tests/createUpload.test.js +++ b/packages/core/tus-sender/src/tusSender/initTusUpload/tests/createUpload.test.js @@ -22,7 +22,7 @@ describe("createUpload tests", () => { ["https://www.test.com/tus/", "/upload/123"], ])("should combine createUrl %s with absolute location %s", (url, loc) => { expect(resolveUploadUrl(url, loc)) - .toBe("https://www.test.com/upload/123"); + .toBe("https://www.test.com/upload/123"); }); it.each([ @@ -276,7 +276,7 @@ describe("createUpload tests", () => { const { url, state, - } = await doCreateTest({metadata: {test: 123}}); + } = await doCreateTest({ metadata: { test: 123 } }); expect(request).toHaveBeenCalledWith(url, null, { method: "POST", headers: { @@ -294,7 +294,7 @@ describe("createUpload tests", () => { const { url, state, - } = await doCreateTest({metadata: {test: 123}}, "pId1"); + } = await doCreateTest({ metadata: { test: 123 } }, "pId1"); expect(request).toHaveBeenCalledWith(url, null, { method: "POST", headers: { @@ -312,7 +312,7 @@ describe("createUpload tests", () => { it("should handle invalid offset response header", async () => { const { requestResult - } = await doCreateTest({sendDataOnCreate: true, resOffset: "bla" }); + } = await doCreateTest({ sendDataOnCreate: true, resOffset: "bla" }); expect(requestResult).toEqual({ isDone: false, diff --git a/packages/core/uploader/src/queue/tests/batchHelpers.test.js b/packages/core/uploader/src/queue/tests/batchHelpers.test.js index 7da80ada2..117d5b77d 100644 --- a/packages/core/uploader/src/queue/tests/batchHelpers.test.js +++ b/packages/core/uploader/src/queue/tests/batchHelpers.test.js @@ -553,7 +553,7 @@ describe("batchHelpers tests", () => { const queueState = getQueueState({ batches: { - b1: {batch, batchOptions: {}}, + b1: { batch, batchOptions: {} }, }, items: { u1: { test: 1 }, @@ -602,9 +602,9 @@ describe("batchHelpers tests", () => { items: { ...items, //item from different batch - i4: {id: "i4", batchId: "b3"}, + i4: { id: "i4", batchId: "b3" }, //intentionally using batchId: b1 but not in batch.items - i5: {id: "i5", batchId: "b1"}, + i5: { id: "i5", batchId: "b1" }, }, batches: { b1: { @@ -632,7 +632,7 @@ describe("batchHelpers tests", () => { const updatedBatch = batchHelpers.getBatchFromState(qState.getState(), "b1"); expect(updatedBatch.items).toHaveLength(2); - expect(updatedBatch.items.find(({id}) => id === item.id)).toBeUndefined(); + expect(updatedBatch.items.find(({ id }) => id === item.id)).toBeUndefined(); expect(qState.getState().batches["b1"].itemBatchOptions[item.id]).toBeUndefined(); expect(qState.getState().batches["b1"].itemBatchOptions["i1"]).toBeDefined(); }); @@ -826,7 +826,7 @@ describe("batchHelpers tests", () => { it("should prepare pending for upload with Options", () => { const queue = getPendingQueue(); - batchHelpers.preparePendingForUpload(queue, { test: false}); + batchHelpers.preparePendingForUpload(queue, { test: false }); expect(queue.getState().batches.b2.batch.state).toBe(BATCH_STATES.ADDED); expect(queue.getState().batches.b2.batchOptions.test).toBe(false); diff --git a/packages/core/uploader/src/queue/tests/preSendPrepare.test.js b/packages/core/uploader/src/queue/tests/preSendPrepare.test.js index 599fb6750..83460a17c 100644 --- a/packages/core/uploader/src/queue/tests/preSendPrepare.test.js +++ b/packages/core/uploader/src/queue/tests/preSendPrepare.test.js @@ -114,7 +114,7 @@ describe("preSendPrepare tests", () => { const result = await preparer(queueState, items); expect(result.items).toStrictEqual(newItems); - expect(result.options).toStrictEqual({...batchOptions, ...newOptions}); + expect(result.options).toStrictEqual({ ...batchOptions, ...newOptions }); expect(result.cancelled).toBe(false); expect(triggerUpdater).toHaveBeenCalledWith( @@ -157,7 +157,7 @@ describe("preSendPrepare tests", () => { const result = await preparer(queueState, Object.values(testItems)); - expect(result.options).toStrictEqual({...batchOptions, ...newOptions}); + expect(result.options).toStrictEqual({ ...batchOptions, ...newOptions }); expect(result.cancelled).toBe(false); expect(triggerUpdater).toHaveBeenCalledWith( @@ -192,7 +192,7 @@ describe("preSendPrepare tests", () => { expect(queueState.getState().batches["b1"].itemBatchOptions[items[0].id].destination.url).toBe("b"); expect(queueState.getState().batches["b1"].itemBatchOptions[items[1].id]).toBeUndefined(); - expect(result.options).toStrictEqual({...batchOptions, ...{ destination: { url: "b"} }}); + expect(result.options).toStrictEqual({ ...batchOptions, ...{ destination: { url: "b" } } }); }); it("Preparer should update options without items", async () => { @@ -211,7 +211,7 @@ describe("preSendPrepare tests", () => { const result = await preparer(queueState, items); expect(result.items).toStrictEqual(items); - expect(result.options).toStrictEqual({...batchOptions, ...newOptions}); + expect(result.options).toStrictEqual({ ...batchOptions, ...newOptions }); expect(result.cancelled).toBe(false); expect(triggerUpdater).toHaveBeenCalledWith( diff --git a/packages/core/uploader/src/queue/tests/processBatchItems.test.js b/packages/core/uploader/src/queue/tests/processBatchItems.test.js index ab28ae120..ef397827f 100644 --- a/packages/core/uploader/src/queue/tests/processBatchItems.test.js +++ b/packages/core/uploader/src/queue/tests/processBatchItems.test.js @@ -232,7 +232,7 @@ describe("processBatchItems tests", () => { [{ id: "u1", info: { state: FILE_STATES.CANCELLED, response: "cancel", status: 0 } }, { id: "u2", - info: { state: FILE_STATES.CANCELLED, response: "cancel", status: 0} + info: { state: FILE_STATES.CANCELLED, response: "cancel", status: 0 } }], mockNext); expect(queueState.state.items.u1.abort).toBeUndefined(); diff --git a/packages/core/uploader/src/queue/tests/processQueueNext.test.js b/packages/core/uploader/src/queue/tests/processQueueNext.test.js index b54de720b..ec7ff00e5 100644 --- a/packages/core/uploader/src/queue/tests/processQueueNext.test.js +++ b/packages/core/uploader/src/queue/tests/processQueueNext.test.js @@ -241,7 +241,7 @@ describe("processQueueNext tests", () => { batches: { }, items: { - "u5": {state: FILE_STATES.ADDED} + "u5": { state: FILE_STATES.ADDED } }, activeIds: ["u1"], itemQueue: { "b1": ["u1"], "b2": ["u2"], "b3": ["u3"], "b4": ["u5"], "b5": ["u5"] }, @@ -262,9 +262,9 @@ describe("processQueueNext tests", () => { const queueState = getQueueState({ activeIds: ["u1"], items: { - "u2": {state: FILE_STATES.UPLOADING}, - "u3": {state: FILE_STATES.ABORTED}, - "u4": {state: FILE_STATES.ADDED} + "u2": { state: FILE_STATES.UPLOADING }, + "u3": { state: FILE_STATES.ABORTED }, + "u4": { state: FILE_STATES.ADDED } }, itemQueue: { "b1": ["u1", "u2", "u3", "u4"] }, batchQueue: ["b1"], diff --git a/packages/core/uploader/src/tests/batch.test.js b/packages/core/uploader/src/tests/batch.test.js index 774a5e697..aa4153b31 100644 --- a/packages/core/uploader/src/tests/batch.test.js +++ b/packages/core/uploader/src/tests/batch.test.js @@ -122,7 +122,7 @@ describe("Batch tests", () => { it("should create new batch from existing batch items (retry)", async () => { const files = [ - { file: { name: "test"} }, + { file: { name: "test" } }, { url: "https://url.test" } ]; @@ -145,7 +145,7 @@ describe("Batch tests", () => { }); it("should filter to only the first two items", async () => { - const files = [ {name: "test"}, "123", "456"]; + const files = [ { name: "test" }, "123", "456"]; createBatchItem .mockReturnValueOnce("item1") diff --git a/packages/core/uploader/src/tests/batchItemsSender.test.js b/packages/core/uploader/src/tests/batchItemsSender.test.js index 6ef00a842..ece2c1a73 100644 --- a/packages/core/uploader/src/tests/batchItemsSender.test.js +++ b/packages/core/uploader/src/tests/batchItemsSender.test.js @@ -39,11 +39,11 @@ describe("batchItemsSender tests", () => { { id: "u3" } ]; - const batch = {id: "b1"}; + const batch = { id: "b1" }; const sendFn = options.send || mockSend; - const sendResult = {result: true}; + const sendResult = { result: true }; sendFn.mockReturnValueOnce(sendResult); const sender = createItemsSender(); @@ -123,6 +123,6 @@ describe("batchItemsSender tests", () => { }); it("should use default filesParamName if none provided", () => { - testSend({inputFieldName: null, destination: { filesParamName: null } }); + testSend({ inputFieldName: null, destination: { filesParamName: null } }); }); }); diff --git a/packages/core/uploader/src/tests/utils.test.js b/packages/core/uploader/src/tests/utils.test.js index e8f0c9a06..c02670e47 100644 --- a/packages/core/uploader/src/tests/utils.test.js +++ b/packages/core/uploader/src/tests/utils.test.js @@ -132,7 +132,7 @@ describe("uploader utils tests", () => { .mockReturnValueOnce(true) .mockReturnValueOnce(true); - const unwrapImp = (o) => ({...o}); + const unwrapImp = (o) => ({ ...o }); unwrap.mockImplementationOnce(unwrapImp) .mockImplementationOnce(unwrapImp) @@ -245,7 +245,7 @@ describe("uploader utils tests", () => { it("should return same obj in production", () => { isProduction.mockReturnValueOnce(true); - const obj = {test: true}; + const obj = { test: true }; expect(deepProxyUnwrap(obj)).toBe(obj); }); diff --git a/packages/ui/shared/src/tests/UploadyContext.test.js b/packages/ui/shared/src/tests/UploadyContext.test.js index b78f1bf61..f54faeae2 100644 --- a/packages/ui/shared/src/tests/UploadyContext.test.js +++ b/packages/ui/shared/src/tests/UploadyContext.test.js @@ -46,8 +46,8 @@ describe("UploadyContext tests", () => { it("processPending should call upload on uploader", () => { const contextApi = getTestContext(); - contextApi.processPending({process: true}); - expect(uploader.upload).toHaveBeenCalledWith({process: true}); + contextApi.processPending({ process: true }); + expect(uploader.upload).toHaveBeenCalledWith({ process: true }); }); it("should call abort on uploader", () => { @@ -104,7 +104,7 @@ describe("UploadyContext tests", () => { try { context.showFileUpload(); - } catch (e) { + } catch (e) {// eslint-disable-line } expect(invariant).toHaveBeenCalled(undefined, expect.any(String)); diff --git a/packages/ui/upload-button/src/asUploadButton.js b/packages/ui/upload-button/src/asUploadButton.js index 316dc52e6..c558c2adb 100644 --- a/packages/ui/upload-button/src/asUploadButton.js +++ b/packages/ui/upload-button/src/asUploadButton.js @@ -25,9 +25,10 @@ const asUploadButton = (Component: ComponentType): React$AbstractComponent< onClick={onButtonClick} id={id} className={className} - children={children || text || "Upload"} {...extraProps} - />; + > + {children || text || "Upload"} + ; }; markAsUploadOptionsComponent(AsUploadButton); diff --git a/packages/ui/upload-paste/src/tests/usePasteHandler.test.js b/packages/ui/upload-paste/src/tests/usePasteHandler.test.jsx similarity index 100% rename from packages/ui/upload-paste/src/tests/usePasteHandler.test.js rename to packages/ui/upload-paste/src/tests/usePasteHandler.test.jsx diff --git a/packages/ui/upload-paste/src/tests/usePasteUpload.test.js b/packages/ui/upload-paste/src/tests/usePasteUpload.test.jsx similarity index 98% rename from packages/ui/upload-paste/src/tests/usePasteUpload.test.js rename to packages/ui/upload-paste/src/tests/usePasteUpload.test.jsx index 5d224a249..36a598a51 100644 --- a/packages/ui/upload-paste/src/tests/usePasteUpload.test.js +++ b/packages/ui/upload-paste/src/tests/usePasteUpload.test.jsx @@ -91,11 +91,11 @@ describe("usePasteUpload hook tests", () => { usePasteUpload(props, containerRef); - return <> + return (<>
Click here & Paste a file
- ; + ); }; const { unmount } = render(); diff --git a/packages/ui/upload-paste/src/tests/withPasteUpload.test.js b/packages/ui/upload-paste/src/tests/withPasteUpload.test.jsx similarity index 100% rename from packages/ui/upload-paste/src/tests/withPasteUpload.test.js rename to packages/ui/upload-paste/src/tests/withPasteUpload.test.jsx diff --git a/packages/ui/upload-preview/src/tests/UploadPreview.test.jsx b/packages/ui/upload-preview/src/tests/UploadPreview.test.jsx index 0f0e5e66c..1b6fff7c8 100644 --- a/packages/ui/upload-preview/src/tests/UploadPreview.test.jsx +++ b/packages/ui/upload-preview/src/tests/UploadPreview.test.jsx @@ -58,8 +58,7 @@ describe("UploadPreview tests", () => { it("should render with PreviewComponent from props", () => { const PreviewComp = (props) => { - // eslint-disable-next-line no-unused-vars - const { url, type, isFallback, removePreview, ...previewProps } = props; + const { url, type, ...previewProps } = props; return
{url}
; diff --git a/packages/ui/uploady/Uploady.stories.js b/packages/ui/uploady/Uploady.stories.js index a9e3e66f0..256e1a887 100644 --- a/packages/ui/uploady/Uploady.stories.js +++ b/packages/ui/uploady/Uploady.stories.js @@ -271,11 +271,11 @@ const QueueList = () => { setItems((prev) => [...prev, ...batch.items]); }); - return
    + return (
      {items.map((item) => ( ))} -
    +
); }; export const WithAutoUploadOff: UploadyStory = createUploadyStory( @@ -626,7 +626,7 @@ const renderUploadyAll = ({ enhancer, }; - const uploadUrlLog = react.createElement("div", { children: `about to upload to: ${uploadyProps.destination?.url || "no destination!"}` }) + const uploadUrlLog = react.createElement("div", { children: `about to upload to: ${uploadyProps.destination?.url || "no destination!"}` }); return react.createElement( rpldy.uploady.Uploady, @@ -667,7 +667,7 @@ const UploadButtonWithInvalidPreSend = () => { { ...items[0], id: "invalid-id" }, ...items.slice(1), ] : undefined, - } + }; }); return ; diff --git a/packages/ui/uploady/src/useFileInput.js b/packages/ui/uploady/src/useFileInput.js index 2b1731205..1ac76e383 100644 --- a/packages/ui/uploady/src/useFileInput.js +++ b/packages/ui/uploady/src/useFileInput.js @@ -14,7 +14,6 @@ const getUrl = (form: Element) => { url = url.replace(/\s/g, ""); let path; - // eslint-disable-next-line default-case switch (true) { //if empty, use same url as page case url === "": diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6aece3398..6fa3984fd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -24,9 +24,6 @@ importers: '@babel/core': specifier: ^7.25.2 version: 7.26.0 - '@babel/eslint-parser': - specifier: ^7.25.1 - version: 7.25.9(@babel/core@7.26.0)(eslint@8.57.1) '@babel/plugin-proposal-export-default-from': specifier: ^7.24.7 version: 7.25.9(@babel/core@7.26.0) @@ -60,6 +57,9 @@ importers: '@commitlint/config-lerna-scopes': specifier: ^19.5.0 version: 19.5.0(lerna@8.1.9) + '@eslint/js': + specifier: ^9.14.0 + version: 9.14.0 '@monorepo-utils/package-utils': specifier: ^2.10.4 version: 2.10.4 @@ -108,12 +108,6 @@ importers: '@types/react': specifier: ^18.3.3 version: 18.3.12 - '@typescript-eslint/eslint-plugin': - specifier: ^7.16.1 - version: 7.18.0(@typescript-eslint/parser@7.18.0)(eslint@8.57.1)(typescript@5.6.3) - '@typescript-eslint/parser': - specifier: ^7.16.1 - version: 7.18.0(eslint@8.57.1)(typescript@5.6.3) '@vitest/coverage-istanbul': specifier: ^2.0.5 version: 2.1.4(vitest@2.1.4) @@ -178,38 +172,32 @@ importers: specifier: ^1.6.4 version: 1.6.4(mocha@10.8.2) eslint: - specifier: ^8.57.0 - version: 8.57.1 - eslint-import-resolver-webpack: - specifier: ^0.13.8 - version: 0.13.9(eslint-plugin-import@2.31.0)(webpack@5.96.1) - eslint-plugin-flowtype: - specifier: ^8.0.3 - version: 8.0.3(@babel/plugin-syntax-flow@7.26.0)(@babel/plugin-transform-react-jsx@7.25.9)(eslint@8.57.1) + specifier: ^9.14.0 + version: 9.14.0 eslint-plugin-ft-flow: specifier: ^3.0.11 - version: 3.0.11(eslint@8.57.1)(hermes-eslint@0.23.1) + version: 3.0.11(eslint@9.14.0)(hermes-eslint@0.25.0) eslint-plugin-import: - specifier: ^2.29.1 - version: 2.31.0(@typescript-eslint/parser@7.18.0)(eslint-import-resolver-webpack@0.13.9)(eslint@8.57.1) + specifier: ^2.31.0 + version: 2.31.0(@typescript-eslint/parser@8.13.0)(eslint@9.14.0) eslint-plugin-jsx-a11y: specifier: ^6.10.2 - version: 6.10.2(eslint@8.57.1) + version: 6.10.2(eslint@9.14.0) eslint-plugin-no-async: - specifier: ^1.1.0 - version: 1.1.0(eslint@8.57.1) + specifier: ^1.2.0 + version: 1.2.0(eslint@9.14.0) eslint-plugin-react: - specifier: ^7.35.0 - version: 7.37.2(eslint@8.57.1) + specifier: ^7.37.2 + version: 7.37.2(eslint@9.14.0) eslint-plugin-react-hooks: - specifier: ^4.6.2 - version: 4.6.2(eslint@8.57.1) + specifier: ^5.0.0 + version: 5.0.0(eslint@9.14.0) eslint-plugin-storybook: specifier: ^0.11.0 - version: 0.11.0(eslint@8.57.1)(typescript@5.6.3) + version: 0.11.0(eslint@9.14.0)(typescript@5.6.3) eslint-plugin-vitest: - specifier: ^0.3.22 - version: 0.3.26(@typescript-eslint/eslint-plugin@7.18.0)(eslint@8.57.1)(typescript@5.6.3)(vitest@2.1.4) + specifier: ^0.5.4 + version: 0.5.4(eslint@9.14.0)(typescript@5.6.3)(vitest@2.1.4) execa: specifier: ^9.3.0 version: 9.5.1 @@ -225,9 +213,12 @@ importers: glob: specifier: ^11.0.0 version: 11.0.0 + globals: + specifier: ^15.12.0 + version: 15.12.0 hermes-eslint: - specifier: ^0.23.0 - version: 0.23.1 + specifier: ^0.25.0 + version: 0.25.0 html-webpack-plugin: specifier: ^5.6.0 version: 5.6.3(webpack@5.96.1) @@ -291,6 +282,9 @@ importers: typescript: specifier: ^5.3.3 version: 5.6.3 + typescript-eslint: + specifier: ^8.13.0 + version: 8.13.0(eslint@9.14.0)(typescript@5.6.3) vite: specifier: ^5.4.10 version: 5.4.10(@types/node@22.9.0) @@ -941,20 +935,6 @@ packages: - supports-color dev: true - /@babel/eslint-parser@7.25.9(@babel/core@7.26.0)(eslint@8.57.1): - resolution: {integrity: sha512-5UXfgpK0j0Xr/xIdgdLEhOFxaDZ0bRPWJJchRpqOSur/3rZoPbqqki5mm0p4NE2cs28krBEiSM2MB7//afRSQQ==} - engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} - peerDependencies: - '@babel/core': ^7.11.0 - eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 - dependencies: - '@babel/core': 7.26.0 - '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 - eslint: 8.57.1 - eslint-visitor-keys: 2.1.0 - semver: 6.3.1 - dev: true - /@babel/generator@7.26.2: resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==} engines: {node: '>=6.9.0'} @@ -2822,13 +2802,13 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.1(eslint@8.57.1): + /@eslint-community/eslint-utils@4.4.1(eslint@9.14.0): resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.57.1 + eslint: 9.14.0 eslint-visitor-keys: 3.4.3 dev: true @@ -2837,14 +2817,30 @@ packages: engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint/eslintrc@2.1.4: - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@eslint/config-array@0.18.0: + resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + '@eslint/object-schema': 2.1.4 + debug: 4.3.7(supports-color@8.1.1) + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/core@0.7.0: + resolution: {integrity: sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true + + /@eslint/eslintrc@3.1.0: + resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: ajv: 6.12.6 debug: 4.3.7(supports-color@8.1.1) - espree: 9.6.1 - globals: 13.24.0 + espree: 10.3.0 + globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -2854,9 +2850,21 @@ packages: - supports-color dev: true - /@eslint/js@8.57.1: - resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@eslint/js@9.14.0: + resolution: {integrity: sha512-pFoEtFWCPyDOl+C6Ift+wC7Ro89otjigCf5vcuWqWgqNSQbRrpjSvdeE6ofLz4dHmyxD5f7gIdGT4+p36L6Twg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true + + /@eslint/object-schema@2.1.4: + resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true + + /@eslint/plugin-kit@0.2.2: + resolution: {integrity: sha512-CXtq5nR4Su+2I47WPOlWud98Y5Lv8Kyxp2ukhgFx/eW6Blm18VXJO5WuQylPugRo8nbluoi6GvvxBLqHcvqUUw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + levn: 0.4.1 dev: true /@fastify/busboy@2.1.1: @@ -2874,16 +2882,17 @@ packages: '@hapi/hoek': 9.3.0 dev: true - /@humanwhocodes/config-array@0.13.0: - resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} - engines: {node: '>=10.10.0'} - deprecated: Use @eslint/config-array instead + /@humanfs/core@0.19.1: + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + dev: true + + /@humanfs/node@0.16.6: + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + engines: {node: '>=18.18.0'} dependencies: - '@humanwhocodes/object-schema': 2.0.3 - debug: 4.3.7(supports-color@8.1.1) - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.1 dev: true /@humanwhocodes/module-importer@1.0.1: @@ -2891,9 +2900,14 @@ packages: engines: {node: '>=12.22'} dev: true - /@humanwhocodes/object-schema@2.0.3: - resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} - deprecated: Use @eslint/object-schema instead + /@humanwhocodes/retry@0.3.1: + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + engines: {node: '>=18.18'} + dev: true + + /@humanwhocodes/retry@0.4.1: + resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} + engines: {node: '>=18.18'} dev: true /@hutson/parse-repository-url@3.0.2: @@ -3135,12 +3149,6 @@ packages: dev: true optional: true - /@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1: - resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} - dependencies: - eslint-scope: 5.1.1 - dev: true - /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -4668,24 +4676,24 @@ packages: dev: true optional: true - /@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0)(eslint@8.57.1)(typescript@5.6.3): - resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==} - engines: {node: ^18.18.0 || >=20.0.0} + /@typescript-eslint/eslint-plugin@8.13.0(@typescript-eslint/parser@8.13.0)(eslint@9.14.0)(typescript@5.6.3): + resolution: {integrity: sha512-nQtBLiZYMUPkclSeC3id+x4uVd1SGtHuElTxL++SfP47jR0zfkZBJHc+gL4qPsgTuypz0k8Y2GheaDYn6Gy3rg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^7.0.0 - eslint: ^8.56.0 + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.6.3) - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.1)(typescript@5.6.3) - '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 7.18.0 - eslint: 8.57.1 + '@typescript-eslint/parser': 8.13.0(eslint@9.14.0)(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.13.0 + '@typescript-eslint/type-utils': 8.13.0(eslint@9.14.0)(typescript@5.6.3) + '@typescript-eslint/utils': 8.13.0(eslint@9.14.0)(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.13.0 + eslint: 9.14.0 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -4695,22 +4703,22 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.3): - resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==} - engines: {node: ^18.18.0 || >=20.0.0} + /@typescript-eslint/parser@8.13.0(eslint@9.14.0)(typescript@5.6.3): + resolution: {integrity: sha512-w0xp+xGg8u/nONcGw1UXAr6cjCPU1w0XVyBs6Zqaj5eLmxkKQAByTdV/uGgNN5tVvN/kKpoQlP2cL7R+ajZZIQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.56.0 + eslint: ^8.57.0 || ^9.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 7.18.0 + '@typescript-eslint/scope-manager': 8.13.0 + '@typescript-eslint/types': 8.13.0 + '@typescript-eslint/typescript-estree': 8.13.0(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.13.0 debug: 4.3.7(supports-color@8.1.1) - eslint: 8.57.1 + eslint: 9.14.0 typescript: 5.6.3 transitivePeerDependencies: - supports-color @@ -4732,23 +4740,22 @@ packages: '@typescript-eslint/visitor-keys': 8.13.0 dev: true - /@typescript-eslint/type-utils@7.18.0(eslint@8.57.1)(typescript@5.6.3): - resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==} - engines: {node: ^18.18.0 || >=20.0.0} + /@typescript-eslint/type-utils@8.13.0(eslint@9.14.0)(typescript@5.6.3): + resolution: {integrity: sha512-Rqnn6xXTR316fP4D2pohZenJnp+NwQ1mo7/JM+J1LWZENSLkJI8ID8QNtlvFeb0HnFSK94D6q0cnMX6SbE5/vA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.3) - '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/typescript-estree': 8.13.0(typescript@5.6.3) + '@typescript-eslint/utils': 8.13.0(eslint@9.14.0)(typescript@5.6.3) debug: 4.3.7(supports-color@8.1.1) - eslint: 8.57.1 ts-api-utils: 1.4.0(typescript@5.6.3) typescript: 5.6.3 transitivePeerDependencies: + - eslint - supports-color dev: true @@ -4806,33 +4813,33 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@7.18.0(eslint@8.57.1)(typescript@5.6.3): + /@typescript-eslint/utils@7.18.0(eslint@9.14.0)(typescript@5.6.3): resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.14.0) '@typescript-eslint/scope-manager': 7.18.0 '@typescript-eslint/types': 7.18.0 '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.3) - eslint: 8.57.1 + eslint: 9.14.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/utils@8.13.0(eslint@8.57.1)(typescript@5.6.3): + /@typescript-eslint/utils@8.13.0(eslint@9.14.0)(typescript@5.6.3): resolution: {integrity: sha512-A1EeYOND6Uv250nybnLZapeXpYMl8tkzYUxqmoKAWnI4sei3ihf2XdZVd+vVOmHGcp3t+P7yRrNsyyiXTvShFQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.14.0) '@typescript-eslint/scope-manager': 8.13.0 '@typescript-eslint/types': 8.13.0 '@typescript-eslint/typescript-estree': 8.13.0(typescript@5.6.3) - eslint: 8.57.1 + eslint: 9.14.0 transitivePeerDependencies: - supports-color - typescript @@ -4854,10 +4861,6 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@ungap/structured-clone@1.2.0: - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - dev: true - /@vitest/coverage-istanbul@2.1.4(vitest@2.1.4): resolution: {integrity: sha512-NLmfjzXnRSmLF/h4hYkzjvd7hZ85DRZzPUqXu0McPFCMczDfNmOjMoM3KaxjFaEmOc1YzX9HHbU/Rr9VO+35ow==} peerDependencies: @@ -7100,15 +7103,6 @@ packages: objectorarray: 1.0.5 dev: true - /enhanced-resolve@0.9.1: - resolution: {integrity: sha512-kxpoMgrdtkXZ5h0SeraBS1iRntpTpQ3R8ussdb38+UAFnMGX5DDyJXePm+OCHOcoXvHDw7mc2erbJBpDnl7TPw==} - engines: {node: '>=0.6'} - dependencies: - graceful-fs: 4.2.11 - memory-fs: 0.2.0 - tapable: 0.1.10 - dev: true - /enhanced-resolve@5.17.1: resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} engines: {node: '>=10.13.0'} @@ -7405,30 +7399,7 @@ packages: - supports-color dev: true - /eslint-import-resolver-webpack@0.13.9(eslint-plugin-import@2.31.0)(webpack@5.96.1): - resolution: {integrity: sha512-yGngeefNiHXau2yzKKs2BNON4HLpxBabY40BGL/vUSKZtqzjlVsTTZm57jhHULhm+mJEwKsEIIN3NXup5AiiBQ==} - engines: {node: '>= 6'} - peerDependencies: - eslint-plugin-import: '>=1.4.0' - webpack: '>=1.11.0' - dependencies: - debug: 3.2.7(supports-color@8.1.1) - enhanced-resolve: 0.9.1 - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0)(eslint-import-resolver-webpack@0.13.9)(eslint@8.57.1) - find-root: 1.1.0 - hasown: 2.0.2 - interpret: 1.4.0 - is-core-module: 2.15.1 - is-regex: 1.1.4 - lodash: 4.17.21 - resolve: 2.0.0-next.5 - semver: 5.7.2 - webpack: 5.96.1(esbuild@0.24.0)(webpack-cli@5.1.4) - transitivePeerDependencies: - - supports-color - dev: true - - /eslint-module-utils@2.12.0(@typescript-eslint/parser@7.18.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.9)(eslint@8.57.1): + /eslint-module-utils@2.12.0(@typescript-eslint/parser@8.13.0)(eslint-import-resolver-node@0.3.9)(eslint@9.14.0): resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} engines: {node: '>=4'} peerDependencies: @@ -7449,43 +7420,27 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/parser': 8.13.0(eslint@9.14.0)(typescript@5.6.3) debug: 3.2.7(supports-color@8.1.1) - eslint: 8.57.1 + eslint: 9.14.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-webpack: 0.13.9(eslint-plugin-import@2.31.0)(webpack@5.96.1) transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-flowtype@8.0.3(@babel/plugin-syntax-flow@7.26.0)(@babel/plugin-transform-react-jsx@7.25.9)(eslint@8.57.1): - resolution: {integrity: sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@babel/plugin-syntax-flow': ^7.14.5 - '@babel/plugin-transform-react-jsx': ^7.14.9 - eslint: ^8.1.0 - dependencies: - '@babel/plugin-syntax-flow': 7.26.0(@babel/core@7.26.0) - '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0) - eslint: 8.57.1 - lodash: 4.17.21 - string-natural-compare: 3.0.1 - dev: true - - /eslint-plugin-ft-flow@3.0.11(eslint@8.57.1)(hermes-eslint@0.23.1): + /eslint-plugin-ft-flow@3.0.11(eslint@9.14.0)(hermes-eslint@0.25.0): resolution: {integrity: sha512-6ZJ4KYGYjIosCcU883zBBT1nFsKP58xrTOwguiw3/HRq0EpYAyhrF1nCGbK7V23cmKtPXMpDfl8qPupt5s5W8w==} peerDependencies: eslint: ^8.56.0 || ^9.0.0 hermes-eslint: '>=0.15.0' dependencies: - eslint: 8.57.1 - hermes-eslint: 0.23.1 + eslint: 9.14.0 + hermes-eslint: 0.25.0 lodash: 4.17.21 string-natural-compare: 3.0.1 dev: true - /eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0)(eslint-import-resolver-webpack@0.13.9)(eslint@8.57.1): + /eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.13.0)(eslint@9.14.0): resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==} engines: {node: '>=4'} peerDependencies: @@ -7496,16 +7451,16 @@ packages: optional: true dependencies: '@rtsao/scc': 1.1.0 - '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/parser': 8.13.0(eslint@9.14.0)(typescript@5.6.3) 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: 8.57.1 + eslint: 9.14.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.18.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.9)(eslint@8.57.1) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.13.0)(eslint-import-resolver-node@0.3.9)(eslint@9.14.0) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -7522,7 +7477,7 @@ packages: - supports-color dev: true - /eslint-plugin-jsx-a11y@6.10.2(eslint@8.57.1): + /eslint-plugin-jsx-a11y@6.10.2(eslint@9.14.0): resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==} engines: {node: '>=4.0'} peerDependencies: @@ -7536,7 +7491,7 @@ packages: axobject-query: 4.1.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 8.57.1 + eslint: 9.14.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -7546,24 +7501,24 @@ packages: string.prototype.includes: 2.0.1 dev: true - /eslint-plugin-no-async@1.1.0(eslint@8.57.1): - resolution: {integrity: sha512-ndBo78j2yt1AZQ/f0b2Is4ul1ng2dDmvUGOBQLr7mJ7w9GJ6pkAE3JJOKlvwiCkwwcXJcOISxbTVXkOYCHaT7g==} + /eslint-plugin-no-async@1.2.0(eslint@9.14.0): + resolution: {integrity: sha512-vrKnE6DEZvz3AoG1zi9acbEAZWZ5/fd1C45HKO0Ojs2D4D7SqMTQRu9lUjX4EZNOWdyU6I9IbM6Xf3mINRfKcQ==} peerDependencies: - eslint: ^6 || ^7 || ^8 + eslint: ^6 || ^7 || ^8 || ^9 dependencies: - eslint: 8.57.1 + eslint: 9.14.0 dev: true - /eslint-plugin-react-hooks@4.6.2(eslint@8.57.1): - resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} + /eslint-plugin-react-hooks@5.0.0(eslint@9.14.0): + resolution: {integrity: sha512-hIOwI+5hYGpJEc4uPRmz2ulCjAGD/N13Lukkh8cLV0i2IRk/bdZDYjgLVHj+U9Z704kLIdIO6iueGvxNur0sgw==} engines: {node: '>=10'} peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 dependencies: - eslint: 8.57.1 + eslint: 9.14.0 dev: true - /eslint-plugin-react@7.37.2(eslint@8.57.1): + /eslint-plugin-react@7.37.2(eslint@9.14.0): resolution: {integrity: sha512-EsTAnj9fLVr/GZleBLFbj/sSuXeWmp1eXIN60ceYnZveqEaUCyW4X+Vh4WTdUhCkW4xutXYqTXCUSyqD4rB75w==} engines: {node: '>=4'} peerDependencies: @@ -7575,7 +7530,7 @@ packages: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.2.0 - eslint: 8.57.1 + eslint: 9.14.0 estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -7590,27 +7545,27 @@ packages: string.prototype.repeat: 1.0.0 dev: true - /eslint-plugin-storybook@0.11.0(eslint@8.57.1)(typescript@5.6.3): + /eslint-plugin-storybook@0.11.0(eslint@9.14.0)(typescript@5.6.3): resolution: {integrity: sha512-MvPJgF+ORwgK04a1CY5itO4pwdAOFIRqczlNEHL62+4Ocvj1d61GWRqIdeX1BNCKno6fdPC6TksUHCZMGsq26g==} engines: {node: '>= 18'} peerDependencies: eslint: '>=6' dependencies: '@storybook/csf': 0.1.11 - '@typescript-eslint/utils': 8.13.0(eslint@8.57.1)(typescript@5.6.3) - eslint: 8.57.1 + '@typescript-eslint/utils': 8.13.0(eslint@9.14.0)(typescript@5.6.3) + eslint: 9.14.0 ts-dedent: 2.2.0 transitivePeerDependencies: - supports-color - typescript dev: true - /eslint-plugin-vitest@0.3.26(@typescript-eslint/eslint-plugin@7.18.0)(eslint@8.57.1)(typescript@5.6.3)(vitest@2.1.4): - resolution: {integrity: sha512-oxe5JSPgRjco8caVLTh7Ti8PxpwJdhSV0hTQAmkFcNcmy/9DnqLB/oNVRA11RmVRP//2+jIIT6JuBEcpW3obYg==} + /eslint-plugin-vitest@0.5.4(eslint@9.14.0)(typescript@5.6.3)(vitest@2.1.4): + resolution: {integrity: sha512-um+odCkccAHU53WdKAw39MY61+1x990uXjSPguUCq3VcEHdqJrOb8OTMrbYlY6f9jAKx7x98kLVlIe3RJeJqoQ==} engines: {node: ^18.0.0 || >= 20.0.0} peerDependencies: '@typescript-eslint/eslint-plugin': '*' - eslint: '>=8.0.0' + eslint: ^8.57.0 || ^9.0.0 vitest: '*' peerDependenciesMeta: '@typescript-eslint/eslint-plugin': @@ -7618,9 +7573,8 @@ packages: vitest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0)(eslint@8.57.1)(typescript@5.6.3) - '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.6.3) - eslint: 8.57.1 + '@typescript-eslint/utils': 7.18.0(eslint@9.14.0)(typescript@5.6.3) + eslint: 9.14.0 vitest: 2.1.4(@types/node@22.9.0)(@vitest/ui@2.1.4)(jsdom@24.1.3) transitivePeerDependencies: - supports-color @@ -7635,79 +7589,80 @@ packages: estraverse: 4.3.0 dev: true - /eslint-scope@7.2.2: - 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} dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 dev: true - /eslint-visitor-keys@2.1.0: - resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} - engines: {node: '>=10'} - dev: true - /eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.57.1: - resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} - 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. + /eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true + + /eslint@9.14.0: + resolution: {integrity: sha512-c2FHsVBr87lnUtjP4Yhvk4yEhKrQavGafRA/Se1ouse8PfbfC/Qh9Mxa00yWsZRlqeUB9raXip0aiiUZkgnr9g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.14.0) '@eslint-community/regexpp': 4.12.1 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.57.1 - '@humanwhocodes/config-array': 0.13.0 + '@eslint/config-array': 0.18.0 + '@eslint/core': 0.7.0 + '@eslint/eslintrc': 3.1.0 + '@eslint/js': 9.14.0 + '@eslint/plugin-kit': 0.2.2 + '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.2.0 + '@humanwhocodes/retry': 0.4.1 + '@types/estree': 1.0.6 + '@types/json-schema': 7.0.15 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.5 debug: 4.3.7(supports-color@8.1.1) - doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 + eslint-scope: 8.2.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 esquery: 1.6.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 + file-entry-cache: 8.0.0 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.24.0 - graphemer: 1.4.0 ignore: 5.3.2 imurmurhash: 0.1.4 is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.4 - strip-ansi: 6.0.1 text-table: 0.2.0 transitivePeerDependencies: - supports-color dev: true - /espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /espree@10.3.0: + resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: acorn: 8.14.0 acorn-jsx: 5.3.2(acorn@8.14.0) - eslint-visitor-keys: 3.4.3 + eslint-visitor-keys: 4.2.0 dev: true /esprima@4.0.1: @@ -7946,11 +7901,11 @@ packages: is-unicode-supported: 2.1.0 dev: true - /file-entry-cache@6.0.1: - 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'} dependencies: - flat-cache: 3.2.0 + flat-cache: 4.0.1 dev: true /filelist@1.0.4: @@ -7995,10 +7950,6 @@ packages: pkg-dir: 7.0.0 dev: true - /find-root@1.1.0: - resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} - dev: true - /find-up@2.1.0: resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} engines: {node: '>=4'} @@ -8055,6 +8006,14 @@ packages: rimraf: 3.0.2 dev: true + /flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + dependencies: + flatted: 3.3.1 + keyv: 4.5.4 + dev: true + /flat@5.0.2: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} hasBin: true @@ -8528,11 +8487,14 @@ packages: engines: {node: '>=4'} dev: true - /globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.20.2 + /globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + dev: true + + /globals@15.12.0: + resolution: {integrity: sha512-1+gLErljJFhbOVyaetcwJiJ4+eLe45S2E7P5UiZ9xGfeq3ATQf5DOv9G7MH3gGbKQLkzmNh2DxfZwLdw+j6oTQ==} + engines: {node: '>=18'} dev: true /globalthis@1.0.4: @@ -8648,12 +8610,12 @@ packages: hasBin: true dev: true - /hermes-eslint@0.23.1: - resolution: {integrity: sha512-DaEpbJobK1KwpTSXrPIKkHs2h+B+RTw2F1g9S70tjtJ14a3zM+2gPVUtc8xyffQqRJ6tPfs+/zRKwV17lwDvqA==} + /hermes-eslint@0.25.0: + resolution: {integrity: sha512-D9rdrqt7dudZHI5AJKS+1vXBbxxR6Wj9J1JI7eYowYCbXUIvHclsWFy8gSuRmug2V6HSYpsiyPwP3kQs/Q/Y8w==} dependencies: esrecurse: 4.3.0 - hermes-estree: 0.23.1 - hermes-parser: 0.23.1 + hermes-estree: 0.25.0 + hermes-parser: 0.25.0 dev: true /hermes-estree@0.23.1: @@ -8664,6 +8626,10 @@ packages: resolution: {integrity: sha512-LyoXLB7IFzeZW0EvAbGZacbxBN7t6KKSDqFJPo3Ydow7wDlrDjXwsdiAHV6XOdvEN9MEuWXsSIFN4tzpyrXIHw==} dev: true + /hermes-estree@0.25.0: + resolution: {integrity: sha512-xjILoUIyOpLoOHqj8UJs/HNYQ279IfLKTTv9nmXKNT2+QKT/TQF9AyQFrRMo+3xwZoO7k4azocYpCzA1cSvBDg==} + dev: true + /hermes-parser@0.23.1: resolution: {integrity: sha512-oxl5h2DkFW83hT4DAUJorpah8ou4yvmweUzLJmmr6YV2cezduCdlil1AvU/a/xSsAFo4WUcNA4GoV5Bvq6JffA==} dependencies: @@ -8676,6 +8642,12 @@ packages: hermes-estree: 0.24.0 dev: true + /hermes-parser@0.25.0: + resolution: {integrity: sha512-CeAdhgMfbZcrYh+HHKVKsj7VNhOTr0jiLFlcVVoRORbZ/Nr4J90WjEq2CZoahgH15/DYY/VBhuLqpIzJqfdBEQ==} + dependencies: + hermes-estree: 0.25.0 + dev: true + /hoist-non-react-statics@3.3.2: resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} dependencies: @@ -9168,6 +9140,7 @@ packages: /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} + requiresBuild: true dev: true /is-finalizationregistry@1.0.2: @@ -10231,10 +10204,6 @@ packages: map-or-similar: 1.5.0 dev: true - /memory-fs@0.2.0: - resolution: {integrity: sha512-+y4mDxU4rvXXu5UDSGCGNiesFmwCHuefGMoPCO1WYucNYj7DsLqrFaa2fXVI0H+NNiPTwwzKwspn9yTZqUGqng==} - dev: true - /meow@12.1.1: resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} engines: {node: '>=16.10'} @@ -10569,7 +10538,7 @@ packages: array-differ: 3.0.0 array-union: 2.1.0 arrify: 2.0.1 - minimatch: 3.0.5 + minimatch: 3.1.2 dev: true /mute-stream@0.0.8: @@ -11034,7 +11003,7 @@ packages: engines: {node: '>=10'} dependencies: bl: 4.1.0 - chalk: 4.1.0 + chalk: 4.1.2 cli-cursor: 3.1.0 cli-spinners: 2.6.1 is-interactive: 1.0.0 @@ -12895,11 +12864,6 @@ packages: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: true - /tapable@0.1.10: - resolution: {integrity: sha512-jX8Et4hHg57mug1/079yitEKWGB3LCwoxByLsNim89LABq8NqgiX+6iYVOsq0vX8uJHkU+DZ5fnq95f800bEsQ==} - engines: {node: '>=0.6'} - dev: true - /tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} @@ -13227,11 +13191,6 @@ packages: engines: {node: '>=10'} dev: true - /type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - dev: true - /type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} @@ -13311,6 +13270,24 @@ packages: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} dev: true + /typescript-eslint@8.13.0(eslint@9.14.0)(typescript@5.6.3): + resolution: {integrity: sha512-vIMpDRJrQd70au2G8w34mPps0ezFSPMEX4pXkTzUkrNbRX+36ais2ksGWN0esZL+ZMaFJEneOBHzCgSqle7DHw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/eslint-plugin': 8.13.0(@typescript-eslint/parser@8.13.0)(eslint@9.14.0)(typescript@5.6.3) + '@typescript-eslint/parser': 8.13.0(eslint@9.14.0)(typescript@5.6.3) + '@typescript-eslint/utils': 8.13.0(eslint@9.14.0)(typescript@5.6.3) + typescript: 5.6.3 + transitivePeerDependencies: + - eslint + - supports-color + dev: true + /typescript@5.6.3: resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} engines: {node: '>=14.17'}