diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index decd4e350a..0000000000 --- a/.eslintrc.json +++ /dev/null @@ -1,121 +0,0 @@ -{ - "env": { - "browser": true, - "shared-node-browser": true, - "node": true, - "es6": true - }, - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended", - "plugin:react/jsx-runtime", - "plugin:react-hooks/recommended", - "plugin:import/errors", - "plugin:import/warnings", - "plugin:prettier/recommended" - ], - "plugins": ["react-compiler"], - "parser": "@typescript-eslint/parser", - "parserOptions": { - "ecmaVersion": 2018, - "sourceType": "module", - "ecmaFeatures": { - "jsx": true - } - }, - "rules": { - "react-compiler/react-compiler": "warn", - "eqeqeq": "error", - "no-var": "error", - "prefer-const": "error", - "curly": ["warn", "multi-line", "consistent"], - "no-console": "off", - "import/extensions": ["error", "always"], - "import/no-unresolved": ["error", { "commonjs": true, "amd": true }], - "import/export": "error", - "import/no-duplicates": ["error"], - "@typescript-eslint/explicit-module-boundary-types": "off", - "@typescript-eslint/no-unused-vars": [ - "warn", - { "argsIgnorePattern": "^_", "varsIgnorePattern": "^_" } - ], - "@typescript-eslint/no-use-before-define": "off", - "@typescript-eslint/no-empty-function": "off", - "@typescript-eslint/no-explicit-any": "off", - "import/namespace": "off", - "import/named": "off", - "import/order": [ - "error", - { - "alphabetize": { "order": "asc", "caseInsensitive": true }, - "groups": [ - "builtin", - "external", - "internal", - "parent", - "sibling", - "index", - "object" - ], - "newlines-between": "never", - "pathGroups": [ - { - "pattern": "react", - "group": "builtin", - "position": "before" - } - ], - "pathGroupsExcludedImportTypes": ["builtin"] - } - ], - "sort-imports": [ - "error", - { - "ignoreDeclarationSort": true - } - ] - }, - "settings": { - "react": { - "version": "detect" - }, - "import/extensions": [".js", ".jsx", ".ts", ".tsx"], - "import/parsers": { - "@typescript-eslint/parser": [".js", ".jsx", ".ts", ".tsx"] - }, - "import/resolver": { - "alias": { - "extensions": [".js", ".jsx", ".ts", ".tsx"], - "map": [ - ["^jotai$", "./src/index.ts"], - ["jotai", "./src"] - ] - } - } - }, - "overrides": [ - { - "extends": [ - "plugin:jest-dom/recommended", - "plugin:testing-library/react", - "plugin:@vitest/legacy-recommended" - ], - "files": ["tests/**/*.ts", "tests/**/*.tsx"], - "rules": { - "import/extensions": ["error", "never"], - "@typescript-eslint/no-unused-vars": "off", - "@vitest/expect-expect": "off", - "@vitest/consistent-test-it": [ - "error", - { "fn": "it", "withinDescribe": "it" } - ] - } - }, - { - "files": ["./*.js"], - "rules": { - "@typescript-eslint/no-require-imports": "off" - } - } - ] -} diff --git a/babel.config.js b/babel.config.js index fa15c8a7f8..8789c42c61 100644 --- a/babel.config.js +++ b/babel.config.js @@ -1,3 +1,4 @@ +/* eslint-disable no-undef */ module.exports = (api, targets) => { // https://babeljs.io/docs/en/config-files#config-function-api const isTestEnv = api.env('test') diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000000..163be36bf8 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,102 @@ +import eslint from '@eslint/js' +import vitest from '@vitest/eslint-plugin' +import importPlugin from 'eslint-plugin-import' +import jestDom from 'eslint-plugin-jest-dom' +import react from 'eslint-plugin-react' +import reactCompiler from 'eslint-plugin-react-compiler' +import reactHooks from 'eslint-plugin-react-hooks' +import testingLibrary from 'eslint-plugin-testing-library' +import tseslint from 'typescript-eslint' + +export default tseslint.config( + { + ignores: ['dist/', 'examples/', 'website/'], + }, + eslint.configs.recommended, + importPlugin.flatConfigs.recommended, + tseslint.configs.recommended, + react.configs.flat.recommended, + react.configs.flat['jsx-runtime'], + { + plugins: { + 'react-compiler': reactCompiler, + 'react-hooks': reactHooks, + }, + settings: { + react: { + version: 'detect', + }, + 'import/resolver': { + typescript: true, + }, + }, + rules: { + eqeqeq: 'error', + curly: ['warn', 'multi-line', 'consistent'], + 'sort-imports': [ + 'error', + { + ignoreDeclarationSort: true, + }, + ], + 'import/no-unresolved': ['error', { commonjs: true, amd: true }], + 'import/named': 'off', + 'import/namespace': 'off', + 'import/no-named-as-default-member': 'off', + 'import/no-duplicates': 'error', + 'import/extensions': ['error', 'always'], + 'import/order': [ + 'error', + { + alphabetize: { order: 'asc', caseInsensitive: true }, + groups: [ + 'builtin', + 'external', + 'internal', + 'parent', + 'sibling', + 'index', + 'object', + ], + 'newlines-between': 'never', + pathGroups: [ + { + pattern: 'react', + group: 'builtin', + position: 'before', + }, + ], + pathGroupsExcludedImportTypes: ['builtin'], + }, + ], + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-unused-vars': [ + 'warn', + { argsIgnorePattern: '^_', varsIgnorePattern: '^_' }, + ], + 'react-compiler/react-compiler': 'warn', + ...reactHooks.configs.recommended.rules, + }, + }, + { + files: ['tests/**/*.{ts,tsx}'], + ...testingLibrary.configs['flat/react'], + ...jestDom.configs['flat/recommended'], + ...vitest.configs.recommended, + rules: { + 'import/extensions': ['error', 'never'], + '@typescript-eslint/no-unused-vars': 'off', + 'vitest/expect-expect': 'off', + 'vitest/consistent-test-it': [ + 'error', + { fn: 'it', withinDescribe: 'it' }, + ], + }, + }, + { + files: ['*.js'], + rules: { + '@typescript-eslint/no-require-imports': 'off', + }, + }, +) diff --git a/package.json b/package.json index 57e0eba7b9..7abcc9d6ba 100644 --- a/package.json +++ b/package.json @@ -74,11 +74,11 @@ "build:react:utils": "rollup -c --config-react_utils --client-only", "postbuild": "pnpm patch-d-ts && pnpm copy && pnpm patch-ts3.8 && pnpm patch-old-ts && pnpm patch-esm-ts && pnpm patch-readme", "prettier": "prettier '*.{js,json,md}' '{src,tests,benchmarks,docs}/**/*.{ts,tsx,md,mdx}' --write", - "eslint": "eslint --fix --no-eslintrc --c .eslintrc.json '*.{js,ts}' '{src,tests,benchmarks}/**/*.{ts,tsx}'", + "eslint": "eslint . --fix", "test": "pnpm run '/^test:.*/'", "test:format": "prettier '*.{js,json,md}' '{src,tests,benchmarks,docs}/**/*.{ts,tsx,md,mdx}' --list-different", "test:types": "tsc --noEmit", - "test:lint": "eslint --no-eslintrc --c .eslintrc.json '*.{js,ts}' '{src,tests,benchmarks}/**/*.{ts,tsx}'", + "test:lint": "eslint .", "test:spec": "vitest run", "test-build:spec": "vitest run", "patch-d-ts": "node -e \"var {entries}=require('./rollup.config.js');require('shelljs').find('dist/**/*.d.ts').forEach(f=>{entries.forEach(({find,replacement})=>require('shelljs').sed('-i',new RegExp(' from \\''+find.source.slice(0,-1)+'\\';$'),' from \\''+replacement+'\\';',f));require('shelljs').sed('-i',/ from '(\\.[^']+)\\.ts';$/,' from \\'\\$1\\';',f)})\"", @@ -121,6 +121,7 @@ "@babel/plugin-transform-typescript": "^7.26.3", "@babel/preset-env": "^7.26.0", "@babel/template": "^7.25.9", + "@eslint/js": "^9.17.0", "@rollup/plugin-alias": "^5.1.1", "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-node-resolve": "^16.0.0", @@ -136,22 +137,18 @@ "@types/node": "^22.10.2", "@types/react": "^19.0.2", "@types/react-dom": "^19.0.2", - "@typescript-eslint/eslint-plugin": "^8.18.1", - "@typescript-eslint/parser": "^8.18.1", "@vitest/coverage-v8": "^2.1.8", - "@vitest/eslint-plugin": "^1.1.20", + "@vitest/eslint-plugin": "^1.1.21", "@vitest/ui": "^2.1.8", "benny": "^3.7.1", "downlevel-dts": "^0.11.0", "esbuild": "^0.24.2", - "eslint": "8.57.0", - "eslint-config-prettier": "^9.1.0", - "eslint-import-resolver-alias": "^1.1.2", + "eslint": "9.17.0", + "eslint-import-resolver-typescript": "^3.7.0", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jest-dom": "^5.5.0", - "eslint-plugin-prettier": "^5.2.1", - "eslint-plugin-react": "^7.37.2", - "eslint-plugin-react-compiler": "19.0.0-beta-201e55d-20241215", + "eslint-plugin-react": "^7.37.3", + "eslint-plugin-react-compiler": "19.0.0-beta-55955c9-20241229", "eslint-plugin-react-hooks": "^5.1.0", "eslint-plugin-testing-library": "^7.1.1", "jest-leak-detector": "^29.7.0", @@ -168,6 +165,7 @@ "shx": "^0.3.4", "ts-expect": "^1.3.0", "typescript": "^5.7.2", + "typescript-eslint": "^8.18.2", "vitest": "^2.1.8", "wonka": "^6.3.4" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 57dc787c9a..a75c26e0a4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,6 +20,9 @@ devDependencies: '@babel/template': specifier: ^7.25.9 version: 7.25.9 + '@eslint/js': + specifier: ^9.17.0 + version: 9.17.0 '@rollup/plugin-alias': specifier: ^5.1.1 version: 5.1.1(rollup@4.29.1) @@ -65,18 +68,12 @@ devDependencies: '@types/react-dom': specifier: ^19.0.2 version: 19.0.2(@types/react@19.0.2) - '@typescript-eslint/eslint-plugin': - specifier: ^8.18.1 - version: 8.18.1(@typescript-eslint/parser@8.18.1)(eslint@8.57.0)(typescript@5.7.2) - '@typescript-eslint/parser': - specifier: ^8.18.1 - version: 8.18.1(eslint@8.57.0)(typescript@5.7.2) '@vitest/coverage-v8': specifier: ^2.1.8 version: 2.1.8(vitest@2.1.8) '@vitest/eslint-plugin': - specifier: ^1.1.20 - version: 1.1.20(@typescript-eslint/utils@8.18.1)(eslint@8.57.0)(typescript@5.7.2)(vitest@2.1.8) + specifier: ^1.1.21 + version: 1.1.21(@typescript-eslint/utils@8.18.2)(eslint@9.17.0)(typescript@5.7.2)(vitest@2.1.8) '@vitest/ui': specifier: ^2.1.8 version: 2.1.8(vitest@2.1.8) @@ -90,35 +87,29 @@ devDependencies: specifier: ^0.24.2 version: 0.24.2 eslint: - specifier: 8.57.0 - version: 8.57.0 - eslint-config-prettier: - specifier: ^9.1.0 - version: 9.1.0(eslint@8.57.0) - eslint-import-resolver-alias: - specifier: ^1.1.2 - version: 1.1.2(eslint-plugin-import@2.31.0) + specifier: 9.17.0 + version: 9.17.0 + eslint-import-resolver-typescript: + specifier: ^3.7.0 + version: 3.7.0(eslint-plugin-import@2.31.0)(eslint@9.17.0) eslint-plugin-import: specifier: ^2.31.0 - version: 2.31.0(@typescript-eslint/parser@8.18.1)(eslint@8.57.0) + version: 2.31.0(@typescript-eslint/parser@8.18.2)(eslint-import-resolver-typescript@3.7.0)(eslint@9.17.0) eslint-plugin-jest-dom: specifier: ^5.5.0 - version: 5.5.0(@testing-library/dom@10.4.0)(eslint@8.57.0) - eslint-plugin-prettier: - specifier: ^5.2.1 - version: 5.2.1(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.4.2) + version: 5.5.0(@testing-library/dom@10.4.0)(eslint@9.17.0) eslint-plugin-react: - specifier: ^7.37.2 - version: 7.37.2(eslint@8.57.0) + specifier: ^7.37.3 + version: 7.37.3(eslint@9.17.0) eslint-plugin-react-compiler: - specifier: 19.0.0-beta-201e55d-20241215 - version: 19.0.0-beta-201e55d-20241215(eslint@8.57.0) + specifier: 19.0.0-beta-55955c9-20241229 + version: 19.0.0-beta-55955c9-20241229(eslint@9.17.0) eslint-plugin-react-hooks: specifier: ^5.1.0 - version: 5.1.0(eslint@8.57.0) + version: 5.1.0(eslint@9.17.0) eslint-plugin-testing-library: specifier: ^7.1.1 - version: 7.1.1(eslint@8.57.0)(typescript@5.7.2) + version: 7.1.1(eslint@9.17.0)(typescript@5.7.2) jest-leak-detector: specifier: ^29.7.0 version: 29.7.0 @@ -161,6 +152,9 @@ devDependencies: typescript: specifier: ^5.7.2 version: 5.7.2 + typescript-eslint: + specifier: ^8.18.2 + version: 8.18.2(eslint@9.17.0)(typescript@5.7.2) vitest: specifier: ^2.1.8 version: 2.1.8(@types/node@22.10.2)(@vitest/ui@2.1.8)(jsdom@25.0.1) @@ -1749,45 +1743,48 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - 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.0 - eslint-visitor-keys: 3.4.3 - dev: true - - /@eslint-community/eslint-utils@4.4.1(eslint@8.57.0): + /@eslint-community/eslint-utils@4.4.1(eslint@9.17.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.0 + eslint: 9.17.0 eslint-visitor-keys: 3.4.3 dev: true - /@eslint-community/regexpp@4.11.0: - resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - dev: true - /@eslint-community/regexpp@4.12.1: resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} 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.19.1: + resolution: {integrity: sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + '@eslint/object-schema': 2.1.5 + debug: 4.4.0 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/core@0.9.1: + resolution: {integrity: sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + '@types/json-schema': 7.0.15 + dev: true + + /@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} dependencies: ajv: 6.12.6 - debug: 4.3.6 - espree: 9.6.1 - globals: 13.24.0 - ignore: 5.3.1 + debug: 4.4.0 + espree: 10.3.0 + globals: 14.0.0 + ignore: 5.3.2 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -1796,21 +1793,34 @@ packages: - supports-color dev: true - /@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.17.0: + resolution: {integrity: sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dev: true - /@humanwhocodes/config-array@0.11.14: - resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} - engines: {node: '>=10.10.0'} - deprecated: Use @eslint/config-array instead + /@eslint/object-schema@2.1.5: + resolution: {integrity: sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true + + /@eslint/plugin-kit@0.2.4: + resolution: {integrity: sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: - '@humanwhocodes/object-schema': 2.0.3 - debug: 4.3.6 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color + levn: 0.4.1 + dev: true + + /@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: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.1 dev: true /@humanwhocodes/module-importer@1.0.1: @@ -1818,9 +1828,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 /@isaacs/cliui@8.0.2: @@ -1905,6 +1920,11 @@ packages: fastq: 1.17.1 dev: true + /@nolyfill/is-core-module@1.0.39: + resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} + engines: {node: '>=12.4.0'} + dev: true + /@pkgjs/parseargs@0.11.0: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -1912,11 +1932,6 @@ packages: dev: true optional: true - /@pkgr/core@0.1.1: - resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - dev: true - /@polka/url@1.0.0-next.28: resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} dev: true @@ -2291,6 +2306,10 @@ packages: resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} dev: true + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + dev: true + /@types/json5@0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true @@ -2319,8 +2338,8 @@ packages: resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} dev: true - /@typescript-eslint/eslint-plugin@8.18.1(@typescript-eslint/parser@8.18.1)(eslint@8.57.0)(typescript@5.7.2): - resolution: {integrity: sha512-Ncvsq5CT3Gvh+uJG0Lwlho6suwDfUXH0HztslDf5I+F2wAFAZMRwYLEorumpKLzmO2suAXZ/td1tBg4NZIi9CQ==} + /@typescript-eslint/eslint-plugin@8.18.2(@typescript-eslint/parser@8.18.2)(eslint@9.17.0)(typescript@5.7.2): + resolution: {integrity: sha512-adig4SzPLjeQ0Tm+jvsozSGiCliI2ajeURDGHjZ2llnA+A67HihCQ+a3amtPhUakd1GlwHxSRvzOZktbEvhPPg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 @@ -2328,12 +2347,12 @@ packages: typescript: '>=4.8.4 <5.8.0' dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.18.1(eslint@8.57.0)(typescript@5.7.2) - '@typescript-eslint/scope-manager': 8.18.1 - '@typescript-eslint/type-utils': 8.18.1(eslint@8.57.0)(typescript@5.7.2) - '@typescript-eslint/utils': 8.18.1(eslint@8.57.0)(typescript@5.7.2) - '@typescript-eslint/visitor-keys': 8.18.1 - eslint: 8.57.0 + '@typescript-eslint/parser': 8.18.2(eslint@9.17.0)(typescript@5.7.2) + '@typescript-eslint/scope-manager': 8.18.2 + '@typescript-eslint/type-utils': 8.18.2(eslint@9.17.0)(typescript@5.7.2) + '@typescript-eslint/utils': 8.18.2(eslint@9.17.0)(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.18.2 + eslint: 9.17.0 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -2343,19 +2362,19 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@8.18.1(eslint@8.57.0)(typescript@5.7.2): - resolution: {integrity: sha512-rBnTWHCdbYM2lh7hjyXqxk70wvon3p2FyaniZuey5TrcGBpfhVp0OxOa6gxr9Q9YhZFKyfbEnxc24ZnVbbUkCA==} + /@typescript-eslint/parser@8.18.2(eslint@9.17.0)(typescript@5.7.2): + resolution: {integrity: sha512-y7tcq4StgxQD4mDr9+Jb26dZ+HTZ/SkfqpXSiqeUXZHxOUyjWDKsmwKhJ0/tApR08DgOhrFAoAhyB80/p3ViuA==} 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' dependencies: - '@typescript-eslint/scope-manager': 8.18.1 - '@typescript-eslint/types': 8.18.1 - '@typescript-eslint/typescript-estree': 8.18.1(typescript@5.7.2) - '@typescript-eslint/visitor-keys': 8.18.1 + '@typescript-eslint/scope-manager': 8.18.2 + '@typescript-eslint/types': 8.18.2 + '@typescript-eslint/typescript-estree': 8.18.2(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.18.2 debug: 4.4.0 - eslint: 8.57.0 + eslint: 9.17.0 typescript: 5.7.2 transitivePeerDependencies: - supports-color @@ -2369,17 +2388,25 @@ packages: '@typescript-eslint/visitor-keys': 8.18.1 dev: true - /@typescript-eslint/type-utils@8.18.1(eslint@8.57.0)(typescript@5.7.2): - resolution: {integrity: sha512-jAhTdK/Qx2NJPNOTxXpMwlOiSymtR2j283TtPqXkKBdH8OAMmhiUfP0kJjc/qSE51Xrq02Gj9NY7MwK+UxVwHQ==} + /@typescript-eslint/scope-manager@8.18.2: + resolution: {integrity: sha512-YJFSfbd0CJjy14r/EvWapYgV4R5CHzptssoag2M7y3Ra7XNta6GPAJPPP5KGB9j14viYXyrzRO5GkX7CRfo8/g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + '@typescript-eslint/types': 8.18.2 + '@typescript-eslint/visitor-keys': 8.18.2 + dev: true + + /@typescript-eslint/type-utils@8.18.2(eslint@9.17.0)(typescript@5.7.2): + resolution: {integrity: sha512-AB/Wr1Lz31bzHfGm/jgbFR0VB0SML/hd2P1yxzKDM48YmP7vbyJNHRExUE/wZsQj2wUCvbWH8poNHFuxLqCTnA==} 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' dependencies: - '@typescript-eslint/typescript-estree': 8.18.1(typescript@5.7.2) - '@typescript-eslint/utils': 8.18.1(eslint@8.57.0)(typescript@5.7.2) + '@typescript-eslint/typescript-estree': 8.18.2(typescript@5.7.2) + '@typescript-eslint/utils': 8.18.2(eslint@9.17.0)(typescript@5.7.2) debug: 4.4.0 - eslint: 8.57.0 + eslint: 9.17.0 ts-api-utils: 1.4.3(typescript@5.7.2) typescript: 5.7.2 transitivePeerDependencies: @@ -2391,6 +2418,11 @@ packages: engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dev: true + /@typescript-eslint/types@8.18.2: + resolution: {integrity: sha512-Z/zblEPp8cIvmEn6+tPDIHUbRu/0z5lqZ+NvolL5SvXWT5rQy7+Nch83M0++XzO0XrWRFWECgOAyE8bsJTl1GQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true + /@typescript-eslint/typescript-estree@8.18.1(typescript@5.7.2): resolution: {integrity: sha512-z8U21WI5txzl2XYOW7i9hJhxoKKNG1kcU4RzyNvKrdZDmbjkmLBo8bgeiOJmA06kizLI76/CCBAAGlTlEeUfyg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2410,18 +2442,54 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@8.18.1(eslint@8.57.0)(typescript@5.7.2): + /@typescript-eslint/typescript-estree@8.18.2(typescript@5.7.2): + resolution: {integrity: sha512-WXAVt595HjpmlfH4crSdM/1bcsqh+1weFRWIa9XMTx/XHZ9TCKMcr725tLYqWOgzKdeDrqVHxFotrvWcEsk2Tg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.8.0' + dependencies: + '@typescript-eslint/types': 8.18.2 + '@typescript-eslint/visitor-keys': 8.18.2 + debug: 4.4.0 + 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.7.2) + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils@8.18.1(eslint@9.17.0)(typescript@5.7.2): resolution: {integrity: sha512-8vikiIj2ebrC4WRdcAdDcmnu9Q/MXXwg+STf40BVfT8exDqBCUPdypvzcUPxEqRGKg9ALagZ0UWcYCtn+4W2iQ==} 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' dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.17.0) '@typescript-eslint/scope-manager': 8.18.1 '@typescript-eslint/types': 8.18.1 '@typescript-eslint/typescript-estree': 8.18.1(typescript@5.7.2) - eslint: 8.57.0 + eslint: 9.17.0 + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils@8.18.2(eslint@9.17.0)(typescript@5.7.2): + resolution: {integrity: sha512-Cr4A0H7DtVIPkauj4sTSXVl+VBWewE9/o40KcF3TV9aqDEOWoXF3/+oRXNby3DYzZeCATvbdksYsGZzplwnK/Q==} + 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' + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@9.17.0) + '@typescript-eslint/scope-manager': 8.18.2 + '@typescript-eslint/types': 8.18.2 + '@typescript-eslint/typescript-estree': 8.18.2(typescript@5.7.2) + eslint: 9.17.0 typescript: 5.7.2 transitivePeerDependencies: - supports-color @@ -2435,8 +2503,12 @@ packages: eslint-visitor-keys: 4.2.0 dev: true - /@ungap/structured-clone@1.2.0: - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + /@typescript-eslint/visitor-keys@8.18.2: + resolution: {integrity: sha512-zORcwn4C3trOWiCqFQP1x6G3xTRyZ1LYydnj51cRnJ6hxBlr/cKPckk+PKPUw/fXmvfKTcw7bwY3w9izgx5jZw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + '@typescript-eslint/types': 8.18.2 + eslint-visitor-keys: 4.2.0 dev: true /@vitest/coverage-v8@2.1.8(vitest@2.1.8): @@ -2465,8 +2537,8 @@ packages: - supports-color dev: true - /@vitest/eslint-plugin@1.1.20(@typescript-eslint/utils@8.18.1)(eslint@8.57.0)(typescript@5.7.2)(vitest@2.1.8): - resolution: {integrity: sha512-2eLsgUm+GVOpDfNyH2do//MiNO/WZkXrPi+EjDmXEdUt6Jwnziq4H221L8vJE0aJys+l1FRfSkm4QbaIyDCfBg==} + /@vitest/eslint-plugin@1.1.21(@typescript-eslint/utils@8.18.2)(eslint@9.17.0)(typescript@5.7.2)(vitest@2.1.8): + resolution: {integrity: sha512-gIpmafm7WSwXGHq413q3fC26+nER5mQtM7Lqi7UusY5bSzeQIJmViC+G6CfPo06U0CfgZ+rt7FPaskpkZ2f6gg==} peerDependencies: '@typescript-eslint/utils': '>= 8.0' eslint: '>= 8.57.0' @@ -2478,8 +2550,8 @@ packages: vitest: optional: true dependencies: - '@typescript-eslint/utils': 8.18.1(eslint@8.57.0)(typescript@5.7.2) - eslint: 8.57.0 + '@typescript-eslint/utils': 8.18.2(eslint@9.17.0)(typescript@5.7.2) + eslint: 9.17.0 typescript: 5.7.2 vitest: 2.1.8(@types/node@22.10.2)(@vitest/ui@2.1.8)(jsdom@25.0.1) dev: true @@ -2560,18 +2632,12 @@ packages: tinyrainbow: 1.2.0 dev: true - /acorn-jsx@5.3.2(acorn@8.12.1): + /acorn-jsx@5.3.2(acorn@8.14.0): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.12.1 - dev: true - - /acorn@8.12.1: - resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} - engines: {node: '>=0.4.0'} - hasBin: true + acorn: 8.14.0 dev: true /acorn@8.14.0: @@ -2657,7 +2723,7 @@ packages: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.7 + es-abstract: 1.23.8 es-object-atoms: 1.0.0 get-intrinsic: 1.2.6 is-string: 1.1.1 @@ -2669,7 +2735,7 @@ packages: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.7 + es-abstract: 1.23.8 es-errors: 1.3.0 es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 @@ -2713,7 +2779,7 @@ packages: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.7 + es-abstract: 1.23.8 es-errors: 1.3.0 es-shim-unscopables: 1.0.2 dev: true @@ -2974,15 +3040,6 @@ packages: browserslist: 4.24.3 dev: true - /cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - dev: true - /cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} @@ -3053,18 +3110,6 @@ packages: ms: 2.1.3 dev: true - /debug@4.3.6: - resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - dev: true - /debug@4.4.0: resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} engines: {node: '>=6.0'} @@ -3130,13 +3175,6 @@ packages: esutils: 2.0.3 dev: true - /doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - dependencies: - esutils: 2.0.3 - dev: true - /dom-accessibility-api@0.5.16: resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} dev: true @@ -3151,7 +3189,7 @@ packages: dependencies: semver: 7.6.3 shelljs: 0.8.5 - typescript: 5.8.0-dev.20241222 + typescript: 5.8.0-dev.20241230 dev: true /dunder-proto@1.0.1: @@ -3179,6 +3217,14 @@ packages: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} dev: true + /enhanced-resolve@5.18.0: + resolution: {integrity: sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + dev: true + /entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -3237,6 +3283,61 @@ packages: which-typed-array: 1.1.18 dev: true + /es-abstract@1.23.8: + resolution: {integrity: sha512-lfab8IzDn6EpI1ibZakcgS6WsfEBiB+43cuJo+wgylx1xKXf+Sp+YR3vFuQwC/u3sxYwV8Cxe3B0DpVUu/WiJQ==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.3 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-set-tostringtag: 2.0.3 + es-to-primitive: 1.3.0 + function.prototype.name: 1.1.8 + get-intrinsic: 1.2.6 + get-symbol-description: 1.1.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 + is-callable: 1.2.7 + is-data-view: 1.0.2 + is-regex: 1.2.1 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.0 + math-intrinsics: 1.1.0 + object-inspect: 1.13.3 + object-keys: 1.1.1 + object.assign: 4.1.7 + own-keys: 1.0.1 + regexp.prototype.flags: 1.5.3 + safe-array-concat: 1.1.3 + safe-push-apply: 1.0.0 + safe-regex-test: 1.1.0 + string.prototype.trim: 1.2.10 + string.prototype.trimend: 1.0.9 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 + typed-array-length: 1.0.7 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.18 + dev: true + /es-define-property@1.0.1: resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} @@ -3254,7 +3355,7 @@ packages: call-bind: 1.0.8 call-bound: 1.0.3 define-properties: 1.2.1 - es-abstract: 1.23.7 + es-abstract: 1.23.8 es-errors: 1.3.0 es-set-tostringtag: 2.0.3 function-bind: 1.1.2 @@ -3378,24 +3479,6 @@ packages: engines: {node: '>=10'} dev: true - /eslint-config-prettier@9.1.0(eslint@8.57.0): - resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - dependencies: - eslint: 8.57.0 - dev: true - - /eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.31.0): - resolution: {integrity: sha512-WdviM1Eu834zsfjHtcGHtGfcu+F30Od3V7I9Fi57uhBEwPkjDcii7/yW8jAT+gOhn4P/vOxxNAXbFAKsrrc15w==} - engines: {node: '>= 4'} - peerDependencies: - eslint-plugin-import: '>=1.4.0' - dependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.18.1)(eslint@8.57.0) - dev: true - /eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} dependencies: @@ -3406,7 +3489,34 @@ packages: - supports-color dev: true - /eslint-module-utils@2.12.0(@typescript-eslint/parser@8.18.1)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): + /eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0)(eslint@9.17.0): + resolution: {integrity: sha512-Vrwyi8HHxY97K5ebydMtffsWAn1SCR9eol49eCd5fJS4O1WV7PaAjbcjmbfJJSMz/t4Mal212Uz/fQZrOB8mow==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + eslint-plugin-import-x: '*' + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true + dependencies: + '@nolyfill/is-core-module': 1.0.39 + debug: 4.4.0 + enhanced-resolve: 5.18.0 + eslint: 9.17.0 + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.18.2)(eslint-import-resolver-typescript@3.7.0)(eslint@9.17.0) + fast-glob: 3.3.2 + get-tsconfig: 4.8.1 + is-bun-module: 1.3.0 + is-glob: 4.0.3 + stable-hash: 0.0.4 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-module-utils@2.12.0(@typescript-eslint/parser@8.18.2)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@9.17.0): resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} engines: {node: '>=4'} peerDependencies: @@ -3427,15 +3537,16 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 8.18.1(eslint@8.57.0)(typescript@5.7.2) + '@typescript-eslint/parser': 8.18.2(eslint@9.17.0)(typescript@5.7.2) debug: 3.2.7 - eslint: 8.57.0 + eslint: 9.17.0 eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import@2.31.0)(eslint@9.17.0) transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.18.1)(eslint@8.57.0): + /eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.18.2)(eslint-import-resolver-typescript@3.7.0)(eslint@9.17.0): resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==} engines: {node: '>=4'} peerDependencies: @@ -3446,16 +3557,16 @@ packages: optional: true dependencies: '@rtsao/scc': 1.1.0 - '@typescript-eslint/parser': 8.18.1(eslint@8.57.0)(typescript@5.7.2) + '@typescript-eslint/parser': 8.18.2(eslint@9.17.0)(typescript@5.7.2) array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 array.prototype.flat: 1.3.3 array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.57.0 + eslint: 9.17.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.18.1)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.18.2)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@9.17.0) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -3472,7 +3583,7 @@ packages: - supports-color dev: true - /eslint-plugin-jest-dom@5.5.0(@testing-library/dom@10.4.0)(eslint@8.57.0): + /eslint-plugin-jest-dom@5.5.0(@testing-library/dom@10.4.0)(eslint@9.17.0): resolution: {integrity: sha512-CRlXfchTr7EgC3tDI7MGHY6QjdJU5Vv2RPaeeGtkXUHnKZf04kgzMPIJUXt4qKCvYWVVIEo9ut9Oq1vgXAykEA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6', yarn: '>=1'} peerDependencies: @@ -3484,33 +3595,12 @@ packages: dependencies: '@babel/runtime': 7.26.0 '@testing-library/dom': 10.4.0 - eslint: 8.57.0 + eslint: 9.17.0 requireindex: 1.2.0 dev: true - /eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.4.2): - resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - '@types/eslint': '>=8.0.0' - eslint: '>=8.0.0' - eslint-config-prettier: '*' - prettier: '>=3.0.0' - peerDependenciesMeta: - '@types/eslint': - optional: true - eslint-config-prettier: - optional: true - dependencies: - eslint: 8.57.0 - eslint-config-prettier: 9.1.0(eslint@8.57.0) - prettier: 3.4.2 - prettier-linter-helpers: 1.0.0 - synckit: 0.9.2 - dev: true - - /eslint-plugin-react-compiler@19.0.0-beta-201e55d-20241215(eslint@8.57.0): - resolution: {integrity: sha512-KTOMW6Z4Eg2r5BPT/BncbwPswfuVH9KPPDVszOTQFXGNlxhExL8IZoSE3blYxk4e0wFDbCcAwe4UlTauQ8lIww==} + /eslint-plugin-react-compiler@19.0.0-beta-55955c9-20241229(eslint@9.17.0): + resolution: {integrity: sha512-KsE6bQrNvtPDbMb9EolZ2C+Z2/uv2Y5cAUgN+pzbriXjKlf1FkbgiyE153m2mIT6gEZq2OrtFvX7uJj5IrNQlg==} engines: {node: ^14.17.0 || ^16.0.0 || >= 18.0.0} peerDependencies: eslint: '>=7' @@ -3518,7 +3608,7 @@ packages: '@babel/core': 7.26.0 '@babel/parser': 7.26.3 '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.26.0) - eslint: 8.57.0 + eslint: 9.17.0 hermes-parser: 0.25.1 zod: 3.24.1 zod-validation-error: 3.4.0(zod@3.24.1) @@ -3526,17 +3616,17 @@ packages: - supports-color dev: true - /eslint-plugin-react-hooks@5.1.0(eslint@8.57.0): + /eslint-plugin-react-hooks@5.1.0(eslint@9.17.0): resolution: {integrity: sha512-mpJRtPgHN2tNAvZ35AMfqeB3Xqeo273QxrHJsbBEPWODRM4r0yB6jfoROqKEYrOn27UtRPpcpHc2UqyBSuUNTw==} engines: {node: '>=10'} peerDependencies: 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.0 + eslint: 9.17.0 dev: true - /eslint-plugin-react@7.37.2(eslint@8.57.0): - resolution: {integrity: sha512-EsTAnj9fLVr/GZleBLFbj/sSuXeWmp1eXIN60ceYnZveqEaUCyW4X+Vh4WTdUhCkW4xutXYqTXCUSyqD4rB75w==} + /eslint-plugin-react@7.37.3(eslint@9.17.0): + resolution: {integrity: sha512-DomWuTQPFYZwF/7c9W2fkKkStqZmBd3uugfqBYLdkZ3Hii23WzZuOLUskGxB8qkSKqftxEeGL1TB2kMhrce0jA==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 @@ -3547,7 +3637,7 @@ packages: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.2.1 - eslint: 8.57.0 + eslint: 9.17.0 estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -3562,23 +3652,23 @@ packages: string.prototype.repeat: 1.0.0 dev: true - /eslint-plugin-testing-library@7.1.1(eslint@8.57.0)(typescript@5.7.2): + /eslint-plugin-testing-library@7.1.1(eslint@9.17.0)(typescript@5.7.2): resolution: {integrity: sha512-nszC833aZPwB6tik1nMkbFqmtgIXTT0sfJEYs0zMBKMlkQ4to2079yUV96SvmLh00ovSBJI4pgcBC1TiIP8mXg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0, pnpm: ^9.14.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 dependencies: '@typescript-eslint/scope-manager': 8.18.1 - '@typescript-eslint/utils': 8.18.1(eslint@8.57.0)(typescript@5.7.2) - eslint: 8.57.0 + '@typescript-eslint/utils': 8.18.1(eslint@9.17.0)(typescript@5.7.2) + eslint: 9.17.0 transitivePeerDependencies: - supports-color - typescript 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 @@ -3594,60 +3684,61 @@ packages: engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dev: true - /eslint@8.57.0: - resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /eslint@9.17.0: + resolution: {integrity: sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==} + 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.0(eslint@8.57.0) - '@eslint-community/regexpp': 4.11.0 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.57.0 - '@humanwhocodes/config-array': 0.11.14 + '@eslint-community/eslint-utils': 4.4.1(eslint@9.17.0) + '@eslint-community/regexpp': 4.12.1 + '@eslint/config-array': 0.19.1 + '@eslint/core': 0.9.1 + '@eslint/eslintrc': 3.2.0 + '@eslint/js': 9.17.0 + '@eslint/plugin-kit': 0.2.4 + '@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.3 - debug: 4.3.6 - doctrine: 3.0.0 + cross-spawn: 7.0.6 + debug: 4.4.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.1 + 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.12.1 - acorn-jsx: 5.3.2(acorn@8.12.1) - eslint-visitor-keys: 3.4.3 + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) + eslint-visitor-keys: 4.2.0 dev: true /esquery@1.6.0: @@ -3693,10 +3784,6 @@ packages: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true - /fast-diff@1.3.0: - resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - dev: true - /fast-glob@3.3.2: resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} @@ -3737,11 +3824,11 @@ packages: resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} 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 /fill-range@7.1.1: @@ -3759,17 +3846,12 @@ packages: path-exists: 4.0.0 dev: true - /flat-cache@3.2.0: - 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'} dependencies: - flatted: 3.3.1 + flatted: 3.3.2 keyv: 4.5.4 - rimraf: 3.0.2 - dev: true - - /flatted@3.3.1: - resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} dev: true /flatted@3.3.2: @@ -3919,11 +4001,9 @@ 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 /globalthis@1.0.4: @@ -4037,11 +4117,6 @@ packages: safer-buffer: 2.1.2 dev: true - /ignore@5.3.1: - resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} - engines: {node: '>= 4'} - dev: true - /ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} @@ -4122,6 +4197,12 @@ packages: has-tostringtag: 1.0.2 dev: true + /is-bun-module@1.3.0: + resolution: {integrity: sha512-DgXeu5UWI0IsMQundYb5UAOzm6G2eVnarJ0byP6Tm55iZNKceD59LNPA2L4VvsScTtHcw0yEkVwSf7PC+QoLSA==} + dependencies: + semver: 7.6.3 + dev: true + /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} @@ -4204,11 +4285,6 @@ packages: engines: {node: '>=0.12.0'} dev: true - /is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - dev: true - /is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} dev: true @@ -4649,10 +4725,6 @@ packages: engines: {node: '>=10'} dev: true - /ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - dev: true - /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: true @@ -4765,6 +4837,15 @@ packages: word-wrap: 1.2.5 dev: true + /own-keys@1.0.1: + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.6 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + dev: true + /p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} @@ -4869,13 +4950,6 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} - engines: {node: '>=6.0.0'} - dependencies: - fast-diff: 1.3.0 - dev: true - /prettier@3.4.2: resolution: {integrity: sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==} engines: {node: '>=14'} @@ -5078,14 +5152,6 @@ packages: engines: {iojs: '>=1.0.0', node: '>=0.10.0'} dev: true - /rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - dependencies: - glob: 7.2.3 - dev: true - /rollup-plugin-banner2@1.3.1: resolution: {integrity: sha512-BUxYj2FbSCxgfyvln6f1AWG1n+b1ZUXXb/LkKpClB12CTIjwDFexWw35V/STz7xT+BLat475I204aRzpxRQwKg==} engines: {node: '>=12.13'} @@ -5170,6 +5236,14 @@ packages: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: true + /safe-push-apply@1.0.0: + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + isarray: 2.0.5 + dev: true + /safe-regex-test@1.1.0: resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} engines: {node: '>= 0.4'} @@ -5361,6 +5435,10 @@ packages: deprecated: Please use @jridgewell/sourcemap-codec instead dev: true + /stable-hash@0.0.4: + resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==} + dev: true + /stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} dev: true @@ -5394,7 +5472,7 @@ packages: call-bind: 1.0.8 call-bound: 1.0.3 define-properties: 1.2.1 - es-abstract: 1.23.7 + es-abstract: 1.23.8 es-errors: 1.3.0 es-object-atoms: 1.0.0 get-intrinsic: 1.2.6 @@ -5410,7 +5488,7 @@ packages: resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} dependencies: define-properties: 1.2.1 - es-abstract: 1.23.7 + es-abstract: 1.23.8 dev: true /string.prototype.trim@1.2.10: @@ -5492,12 +5570,9 @@ packages: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: true - /synckit@0.9.2: - resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==} - engines: {node: ^14.18.0 || >=16.0.0} - dependencies: - '@pkgr/core': 0.1.1 - tslib: 2.8.1 + /tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} dev: true /terser@5.37.0: @@ -5520,10 +5595,6 @@ packages: minimatch: 9.0.5 dev: true - /text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - dev: true - /tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} dev: true @@ -5625,11 +5696,6 @@ packages: prelude-ls: 1.2.1 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'} @@ -5680,14 +5746,30 @@ packages: reflect.getprototypeof: 1.0.9 dev: true + /typescript-eslint@8.18.2(eslint@9.17.0)(typescript@5.7.2): + resolution: {integrity: sha512-KuXezG6jHkvC3MvizeXgupZzaG5wjhU3yE8E7e6viOvAvD9xAWYp8/vy0WULTGe9DYDWcQu7aW03YIV3mSitrQ==} + 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' + dependencies: + '@typescript-eslint/eslint-plugin': 8.18.2(@typescript-eslint/parser@8.18.2)(eslint@9.17.0)(typescript@5.7.2) + '@typescript-eslint/parser': 8.18.2(eslint@9.17.0)(typescript@5.7.2) + '@typescript-eslint/utils': 8.18.2(eslint@9.17.0)(typescript@5.7.2) + eslint: 9.17.0 + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color + dev: true + /typescript@5.7.2: resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==} engines: {node: '>=14.17'} hasBin: true dev: true - /typescript@5.8.0-dev.20241222: - resolution: {integrity: sha512-0LmynFBKqPM5ifRv3S5OlGJd9nAiDgQU1Tx3Kt1GbgCxATgeR2c4NiX5x1PqKlIKcB5R4inZcQm9YdUO1P6SXQ==} + /typescript@5.8.0-dev.20241230: + resolution: {integrity: sha512-cs631S0kQoinvsMJN2vwUNpROxcosWSk5dVr9OSRwpNpyffpA13juQS3bC5hn8UThuFBPobFkrj0p0pW9RxYmg==} engines: {node: '>=14.17'} hasBin: true dev: true diff --git a/rollup.config.js b/rollup.config.js index afd185f7a6..e552aa80a1 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -1,3 +1,4 @@ +/* eslint-disable no-undef */ const path = require('path') const alias = require('@rollup/plugin-alias') const babelPlugin = require('@rollup/plugin-babel') diff --git a/tests/react/abortable.test.tsx b/tests/react/abortable.test.tsx index ecb359bfdb..0060c125a4 100644 --- a/tests/react/abortable.test.tsx +++ b/tests/react/abortable.test.tsx @@ -6,7 +6,6 @@ import { useAtomValue, useSetAtom } from 'jotai/react' import { atom } from 'jotai/vanilla' const userEvent = { - // eslint-disable-next-line testing-library/no-unnecessary-act click: (element: Element) => act(() => userEventOrig.click(element)), } @@ -38,7 +37,6 @@ describe('abortable atom test', () => { ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( @@ -98,7 +96,6 @@ describe('abortable atom test', () => { ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( @@ -160,7 +157,6 @@ describe('abortable atom test', () => { ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( @@ -212,7 +208,6 @@ describe('abortable atom test', () => { ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( diff --git a/tests/react/async.test.tsx b/tests/react/async.test.tsx index 790d19bce9..c9e4d01b1b 100644 --- a/tests/react/async.test.tsx +++ b/tests/react/async.test.tsx @@ -7,7 +7,6 @@ import { atom } from 'jotai/vanilla' import type { Atom } from 'jotai/vanilla' const userEvent = { - // eslint-disable-next-line testing-library/no-unnecessary-act click: (element: Element) => act(() => userEventOrig.click(element)), } @@ -54,7 +53,6 @@ it('does not show async stale result', async () => { return
delayedCount: {delayedCount}
} - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( <> @@ -123,7 +121,6 @@ it('does not show async stale result on derived atom', async () => { ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( @@ -178,7 +175,6 @@ it('works with async get with extra deps', async () => { return
delayedCount: {delayedCount}
} - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( @@ -220,7 +216,6 @@ it('reuses promises on initial read', async () => { return
{str}
} - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( @@ -261,7 +256,6 @@ it('uses multiple async atoms at once', async () => { ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( @@ -301,7 +295,6 @@ it('uses async atom in the middle of dependency chain', async () => { ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( @@ -348,7 +341,6 @@ it('updates an async atom in child useEffect on remount without setTimeout', asy ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( <> @@ -404,7 +396,6 @@ it('updates an async atom in child useEffect on remount', async () => { ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( <> @@ -462,7 +453,6 @@ it('async get and useEffect on parent', async () => { ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( <> @@ -510,7 +500,6 @@ it('async get with another dep and useEffect on parent', async () => { ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( <> @@ -563,7 +552,6 @@ it('set promise atom value on write (#304)', async () => { ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( @@ -609,7 +597,6 @@ it('uses async atom double chain (#306)', async () => { ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( @@ -646,7 +633,6 @@ it('uses an async atom that depends on another async atom', async () => { return
num: {num}
} - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( @@ -835,7 +821,6 @@ it('should override promise as atom value (#430)', async () => { return } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( @@ -877,7 +862,6 @@ it('combine two promise atom values (#442)', async () => { return null } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( @@ -916,7 +900,6 @@ it('set two promise atoms at once', async () => { return } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( @@ -1014,7 +997,6 @@ it('async atom double chain without setTimeout (#751)', async () => { ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( @@ -1078,7 +1060,6 @@ it('async atom double chain with setTimeout', async () => { ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( @@ -1137,7 +1118,6 @@ it('update unmounted async atom with intermediate atom', async () => { ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( diff --git a/tests/react/async2.test.tsx b/tests/react/async2.test.tsx index 68c1f01986..2796d3a260 100644 --- a/tests/react/async2.test.tsx +++ b/tests/react/async2.test.tsx @@ -6,7 +6,6 @@ import { useAtom, useAtomValue, useSetAtom } from 'jotai/react' import { atom } from 'jotai/vanilla' const userEvent = { - // eslint-disable-next-line testing-library/no-unnecessary-act click: (element: Element) => act(() => userEventOrig.click(element)), } @@ -252,7 +251,6 @@ describe('infinite pending', () => { ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( @@ -297,7 +295,6 @@ describe('write to async atom twice', async () => { ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( @@ -333,7 +330,6 @@ describe('write to async atom twice', async () => { ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( @@ -369,7 +365,6 @@ describe('write to async atom twice', async () => { ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( diff --git a/tests/react/basic.test.tsx b/tests/react/basic.test.tsx index f9b48c7bf8..1581cfadb9 100644 --- a/tests/react/basic.test.tsx +++ b/tests/react/basic.test.tsx @@ -16,7 +16,6 @@ import { atom } from 'jotai/vanilla' import type { PrimitiveAtom } from 'jotai/vanilla' const userEvent = { - // eslint-disable-next-line testing-library/no-unnecessary-act click: (element: Element) => act(() => userEventOrig.click(element)), } @@ -289,7 +288,6 @@ it('works with async get', async () => { ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( <> @@ -334,7 +332,6 @@ it('works with async get without setTimeout', async () => { ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( @@ -883,7 +880,6 @@ it('async chain for multiple sync and async atoms (#443)', async () => { ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( diff --git a/tests/react/dependency.test.tsx b/tests/react/dependency.test.tsx index 3e2096f84e..6892ec0b64 100644 --- a/tests/react/dependency.test.tsx +++ b/tests/react/dependency.test.tsx @@ -1,3 +1,4 @@ +/* eslint-disable react/no-unescaped-entities */ import { StrictMode, Suspense, useEffect, useRef, useState } from 'react' import { act, render, screen, waitFor } from '@testing-library/react' import userEventOrig from '@testing-library/user-event' @@ -7,7 +8,6 @@ import { atom } from 'jotai/vanilla' import type { Atom, Getter } from 'jotai/vanilla' const userEvent = { - // eslint-disable-next-line testing-library/no-unnecessary-act click: (element: Element) => act(() => userEventOrig.click(element)), } @@ -73,7 +73,6 @@ it('works a primitive atom and a dependent async atom', async () => { ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( @@ -725,7 +724,6 @@ it('Should bail for derived async chains (#877)', async () => { ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( @@ -1037,7 +1035,6 @@ it('works with async dependencies (#2565)', async () => { ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( diff --git a/tests/react/error.test.tsx b/tests/react/error.test.tsx index f0d939b28b..bde6f7eac4 100644 --- a/tests/react/error.test.tsx +++ b/tests/react/error.test.tsx @@ -14,7 +14,6 @@ import { useAtom } from 'jotai/react' import { atom } from 'jotai/vanilla' const userEvent = { - // eslint-disable-next-line testing-library/no-unnecessary-act click: (element: Element) => act(() => userEventOrig.click(element)), } @@ -194,7 +193,6 @@ it('can throw an initial error in async read function', async () => { ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( @@ -231,7 +229,6 @@ it('can throw an error in async read function', async () => { ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( @@ -559,7 +556,6 @@ describe('error recovery', () => { return
Value: {useAtom(asyncAtom)[0]}
} - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( diff --git a/tests/react/onmount.test.tsx b/tests/react/onmount.test.tsx index ae024fd03c..cb6efba053 100644 --- a/tests/react/onmount.test.tsx +++ b/tests/react/onmount.test.tsx @@ -6,7 +6,6 @@ import { useAtom } from 'jotai/react' import { atom } from 'jotai/vanilla' const userEvent = { - // eslint-disable-next-line testing-library/no-unnecessary-act click: (element: Element) => act(() => userEventOrig.click(element)), } @@ -328,7 +327,6 @@ it('mount/unmount test with async atom', async () => { ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( <> @@ -510,7 +508,6 @@ it('create atom with onMount in async get', async () => { ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( diff --git a/tests/react/vanilla-utils/atomFamily.test.tsx b/tests/react/vanilla-utils/atomFamily.test.tsx index 3f6962fe84..e4b22aaec3 100644 --- a/tests/react/vanilla-utils/atomFamily.test.tsx +++ b/tests/react/vanilla-utils/atomFamily.test.tsx @@ -8,7 +8,6 @@ import type { SetStateAction, WritableAtom } from 'jotai/vanilla' import { atomFamily } from 'jotai/vanilla/utils' const userEvent = { - // eslint-disable-next-line testing-library/no-unnecessary-act click: (element: Element) => act(() => userEventOrig.click(element)), } @@ -244,7 +243,6 @@ it('a derived atom from an async atomFamily (#351)', async () => { ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( diff --git a/tests/react/vanilla-utils/atomWithDefault.test.tsx b/tests/react/vanilla-utils/atomWithDefault.test.tsx index 41e2c5a29e..0e8f6d6256 100644 --- a/tests/react/vanilla-utils/atomWithDefault.test.tsx +++ b/tests/react/vanilla-utils/atomWithDefault.test.tsx @@ -7,7 +7,6 @@ import { atom } from 'jotai/vanilla' import { RESET, atomWithDefault } from 'jotai/vanilla/utils' const userEvent = { - // eslint-disable-next-line testing-library/no-unnecessary-act click: (element: Element) => act(() => userEventOrig.click(element)), } @@ -71,7 +70,6 @@ it('simple async get default', async () => { ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( @@ -168,7 +166,6 @@ it('refresh async atoms to default values', async () => { ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( diff --git a/tests/react/vanilla-utils/atomWithObservable.test.tsx b/tests/react/vanilla-utils/atomWithObservable.test.tsx index 7ca0cd198c..c5232db582 100644 --- a/tests/react/vanilla-utils/atomWithObservable.test.tsx +++ b/tests/react/vanilla-utils/atomWithObservable.test.tsx @@ -10,7 +10,6 @@ import { atom, createStore } from 'jotai/vanilla' import { atomWithObservable } from 'jotai/vanilla/utils' const userEvent = { - // eslint-disable-next-line testing-library/no-unnecessary-act click: (element: Element) => act(() => userEventOrig.click(element)), } @@ -129,7 +128,6 @@ it('writable count state without initial value', async () => { return } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( @@ -174,7 +172,6 @@ it('writable count state with delayed value', async () => { ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( @@ -208,7 +205,6 @@ it('only subscribe once per atom', async () => { } let rerender: (ui: ReactNode) => void - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { ;({ rerender } = render( <> @@ -257,7 +253,6 @@ it('cleanup subscription', async () => { } let rerender: (ui: ReactNode) => void - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { ;({ rerender } = render( @@ -297,7 +292,6 @@ it('resubscribe on remount', async () => { ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( @@ -387,7 +381,6 @@ it('writable count state with error', async () => { ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( @@ -486,7 +479,6 @@ it('with initially emitted undefined value', async () => { return <>count: {state === undefined ? '-' : state} } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( @@ -524,7 +516,6 @@ it("don't omit values emitted between init and mount", async () => { ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( @@ -574,8 +565,6 @@ describe('error handling', () => { )} ) : ( - // below rule should not consider render() inside class component - // eslint-disable-next-line testing-library/no-node-access this.props.children ) } @@ -594,7 +583,6 @@ describe('error handling', () => { ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( @@ -651,7 +639,6 @@ describe('error handling', () => { ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( @@ -743,7 +730,6 @@ describe('error handling', () => { ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( @@ -784,7 +770,6 @@ describe('wonka', () => { return <>count: {count} } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( @@ -819,7 +804,6 @@ describe('wonka', () => { return } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( diff --git a/tests/react/vanilla-utils/atomWithRefresh.test.tsx b/tests/react/vanilla-utils/atomWithRefresh.test.tsx index 66feb7b4d9..335f2272f5 100644 --- a/tests/react/vanilla-utils/atomWithRefresh.test.tsx +++ b/tests/react/vanilla-utils/atomWithRefresh.test.tsx @@ -6,7 +6,6 @@ import { useAtom } from 'jotai/react' import { atomWithRefresh } from 'jotai/vanilla/utils' const userEvent = { - // eslint-disable-next-line testing-library/no-unnecessary-act click: (element: Element) => act(() => userEventOrig.click(element)), } @@ -59,7 +58,6 @@ it('async counter', async () => { ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render( diff --git a/tests/react/vanilla-utils/atomWithStorage.test.tsx b/tests/react/vanilla-utils/atomWithStorage.test.tsx index 179568da58..b705328e43 100644 --- a/tests/react/vanilla-utils/atomWithStorage.test.tsx +++ b/tests/react/vanilla-utils/atomWithStorage.test.tsx @@ -242,7 +242,6 @@ describe('atomWithStorage (async)', () => { ) } - // eslint-disable-next-line testing-library/no-unnecessary-act await act(async () => { render(