diff --git a/README.md b/README.md index cb5ac72..0ace60a 100644 --- a/README.md +++ b/README.md @@ -8,5 +8,18 @@ For installation guide and setup please visit each package's readme. [@bigcommerce/eslint-plugin](packages/eslint-plugin) -## ESlint 9 Compatibility -Due to a [significant change](https://eslint.org/blog/2023/10/flat-config-rollout-plans/) in ESLint 9, this configuration set currently **requires** ESLint 8. In order to avoid peer dependency resolution issues, you need to also install `eslint` in your project, using the same version range as that found in [package.json](./package.json). +## ESLint 9 Compatibility + +This configuration now **requires ESLint 9** and uses the new [flat config format](https://eslint.org/docs/latest/use/configure/configuration-files). + +### Breaking Changes from v2.x + +- **ESLint 9 Required**: This version requires ESLint ^9.0.0 +- **Flat Config Format**: Configurations now use ESLint's flat config format +- **ES Modules**: All packages now use ES modules (`"type": "module"`) +- **No Patch Required**: The `require('@bigcommerce/eslint-config/patch')` is no longer needed (and won't work) +- **Import Instead of Require**: Use `import` instead of `require` in your config files + +### Migration Guide + +See the package README files for migration instructions from ESLint 8 to ESLint 9. diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..70553fd --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,39 @@ +import globals from 'globals'; + +import config from './packages/eslint-config/index.js'; + +const baseConfig = await config; + +export default [ + { + ignores: ['**/node_modules/**', '**/__snapshots__/**', '**/dist/**', '**/build/**'], + }, + ...baseConfig, + { + languageOptions: { + globals: { + ...globals.node, + }, + }, + settings: { + 'import/resolver': { + node: { + extensions: ['.js', '.jsx', '.ts', '.tsx'], + }, + }, + 'import/core-modules': [ + '@typescript-eslint/eslint-plugin', + '@typescript-eslint/parser', + '@typescript-eslint/rule-tester', + ], + }, + rules: { + // Allow .js extensions in ES module imports + 'import/extensions': ['error', 'ignorePackages'], + // Allow __dirname in ES modules + 'no-underscore-dangle': ['error', { allow: ['__dirname', '__filename'] }], + // Allow dynamic imports without webpack chunkname + 'import/dynamic-import-chunkname': 'off', + }, + }, +]; diff --git a/package.json b/package.json index 789cae7..b1ded07 100644 --- a/package.json +++ b/package.json @@ -2,6 +2,7 @@ "name": "@bigcommerce/eslint", "version": "1.0.1", "description": "Default ESLint configuration used at BigCommerce", + "type": "module", "private": true, "author": "BigCommerce", "license": "MIT", @@ -16,14 +17,16 @@ "scripts": { "lint": "eslint . --ext .js", "release": "lerna publish --sign-git-commit --sign-git-tag --git-remote origin --pre-dist-tag next", - "test": "jest --projects packages/*" + "test": "NODE_OPTIONS='--experimental-vm-modules' jest --projects packages/*" }, "devDependencies": { - "eslint": "^8.14.0", + "eslint": "^9.0.0", "jest": "^29.7.0", "lerna": "^8.1.2", "typescript": "^5.0.2" }, - "dependencies": {}, + "dependencies": { + "globals": "^15.0.0" + }, "packageManager": "yarn@1.22.22+sha256.c17d3797fb9a9115bf375e31bfd30058cac6bc9c3b8807a3d8cb2094794b51ca" } diff --git a/packages/eslint-config/README.md b/packages/eslint-config/README.md index 0780a6e..b74219f 100644 --- a/packages/eslint-config/README.md +++ b/packages/eslint-config/README.md @@ -1,30 +1,27 @@ # @bigcommerce/eslint-config -This package is a configuration preset for [ESLint](https://eslint.org/). - +This package is a configuration preset for [ESLint](https://eslint.org/) using the new flat config format (ESLint 9+). ## Install ```sh -npm install --save-dev eslint prettier +npm install --save-dev eslint@^9.0.0 prettier npm install --save-dev @bigcommerce/eslint-config ``` - ## Usage -Add `@bigcommerce/eslint-config` to your project's ESLint configuration file. i.e.: +Create an `eslint.config.js` file in your project root: ```js -// .eslintrc.js -require('@bigcommerce/eslint-config/patch'); +// eslint.config.js +import config from '@bigcommerce/eslint-config'; -module.exports = { - extends: ['@bigcommerce/eslint-config'], -}; +export default config; ``` -This config also runs prettier via eslint, add the following to your `package.json` +This config also runs prettier via eslint, add the following to your `package.json`: + ```json { "prettier": "@bigcommerce/eslint-config/prettier" @@ -33,28 +30,49 @@ This config also runs prettier via eslint, add the following to your `package.js Stylistic rules are considered `warnings` for better developer experience, however, we recommend running CI with: + ``` eslint --max-warnings 0 ``` ## Usage with Next.js -Make sure to also extend from next's `core-web-vitals`. +For Next.js projects, you can combine this config with Next.js's built-in ESLint configuration: ```js -// .eslintrc.js -require('@bigcommerce/eslint-config/patch'); +// eslint.config.js +import config from '@bigcommerce/eslint-config'; +import { FlatCompat } from '@eslint/eslintrc'; + +const compat = new FlatCompat(); -module.exports = { - extends: ['@bigcommerce/eslint-config', 'next/core-web-vitals'], -}; +export default [ + ...config, + ...compat.extends('next/core-web-vitals'), +]; ``` +## Migration from ESLint 8 + +### Breaking Changes + +- **ESLint 9 Required**: This version requires ESLint ^9.0.0 +- **Flat Config Format**: Use `eslint.config.js` instead of `.eslintrc.js` +- **ES Modules**: Configuration must use ES module syntax +- **No Patch Required**: Remove `require('@bigcommerce/eslint-config/patch')` + +### Migration Steps + +1. **Update ESLint**: `npm install --save-dev eslint@^9.0.0` +2. **Update this package**: `npm install --save-dev @bigcommerce/eslint-config@latest` +3. **Delete old config**: Remove `.eslintrc.js` or `.eslintrc.json` +4. **Create new config**: Create `eslint.config.js` with the usage example above +5. **Remove patch import**: Delete any `require('@bigcommerce/eslint-config/patch')` calls + ## Release Please refer to the documentation of [lerna](https://github.com/lerna/lerna) for release options. - ## License MIT diff --git a/packages/eslint-config/configs/base.js b/packages/eslint-config/configs/base.js index 30d1fa3..9dd5053 100644 --- a/packages/eslint-config/configs/base.js +++ b/packages/eslint-config/configs/base.js @@ -1,336 +1,352 @@ -/** @type {import("eslint").Linter.Config} */ -module.exports = { - env: { - browser: true, - es6: true, - }, - extends: ['eslint:recommended', 'plugin:import/errors', 'plugin:import/warnings'], - parserOptions: { - ecmaVersion: 'latest', - sourceType: 'module', - }, - plugins: ['import', 'gettext', 'switch-case', '@stylistic'], - reportUnusedDisableDirectives: true, - rules: { - '@stylistic/padding-line-between-statements': [ - 'warn', - { - blankLine: 'always', - next: 'return', - prev: '*', - }, - { - blankLine: 'always', - next: ['block', 'block-like', 'class', 'const', 'let', 'var', 'interface'], - prev: '*', - }, - { - blankLine: 'always', - next: '*', - prev: ['block', 'block-like', 'class', 'const', 'let', 'var', 'interface'], - }, - { - blankLine: 'any', - next: ['const', 'let', 'var'], - prev: ['const', 'let', 'var'], - }, - { - blankLine: 'any', - next: ['case'], - prev: ['case'], - }, - { - blankLine: 'always', - next: '*', - prev: 'directive', - }, - { - blankLine: 'any', - next: 'directive', - prev: 'directive', - }, - ], - '@stylistic/spaced-comment': [ - 'warn', - 'always', - { - block: { balanced: true, exceptions: ['-', '+'], markers: ['=', '!'] }, - line: { exceptions: ['-', '+'], markers: ['=', '!'] }, - }, - ], - 'array-callback-return': 'error', - 'arrow-body-style': ['error', 'as-needed', { requireReturnForObjectLiteral: false }], - 'block-scoped-var': 'error', - camelcase: ['error', { properties: 'never' }], - complexity: 'error', - 'consistent-return': 'error', - 'default-case': ['error'], - 'default-param-last': 'error', - 'dot-notation': ['error', { allowKeywords: true }], - eqeqeq: ['error', 'smart'], - 'func-names': 'error', - 'getter-return': ['error', { allowImplicit: true }], - 'gettext/no-variable-string': 'error', - 'guard-for-in': 'error', - 'import/default': 'off', - 'import/dynamic-import-chunkname': 'error', - 'import/extensions': [ - 'error', - { - js: 'never', - json: 'always', - jsx: 'never', - ts: 'never', - tsx: 'never', - }, - ], - 'import/newline-after-import': 'warn', - 'import/no-absolute-path': 'error', - 'import/no-amd': 'error', - 'import/no-duplicates': ['warn', { 'prefer-inline': true }], - 'import/no-dynamic-require': 'error', - 'import/no-extraneous-dependencies': 'error', - 'import/no-mutable-exports': 'error', - 'import/no-named-default': 'error', - 'import/no-unresolved': ['error', { caseSensitive: true, commonjs: true }], - 'import/no-webpack-loader-syntax': 'error', - 'import/order': [ - 'warn', - { - alphabetize: { caseInsensitive: true, order: 'asc' }, - groups: [['builtin', 'external'], 'internal', 'parent', 'sibling', 'index'], - 'newlines-between': 'always', - }, - ], - 'max-classes-per-file': ['error', 1], - 'new-cap': [ - 'error', - { - capIsNew: false, - capIsNewExceptions: ['Immutable.Map', 'Immutable.Set', 'Immutable.List'], - newIsCap: true, - newIsCapExceptions: [], - }, - ], - 'no-alert': 'warn', - 'no-array-constructor': 'error', - 'no-await-in-loop': 'error', - 'no-bitwise': 'error', - 'no-caller': 'error', - 'no-cond-assign': ['error', 'always'], - 'no-console': 'warn', - 'no-constant-condition': 'warn', - 'no-continue': 'error', - 'no-duplicate-imports': 'error', - 'no-else-return': ['error', { allowElseIf: true }], - 'no-empty-function': ['error', { allow: ['arrowFunctions', 'functions', 'methods'] }], - 'no-eval': 'error', - 'no-extend-native': 'error', - 'no-extra-bind': 'error', - 'no-extra-label': 'error', - 'no-implied-eval': 'error', - 'no-iterator': 'error', - 'no-label-var': 'error', - 'no-labels': ['error', { allowLoop: false, allowSwitch: false }], - 'no-lone-blocks': 'error', - 'no-lonely-if': 'error', - 'no-loop-func': 'error', - 'no-multi-assign': ['error'], - 'no-multi-str': 'error', - 'no-nested-ternary': 'error', - 'no-new': 'error', - 'no-new-func': 'error', - 'no-new-wrappers': 'error', - 'no-object-constructor': 'error', - 'no-octal-escape': 'error', - 'no-param-reassign': ['error', { props: false }], - 'no-plusplus': 'error', - 'no-proto': 'error', - 'no-prototype-builtins': 'off', - 'no-restricted-globals': [ - 'error', - 'isFinite', - 'isNaN', - 'addEventListener', - 'blur', - 'close', - 'closed', - 'confirm', - 'defaultStatus', - 'event', - 'external', - 'defaultstatus', - 'find', - 'focus', - 'frameElement', - 'frames', - 'history', - 'innerHeight', - 'innerWidth', - 'length', - 'location', - 'locationbar', - 'menubar', - 'moveBy', - 'moveTo', - 'name', - 'onblur', - 'onerror', - 'onfocus', - 'onload', - 'onresize', - 'onunload', - 'open', - 'opener', - 'opera', - 'outerHeight', - 'outerWidth', - 'pageXOffset', - 'pageYOffset', - 'parent', - 'print', - 'removeEventListener', - 'resizeBy', - 'resizeTo', - 'screen', - 'screenLeft', - 'screenTop', - 'screenX', - 'screenY', - 'scroll', - 'scrollbars', - 'scrollBy', - 'scrollTo', - 'scrollX', - 'scrollY', - 'self', - 'status', - 'statusbar', - 'stop', - 'toolbar', - 'top', - ], - 'no-restricted-imports': ['error'], - 'no-restricted-properties': [ - 'error', - { - message: 'arguments.callee is deprecated', - object: 'arguments', - property: 'callee', - }, - { - message: 'Please use Number.isFinite instead', - object: 'global', - property: 'isFinite', - }, - { - message: 'Please use Number.isFinite instead', - object: 'self', - property: 'isFinite', - }, - { - message: 'Please use Number.isFinite instead', - object: 'window', - property: 'isFinite', - }, - { - message: 'Please use Number.isNaN instead', - object: 'global', - property: 'isNaN', - }, - { - message: 'Please use Number.isNaN instead', - object: 'self', - property: 'isNaN', - }, - { - message: 'Please use Number.isNaN instead', - object: 'window', - property: 'isNaN', - }, - { - message: 'Please use Object.defineProperty instead.', - property: '__defineGetter__', - }, - { - message: 'Please use Object.defineProperty instead.', - property: '__defineSetter__', - }, - { - message: 'Use the exponentiation operator (**) instead.', - object: 'Math', - property: 'pow', - }, - ], - 'no-restricted-syntax': [ - 'error', - { - message: - 'for..in loops iterate over the entire prototype chain, which is virtually never what you want. Use Object.{keys,values,entries}, and iterate over the resulting array.', - selector: 'ForInStatement', - }, - { - message: - 'iterators/generators require regenerator-runtime, which is too heavyweight for this guide to allow them. Separately, loops should be avoided in favor of array iterations.', - selector: 'ForOfStatement', - }, - { - message: - 'Labels are a form of GOTO; using them makes code confusing and hard to maintain and understand.', - selector: 'LabeledStatement', - }, - { - message: - '`with` is disallowed in strict mode because it makes code impossible to predict and optimize.', - selector: 'WithStatement', - }, - { - message: 'Property setters are not allowed', - selector: 'MethodDefinition[kind="set"]', - }, - { - message: 'Property getters are not allowed', - selector: 'MethodDefinition[kind="get"]', +import js from '@eslint/js'; +import stylisticPlugin from '@stylistic/eslint-plugin'; +import gettextPlugin from 'eslint-plugin-gettext'; +import importPlugin from 'eslint-plugin-import'; +import switchCasePlugin from 'eslint-plugin-switch-case'; +import globals from 'globals'; + +export default [ + js.configs.recommended, + { + languageOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + globals: { + ...globals.browser, + ...globals.es2021, }, - ], - 'no-return-assign': ['error', 'except-parens'], - 'no-script-url': 'error', - 'no-self-compare': 'error', - 'no-sequences': 'error', - 'no-shadow': ['error', { hoist: 'all' }], - 'no-template-curly-in-string': 'error', - 'no-undef-init': 'error', - 'no-underscore-dangle': ['error', { allowAfterSuper: true, allowAfterThis: true }], - 'no-unneeded-ternary': ['error', { defaultAssignment: false }], - 'no-unused-expressions': 'error', - 'no-unused-vars': ['error', { args: 'after-used', ignoreRestSiblings: true, vars: 'all' }], - 'no-use-before-define': ['error', 'nofunc'], - 'no-useless-computed-key': 'error', - 'no-useless-concat': 'error', - 'no-useless-constructor': 'error', - 'no-useless-rename': [ - 'error', - { ignoreDestructuring: false, ignoreExport: false, ignoreImport: false }, - ], - 'no-useless-return': 'error', - 'no-var': 'error', - 'no-void': ['error', { allowAsStatement: true }], - 'object-shorthand': ['error', 'always', { avoidQuotes: true, ignoreConstructors: false }], - 'one-var': ['error', 'never'], - 'operator-assignment': ['error', 'always'], - 'prefer-arrow-callback': ['error', { allowNamedFunctions: false, allowUnboundThis: true }], - 'prefer-const': ['error', { destructuring: 'any', ignoreReadBeforeAssign: true }], - 'prefer-numeric-literals': 'error', - 'prefer-rest-params': 'error', - 'prefer-template': 'error', - radix: 'error', - 'sort-imports': ['error', { ignoreCase: true, ignoreDeclarationSort: true }], - strict: 'error', - 'switch-case/newline-between-switch-case': ['warn', 'always', { fallthrough: 'never' }], - 'symbol-description': 'error', - 'valid-jsdoc': ['error', { requireParamDescription: false, requireReturnDescription: false }], - 'valid-typeof': ['error', { requireStringLiterals: true }], - 'vars-on-top': 'error', - yoda: 'error', + }, + plugins: { + import: importPlugin, + gettext: gettextPlugin, + 'switch-case': switchCasePlugin, + '@stylistic': stylisticPlugin, + }, + settings: {}, + linterOptions: { + reportUnusedDisableDirectives: 'error', + }, + rules: { + '@stylistic/padding-line-between-statements': [ + 'warn', + { + blankLine: 'always', + next: 'return', + prev: '*', + }, + { + blankLine: 'always', + next: ['block', 'block-like', 'class', 'const', 'let', 'var', 'interface'], + prev: '*', + }, + { + blankLine: 'always', + next: '*', + prev: ['block', 'block-like', 'class', 'const', 'let', 'var', 'interface'], + }, + { + blankLine: 'any', + next: ['const', 'let', 'var'], + prev: ['const', 'let', 'var'], + }, + { + blankLine: 'any', + next: ['case'], + prev: ['case'], + }, + { + blankLine: 'always', + next: '*', + prev: 'directive', + }, + { + blankLine: 'any', + next: 'directive', + prev: 'directive', + }, + ], + '@stylistic/spaced-comment': [ + 'warn', + 'always', + { + block: { balanced: true, exceptions: ['-', '+'], markers: ['=', '!'] }, + line: { exceptions: ['-', '+'], markers: ['=', '!'] }, + }, + ], + 'array-callback-return': 'error', + 'arrow-body-style': ['error', 'as-needed', { requireReturnForObjectLiteral: false }], + 'block-scoped-var': 'error', + camelcase: ['error', { properties: 'never' }], + complexity: 'error', + 'consistent-return': 'error', + 'default-case': ['error'], + 'default-param-last': 'error', + 'dot-notation': ['error', { allowKeywords: true }], + eqeqeq: ['error', 'smart'], + 'func-names': 'error', + 'getter-return': ['error', { allowImplicit: true }], + 'gettext/no-variable-string': 'error', + 'guard-for-in': 'error', + 'import/default': 'off', + 'import/dynamic-import-chunkname': 'error', + 'import/extensions': [ + 'error', + { + js: 'never', + json: 'always', + jsx: 'never', + ts: 'never', + tsx: 'never', + }, + ], + 'import/newline-after-import': 'warn', + 'import/no-absolute-path': 'error', + 'import/no-amd': 'error', + 'import/no-duplicates': ['warn', { 'prefer-inline': true }], + 'import/no-dynamic-require': 'error', + 'import/no-extraneous-dependencies': 'error', + 'import/no-mutable-exports': 'error', + 'import/no-named-default': 'error', + 'import/no-unresolved': ['error', { caseSensitive: true, commonjs: true }], + 'import/no-webpack-loader-syntax': 'error', + 'import/order': [ + 'warn', + { + alphabetize: { caseInsensitive: true, order: 'asc' }, + groups: [['builtin', 'external'], 'internal', 'parent', 'sibling', 'index'], + 'newlines-between': 'always', + }, + ], + 'max-classes-per-file': ['error', 1], + 'new-cap': [ + 'error', + { + capIsNew: false, + capIsNewExceptions: ['Immutable.Map', 'Immutable.Set', 'Immutable.List'], + newIsCap: true, + newIsCapExceptions: [], + }, + ], + 'no-alert': 'warn', + 'no-array-constructor': 'error', + 'no-await-in-loop': 'error', + 'no-bitwise': 'error', + 'no-caller': 'error', + 'no-cond-assign': ['error', 'always'], + 'no-console': 'warn', + 'no-constant-condition': 'warn', + 'no-continue': 'error', + 'no-duplicate-imports': 'error', + 'no-else-return': ['error', { allowElseIf: true }], + 'no-empty-function': ['error', { allow: ['arrowFunctions', 'functions', 'methods'] }], + 'no-eval': 'error', + 'no-extend-native': 'error', + 'no-extra-bind': 'error', + 'no-extra-label': 'error', + 'no-implied-eval': 'error', + 'no-iterator': 'error', + 'no-label-var': 'error', + 'no-labels': ['error', { allowLoop: false, allowSwitch: false }], + 'no-lone-blocks': 'error', + 'no-lonely-if': 'error', + 'no-loop-func': 'error', + 'no-multi-assign': ['error'], + 'no-multi-str': 'error', + 'no-nested-ternary': 'error', + 'no-new': 'error', + 'no-new-func': 'error', + 'no-new-wrappers': 'error', + 'no-object-constructor': 'error', + 'no-octal-escape': 'error', + 'no-param-reassign': ['error', { props: false }], + 'no-plusplus': 'error', + 'no-proto': 'error', + 'no-prototype-builtins': 'off', + 'no-restricted-globals': [ + 'error', + 'isFinite', + 'isNaN', + 'addEventListener', + 'blur', + 'close', + 'closed', + 'confirm', + 'defaultStatus', + 'event', + 'external', + 'defaultstatus', + 'find', + 'focus', + 'frameElement', + 'frames', + 'history', + 'innerHeight', + 'innerWidth', + 'length', + 'location', + 'locationbar', + 'menubar', + 'moveBy', + 'moveTo', + 'name', + 'onblur', + 'onerror', + 'onfocus', + 'onload', + 'onresize', + 'onunload', + 'open', + 'opener', + 'opera', + 'outerHeight', + 'outerWidth', + 'pageXOffset', + 'pageYOffset', + 'parent', + 'print', + 'removeEventListener', + 'resizeBy', + 'resizeTo', + 'screen', + 'screenLeft', + 'screenTop', + 'screenX', + 'screenY', + 'scroll', + 'scrollbars', + 'scrollBy', + 'scrollTo', + 'scrollX', + 'scrollY', + 'self', + 'status', + 'statusbar', + 'stop', + 'toolbar', + 'top', + ], + 'no-restricted-imports': ['error'], + 'no-restricted-properties': [ + 'error', + { + message: 'arguments.callee is deprecated', + object: 'arguments', + property: 'callee', + }, + { + message: 'Please use Number.isFinite instead', + object: 'global', + property: 'isFinite', + }, + { + message: 'Please use Number.isFinite instead', + object: 'self', + property: 'isFinite', + }, + { + message: 'Please use Number.isFinite instead', + object: 'window', + property: 'isFinite', + }, + { + message: 'Please use Number.isNaN instead', + object: 'global', + property: 'isNaN', + }, + { + message: 'Please use Number.isNaN instead', + object: 'self', + property: 'isNaN', + }, + { + message: 'Please use Number.isNaN instead', + object: 'window', + property: 'isNaN', + }, + { + message: 'Please use Object.defineProperty instead.', + property: '__defineGetter__', + }, + { + message: 'Please use Object.defineProperty instead.', + property: '__defineSetter__', + }, + { + message: 'Use the exponentiation operator (**) instead.', + object: 'Math', + property: 'pow', + }, + ], + 'no-restricted-syntax': [ + 'error', + { + message: + 'for..in loops iterate over the entire prototype chain, which is virtually never what you want. Use Object.{keys,values,entries}, and iterate over the resulting array.', + selector: 'ForInStatement', + }, + { + message: + 'iterators/generators require regenerator-runtime, which is too heavyweight for this guide to allow them. Separately, loops should be avoided in favor of array iterations.', + selector: 'ForOfStatement', + }, + { + message: + 'Labels are a form of GOTO; using them makes code confusing and hard to maintain and understand.', + selector: 'LabeledStatement', + }, + { + message: + '`with` is disallowed in strict mode because it makes code impossible to predict and optimize.', + selector: 'WithStatement', + }, + { + message: 'Property setters are not allowed', + selector: 'MethodDefinition[kind="set"]', + }, + { + message: 'Property getters are not allowed', + selector: 'MethodDefinition[kind="get"]', + }, + ], + 'no-return-assign': ['error', 'except-parens'], + 'no-script-url': 'error', + 'no-self-compare': 'error', + 'no-sequences': 'error', + 'no-shadow': ['error', { hoist: 'all' }], + 'no-template-curly-in-string': 'error', + 'no-undef-init': 'error', + 'no-underscore-dangle': ['error', { allowAfterSuper: true, allowAfterThis: true }], + 'no-unneeded-ternary': ['error', { defaultAssignment: false }], + 'no-unused-expressions': 'error', + 'no-unused-vars': ['error', { args: 'after-used', ignoreRestSiblings: true, vars: 'all' }], + 'no-use-before-define': ['error', 'nofunc'], + 'no-useless-computed-key': 'error', + 'no-useless-concat': 'error', + 'no-useless-constructor': 'error', + 'no-useless-rename': [ + 'error', + { ignoreDestructuring: false, ignoreExport: false, ignoreImport: false }, + ], + 'no-useless-return': 'error', + 'no-var': 'error', + 'no-void': ['error', { allowAsStatement: true }], + 'object-shorthand': ['error', 'always', { avoidQuotes: true, ignoreConstructors: false }], + 'one-var': ['error', 'never'], + 'operator-assignment': ['error', 'always'], + 'prefer-arrow-callback': ['error', { allowNamedFunctions: false, allowUnboundThis: true }], + 'prefer-const': ['error', { destructuring: 'any', ignoreReadBeforeAssign: true }], + 'prefer-numeric-literals': 'error', + 'prefer-rest-params': 'error', + 'prefer-template': 'error', + radix: 'error', + 'sort-imports': ['error', { ignoreCase: true, ignoreDeclarationSort: true }], + strict: 'error', + 'switch-case/newline-between-switch-case': ['warn', 'always', { fallthrough: 'never' }], + 'symbol-description': 'error', + 'valid-jsdoc': ['error', { requireParamDescription: false, requireReturnDescription: false }], + 'valid-typeof': ['error', { requireStringLiterals: true }], + 'vars-on-top': 'error', + yoda: 'error', + }, }, -}; +]; diff --git a/packages/eslint-config/configs/jest-dom.js b/packages/eslint-config/configs/jest-dom.js index 43db30b..6ae252f 100644 --- a/packages/eslint-config/configs/jest-dom.js +++ b/packages/eslint-config/configs/jest-dom.js @@ -1,5 +1,13 @@ -/** @type {import("eslint").Linter.Config} */ -module.exports = { - extends: 'plugin:jest-dom/recommended', - plugins: ['jest-dom'], -}; +import jestDomPlugin from 'eslint-plugin-jest-dom'; + +export default [ + { + files: ['**/*.spec.*', '**/spec.*', 'jest-setup.*'], + plugins: { + 'jest-dom': jestDomPlugin, + }, + rules: { + ...jestDomPlugin.configs.recommended.rules, + }, + }, +]; diff --git a/packages/eslint-config/configs/jest.js b/packages/eslint-config/configs/jest.js index 5e94c95..13d8d29 100644 --- a/packages/eslint-config/configs/jest.js +++ b/packages/eslint-config/configs/jest.js @@ -1,31 +1,43 @@ -/** @type {import("eslint").Linter.Config} */ -module.exports = { - env: { - jest: true, - }, - extends: ['plugin:jest/recommended', 'plugin:jest/style'], - plugins: ['jest', 'jest-formatting'], - rules: { - 'import/no-extraneous-dependencies': [ - 'error', - { - devDependencies: true, - optionalDependencies: false, - }, - ], - 'jest-formatting/padding-around-all': 'warn', - 'jest/no-conditional-in-test': 'error', - 'jest/no-done-callback': 'off', - 'jest/no-duplicate-hooks': 'off', - 'jest/no-restricted-matchers': [ - 'error', - { - toBeFalsy: 'Avoid `toBeFalsy`, use `toBe(false)` instead.', - toBeTruthy: 'Avoid `toBeTruthy`, use `toBe(true)` instead.', +import jestPlugin from 'eslint-plugin-jest'; +import jestFormattingPlugin from 'eslint-plugin-jest-formatting'; +import globals from 'globals'; + +export default [ + { + files: ['**/*.spec.*', '**/spec.*', 'jest-setup.*'], + languageOptions: { + globals: { + ...globals.jest, }, - ], - 'jest/no-test-return-statement': 'error', - 'jest/prefer-hooks-on-top': 'error', - 'jest/prefer-todo': 'error', + }, + plugins: { + jest: jestPlugin, + 'jest-formatting': jestFormattingPlugin, + }, + rules: { + ...jestPlugin.configs.recommended.rules, + ...jestPlugin.configs.style.rules, + 'import/no-extraneous-dependencies': [ + 'error', + { + devDependencies: true, + optionalDependencies: false, + }, + ], + 'jest-formatting/padding-around-all': 'warn', + 'jest/no-conditional-in-test': 'error', + 'jest/no-done-callback': 'off', + 'jest/no-duplicate-hooks': 'off', + 'jest/no-restricted-matchers': [ + 'error', + { + toBeFalsy: 'Avoid `toBeFalsy`, use `toBe(false)` instead.', + toBeTruthy: 'Avoid `toBeTruthy`, use `toBe(true)` instead.', + }, + ], + 'jest/no-test-return-statement': 'error', + 'jest/prefer-hooks-on-top': 'error', + 'jest/prefer-todo': 'error', + }, }, -}; +]; diff --git a/packages/eslint-config/configs/jsdoc.js b/packages/eslint-config/configs/jsdoc.js index 0b5b676..2af4815 100644 --- a/packages/eslint-config/configs/jsdoc.js +++ b/packages/eslint-config/configs/jsdoc.js @@ -1,16 +1,21 @@ -/** @type {import("eslint").Linter.Config} */ -module.exports = { - plugins: ['jsdoc'], - rules: { - 'jsdoc/check-alignment': 'error', - 'jsdoc/check-param-names': 'error', - 'jsdoc/check-syntax': 'error', - 'jsdoc/check-tag-names': 'error', - 'jsdoc/implements-on-classes': 'error', - 'jsdoc/require-param-name': 'error', - 'jsdoc/require-param-type': 'error', - 'jsdoc/require-returns-check': 'error', - 'jsdoc/require-returns-type': 'error', - 'valid-jsdoc': 'off', +import jsdocPlugin from 'eslint-plugin-jsdoc'; + +export default [ + { + plugins: { + jsdoc: jsdocPlugin, + }, + rules: { + 'jsdoc/check-alignment': 'error', + 'jsdoc/check-param-names': 'error', + 'jsdoc/check-syntax': 'error', + 'jsdoc/check-tag-names': 'error', + 'jsdoc/implements-on-classes': 'error', + 'jsdoc/require-param-name': 'error', + 'jsdoc/require-param-type': 'error', + 'jsdoc/require-returns-check': 'error', + 'jsdoc/require-returns-type': 'error', + 'valid-jsdoc': 'off', + }, }, -}; +]; diff --git a/packages/eslint-config/configs/prettier.js b/packages/eslint-config/configs/prettier.js index e642266..b2239af 100644 --- a/packages/eslint-config/configs/prettier.js +++ b/packages/eslint-config/configs/prettier.js @@ -1,11 +1,13 @@ -const path = require('path'); +import prettierConfig from 'eslint-config-prettier'; +import prettierPlugin from 'eslint-plugin-prettier'; +import { readFileSync } from 'fs'; +import path from 'path'; -const defaultConfig = require('../prettier.config'); +import defaultPrettierConfig from '../prettier.config.js'; function getRules() { const pkgPath = path.resolve(process.cwd(), 'package.json'); - // eslint-disable-next-line import/no-dynamic-require - const pkg = require(pkgPath); + const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8')); if (pkg.prettier !== '@bigcommerce/eslint-config/prettier') { throw new Error(` @@ -17,12 +19,18 @@ function getRules() { return { curly: ['error', 'all'], - 'prettier/prettier': ['warn', defaultConfig, { usePrettierrc: false }], + 'prettier/prettier': ['warn', defaultPrettierConfig, { usePrettierrc: false }], }; } -/** @type {import("eslint").Linter.Config} */ -module.exports = { - extends: ['plugin:prettier/recommended'], - rules: getRules(), -}; +export default [ + { + plugins: { + prettier: prettierPlugin, + }, + rules: { + ...prettierConfig.rules, + ...getRules(), + }, + }, +]; diff --git a/packages/eslint-config/configs/react.js b/packages/eslint-config/configs/react.js index 0a6ff75..64663b4 100644 --- a/packages/eslint-config/configs/react.js +++ b/packages/eslint-config/configs/react.js @@ -1,72 +1,79 @@ -/** @type {import("eslint").Linter.Config} */ -module.exports = { - extends: [ - 'plugin:react/recommended', - 'plugin:react-hooks/recommended', - 'plugin:jsx-a11y/recommended', - ], - parserOptions: { - ecmaFeatures: { - jsx: true, - }, - }, - plugins: ['react-hooks'], - rules: { - // Remove when https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/pull/757 gets released - 'jsx-a11y/no-onchange': 'off', - 'react-hooks/exhaustive-deps': 'error', - 'react-hooks/rules-of-hooks': 'error', - 'react/destructuring-assignment': 'error', - 'react/display-name': 'off', - 'react/jsx-curly-brace-presence': [ - 'error', - { - children: 'never', - propElementValues: 'always', - props: 'never', - }, - ], - 'react/jsx-fragments': ['error', 'syntax'], - 'react/jsx-no-bind': [ - 'error', - { - allowArrowFunctions: true, +import jsxA11yPlugin from 'eslint-plugin-jsx-a11y'; +import reactPlugin from 'eslint-plugin-react'; +import reactHooksPlugin from 'eslint-plugin-react-hooks'; + +export default [ + { + files: ['**/*.js', '**/*.jsx', '**/*.ts', '**/*.tsx'], + languageOptions: { + parserOptions: { + ecmaFeatures: { + jsx: true, + }, }, - ], - 'react/jsx-no-useless-fragment': 'error', - 'react/jsx-pascal-case': 'error', - 'react/jsx-sort-props': 'warn', - 'react/no-redundant-should-component-update': 'error', - 'react/no-this-in-sfc': 'error', - 'react/no-unescaped-entities': [ - 'error', - { - forbid: [ - { alternatives: ['>'], char: '>' }, - { alternatives: ['}'], char: '}' }, - ], + }, + plugins: { + react: reactPlugin, + 'react-hooks': reactHooksPlugin, + 'jsx-a11y': jsxA11yPlugin, + }, + settings: { + react: { + version: 'detect', }, - ], - 'react/no-unsafe': 'error', - 'react/no-unused-state': 'error', - 'react/prefer-es6-class': 'error', - 'react/prefer-read-only-props': 'error', - 'react/prop-types': 'off', - 'react/self-closing-comp': 'error', - 'react/style-prop-object': 'error', - }, - settings: { - react: { - version: 'detect', + }, + rules: { + ...reactPlugin.configs.recommended.rules, + ...reactHooksPlugin.configs.recommended.rules, + ...jsxA11yPlugin.configs.recommended.rules, + // Remove when https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/pull/757 gets released + 'jsx-a11y/no-onchange': 'off', + 'react-hooks/exhaustive-deps': 'error', + 'react-hooks/rules-of-hooks': 'error', + 'react/destructuring-assignment': 'error', + 'react/display-name': 'off', + 'react/jsx-curly-brace-presence': [ + 'error', + { + children: 'never', + propElementValues: 'always', + props: 'never', + }, + ], + 'react/jsx-fragments': ['error', 'syntax'], + 'react/jsx-no-bind': [ + 'error', + { + allowArrowFunctions: true, + }, + ], + 'react/jsx-no-useless-fragment': 'error', + 'react/jsx-pascal-case': 'error', + 'react/jsx-sort-props': 'warn', + 'react/no-redundant-should-component-update': 'error', + 'react/no-this-in-sfc': 'error', + 'react/no-unescaped-entities': [ + 'error', + { + forbid: [ + { alternatives: ['>'], char: '>' }, + { alternatives: ['}'], char: '}' }, + ], + }, + ], + 'react/no-unsafe': 'error', + 'react/no-unused-state': 'error', + 'react/prefer-es6-class': 'error', + 'react/prefer-read-only-props': 'error', + 'react/prop-types': 'off', + 'react/self-closing-comp': 'error', + 'react/style-prop-object': 'error', }, }, - // eslint-disable-next-line sort-keys - overrides: [ - { - files: ['**/*.ts'], - rules: { - 'react/jsx-filename-extension': [1, { extensions: ['.tsx'] }], - }, + { + files: ['**/*.ts'], + rules: { + 'react/jsx-filename-extension': [1, { extensions: ['.tsx'] }], }, - ], -}; + }, +]; diff --git a/packages/eslint-config/configs/testing-library.js b/packages/eslint-config/configs/testing-library.js index 2b77f04..000a072 100644 --- a/packages/eslint-config/configs/testing-library.js +++ b/packages/eslint-config/configs/testing-library.js @@ -1,8 +1,14 @@ -/** @type {import("eslint").Linter.Config} */ -module.exports = { - extends: ['plugin:testing-library/react'], - plugins: ['testing-library'], - rules: { - 'testing-library/no-render-in-lifecycle': 'off', +import testingLibraryPlugin from 'eslint-plugin-testing-library'; + +export default [ + { + files: ['**/*.spec.*', '**/spec.*', 'jest-setup.*'], + plugins: { + 'testing-library': testingLibraryPlugin, + }, + rules: { + ...testingLibraryPlugin.configs.react.rules, + 'testing-library/no-render-in-lifecycle': 'off', + }, }, -}; +]; diff --git a/packages/eslint-config/configs/typescript.js b/packages/eslint-config/configs/typescript.js index 54c57c9..7d1b0f4 100644 --- a/packages/eslint-config/configs/typescript.js +++ b/packages/eslint-config/configs/typescript.js @@ -1,176 +1,179 @@ -const { join } = require('path'); +import bigcommercePlugin from '@bigcommerce/eslint-plugin'; +import tseslint from '@typescript-eslint/eslint-plugin'; +import tsParser from '@typescript-eslint/parser'; +import { join } from 'path'; -/** @type {import("eslint").Linter.Config} */ -module.exports = { - extends: [ - 'plugin:import/typescript', - 'plugin:@typescript-eslint/stylistic-type-checked', - 'plugin:@typescript-eslint/strict-type-checked', - 'plugin:@bigcommerce/recommended', - ], - parser: '@typescript-eslint/parser', - parserOptions: { - project: join(process.cwd(), 'tsconfig.json'), - }, - plugins: ['@typescript-eslint'], - rules: { - '@typescript-eslint/array-type': [ - 'error', - { - default: 'array-simple', - }, - ], - '@typescript-eslint/await-thenable': 'error', - '@typescript-eslint/block-spacing': 'off', - '@typescript-eslint/consistent-generic-constructors': 'off', - '@typescript-eslint/consistent-type-assertions': [ - 'error', - { - assertionStyle: 'never', - }, - ], - '@typescript-eslint/consistent-type-definitions': 'error', - '@typescript-eslint/default-param-last': ['error'], - '@typescript-eslint/dot-notation': [ - 'error', - { - allowKeywords: true, - }, - ], - '@typescript-eslint/explicit-function-return-type': 'off', - '@typescript-eslint/explicit-member-accessibility': [ - 'error', - { - accessibility: 'no-public', - }, - ], - '@typescript-eslint/explicit-module-boundary-types': 'off', - '@typescript-eslint/key-spacing': 'off', - '@typescript-eslint/lines-around-comment': 'off', - '@typescript-eslint/member-ordering': 'error', - '@typescript-eslint/naming-convention': [ - 'error', - { - format: ['camelCase', 'PascalCase'], - selector: 'default', - }, - { - format: ['camelCase', 'PascalCase', 'UPPER_CASE'], - selector: 'variable', - }, - { - format: ['camelCase', 'UPPER_CASE'], - selector: 'variable', - types: ['boolean', 'string', 'number', 'array'], - }, - { - format: ['camelCase'], - selector: 'property', - }, - { - format: ['camelCase'], - selector: 'parameterProperty', - }, - { - format: ['PascalCase'], - selector: 'typeLike', - }, - { - format: ['PascalCase', 'UPPER_CASE'], - selector: 'enumMember', +export default [ + { + files: ['**/*.ts', '**/*.tsx'], + languageOptions: { + parser: tsParser, + parserOptions: { + project: join(process.cwd(), 'tsconfig.json'), }, - { - format: ['camelCase'], - selector: 'parameter', - }, - { - format: ['camelCase'], - leadingUnderscore: 'allow', - modifiers: ['unused'], - selector: 'parameter', - }, - { - format: null, - modifiers: ['requiresQuotes'], - selector: ['objectLiteralProperty', 'typeProperty'], - }, - ], - '@typescript-eslint/no-confusing-void-expression': ['error', { ignoreArrowShorthand: true }], - '@typescript-eslint/no-explicit-any': 'error', - '@typescript-eslint/no-misused-promises': [ - 'error', - { - checksVoidReturn: { - attributes: false, + }, + plugins: { + '@typescript-eslint': tseslint, + '@bigcommerce': bigcommercePlugin, + }, + settings: { + 'import/resolver': { + typescript: { + alwaysTryTypes: true, }, }, - ], - '@typescript-eslint/no-namespace': [ - 'error', - { - allowDeclarations: true, - }, - ], - '@typescript-eslint/no-shadow': ['error', { hoist: 'all' }], - '@typescript-eslint/no-unnecessary-condition': 'error', - '@typescript-eslint/no-unnecessary-type-assertion': 'error', - '@typescript-eslint/no-unused-expressions': 'error', - '@typescript-eslint/no-unused-vars': [ - 'error', - { - args: 'after-used', - ignoreRestSiblings: true, - vars: 'all', - }, - ], - '@typescript-eslint/no-use-before-define': ['error', 'nofunc'], - '@typescript-eslint/no-useless-constructor': 'error', - '@typescript-eslint/prefer-for-of': 'error', - '@typescript-eslint/prefer-function-type': 'error', - '@typescript-eslint/require-await': 'error', - '@typescript-eslint/restrict-template-expressions': ['error', { allowNumber: true }], - '@typescript-eslint/return-await': 'error', - '@typescript-eslint/unbound-method': 'off', - '@typescript-eslint/unified-signatures': 'error', - // The following rules are off mostly due to incompatibilities with their - // @typescript-eslint version - camelcase: 'off', - 'consistent-return': 'off', - 'default-case': 'off', - 'default-param-last': 'off', - 'import/named': 'off', - 'no-duplicate-imports': 'off', - 'no-shadow': 'off', - 'no-throw-literal': 'off', - 'no-unused-expressions': 'off', - 'no-unused-vars': 'off', - 'no-use-before-define': 'off', - 'no-useless-constructor': 'off', - 'sort-keys': 'off', - }, - settings: { - 'import/resolver': { - typescript: { - alwaysTryTypes: true, - }, + }, + rules: { + ...tseslint.configs['stylistic-type-checked'].rules, + ...tseslint.configs['strict-type-checked'].rules, + '@typescript-eslint/array-type': [ + 'error', + { + default: 'array-simple', + }, + ], + '@typescript-eslint/await-thenable': 'error', + '@typescript-eslint/block-spacing': 'off', + '@typescript-eslint/consistent-generic-constructors': 'off', + '@typescript-eslint/consistent-type-assertions': [ + 'error', + { + assertionStyle: 'never', + }, + ], + '@typescript-eslint/consistent-type-definitions': 'error', + '@typescript-eslint/default-param-last': ['error'], + '@typescript-eslint/dot-notation': [ + 'error', + { + allowKeywords: true, + }, + ], + '@typescript-eslint/explicit-function-return-type': 'off', + '@typescript-eslint/explicit-member-accessibility': [ + 'error', + { + accessibility: 'no-public', + }, + ], + '@typescript-eslint/explicit-module-boundary-types': 'off', + '@typescript-eslint/key-spacing': 'off', + '@typescript-eslint/lines-around-comment': 'off', + '@typescript-eslint/member-ordering': 'error', + '@typescript-eslint/naming-convention': [ + 'error', + { + format: ['camelCase', 'PascalCase'], + selector: 'default', + }, + { + format: ['camelCase', 'PascalCase', 'UPPER_CASE'], + selector: 'variable', + }, + { + format: ['camelCase', 'UPPER_CASE'], + selector: 'variable', + types: ['boolean', 'string', 'number', 'array'], + }, + { + format: ['camelCase'], + selector: 'property', + }, + { + format: ['camelCase'], + selector: 'parameterProperty', + }, + { + format: ['PascalCase'], + selector: 'typeLike', + }, + { + format: ['PascalCase', 'UPPER_CASE'], + selector: 'enumMember', + }, + { + format: ['camelCase'], + selector: 'parameter', + }, + { + format: ['camelCase'], + leadingUnderscore: 'allow', + modifiers: ['unused'], + selector: 'parameter', + }, + { + format: null, + modifiers: ['requiresQuotes'], + selector: ['objectLiteralProperty', 'typeProperty'], + }, + ], + '@typescript-eslint/no-confusing-void-expression': ['error', { ignoreArrowShorthand: true }], + '@typescript-eslint/no-explicit-any': 'error', + '@typescript-eslint/no-misused-promises': [ + 'error', + { + checksVoidReturn: { + attributes: false, + }, + }, + ], + '@typescript-eslint/no-namespace': [ + 'error', + { + allowDeclarations: true, + }, + ], + '@typescript-eslint/no-shadow': ['error', { hoist: 'all' }], + '@typescript-eslint/no-unnecessary-condition': 'error', + '@typescript-eslint/no-unnecessary-type-assertion': 'error', + '@typescript-eslint/no-unused-expressions': 'error', + '@typescript-eslint/no-unused-vars': [ + 'error', + { + args: 'after-used', + ignoreRestSiblings: true, + vars: 'all', + }, + ], + '@typescript-eslint/no-use-before-define': ['error', 'nofunc'], + '@typescript-eslint/no-useless-constructor': 'error', + '@typescript-eslint/prefer-for-of': 'error', + '@typescript-eslint/prefer-function-type': 'error', + '@typescript-eslint/require-await': 'error', + '@typescript-eslint/restrict-template-expressions': ['error', { allowNumber: true }], + '@typescript-eslint/return-await': 'error', + '@typescript-eslint/unbound-method': 'off', + '@typescript-eslint/unified-signatures': 'error', + // The following rules are off mostly due to incompatibilities with their + // @typescript-eslint version + camelcase: 'off', + 'consistent-return': 'off', + 'default-case': 'off', + 'default-param-last': 'off', + 'import/named': 'off', + 'no-duplicate-imports': 'off', + 'no-shadow': 'off', + 'no-throw-literal': 'off', + 'no-unused-expressions': 'off', + 'no-unused-vars': 'off', + 'no-use-before-define': 'off', + 'no-useless-constructor': 'off', + 'sort-keys': 'off', }, }, // We add an additional `/` marker for .d.ts files to allow for triple-slash directives // eg: /// - // eslint-disable-next-line sort-keys - overrides: [ - { - files: ['**/*.d.ts'], - rules: { - '@stylistic/spaced-comment': [ - 'warn', - 'always', - { - block: { balanced: true, exceptions: ['-', '+'], markers: ['=', '!'] }, - line: { exceptions: ['-', '+'], markers: ['=', '!', '/'] }, - }, - ], - }, + { + files: ['**/*.d.ts'], + rules: { + '@stylistic/spaced-comment': [ + 'warn', + 'always', + { + block: { balanced: true, exceptions: ['-', '+'], markers: ['=', '!'] }, + line: { exceptions: ['-', '+'], markers: ['=', '!', '/'] }, + }, + ], }, - ], -}; + }, +]; diff --git a/packages/eslint-config/index.js b/packages/eslint-config/index.js index 38f5378..328128c 100644 --- a/packages/eslint-config/index.js +++ b/packages/eslint-config/index.js @@ -1,35 +1,56 @@ -const { hasPackage } = require('./utils'); - -module.exports = { - extends: ['./configs/base', './configs/jsdoc', './configs/prettier'], - overrides: [ - hasPackage('jest') && { - extends: './configs/jest', - files: ['**/*.spec.*', '**/spec.*', 'jest-setup.*'], - }, - hasPackage('@testing-library/jest-dom') && { - extends: './configs/jest-dom', - files: ['**/*.spec.*', '**/spec.*', 'jest-setup.*'], - }, - hasPackage('@testing-library/react') && { - extends: './configs/testing-library', - files: ['**/*.spec.*', '**/spec.*', 'jest-setup.*'], - }, - hasPackage('react') && { - extends: './configs/react', - files: ['**/*.ts', '**/*.tsx', '**/*.js', '**/*.jsx'], - }, - hasPackage('typescript') && { - extends: './configs/typescript', - files: ['**/*.ts', '**/*.tsx'], - }, - { - env: { - es6: true, - node: true, +import globals from 'globals'; + +import baseConfig from './configs/base.js'; +import jestDomConfig from './configs/jest-dom.js'; +import jestConfig from './configs/jest.js'; +import jsdocConfig from './configs/jsdoc.js'; +import prettierConfig from './configs/prettier.js'; +import reactConfig from './configs/react.js'; +import testingLibraryConfig from './configs/testing-library.js'; +import typescriptConfig from './configs/typescript.js'; +import { hasPackage } from './utils/index.js'; + +export default (async () => { + const configs = [ + // Base configurations + ...baseConfig, + ...jsdocConfig, + ...prettierConfig, + ]; + + // Conditionally add test-related configs + if (await hasPackage('jest')) { + configs.push(...jestConfig); + } + + if (await hasPackage('@testing-library/jest-dom')) { + configs.push(...jestDomConfig); + } + + if (await hasPackage('@testing-library/react')) { + configs.push(...testingLibraryConfig); + } + + // Conditionally add React config + if (await hasPackage('react')) { + configs.push(...reactConfig); + } + + // Conditionally add TypeScript config + if (await hasPackage('typescript')) { + configs.push(...typescriptConfig); + } + + // Add Node.js environment for .js files in the root + configs.push({ + files: ['*.js'], + languageOptions: { + globals: { + ...globals.es2021, + ...globals.node, }, - files: '*.js', }, - ].filter(Boolean), - root: true, -}; + }); + + return configs; +})(); diff --git a/packages/eslint-config/jest.config.js b/packages/eslint-config/jest.config.js index 32f68c0..fa9bf79 100644 --- a/packages/eslint-config/jest.config.js +++ b/packages/eslint-config/jest.config.js @@ -1,6 +1,8 @@ /** @type {import('jest').Config} */ const config = { testPathIgnorePatterns: ['/__.*/', '/node_modules/'], + transform: {}, + testEnvironment: 'node', }; -module.exports = config; +export default config; diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index 8f9a347..582a4e9 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -2,11 +2,11 @@ "name": "@bigcommerce/eslint-config", "version": "2.11.0", "description": "Default ESLint configuration used at BigCommerce", + "type": "module", "main": "index.js", "files": [ "index.js", "configs", - "patch", "plugin", "utils", "prettier", @@ -21,7 +21,7 @@ }, "dependencies": { "@bigcommerce/eslint-plugin": "^1.4.0", - "@rushstack/eslint-patch": "^1.10.5", + "@eslint/js": "^9.0.0", "@stylistic/eslint-plugin": "^2.1.0", "@typescript-eslint/eslint-plugin": "^8.26.0", "@typescript-eslint/parser": "^8.26.0", @@ -39,6 +39,7 @@ "eslint-plugin-react-hooks": "^5.2.0", "eslint-plugin-switch-case": "^1.1.2", "eslint-plugin-testing-library": "^7.1.1", + "globals": "^15.0.0", "prettier": "^3.5.3" }, "devDependencies": { @@ -47,7 +48,7 @@ "react": "^18.3.1" }, "peerDependencies": { - "eslint": "^8.0.0", + "eslint": "^9.0.0", "typescript": "^4.0.0 || ^5.0.0" }, "peerDependenciesMeta": { diff --git a/packages/eslint-config/patch/index.js b/packages/eslint-config/patch/index.js deleted file mode 100644 index 3ec0ebe..0000000 --- a/packages/eslint-config/patch/index.js +++ /dev/null @@ -1 +0,0 @@ -require('@rushstack/eslint-patch/modern-module-resolution'); diff --git a/packages/eslint-config/prettier.config.js b/packages/eslint-config/prettier.config.js index 3c0f46c..888cab6 100644 --- a/packages/eslint-config/prettier.config.js +++ b/packages/eslint-config/prettier.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { printWidth: 100, singleQuote: true, trailingComma: 'all', diff --git a/packages/eslint-config/prettier/index.js b/packages/eslint-config/prettier/index.js deleted file mode 100644 index bd837c6..0000000 --- a/packages/eslint-config/prettier/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../prettier.config'); diff --git a/packages/eslint-config/test/__snapshots__/d.ts.spec.js.snap b/packages/eslint-config/test/__snapshots__/d.ts.spec.js.snap index 7794fe6..333ff39 100644 --- a/packages/eslint-config/test/__snapshots__/d.ts.spec.js.snap +++ b/packages/eslint-config/test/__snapshots__/d.ts.spec.js.snap @@ -2,48 +2,1235 @@ exports[`keeps rules stable 1`] = ` { - "env": { - "browser": true, - "es6": true, - }, - "globals": {}, - "ignorePatterns": [], - "noInlineConfig": undefined, - "parser": "/node_modules/@typescript-eslint/parser/dist/index.js", - "parserOptions": { - "ecmaFeatures": { - "jsx": true, + "language": "@/js", + "languageOptions": { + "ecmaVersion": 2026, + "globals": { + "AI": false, + "AITextSession": false, + "AbortController": false, + "AbortSignal": false, + "AbsoluteOrientationSensor": false, + "AbstractRange": false, + "Accelerometer": false, + "AggregateError": false, + "AnalyserNode": false, + "Animation": false, + "AnimationEffect": false, + "AnimationEvent": false, + "AnimationPlaybackEvent": false, + "AnimationTimeline": false, + "Array": false, + "ArrayBuffer": false, + "Atomics": false, + "Attr": false, + "Audio": false, + "AudioBuffer": false, + "AudioBufferSourceNode": false, + "AudioContext": false, + "AudioData": false, + "AudioDecoder": false, + "AudioDestinationNode": false, + "AudioEncoder": false, + "AudioListener": false, + "AudioNode": false, + "AudioParam": false, + "AudioParamMap": false, + "AudioProcessingEvent": false, + "AudioScheduledSourceNode": false, + "AudioSinkInfo": false, + "AudioWorklet": false, + "AudioWorkletGlobalScope": false, + "AudioWorkletNode": false, + "AudioWorkletProcessor": false, + "AuthenticatorAssertionResponse": false, + "AuthenticatorAttestationResponse": false, + "AuthenticatorResponse": false, + "BackgroundFetchManager": false, + "BackgroundFetchRecord": false, + "BackgroundFetchRegistration": false, + "BarProp": false, + "BarcodeDetector": false, + "BaseAudioContext": false, + "BatteryManager": false, + "BeforeUnloadEvent": false, + "BigInt": false, + "BigInt64Array": false, + "BigUint64Array": false, + "BiquadFilterNode": false, + "Blob": false, + "BlobEvent": false, + "Bluetooth": false, + "BluetoothCharacteristicProperties": false, + "BluetoothDevice": false, + "BluetoothRemoteGATTCharacteristic": false, + "BluetoothRemoteGATTDescriptor": false, + "BluetoothRemoteGATTServer": false, + "BluetoothRemoteGATTService": false, + "BluetoothUUID": false, + "Boolean": false, + "BroadcastChannel": false, + "BrowserCaptureMediaStreamTrack": false, + "ByteLengthQueuingStrategy": false, + "CDATASection": false, + "CSS": false, + "CSSAnimation": false, + "CSSConditionRule": false, + "CSSContainerRule": false, + "CSSCounterStyleRule": false, + "CSSFontFaceRule": false, + "CSSFontFeatureValuesRule": false, + "CSSFontPaletteValuesRule": false, + "CSSGroupingRule": false, + "CSSImageValue": false, + "CSSImportRule": false, + "CSSKeyframeRule": false, + "CSSKeyframesRule": false, + "CSSKeywordValue": false, + "CSSLayerBlockRule": false, + "CSSLayerStatementRule": false, + "CSSMarginRule": false, + "CSSMathClamp": false, + "CSSMathInvert": false, + "CSSMathMax": false, + "CSSMathMin": false, + "CSSMathNegate": false, + "CSSMathProduct": false, + "CSSMathSum": false, + "CSSMathValue": false, + "CSSMatrixComponent": false, + "CSSMediaRule": false, + "CSSNamespaceRule": false, + "CSSNestedDeclarations": false, + "CSSNumericArray": false, + "CSSNumericValue": false, + "CSSPageDescriptors": false, + "CSSPageRule": false, + "CSSPerspective": false, + "CSSPositionTryDescriptors": false, + "CSSPositionTryRule": false, + "CSSPositionValue": false, + "CSSPropertyRule": false, + "CSSRotate": false, + "CSSRule": false, + "CSSRuleList": false, + "CSSScale": false, + "CSSScopeRule": false, + "CSSSkew": false, + "CSSSkewX": false, + "CSSSkewY": false, + "CSSStartingStyleRule": false, + "CSSStyleDeclaration": false, + "CSSStyleRule": false, + "CSSStyleSheet": false, + "CSSStyleValue": false, + "CSSSupportsRule": false, + "CSSTransformComponent": false, + "CSSTransformValue": false, + "CSSTransition": false, + "CSSTranslate": false, + "CSSUnitValue": false, + "CSSUnparsedValue": false, + "CSSVariableReferenceValue": false, + "CSSViewTransitionRule": false, + "Cache": false, + "CacheStorage": false, + "CanvasCaptureMediaStream": false, + "CanvasCaptureMediaStreamTrack": false, + "CanvasGradient": false, + "CanvasPattern": false, + "CanvasRenderingContext2D": false, + "CaptureController": false, + "CaretPosition": false, + "ChannelMergerNode": false, + "ChannelSplitterNode": false, + "ChapterInformation": false, + "CharacterBoundsUpdateEvent": false, + "CharacterData": false, + "Clipboard": false, + "ClipboardEvent": false, + "ClipboardItem": false, + "CloseEvent": false, + "CloseWatcher": false, + "Comment": false, + "CompositionEvent": false, + "CompressionStream": false, + "ConstantSourceNode": false, + "ContentVisibilityAutoStateChangeEvent": false, + "ConvolverNode": false, + "CookieChangeEvent": false, + "CookieDeprecationLabel": false, + "CookieStore": false, + "CookieStoreManager": false, + "CountQueuingStrategy": false, + "Credential": false, + "CredentialsContainer": false, + "CropTarget": false, + "Crypto": false, + "CryptoKey": false, + "CustomElementRegistry": false, + "CustomEvent": false, + "CustomStateSet": false, + "DOMError": false, + "DOMException": false, + "DOMImplementation": false, + "DOMMatrix": false, + "DOMMatrixReadOnly": false, + "DOMParser": false, + "DOMPoint": false, + "DOMPointReadOnly": false, + "DOMQuad": false, + "DOMRect": false, + "DOMRectList": false, + "DOMRectReadOnly": false, + "DOMStringList": false, + "DOMStringMap": false, + "DOMTokenList": false, + "DataTransfer": false, + "DataTransferItem": false, + "DataTransferItemList": false, + "DataView": false, + "Date": false, + "DecompressionStream": false, + "DelayNode": false, + "DelegatedInkTrailPresenter": false, + "DeviceMotionEvent": false, + "DeviceMotionEventAcceleration": false, + "DeviceMotionEventRotationRate": false, + "DeviceOrientationEvent": false, + "Document": false, + "DocumentFragment": false, + "DocumentPictureInPicture": false, + "DocumentPictureInPictureEvent": false, + "DocumentTimeline": false, + "DocumentType": false, + "DragEvent": false, + "DynamicsCompressorNode": false, + "EditContext": false, + "Element": false, + "ElementInternals": false, + "EncodedAudioChunk": false, + "EncodedVideoChunk": false, + "Error": false, + "ErrorEvent": false, + "EvalError": false, + "Event": false, + "EventCounts": false, + "EventSource": false, + "EventTarget": false, + "External": false, + "EyeDropper": false, + "FeaturePolicy": false, + "FederatedCredential": false, + "Fence": false, + "FencedFrameConfig": false, + "FetchLaterResult": false, + "File": false, + "FileList": false, + "FileReader": false, + "FileSystem": false, + "FileSystemDirectoryEntry": false, + "FileSystemDirectoryHandle": false, + "FileSystemDirectoryReader": false, + "FileSystemEntry": false, + "FileSystemFileEntry": false, + "FileSystemFileHandle": false, + "FileSystemHandle": false, + "FileSystemWritableFileStream": false, + "FinalizationRegistry": false, + "Float16Array": false, + "Float32Array": false, + "Float64Array": false, + "FocusEvent": false, + "FontData": false, + "FontFace": false, + "FontFaceSet": false, + "FontFaceSetLoadEvent": false, + "FormData": false, + "FormDataEvent": false, + "FragmentDirective": false, + "Function": false, + "GPU": false, + "GPUAdapter": false, + "GPUAdapterInfo": false, + "GPUBindGroup": false, + "GPUBindGroupLayout": false, + "GPUBuffer": false, + "GPUBufferUsage": false, + "GPUCanvasContext": false, + "GPUColorWrite": false, + "GPUCommandBuffer": false, + "GPUCommandEncoder": false, + "GPUCompilationInfo": false, + "GPUCompilationMessage": false, + "GPUComputePassEncoder": false, + "GPUComputePipeline": false, + "GPUDevice": false, + "GPUDeviceLostInfo": false, + "GPUError": false, + "GPUExternalTexture": false, + "GPUInternalError": false, + "GPUMapMode": false, + "GPUOutOfMemoryError": false, + "GPUPipelineError": false, + "GPUPipelineLayout": false, + "GPUQuerySet": false, + "GPUQueue": false, + "GPURenderBundle": false, + "GPURenderBundleEncoder": false, + "GPURenderPassEncoder": false, + "GPURenderPipeline": false, + "GPUSampler": false, + "GPUShaderModule": false, + "GPUShaderStage": false, + "GPUSupportedFeatures": false, + "GPUSupportedLimits": false, + "GPUTexture": false, + "GPUTextureUsage": false, + "GPUTextureView": false, + "GPUUncapturedErrorEvent": false, + "GPUValidationError": false, + "GainNode": false, + "Gamepad": false, + "GamepadAxisMoveEvent": false, + "GamepadButton": false, + "GamepadButtonEvent": false, + "GamepadEvent": false, + "GamepadHapticActuator": false, + "GamepadPose": false, + "Geolocation": false, + "GeolocationCoordinates": false, + "GeolocationPosition": false, + "GeolocationPositionError": false, + "GravitySensor": false, + "Gyroscope": false, + "HID": false, + "HIDConnectionEvent": false, + "HIDDevice": false, + "HIDInputReportEvent": false, + "HTMLAllCollection": false, + "HTMLAnchorElement": false, + "HTMLAreaElement": false, + "HTMLAudioElement": false, + "HTMLBRElement": false, + "HTMLBaseElement": false, + "HTMLBodyElement": false, + "HTMLButtonElement": false, + "HTMLCanvasElement": false, + "HTMLCollection": false, + "HTMLDListElement": false, + "HTMLDataElement": false, + "HTMLDataListElement": false, + "HTMLDetailsElement": false, + "HTMLDialogElement": false, + "HTMLDirectoryElement": false, + "HTMLDivElement": false, + "HTMLDocument": false, + "HTMLElement": false, + "HTMLEmbedElement": false, + "HTMLFencedFrameElement": false, + "HTMLFieldSetElement": false, + "HTMLFontElement": false, + "HTMLFormControlsCollection": false, + "HTMLFormElement": false, + "HTMLFrameElement": false, + "HTMLFrameSetElement": false, + "HTMLHRElement": false, + "HTMLHeadElement": false, + "HTMLHeadingElement": false, + "HTMLHtmlElement": false, + "HTMLIFrameElement": false, + "HTMLImageElement": false, + "HTMLInputElement": false, + "HTMLLIElement": false, + "HTMLLabelElement": false, + "HTMLLegendElement": false, + "HTMLLinkElement": false, + "HTMLMapElement": false, + "HTMLMarqueeElement": false, + "HTMLMediaElement": false, + "HTMLMenuElement": false, + "HTMLMetaElement": false, + "HTMLMeterElement": false, + "HTMLModElement": false, + "HTMLOListElement": false, + "HTMLObjectElement": false, + "HTMLOptGroupElement": false, + "HTMLOptionElement": false, + "HTMLOptionsCollection": false, + "HTMLOutputElement": false, + "HTMLParagraphElement": false, + "HTMLParamElement": false, + "HTMLPictureElement": false, + "HTMLPreElement": false, + "HTMLProgressElement": false, + "HTMLQuoteElement": false, + "HTMLScriptElement": false, + "HTMLSelectElement": false, + "HTMLSlotElement": false, + "HTMLSourceElement": false, + "HTMLSpanElement": false, + "HTMLStyleElement": false, + "HTMLTableCaptionElement": false, + "HTMLTableCellElement": false, + "HTMLTableColElement": false, + "HTMLTableElement": false, + "HTMLTableRowElement": false, + "HTMLTableSectionElement": false, + "HTMLTemplateElement": false, + "HTMLTextAreaElement": false, + "HTMLTimeElement": false, + "HTMLTitleElement": false, + "HTMLTrackElement": false, + "HTMLUListElement": false, + "HTMLUnknownElement": false, + "HTMLVideoElement": false, + "HashChangeEvent": false, + "Headers": false, + "Highlight": false, + "HighlightRegistry": false, + "History": false, + "IDBCursor": false, + "IDBCursorWithValue": false, + "IDBDatabase": false, + "IDBFactory": false, + "IDBIndex": false, + "IDBKeyRange": false, + "IDBObjectStore": false, + "IDBOpenDBRequest": false, + "IDBRequest": false, + "IDBTransaction": false, + "IDBVersionChangeEvent": false, + "IIRFilterNode": false, + "IdentityCredential": false, + "IdentityCredentialError": false, + "IdentityProvider": false, + "IdleDeadline": false, + "IdleDetector": false, + "Image": false, + "ImageBitmap": false, + "ImageBitmapRenderingContext": false, + "ImageCapture": false, + "ImageData": false, + "ImageDecoder": false, + "ImageTrack": false, + "ImageTrackList": false, + "Infinity": false, + "Ink": false, + "InputDeviceCapabilities": false, + "InputDeviceInfo": false, + "InputEvent": false, + "Int16Array": false, + "Int32Array": false, + "Int8Array": false, + "IntersectionObserver": false, + "IntersectionObserverEntry": false, + "Intl": false, + "JSON": false, + "Keyboard": false, + "KeyboardEvent": false, + "KeyboardLayoutMap": false, + "KeyframeEffect": false, + "LargestContentfulPaint": false, + "LaunchParams": false, + "LaunchQueue": false, + "LayoutShift": false, + "LayoutShiftAttribution": false, + "LinearAccelerationSensor": false, + "Location": false, + "Lock": false, + "LockManager": false, + "MIDIAccess": false, + "MIDIConnectionEvent": false, + "MIDIInput": false, + "MIDIInputMap": false, + "MIDIMessageEvent": false, + "MIDIOutput": false, + "MIDIOutputMap": false, + "MIDIPort": false, + "Map": false, + "Math": false, + "MathMLElement": false, + "MediaCapabilities": false, + "MediaCapabilitiesInfo": false, + "MediaDeviceInfo": false, + "MediaDevices": false, + "MediaElementAudioSourceNode": false, + "MediaEncryptedEvent": false, + "MediaError": false, + "MediaKeyError": false, + "MediaKeyMessageEvent": false, + "MediaKeySession": false, + "MediaKeyStatusMap": false, + "MediaKeySystemAccess": false, + "MediaKeys": false, + "MediaList": false, + "MediaMetadata": false, + "MediaQueryList": false, + "MediaQueryListEvent": false, + "MediaRecorder": false, + "MediaRecorderErrorEvent": false, + "MediaSession": false, + "MediaSource": false, + "MediaSourceHandle": false, + "MediaStream": false, + "MediaStreamAudioDestinationNode": false, + "MediaStreamAudioSourceNode": false, + "MediaStreamEvent": false, + "MediaStreamTrack": false, + "MediaStreamTrackAudioSourceNode": false, + "MediaStreamTrackAudioStats": false, + "MediaStreamTrackEvent": false, + "MediaStreamTrackGenerator": false, + "MediaStreamTrackProcessor": false, + "MediaStreamTrackVideoStats": false, + "MessageChannel": false, + "MessageEvent": false, + "MessagePort": false, + "MimeType": false, + "MimeTypeArray": false, + "ModelGenericSession": false, + "ModelManager": false, + "MouseEvent": false, + "MutationEvent": false, + "MutationObserver": false, + "MutationRecord": false, + "NaN": false, + "NamedNodeMap": false, + "NavigateEvent": false, + "Navigation": false, + "NavigationActivation": false, + "NavigationCurrentEntryChangeEvent": false, + "NavigationDestination": false, + "NavigationHistoryEntry": false, + "NavigationPreloadManager": false, + "NavigationTransition": false, + "Navigator": false, + "NavigatorLogin": false, + "NavigatorManagedData": false, + "NavigatorUAData": false, + "NetworkInformation": false, + "Node": false, + "NodeFilter": false, + "NodeIterator": false, + "NodeList": false, + "NotRestoredReasonDetails": false, + "NotRestoredReasons": false, + "Notification": false, + "NotifyPaintEvent": false, + "Number": false, + "OTPCredential": false, + "Object": false, + "OfflineAudioCompletionEvent": false, + "OfflineAudioContext": false, + "OffscreenCanvas": false, + "OffscreenCanvasRenderingContext2D": false, + "Option": false, + "OrientationSensor": false, + "OscillatorNode": false, + "OverconstrainedError": false, + "PERSISTENT": false, + "PageRevealEvent": false, + "PageSwapEvent": false, + "PageTransitionEvent": false, + "PannerNode": false, + "PasswordCredential": false, + "Path2D": false, + "PaymentAddress": false, + "PaymentManager": false, + "PaymentMethodChangeEvent": false, + "PaymentRequest": false, + "PaymentRequestUpdateEvent": false, + "PaymentResponse": false, + "Performance": false, + "PerformanceElementTiming": false, + "PerformanceEntry": false, + "PerformanceEventTiming": false, + "PerformanceLongAnimationFrameTiming": false, + "PerformanceLongTaskTiming": false, + "PerformanceMark": false, + "PerformanceMeasure": false, + "PerformanceNavigation": false, + "PerformanceNavigationTiming": false, + "PerformanceObserver": false, + "PerformanceObserverEntryList": false, + "PerformancePaintTiming": false, + "PerformanceResourceTiming": false, + "PerformanceScriptTiming": false, + "PerformanceServerTiming": false, + "PerformanceTiming": false, + "PeriodicSyncManager": false, + "PeriodicWave": false, + "PermissionStatus": false, + "Permissions": false, + "PictureInPictureEvent": false, + "PictureInPictureWindow": false, + "Plugin": false, + "PluginArray": false, + "PointerEvent": false, + "PopStateEvent": false, + "Presentation": false, + "PresentationAvailability": false, + "PresentationConnection": false, + "PresentationConnectionAvailableEvent": false, + "PresentationConnectionCloseEvent": false, + "PresentationConnectionList": false, + "PresentationReceiver": false, + "PresentationRequest": false, + "PressureObserver": false, + "PressureRecord": false, + "ProcessingInstruction": false, + "Profiler": false, + "ProgressEvent": false, + "Promise": false, + "PromiseRejectionEvent": false, + "ProtectedAudience": false, + "Proxy": false, + "PublicKeyCredential": false, + "PushManager": false, + "PushSubscription": false, + "PushSubscriptionOptions": false, + "RTCCertificate": false, + "RTCDTMFSender": false, + "RTCDTMFToneChangeEvent": false, + "RTCDataChannel": false, + "RTCDataChannelEvent": false, + "RTCDtlsTransport": false, + "RTCEncodedAudioFrame": false, + "RTCEncodedVideoFrame": false, + "RTCError": false, + "RTCErrorEvent": false, + "RTCIceCandidate": false, + "RTCIceTransport": false, + "RTCPeerConnection": false, + "RTCPeerConnectionIceErrorEvent": false, + "RTCPeerConnectionIceEvent": false, + "RTCRtpReceiver": false, + "RTCRtpScriptTransform": false, + "RTCRtpSender": false, + "RTCRtpTransceiver": false, + "RTCSctpTransport": false, + "RTCSessionDescription": false, + "RTCStatsReport": false, + "RTCTrackEvent": false, + "RadioNodeList": false, + "Range": false, + "RangeError": false, + "ReadableByteStreamController": false, + "ReadableStream": false, + "ReadableStreamBYOBReader": false, + "ReadableStreamBYOBRequest": false, + "ReadableStreamDefaultController": false, + "ReadableStreamDefaultReader": false, + "ReferenceError": false, + "Reflect": false, + "RegExp": false, + "RelativeOrientationSensor": false, + "RemotePlayback": false, + "ReportingObserver": false, + "Request": false, + "ResizeObserver": false, + "ResizeObserverEntry": false, + "ResizeObserverSize": false, + "Response": false, + "SVGAElement": false, + "SVGAngle": false, + "SVGAnimateElement": false, + "SVGAnimateMotionElement": false, + "SVGAnimateTransformElement": false, + "SVGAnimatedAngle": false, + "SVGAnimatedBoolean": false, + "SVGAnimatedEnumeration": false, + "SVGAnimatedInteger": false, + "SVGAnimatedLength": false, + "SVGAnimatedLengthList": false, + "SVGAnimatedNumber": false, + "SVGAnimatedNumberList": false, + "SVGAnimatedPreserveAspectRatio": false, + "SVGAnimatedRect": false, + "SVGAnimatedString": false, + "SVGAnimatedTransformList": false, + "SVGAnimationElement": false, + "SVGCircleElement": false, + "SVGClipPathElement": false, + "SVGComponentTransferFunctionElement": false, + "SVGDefsElement": false, + "SVGDescElement": false, + "SVGElement": false, + "SVGEllipseElement": false, + "SVGFEBlendElement": false, + "SVGFEColorMatrixElement": false, + "SVGFEComponentTransferElement": false, + "SVGFECompositeElement": false, + "SVGFEConvolveMatrixElement": false, + "SVGFEDiffuseLightingElement": false, + "SVGFEDisplacementMapElement": false, + "SVGFEDistantLightElement": false, + "SVGFEDropShadowElement": false, + "SVGFEFloodElement": false, + "SVGFEFuncAElement": false, + "SVGFEFuncBElement": false, + "SVGFEFuncGElement": false, + "SVGFEFuncRElement": false, + "SVGFEGaussianBlurElement": false, + "SVGFEImageElement": false, + "SVGFEMergeElement": false, + "SVGFEMergeNodeElement": false, + "SVGFEMorphologyElement": false, + "SVGFEOffsetElement": false, + "SVGFEPointLightElement": false, + "SVGFESpecularLightingElement": false, + "SVGFESpotLightElement": false, + "SVGFETileElement": false, + "SVGFETurbulenceElement": false, + "SVGFilterElement": false, + "SVGForeignObjectElement": false, + "SVGGElement": false, + "SVGGeometryElement": false, + "SVGGradientElement": false, + "SVGGraphicsElement": false, + "SVGImageElement": false, + "SVGLength": false, + "SVGLengthList": false, + "SVGLineElement": false, + "SVGLinearGradientElement": false, + "SVGMPathElement": false, + "SVGMarkerElement": false, + "SVGMaskElement": false, + "SVGMatrix": false, + "SVGMetadataElement": false, + "SVGNumber": false, + "SVGNumberList": false, + "SVGPathElement": false, + "SVGPatternElement": false, + "SVGPoint": false, + "SVGPointList": false, + "SVGPolygonElement": false, + "SVGPolylineElement": false, + "SVGPreserveAspectRatio": false, + "SVGRadialGradientElement": false, + "SVGRect": false, + "SVGRectElement": false, + "SVGSVGElement": false, + "SVGScriptElement": false, + "SVGSetElement": false, + "SVGStopElement": false, + "SVGStringList": false, + "SVGStyleElement": false, + "SVGSwitchElement": false, + "SVGSymbolElement": false, + "SVGTSpanElement": false, + "SVGTextContentElement": false, + "SVGTextElement": false, + "SVGTextPathElement": false, + "SVGTextPositioningElement": false, + "SVGTitleElement": false, + "SVGTransform": false, + "SVGTransformList": false, + "SVGUnitTypes": false, + "SVGUseElement": false, + "SVGViewElement": false, + "Scheduler": false, + "Scheduling": false, + "Screen": false, + "ScreenDetailed": false, + "ScreenDetails": false, + "ScreenOrientation": false, + "ScriptProcessorNode": false, + "ScrollTimeline": false, + "SecurityPolicyViolationEvent": false, + "Selection": false, + "Sensor": false, + "SensorErrorEvent": false, + "Serial": false, + "SerialPort": false, + "ServiceWorker": false, + "ServiceWorkerContainer": false, + "ServiceWorkerRegistration": false, + "Set": false, + "ShadowRoot": false, + "SharedArrayBuffer": false, + "SharedStorage": false, + "SharedStorageWorklet": false, + "SharedWorker": false, + "SnapEvent": false, + "SourceBuffer": false, + "SourceBufferList": false, + "SpeechSynthesis": false, + "SpeechSynthesisErrorEvent": false, + "SpeechSynthesisEvent": false, + "SpeechSynthesisUtterance": false, + "SpeechSynthesisVoice": false, + "StaticRange": false, + "StereoPannerNode": false, + "Storage": false, + "StorageBucket": false, + "StorageBucketManager": false, + "StorageEvent": false, + "StorageManager": false, + "String": false, + "StylePropertyMap": false, + "StylePropertyMapReadOnly": false, + "StyleSheet": false, + "StyleSheetList": false, + "SubmitEvent": false, + "SubtleCrypto": false, + "Symbol": false, + "SyncManager": false, + "SyntaxError": false, + "TEMPORARY": false, + "TaskAttributionTiming": false, + "TaskController": false, + "TaskPriorityChangeEvent": false, + "TaskSignal": false, + "Text": false, + "TextDecoder": false, + "TextDecoderStream": false, + "TextEncoder": false, + "TextEncoderStream": false, + "TextEvent": false, + "TextFormat": false, + "TextFormatUpdateEvent": false, + "TextMetrics": false, + "TextTrack": false, + "TextTrackCue": false, + "TextTrackCueList": false, + "TextTrackList": false, + "TextUpdateEvent": false, + "TimeEvent": false, + "TimeRanges": false, + "ToggleEvent": false, + "Touch": false, + "TouchEvent": false, + "TouchList": false, + "TrackEvent": false, + "TransformStream": false, + "TransformStreamDefaultController": false, + "TransitionEvent": false, + "TreeWalker": false, + "TrustedHTML": false, + "TrustedScript": false, + "TrustedScriptURL": false, + "TrustedTypePolicy": false, + "TrustedTypePolicyFactory": false, + "TypeError": false, + "UIEvent": false, + "URIError": false, + "URL": false, + "URLPattern": false, + "URLSearchParams": false, + "USB": false, + "USBAlternateInterface": false, + "USBConfiguration": false, + "USBConnectionEvent": false, + "USBDevice": false, + "USBEndpoint": false, + "USBInTransferResult": false, + "USBInterface": false, + "USBIsochronousInTransferPacket": false, + "USBIsochronousInTransferResult": false, + "USBIsochronousOutTransferPacket": false, + "USBIsochronousOutTransferResult": false, + "USBOutTransferResult": false, + "Uint16Array": false, + "Uint32Array": false, + "Uint8Array": false, + "Uint8ClampedArray": false, + "UserActivation": false, + "VTTCue": false, + "VTTRegion": false, + "ValidityState": false, + "VideoColorSpace": false, + "VideoDecoder": false, + "VideoEncoder": false, + "VideoFrame": false, + "VideoPlaybackQuality": false, + "ViewTimeline": false, + "ViewTransition": false, + "ViewTransitionTypeSet": false, + "VirtualKeyboard": false, + "VirtualKeyboardGeometryChangeEvent": false, + "VisibilityStateEntry": false, + "VisualViewport": false, + "WGSLLanguageFeatures": false, + "WakeLock": false, + "WakeLockSentinel": false, + "WaveShaperNode": false, + "WeakMap": false, + "WeakRef": false, + "WeakSet": false, + "WebAssembly": false, + "WebGL2RenderingContext": false, + "WebGLActiveInfo": false, + "WebGLBuffer": false, + "WebGLContextEvent": false, + "WebGLFramebuffer": false, + "WebGLObject": false, + "WebGLProgram": false, + "WebGLQuery": false, + "WebGLRenderbuffer": false, + "WebGLRenderingContext": false, + "WebGLSampler": false, + "WebGLShader": false, + "WebGLShaderPrecisionFormat": false, + "WebGLSync": false, + "WebGLTexture": false, + "WebGLTransformFeedback": false, + "WebGLUniformLocation": false, + "WebGLVertexArrayObject": false, + "WebSocket": false, + "WebSocketError": false, + "WebSocketStream": false, + "WebTransport": false, + "WebTransportBidirectionalStream": false, + "WebTransportDatagramDuplexStream": false, + "WebTransportError": false, + "WebTransportReceiveStream": false, + "WebTransportSendStream": false, + "WheelEvent": false, + "Window": false, + "WindowControlsOverlay": false, + "WindowControlsOverlayGeometryChangeEvent": false, + "Worker": false, + "Worklet": false, + "WorkletGlobalScope": false, + "WritableStream": false, + "WritableStreamDefaultController": false, + "WritableStreamDefaultWriter": false, + "XMLDocument": false, + "XMLHttpRequest": false, + "XMLHttpRequestEventTarget": false, + "XMLHttpRequestUpload": false, + "XMLSerializer": false, + "XPathEvaluator": false, + "XPathExpression": false, + "XPathResult": false, + "XRAnchor": false, + "XRAnchorSet": false, + "XRBoundedReferenceSpace": false, + "XRCPUDepthInformation": false, + "XRCamera": false, + "XRDOMOverlayState": false, + "XRDepthInformation": false, + "XRFrame": false, + "XRHand": false, + "XRHitTestResult": false, + "XRHitTestSource": false, + "XRInputSource": false, + "XRInputSourceArray": false, + "XRInputSourceEvent": false, + "XRInputSourcesChangeEvent": false, + "XRJointPose": false, + "XRJointSpace": false, + "XRLayer": false, + "XRLightEstimate": false, + "XRLightProbe": false, + "XRPose": false, + "XRRay": false, + "XRReferenceSpace": false, + "XRReferenceSpaceEvent": false, + "XRRenderState": false, + "XRRigidTransform": false, + "XRSession": false, + "XRSessionEvent": false, + "XRSpace": false, + "XRSystem": false, + "XRTransientInputHitTestResult": false, + "XRTransientInputHitTestSource": false, + "XRView": false, + "XRViewerPose": false, + "XRViewport": false, + "XRWebGLBinding": false, + "XRWebGLDepthInformation": false, + "XRWebGLLayer": false, + "XSLTProcessor": false, + "addEventListener": false, + "ai": false, + "alert": false, + "atob": false, + "blur": false, + "btoa": false, + "caches": false, + "cancelAnimationFrame": false, + "cancelIdleCallback": false, + "clearInterval": false, + "clearTimeout": false, + "clientInformation": false, + "close": false, + "closed": false, + "confirm": false, + "console": false, + "cookieStore": false, + "createImageBitmap": false, + "credentialless": false, + "crossOriginIsolated": false, + "crypto": false, + "currentFrame": false, + "currentTime": false, + "customElements": false, + "decodeURI": false, + "decodeURIComponent": false, + "devicePixelRatio": false, + "dispatchEvent": false, + "document": false, + "documentPictureInPicture": false, + "encodeURI": false, + "encodeURIComponent": false, + "escape": false, + "eval": false, + "event": false, + "external": false, + "fence": false, + "fetch": false, + "fetchLater": false, + "find": false, + "focus": false, + "frameElement": false, + "frames": false, + "getComputedStyle": false, + "getScreenDetails": false, + "getSelection": false, + "globalThis": false, + "history": false, + "indexedDB": false, + "innerHeight": false, + "innerWidth": false, + "isFinite": false, + "isNaN": false, + "isSecureContext": false, + "launchQueue": false, + "length": false, + "localStorage": false, + "location": true, + "locationbar": false, + "matchMedia": false, + "menubar": false, + "model": false, + "moveBy": false, + "moveTo": false, + "name": false, + "navigation": false, + "navigator": false, + "offscreenBuffering": false, + "onabort": true, + "onafterprint": true, + "onanimationcancel": true, + "onanimationend": true, + "onanimationiteration": true, + "onanimationstart": true, + "onappinstalled": true, + "onauxclick": true, + "onbeforeinput": true, + "onbeforeinstallprompt": true, + "onbeforematch": true, + "onbeforeprint": true, + "onbeforetoggle": true, + "onbeforeunload": true, + "onbeforexrselect": true, + "onblur": true, + "oncancel": true, + "oncanplay": true, + "oncanplaythrough": true, + "onchange": true, + "onclick": true, + "onclose": true, + "oncontentvisibilityautostatechange": true, + "oncontextlost": true, + "oncontextmenu": true, + "oncontextrestored": true, + "oncopy": true, + "oncuechange": true, + "oncut": true, + "ondblclick": true, + "ondevicemotion": true, + "ondeviceorientation": true, + "ondeviceorientationabsolute": true, + "ondrag": true, + "ondragend": true, + "ondragenter": true, + "ondragleave": true, + "ondragover": true, + "ondragstart": true, + "ondrop": true, + "ondurationchange": true, + "onemptied": true, + "onended": true, + "onerror": true, + "onfocus": true, + "onformdata": true, + "ongamepadconnected": true, + "ongamepaddisconnected": true, + "ongotpointercapture": true, + "onhashchange": true, + "oninput": true, + "oninvalid": true, + "onkeydown": true, + "onkeypress": true, + "onkeyup": true, + "onlanguagechange": true, + "onload": true, + "onloadeddata": true, + "onloadedmetadata": true, + "onloadstart": true, + "onlostpointercapture": true, + "onmessage": true, + "onmessageerror": true, + "onmousedown": true, + "onmouseenter": true, + "onmouseleave": true, + "onmousemove": true, + "onmouseout": true, + "onmouseover": true, + "onmouseup": true, + "onmousewheel": true, + "onoffline": true, + "ononline": true, + "onpagehide": true, + "onpagereveal": true, + "onpageshow": true, + "onpageswap": true, + "onpaste": true, + "onpause": true, + "onplay": true, + "onplaying": true, + "onpointercancel": true, + "onpointerdown": true, + "onpointerenter": true, + "onpointerleave": true, + "onpointermove": true, + "onpointerout": true, + "onpointerover": true, + "onpointerrawupdate": true, + "onpointerup": true, + "onpopstate": true, + "onprogress": true, + "onratechange": true, + "onrejectionhandled": true, + "onreset": true, + "onresize": true, + "onscroll": true, + "onscrollend": true, + "onscrollsnapchange": true, + "onscrollsnapchanging": true, + "onsearch": true, + "onsecuritypolicyviolation": true, + "onseeked": true, + "onseeking": true, + "onselect": true, + "onselectionchange": true, + "onselectstart": true, + "onslotchange": true, + "onstalled": true, + "onstorage": true, + "onsubmit": true, + "onsuspend": true, + "ontimeupdate": true, + "ontoggle": true, + "ontransitioncancel": true, + "ontransitionend": true, + "ontransitionrun": true, + "ontransitionstart": true, + "onunhandledrejection": true, + "onunload": true, + "onvolumechange": true, + "onwaiting": true, + "onwheel": true, + "open": false, + "opener": false, + "origin": false, + "originAgentCluster": false, + "outerHeight": false, + "outerWidth": false, + "pageXOffset": false, + "pageYOffset": false, + "parent": false, + "parseFloat": false, + "parseInt": false, + "performance": false, + "personalbar": false, + "postMessage": false, + "print": false, + "prompt": false, + "queryLocalFonts": false, + "queueMicrotask": false, + "registerProcessor": false, + "removeEventListener": false, + "reportError": false, + "requestAnimationFrame": false, + "requestIdleCallback": false, + "resizeBy": false, + "resizeTo": false, + "sampleRate": false, + "scheduler": false, + "screen": false, + "screenLeft": false, + "screenTop": false, + "screenX": false, + "screenY": false, + "scroll": false, + "scrollBy": false, + "scrollTo": false, + "scrollX": false, + "scrollY": false, + "scrollbars": false, + "self": false, + "sessionStorage": false, + "setInterval": false, + "setTimeout": false, + "sharedStorage": false, + "showDirectoryPicker": false, + "showOpenFilePicker": false, + "showSaveFilePicker": false, + "speechSynthesis": false, + "status": false, + "statusbar": false, + "stop": false, + "structuredClone": false, + "styleMedia": false, + "toolbar": false, + "top": false, + "trustedTypes": false, + "undefined": false, + "unescape": false, + "visualViewport": false, + "window": false, + }, + "parser": "typescript-eslint/parser@8.26.0", + "parserOptions": { + "ecmaFeatures": { + "jsx": true, + }, + "project": "/home/circleci/project/packages/eslint-config/test/__fixtures__/tsconfig.json", }, - "ecmaVersion": "latest", - "project": "/packages/eslint-config/test/__fixtures__/tsconfig.json", "sourceType": "module", }, + "linterOptions": { + "reportUnusedDisableDirectives": 2, + }, "plugins": [ - "@stylistic", - "switch-case", - "gettext", + "@", "import", + "gettext", + "switch-case", + "@stylistic", "jsdoc", - "prettier", + "prettier:eslint-plugin-prettier@5.2.3", "react", - "jsx-a11y", - "react-hooks", + "react-hooks:eslint-plugin-react-hooks", + "jsx-a11y:eslint-plugin-jsx-a11y@6.10.2", + "@typescript-eslint:@typescript-eslint/eslint-plugin@8.26.0", "@bigcommerce", - "@typescript-eslint", ], - "reportUnusedDisableDirectives": true, + "processor": undefined, "rules": { "@babel/object-curly-spacing": [ - "off", + 0, ], "@babel/semi": [ - "off", - ], - "@bigcommerce/jsx-short-circuit-conditionals": [ - "error", + 0, ], "@stylistic/padding-line-between-statements": [ - "warn", + 1, { "blankLine": "always", "next": "return", @@ -109,7 +1296,7 @@ exports[`keeps rules stable 1`] = ` }, ], "@stylistic/spaced-comment": [ - "warn", + 1, "always", { "block": { @@ -137,61 +1324,61 @@ exports[`keeps rules stable 1`] = ` }, ], "@typescript-eslint/adjacent-overload-signatures": [ - "error", + 2, ], "@typescript-eslint/array-type": [ - "error", + 2, { "default": "array-simple", }, ], "@typescript-eslint/await-thenable": [ - "error", + 2, ], "@typescript-eslint/ban-ts-comment": [ - "error", + 2, { "minimumDescriptionLength": 10, }, ], "@typescript-eslint/ban-tslint-comment": [ - "error", + 2, ], "@typescript-eslint/block-spacing": [ - "off", + 0, ], "@typescript-eslint/brace-style": [ - "off", + 0, ], "@typescript-eslint/class-literal-property-style": [ - "error", + 2, ], "@typescript-eslint/comma-dangle": [ - "off", + 0, ], "@typescript-eslint/comma-spacing": [ - "off", + 0, ], "@typescript-eslint/consistent-generic-constructors": [ - "off", + 0, ], "@typescript-eslint/consistent-indexed-object-style": [ - "error", + 2, ], "@typescript-eslint/consistent-type-assertions": [ - "error", + 2, { "assertionStyle": "never", }, ], "@typescript-eslint/consistent-type-definitions": [ - "error", + 2, ], "@typescript-eslint/default-param-last": [ - "error", + 2, ], "@typescript-eslint/dot-notation": [ - "error", + 2, { "allowIndexSignaturePropertyAccess": false, "allowKeywords": true, @@ -201,40 +1388,40 @@ exports[`keeps rules stable 1`] = ` }, ], "@typescript-eslint/explicit-function-return-type": [ - "off", + 0, ], "@typescript-eslint/explicit-member-accessibility": [ - "error", + 2, { "accessibility": "no-public", }, ], "@typescript-eslint/explicit-module-boundary-types": [ - "off", + 0, ], "@typescript-eslint/func-call-spacing": [ - "off", + 0, ], "@typescript-eslint/indent": [ - "off", + 0, ], "@typescript-eslint/key-spacing": [ - "off", + 0, ], "@typescript-eslint/keyword-spacing": [ - "off", + 0, ], "@typescript-eslint/lines-around-comment": [ - "off", + 0, ], "@typescript-eslint/member-delimiter-style": [ - "off", + 0, ], "@typescript-eslint/member-ordering": [ - "error", + 2, ], "@typescript-eslint/naming-convention": [ - "error", + 2, { "format": [ "camelCase", @@ -316,79 +1503,82 @@ exports[`keeps rules stable 1`] = ` }, ], "@typescript-eslint/no-array-constructor": [ - "error", + 2, ], "@typescript-eslint/no-array-delete": [ - "error", + 2, ], "@typescript-eslint/no-base-to-string": [ - "error", + 2, ], "@typescript-eslint/no-confusing-non-null-assertion": [ - "error", + 2, ], "@typescript-eslint/no-confusing-void-expression": [ - "error", + 2, { "ignoreArrowShorthand": true, }, ], "@typescript-eslint/no-deprecated": [ - "error", + 2, ], "@typescript-eslint/no-duplicate-enum-values": [ - "error", + 2, ], "@typescript-eslint/no-duplicate-type-constituents": [ - "error", + 2, ], "@typescript-eslint/no-dynamic-delete": [ - "error", + 2, ], "@typescript-eslint/no-empty-function": [ - "error", + 2, + { + "allow": [], + }, ], "@typescript-eslint/no-empty-object-type": [ - "error", + 2, ], "@typescript-eslint/no-explicit-any": [ - "error", + 2, ], "@typescript-eslint/no-extra-non-null-assertion": [ - "error", + 2, ], "@typescript-eslint/no-extra-parens": [ - "off", + 0, ], "@typescript-eslint/no-extra-semi": [ - "off", + 0, ], "@typescript-eslint/no-extraneous-class": [ - "error", + 2, ], "@typescript-eslint/no-floating-promises": [ - "error", + 2, ], "@typescript-eslint/no-for-in-array": [ - "error", + 2, ], "@typescript-eslint/no-implied-eval": [ - "error", + 2, ], "@typescript-eslint/no-inferrable-types": [ - "error", + 2, ], "@typescript-eslint/no-invalid-void-type": [ - "error", + 2, ], "@typescript-eslint/no-meaningless-void-operator": [ - "error", + 2, ], "@typescript-eslint/no-misused-new": [ - "error", + 2, ], "@typescript-eslint/no-misused-promises": [ - "error", + 2, { "checksVoidReturn": { "attributes": false, @@ -396,94 +1586,99 @@ exports[`keeps rules stable 1`] = ` }, ], "@typescript-eslint/no-misused-spread": [ - "error", + 2, ], "@typescript-eslint/no-mixed-enums": [ - "error", + 2, ], "@typescript-eslint/no-namespace": [ - "error", + 2, { "allowDeclarations": true, }, ], "@typescript-eslint/no-non-null-asserted-nullish-coalescing": [ - "error", + 2, ], "@typescript-eslint/no-non-null-asserted-optional-chain": [ - "error", + 2, ], "@typescript-eslint/no-non-null-assertion": [ - "error", + 2, ], "@typescript-eslint/no-redundant-type-constituents": [ - "error", + 2, ], "@typescript-eslint/no-require-imports": [ - "error", + 2, ], "@typescript-eslint/no-shadow": [ - "error", + 2, { "hoist": "all", }, ], "@typescript-eslint/no-this-alias": [ - "error", + 2, ], "@typescript-eslint/no-unnecessary-boolean-literal-compare": [ - "error", + 2, ], "@typescript-eslint/no-unnecessary-condition": [ - "error", + 2, ], "@typescript-eslint/no-unnecessary-template-expression": [ - "error", + 2, ], "@typescript-eslint/no-unnecessary-type-arguments": [ - "error", + 2, ], "@typescript-eslint/no-unnecessary-type-assertion": [ - "error", + 2, ], "@typescript-eslint/no-unnecessary-type-constraint": [ - "error", + 2, ], "@typescript-eslint/no-unnecessary-type-parameters": [ - "error", + 2, ], "@typescript-eslint/no-unsafe-argument": [ - "error", + 2, ], "@typescript-eslint/no-unsafe-assignment": [ - "error", + 2, ], "@typescript-eslint/no-unsafe-call": [ - "error", + 2, ], "@typescript-eslint/no-unsafe-declaration-merging": [ - "error", + 2, ], "@typescript-eslint/no-unsafe-enum-comparison": [ - "error", + 2, ], "@typescript-eslint/no-unsafe-function-type": [ - "error", + 2, ], "@typescript-eslint/no-unsafe-member-access": [ - "error", + 2, ], "@typescript-eslint/no-unsafe-return": [ - "error", + 2, ], "@typescript-eslint/no-unsafe-unary-minus": [ - "error", + 2, ], "@typescript-eslint/no-unused-expressions": [ - "error", + 2, + { + "allowShortCircuit": false, + "allowTaggedTemplates": false, + "allowTernary": false, + }, ], "@typescript-eslint/no-unused-vars": [ - "error", + 2, { "args": "after-used", "ignoreRestSiblings": true, @@ -491,77 +1686,77 @@ exports[`keeps rules stable 1`] = ` }, ], "@typescript-eslint/no-use-before-define": [ - "error", + 2, "nofunc", ], "@typescript-eslint/no-useless-constructor": [ - "error", + 2, ], "@typescript-eslint/no-wrapper-object-types": [ - "error", + 2, ], "@typescript-eslint/non-nullable-type-assertion-style": [ - "error", + 2, ], "@typescript-eslint/object-curly-spacing": [ - "off", + 0, ], "@typescript-eslint/only-throw-error": [ - "error", + 2, ], "@typescript-eslint/prefer-as-const": [ - "error", + 2, ], "@typescript-eslint/prefer-find": [ - "error", + 2, ], "@typescript-eslint/prefer-for-of": [ - "error", + 2, ], "@typescript-eslint/prefer-function-type": [ - "error", + 2, ], "@typescript-eslint/prefer-includes": [ - "error", + 2, ], "@typescript-eslint/prefer-literal-enum-member": [ - "error", + 2, ], "@typescript-eslint/prefer-namespace-keyword": [ - "error", + 2, ], "@typescript-eslint/prefer-nullish-coalescing": [ - "error", + 2, ], "@typescript-eslint/prefer-optional-chain": [ - "error", + 2, ], "@typescript-eslint/prefer-promise-reject-errors": [ - "error", + 2, ], "@typescript-eslint/prefer-reduce-type-parameter": [ - "error", + 2, ], "@typescript-eslint/prefer-regexp-exec": [ - "error", + 2, ], "@typescript-eslint/prefer-return-this-type": [ - "error", + 2, ], "@typescript-eslint/prefer-string-starts-ends-with": [ - "error", + 2, ], "@typescript-eslint/quotes": [ 0, ], "@typescript-eslint/related-getter-setter-pairs": [ - "error", + 2, ], "@typescript-eslint/require-await": [ - "error", + 2, ], "@typescript-eslint/restrict-plus-operands": [ - "error", + 2, { "allowAny": false, "allowBoolean": false, @@ -571,88 +1766,93 @@ exports[`keeps rules stable 1`] = ` }, ], "@typescript-eslint/restrict-template-expressions": [ - "error", + 2, { "allowNumber": true, }, ], "@typescript-eslint/return-await": [ - "error", - "error-handling-correctness-only", + 2, ], "@typescript-eslint/semi": [ - "off", + 0, ], "@typescript-eslint/space-before-blocks": [ - "off", + 0, ], "@typescript-eslint/space-before-function-paren": [ - "off", + 0, ], "@typescript-eslint/space-infix-ops": [ - "off", + 0, ], "@typescript-eslint/triple-slash-reference": [ - "error", + 2, ], "@typescript-eslint/type-annotation-spacing": [ - "off", + 0, ], "@typescript-eslint/unbound-method": [ - "off", + 0, ], "@typescript-eslint/unified-signatures": [ - "error", + 2, ], "@typescript-eslint/use-unknown-in-catch-callback-variable": [ - "error", + 2, ], "array-bracket-newline": [ - "off", + 0, ], "array-bracket-spacing": [ - "off", + 0, ], "array-callback-return": [ - "error", + 2, + { + "allowImplicit": false, + "allowVoid": false, + "checkForEach": false, + }, ], "array-element-newline": [ - "off", + 0, ], "arrow-body-style": [ - "off", + 2, "as-needed", { "requireReturnForObjectLiteral": false, }, ], "arrow-parens": [ - "off", + 0, ], "arrow-spacing": [ - "off", + 0, ], "babel/object-curly-spacing": [ - "off", + 0, ], "babel/quotes": [ 0, ], "babel/semi": [ - "off", + 0, ], "block-scoped-var": [ - "error", + 2, ], "block-spacing": [ - "off", + 0, ], "brace-style": [ - "off", + 0, ], "camelcase": [ - "off", + 0, { + "allow": [], "ignoreDestructuring": false, "ignoreGlobals": false, "ignoreImports": false, @@ -660,133 +1860,137 @@ exports[`keeps rules stable 1`] = ` }, ], "comma-dangle": [ - "off", + 0, ], "comma-spacing": [ - "off", + 0, ], "comma-style": [ - "off", + 0, ], "complexity": [ - "error", + 2, + 20, ], "computed-property-spacing": [ - "off", + 0, ], "consistent-return": [ - "off", + 0, + { + "treatUndefinedAsUnspecified": false, + }, ], "constructor-super": [ - "off", + 2, ], "curly": [ - "error", + 2, "all", ], "default-case": [ - "off", + 0, + {}, ], "default-param-last": [ - "off", + 0, ], "dot-location": [ - "off", + 0, ], "dot-notation": [ - "off", + 0, { "allowKeywords": true, "allowPattern": "", }, ], "eol-last": [ - "off", + 0, ], "eqeqeq": [ - "error", + 2, "smart", ], "flowtype/boolean-style": [ - "off", + 0, ], "flowtype/delimiter-dangle": [ - "off", + 0, ], "flowtype/generic-spacing": [ - "off", + 0, ], "flowtype/object-type-curly-spacing": [ - "off", + 0, ], "flowtype/object-type-delimiter": [ - "off", + 0, ], "flowtype/quotes": [ - "off", + 0, ], "flowtype/semi": [ - "off", + 0, ], "flowtype/space-after-type-colon": [ - "off", + 0, ], "flowtype/space-before-generic-bracket": [ - "off", + 0, ], "flowtype/space-before-type-colon": [ - "off", + 0, ], "flowtype/union-intersection-spacing": [ - "off", + 0, ], "for-direction": [ - "error", + 2, ], "func-call-spacing": [ - "off", + 0, ], "func-names": [ - "error", + 2, + "always", + {}, ], "function-call-argument-newline": [ - "off", + 0, ], "function-paren-newline": [ - "off", + 0, ], "generator-star": [ - "off", + 0, ], "generator-star-spacing": [ - "off", + 0, ], "getter-return": [ - "off", + 2, { "allowImplicit": true, }, ], "gettext/no-variable-string": [ - "error", + 2, ], "guard-for-in": [ - "error", + 2, ], "implicit-arrow-linebreak": [ - "off", + 0, ], "import/default": [ - "off", + 0, ], "import/dynamic-import-chunkname": [ - "error", - ], - "import/export": [ 2, ], "import/extensions": [ - "error", + 2, { "js": "never", "json": "always", @@ -796,46 +2000,37 @@ exports[`keeps rules stable 1`] = ` }, ], "import/named": [ - "off", - ], - "import/namespace": [ - 2, + 0, ], "import/newline-after-import": [ - "warn", + 1, ], "import/no-absolute-path": [ - "error", + 2, ], "import/no-amd": [ - "error", + 2, ], "import/no-duplicates": [ - "warn", + 1, { "prefer-inline": true, }, ], "import/no-dynamic-require": [ - "error", + 2, ], "import/no-extraneous-dependencies": [ - "error", + 2, ], "import/no-mutable-exports": [ - "error", - ], - "import/no-named-as-default": [ - 1, - ], - "import/no-named-as-default-member": [ - 1, + 2, ], "import/no-named-default": [ - "error", + 2, ], "import/no-unresolved": [ - "error", + 2, { "caseSensitive": true, "caseSensitiveStrict": false, @@ -843,10 +2038,10 @@ exports[`keeps rules stable 1`] = ` }, ], "import/no-webpack-loader-syntax": [ - "error", + 2, ], "import/order": [ - "warn", + 1, { "alphabetize": { "caseInsensitive": true, @@ -870,73 +2065,73 @@ exports[`keeps rules stable 1`] = ` }, ], "indent": [ - "off", + 0, ], "indent-legacy": [ - "off", + 0, ], "jsdoc/check-alignment": [ - "error", + 2, ], "jsdoc/check-param-names": [ - "error", + 2, ], "jsdoc/check-syntax": [ - "error", + 2, ], "jsdoc/check-tag-names": [ - "error", + 2, ], "jsdoc/implements-on-classes": [ - "error", + 2, ], "jsdoc/require-param-name": [ - "error", + 2, ], "jsdoc/require-param-type": [ - "error", + 2, ], "jsdoc/require-returns-check": [ - "error", + 2, ], "jsdoc/require-returns-type": [ - "error", + 2, ], "jsx-a11y/alt-text": [ - "error", + 2, ], "jsx-a11y/anchor-ambiguous-text": [ - "off", + 0, ], "jsx-a11y/anchor-has-content": [ - "error", + 2, ], "jsx-a11y/anchor-is-valid": [ - "error", + 2, ], "jsx-a11y/aria-activedescendant-has-tabindex": [ - "error", + 2, ], "jsx-a11y/aria-props": [ - "error", + 2, ], "jsx-a11y/aria-proptypes": [ - "error", + 2, ], "jsx-a11y/aria-role": [ - "error", + 2, ], "jsx-a11y/aria-unsupported-elements": [ - "error", + 2, ], "jsx-a11y/autocomplete-valid": [ - "error", + 2, ], "jsx-a11y/click-events-have-key-events": [ - "error", + 2, ], "jsx-a11y/control-has-associated-label": [ - "off", + 0, { "ignoreElements": [ "audio", @@ -966,19 +2161,19 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/heading-has-content": [ - "error", + 2, ], "jsx-a11y/html-has-lang": [ - "error", + 2, ], "jsx-a11y/iframe-has-title": [ - "error", + 2, ], "jsx-a11y/img-redundant-alt": [ - "error", + 2, ], "jsx-a11y/interactive-supports-focus": [ - "error", + 2, { "tabbable": [ "button", @@ -992,28 +2187,28 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/label-has-associated-control": [ - "error", + 2, ], "jsx-a11y/label-has-for": [ - "off", + 0, ], "jsx-a11y/media-has-caption": [ - "error", + 2, ], "jsx-a11y/mouse-events-have-key-events": [ - "error", + 2, ], "jsx-a11y/no-access-key": [ - "error", + 2, ], "jsx-a11y/no-autofocus": [ - "error", + 2, ], "jsx-a11y/no-distracting-elements": [ - "error", + 2, ], "jsx-a11y/no-interactive-element-to-noninteractive-role": [ - "error", + 2, { "canvas": [ "img", @@ -1025,7 +2220,7 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/no-noninteractive-element-interactions": [ - "error", + 2, { "alert": [ "onKeyUp", @@ -1062,7 +2257,7 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/no-noninteractive-element-to-interactive-role": [ - "error", + 2, { "fieldset": [ "radiogroup", @@ -1104,7 +2299,7 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/no-noninteractive-tabindex": [ - "error", + 2, { "allowExpressionValues": true, "roles": [ @@ -1114,13 +2309,13 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/no-onchange": [ - "off", + 0, ], "jsx-a11y/no-redundant-roles": [ - "error", + 2, ], "jsx-a11y/no-static-element-interactions": [ - "error", + 2, { "allowExpressionValues": true, "handlers": [ @@ -1134,47 +2329,47 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/role-has-required-aria-props": [ - "error", + 2, ], "jsx-a11y/role-supports-aria-props": [ - "error", + 2, ], "jsx-a11y/scope": [ - "error", + 2, ], "jsx-a11y/tabindex-no-positive": [ - "error", + 2, ], "jsx-quotes": [ - "off", + 0, ], "key-spacing": [ - "off", + 0, ], "keyword-spacing": [ - "off", + 0, ], "linebreak-style": [ - "off", + 0, ], "lines-around-comment": [ 0, ], "max-classes-per-file": [ - "error", + 2, 1, ], "max-len": [ 0, ], "max-statements-per-line": [ - "off", + 0, ], "multiline-ternary": [ - "off", + 0, ], "new-cap": [ - "error", + 2, { "capIsNew": false, "capIsNewExceptions": [ @@ -1188,104 +2383,122 @@ exports[`keeps rules stable 1`] = ` }, ], "new-parens": [ - "off", + 0, ], "newline-per-chained-call": [ - "off", + 0, ], "no-alert": [ - "warn", + 1, ], "no-array-constructor": [ - "off", + 0, ], "no-arrow-condition": [ - "off", + 0, ], "no-async-promise-executor": [ - "error", + 2, ], "no-await-in-loop": [ - "error", + 2, ], "no-bitwise": [ - "error", + 2, + { + "allow": [], + "int32Hint": false, + }, ], "no-caller": [ - "error", + 2, ], "no-case-declarations": [ - "error", + 2, ], "no-class-assign": [ - "off", + 2, ], "no-comma-dangle": [ - "off", + 0, ], "no-compare-neg-zero": [ - "error", + 2, ], "no-cond-assign": [ - "error", + 2, "always", ], "no-confusing-arrow": [ 0, ], "no-console": [ - "warn", + 1, + {}, ], "no-const-assign": [ - "off", + 2, + ], + "no-constant-binary-expression": [ + 2, ], "no-constant-condition": [ - "warn", + 1, + { + "checkLoops": "allExceptWhileTrue", + }, ], "no-continue": [ - "error", + 2, ], "no-control-regex": [ - "error", + 2, ], "no-debugger": [ - "error", + 2, ], "no-delete-var": [ - "error", + 2, ], "no-dupe-args": [ - "off", + 2, ], "no-dupe-class-members": [ - "off", + 2, ], "no-dupe-else-if": [ - "error", + 2, ], "no-dupe-keys": [ - "off", + 2, ], "no-duplicate-case": [ - "error", + 2, ], "no-duplicate-imports": [ - "off", + 0, + { + "allowSeparateTypeImports": false, + "includeExports": false, + }, ], "no-else-return": [ - "error", + 2, { "allowElseIf": true, }, ], "no-empty": [ - "error", + 2, + { + "allowEmptyCatch": false, + }, ], "no-empty-character-class": [ - "error", + 2, ], "no-empty-function": [ - "off", + 0, { "allow": [ "arrowFunctions", @@ -1295,164 +2508,198 @@ exports[`keeps rules stable 1`] = ` }, ], "no-empty-pattern": [ - "error", + 2, + { + "allowObjectPatternsAsParameters": false, + }, + ], + "no-empty-static-block": [ + 2, ], "no-eval": [ - "error", + 2, + { + "allowIndirect": false, + }, ], "no-ex-assign": [ - "error", + 2, ], "no-extend-native": [ - "error", + 2, + { + "exceptions": [], + }, ], "no-extra-bind": [ - "error", + 2, ], "no-extra-boolean-cast": [ - "error", + 2, + {}, ], "no-extra-label": [ - "error", + 2, ], "no-extra-parens": [ - "off", + 0, ], "no-extra-semi": [ - "off", + 0, ], "no-fallthrough": [ - "error", + 2, + { + "allowEmptyCase": false, + "reportUnusedFallthroughComment": false, + }, ], "no-floating-decimal": [ - "off", + 0, ], "no-func-assign": [ - "off", + 2, ], "no-global-assign": [ - "error", + 2, + { + "exceptions": [], + }, ], "no-implied-eval": [ - "off", + 0, ], "no-import-assign": [ - "off", - ], - "no-inner-declarations": [ - "error", + 2, ], "no-invalid-regexp": [ - "error", + 2, + {}, ], "no-irregular-whitespace": [ - "error", + 2, + { + "skipComments": false, + "skipJSXText": false, + "skipRegExps": false, + "skipStrings": true, + "skipTemplates": false, + }, ], "no-iterator": [ - "error", + 2, ], "no-label-var": [ - "error", + 2, ], "no-labels": [ - "error", + 2, { "allowLoop": false, "allowSwitch": false, }, ], "no-lone-blocks": [ - "error", + 2, ], "no-lonely-if": [ - "error", + 2, ], "no-loop-func": [ - "error", + 2, ], "no-loss-of-precision": [ - "error", + 2, ], "no-misleading-character-class": [ - "error", + 2, + { + "allowEscape": false, + }, ], "no-mixed-operators": [ 0, ], "no-mixed-spaces-and-tabs": [ - "off", + 0, ], "no-multi-assign": [ - "error", + 2, + { + "ignoreNonDeclaration": false, + }, ], "no-multi-spaces": [ - "off", + 0, ], "no-multi-str": [ - "error", + 2, ], "no-multiple-empty-lines": [ - "off", + 0, ], "no-nested-ternary": [ - "error", + 2, ], "no-new": [ - "error", + 2, ], "no-new-func": [ - "error", + 2, ], "no-new-native-nonconstructor": [ - "off", - ], - "no-new-symbol": [ - "off", + 2, ], "no-new-wrappers": [ - "error", + 2, ], "no-nonoctal-decimal-escape": [ - "error", + 2, ], "no-obj-calls": [ - "off", + 2, ], "no-object-constructor": [ - "error", + 2, ], "no-octal": [ - "error", + 2, ], "no-octal-escape": [ - "error", + 2, ], "no-param-reassign": [ - "error", + 2, { "props": false, }, ], "no-plusplus": [ - "error", + 2, + { + "allowForLoopAfterthoughts": false, + }, ], "no-proto": [ - "error", + 2, ], "no-prototype-builtins": [ - "off", + 0, ], "no-redeclare": [ - "off", + 2, + { + "builtinGlobals": true, + }, ], "no-regex-spaces": [ - "error", + 2, ], "no-reserved-keys": [ - "off", + 0, ], "no-restricted-globals": [ - "error", + 2, "isFinite", "isNaN", "addEventListener", @@ -1515,10 +2762,10 @@ exports[`keeps rules stable 1`] = ` "top", ], "no-restricted-imports": [ - "error", + 2, ], "no-restricted-properties": [ - "error", + 2, { "message": "arguments.callee is deprecated", "object": "arguments", @@ -1569,7 +2816,7 @@ exports[`keeps rules stable 1`] = ` }, ], "no-restricted-syntax": [ - "error", + 2, { "message": "for..in loops iterate over the entire prototype chain, which is virtually never what you want. Use Object.{keys,values,entries}, and iterate over the resulting array.", "selector": "ForInStatement", @@ -1596,71 +2843,87 @@ exports[`keeps rules stable 1`] = ` }, ], "no-return-assign": [ - "error", + 2, "except-parens", ], "no-return-await": [ - "off", + 0, ], "no-script-url": [ - "error", + 2, ], "no-self-assign": [ - "error", + 2, + { + "props": true, + }, ], "no-self-compare": [ - "error", + 2, ], "no-sequences": [ - "error", + 2, + { + "allowInParentheses": true, + }, ], "no-setter-return": [ - "off", + 2, ], "no-shadow": [ - "off", + 0, { + "allow": [], "builtinGlobals": false, "hoist": "all", + "ignoreFunctionTypeParameterNameValueShadow": true, "ignoreOnInitialization": false, + "ignoreTypeValueShadow": true, }, ], "no-shadow-restricted-names": [ - "error", + 2, + { + "reportGlobalThis": false, + }, ], "no-space-before-semi": [ - "off", + 0, ], "no-spaced-func": [ - "off", + 0, ], "no-sparse-arrays": [ - "error", + 2, ], "no-tabs": [ 0, ], "no-template-curly-in-string": [ - "error", + 2, ], "no-this-before-super": [ - "off", + 2, ], "no-throw-literal": [ - "off", + 0, ], "no-trailing-spaces": [ - "off", + 0, ], "no-undef": [ - "off", + 2, + { + "typeof": false, + }, ], "no-undef-init": [ - "error", + 2, ], "no-underscore-dangle": [ - "error", + 2, { + "allow": [], "allowAfterSuper": true, "allowAfterThis": true, "allowAfterThisConstructor": false, @@ -1675,31 +2938,47 @@ exports[`keeps rules stable 1`] = ` 0, ], "no-unneeded-ternary": [ - "error", + 2, { "defaultAssignment": false, }, ], "no-unreachable": [ - "off", + 2, ], "no-unsafe-finally": [ - "error", + 2, ], "no-unsafe-negation": [ - "off", + 2, + { + "enforceForOrderingRelations": false, + }, ], "no-unsafe-optional-chaining": [ - "error", + 2, + { + "disallowArithmeticOperators": false, + }, ], "no-unused-expressions": [ - "off", + 0, + { + "allowShortCircuit": false, + "allowTaggedTemplates": false, + "allowTernary": false, + "enforceForJSX": false, + "ignoreDirectives": false, + }, ], "no-unused-labels": [ - "error", + 2, + ], + "no-unused-private-class-members": [ + 2, ], "no-unused-vars": [ - "off", + 0, { "args": "after-used", "ignoreRestSiblings": true, @@ -1707,29 +2986,35 @@ exports[`keeps rules stable 1`] = ` }, ], "no-use-before-define": [ - "off", + 0, "nofunc", ], "no-useless-backreference": [ - "error", + 2, ], "no-useless-catch": [ - "error", + 2, ], "no-useless-computed-key": [ - "error", + 2, + { + "enforceForClassMembers": true, + }, ], "no-useless-concat": [ - "error", + 2, ], "no-useless-constructor": [ - "off", + 0, ], "no-useless-escape": [ - "error", + 2, + { + "allowRegexCharacters": [], + }, ], "no-useless-rename": [ - "error", + 2, { "ignoreDestructuring": false, "ignoreExport": false, @@ -1737,40 +3022,40 @@ exports[`keeps rules stable 1`] = ` }, ], "no-useless-return": [ - "error", + 2, ], "no-var": [ - "error", + 2, ], "no-void": [ - "error", + 2, { "allowAsStatement": true, }, ], "no-whitespace-before-property": [ - "off", + 0, ], "no-with": [ - "error", + 2, ], "no-wrap-func": [ - "off", + 0, ], "nonblock-statement-body-position": [ - "off", + 0, ], "object-curly-newline": [ - "off", + 0, ], "object-curly-spacing": [ - "off", + 0, ], "object-property-newline": [ - "off", + 0, ], "object-shorthand": [ - "error", + 2, "always", { "avoidQuotes": true, @@ -1778,53 +3063,53 @@ exports[`keeps rules stable 1`] = ` }, ], "one-var": [ - "error", + 2, "never", ], "one-var-declaration-per-line": [ - "off", + 0, ], "operator-assignment": [ - "error", + 2, "always", ], "operator-linebreak": [ - "off", + 0, ], "padded-blocks": [ - "off", + 0, ], "prefer-arrow-callback": [ - "off", + 2, { "allowNamedFunctions": false, "allowUnboundThis": true, }, ], "prefer-const": [ - "error", + 2, { "destructuring": "any", "ignoreReadBeforeAssign": true, }, ], "prefer-numeric-literals": [ - "error", + 2, ], "prefer-promise-reject-errors": [ - "off", + 0, + { + "allowEmptyReject": false, + }, ], "prefer-rest-params": [ - "error", - ], - "prefer-spread": [ - "error", + 2, ], "prefer-template": [ - "error", + 2, ], "prettier/prettier": [ - "warn", + 1, { "printWidth": 100, "singleQuote": true, @@ -1835,37 +3120,38 @@ exports[`keeps rules stable 1`] = ` }, ], "quote-props": [ - "off", + 0, ], "quotes": [ 0, ], "radix": [ - "error", + 2, + "always", ], "react-hooks/exhaustive-deps": [ - "error", + 2, ], "react-hooks/rules-of-hooks": [ - "error", + 2, ], "react/destructuring-assignment": [ - "error", + 2, ], "react/display-name": [ - "off", + 0, ], "react/jsx-child-element-spacing": [ - "off", + 0, ], "react/jsx-closing-bracket-location": [ - "off", + 0, ], "react/jsx-closing-tag-location": [ - "off", + 0, ], "react/jsx-curly-brace-presence": [ - "error", + 2, { "children": "never", "propElementValues": "always", @@ -1873,13 +3159,13 @@ exports[`keeps rules stable 1`] = ` }, ], "react/jsx-curly-newline": [ - "off", + 0, ], "react/jsx-curly-spacing": [ - "off", + 0, ], "react/jsx-equals-spacing": [ - "off", + 0, ], "react/jsx-filename-extension": [ 1, @@ -1890,29 +3176,29 @@ exports[`keeps rules stable 1`] = ` }, ], "react/jsx-first-prop-new-line": [ - "off", + 0, ], "react/jsx-fragments": [ - "error", + 2, "syntax", ], "react/jsx-indent": [ - "off", + 0, ], "react/jsx-indent-props": [ - "off", + 0, ], "react/jsx-key": [ 2, ], "react/jsx-max-props-per-line": [ - "off", + 0, ], "react/jsx-newline": [ - "off", + 0, ], "react/jsx-no-bind": [ - "error", + 2, { "allowArrowFunctions": true, "allowBind": false, @@ -1934,25 +3220,25 @@ exports[`keeps rules stable 1`] = ` 2, ], "react/jsx-no-useless-fragment": [ - "error", + 2, ], "react/jsx-one-expression-per-line": [ - "off", + 0, ], "react/jsx-pascal-case": [ - "error", + 2, ], "react/jsx-props-no-multi-spaces": [ - "off", + 0, ], "react/jsx-sort-props": [ - "warn", + 1, ], "react/jsx-space-before-closing": [ - "off", + 0, ], "react/jsx-tag-spacing": [ - "off", + 0, ], "react/jsx-uses-react": [ 2, @@ -1961,7 +3247,7 @@ exports[`keeps rules stable 1`] = ` 2, ], "react/jsx-wrap-multilines": [ - "off", + 0, ], "react/no-children-prop": [ 2, @@ -1982,7 +3268,7 @@ exports[`keeps rules stable 1`] = ` 2, ], "react/no-redundant-should-component-update": [ - "error", + 2, ], "react/no-render-return-value": [ 2, @@ -1991,10 +3277,10 @@ exports[`keeps rules stable 1`] = ` 2, ], "react/no-this-in-sfc": [ - "error", + 2, ], "react/no-unescaped-entities": [ - "error", + 2, { "forbid": [ { @@ -2016,19 +3302,19 @@ exports[`keeps rules stable 1`] = ` 2, ], "react/no-unsafe": [ - "error", + 2, ], "react/no-unused-state": [ - "error", + 2, ], "react/prefer-es6-class": [ - "error", + 2, ], "react/prefer-read-only-props": [ - "error", + 2, ], "react/prop-types": [ - "off", + 0, ], "react/react-in-jsx-scope": [ 2, @@ -2037,308 +3323,295 @@ exports[`keeps rules stable 1`] = ` 2, ], "react/self-closing-comp": [ - "error", + 2, ], "react/style-prop-object": [ - "error", + 2, ], "require-await": [ - "off", + 0, ], "require-yield": [ - "error", + 2, ], "rest-spread-spacing": [ - "off", + 0, ], "semi": [ - "off", + 0, ], "semi-spacing": [ - "off", + 0, ], "semi-style": [ - "off", + 0, ], "sort-imports": [ - "error", + 2, { "allowSeparatedGroups": false, "ignoreCase": true, "ignoreDeclarationSort": true, "ignoreMemberSort": false, + "memberSyntaxSortOrder": [ + "none", + "all", + "multiple", + "single", + ], }, ], "sort-keys": [ - "off", + 0, + "asc", + { + "allowLineSeparatedGroups": false, + "caseSensitive": true, + "ignoreComputedKeys": false, + "minKeys": 2, + "natural": false, + }, ], "space-after-function-name": [ - "off", + 0, ], "space-after-keywords": [ - "off", + 0, ], "space-before-blocks": [ - "off", + 0, ], "space-before-function-paren": [ - "off", + 0, ], "space-before-function-parentheses": [ - "off", + 0, ], "space-before-keywords": [ - "off", + 0, ], "space-in-brackets": [ - "off", + 0, ], "space-in-parens": [ - "off", + 0, ], "space-infix-ops": [ - "off", + 0, ], "space-return-throw-case": [ - "off", + 0, ], "space-unary-ops": [ - "off", + 0, ], "space-unary-word-ops": [ - "off", + 0, ], "standard/array-bracket-even-spacing": [ - "off", + 0, ], "standard/computed-property-even-spacing": [ - "off", + 0, ], "standard/object-curly-even-spacing": [ - "off", + 0, ], "strict": [ - "error", + 2, + "safe", ], "switch-case/newline-between-switch-case": [ - "warn", + 1, "always", { "fallthrough": "never", }, ], "switch-colon-spacing": [ - "off", + 0, ], "symbol-description": [ - "error", + 2, ], "template-curly-spacing": [ - "off", + 0, ], "template-tag-spacing": [ - "off", + 0, ], "unicorn/empty-brace-spaces": [ - "off", + 0, ], "unicorn/no-nested-ternary": [ - "off", + 0, ], "unicorn/number-literal-case": [ - "off", + 0, ], "unicorn/template-indent": [ 0, ], "use-isnan": [ - "error", + 2, + { + "enforceForIndexOf": false, + "enforceForSwitchCase": true, + }, ], "valid-jsdoc": [ - "off", + 0, { "requireParamDescription": false, - "requireParamType": true, - "requireReturn": true, "requireReturnDescription": false, - "requireReturnType": true, }, ], "valid-typeof": [ - "error", + 2, { "requireStringLiterals": true, }, ], "vars-on-top": [ - "error", + 2, ], "vue/array-bracket-newline": [ - "off", + 0, ], "vue/array-bracket-spacing": [ - "off", + 0, ], "vue/array-element-newline": [ - "off", + 0, ], "vue/arrow-spacing": [ - "off", + 0, ], "vue/block-spacing": [ - "off", + 0, ], "vue/block-tag-newline": [ - "off", + 0, ], "vue/brace-style": [ - "off", + 0, ], "vue/comma-dangle": [ - "off", + 0, ], "vue/comma-spacing": [ - "off", + 0, ], "vue/comma-style": [ - "off", + 0, ], "vue/dot-location": [ - "off", + 0, ], "vue/func-call-spacing": [ - "off", + 0, ], "vue/html-closing-bracket-newline": [ - "off", + 0, ], "vue/html-closing-bracket-spacing": [ - "off", + 0, ], "vue/html-end-tags": [ - "off", + 0, ], "vue/html-indent": [ - "off", + 0, ], "vue/html-quotes": [ - "off", + 0, ], "vue/html-self-closing": [ 0, ], "vue/key-spacing": [ - "off", + 0, ], "vue/keyword-spacing": [ - "off", + 0, ], "vue/max-attributes-per-line": [ - "off", + 0, ], "vue/max-len": [ 0, ], "vue/multiline-html-element-content-newline": [ - "off", + 0, ], "vue/multiline-ternary": [ - "off", + 0, ], "vue/mustache-interpolation-spacing": [ - "off", + 0, ], "vue/no-extra-parens": [ - "off", + 0, ], "vue/no-multi-spaces": [ - "off", + 0, ], "vue/no-spaces-around-equal-signs-in-attribute": [ - "off", + 0, ], "vue/object-curly-newline": [ - "off", + 0, ], "vue/object-curly-spacing": [ - "off", + 0, ], "vue/object-property-newline": [ - "off", + 0, ], "vue/operator-linebreak": [ - "off", + 0, ], "vue/quote-props": [ - "off", + 0, ], "vue/script-indent": [ - "off", + 0, ], "vue/singleline-html-element-content-newline": [ - "off", + 0, ], "vue/space-in-parens": [ - "off", + 0, ], "vue/space-infix-ops": [ - "off", + 0, ], "vue/space-unary-ops": [ - "off", + 0, ], "vue/template-curly-spacing": [ - "off", + 0, ], "wrap-iife": [ - "off", + 0, ], "wrap-regex": [ - "off", + 0, ], "yield-star-spacing": [ - "off", + 0, ], "yoda": [ - "error", + 2, + "never", + { + "exceptRange": false, + "onlyEquality": false, + }, ], }, "settings": { - "import/extensions": [ - ".ts", - ".cts", - ".mts", - ".tsx", - ".js", - ".jsx", - ".mjs", - ".cjs", - ], - "import/external-module-folders": [ - "node_modules", - "node_modules/@types", - ], - "import/parsers": { - "@typescript-eslint/parser": [ - ".ts", - ".cts", - ".mts", - ".tsx", - ], - }, "import/resolver": { - "node": { - "extensions": [ - ".ts", - ".cts", - ".mts", - ".tsx", - ".js", - ".jsx", - ".mjs", - ".cjs", - ], - }, "typescript": { "alwaysTryTypes": true, }, diff --git a/packages/eslint-config/test/__snapshots__/js.spec.js.snap b/packages/eslint-config/test/__snapshots__/js.spec.js.snap index c10ece8..71942ed 100644 --- a/packages/eslint-config/test/__snapshots__/js.spec.js.snap +++ b/packages/eslint-config/test/__snapshots__/js.spec.js.snap @@ -2,43 +2,1233 @@ exports[`keeps rules stable 1`] = ` { - "env": { - "browser": true, - "es6": true, - "node": true, - }, - "globals": {}, - "ignorePatterns": [], - "noInlineConfig": undefined, - "parser": null, - "parserOptions": { - "ecmaFeatures": { - "jsx": true, + "language": "@/js", + "languageOptions": { + "ecmaVersion": 2026, + "globals": { + "AI": false, + "AITextSession": false, + "AbortController": false, + "AbortSignal": false, + "AbsoluteOrientationSensor": false, + "AbstractRange": false, + "Accelerometer": false, + "AggregateError": false, + "AnalyserNode": false, + "Animation": false, + "AnimationEffect": false, + "AnimationEvent": false, + "AnimationPlaybackEvent": false, + "AnimationTimeline": false, + "Array": false, + "ArrayBuffer": false, + "Atomics": false, + "Attr": false, + "Audio": false, + "AudioBuffer": false, + "AudioBufferSourceNode": false, + "AudioContext": false, + "AudioData": false, + "AudioDecoder": false, + "AudioDestinationNode": false, + "AudioEncoder": false, + "AudioListener": false, + "AudioNode": false, + "AudioParam": false, + "AudioParamMap": false, + "AudioProcessingEvent": false, + "AudioScheduledSourceNode": false, + "AudioSinkInfo": false, + "AudioWorklet": false, + "AudioWorkletGlobalScope": false, + "AudioWorkletNode": false, + "AudioWorkletProcessor": false, + "AuthenticatorAssertionResponse": false, + "AuthenticatorAttestationResponse": false, + "AuthenticatorResponse": false, + "BackgroundFetchManager": false, + "BackgroundFetchRecord": false, + "BackgroundFetchRegistration": false, + "BarProp": false, + "BarcodeDetector": false, + "BaseAudioContext": false, + "BatteryManager": false, + "BeforeUnloadEvent": false, + "BigInt": false, + "BigInt64Array": false, + "BigUint64Array": false, + "BiquadFilterNode": false, + "Blob": false, + "BlobEvent": false, + "Bluetooth": false, + "BluetoothCharacteristicProperties": false, + "BluetoothDevice": false, + "BluetoothRemoteGATTCharacteristic": false, + "BluetoothRemoteGATTDescriptor": false, + "BluetoothRemoteGATTServer": false, + "BluetoothRemoteGATTService": false, + "BluetoothUUID": false, + "Boolean": false, + "BroadcastChannel": false, + "BrowserCaptureMediaStreamTrack": false, + "ByteLengthQueuingStrategy": false, + "CDATASection": false, + "CSS": false, + "CSSAnimation": false, + "CSSConditionRule": false, + "CSSContainerRule": false, + "CSSCounterStyleRule": false, + "CSSFontFaceRule": false, + "CSSFontFeatureValuesRule": false, + "CSSFontPaletteValuesRule": false, + "CSSGroupingRule": false, + "CSSImageValue": false, + "CSSImportRule": false, + "CSSKeyframeRule": false, + "CSSKeyframesRule": false, + "CSSKeywordValue": false, + "CSSLayerBlockRule": false, + "CSSLayerStatementRule": false, + "CSSMarginRule": false, + "CSSMathClamp": false, + "CSSMathInvert": false, + "CSSMathMax": false, + "CSSMathMin": false, + "CSSMathNegate": false, + "CSSMathProduct": false, + "CSSMathSum": false, + "CSSMathValue": false, + "CSSMatrixComponent": false, + "CSSMediaRule": false, + "CSSNamespaceRule": false, + "CSSNestedDeclarations": false, + "CSSNumericArray": false, + "CSSNumericValue": false, + "CSSPageDescriptors": false, + "CSSPageRule": false, + "CSSPerspective": false, + "CSSPositionTryDescriptors": false, + "CSSPositionTryRule": false, + "CSSPositionValue": false, + "CSSPropertyRule": false, + "CSSRotate": false, + "CSSRule": false, + "CSSRuleList": false, + "CSSScale": false, + "CSSScopeRule": false, + "CSSSkew": false, + "CSSSkewX": false, + "CSSSkewY": false, + "CSSStartingStyleRule": false, + "CSSStyleDeclaration": false, + "CSSStyleRule": false, + "CSSStyleSheet": false, + "CSSStyleValue": false, + "CSSSupportsRule": false, + "CSSTransformComponent": false, + "CSSTransformValue": false, + "CSSTransition": false, + "CSSTranslate": false, + "CSSUnitValue": false, + "CSSUnparsedValue": false, + "CSSVariableReferenceValue": false, + "CSSViewTransitionRule": false, + "Cache": false, + "CacheStorage": false, + "CanvasCaptureMediaStream": false, + "CanvasCaptureMediaStreamTrack": false, + "CanvasGradient": false, + "CanvasPattern": false, + "CanvasRenderingContext2D": false, + "CaptureController": false, + "CaretPosition": false, + "ChannelMergerNode": false, + "ChannelSplitterNode": false, + "ChapterInformation": false, + "CharacterBoundsUpdateEvent": false, + "CharacterData": false, + "Clipboard": false, + "ClipboardEvent": false, + "ClipboardItem": false, + "CloseEvent": false, + "CloseWatcher": false, + "Comment": false, + "CompositionEvent": false, + "CompressionStream": false, + "ConstantSourceNode": false, + "ContentVisibilityAutoStateChangeEvent": false, + "ConvolverNode": false, + "CookieChangeEvent": false, + "CookieDeprecationLabel": false, + "CookieStore": false, + "CookieStoreManager": false, + "CountQueuingStrategy": false, + "Credential": false, + "CredentialsContainer": false, + "CropTarget": false, + "Crypto": false, + "CryptoKey": false, + "CustomElementRegistry": false, + "CustomEvent": false, + "CustomStateSet": false, + "DOMError": false, + "DOMException": false, + "DOMImplementation": false, + "DOMMatrix": false, + "DOMMatrixReadOnly": false, + "DOMParser": false, + "DOMPoint": false, + "DOMPointReadOnly": false, + "DOMQuad": false, + "DOMRect": false, + "DOMRectList": false, + "DOMRectReadOnly": false, + "DOMStringList": false, + "DOMStringMap": false, + "DOMTokenList": false, + "DataTransfer": false, + "DataTransferItem": false, + "DataTransferItemList": false, + "DataView": false, + "Date": false, + "DecompressionStream": false, + "DelayNode": false, + "DelegatedInkTrailPresenter": false, + "DeviceMotionEvent": false, + "DeviceMotionEventAcceleration": false, + "DeviceMotionEventRotationRate": false, + "DeviceOrientationEvent": false, + "Document": false, + "DocumentFragment": false, + "DocumentPictureInPicture": false, + "DocumentPictureInPictureEvent": false, + "DocumentTimeline": false, + "DocumentType": false, + "DragEvent": false, + "DynamicsCompressorNode": false, + "EditContext": false, + "Element": false, + "ElementInternals": false, + "EncodedAudioChunk": false, + "EncodedVideoChunk": false, + "Error": false, + "ErrorEvent": false, + "EvalError": false, + "Event": false, + "EventCounts": false, + "EventSource": false, + "EventTarget": false, + "External": false, + "EyeDropper": false, + "FeaturePolicy": false, + "FederatedCredential": false, + "Fence": false, + "FencedFrameConfig": false, + "FetchLaterResult": false, + "File": false, + "FileList": false, + "FileReader": false, + "FileSystem": false, + "FileSystemDirectoryEntry": false, + "FileSystemDirectoryHandle": false, + "FileSystemDirectoryReader": false, + "FileSystemEntry": false, + "FileSystemFileEntry": false, + "FileSystemFileHandle": false, + "FileSystemHandle": false, + "FileSystemWritableFileStream": false, + "FinalizationRegistry": false, + "Float16Array": false, + "Float32Array": false, + "Float64Array": false, + "FocusEvent": false, + "FontData": false, + "FontFace": false, + "FontFaceSet": false, + "FontFaceSetLoadEvent": false, + "FormData": false, + "FormDataEvent": false, + "FragmentDirective": false, + "Function": false, + "GPU": false, + "GPUAdapter": false, + "GPUAdapterInfo": false, + "GPUBindGroup": false, + "GPUBindGroupLayout": false, + "GPUBuffer": false, + "GPUBufferUsage": false, + "GPUCanvasContext": false, + "GPUColorWrite": false, + "GPUCommandBuffer": false, + "GPUCommandEncoder": false, + "GPUCompilationInfo": false, + "GPUCompilationMessage": false, + "GPUComputePassEncoder": false, + "GPUComputePipeline": false, + "GPUDevice": false, + "GPUDeviceLostInfo": false, + "GPUError": false, + "GPUExternalTexture": false, + "GPUInternalError": false, + "GPUMapMode": false, + "GPUOutOfMemoryError": false, + "GPUPipelineError": false, + "GPUPipelineLayout": false, + "GPUQuerySet": false, + "GPUQueue": false, + "GPURenderBundle": false, + "GPURenderBundleEncoder": false, + "GPURenderPassEncoder": false, + "GPURenderPipeline": false, + "GPUSampler": false, + "GPUShaderModule": false, + "GPUShaderStage": false, + "GPUSupportedFeatures": false, + "GPUSupportedLimits": false, + "GPUTexture": false, + "GPUTextureUsage": false, + "GPUTextureView": false, + "GPUUncapturedErrorEvent": false, + "GPUValidationError": false, + "GainNode": false, + "Gamepad": false, + "GamepadAxisMoveEvent": false, + "GamepadButton": false, + "GamepadButtonEvent": false, + "GamepadEvent": false, + "GamepadHapticActuator": false, + "GamepadPose": false, + "Geolocation": false, + "GeolocationCoordinates": false, + "GeolocationPosition": false, + "GeolocationPositionError": false, + "GravitySensor": false, + "Gyroscope": false, + "HID": false, + "HIDConnectionEvent": false, + "HIDDevice": false, + "HIDInputReportEvent": false, + "HTMLAllCollection": false, + "HTMLAnchorElement": false, + "HTMLAreaElement": false, + "HTMLAudioElement": false, + "HTMLBRElement": false, + "HTMLBaseElement": false, + "HTMLBodyElement": false, + "HTMLButtonElement": false, + "HTMLCanvasElement": false, + "HTMLCollection": false, + "HTMLDListElement": false, + "HTMLDataElement": false, + "HTMLDataListElement": false, + "HTMLDetailsElement": false, + "HTMLDialogElement": false, + "HTMLDirectoryElement": false, + "HTMLDivElement": false, + "HTMLDocument": false, + "HTMLElement": false, + "HTMLEmbedElement": false, + "HTMLFencedFrameElement": false, + "HTMLFieldSetElement": false, + "HTMLFontElement": false, + "HTMLFormControlsCollection": false, + "HTMLFormElement": false, + "HTMLFrameElement": false, + "HTMLFrameSetElement": false, + "HTMLHRElement": false, + "HTMLHeadElement": false, + "HTMLHeadingElement": false, + "HTMLHtmlElement": false, + "HTMLIFrameElement": false, + "HTMLImageElement": false, + "HTMLInputElement": false, + "HTMLLIElement": false, + "HTMLLabelElement": false, + "HTMLLegendElement": false, + "HTMLLinkElement": false, + "HTMLMapElement": false, + "HTMLMarqueeElement": false, + "HTMLMediaElement": false, + "HTMLMenuElement": false, + "HTMLMetaElement": false, + "HTMLMeterElement": false, + "HTMLModElement": false, + "HTMLOListElement": false, + "HTMLObjectElement": false, + "HTMLOptGroupElement": false, + "HTMLOptionElement": false, + "HTMLOptionsCollection": false, + "HTMLOutputElement": false, + "HTMLParagraphElement": false, + "HTMLParamElement": false, + "HTMLPictureElement": false, + "HTMLPreElement": false, + "HTMLProgressElement": false, + "HTMLQuoteElement": false, + "HTMLScriptElement": false, + "HTMLSelectElement": false, + "HTMLSlotElement": false, + "HTMLSourceElement": false, + "HTMLSpanElement": false, + "HTMLStyleElement": false, + "HTMLTableCaptionElement": false, + "HTMLTableCellElement": false, + "HTMLTableColElement": false, + "HTMLTableElement": false, + "HTMLTableRowElement": false, + "HTMLTableSectionElement": false, + "HTMLTemplateElement": false, + "HTMLTextAreaElement": false, + "HTMLTimeElement": false, + "HTMLTitleElement": false, + "HTMLTrackElement": false, + "HTMLUListElement": false, + "HTMLUnknownElement": false, + "HTMLVideoElement": false, + "HashChangeEvent": false, + "Headers": false, + "Highlight": false, + "HighlightRegistry": false, + "History": false, + "IDBCursor": false, + "IDBCursorWithValue": false, + "IDBDatabase": false, + "IDBFactory": false, + "IDBIndex": false, + "IDBKeyRange": false, + "IDBObjectStore": false, + "IDBOpenDBRequest": false, + "IDBRequest": false, + "IDBTransaction": false, + "IDBVersionChangeEvent": false, + "IIRFilterNode": false, + "IdentityCredential": false, + "IdentityCredentialError": false, + "IdentityProvider": false, + "IdleDeadline": false, + "IdleDetector": false, + "Image": false, + "ImageBitmap": false, + "ImageBitmapRenderingContext": false, + "ImageCapture": false, + "ImageData": false, + "ImageDecoder": false, + "ImageTrack": false, + "ImageTrackList": false, + "Infinity": false, + "Ink": false, + "InputDeviceCapabilities": false, + "InputDeviceInfo": false, + "InputEvent": false, + "Int16Array": false, + "Int32Array": false, + "Int8Array": false, + "IntersectionObserver": false, + "IntersectionObserverEntry": false, + "Intl": false, + "JSON": false, + "Keyboard": false, + "KeyboardEvent": false, + "KeyboardLayoutMap": false, + "KeyframeEffect": false, + "LargestContentfulPaint": false, + "LaunchParams": false, + "LaunchQueue": false, + "LayoutShift": false, + "LayoutShiftAttribution": false, + "LinearAccelerationSensor": false, + "Location": false, + "Lock": false, + "LockManager": false, + "MIDIAccess": false, + "MIDIConnectionEvent": false, + "MIDIInput": false, + "MIDIInputMap": false, + "MIDIMessageEvent": false, + "MIDIOutput": false, + "MIDIOutputMap": false, + "MIDIPort": false, + "Map": false, + "Math": false, + "MathMLElement": false, + "MediaCapabilities": false, + "MediaCapabilitiesInfo": false, + "MediaDeviceInfo": false, + "MediaDevices": false, + "MediaElementAudioSourceNode": false, + "MediaEncryptedEvent": false, + "MediaError": false, + "MediaKeyError": false, + "MediaKeyMessageEvent": false, + "MediaKeySession": false, + "MediaKeyStatusMap": false, + "MediaKeySystemAccess": false, + "MediaKeys": false, + "MediaList": false, + "MediaMetadata": false, + "MediaQueryList": false, + "MediaQueryListEvent": false, + "MediaRecorder": false, + "MediaRecorderErrorEvent": false, + "MediaSession": false, + "MediaSource": false, + "MediaSourceHandle": false, + "MediaStream": false, + "MediaStreamAudioDestinationNode": false, + "MediaStreamAudioSourceNode": false, + "MediaStreamEvent": false, + "MediaStreamTrack": false, + "MediaStreamTrackAudioSourceNode": false, + "MediaStreamTrackAudioStats": false, + "MediaStreamTrackEvent": false, + "MediaStreamTrackGenerator": false, + "MediaStreamTrackProcessor": false, + "MediaStreamTrackVideoStats": false, + "MessageChannel": false, + "MessageEvent": false, + "MessagePort": false, + "MimeType": false, + "MimeTypeArray": false, + "ModelGenericSession": false, + "ModelManager": false, + "MouseEvent": false, + "MutationEvent": false, + "MutationObserver": false, + "MutationRecord": false, + "NaN": false, + "NamedNodeMap": false, + "NavigateEvent": false, + "Navigation": false, + "NavigationActivation": false, + "NavigationCurrentEntryChangeEvent": false, + "NavigationDestination": false, + "NavigationHistoryEntry": false, + "NavigationPreloadManager": false, + "NavigationTransition": false, + "Navigator": false, + "NavigatorLogin": false, + "NavigatorManagedData": false, + "NavigatorUAData": false, + "NetworkInformation": false, + "Node": false, + "NodeFilter": false, + "NodeIterator": false, + "NodeList": false, + "NotRestoredReasonDetails": false, + "NotRestoredReasons": false, + "Notification": false, + "NotifyPaintEvent": false, + "Number": false, + "OTPCredential": false, + "Object": false, + "OfflineAudioCompletionEvent": false, + "OfflineAudioContext": false, + "OffscreenCanvas": false, + "OffscreenCanvasRenderingContext2D": false, + "Option": false, + "OrientationSensor": false, + "OscillatorNode": false, + "OverconstrainedError": false, + "PERSISTENT": false, + "PageRevealEvent": false, + "PageSwapEvent": false, + "PageTransitionEvent": false, + "PannerNode": false, + "PasswordCredential": false, + "Path2D": false, + "PaymentAddress": false, + "PaymentManager": false, + "PaymentMethodChangeEvent": false, + "PaymentRequest": false, + "PaymentRequestUpdateEvent": false, + "PaymentResponse": false, + "Performance": false, + "PerformanceElementTiming": false, + "PerformanceEntry": false, + "PerformanceEventTiming": false, + "PerformanceLongAnimationFrameTiming": false, + "PerformanceLongTaskTiming": false, + "PerformanceMark": false, + "PerformanceMeasure": false, + "PerformanceNavigation": false, + "PerformanceNavigationTiming": false, + "PerformanceObserver": false, + "PerformanceObserverEntryList": false, + "PerformancePaintTiming": false, + "PerformanceResourceTiming": false, + "PerformanceScriptTiming": false, + "PerformanceServerTiming": false, + "PerformanceTiming": false, + "PeriodicSyncManager": false, + "PeriodicWave": false, + "PermissionStatus": false, + "Permissions": false, + "PictureInPictureEvent": false, + "PictureInPictureWindow": false, + "Plugin": false, + "PluginArray": false, + "PointerEvent": false, + "PopStateEvent": false, + "Presentation": false, + "PresentationAvailability": false, + "PresentationConnection": false, + "PresentationConnectionAvailableEvent": false, + "PresentationConnectionCloseEvent": false, + "PresentationConnectionList": false, + "PresentationReceiver": false, + "PresentationRequest": false, + "PressureObserver": false, + "PressureRecord": false, + "ProcessingInstruction": false, + "Profiler": false, + "ProgressEvent": false, + "Promise": false, + "PromiseRejectionEvent": false, + "ProtectedAudience": false, + "Proxy": false, + "PublicKeyCredential": false, + "PushManager": false, + "PushSubscription": false, + "PushSubscriptionOptions": false, + "RTCCertificate": false, + "RTCDTMFSender": false, + "RTCDTMFToneChangeEvent": false, + "RTCDataChannel": false, + "RTCDataChannelEvent": false, + "RTCDtlsTransport": false, + "RTCEncodedAudioFrame": false, + "RTCEncodedVideoFrame": false, + "RTCError": false, + "RTCErrorEvent": false, + "RTCIceCandidate": false, + "RTCIceTransport": false, + "RTCPeerConnection": false, + "RTCPeerConnectionIceErrorEvent": false, + "RTCPeerConnectionIceEvent": false, + "RTCRtpReceiver": false, + "RTCRtpScriptTransform": false, + "RTCRtpSender": false, + "RTCRtpTransceiver": false, + "RTCSctpTransport": false, + "RTCSessionDescription": false, + "RTCStatsReport": false, + "RTCTrackEvent": false, + "RadioNodeList": false, + "Range": false, + "RangeError": false, + "ReadableByteStreamController": false, + "ReadableStream": false, + "ReadableStreamBYOBReader": false, + "ReadableStreamBYOBRequest": false, + "ReadableStreamDefaultController": false, + "ReadableStreamDefaultReader": false, + "ReferenceError": false, + "Reflect": false, + "RegExp": false, + "RelativeOrientationSensor": false, + "RemotePlayback": false, + "ReportingObserver": false, + "Request": false, + "ResizeObserver": false, + "ResizeObserverEntry": false, + "ResizeObserverSize": false, + "Response": false, + "SVGAElement": false, + "SVGAngle": false, + "SVGAnimateElement": false, + "SVGAnimateMotionElement": false, + "SVGAnimateTransformElement": false, + "SVGAnimatedAngle": false, + "SVGAnimatedBoolean": false, + "SVGAnimatedEnumeration": false, + "SVGAnimatedInteger": false, + "SVGAnimatedLength": false, + "SVGAnimatedLengthList": false, + "SVGAnimatedNumber": false, + "SVGAnimatedNumberList": false, + "SVGAnimatedPreserveAspectRatio": false, + "SVGAnimatedRect": false, + "SVGAnimatedString": false, + "SVGAnimatedTransformList": false, + "SVGAnimationElement": false, + "SVGCircleElement": false, + "SVGClipPathElement": false, + "SVGComponentTransferFunctionElement": false, + "SVGDefsElement": false, + "SVGDescElement": false, + "SVGElement": false, + "SVGEllipseElement": false, + "SVGFEBlendElement": false, + "SVGFEColorMatrixElement": false, + "SVGFEComponentTransferElement": false, + "SVGFECompositeElement": false, + "SVGFEConvolveMatrixElement": false, + "SVGFEDiffuseLightingElement": false, + "SVGFEDisplacementMapElement": false, + "SVGFEDistantLightElement": false, + "SVGFEDropShadowElement": false, + "SVGFEFloodElement": false, + "SVGFEFuncAElement": false, + "SVGFEFuncBElement": false, + "SVGFEFuncGElement": false, + "SVGFEFuncRElement": false, + "SVGFEGaussianBlurElement": false, + "SVGFEImageElement": false, + "SVGFEMergeElement": false, + "SVGFEMergeNodeElement": false, + "SVGFEMorphologyElement": false, + "SVGFEOffsetElement": false, + "SVGFEPointLightElement": false, + "SVGFESpecularLightingElement": false, + "SVGFESpotLightElement": false, + "SVGFETileElement": false, + "SVGFETurbulenceElement": false, + "SVGFilterElement": false, + "SVGForeignObjectElement": false, + "SVGGElement": false, + "SVGGeometryElement": false, + "SVGGradientElement": false, + "SVGGraphicsElement": false, + "SVGImageElement": false, + "SVGLength": false, + "SVGLengthList": false, + "SVGLineElement": false, + "SVGLinearGradientElement": false, + "SVGMPathElement": false, + "SVGMarkerElement": false, + "SVGMaskElement": false, + "SVGMatrix": false, + "SVGMetadataElement": false, + "SVGNumber": false, + "SVGNumberList": false, + "SVGPathElement": false, + "SVGPatternElement": false, + "SVGPoint": false, + "SVGPointList": false, + "SVGPolygonElement": false, + "SVGPolylineElement": false, + "SVGPreserveAspectRatio": false, + "SVGRadialGradientElement": false, + "SVGRect": false, + "SVGRectElement": false, + "SVGSVGElement": false, + "SVGScriptElement": false, + "SVGSetElement": false, + "SVGStopElement": false, + "SVGStringList": false, + "SVGStyleElement": false, + "SVGSwitchElement": false, + "SVGSymbolElement": false, + "SVGTSpanElement": false, + "SVGTextContentElement": false, + "SVGTextElement": false, + "SVGTextPathElement": false, + "SVGTextPositioningElement": false, + "SVGTitleElement": false, + "SVGTransform": false, + "SVGTransformList": false, + "SVGUnitTypes": false, + "SVGUseElement": false, + "SVGViewElement": false, + "Scheduler": false, + "Scheduling": false, + "Screen": false, + "ScreenDetailed": false, + "ScreenDetails": false, + "ScreenOrientation": false, + "ScriptProcessorNode": false, + "ScrollTimeline": false, + "SecurityPolicyViolationEvent": false, + "Selection": false, + "Sensor": false, + "SensorErrorEvent": false, + "Serial": false, + "SerialPort": false, + "ServiceWorker": false, + "ServiceWorkerContainer": false, + "ServiceWorkerRegistration": false, + "Set": false, + "ShadowRoot": false, + "SharedArrayBuffer": false, + "SharedStorage": false, + "SharedStorageWorklet": false, + "SharedWorker": false, + "SnapEvent": false, + "SourceBuffer": false, + "SourceBufferList": false, + "SpeechSynthesis": false, + "SpeechSynthesisErrorEvent": false, + "SpeechSynthesisEvent": false, + "SpeechSynthesisUtterance": false, + "SpeechSynthesisVoice": false, + "StaticRange": false, + "StereoPannerNode": false, + "Storage": false, + "StorageBucket": false, + "StorageBucketManager": false, + "StorageEvent": false, + "StorageManager": false, + "String": false, + "StylePropertyMap": false, + "StylePropertyMapReadOnly": false, + "StyleSheet": false, + "StyleSheetList": false, + "SubmitEvent": false, + "SubtleCrypto": false, + "Symbol": false, + "SyncManager": false, + "SyntaxError": false, + "TEMPORARY": false, + "TaskAttributionTiming": false, + "TaskController": false, + "TaskPriorityChangeEvent": false, + "TaskSignal": false, + "Text": false, + "TextDecoder": false, + "TextDecoderStream": false, + "TextEncoder": false, + "TextEncoderStream": false, + "TextEvent": false, + "TextFormat": false, + "TextFormatUpdateEvent": false, + "TextMetrics": false, + "TextTrack": false, + "TextTrackCue": false, + "TextTrackCueList": false, + "TextTrackList": false, + "TextUpdateEvent": false, + "TimeEvent": false, + "TimeRanges": false, + "ToggleEvent": false, + "Touch": false, + "TouchEvent": false, + "TouchList": false, + "TrackEvent": false, + "TransformStream": false, + "TransformStreamDefaultController": false, + "TransitionEvent": false, + "TreeWalker": false, + "TrustedHTML": false, + "TrustedScript": false, + "TrustedScriptURL": false, + "TrustedTypePolicy": false, + "TrustedTypePolicyFactory": false, + "TypeError": false, + "UIEvent": false, + "URIError": false, + "URL": false, + "URLPattern": false, + "URLSearchParams": false, + "USB": false, + "USBAlternateInterface": false, + "USBConfiguration": false, + "USBConnectionEvent": false, + "USBDevice": false, + "USBEndpoint": false, + "USBInTransferResult": false, + "USBInterface": false, + "USBIsochronousInTransferPacket": false, + "USBIsochronousInTransferResult": false, + "USBIsochronousOutTransferPacket": false, + "USBIsochronousOutTransferResult": false, + "USBOutTransferResult": false, + "Uint16Array": false, + "Uint32Array": false, + "Uint8Array": false, + "Uint8ClampedArray": false, + "UserActivation": false, + "VTTCue": false, + "VTTRegion": false, + "ValidityState": false, + "VideoColorSpace": false, + "VideoDecoder": false, + "VideoEncoder": false, + "VideoFrame": false, + "VideoPlaybackQuality": false, + "ViewTimeline": false, + "ViewTransition": false, + "ViewTransitionTypeSet": false, + "VirtualKeyboard": false, + "VirtualKeyboardGeometryChangeEvent": false, + "VisibilityStateEntry": false, + "VisualViewport": false, + "WGSLLanguageFeatures": false, + "WakeLock": false, + "WakeLockSentinel": false, + "WaveShaperNode": false, + "WeakMap": false, + "WeakRef": false, + "WeakSet": false, + "WebAssembly": false, + "WebGL2RenderingContext": false, + "WebGLActiveInfo": false, + "WebGLBuffer": false, + "WebGLContextEvent": false, + "WebGLFramebuffer": false, + "WebGLObject": false, + "WebGLProgram": false, + "WebGLQuery": false, + "WebGLRenderbuffer": false, + "WebGLRenderingContext": false, + "WebGLSampler": false, + "WebGLShader": false, + "WebGLShaderPrecisionFormat": false, + "WebGLSync": false, + "WebGLTexture": false, + "WebGLTransformFeedback": false, + "WebGLUniformLocation": false, + "WebGLVertexArrayObject": false, + "WebSocket": false, + "WebSocketError": false, + "WebSocketStream": false, + "WebTransport": false, + "WebTransportBidirectionalStream": false, + "WebTransportDatagramDuplexStream": false, + "WebTransportError": false, + "WebTransportReceiveStream": false, + "WebTransportSendStream": false, + "WheelEvent": false, + "Window": false, + "WindowControlsOverlay": false, + "WindowControlsOverlayGeometryChangeEvent": false, + "Worker": false, + "Worklet": false, + "WorkletGlobalScope": false, + "WritableStream": false, + "WritableStreamDefaultController": false, + "WritableStreamDefaultWriter": false, + "XMLDocument": false, + "XMLHttpRequest": false, + "XMLHttpRequestEventTarget": false, + "XMLHttpRequestUpload": false, + "XMLSerializer": false, + "XPathEvaluator": false, + "XPathExpression": false, + "XPathResult": false, + "XRAnchor": false, + "XRAnchorSet": false, + "XRBoundedReferenceSpace": false, + "XRCPUDepthInformation": false, + "XRCamera": false, + "XRDOMOverlayState": false, + "XRDepthInformation": false, + "XRFrame": false, + "XRHand": false, + "XRHitTestResult": false, + "XRHitTestSource": false, + "XRInputSource": false, + "XRInputSourceArray": false, + "XRInputSourceEvent": false, + "XRInputSourcesChangeEvent": false, + "XRJointPose": false, + "XRJointSpace": false, + "XRLayer": false, + "XRLightEstimate": false, + "XRLightProbe": false, + "XRPose": false, + "XRRay": false, + "XRReferenceSpace": false, + "XRReferenceSpaceEvent": false, + "XRRenderState": false, + "XRRigidTransform": false, + "XRSession": false, + "XRSessionEvent": false, + "XRSpace": false, + "XRSystem": false, + "XRTransientInputHitTestResult": false, + "XRTransientInputHitTestSource": false, + "XRView": false, + "XRViewerPose": false, + "XRViewport": false, + "XRWebGLBinding": false, + "XRWebGLDepthInformation": false, + "XRWebGLLayer": false, + "XSLTProcessor": false, + "addEventListener": false, + "ai": false, + "alert": false, + "atob": false, + "blur": false, + "btoa": false, + "caches": false, + "cancelAnimationFrame": false, + "cancelIdleCallback": false, + "clearInterval": false, + "clearTimeout": false, + "clientInformation": false, + "close": false, + "closed": false, + "confirm": false, + "console": false, + "cookieStore": false, + "createImageBitmap": false, + "credentialless": false, + "crossOriginIsolated": false, + "crypto": false, + "currentFrame": false, + "currentTime": false, + "customElements": false, + "decodeURI": false, + "decodeURIComponent": false, + "devicePixelRatio": false, + "dispatchEvent": false, + "document": false, + "documentPictureInPicture": false, + "encodeURI": false, + "encodeURIComponent": false, + "escape": false, + "eval": false, + "event": false, + "external": false, + "fence": false, + "fetch": false, + "fetchLater": false, + "find": false, + "focus": false, + "frameElement": false, + "frames": false, + "getComputedStyle": false, + "getScreenDetails": false, + "getSelection": false, + "globalThis": false, + "history": false, + "indexedDB": false, + "innerHeight": false, + "innerWidth": false, + "isFinite": false, + "isNaN": false, + "isSecureContext": false, + "launchQueue": false, + "length": false, + "localStorage": false, + "location": true, + "locationbar": false, + "matchMedia": false, + "menubar": false, + "model": false, + "moveBy": false, + "moveTo": false, + "name": false, + "navigation": false, + "navigator": false, + "offscreenBuffering": false, + "onabort": true, + "onafterprint": true, + "onanimationcancel": true, + "onanimationend": true, + "onanimationiteration": true, + "onanimationstart": true, + "onappinstalled": true, + "onauxclick": true, + "onbeforeinput": true, + "onbeforeinstallprompt": true, + "onbeforematch": true, + "onbeforeprint": true, + "onbeforetoggle": true, + "onbeforeunload": true, + "onbeforexrselect": true, + "onblur": true, + "oncancel": true, + "oncanplay": true, + "oncanplaythrough": true, + "onchange": true, + "onclick": true, + "onclose": true, + "oncontentvisibilityautostatechange": true, + "oncontextlost": true, + "oncontextmenu": true, + "oncontextrestored": true, + "oncopy": true, + "oncuechange": true, + "oncut": true, + "ondblclick": true, + "ondevicemotion": true, + "ondeviceorientation": true, + "ondeviceorientationabsolute": true, + "ondrag": true, + "ondragend": true, + "ondragenter": true, + "ondragleave": true, + "ondragover": true, + "ondragstart": true, + "ondrop": true, + "ondurationchange": true, + "onemptied": true, + "onended": true, + "onerror": true, + "onfocus": true, + "onformdata": true, + "ongamepadconnected": true, + "ongamepaddisconnected": true, + "ongotpointercapture": true, + "onhashchange": true, + "oninput": true, + "oninvalid": true, + "onkeydown": true, + "onkeypress": true, + "onkeyup": true, + "onlanguagechange": true, + "onload": true, + "onloadeddata": true, + "onloadedmetadata": true, + "onloadstart": true, + "onlostpointercapture": true, + "onmessage": true, + "onmessageerror": true, + "onmousedown": true, + "onmouseenter": true, + "onmouseleave": true, + "onmousemove": true, + "onmouseout": true, + "onmouseover": true, + "onmouseup": true, + "onmousewheel": true, + "onoffline": true, + "ononline": true, + "onpagehide": true, + "onpagereveal": true, + "onpageshow": true, + "onpageswap": true, + "onpaste": true, + "onpause": true, + "onplay": true, + "onplaying": true, + "onpointercancel": true, + "onpointerdown": true, + "onpointerenter": true, + "onpointerleave": true, + "onpointermove": true, + "onpointerout": true, + "onpointerover": true, + "onpointerrawupdate": true, + "onpointerup": true, + "onpopstate": true, + "onprogress": true, + "onratechange": true, + "onrejectionhandled": true, + "onreset": true, + "onresize": true, + "onscroll": true, + "onscrollend": true, + "onscrollsnapchange": true, + "onscrollsnapchanging": true, + "onsearch": true, + "onsecuritypolicyviolation": true, + "onseeked": true, + "onseeking": true, + "onselect": true, + "onselectionchange": true, + "onselectstart": true, + "onslotchange": true, + "onstalled": true, + "onstorage": true, + "onsubmit": true, + "onsuspend": true, + "ontimeupdate": true, + "ontoggle": true, + "ontransitioncancel": true, + "ontransitionend": true, + "ontransitionrun": true, + "ontransitionstart": true, + "onunhandledrejection": true, + "onunload": true, + "onvolumechange": true, + "onwaiting": true, + "onwheel": true, + "open": false, + "opener": false, + "origin": false, + "originAgentCluster": false, + "outerHeight": false, + "outerWidth": false, + "pageXOffset": false, + "pageYOffset": false, + "parent": false, + "parseFloat": false, + "parseInt": false, + "performance": false, + "personalbar": false, + "postMessage": false, + "print": false, + "prompt": false, + "queryLocalFonts": false, + "queueMicrotask": false, + "registerProcessor": false, + "removeEventListener": false, + "reportError": false, + "requestAnimationFrame": false, + "requestIdleCallback": false, + "resizeBy": false, + "resizeTo": false, + "sampleRate": false, + "scheduler": false, + "screen": false, + "screenLeft": false, + "screenTop": false, + "screenX": false, + "screenY": false, + "scroll": false, + "scrollBy": false, + "scrollTo": false, + "scrollX": false, + "scrollY": false, + "scrollbars": false, + "self": false, + "sessionStorage": false, + "setInterval": false, + "setTimeout": false, + "sharedStorage": false, + "showDirectoryPicker": false, + "showOpenFilePicker": false, + "showSaveFilePicker": false, + "speechSynthesis": false, + "status": false, + "statusbar": false, + "stop": false, + "structuredClone": false, + "styleMedia": false, + "toolbar": false, + "top": false, + "trustedTypes": false, + "undefined": false, + "unescape": false, + "visualViewport": false, + "window": false, + }, + "parser": "espree@10.4.0", + "parserOptions": { + "ecmaFeatures": { + "jsx": true, + }, + "sourceType": "module", }, - "ecmaVersion": "latest", "sourceType": "module", }, + "linterOptions": { + "reportUnusedDisableDirectives": 2, + }, "plugins": [ - "@stylistic", - "switch-case", - "gettext", + "@", "import", + "gettext", + "switch-case", + "@stylistic", "jsdoc", - "prettier", + "prettier:eslint-plugin-prettier@5.2.3", "react", - "jsx-a11y", - "react-hooks", + "react-hooks:eslint-plugin-react-hooks", + "jsx-a11y:eslint-plugin-jsx-a11y@6.10.2", ], - "reportUnusedDisableDirectives": true, + "processor": undefined, "rules": { "@babel/object-curly-spacing": [ - "off", + 0, ], "@babel/semi": [ - "off", + 0, ], "@stylistic/padding-line-between-statements": [ - "warn", + 1, { "blankLine": "always", "next": "return", @@ -104,7 +1294,7 @@ exports[`keeps rules stable 1`] = ` }, ], "@stylistic/spaced-comment": [ - "warn", + 1, "always", { "block": { @@ -131,108 +1321,114 @@ exports[`keeps rules stable 1`] = ` }, ], "@typescript-eslint/block-spacing": [ - "off", + 0, ], "@typescript-eslint/brace-style": [ - "off", + 0, ], "@typescript-eslint/comma-dangle": [ - "off", + 0, ], "@typescript-eslint/comma-spacing": [ - "off", + 0, ], "@typescript-eslint/func-call-spacing": [ - "off", + 0, ], "@typescript-eslint/indent": [ - "off", + 0, ], "@typescript-eslint/key-spacing": [ - "off", + 0, ], "@typescript-eslint/keyword-spacing": [ - "off", + 0, ], "@typescript-eslint/lines-around-comment": [ 0, ], "@typescript-eslint/member-delimiter-style": [ - "off", + 0, ], "@typescript-eslint/no-extra-parens": [ - "off", + 0, ], "@typescript-eslint/no-extra-semi": [ - "off", + 0, ], "@typescript-eslint/object-curly-spacing": [ - "off", + 0, ], "@typescript-eslint/quotes": [ 0, ], "@typescript-eslint/semi": [ - "off", + 0, ], "@typescript-eslint/space-before-blocks": [ - "off", + 0, ], "@typescript-eslint/space-before-function-paren": [ - "off", + 0, ], "@typescript-eslint/space-infix-ops": [ - "off", + 0, ], "@typescript-eslint/type-annotation-spacing": [ - "off", + 0, ], "array-bracket-newline": [ - "off", + 0, ], "array-bracket-spacing": [ - "off", + 0, ], "array-callback-return": [ - "error", + 2, + { + "allowImplicit": false, + "allowVoid": false, + "checkForEach": false, + }, ], "array-element-newline": [ - "off", + 0, ], "arrow-body-style": [ - "off", + 2, "as-needed", { "requireReturnForObjectLiteral": false, }, ], "arrow-parens": [ - "off", + 0, ], "arrow-spacing": [ - "off", + 0, ], "babel/object-curly-spacing": [ - "off", + 0, ], "babel/quotes": [ 0, ], "babel/semi": [ - "off", + 0, ], "block-scoped-var": [ - "error", + 2, ], "block-spacing": [ - "off", + 0, ], "brace-style": [ - "off", + 0, ], "camelcase": [ - "error", + 2, { + "allow": [], "ignoreDestructuring": false, "ignoreGlobals": false, "ignoreImports": false, @@ -240,133 +1436,137 @@ exports[`keeps rules stable 1`] = ` }, ], "comma-dangle": [ - "off", + 0, ], "comma-spacing": [ - "off", + 0, ], "comma-style": [ - "off", + 0, ], "complexity": [ - "error", + 2, + 20, ], "computed-property-spacing": [ - "off", + 0, ], "consistent-return": [ - "error", + 2, + { + "treatUndefinedAsUnspecified": false, + }, ], "constructor-super": [ - "error", + 2, ], "curly": [ - "error", + 2, "all", ], "default-case": [ - "error", + 2, + {}, ], "default-param-last": [ - "error", + 2, ], "dot-location": [ - "off", + 0, ], "dot-notation": [ - "error", + 2, { "allowKeywords": true, "allowPattern": "", }, ], "eol-last": [ - "off", + 0, ], "eqeqeq": [ - "error", + 2, "smart", ], "flowtype/boolean-style": [ - "off", + 0, ], "flowtype/delimiter-dangle": [ - "off", + 0, ], "flowtype/generic-spacing": [ - "off", + 0, ], "flowtype/object-type-curly-spacing": [ - "off", + 0, ], "flowtype/object-type-delimiter": [ - "off", + 0, ], "flowtype/quotes": [ - "off", + 0, ], "flowtype/semi": [ - "off", + 0, ], "flowtype/space-after-type-colon": [ - "off", + 0, ], "flowtype/space-before-generic-bracket": [ - "off", + 0, ], "flowtype/space-before-type-colon": [ - "off", + 0, ], "flowtype/union-intersection-spacing": [ - "off", + 0, ], "for-direction": [ - "error", + 2, ], "func-call-spacing": [ - "off", + 0, ], "func-names": [ - "error", + 2, + "always", + {}, ], "function-call-argument-newline": [ - "off", + 0, ], "function-paren-newline": [ - "off", + 0, ], "generator-star": [ - "off", + 0, ], "generator-star-spacing": [ - "off", + 0, ], "getter-return": [ - "error", + 2, { "allowImplicit": true, }, ], "gettext/no-variable-string": [ - "error", + 2, ], "guard-for-in": [ - "error", + 2, ], "implicit-arrow-linebreak": [ - "off", + 0, ], "import/default": [ - "off", + 0, ], "import/dynamic-import-chunkname": [ - "error", - ], - "import/export": [ 2, ], "import/extensions": [ - "error", + 2, { "js": "never", "json": "always", @@ -375,47 +1575,35 @@ exports[`keeps rules stable 1`] = ` "tsx": "never", }, ], - "import/named": [ - 2, - ], - "import/namespace": [ - 2, - ], "import/newline-after-import": [ - "warn", + 1, ], "import/no-absolute-path": [ - "error", + 2, ], "import/no-amd": [ - "error", + 2, ], "import/no-duplicates": [ - "warn", + 1, { "prefer-inline": true, }, ], "import/no-dynamic-require": [ - "error", + 2, ], "import/no-extraneous-dependencies": [ - "error", + 2, ], "import/no-mutable-exports": [ - "error", - ], - "import/no-named-as-default": [ - 1, - ], - "import/no-named-as-default-member": [ - 1, + 2, ], "import/no-named-default": [ - "error", + 2, ], "import/no-unresolved": [ - "error", + 2, { "caseSensitive": true, "caseSensitiveStrict": false, @@ -423,10 +1611,10 @@ exports[`keeps rules stable 1`] = ` }, ], "import/no-webpack-loader-syntax": [ - "error", + 2, ], "import/order": [ - "warn", + 1, { "alphabetize": { "caseInsensitive": true, @@ -450,73 +1638,73 @@ exports[`keeps rules stable 1`] = ` }, ], "indent": [ - "off", + 0, ], "indent-legacy": [ - "off", + 0, ], "jsdoc/check-alignment": [ - "error", + 2, ], "jsdoc/check-param-names": [ - "error", + 2, ], "jsdoc/check-syntax": [ - "error", + 2, ], "jsdoc/check-tag-names": [ - "error", + 2, ], "jsdoc/implements-on-classes": [ - "error", + 2, ], "jsdoc/require-param-name": [ - "error", + 2, ], "jsdoc/require-param-type": [ - "error", + 2, ], "jsdoc/require-returns-check": [ - "error", + 2, ], "jsdoc/require-returns-type": [ - "error", + 2, ], "jsx-a11y/alt-text": [ - "error", + 2, ], "jsx-a11y/anchor-ambiguous-text": [ - "off", + 0, ], "jsx-a11y/anchor-has-content": [ - "error", + 2, ], "jsx-a11y/anchor-is-valid": [ - "error", + 2, ], "jsx-a11y/aria-activedescendant-has-tabindex": [ - "error", + 2, ], "jsx-a11y/aria-props": [ - "error", + 2, ], "jsx-a11y/aria-proptypes": [ - "error", + 2, ], "jsx-a11y/aria-role": [ - "error", + 2, ], "jsx-a11y/aria-unsupported-elements": [ - "error", + 2, ], "jsx-a11y/autocomplete-valid": [ - "error", + 2, ], "jsx-a11y/click-events-have-key-events": [ - "error", + 2, ], "jsx-a11y/control-has-associated-label": [ - "off", + 0, { "ignoreElements": [ "audio", @@ -546,19 +1734,19 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/heading-has-content": [ - "error", + 2, ], "jsx-a11y/html-has-lang": [ - "error", + 2, ], "jsx-a11y/iframe-has-title": [ - "error", + 2, ], "jsx-a11y/img-redundant-alt": [ - "error", + 2, ], "jsx-a11y/interactive-supports-focus": [ - "error", + 2, { "tabbable": [ "button", @@ -572,28 +1760,28 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/label-has-associated-control": [ - "error", + 2, ], "jsx-a11y/label-has-for": [ - "off", + 0, ], "jsx-a11y/media-has-caption": [ - "error", + 2, ], "jsx-a11y/mouse-events-have-key-events": [ - "error", + 2, ], "jsx-a11y/no-access-key": [ - "error", + 2, ], "jsx-a11y/no-autofocus": [ - "error", + 2, ], "jsx-a11y/no-distracting-elements": [ - "error", + 2, ], "jsx-a11y/no-interactive-element-to-noninteractive-role": [ - "error", + 2, { "canvas": [ "img", @@ -605,7 +1793,7 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/no-noninteractive-element-interactions": [ - "error", + 2, { "alert": [ "onKeyUp", @@ -642,7 +1830,7 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/no-noninteractive-element-to-interactive-role": [ - "error", + 2, { "fieldset": [ "radiogroup", @@ -684,7 +1872,7 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/no-noninteractive-tabindex": [ - "error", + 2, { "allowExpressionValues": true, "roles": [ @@ -694,13 +1882,13 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/no-onchange": [ - "off", + 0, ], "jsx-a11y/no-redundant-roles": [ - "error", + 2, ], "jsx-a11y/no-static-element-interactions": [ - "error", + 2, { "allowExpressionValues": true, "handlers": [ @@ -714,47 +1902,47 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/role-has-required-aria-props": [ - "error", + 2, ], "jsx-a11y/role-supports-aria-props": [ - "error", + 2, ], "jsx-a11y/scope": [ - "error", + 2, ], "jsx-a11y/tabindex-no-positive": [ - "error", + 2, ], "jsx-quotes": [ - "off", + 0, ], "key-spacing": [ - "off", + 0, ], "keyword-spacing": [ - "off", + 0, ], "linebreak-style": [ - "off", + 0, ], "lines-around-comment": [ 0, ], "max-classes-per-file": [ - "error", + 2, 1, ], "max-len": [ 0, ], "max-statements-per-line": [ - "off", + 0, ], "multiline-ternary": [ - "off", + 0, ], "new-cap": [ - "error", + 2, { "capIsNew": false, "capIsNewExceptions": [ @@ -768,104 +1956,122 @@ exports[`keeps rules stable 1`] = ` }, ], "new-parens": [ - "off", + 0, ], "newline-per-chained-call": [ - "off", + 0, ], "no-alert": [ - "warn", + 1, ], "no-array-constructor": [ - "error", + 2, ], "no-arrow-condition": [ - "off", + 0, ], "no-async-promise-executor": [ - "error", + 2, ], "no-await-in-loop": [ - "error", + 2, ], "no-bitwise": [ - "error", + 2, + { + "allow": [], + "int32Hint": false, + }, ], "no-caller": [ - "error", + 2, ], "no-case-declarations": [ - "error", + 2, ], "no-class-assign": [ - "error", + 2, ], "no-comma-dangle": [ - "off", + 0, ], "no-compare-neg-zero": [ - "error", + 2, ], "no-cond-assign": [ - "error", + 2, "always", ], "no-confusing-arrow": [ 0, ], "no-console": [ - "warn", + 1, + {}, ], "no-const-assign": [ - "error", + 2, + ], + "no-constant-binary-expression": [ + 2, ], "no-constant-condition": [ - "warn", + 1, + { + "checkLoops": "allExceptWhileTrue", + }, ], "no-continue": [ - "error", + 2, ], "no-control-regex": [ - "error", + 2, ], "no-debugger": [ - "error", + 2, ], "no-delete-var": [ - "error", + 2, ], "no-dupe-args": [ - "error", + 2, ], "no-dupe-class-members": [ - "error", + 2, ], "no-dupe-else-if": [ - "error", + 2, ], "no-dupe-keys": [ - "error", + 2, ], "no-duplicate-case": [ - "error", + 2, ], "no-duplicate-imports": [ - "error", + 2, + { + "allowSeparateTypeImports": false, + "includeExports": false, + }, ], "no-else-return": [ - "error", + 2, { "allowElseIf": true, }, ], "no-empty": [ - "error", + 2, + { + "allowEmptyCatch": false, + }, ], "no-empty-character-class": [ - "error", + 2, ], "no-empty-function": [ - "error", + 2, { "allow": [ "arrowFunctions", @@ -875,161 +2081,198 @@ exports[`keeps rules stable 1`] = ` }, ], "no-empty-pattern": [ - "error", + 2, + { + "allowObjectPatternsAsParameters": false, + }, + ], + "no-empty-static-block": [ + 2, ], "no-eval": [ - "error", + 2, + { + "allowIndirect": false, + }, ], "no-ex-assign": [ - "error", + 2, ], "no-extend-native": [ - "error", + 2, + { + "exceptions": [], + }, ], "no-extra-bind": [ - "error", + 2, ], "no-extra-boolean-cast": [ - "error", + 2, + {}, ], "no-extra-label": [ - "error", + 2, ], "no-extra-parens": [ - "off", + 0, ], "no-extra-semi": [ - "off", + 0, ], "no-fallthrough": [ - "error", + 2, + { + "allowEmptyCase": false, + "reportUnusedFallthroughComment": false, + }, ], "no-floating-decimal": [ - "off", + 0, ], "no-func-assign": [ - "error", + 2, ], "no-global-assign": [ - "error", + 2, + { + "exceptions": [], + }, ], "no-implied-eval": [ - "error", + 2, ], "no-import-assign": [ - "error", - ], - "no-inner-declarations": [ - "error", + 2, ], "no-invalid-regexp": [ - "error", + 2, + {}, ], "no-irregular-whitespace": [ - "error", + 2, + { + "skipComments": false, + "skipJSXText": false, + "skipRegExps": false, + "skipStrings": true, + "skipTemplates": false, + }, ], "no-iterator": [ - "error", + 2, ], "no-label-var": [ - "error", + 2, ], "no-labels": [ - "error", + 2, { "allowLoop": false, "allowSwitch": false, }, ], "no-lone-blocks": [ - "error", + 2, ], "no-lonely-if": [ - "error", + 2, ], "no-loop-func": [ - "error", + 2, ], "no-loss-of-precision": [ - "error", + 2, ], "no-misleading-character-class": [ - "error", + 2, + { + "allowEscape": false, + }, ], "no-mixed-operators": [ 0, ], "no-mixed-spaces-and-tabs": [ - "off", + 0, ], "no-multi-assign": [ - "error", + 2, + { + "ignoreNonDeclaration": false, + }, ], "no-multi-spaces": [ - "off", + 0, ], "no-multi-str": [ - "error", + 2, ], "no-multiple-empty-lines": [ - "off", + 0, ], "no-nested-ternary": [ - "error", + 2, ], "no-new": [ - "error", + 2, ], "no-new-func": [ - "error", + 2, ], - "no-new-symbol": [ - "error", + "no-new-native-nonconstructor": [ + 2, ], "no-new-wrappers": [ - "error", + 2, ], "no-nonoctal-decimal-escape": [ - "error", + 2, ], "no-obj-calls": [ - "error", + 2, ], "no-object-constructor": [ - "error", + 2, ], "no-octal": [ - "error", + 2, ], "no-octal-escape": [ - "error", + 2, ], "no-param-reassign": [ - "error", + 2, { "props": false, }, ], "no-plusplus": [ - "error", + 2, + { + "allowForLoopAfterthoughts": false, + }, ], "no-proto": [ - "error", + 2, ], "no-prototype-builtins": [ - "off", + 0, ], "no-redeclare": [ - "error", + 2, + { + "builtinGlobals": true, + }, ], "no-regex-spaces": [ - "error", + 2, ], "no-reserved-keys": [ - "off", + 0, ], "no-restricted-globals": [ - "error", + 2, "isFinite", "isNaN", "addEventListener", @@ -1092,10 +2335,10 @@ exports[`keeps rules stable 1`] = ` "top", ], "no-restricted-imports": [ - "error", + 2, ], "no-restricted-properties": [ - "error", + 2, { "message": "arguments.callee is deprecated", "object": "arguments", @@ -1146,7 +2389,7 @@ exports[`keeps rules stable 1`] = ` }, ], "no-restricted-syntax": [ - "error", + 2, { "message": "for..in loops iterate over the entire prototype chain, which is virtually never what you want. Use Object.{keys,values,entries}, and iterate over the resulting array.", "selector": "ForInStatement", @@ -1173,65 +2416,81 @@ exports[`keeps rules stable 1`] = ` }, ], "no-return-assign": [ - "error", + 2, "except-parens", ], "no-script-url": [ - "error", + 2, ], "no-self-assign": [ - "error", + 2, + { + "props": true, + }, ], "no-self-compare": [ - "error", + 2, ], "no-sequences": [ - "error", + 2, + { + "allowInParentheses": true, + }, ], "no-setter-return": [ - "error", + 2, ], "no-shadow": [ - "error", + 2, { + "allow": [], "builtinGlobals": false, "hoist": "all", + "ignoreFunctionTypeParameterNameValueShadow": true, "ignoreOnInitialization": false, + "ignoreTypeValueShadow": true, }, ], "no-shadow-restricted-names": [ - "error", + 2, + { + "reportGlobalThis": false, + }, ], "no-space-before-semi": [ - "off", + 0, ], "no-spaced-func": [ - "off", + 0, ], "no-sparse-arrays": [ - "error", + 2, ], "no-tabs": [ 0, ], "no-template-curly-in-string": [ - "error", + 2, ], "no-this-before-super": [ - "error", + 2, ], "no-trailing-spaces": [ - "off", + 0, ], "no-undef": [ - "error", + 2, + { + "typeof": false, + }, ], "no-undef-init": [ - "error", + 2, ], "no-underscore-dangle": [ - "error", + 2, { + "allow": [], "allowAfterSuper": true, "allowAfterThis": true, "allowAfterThisConstructor": false, @@ -1246,31 +2505,47 @@ exports[`keeps rules stable 1`] = ` 0, ], "no-unneeded-ternary": [ - "error", + 2, { "defaultAssignment": false, }, ], "no-unreachable": [ - "error", + 2, ], "no-unsafe-finally": [ - "error", + 2, ], "no-unsafe-negation": [ - "error", + 2, + { + "enforceForOrderingRelations": false, + }, ], "no-unsafe-optional-chaining": [ - "error", + 2, + { + "disallowArithmeticOperators": false, + }, ], "no-unused-expressions": [ - "error", + 2, + { + "allowShortCircuit": false, + "allowTaggedTemplates": false, + "allowTernary": false, + "enforceForJSX": false, + "ignoreDirectives": false, + }, ], "no-unused-labels": [ - "error", + 2, + ], + "no-unused-private-class-members": [ + 2, ], "no-unused-vars": [ - "error", + 2, { "args": "after-used", "ignoreRestSiblings": true, @@ -1278,29 +2553,35 @@ exports[`keeps rules stable 1`] = ` }, ], "no-use-before-define": [ - "error", + 2, "nofunc", ], "no-useless-backreference": [ - "error", + 2, ], "no-useless-catch": [ - "error", + 2, ], "no-useless-computed-key": [ - "error", + 2, + { + "enforceForClassMembers": true, + }, ], "no-useless-concat": [ - "error", + 2, ], "no-useless-constructor": [ - "error", + 2, ], "no-useless-escape": [ - "error", + 2, + { + "allowRegexCharacters": [], + }, ], "no-useless-rename": [ - "error", + 2, { "ignoreDestructuring": false, "ignoreExport": false, @@ -1308,40 +2589,40 @@ exports[`keeps rules stable 1`] = ` }, ], "no-useless-return": [ - "error", + 2, ], "no-var": [ - "error", + 2, ], "no-void": [ - "error", + 2, { "allowAsStatement": true, }, ], "no-whitespace-before-property": [ - "off", + 0, ], "no-with": [ - "error", + 2, ], "no-wrap-func": [ - "off", + 0, ], "nonblock-statement-body-position": [ - "off", + 0, ], "object-curly-newline": [ - "off", + 0, ], "object-curly-spacing": [ - "off", + 0, ], "object-property-newline": [ - "off", + 0, ], "object-shorthand": [ - "error", + 2, "always", { "avoidQuotes": true, @@ -1349,47 +2630,47 @@ exports[`keeps rules stable 1`] = ` }, ], "one-var": [ - "error", + 2, "never", ], "one-var-declaration-per-line": [ - "off", + 0, ], "operator-assignment": [ - "error", + 2, "always", ], "operator-linebreak": [ - "off", + 0, ], "padded-blocks": [ - "off", + 0, ], "prefer-arrow-callback": [ - "off", + 2, { "allowNamedFunctions": false, "allowUnboundThis": true, }, ], "prefer-const": [ - "error", + 2, { "destructuring": "any", "ignoreReadBeforeAssign": true, }, ], "prefer-numeric-literals": [ - "error", + 2, ], "prefer-rest-params": [ - "error", + 2, ], "prefer-template": [ - "error", + 2, ], "prettier/prettier": [ - "warn", + 1, { "printWidth": 100, "singleQuote": true, @@ -1400,37 +2681,38 @@ exports[`keeps rules stable 1`] = ` }, ], "quote-props": [ - "off", + 0, ], "quotes": [ 0, ], "radix": [ - "error", + 2, + "always", ], "react-hooks/exhaustive-deps": [ - "error", + 2, ], "react-hooks/rules-of-hooks": [ - "error", + 2, ], "react/destructuring-assignment": [ - "error", + 2, ], "react/display-name": [ - "off", + 0, ], "react/jsx-child-element-spacing": [ - "off", + 0, ], "react/jsx-closing-bracket-location": [ - "off", + 0, ], "react/jsx-closing-tag-location": [ - "off", + 0, ], "react/jsx-curly-brace-presence": [ - "error", + 2, { "children": "never", "propElementValues": "always", @@ -1438,38 +2720,38 @@ exports[`keeps rules stable 1`] = ` }, ], "react/jsx-curly-newline": [ - "off", + 0, ], "react/jsx-curly-spacing": [ - "off", + 0, ], "react/jsx-equals-spacing": [ - "off", + 0, ], "react/jsx-first-prop-new-line": [ - "off", + 0, ], "react/jsx-fragments": [ - "error", + 2, "syntax", ], "react/jsx-indent": [ - "off", + 0, ], "react/jsx-indent-props": [ - "off", + 0, ], "react/jsx-key": [ 2, ], "react/jsx-max-props-per-line": [ - "off", + 0, ], "react/jsx-newline": [ - "off", + 0, ], "react/jsx-no-bind": [ - "error", + 2, { "allowArrowFunctions": true, "allowBind": false, @@ -1491,25 +2773,25 @@ exports[`keeps rules stable 1`] = ` 2, ], "react/jsx-no-useless-fragment": [ - "error", + 2, ], "react/jsx-one-expression-per-line": [ - "off", + 0, ], "react/jsx-pascal-case": [ - "error", + 2, ], "react/jsx-props-no-multi-spaces": [ - "off", + 0, ], "react/jsx-sort-props": [ - "warn", + 1, ], "react/jsx-space-before-closing": [ - "off", + 0, ], "react/jsx-tag-spacing": [ - "off", + 0, ], "react/jsx-uses-react": [ 2, @@ -1518,7 +2800,7 @@ exports[`keeps rules stable 1`] = ` 2, ], "react/jsx-wrap-multilines": [ - "off", + 0, ], "react/no-children-prop": [ 2, @@ -1539,7 +2821,7 @@ exports[`keeps rules stable 1`] = ` 2, ], "react/no-redundant-should-component-update": [ - "error", + 2, ], "react/no-render-return-value": [ 2, @@ -1548,10 +2830,10 @@ exports[`keeps rules stable 1`] = ` 2, ], "react/no-this-in-sfc": [ - "error", + 2, ], "react/no-unescaped-entities": [ - "error", + 2, { "forbid": [ { @@ -1573,19 +2855,19 @@ exports[`keeps rules stable 1`] = ` 2, ], "react/no-unsafe": [ - "error", + 2, ], "react/no-unused-state": [ - "error", + 2, ], "react/prefer-es6-class": [ - "error", + 2, ], "react/prefer-read-only-props": [ - "error", + 2, ], "react/prop-types": [ - "off", + 0, ], "react/react-in-jsx-scope": [ 2, @@ -1594,264 +2876,277 @@ exports[`keeps rules stable 1`] = ` 2, ], "react/self-closing-comp": [ - "error", + 2, ], "react/style-prop-object": [ - "error", + 2, ], "require-yield": [ - "error", + 2, ], "rest-spread-spacing": [ - "off", + 0, ], "semi": [ - "off", + 0, ], "semi-spacing": [ - "off", + 0, ], "semi-style": [ - "off", + 0, ], "sort-imports": [ - "error", + 2, { "allowSeparatedGroups": false, "ignoreCase": true, "ignoreDeclarationSort": true, "ignoreMemberSort": false, + "memberSyntaxSortOrder": [ + "none", + "all", + "multiple", + "single", + ], }, ], "space-after-function-name": [ - "off", + 0, ], "space-after-keywords": [ - "off", + 0, ], "space-before-blocks": [ - "off", + 0, ], "space-before-function-paren": [ - "off", + 0, ], "space-before-function-parentheses": [ - "off", + 0, ], "space-before-keywords": [ - "off", + 0, ], "space-in-brackets": [ - "off", + 0, ], "space-in-parens": [ - "off", + 0, ], "space-infix-ops": [ - "off", + 0, ], "space-return-throw-case": [ - "off", + 0, ], "space-unary-ops": [ - "off", + 0, ], "space-unary-word-ops": [ - "off", + 0, ], "standard/array-bracket-even-spacing": [ - "off", + 0, ], "standard/computed-property-even-spacing": [ - "off", + 0, ], "standard/object-curly-even-spacing": [ - "off", + 0, ], "strict": [ - "error", + 2, + "safe", ], "switch-case/newline-between-switch-case": [ - "warn", + 1, "always", { "fallthrough": "never", }, ], "switch-colon-spacing": [ - "off", + 0, ], "symbol-description": [ - "error", + 2, ], "template-curly-spacing": [ - "off", + 0, ], "template-tag-spacing": [ - "off", + 0, ], "unicorn/empty-brace-spaces": [ - "off", + 0, ], "unicorn/no-nested-ternary": [ - "off", + 0, ], "unicorn/number-literal-case": [ - "off", + 0, ], "unicorn/template-indent": [ 0, ], "use-isnan": [ - "error", + 2, + { + "enforceForIndexOf": false, + "enforceForSwitchCase": true, + }, ], "valid-jsdoc": [ - "off", + 0, { "requireParamDescription": false, - "requireParamType": true, - "requireReturn": true, "requireReturnDescription": false, - "requireReturnType": true, }, ], "valid-typeof": [ - "error", + 2, { "requireStringLiterals": true, }, ], "vars-on-top": [ - "error", + 2, ], "vue/array-bracket-newline": [ - "off", + 0, ], "vue/array-bracket-spacing": [ - "off", + 0, ], "vue/array-element-newline": [ - "off", + 0, ], "vue/arrow-spacing": [ - "off", + 0, ], "vue/block-spacing": [ - "off", + 0, ], "vue/block-tag-newline": [ - "off", + 0, ], "vue/brace-style": [ - "off", + 0, ], "vue/comma-dangle": [ - "off", + 0, ], "vue/comma-spacing": [ - "off", + 0, ], "vue/comma-style": [ - "off", + 0, ], "vue/dot-location": [ - "off", + 0, ], "vue/func-call-spacing": [ - "off", + 0, ], "vue/html-closing-bracket-newline": [ - "off", + 0, ], "vue/html-closing-bracket-spacing": [ - "off", + 0, ], "vue/html-end-tags": [ - "off", + 0, ], "vue/html-indent": [ - "off", + 0, ], "vue/html-quotes": [ - "off", + 0, ], "vue/html-self-closing": [ 0, ], "vue/key-spacing": [ - "off", + 0, ], "vue/keyword-spacing": [ - "off", + 0, ], "vue/max-attributes-per-line": [ - "off", + 0, ], "vue/max-len": [ 0, ], "vue/multiline-html-element-content-newline": [ - "off", + 0, ], "vue/multiline-ternary": [ - "off", + 0, ], "vue/mustache-interpolation-spacing": [ - "off", + 0, ], "vue/no-extra-parens": [ - "off", + 0, ], "vue/no-multi-spaces": [ - "off", + 0, ], "vue/no-spaces-around-equal-signs-in-attribute": [ - "off", + 0, ], "vue/object-curly-newline": [ - "off", + 0, ], "vue/object-curly-spacing": [ - "off", + 0, ], "vue/object-property-newline": [ - "off", + 0, ], "vue/operator-linebreak": [ - "off", + 0, ], "vue/quote-props": [ - "off", + 0, ], "vue/script-indent": [ - "off", + 0, ], "vue/singleline-html-element-content-newline": [ - "off", + 0, ], "vue/space-in-parens": [ - "off", + 0, ], "vue/space-infix-ops": [ - "off", + 0, ], "vue/space-unary-ops": [ - "off", + 0, ], "vue/template-curly-spacing": [ - "off", + 0, ], "wrap-iife": [ - "off", + 0, ], "wrap-regex": [ - "off", + 0, ], "yield-star-spacing": [ - "off", + 0, ], "yoda": [ - "error", + 2, + "never", + { + "exceptRange": false, + "onlyEquality": false, + }, ], }, "settings": { diff --git a/packages/eslint-config/test/__snapshots__/jsx.spec.js.snap b/packages/eslint-config/test/__snapshots__/jsx.spec.js.snap index db20c61..71942ed 100644 --- a/packages/eslint-config/test/__snapshots__/jsx.spec.js.snap +++ b/packages/eslint-config/test/__snapshots__/jsx.spec.js.snap @@ -2,42 +2,1233 @@ exports[`keeps rules stable 1`] = ` { - "env": { - "browser": true, - "es6": true, - }, - "globals": {}, - "ignorePatterns": [], - "noInlineConfig": undefined, - "parser": null, - "parserOptions": { - "ecmaFeatures": { - "jsx": true, + "language": "@/js", + "languageOptions": { + "ecmaVersion": 2026, + "globals": { + "AI": false, + "AITextSession": false, + "AbortController": false, + "AbortSignal": false, + "AbsoluteOrientationSensor": false, + "AbstractRange": false, + "Accelerometer": false, + "AggregateError": false, + "AnalyserNode": false, + "Animation": false, + "AnimationEffect": false, + "AnimationEvent": false, + "AnimationPlaybackEvent": false, + "AnimationTimeline": false, + "Array": false, + "ArrayBuffer": false, + "Atomics": false, + "Attr": false, + "Audio": false, + "AudioBuffer": false, + "AudioBufferSourceNode": false, + "AudioContext": false, + "AudioData": false, + "AudioDecoder": false, + "AudioDestinationNode": false, + "AudioEncoder": false, + "AudioListener": false, + "AudioNode": false, + "AudioParam": false, + "AudioParamMap": false, + "AudioProcessingEvent": false, + "AudioScheduledSourceNode": false, + "AudioSinkInfo": false, + "AudioWorklet": false, + "AudioWorkletGlobalScope": false, + "AudioWorkletNode": false, + "AudioWorkletProcessor": false, + "AuthenticatorAssertionResponse": false, + "AuthenticatorAttestationResponse": false, + "AuthenticatorResponse": false, + "BackgroundFetchManager": false, + "BackgroundFetchRecord": false, + "BackgroundFetchRegistration": false, + "BarProp": false, + "BarcodeDetector": false, + "BaseAudioContext": false, + "BatteryManager": false, + "BeforeUnloadEvent": false, + "BigInt": false, + "BigInt64Array": false, + "BigUint64Array": false, + "BiquadFilterNode": false, + "Blob": false, + "BlobEvent": false, + "Bluetooth": false, + "BluetoothCharacteristicProperties": false, + "BluetoothDevice": false, + "BluetoothRemoteGATTCharacteristic": false, + "BluetoothRemoteGATTDescriptor": false, + "BluetoothRemoteGATTServer": false, + "BluetoothRemoteGATTService": false, + "BluetoothUUID": false, + "Boolean": false, + "BroadcastChannel": false, + "BrowserCaptureMediaStreamTrack": false, + "ByteLengthQueuingStrategy": false, + "CDATASection": false, + "CSS": false, + "CSSAnimation": false, + "CSSConditionRule": false, + "CSSContainerRule": false, + "CSSCounterStyleRule": false, + "CSSFontFaceRule": false, + "CSSFontFeatureValuesRule": false, + "CSSFontPaletteValuesRule": false, + "CSSGroupingRule": false, + "CSSImageValue": false, + "CSSImportRule": false, + "CSSKeyframeRule": false, + "CSSKeyframesRule": false, + "CSSKeywordValue": false, + "CSSLayerBlockRule": false, + "CSSLayerStatementRule": false, + "CSSMarginRule": false, + "CSSMathClamp": false, + "CSSMathInvert": false, + "CSSMathMax": false, + "CSSMathMin": false, + "CSSMathNegate": false, + "CSSMathProduct": false, + "CSSMathSum": false, + "CSSMathValue": false, + "CSSMatrixComponent": false, + "CSSMediaRule": false, + "CSSNamespaceRule": false, + "CSSNestedDeclarations": false, + "CSSNumericArray": false, + "CSSNumericValue": false, + "CSSPageDescriptors": false, + "CSSPageRule": false, + "CSSPerspective": false, + "CSSPositionTryDescriptors": false, + "CSSPositionTryRule": false, + "CSSPositionValue": false, + "CSSPropertyRule": false, + "CSSRotate": false, + "CSSRule": false, + "CSSRuleList": false, + "CSSScale": false, + "CSSScopeRule": false, + "CSSSkew": false, + "CSSSkewX": false, + "CSSSkewY": false, + "CSSStartingStyleRule": false, + "CSSStyleDeclaration": false, + "CSSStyleRule": false, + "CSSStyleSheet": false, + "CSSStyleValue": false, + "CSSSupportsRule": false, + "CSSTransformComponent": false, + "CSSTransformValue": false, + "CSSTransition": false, + "CSSTranslate": false, + "CSSUnitValue": false, + "CSSUnparsedValue": false, + "CSSVariableReferenceValue": false, + "CSSViewTransitionRule": false, + "Cache": false, + "CacheStorage": false, + "CanvasCaptureMediaStream": false, + "CanvasCaptureMediaStreamTrack": false, + "CanvasGradient": false, + "CanvasPattern": false, + "CanvasRenderingContext2D": false, + "CaptureController": false, + "CaretPosition": false, + "ChannelMergerNode": false, + "ChannelSplitterNode": false, + "ChapterInformation": false, + "CharacterBoundsUpdateEvent": false, + "CharacterData": false, + "Clipboard": false, + "ClipboardEvent": false, + "ClipboardItem": false, + "CloseEvent": false, + "CloseWatcher": false, + "Comment": false, + "CompositionEvent": false, + "CompressionStream": false, + "ConstantSourceNode": false, + "ContentVisibilityAutoStateChangeEvent": false, + "ConvolverNode": false, + "CookieChangeEvent": false, + "CookieDeprecationLabel": false, + "CookieStore": false, + "CookieStoreManager": false, + "CountQueuingStrategy": false, + "Credential": false, + "CredentialsContainer": false, + "CropTarget": false, + "Crypto": false, + "CryptoKey": false, + "CustomElementRegistry": false, + "CustomEvent": false, + "CustomStateSet": false, + "DOMError": false, + "DOMException": false, + "DOMImplementation": false, + "DOMMatrix": false, + "DOMMatrixReadOnly": false, + "DOMParser": false, + "DOMPoint": false, + "DOMPointReadOnly": false, + "DOMQuad": false, + "DOMRect": false, + "DOMRectList": false, + "DOMRectReadOnly": false, + "DOMStringList": false, + "DOMStringMap": false, + "DOMTokenList": false, + "DataTransfer": false, + "DataTransferItem": false, + "DataTransferItemList": false, + "DataView": false, + "Date": false, + "DecompressionStream": false, + "DelayNode": false, + "DelegatedInkTrailPresenter": false, + "DeviceMotionEvent": false, + "DeviceMotionEventAcceleration": false, + "DeviceMotionEventRotationRate": false, + "DeviceOrientationEvent": false, + "Document": false, + "DocumentFragment": false, + "DocumentPictureInPicture": false, + "DocumentPictureInPictureEvent": false, + "DocumentTimeline": false, + "DocumentType": false, + "DragEvent": false, + "DynamicsCompressorNode": false, + "EditContext": false, + "Element": false, + "ElementInternals": false, + "EncodedAudioChunk": false, + "EncodedVideoChunk": false, + "Error": false, + "ErrorEvent": false, + "EvalError": false, + "Event": false, + "EventCounts": false, + "EventSource": false, + "EventTarget": false, + "External": false, + "EyeDropper": false, + "FeaturePolicy": false, + "FederatedCredential": false, + "Fence": false, + "FencedFrameConfig": false, + "FetchLaterResult": false, + "File": false, + "FileList": false, + "FileReader": false, + "FileSystem": false, + "FileSystemDirectoryEntry": false, + "FileSystemDirectoryHandle": false, + "FileSystemDirectoryReader": false, + "FileSystemEntry": false, + "FileSystemFileEntry": false, + "FileSystemFileHandle": false, + "FileSystemHandle": false, + "FileSystemWritableFileStream": false, + "FinalizationRegistry": false, + "Float16Array": false, + "Float32Array": false, + "Float64Array": false, + "FocusEvent": false, + "FontData": false, + "FontFace": false, + "FontFaceSet": false, + "FontFaceSetLoadEvent": false, + "FormData": false, + "FormDataEvent": false, + "FragmentDirective": false, + "Function": false, + "GPU": false, + "GPUAdapter": false, + "GPUAdapterInfo": false, + "GPUBindGroup": false, + "GPUBindGroupLayout": false, + "GPUBuffer": false, + "GPUBufferUsage": false, + "GPUCanvasContext": false, + "GPUColorWrite": false, + "GPUCommandBuffer": false, + "GPUCommandEncoder": false, + "GPUCompilationInfo": false, + "GPUCompilationMessage": false, + "GPUComputePassEncoder": false, + "GPUComputePipeline": false, + "GPUDevice": false, + "GPUDeviceLostInfo": false, + "GPUError": false, + "GPUExternalTexture": false, + "GPUInternalError": false, + "GPUMapMode": false, + "GPUOutOfMemoryError": false, + "GPUPipelineError": false, + "GPUPipelineLayout": false, + "GPUQuerySet": false, + "GPUQueue": false, + "GPURenderBundle": false, + "GPURenderBundleEncoder": false, + "GPURenderPassEncoder": false, + "GPURenderPipeline": false, + "GPUSampler": false, + "GPUShaderModule": false, + "GPUShaderStage": false, + "GPUSupportedFeatures": false, + "GPUSupportedLimits": false, + "GPUTexture": false, + "GPUTextureUsage": false, + "GPUTextureView": false, + "GPUUncapturedErrorEvent": false, + "GPUValidationError": false, + "GainNode": false, + "Gamepad": false, + "GamepadAxisMoveEvent": false, + "GamepadButton": false, + "GamepadButtonEvent": false, + "GamepadEvent": false, + "GamepadHapticActuator": false, + "GamepadPose": false, + "Geolocation": false, + "GeolocationCoordinates": false, + "GeolocationPosition": false, + "GeolocationPositionError": false, + "GravitySensor": false, + "Gyroscope": false, + "HID": false, + "HIDConnectionEvent": false, + "HIDDevice": false, + "HIDInputReportEvent": false, + "HTMLAllCollection": false, + "HTMLAnchorElement": false, + "HTMLAreaElement": false, + "HTMLAudioElement": false, + "HTMLBRElement": false, + "HTMLBaseElement": false, + "HTMLBodyElement": false, + "HTMLButtonElement": false, + "HTMLCanvasElement": false, + "HTMLCollection": false, + "HTMLDListElement": false, + "HTMLDataElement": false, + "HTMLDataListElement": false, + "HTMLDetailsElement": false, + "HTMLDialogElement": false, + "HTMLDirectoryElement": false, + "HTMLDivElement": false, + "HTMLDocument": false, + "HTMLElement": false, + "HTMLEmbedElement": false, + "HTMLFencedFrameElement": false, + "HTMLFieldSetElement": false, + "HTMLFontElement": false, + "HTMLFormControlsCollection": false, + "HTMLFormElement": false, + "HTMLFrameElement": false, + "HTMLFrameSetElement": false, + "HTMLHRElement": false, + "HTMLHeadElement": false, + "HTMLHeadingElement": false, + "HTMLHtmlElement": false, + "HTMLIFrameElement": false, + "HTMLImageElement": false, + "HTMLInputElement": false, + "HTMLLIElement": false, + "HTMLLabelElement": false, + "HTMLLegendElement": false, + "HTMLLinkElement": false, + "HTMLMapElement": false, + "HTMLMarqueeElement": false, + "HTMLMediaElement": false, + "HTMLMenuElement": false, + "HTMLMetaElement": false, + "HTMLMeterElement": false, + "HTMLModElement": false, + "HTMLOListElement": false, + "HTMLObjectElement": false, + "HTMLOptGroupElement": false, + "HTMLOptionElement": false, + "HTMLOptionsCollection": false, + "HTMLOutputElement": false, + "HTMLParagraphElement": false, + "HTMLParamElement": false, + "HTMLPictureElement": false, + "HTMLPreElement": false, + "HTMLProgressElement": false, + "HTMLQuoteElement": false, + "HTMLScriptElement": false, + "HTMLSelectElement": false, + "HTMLSlotElement": false, + "HTMLSourceElement": false, + "HTMLSpanElement": false, + "HTMLStyleElement": false, + "HTMLTableCaptionElement": false, + "HTMLTableCellElement": false, + "HTMLTableColElement": false, + "HTMLTableElement": false, + "HTMLTableRowElement": false, + "HTMLTableSectionElement": false, + "HTMLTemplateElement": false, + "HTMLTextAreaElement": false, + "HTMLTimeElement": false, + "HTMLTitleElement": false, + "HTMLTrackElement": false, + "HTMLUListElement": false, + "HTMLUnknownElement": false, + "HTMLVideoElement": false, + "HashChangeEvent": false, + "Headers": false, + "Highlight": false, + "HighlightRegistry": false, + "History": false, + "IDBCursor": false, + "IDBCursorWithValue": false, + "IDBDatabase": false, + "IDBFactory": false, + "IDBIndex": false, + "IDBKeyRange": false, + "IDBObjectStore": false, + "IDBOpenDBRequest": false, + "IDBRequest": false, + "IDBTransaction": false, + "IDBVersionChangeEvent": false, + "IIRFilterNode": false, + "IdentityCredential": false, + "IdentityCredentialError": false, + "IdentityProvider": false, + "IdleDeadline": false, + "IdleDetector": false, + "Image": false, + "ImageBitmap": false, + "ImageBitmapRenderingContext": false, + "ImageCapture": false, + "ImageData": false, + "ImageDecoder": false, + "ImageTrack": false, + "ImageTrackList": false, + "Infinity": false, + "Ink": false, + "InputDeviceCapabilities": false, + "InputDeviceInfo": false, + "InputEvent": false, + "Int16Array": false, + "Int32Array": false, + "Int8Array": false, + "IntersectionObserver": false, + "IntersectionObserverEntry": false, + "Intl": false, + "JSON": false, + "Keyboard": false, + "KeyboardEvent": false, + "KeyboardLayoutMap": false, + "KeyframeEffect": false, + "LargestContentfulPaint": false, + "LaunchParams": false, + "LaunchQueue": false, + "LayoutShift": false, + "LayoutShiftAttribution": false, + "LinearAccelerationSensor": false, + "Location": false, + "Lock": false, + "LockManager": false, + "MIDIAccess": false, + "MIDIConnectionEvent": false, + "MIDIInput": false, + "MIDIInputMap": false, + "MIDIMessageEvent": false, + "MIDIOutput": false, + "MIDIOutputMap": false, + "MIDIPort": false, + "Map": false, + "Math": false, + "MathMLElement": false, + "MediaCapabilities": false, + "MediaCapabilitiesInfo": false, + "MediaDeviceInfo": false, + "MediaDevices": false, + "MediaElementAudioSourceNode": false, + "MediaEncryptedEvent": false, + "MediaError": false, + "MediaKeyError": false, + "MediaKeyMessageEvent": false, + "MediaKeySession": false, + "MediaKeyStatusMap": false, + "MediaKeySystemAccess": false, + "MediaKeys": false, + "MediaList": false, + "MediaMetadata": false, + "MediaQueryList": false, + "MediaQueryListEvent": false, + "MediaRecorder": false, + "MediaRecorderErrorEvent": false, + "MediaSession": false, + "MediaSource": false, + "MediaSourceHandle": false, + "MediaStream": false, + "MediaStreamAudioDestinationNode": false, + "MediaStreamAudioSourceNode": false, + "MediaStreamEvent": false, + "MediaStreamTrack": false, + "MediaStreamTrackAudioSourceNode": false, + "MediaStreamTrackAudioStats": false, + "MediaStreamTrackEvent": false, + "MediaStreamTrackGenerator": false, + "MediaStreamTrackProcessor": false, + "MediaStreamTrackVideoStats": false, + "MessageChannel": false, + "MessageEvent": false, + "MessagePort": false, + "MimeType": false, + "MimeTypeArray": false, + "ModelGenericSession": false, + "ModelManager": false, + "MouseEvent": false, + "MutationEvent": false, + "MutationObserver": false, + "MutationRecord": false, + "NaN": false, + "NamedNodeMap": false, + "NavigateEvent": false, + "Navigation": false, + "NavigationActivation": false, + "NavigationCurrentEntryChangeEvent": false, + "NavigationDestination": false, + "NavigationHistoryEntry": false, + "NavigationPreloadManager": false, + "NavigationTransition": false, + "Navigator": false, + "NavigatorLogin": false, + "NavigatorManagedData": false, + "NavigatorUAData": false, + "NetworkInformation": false, + "Node": false, + "NodeFilter": false, + "NodeIterator": false, + "NodeList": false, + "NotRestoredReasonDetails": false, + "NotRestoredReasons": false, + "Notification": false, + "NotifyPaintEvent": false, + "Number": false, + "OTPCredential": false, + "Object": false, + "OfflineAudioCompletionEvent": false, + "OfflineAudioContext": false, + "OffscreenCanvas": false, + "OffscreenCanvasRenderingContext2D": false, + "Option": false, + "OrientationSensor": false, + "OscillatorNode": false, + "OverconstrainedError": false, + "PERSISTENT": false, + "PageRevealEvent": false, + "PageSwapEvent": false, + "PageTransitionEvent": false, + "PannerNode": false, + "PasswordCredential": false, + "Path2D": false, + "PaymentAddress": false, + "PaymentManager": false, + "PaymentMethodChangeEvent": false, + "PaymentRequest": false, + "PaymentRequestUpdateEvent": false, + "PaymentResponse": false, + "Performance": false, + "PerformanceElementTiming": false, + "PerformanceEntry": false, + "PerformanceEventTiming": false, + "PerformanceLongAnimationFrameTiming": false, + "PerformanceLongTaskTiming": false, + "PerformanceMark": false, + "PerformanceMeasure": false, + "PerformanceNavigation": false, + "PerformanceNavigationTiming": false, + "PerformanceObserver": false, + "PerformanceObserverEntryList": false, + "PerformancePaintTiming": false, + "PerformanceResourceTiming": false, + "PerformanceScriptTiming": false, + "PerformanceServerTiming": false, + "PerformanceTiming": false, + "PeriodicSyncManager": false, + "PeriodicWave": false, + "PermissionStatus": false, + "Permissions": false, + "PictureInPictureEvent": false, + "PictureInPictureWindow": false, + "Plugin": false, + "PluginArray": false, + "PointerEvent": false, + "PopStateEvent": false, + "Presentation": false, + "PresentationAvailability": false, + "PresentationConnection": false, + "PresentationConnectionAvailableEvent": false, + "PresentationConnectionCloseEvent": false, + "PresentationConnectionList": false, + "PresentationReceiver": false, + "PresentationRequest": false, + "PressureObserver": false, + "PressureRecord": false, + "ProcessingInstruction": false, + "Profiler": false, + "ProgressEvent": false, + "Promise": false, + "PromiseRejectionEvent": false, + "ProtectedAudience": false, + "Proxy": false, + "PublicKeyCredential": false, + "PushManager": false, + "PushSubscription": false, + "PushSubscriptionOptions": false, + "RTCCertificate": false, + "RTCDTMFSender": false, + "RTCDTMFToneChangeEvent": false, + "RTCDataChannel": false, + "RTCDataChannelEvent": false, + "RTCDtlsTransport": false, + "RTCEncodedAudioFrame": false, + "RTCEncodedVideoFrame": false, + "RTCError": false, + "RTCErrorEvent": false, + "RTCIceCandidate": false, + "RTCIceTransport": false, + "RTCPeerConnection": false, + "RTCPeerConnectionIceErrorEvent": false, + "RTCPeerConnectionIceEvent": false, + "RTCRtpReceiver": false, + "RTCRtpScriptTransform": false, + "RTCRtpSender": false, + "RTCRtpTransceiver": false, + "RTCSctpTransport": false, + "RTCSessionDescription": false, + "RTCStatsReport": false, + "RTCTrackEvent": false, + "RadioNodeList": false, + "Range": false, + "RangeError": false, + "ReadableByteStreamController": false, + "ReadableStream": false, + "ReadableStreamBYOBReader": false, + "ReadableStreamBYOBRequest": false, + "ReadableStreamDefaultController": false, + "ReadableStreamDefaultReader": false, + "ReferenceError": false, + "Reflect": false, + "RegExp": false, + "RelativeOrientationSensor": false, + "RemotePlayback": false, + "ReportingObserver": false, + "Request": false, + "ResizeObserver": false, + "ResizeObserverEntry": false, + "ResizeObserverSize": false, + "Response": false, + "SVGAElement": false, + "SVGAngle": false, + "SVGAnimateElement": false, + "SVGAnimateMotionElement": false, + "SVGAnimateTransformElement": false, + "SVGAnimatedAngle": false, + "SVGAnimatedBoolean": false, + "SVGAnimatedEnumeration": false, + "SVGAnimatedInteger": false, + "SVGAnimatedLength": false, + "SVGAnimatedLengthList": false, + "SVGAnimatedNumber": false, + "SVGAnimatedNumberList": false, + "SVGAnimatedPreserveAspectRatio": false, + "SVGAnimatedRect": false, + "SVGAnimatedString": false, + "SVGAnimatedTransformList": false, + "SVGAnimationElement": false, + "SVGCircleElement": false, + "SVGClipPathElement": false, + "SVGComponentTransferFunctionElement": false, + "SVGDefsElement": false, + "SVGDescElement": false, + "SVGElement": false, + "SVGEllipseElement": false, + "SVGFEBlendElement": false, + "SVGFEColorMatrixElement": false, + "SVGFEComponentTransferElement": false, + "SVGFECompositeElement": false, + "SVGFEConvolveMatrixElement": false, + "SVGFEDiffuseLightingElement": false, + "SVGFEDisplacementMapElement": false, + "SVGFEDistantLightElement": false, + "SVGFEDropShadowElement": false, + "SVGFEFloodElement": false, + "SVGFEFuncAElement": false, + "SVGFEFuncBElement": false, + "SVGFEFuncGElement": false, + "SVGFEFuncRElement": false, + "SVGFEGaussianBlurElement": false, + "SVGFEImageElement": false, + "SVGFEMergeElement": false, + "SVGFEMergeNodeElement": false, + "SVGFEMorphologyElement": false, + "SVGFEOffsetElement": false, + "SVGFEPointLightElement": false, + "SVGFESpecularLightingElement": false, + "SVGFESpotLightElement": false, + "SVGFETileElement": false, + "SVGFETurbulenceElement": false, + "SVGFilterElement": false, + "SVGForeignObjectElement": false, + "SVGGElement": false, + "SVGGeometryElement": false, + "SVGGradientElement": false, + "SVGGraphicsElement": false, + "SVGImageElement": false, + "SVGLength": false, + "SVGLengthList": false, + "SVGLineElement": false, + "SVGLinearGradientElement": false, + "SVGMPathElement": false, + "SVGMarkerElement": false, + "SVGMaskElement": false, + "SVGMatrix": false, + "SVGMetadataElement": false, + "SVGNumber": false, + "SVGNumberList": false, + "SVGPathElement": false, + "SVGPatternElement": false, + "SVGPoint": false, + "SVGPointList": false, + "SVGPolygonElement": false, + "SVGPolylineElement": false, + "SVGPreserveAspectRatio": false, + "SVGRadialGradientElement": false, + "SVGRect": false, + "SVGRectElement": false, + "SVGSVGElement": false, + "SVGScriptElement": false, + "SVGSetElement": false, + "SVGStopElement": false, + "SVGStringList": false, + "SVGStyleElement": false, + "SVGSwitchElement": false, + "SVGSymbolElement": false, + "SVGTSpanElement": false, + "SVGTextContentElement": false, + "SVGTextElement": false, + "SVGTextPathElement": false, + "SVGTextPositioningElement": false, + "SVGTitleElement": false, + "SVGTransform": false, + "SVGTransformList": false, + "SVGUnitTypes": false, + "SVGUseElement": false, + "SVGViewElement": false, + "Scheduler": false, + "Scheduling": false, + "Screen": false, + "ScreenDetailed": false, + "ScreenDetails": false, + "ScreenOrientation": false, + "ScriptProcessorNode": false, + "ScrollTimeline": false, + "SecurityPolicyViolationEvent": false, + "Selection": false, + "Sensor": false, + "SensorErrorEvent": false, + "Serial": false, + "SerialPort": false, + "ServiceWorker": false, + "ServiceWorkerContainer": false, + "ServiceWorkerRegistration": false, + "Set": false, + "ShadowRoot": false, + "SharedArrayBuffer": false, + "SharedStorage": false, + "SharedStorageWorklet": false, + "SharedWorker": false, + "SnapEvent": false, + "SourceBuffer": false, + "SourceBufferList": false, + "SpeechSynthesis": false, + "SpeechSynthesisErrorEvent": false, + "SpeechSynthesisEvent": false, + "SpeechSynthesisUtterance": false, + "SpeechSynthesisVoice": false, + "StaticRange": false, + "StereoPannerNode": false, + "Storage": false, + "StorageBucket": false, + "StorageBucketManager": false, + "StorageEvent": false, + "StorageManager": false, + "String": false, + "StylePropertyMap": false, + "StylePropertyMapReadOnly": false, + "StyleSheet": false, + "StyleSheetList": false, + "SubmitEvent": false, + "SubtleCrypto": false, + "Symbol": false, + "SyncManager": false, + "SyntaxError": false, + "TEMPORARY": false, + "TaskAttributionTiming": false, + "TaskController": false, + "TaskPriorityChangeEvent": false, + "TaskSignal": false, + "Text": false, + "TextDecoder": false, + "TextDecoderStream": false, + "TextEncoder": false, + "TextEncoderStream": false, + "TextEvent": false, + "TextFormat": false, + "TextFormatUpdateEvent": false, + "TextMetrics": false, + "TextTrack": false, + "TextTrackCue": false, + "TextTrackCueList": false, + "TextTrackList": false, + "TextUpdateEvent": false, + "TimeEvent": false, + "TimeRanges": false, + "ToggleEvent": false, + "Touch": false, + "TouchEvent": false, + "TouchList": false, + "TrackEvent": false, + "TransformStream": false, + "TransformStreamDefaultController": false, + "TransitionEvent": false, + "TreeWalker": false, + "TrustedHTML": false, + "TrustedScript": false, + "TrustedScriptURL": false, + "TrustedTypePolicy": false, + "TrustedTypePolicyFactory": false, + "TypeError": false, + "UIEvent": false, + "URIError": false, + "URL": false, + "URLPattern": false, + "URLSearchParams": false, + "USB": false, + "USBAlternateInterface": false, + "USBConfiguration": false, + "USBConnectionEvent": false, + "USBDevice": false, + "USBEndpoint": false, + "USBInTransferResult": false, + "USBInterface": false, + "USBIsochronousInTransferPacket": false, + "USBIsochronousInTransferResult": false, + "USBIsochronousOutTransferPacket": false, + "USBIsochronousOutTransferResult": false, + "USBOutTransferResult": false, + "Uint16Array": false, + "Uint32Array": false, + "Uint8Array": false, + "Uint8ClampedArray": false, + "UserActivation": false, + "VTTCue": false, + "VTTRegion": false, + "ValidityState": false, + "VideoColorSpace": false, + "VideoDecoder": false, + "VideoEncoder": false, + "VideoFrame": false, + "VideoPlaybackQuality": false, + "ViewTimeline": false, + "ViewTransition": false, + "ViewTransitionTypeSet": false, + "VirtualKeyboard": false, + "VirtualKeyboardGeometryChangeEvent": false, + "VisibilityStateEntry": false, + "VisualViewport": false, + "WGSLLanguageFeatures": false, + "WakeLock": false, + "WakeLockSentinel": false, + "WaveShaperNode": false, + "WeakMap": false, + "WeakRef": false, + "WeakSet": false, + "WebAssembly": false, + "WebGL2RenderingContext": false, + "WebGLActiveInfo": false, + "WebGLBuffer": false, + "WebGLContextEvent": false, + "WebGLFramebuffer": false, + "WebGLObject": false, + "WebGLProgram": false, + "WebGLQuery": false, + "WebGLRenderbuffer": false, + "WebGLRenderingContext": false, + "WebGLSampler": false, + "WebGLShader": false, + "WebGLShaderPrecisionFormat": false, + "WebGLSync": false, + "WebGLTexture": false, + "WebGLTransformFeedback": false, + "WebGLUniformLocation": false, + "WebGLVertexArrayObject": false, + "WebSocket": false, + "WebSocketError": false, + "WebSocketStream": false, + "WebTransport": false, + "WebTransportBidirectionalStream": false, + "WebTransportDatagramDuplexStream": false, + "WebTransportError": false, + "WebTransportReceiveStream": false, + "WebTransportSendStream": false, + "WheelEvent": false, + "Window": false, + "WindowControlsOverlay": false, + "WindowControlsOverlayGeometryChangeEvent": false, + "Worker": false, + "Worklet": false, + "WorkletGlobalScope": false, + "WritableStream": false, + "WritableStreamDefaultController": false, + "WritableStreamDefaultWriter": false, + "XMLDocument": false, + "XMLHttpRequest": false, + "XMLHttpRequestEventTarget": false, + "XMLHttpRequestUpload": false, + "XMLSerializer": false, + "XPathEvaluator": false, + "XPathExpression": false, + "XPathResult": false, + "XRAnchor": false, + "XRAnchorSet": false, + "XRBoundedReferenceSpace": false, + "XRCPUDepthInformation": false, + "XRCamera": false, + "XRDOMOverlayState": false, + "XRDepthInformation": false, + "XRFrame": false, + "XRHand": false, + "XRHitTestResult": false, + "XRHitTestSource": false, + "XRInputSource": false, + "XRInputSourceArray": false, + "XRInputSourceEvent": false, + "XRInputSourcesChangeEvent": false, + "XRJointPose": false, + "XRJointSpace": false, + "XRLayer": false, + "XRLightEstimate": false, + "XRLightProbe": false, + "XRPose": false, + "XRRay": false, + "XRReferenceSpace": false, + "XRReferenceSpaceEvent": false, + "XRRenderState": false, + "XRRigidTransform": false, + "XRSession": false, + "XRSessionEvent": false, + "XRSpace": false, + "XRSystem": false, + "XRTransientInputHitTestResult": false, + "XRTransientInputHitTestSource": false, + "XRView": false, + "XRViewerPose": false, + "XRViewport": false, + "XRWebGLBinding": false, + "XRWebGLDepthInformation": false, + "XRWebGLLayer": false, + "XSLTProcessor": false, + "addEventListener": false, + "ai": false, + "alert": false, + "atob": false, + "blur": false, + "btoa": false, + "caches": false, + "cancelAnimationFrame": false, + "cancelIdleCallback": false, + "clearInterval": false, + "clearTimeout": false, + "clientInformation": false, + "close": false, + "closed": false, + "confirm": false, + "console": false, + "cookieStore": false, + "createImageBitmap": false, + "credentialless": false, + "crossOriginIsolated": false, + "crypto": false, + "currentFrame": false, + "currentTime": false, + "customElements": false, + "decodeURI": false, + "decodeURIComponent": false, + "devicePixelRatio": false, + "dispatchEvent": false, + "document": false, + "documentPictureInPicture": false, + "encodeURI": false, + "encodeURIComponent": false, + "escape": false, + "eval": false, + "event": false, + "external": false, + "fence": false, + "fetch": false, + "fetchLater": false, + "find": false, + "focus": false, + "frameElement": false, + "frames": false, + "getComputedStyle": false, + "getScreenDetails": false, + "getSelection": false, + "globalThis": false, + "history": false, + "indexedDB": false, + "innerHeight": false, + "innerWidth": false, + "isFinite": false, + "isNaN": false, + "isSecureContext": false, + "launchQueue": false, + "length": false, + "localStorage": false, + "location": true, + "locationbar": false, + "matchMedia": false, + "menubar": false, + "model": false, + "moveBy": false, + "moveTo": false, + "name": false, + "navigation": false, + "navigator": false, + "offscreenBuffering": false, + "onabort": true, + "onafterprint": true, + "onanimationcancel": true, + "onanimationend": true, + "onanimationiteration": true, + "onanimationstart": true, + "onappinstalled": true, + "onauxclick": true, + "onbeforeinput": true, + "onbeforeinstallprompt": true, + "onbeforematch": true, + "onbeforeprint": true, + "onbeforetoggle": true, + "onbeforeunload": true, + "onbeforexrselect": true, + "onblur": true, + "oncancel": true, + "oncanplay": true, + "oncanplaythrough": true, + "onchange": true, + "onclick": true, + "onclose": true, + "oncontentvisibilityautostatechange": true, + "oncontextlost": true, + "oncontextmenu": true, + "oncontextrestored": true, + "oncopy": true, + "oncuechange": true, + "oncut": true, + "ondblclick": true, + "ondevicemotion": true, + "ondeviceorientation": true, + "ondeviceorientationabsolute": true, + "ondrag": true, + "ondragend": true, + "ondragenter": true, + "ondragleave": true, + "ondragover": true, + "ondragstart": true, + "ondrop": true, + "ondurationchange": true, + "onemptied": true, + "onended": true, + "onerror": true, + "onfocus": true, + "onformdata": true, + "ongamepadconnected": true, + "ongamepaddisconnected": true, + "ongotpointercapture": true, + "onhashchange": true, + "oninput": true, + "oninvalid": true, + "onkeydown": true, + "onkeypress": true, + "onkeyup": true, + "onlanguagechange": true, + "onload": true, + "onloadeddata": true, + "onloadedmetadata": true, + "onloadstart": true, + "onlostpointercapture": true, + "onmessage": true, + "onmessageerror": true, + "onmousedown": true, + "onmouseenter": true, + "onmouseleave": true, + "onmousemove": true, + "onmouseout": true, + "onmouseover": true, + "onmouseup": true, + "onmousewheel": true, + "onoffline": true, + "ononline": true, + "onpagehide": true, + "onpagereveal": true, + "onpageshow": true, + "onpageswap": true, + "onpaste": true, + "onpause": true, + "onplay": true, + "onplaying": true, + "onpointercancel": true, + "onpointerdown": true, + "onpointerenter": true, + "onpointerleave": true, + "onpointermove": true, + "onpointerout": true, + "onpointerover": true, + "onpointerrawupdate": true, + "onpointerup": true, + "onpopstate": true, + "onprogress": true, + "onratechange": true, + "onrejectionhandled": true, + "onreset": true, + "onresize": true, + "onscroll": true, + "onscrollend": true, + "onscrollsnapchange": true, + "onscrollsnapchanging": true, + "onsearch": true, + "onsecuritypolicyviolation": true, + "onseeked": true, + "onseeking": true, + "onselect": true, + "onselectionchange": true, + "onselectstart": true, + "onslotchange": true, + "onstalled": true, + "onstorage": true, + "onsubmit": true, + "onsuspend": true, + "ontimeupdate": true, + "ontoggle": true, + "ontransitioncancel": true, + "ontransitionend": true, + "ontransitionrun": true, + "ontransitionstart": true, + "onunhandledrejection": true, + "onunload": true, + "onvolumechange": true, + "onwaiting": true, + "onwheel": true, + "open": false, + "opener": false, + "origin": false, + "originAgentCluster": false, + "outerHeight": false, + "outerWidth": false, + "pageXOffset": false, + "pageYOffset": false, + "parent": false, + "parseFloat": false, + "parseInt": false, + "performance": false, + "personalbar": false, + "postMessage": false, + "print": false, + "prompt": false, + "queryLocalFonts": false, + "queueMicrotask": false, + "registerProcessor": false, + "removeEventListener": false, + "reportError": false, + "requestAnimationFrame": false, + "requestIdleCallback": false, + "resizeBy": false, + "resizeTo": false, + "sampleRate": false, + "scheduler": false, + "screen": false, + "screenLeft": false, + "screenTop": false, + "screenX": false, + "screenY": false, + "scroll": false, + "scrollBy": false, + "scrollTo": false, + "scrollX": false, + "scrollY": false, + "scrollbars": false, + "self": false, + "sessionStorage": false, + "setInterval": false, + "setTimeout": false, + "sharedStorage": false, + "showDirectoryPicker": false, + "showOpenFilePicker": false, + "showSaveFilePicker": false, + "speechSynthesis": false, + "status": false, + "statusbar": false, + "stop": false, + "structuredClone": false, + "styleMedia": false, + "toolbar": false, + "top": false, + "trustedTypes": false, + "undefined": false, + "unescape": false, + "visualViewport": false, + "window": false, + }, + "parser": "espree@10.4.0", + "parserOptions": { + "ecmaFeatures": { + "jsx": true, + }, + "sourceType": "module", }, - "ecmaVersion": "latest", "sourceType": "module", }, + "linterOptions": { + "reportUnusedDisableDirectives": 2, + }, "plugins": [ - "@stylistic", - "switch-case", - "gettext", + "@", "import", + "gettext", + "switch-case", + "@stylistic", "jsdoc", - "prettier", + "prettier:eslint-plugin-prettier@5.2.3", "react", - "jsx-a11y", - "react-hooks", + "react-hooks:eslint-plugin-react-hooks", + "jsx-a11y:eslint-plugin-jsx-a11y@6.10.2", ], - "reportUnusedDisableDirectives": true, + "processor": undefined, "rules": { "@babel/object-curly-spacing": [ - "off", + 0, ], "@babel/semi": [ - "off", + 0, ], "@stylistic/padding-line-between-statements": [ - "warn", + 1, { "blankLine": "always", "next": "return", @@ -103,7 +1294,7 @@ exports[`keeps rules stable 1`] = ` }, ], "@stylistic/spaced-comment": [ - "warn", + 1, "always", { "block": { @@ -130,108 +1321,114 @@ exports[`keeps rules stable 1`] = ` }, ], "@typescript-eslint/block-spacing": [ - "off", + 0, ], "@typescript-eslint/brace-style": [ - "off", + 0, ], "@typescript-eslint/comma-dangle": [ - "off", + 0, ], "@typescript-eslint/comma-spacing": [ - "off", + 0, ], "@typescript-eslint/func-call-spacing": [ - "off", + 0, ], "@typescript-eslint/indent": [ - "off", + 0, ], "@typescript-eslint/key-spacing": [ - "off", + 0, ], "@typescript-eslint/keyword-spacing": [ - "off", + 0, ], "@typescript-eslint/lines-around-comment": [ 0, ], "@typescript-eslint/member-delimiter-style": [ - "off", + 0, ], "@typescript-eslint/no-extra-parens": [ - "off", + 0, ], "@typescript-eslint/no-extra-semi": [ - "off", + 0, ], "@typescript-eslint/object-curly-spacing": [ - "off", + 0, ], "@typescript-eslint/quotes": [ 0, ], "@typescript-eslint/semi": [ - "off", + 0, ], "@typescript-eslint/space-before-blocks": [ - "off", + 0, ], "@typescript-eslint/space-before-function-paren": [ - "off", + 0, ], "@typescript-eslint/space-infix-ops": [ - "off", + 0, ], "@typescript-eslint/type-annotation-spacing": [ - "off", + 0, ], "array-bracket-newline": [ - "off", + 0, ], "array-bracket-spacing": [ - "off", + 0, ], "array-callback-return": [ - "error", + 2, + { + "allowImplicit": false, + "allowVoid": false, + "checkForEach": false, + }, ], "array-element-newline": [ - "off", + 0, ], "arrow-body-style": [ - "off", + 2, "as-needed", { "requireReturnForObjectLiteral": false, }, ], "arrow-parens": [ - "off", + 0, ], "arrow-spacing": [ - "off", + 0, ], "babel/object-curly-spacing": [ - "off", + 0, ], "babel/quotes": [ 0, ], "babel/semi": [ - "off", + 0, ], "block-scoped-var": [ - "error", + 2, ], "block-spacing": [ - "off", + 0, ], "brace-style": [ - "off", + 0, ], "camelcase": [ - "error", + 2, { + "allow": [], "ignoreDestructuring": false, "ignoreGlobals": false, "ignoreImports": false, @@ -239,133 +1436,137 @@ exports[`keeps rules stable 1`] = ` }, ], "comma-dangle": [ - "off", + 0, ], "comma-spacing": [ - "off", + 0, ], "comma-style": [ - "off", + 0, ], "complexity": [ - "error", + 2, + 20, ], "computed-property-spacing": [ - "off", + 0, ], "consistent-return": [ - "error", + 2, + { + "treatUndefinedAsUnspecified": false, + }, ], "constructor-super": [ - "error", + 2, ], "curly": [ - "error", + 2, "all", ], "default-case": [ - "error", + 2, + {}, ], "default-param-last": [ - "error", + 2, ], "dot-location": [ - "off", + 0, ], "dot-notation": [ - "error", + 2, { "allowKeywords": true, "allowPattern": "", }, ], "eol-last": [ - "off", + 0, ], "eqeqeq": [ - "error", + 2, "smart", ], "flowtype/boolean-style": [ - "off", + 0, ], "flowtype/delimiter-dangle": [ - "off", + 0, ], "flowtype/generic-spacing": [ - "off", + 0, ], "flowtype/object-type-curly-spacing": [ - "off", + 0, ], "flowtype/object-type-delimiter": [ - "off", + 0, ], "flowtype/quotes": [ - "off", + 0, ], "flowtype/semi": [ - "off", + 0, ], "flowtype/space-after-type-colon": [ - "off", + 0, ], "flowtype/space-before-generic-bracket": [ - "off", + 0, ], "flowtype/space-before-type-colon": [ - "off", + 0, ], "flowtype/union-intersection-spacing": [ - "off", + 0, ], "for-direction": [ - "error", + 2, ], "func-call-spacing": [ - "off", + 0, ], "func-names": [ - "error", + 2, + "always", + {}, ], "function-call-argument-newline": [ - "off", + 0, ], "function-paren-newline": [ - "off", + 0, ], "generator-star": [ - "off", + 0, ], "generator-star-spacing": [ - "off", + 0, ], "getter-return": [ - "error", + 2, { "allowImplicit": true, }, ], "gettext/no-variable-string": [ - "error", + 2, ], "guard-for-in": [ - "error", + 2, ], "implicit-arrow-linebreak": [ - "off", + 0, ], "import/default": [ - "off", + 0, ], "import/dynamic-import-chunkname": [ - "error", - ], - "import/export": [ 2, ], "import/extensions": [ - "error", + 2, { "js": "never", "json": "always", @@ -374,47 +1575,35 @@ exports[`keeps rules stable 1`] = ` "tsx": "never", }, ], - "import/named": [ - 2, - ], - "import/namespace": [ - 2, - ], "import/newline-after-import": [ - "warn", + 1, ], "import/no-absolute-path": [ - "error", + 2, ], "import/no-amd": [ - "error", + 2, ], "import/no-duplicates": [ - "warn", + 1, { "prefer-inline": true, }, ], "import/no-dynamic-require": [ - "error", + 2, ], "import/no-extraneous-dependencies": [ - "error", + 2, ], "import/no-mutable-exports": [ - "error", - ], - "import/no-named-as-default": [ - 1, - ], - "import/no-named-as-default-member": [ - 1, + 2, ], "import/no-named-default": [ - "error", + 2, ], "import/no-unresolved": [ - "error", + 2, { "caseSensitive": true, "caseSensitiveStrict": false, @@ -422,10 +1611,10 @@ exports[`keeps rules stable 1`] = ` }, ], "import/no-webpack-loader-syntax": [ - "error", + 2, ], "import/order": [ - "warn", + 1, { "alphabetize": { "caseInsensitive": true, @@ -449,73 +1638,73 @@ exports[`keeps rules stable 1`] = ` }, ], "indent": [ - "off", + 0, ], "indent-legacy": [ - "off", + 0, ], "jsdoc/check-alignment": [ - "error", + 2, ], "jsdoc/check-param-names": [ - "error", + 2, ], "jsdoc/check-syntax": [ - "error", + 2, ], "jsdoc/check-tag-names": [ - "error", + 2, ], "jsdoc/implements-on-classes": [ - "error", + 2, ], "jsdoc/require-param-name": [ - "error", + 2, ], "jsdoc/require-param-type": [ - "error", + 2, ], "jsdoc/require-returns-check": [ - "error", + 2, ], "jsdoc/require-returns-type": [ - "error", + 2, ], "jsx-a11y/alt-text": [ - "error", + 2, ], "jsx-a11y/anchor-ambiguous-text": [ - "off", + 0, ], "jsx-a11y/anchor-has-content": [ - "error", + 2, ], "jsx-a11y/anchor-is-valid": [ - "error", + 2, ], "jsx-a11y/aria-activedescendant-has-tabindex": [ - "error", + 2, ], "jsx-a11y/aria-props": [ - "error", + 2, ], "jsx-a11y/aria-proptypes": [ - "error", + 2, ], "jsx-a11y/aria-role": [ - "error", + 2, ], "jsx-a11y/aria-unsupported-elements": [ - "error", + 2, ], "jsx-a11y/autocomplete-valid": [ - "error", + 2, ], "jsx-a11y/click-events-have-key-events": [ - "error", + 2, ], "jsx-a11y/control-has-associated-label": [ - "off", + 0, { "ignoreElements": [ "audio", @@ -545,19 +1734,19 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/heading-has-content": [ - "error", + 2, ], "jsx-a11y/html-has-lang": [ - "error", + 2, ], "jsx-a11y/iframe-has-title": [ - "error", + 2, ], "jsx-a11y/img-redundant-alt": [ - "error", + 2, ], "jsx-a11y/interactive-supports-focus": [ - "error", + 2, { "tabbable": [ "button", @@ -571,28 +1760,28 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/label-has-associated-control": [ - "error", + 2, ], "jsx-a11y/label-has-for": [ - "off", + 0, ], "jsx-a11y/media-has-caption": [ - "error", + 2, ], "jsx-a11y/mouse-events-have-key-events": [ - "error", + 2, ], "jsx-a11y/no-access-key": [ - "error", + 2, ], "jsx-a11y/no-autofocus": [ - "error", + 2, ], "jsx-a11y/no-distracting-elements": [ - "error", + 2, ], "jsx-a11y/no-interactive-element-to-noninteractive-role": [ - "error", + 2, { "canvas": [ "img", @@ -604,7 +1793,7 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/no-noninteractive-element-interactions": [ - "error", + 2, { "alert": [ "onKeyUp", @@ -641,7 +1830,7 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/no-noninteractive-element-to-interactive-role": [ - "error", + 2, { "fieldset": [ "radiogroup", @@ -683,7 +1872,7 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/no-noninteractive-tabindex": [ - "error", + 2, { "allowExpressionValues": true, "roles": [ @@ -693,13 +1882,13 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/no-onchange": [ - "off", + 0, ], "jsx-a11y/no-redundant-roles": [ - "error", + 2, ], "jsx-a11y/no-static-element-interactions": [ - "error", + 2, { "allowExpressionValues": true, "handlers": [ @@ -713,47 +1902,47 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/role-has-required-aria-props": [ - "error", + 2, ], "jsx-a11y/role-supports-aria-props": [ - "error", + 2, ], "jsx-a11y/scope": [ - "error", + 2, ], "jsx-a11y/tabindex-no-positive": [ - "error", + 2, ], "jsx-quotes": [ - "off", + 0, ], "key-spacing": [ - "off", + 0, ], "keyword-spacing": [ - "off", + 0, ], "linebreak-style": [ - "off", + 0, ], "lines-around-comment": [ 0, ], "max-classes-per-file": [ - "error", + 2, 1, ], "max-len": [ 0, ], "max-statements-per-line": [ - "off", + 0, ], "multiline-ternary": [ - "off", + 0, ], "new-cap": [ - "error", + 2, { "capIsNew": false, "capIsNewExceptions": [ @@ -767,104 +1956,122 @@ exports[`keeps rules stable 1`] = ` }, ], "new-parens": [ - "off", + 0, ], "newline-per-chained-call": [ - "off", + 0, ], "no-alert": [ - "warn", + 1, ], "no-array-constructor": [ - "error", + 2, ], "no-arrow-condition": [ - "off", + 0, ], "no-async-promise-executor": [ - "error", + 2, ], "no-await-in-loop": [ - "error", + 2, ], "no-bitwise": [ - "error", + 2, + { + "allow": [], + "int32Hint": false, + }, ], "no-caller": [ - "error", + 2, ], "no-case-declarations": [ - "error", + 2, ], "no-class-assign": [ - "error", + 2, ], "no-comma-dangle": [ - "off", + 0, ], "no-compare-neg-zero": [ - "error", + 2, ], "no-cond-assign": [ - "error", + 2, "always", ], "no-confusing-arrow": [ 0, ], "no-console": [ - "warn", + 1, + {}, ], "no-const-assign": [ - "error", + 2, + ], + "no-constant-binary-expression": [ + 2, ], "no-constant-condition": [ - "warn", + 1, + { + "checkLoops": "allExceptWhileTrue", + }, ], "no-continue": [ - "error", + 2, ], "no-control-regex": [ - "error", + 2, ], "no-debugger": [ - "error", + 2, ], "no-delete-var": [ - "error", + 2, ], "no-dupe-args": [ - "error", + 2, ], "no-dupe-class-members": [ - "error", + 2, ], "no-dupe-else-if": [ - "error", + 2, ], "no-dupe-keys": [ - "error", + 2, ], "no-duplicate-case": [ - "error", + 2, ], "no-duplicate-imports": [ - "error", + 2, + { + "allowSeparateTypeImports": false, + "includeExports": false, + }, ], "no-else-return": [ - "error", + 2, { "allowElseIf": true, }, ], "no-empty": [ - "error", + 2, + { + "allowEmptyCatch": false, + }, ], "no-empty-character-class": [ - "error", + 2, ], "no-empty-function": [ - "error", + 2, { "allow": [ "arrowFunctions", @@ -874,161 +2081,198 @@ exports[`keeps rules stable 1`] = ` }, ], "no-empty-pattern": [ - "error", + 2, + { + "allowObjectPatternsAsParameters": false, + }, + ], + "no-empty-static-block": [ + 2, ], "no-eval": [ - "error", + 2, + { + "allowIndirect": false, + }, ], "no-ex-assign": [ - "error", + 2, ], "no-extend-native": [ - "error", + 2, + { + "exceptions": [], + }, ], "no-extra-bind": [ - "error", + 2, ], "no-extra-boolean-cast": [ - "error", + 2, + {}, ], "no-extra-label": [ - "error", + 2, ], "no-extra-parens": [ - "off", + 0, ], "no-extra-semi": [ - "off", + 0, ], "no-fallthrough": [ - "error", + 2, + { + "allowEmptyCase": false, + "reportUnusedFallthroughComment": false, + }, ], "no-floating-decimal": [ - "off", + 0, ], "no-func-assign": [ - "error", + 2, ], "no-global-assign": [ - "error", + 2, + { + "exceptions": [], + }, ], "no-implied-eval": [ - "error", + 2, ], "no-import-assign": [ - "error", - ], - "no-inner-declarations": [ - "error", + 2, ], "no-invalid-regexp": [ - "error", + 2, + {}, ], "no-irregular-whitespace": [ - "error", + 2, + { + "skipComments": false, + "skipJSXText": false, + "skipRegExps": false, + "skipStrings": true, + "skipTemplates": false, + }, ], "no-iterator": [ - "error", + 2, ], "no-label-var": [ - "error", + 2, ], "no-labels": [ - "error", + 2, { "allowLoop": false, "allowSwitch": false, }, ], "no-lone-blocks": [ - "error", + 2, ], "no-lonely-if": [ - "error", + 2, ], "no-loop-func": [ - "error", + 2, ], "no-loss-of-precision": [ - "error", + 2, ], "no-misleading-character-class": [ - "error", + 2, + { + "allowEscape": false, + }, ], "no-mixed-operators": [ 0, ], "no-mixed-spaces-and-tabs": [ - "off", + 0, ], "no-multi-assign": [ - "error", + 2, + { + "ignoreNonDeclaration": false, + }, ], "no-multi-spaces": [ - "off", + 0, ], "no-multi-str": [ - "error", + 2, ], "no-multiple-empty-lines": [ - "off", + 0, ], "no-nested-ternary": [ - "error", + 2, ], "no-new": [ - "error", + 2, ], "no-new-func": [ - "error", + 2, ], - "no-new-symbol": [ - "error", + "no-new-native-nonconstructor": [ + 2, ], "no-new-wrappers": [ - "error", + 2, ], "no-nonoctal-decimal-escape": [ - "error", + 2, ], "no-obj-calls": [ - "error", + 2, ], "no-object-constructor": [ - "error", + 2, ], "no-octal": [ - "error", + 2, ], "no-octal-escape": [ - "error", + 2, ], "no-param-reassign": [ - "error", + 2, { "props": false, }, ], "no-plusplus": [ - "error", + 2, + { + "allowForLoopAfterthoughts": false, + }, ], "no-proto": [ - "error", + 2, ], "no-prototype-builtins": [ - "off", + 0, ], "no-redeclare": [ - "error", + 2, + { + "builtinGlobals": true, + }, ], "no-regex-spaces": [ - "error", + 2, ], "no-reserved-keys": [ - "off", + 0, ], "no-restricted-globals": [ - "error", + 2, "isFinite", "isNaN", "addEventListener", @@ -1091,10 +2335,10 @@ exports[`keeps rules stable 1`] = ` "top", ], "no-restricted-imports": [ - "error", + 2, ], "no-restricted-properties": [ - "error", + 2, { "message": "arguments.callee is deprecated", "object": "arguments", @@ -1145,7 +2389,7 @@ exports[`keeps rules stable 1`] = ` }, ], "no-restricted-syntax": [ - "error", + 2, { "message": "for..in loops iterate over the entire prototype chain, which is virtually never what you want. Use Object.{keys,values,entries}, and iterate over the resulting array.", "selector": "ForInStatement", @@ -1172,65 +2416,81 @@ exports[`keeps rules stable 1`] = ` }, ], "no-return-assign": [ - "error", + 2, "except-parens", ], "no-script-url": [ - "error", + 2, ], "no-self-assign": [ - "error", + 2, + { + "props": true, + }, ], "no-self-compare": [ - "error", + 2, ], "no-sequences": [ - "error", + 2, + { + "allowInParentheses": true, + }, ], "no-setter-return": [ - "error", + 2, ], "no-shadow": [ - "error", + 2, { + "allow": [], "builtinGlobals": false, "hoist": "all", + "ignoreFunctionTypeParameterNameValueShadow": true, "ignoreOnInitialization": false, + "ignoreTypeValueShadow": true, }, ], "no-shadow-restricted-names": [ - "error", + 2, + { + "reportGlobalThis": false, + }, ], "no-space-before-semi": [ - "off", + 0, ], "no-spaced-func": [ - "off", + 0, ], "no-sparse-arrays": [ - "error", + 2, ], "no-tabs": [ 0, ], "no-template-curly-in-string": [ - "error", + 2, ], "no-this-before-super": [ - "error", + 2, ], "no-trailing-spaces": [ - "off", + 0, ], "no-undef": [ - "error", + 2, + { + "typeof": false, + }, ], "no-undef-init": [ - "error", + 2, ], "no-underscore-dangle": [ - "error", + 2, { + "allow": [], "allowAfterSuper": true, "allowAfterThis": true, "allowAfterThisConstructor": false, @@ -1245,31 +2505,47 @@ exports[`keeps rules stable 1`] = ` 0, ], "no-unneeded-ternary": [ - "error", + 2, { "defaultAssignment": false, }, ], "no-unreachable": [ - "error", + 2, ], "no-unsafe-finally": [ - "error", + 2, ], "no-unsafe-negation": [ - "error", + 2, + { + "enforceForOrderingRelations": false, + }, ], "no-unsafe-optional-chaining": [ - "error", + 2, + { + "disallowArithmeticOperators": false, + }, ], "no-unused-expressions": [ - "error", + 2, + { + "allowShortCircuit": false, + "allowTaggedTemplates": false, + "allowTernary": false, + "enforceForJSX": false, + "ignoreDirectives": false, + }, ], "no-unused-labels": [ - "error", + 2, + ], + "no-unused-private-class-members": [ + 2, ], "no-unused-vars": [ - "error", + 2, { "args": "after-used", "ignoreRestSiblings": true, @@ -1277,29 +2553,35 @@ exports[`keeps rules stable 1`] = ` }, ], "no-use-before-define": [ - "error", + 2, "nofunc", ], "no-useless-backreference": [ - "error", + 2, ], "no-useless-catch": [ - "error", + 2, ], "no-useless-computed-key": [ - "error", + 2, + { + "enforceForClassMembers": true, + }, ], "no-useless-concat": [ - "error", + 2, ], "no-useless-constructor": [ - "error", + 2, ], "no-useless-escape": [ - "error", + 2, + { + "allowRegexCharacters": [], + }, ], "no-useless-rename": [ - "error", + 2, { "ignoreDestructuring": false, "ignoreExport": false, @@ -1307,40 +2589,40 @@ exports[`keeps rules stable 1`] = ` }, ], "no-useless-return": [ - "error", + 2, ], "no-var": [ - "error", + 2, ], "no-void": [ - "error", + 2, { "allowAsStatement": true, }, ], "no-whitespace-before-property": [ - "off", + 0, ], "no-with": [ - "error", + 2, ], "no-wrap-func": [ - "off", + 0, ], "nonblock-statement-body-position": [ - "off", + 0, ], "object-curly-newline": [ - "off", + 0, ], "object-curly-spacing": [ - "off", + 0, ], "object-property-newline": [ - "off", + 0, ], "object-shorthand": [ - "error", + 2, "always", { "avoidQuotes": true, @@ -1348,47 +2630,47 @@ exports[`keeps rules stable 1`] = ` }, ], "one-var": [ - "error", + 2, "never", ], "one-var-declaration-per-line": [ - "off", + 0, ], "operator-assignment": [ - "error", + 2, "always", ], "operator-linebreak": [ - "off", + 0, ], "padded-blocks": [ - "off", + 0, ], "prefer-arrow-callback": [ - "off", + 2, { "allowNamedFunctions": false, "allowUnboundThis": true, }, ], "prefer-const": [ - "error", + 2, { "destructuring": "any", "ignoreReadBeforeAssign": true, }, ], "prefer-numeric-literals": [ - "error", + 2, ], "prefer-rest-params": [ - "error", + 2, ], "prefer-template": [ - "error", + 2, ], "prettier/prettier": [ - "warn", + 1, { "printWidth": 100, "singleQuote": true, @@ -1399,37 +2681,38 @@ exports[`keeps rules stable 1`] = ` }, ], "quote-props": [ - "off", + 0, ], "quotes": [ 0, ], "radix": [ - "error", + 2, + "always", ], "react-hooks/exhaustive-deps": [ - "error", + 2, ], "react-hooks/rules-of-hooks": [ - "error", + 2, ], "react/destructuring-assignment": [ - "error", + 2, ], "react/display-name": [ - "off", + 0, ], "react/jsx-child-element-spacing": [ - "off", + 0, ], "react/jsx-closing-bracket-location": [ - "off", + 0, ], "react/jsx-closing-tag-location": [ - "off", + 0, ], "react/jsx-curly-brace-presence": [ - "error", + 2, { "children": "never", "propElementValues": "always", @@ -1437,38 +2720,38 @@ exports[`keeps rules stable 1`] = ` }, ], "react/jsx-curly-newline": [ - "off", + 0, ], "react/jsx-curly-spacing": [ - "off", + 0, ], "react/jsx-equals-spacing": [ - "off", + 0, ], "react/jsx-first-prop-new-line": [ - "off", + 0, ], "react/jsx-fragments": [ - "error", + 2, "syntax", ], "react/jsx-indent": [ - "off", + 0, ], "react/jsx-indent-props": [ - "off", + 0, ], "react/jsx-key": [ 2, ], "react/jsx-max-props-per-line": [ - "off", + 0, ], "react/jsx-newline": [ - "off", + 0, ], "react/jsx-no-bind": [ - "error", + 2, { "allowArrowFunctions": true, "allowBind": false, @@ -1490,25 +2773,25 @@ exports[`keeps rules stable 1`] = ` 2, ], "react/jsx-no-useless-fragment": [ - "error", + 2, ], "react/jsx-one-expression-per-line": [ - "off", + 0, ], "react/jsx-pascal-case": [ - "error", + 2, ], "react/jsx-props-no-multi-spaces": [ - "off", + 0, ], "react/jsx-sort-props": [ - "warn", + 1, ], "react/jsx-space-before-closing": [ - "off", + 0, ], "react/jsx-tag-spacing": [ - "off", + 0, ], "react/jsx-uses-react": [ 2, @@ -1517,7 +2800,7 @@ exports[`keeps rules stable 1`] = ` 2, ], "react/jsx-wrap-multilines": [ - "off", + 0, ], "react/no-children-prop": [ 2, @@ -1538,7 +2821,7 @@ exports[`keeps rules stable 1`] = ` 2, ], "react/no-redundant-should-component-update": [ - "error", + 2, ], "react/no-render-return-value": [ 2, @@ -1547,10 +2830,10 @@ exports[`keeps rules stable 1`] = ` 2, ], "react/no-this-in-sfc": [ - "error", + 2, ], "react/no-unescaped-entities": [ - "error", + 2, { "forbid": [ { @@ -1572,19 +2855,19 @@ exports[`keeps rules stable 1`] = ` 2, ], "react/no-unsafe": [ - "error", + 2, ], "react/no-unused-state": [ - "error", + 2, ], "react/prefer-es6-class": [ - "error", + 2, ], "react/prefer-read-only-props": [ - "error", + 2, ], "react/prop-types": [ - "off", + 0, ], "react/react-in-jsx-scope": [ 2, @@ -1593,264 +2876,277 @@ exports[`keeps rules stable 1`] = ` 2, ], "react/self-closing-comp": [ - "error", + 2, ], "react/style-prop-object": [ - "error", + 2, ], "require-yield": [ - "error", + 2, ], "rest-spread-spacing": [ - "off", + 0, ], "semi": [ - "off", + 0, ], "semi-spacing": [ - "off", + 0, ], "semi-style": [ - "off", + 0, ], "sort-imports": [ - "error", + 2, { "allowSeparatedGroups": false, "ignoreCase": true, "ignoreDeclarationSort": true, "ignoreMemberSort": false, + "memberSyntaxSortOrder": [ + "none", + "all", + "multiple", + "single", + ], }, ], "space-after-function-name": [ - "off", + 0, ], "space-after-keywords": [ - "off", + 0, ], "space-before-blocks": [ - "off", + 0, ], "space-before-function-paren": [ - "off", + 0, ], "space-before-function-parentheses": [ - "off", + 0, ], "space-before-keywords": [ - "off", + 0, ], "space-in-brackets": [ - "off", + 0, ], "space-in-parens": [ - "off", + 0, ], "space-infix-ops": [ - "off", + 0, ], "space-return-throw-case": [ - "off", + 0, ], "space-unary-ops": [ - "off", + 0, ], "space-unary-word-ops": [ - "off", + 0, ], "standard/array-bracket-even-spacing": [ - "off", + 0, ], "standard/computed-property-even-spacing": [ - "off", + 0, ], "standard/object-curly-even-spacing": [ - "off", + 0, ], "strict": [ - "error", + 2, + "safe", ], "switch-case/newline-between-switch-case": [ - "warn", + 1, "always", { "fallthrough": "never", }, ], "switch-colon-spacing": [ - "off", + 0, ], "symbol-description": [ - "error", + 2, ], "template-curly-spacing": [ - "off", + 0, ], "template-tag-spacing": [ - "off", + 0, ], "unicorn/empty-brace-spaces": [ - "off", + 0, ], "unicorn/no-nested-ternary": [ - "off", + 0, ], "unicorn/number-literal-case": [ - "off", + 0, ], "unicorn/template-indent": [ 0, ], "use-isnan": [ - "error", + 2, + { + "enforceForIndexOf": false, + "enforceForSwitchCase": true, + }, ], "valid-jsdoc": [ - "off", + 0, { "requireParamDescription": false, - "requireParamType": true, - "requireReturn": true, "requireReturnDescription": false, - "requireReturnType": true, }, ], "valid-typeof": [ - "error", + 2, { "requireStringLiterals": true, }, ], "vars-on-top": [ - "error", + 2, ], "vue/array-bracket-newline": [ - "off", + 0, ], "vue/array-bracket-spacing": [ - "off", + 0, ], "vue/array-element-newline": [ - "off", + 0, ], "vue/arrow-spacing": [ - "off", + 0, ], "vue/block-spacing": [ - "off", + 0, ], "vue/block-tag-newline": [ - "off", + 0, ], "vue/brace-style": [ - "off", + 0, ], "vue/comma-dangle": [ - "off", + 0, ], "vue/comma-spacing": [ - "off", + 0, ], "vue/comma-style": [ - "off", + 0, ], "vue/dot-location": [ - "off", + 0, ], "vue/func-call-spacing": [ - "off", + 0, ], "vue/html-closing-bracket-newline": [ - "off", + 0, ], "vue/html-closing-bracket-spacing": [ - "off", + 0, ], "vue/html-end-tags": [ - "off", + 0, ], "vue/html-indent": [ - "off", + 0, ], "vue/html-quotes": [ - "off", + 0, ], "vue/html-self-closing": [ 0, ], "vue/key-spacing": [ - "off", + 0, ], "vue/keyword-spacing": [ - "off", + 0, ], "vue/max-attributes-per-line": [ - "off", + 0, ], "vue/max-len": [ 0, ], "vue/multiline-html-element-content-newline": [ - "off", + 0, ], "vue/multiline-ternary": [ - "off", + 0, ], "vue/mustache-interpolation-spacing": [ - "off", + 0, ], "vue/no-extra-parens": [ - "off", + 0, ], "vue/no-multi-spaces": [ - "off", + 0, ], "vue/no-spaces-around-equal-signs-in-attribute": [ - "off", + 0, ], "vue/object-curly-newline": [ - "off", + 0, ], "vue/object-curly-spacing": [ - "off", + 0, ], "vue/object-property-newline": [ - "off", + 0, ], "vue/operator-linebreak": [ - "off", + 0, ], "vue/quote-props": [ - "off", + 0, ], "vue/script-indent": [ - "off", + 0, ], "vue/singleline-html-element-content-newline": [ - "off", + 0, ], "vue/space-in-parens": [ - "off", + 0, ], "vue/space-infix-ops": [ - "off", + 0, ], "vue/space-unary-ops": [ - "off", + 0, ], "vue/template-curly-spacing": [ - "off", + 0, ], "wrap-iife": [ - "off", + 0, ], "wrap-regex": [ - "off", + 0, ], "yield-star-spacing": [ - "off", + 0, ], "yoda": [ - "error", + 2, + "never", + { + "exceptRange": false, + "onlyEquality": false, + }, ], }, "settings": { diff --git a/packages/eslint-config/test/__snapshots__/spec.spec.js.snap b/packages/eslint-config/test/__snapshots__/spec.spec.js.snap index 8974ca1..8fa66bf 100644 --- a/packages/eslint-config/test/__snapshots__/spec.spec.js.snap +++ b/packages/eslint-config/test/__snapshots__/spec.spec.js.snap @@ -2,49 +2,1249 @@ exports[`keeps rules stable 1`] = ` { - "env": { - "browser": true, - "es6": true, - "jest": true, - "jest/globals": true, - "node": true, - }, - "globals": {}, - "ignorePatterns": [], - "noInlineConfig": undefined, - "parser": null, - "parserOptions": { - "ecmaFeatures": { - "jsx": true, + "language": "@/js", + "languageOptions": { + "ecmaVersion": 2026, + "globals": { + "AI": false, + "AITextSession": false, + "AbortController": false, + "AbortSignal": false, + "AbsoluteOrientationSensor": false, + "AbstractRange": false, + "Accelerometer": false, + "AggregateError": false, + "AnalyserNode": false, + "Animation": false, + "AnimationEffect": false, + "AnimationEvent": false, + "AnimationPlaybackEvent": false, + "AnimationTimeline": false, + "Array": false, + "ArrayBuffer": false, + "Atomics": false, + "Attr": false, + "Audio": false, + "AudioBuffer": false, + "AudioBufferSourceNode": false, + "AudioContext": false, + "AudioData": false, + "AudioDecoder": false, + "AudioDestinationNode": false, + "AudioEncoder": false, + "AudioListener": false, + "AudioNode": false, + "AudioParam": false, + "AudioParamMap": false, + "AudioProcessingEvent": false, + "AudioScheduledSourceNode": false, + "AudioSinkInfo": false, + "AudioWorklet": false, + "AudioWorkletGlobalScope": false, + "AudioWorkletNode": false, + "AudioWorkletProcessor": false, + "AuthenticatorAssertionResponse": false, + "AuthenticatorAttestationResponse": false, + "AuthenticatorResponse": false, + "BackgroundFetchManager": false, + "BackgroundFetchRecord": false, + "BackgroundFetchRegistration": false, + "BarProp": false, + "BarcodeDetector": false, + "BaseAudioContext": false, + "BatteryManager": false, + "BeforeUnloadEvent": false, + "BigInt": false, + "BigInt64Array": false, + "BigUint64Array": false, + "BiquadFilterNode": false, + "Blob": false, + "BlobEvent": false, + "Bluetooth": false, + "BluetoothCharacteristicProperties": false, + "BluetoothDevice": false, + "BluetoothRemoteGATTCharacteristic": false, + "BluetoothRemoteGATTDescriptor": false, + "BluetoothRemoteGATTServer": false, + "BluetoothRemoteGATTService": false, + "BluetoothUUID": false, + "Boolean": false, + "BroadcastChannel": false, + "BrowserCaptureMediaStreamTrack": false, + "ByteLengthQueuingStrategy": false, + "CDATASection": false, + "CSS": false, + "CSSAnimation": false, + "CSSConditionRule": false, + "CSSContainerRule": false, + "CSSCounterStyleRule": false, + "CSSFontFaceRule": false, + "CSSFontFeatureValuesRule": false, + "CSSFontPaletteValuesRule": false, + "CSSGroupingRule": false, + "CSSImageValue": false, + "CSSImportRule": false, + "CSSKeyframeRule": false, + "CSSKeyframesRule": false, + "CSSKeywordValue": false, + "CSSLayerBlockRule": false, + "CSSLayerStatementRule": false, + "CSSMarginRule": false, + "CSSMathClamp": false, + "CSSMathInvert": false, + "CSSMathMax": false, + "CSSMathMin": false, + "CSSMathNegate": false, + "CSSMathProduct": false, + "CSSMathSum": false, + "CSSMathValue": false, + "CSSMatrixComponent": false, + "CSSMediaRule": false, + "CSSNamespaceRule": false, + "CSSNestedDeclarations": false, + "CSSNumericArray": false, + "CSSNumericValue": false, + "CSSPageDescriptors": false, + "CSSPageRule": false, + "CSSPerspective": false, + "CSSPositionTryDescriptors": false, + "CSSPositionTryRule": false, + "CSSPositionValue": false, + "CSSPropertyRule": false, + "CSSRotate": false, + "CSSRule": false, + "CSSRuleList": false, + "CSSScale": false, + "CSSScopeRule": false, + "CSSSkew": false, + "CSSSkewX": false, + "CSSSkewY": false, + "CSSStartingStyleRule": false, + "CSSStyleDeclaration": false, + "CSSStyleRule": false, + "CSSStyleSheet": false, + "CSSStyleValue": false, + "CSSSupportsRule": false, + "CSSTransformComponent": false, + "CSSTransformValue": false, + "CSSTransition": false, + "CSSTranslate": false, + "CSSUnitValue": false, + "CSSUnparsedValue": false, + "CSSVariableReferenceValue": false, + "CSSViewTransitionRule": false, + "Cache": false, + "CacheStorage": false, + "CanvasCaptureMediaStream": false, + "CanvasCaptureMediaStreamTrack": false, + "CanvasGradient": false, + "CanvasPattern": false, + "CanvasRenderingContext2D": false, + "CaptureController": false, + "CaretPosition": false, + "ChannelMergerNode": false, + "ChannelSplitterNode": false, + "ChapterInformation": false, + "CharacterBoundsUpdateEvent": false, + "CharacterData": false, + "Clipboard": false, + "ClipboardEvent": false, + "ClipboardItem": false, + "CloseEvent": false, + "CloseWatcher": false, + "Comment": false, + "CompositionEvent": false, + "CompressionStream": false, + "ConstantSourceNode": false, + "ContentVisibilityAutoStateChangeEvent": false, + "ConvolverNode": false, + "CookieChangeEvent": false, + "CookieDeprecationLabel": false, + "CookieStore": false, + "CookieStoreManager": false, + "CountQueuingStrategy": false, + "Credential": false, + "CredentialsContainer": false, + "CropTarget": false, + "Crypto": false, + "CryptoKey": false, + "CustomElementRegistry": false, + "CustomEvent": false, + "CustomStateSet": false, + "DOMError": false, + "DOMException": false, + "DOMImplementation": false, + "DOMMatrix": false, + "DOMMatrixReadOnly": false, + "DOMParser": false, + "DOMPoint": false, + "DOMPointReadOnly": false, + "DOMQuad": false, + "DOMRect": false, + "DOMRectList": false, + "DOMRectReadOnly": false, + "DOMStringList": false, + "DOMStringMap": false, + "DOMTokenList": false, + "DataTransfer": false, + "DataTransferItem": false, + "DataTransferItemList": false, + "DataView": false, + "Date": false, + "DecompressionStream": false, + "DelayNode": false, + "DelegatedInkTrailPresenter": false, + "DeviceMotionEvent": false, + "DeviceMotionEventAcceleration": false, + "DeviceMotionEventRotationRate": false, + "DeviceOrientationEvent": false, + "Document": false, + "DocumentFragment": false, + "DocumentPictureInPicture": false, + "DocumentPictureInPictureEvent": false, + "DocumentTimeline": false, + "DocumentType": false, + "DragEvent": false, + "DynamicsCompressorNode": false, + "EditContext": false, + "Element": false, + "ElementInternals": false, + "EncodedAudioChunk": false, + "EncodedVideoChunk": false, + "Error": false, + "ErrorEvent": false, + "EvalError": false, + "Event": false, + "EventCounts": false, + "EventSource": false, + "EventTarget": false, + "External": false, + "EyeDropper": false, + "FeaturePolicy": false, + "FederatedCredential": false, + "Fence": false, + "FencedFrameConfig": false, + "FetchLaterResult": false, + "File": false, + "FileList": false, + "FileReader": false, + "FileSystem": false, + "FileSystemDirectoryEntry": false, + "FileSystemDirectoryHandle": false, + "FileSystemDirectoryReader": false, + "FileSystemEntry": false, + "FileSystemFileEntry": false, + "FileSystemFileHandle": false, + "FileSystemHandle": false, + "FileSystemWritableFileStream": false, + "FinalizationRegistry": false, + "Float16Array": false, + "Float32Array": false, + "Float64Array": false, + "FocusEvent": false, + "FontData": false, + "FontFace": false, + "FontFaceSet": false, + "FontFaceSetLoadEvent": false, + "FormData": false, + "FormDataEvent": false, + "FragmentDirective": false, + "Function": false, + "GPU": false, + "GPUAdapter": false, + "GPUAdapterInfo": false, + "GPUBindGroup": false, + "GPUBindGroupLayout": false, + "GPUBuffer": false, + "GPUBufferUsage": false, + "GPUCanvasContext": false, + "GPUColorWrite": false, + "GPUCommandBuffer": false, + "GPUCommandEncoder": false, + "GPUCompilationInfo": false, + "GPUCompilationMessage": false, + "GPUComputePassEncoder": false, + "GPUComputePipeline": false, + "GPUDevice": false, + "GPUDeviceLostInfo": false, + "GPUError": false, + "GPUExternalTexture": false, + "GPUInternalError": false, + "GPUMapMode": false, + "GPUOutOfMemoryError": false, + "GPUPipelineError": false, + "GPUPipelineLayout": false, + "GPUQuerySet": false, + "GPUQueue": false, + "GPURenderBundle": false, + "GPURenderBundleEncoder": false, + "GPURenderPassEncoder": false, + "GPURenderPipeline": false, + "GPUSampler": false, + "GPUShaderModule": false, + "GPUShaderStage": false, + "GPUSupportedFeatures": false, + "GPUSupportedLimits": false, + "GPUTexture": false, + "GPUTextureUsage": false, + "GPUTextureView": false, + "GPUUncapturedErrorEvent": false, + "GPUValidationError": false, + "GainNode": false, + "Gamepad": false, + "GamepadAxisMoveEvent": false, + "GamepadButton": false, + "GamepadButtonEvent": false, + "GamepadEvent": false, + "GamepadHapticActuator": false, + "GamepadPose": false, + "Geolocation": false, + "GeolocationCoordinates": false, + "GeolocationPosition": false, + "GeolocationPositionError": false, + "GravitySensor": false, + "Gyroscope": false, + "HID": false, + "HIDConnectionEvent": false, + "HIDDevice": false, + "HIDInputReportEvent": false, + "HTMLAllCollection": false, + "HTMLAnchorElement": false, + "HTMLAreaElement": false, + "HTMLAudioElement": false, + "HTMLBRElement": false, + "HTMLBaseElement": false, + "HTMLBodyElement": false, + "HTMLButtonElement": false, + "HTMLCanvasElement": false, + "HTMLCollection": false, + "HTMLDListElement": false, + "HTMLDataElement": false, + "HTMLDataListElement": false, + "HTMLDetailsElement": false, + "HTMLDialogElement": false, + "HTMLDirectoryElement": false, + "HTMLDivElement": false, + "HTMLDocument": false, + "HTMLElement": false, + "HTMLEmbedElement": false, + "HTMLFencedFrameElement": false, + "HTMLFieldSetElement": false, + "HTMLFontElement": false, + "HTMLFormControlsCollection": false, + "HTMLFormElement": false, + "HTMLFrameElement": false, + "HTMLFrameSetElement": false, + "HTMLHRElement": false, + "HTMLHeadElement": false, + "HTMLHeadingElement": false, + "HTMLHtmlElement": false, + "HTMLIFrameElement": false, + "HTMLImageElement": false, + "HTMLInputElement": false, + "HTMLLIElement": false, + "HTMLLabelElement": false, + "HTMLLegendElement": false, + "HTMLLinkElement": false, + "HTMLMapElement": false, + "HTMLMarqueeElement": false, + "HTMLMediaElement": false, + "HTMLMenuElement": false, + "HTMLMetaElement": false, + "HTMLMeterElement": false, + "HTMLModElement": false, + "HTMLOListElement": false, + "HTMLObjectElement": false, + "HTMLOptGroupElement": false, + "HTMLOptionElement": false, + "HTMLOptionsCollection": false, + "HTMLOutputElement": false, + "HTMLParagraphElement": false, + "HTMLParamElement": false, + "HTMLPictureElement": false, + "HTMLPreElement": false, + "HTMLProgressElement": false, + "HTMLQuoteElement": false, + "HTMLScriptElement": false, + "HTMLSelectElement": false, + "HTMLSlotElement": false, + "HTMLSourceElement": false, + "HTMLSpanElement": false, + "HTMLStyleElement": false, + "HTMLTableCaptionElement": false, + "HTMLTableCellElement": false, + "HTMLTableColElement": false, + "HTMLTableElement": false, + "HTMLTableRowElement": false, + "HTMLTableSectionElement": false, + "HTMLTemplateElement": false, + "HTMLTextAreaElement": false, + "HTMLTimeElement": false, + "HTMLTitleElement": false, + "HTMLTrackElement": false, + "HTMLUListElement": false, + "HTMLUnknownElement": false, + "HTMLVideoElement": false, + "HashChangeEvent": false, + "Headers": false, + "Highlight": false, + "HighlightRegistry": false, + "History": false, + "IDBCursor": false, + "IDBCursorWithValue": false, + "IDBDatabase": false, + "IDBFactory": false, + "IDBIndex": false, + "IDBKeyRange": false, + "IDBObjectStore": false, + "IDBOpenDBRequest": false, + "IDBRequest": false, + "IDBTransaction": false, + "IDBVersionChangeEvent": false, + "IIRFilterNode": false, + "IdentityCredential": false, + "IdentityCredentialError": false, + "IdentityProvider": false, + "IdleDeadline": false, + "IdleDetector": false, + "Image": false, + "ImageBitmap": false, + "ImageBitmapRenderingContext": false, + "ImageCapture": false, + "ImageData": false, + "ImageDecoder": false, + "ImageTrack": false, + "ImageTrackList": false, + "Infinity": false, + "Ink": false, + "InputDeviceCapabilities": false, + "InputDeviceInfo": false, + "InputEvent": false, + "Int16Array": false, + "Int32Array": false, + "Int8Array": false, + "IntersectionObserver": false, + "IntersectionObserverEntry": false, + "Intl": false, + "JSON": false, + "Keyboard": false, + "KeyboardEvent": false, + "KeyboardLayoutMap": false, + "KeyframeEffect": false, + "LargestContentfulPaint": false, + "LaunchParams": false, + "LaunchQueue": false, + "LayoutShift": false, + "LayoutShiftAttribution": false, + "LinearAccelerationSensor": false, + "Location": false, + "Lock": false, + "LockManager": false, + "MIDIAccess": false, + "MIDIConnectionEvent": false, + "MIDIInput": false, + "MIDIInputMap": false, + "MIDIMessageEvent": false, + "MIDIOutput": false, + "MIDIOutputMap": false, + "MIDIPort": false, + "Map": false, + "Math": false, + "MathMLElement": false, + "MediaCapabilities": false, + "MediaCapabilitiesInfo": false, + "MediaDeviceInfo": false, + "MediaDevices": false, + "MediaElementAudioSourceNode": false, + "MediaEncryptedEvent": false, + "MediaError": false, + "MediaKeyError": false, + "MediaKeyMessageEvent": false, + "MediaKeySession": false, + "MediaKeyStatusMap": false, + "MediaKeySystemAccess": false, + "MediaKeys": false, + "MediaList": false, + "MediaMetadata": false, + "MediaQueryList": false, + "MediaQueryListEvent": false, + "MediaRecorder": false, + "MediaRecorderErrorEvent": false, + "MediaSession": false, + "MediaSource": false, + "MediaSourceHandle": false, + "MediaStream": false, + "MediaStreamAudioDestinationNode": false, + "MediaStreamAudioSourceNode": false, + "MediaStreamEvent": false, + "MediaStreamTrack": false, + "MediaStreamTrackAudioSourceNode": false, + "MediaStreamTrackAudioStats": false, + "MediaStreamTrackEvent": false, + "MediaStreamTrackGenerator": false, + "MediaStreamTrackProcessor": false, + "MediaStreamTrackVideoStats": false, + "MessageChannel": false, + "MessageEvent": false, + "MessagePort": false, + "MimeType": false, + "MimeTypeArray": false, + "ModelGenericSession": false, + "ModelManager": false, + "MouseEvent": false, + "MutationEvent": false, + "MutationObserver": false, + "MutationRecord": false, + "NaN": false, + "NamedNodeMap": false, + "NavigateEvent": false, + "Navigation": false, + "NavigationActivation": false, + "NavigationCurrentEntryChangeEvent": false, + "NavigationDestination": false, + "NavigationHistoryEntry": false, + "NavigationPreloadManager": false, + "NavigationTransition": false, + "Navigator": false, + "NavigatorLogin": false, + "NavigatorManagedData": false, + "NavigatorUAData": false, + "NetworkInformation": false, + "Node": false, + "NodeFilter": false, + "NodeIterator": false, + "NodeList": false, + "NotRestoredReasonDetails": false, + "NotRestoredReasons": false, + "Notification": false, + "NotifyPaintEvent": false, + "Number": false, + "OTPCredential": false, + "Object": false, + "OfflineAudioCompletionEvent": false, + "OfflineAudioContext": false, + "OffscreenCanvas": false, + "OffscreenCanvasRenderingContext2D": false, + "Option": false, + "OrientationSensor": false, + "OscillatorNode": false, + "OverconstrainedError": false, + "PERSISTENT": false, + "PageRevealEvent": false, + "PageSwapEvent": false, + "PageTransitionEvent": false, + "PannerNode": false, + "PasswordCredential": false, + "Path2D": false, + "PaymentAddress": false, + "PaymentManager": false, + "PaymentMethodChangeEvent": false, + "PaymentRequest": false, + "PaymentRequestUpdateEvent": false, + "PaymentResponse": false, + "Performance": false, + "PerformanceElementTiming": false, + "PerformanceEntry": false, + "PerformanceEventTiming": false, + "PerformanceLongAnimationFrameTiming": false, + "PerformanceLongTaskTiming": false, + "PerformanceMark": false, + "PerformanceMeasure": false, + "PerformanceNavigation": false, + "PerformanceNavigationTiming": false, + "PerformanceObserver": false, + "PerformanceObserverEntryList": false, + "PerformancePaintTiming": false, + "PerformanceResourceTiming": false, + "PerformanceScriptTiming": false, + "PerformanceServerTiming": false, + "PerformanceTiming": false, + "PeriodicSyncManager": false, + "PeriodicWave": false, + "PermissionStatus": false, + "Permissions": false, + "PictureInPictureEvent": false, + "PictureInPictureWindow": false, + "Plugin": false, + "PluginArray": false, + "PointerEvent": false, + "PopStateEvent": false, + "Presentation": false, + "PresentationAvailability": false, + "PresentationConnection": false, + "PresentationConnectionAvailableEvent": false, + "PresentationConnectionCloseEvent": false, + "PresentationConnectionList": false, + "PresentationReceiver": false, + "PresentationRequest": false, + "PressureObserver": false, + "PressureRecord": false, + "ProcessingInstruction": false, + "Profiler": false, + "ProgressEvent": false, + "Promise": false, + "PromiseRejectionEvent": false, + "ProtectedAudience": false, + "Proxy": false, + "PublicKeyCredential": false, + "PushManager": false, + "PushSubscription": false, + "PushSubscriptionOptions": false, + "RTCCertificate": false, + "RTCDTMFSender": false, + "RTCDTMFToneChangeEvent": false, + "RTCDataChannel": false, + "RTCDataChannelEvent": false, + "RTCDtlsTransport": false, + "RTCEncodedAudioFrame": false, + "RTCEncodedVideoFrame": false, + "RTCError": false, + "RTCErrorEvent": false, + "RTCIceCandidate": false, + "RTCIceTransport": false, + "RTCPeerConnection": false, + "RTCPeerConnectionIceErrorEvent": false, + "RTCPeerConnectionIceEvent": false, + "RTCRtpReceiver": false, + "RTCRtpScriptTransform": false, + "RTCRtpSender": false, + "RTCRtpTransceiver": false, + "RTCSctpTransport": false, + "RTCSessionDescription": false, + "RTCStatsReport": false, + "RTCTrackEvent": false, + "RadioNodeList": false, + "Range": false, + "RangeError": false, + "ReadableByteStreamController": false, + "ReadableStream": false, + "ReadableStreamBYOBReader": false, + "ReadableStreamBYOBRequest": false, + "ReadableStreamDefaultController": false, + "ReadableStreamDefaultReader": false, + "ReferenceError": false, + "Reflect": false, + "RegExp": false, + "RelativeOrientationSensor": false, + "RemotePlayback": false, + "ReportingObserver": false, + "Request": false, + "ResizeObserver": false, + "ResizeObserverEntry": false, + "ResizeObserverSize": false, + "Response": false, + "SVGAElement": false, + "SVGAngle": false, + "SVGAnimateElement": false, + "SVGAnimateMotionElement": false, + "SVGAnimateTransformElement": false, + "SVGAnimatedAngle": false, + "SVGAnimatedBoolean": false, + "SVGAnimatedEnumeration": false, + "SVGAnimatedInteger": false, + "SVGAnimatedLength": false, + "SVGAnimatedLengthList": false, + "SVGAnimatedNumber": false, + "SVGAnimatedNumberList": false, + "SVGAnimatedPreserveAspectRatio": false, + "SVGAnimatedRect": false, + "SVGAnimatedString": false, + "SVGAnimatedTransformList": false, + "SVGAnimationElement": false, + "SVGCircleElement": false, + "SVGClipPathElement": false, + "SVGComponentTransferFunctionElement": false, + "SVGDefsElement": false, + "SVGDescElement": false, + "SVGElement": false, + "SVGEllipseElement": false, + "SVGFEBlendElement": false, + "SVGFEColorMatrixElement": false, + "SVGFEComponentTransferElement": false, + "SVGFECompositeElement": false, + "SVGFEConvolveMatrixElement": false, + "SVGFEDiffuseLightingElement": false, + "SVGFEDisplacementMapElement": false, + "SVGFEDistantLightElement": false, + "SVGFEDropShadowElement": false, + "SVGFEFloodElement": false, + "SVGFEFuncAElement": false, + "SVGFEFuncBElement": false, + "SVGFEFuncGElement": false, + "SVGFEFuncRElement": false, + "SVGFEGaussianBlurElement": false, + "SVGFEImageElement": false, + "SVGFEMergeElement": false, + "SVGFEMergeNodeElement": false, + "SVGFEMorphologyElement": false, + "SVGFEOffsetElement": false, + "SVGFEPointLightElement": false, + "SVGFESpecularLightingElement": false, + "SVGFESpotLightElement": false, + "SVGFETileElement": false, + "SVGFETurbulenceElement": false, + "SVGFilterElement": false, + "SVGForeignObjectElement": false, + "SVGGElement": false, + "SVGGeometryElement": false, + "SVGGradientElement": false, + "SVGGraphicsElement": false, + "SVGImageElement": false, + "SVGLength": false, + "SVGLengthList": false, + "SVGLineElement": false, + "SVGLinearGradientElement": false, + "SVGMPathElement": false, + "SVGMarkerElement": false, + "SVGMaskElement": false, + "SVGMatrix": false, + "SVGMetadataElement": false, + "SVGNumber": false, + "SVGNumberList": false, + "SVGPathElement": false, + "SVGPatternElement": false, + "SVGPoint": false, + "SVGPointList": false, + "SVGPolygonElement": false, + "SVGPolylineElement": false, + "SVGPreserveAspectRatio": false, + "SVGRadialGradientElement": false, + "SVGRect": false, + "SVGRectElement": false, + "SVGSVGElement": false, + "SVGScriptElement": false, + "SVGSetElement": false, + "SVGStopElement": false, + "SVGStringList": false, + "SVGStyleElement": false, + "SVGSwitchElement": false, + "SVGSymbolElement": false, + "SVGTSpanElement": false, + "SVGTextContentElement": false, + "SVGTextElement": false, + "SVGTextPathElement": false, + "SVGTextPositioningElement": false, + "SVGTitleElement": false, + "SVGTransform": false, + "SVGTransformList": false, + "SVGUnitTypes": false, + "SVGUseElement": false, + "SVGViewElement": false, + "Scheduler": false, + "Scheduling": false, + "Screen": false, + "ScreenDetailed": false, + "ScreenDetails": false, + "ScreenOrientation": false, + "ScriptProcessorNode": false, + "ScrollTimeline": false, + "SecurityPolicyViolationEvent": false, + "Selection": false, + "Sensor": false, + "SensorErrorEvent": false, + "Serial": false, + "SerialPort": false, + "ServiceWorker": false, + "ServiceWorkerContainer": false, + "ServiceWorkerRegistration": false, + "Set": false, + "ShadowRoot": false, + "SharedArrayBuffer": false, + "SharedStorage": false, + "SharedStorageWorklet": false, + "SharedWorker": false, + "SnapEvent": false, + "SourceBuffer": false, + "SourceBufferList": false, + "SpeechSynthesis": false, + "SpeechSynthesisErrorEvent": false, + "SpeechSynthesisEvent": false, + "SpeechSynthesisUtterance": false, + "SpeechSynthesisVoice": false, + "StaticRange": false, + "StereoPannerNode": false, + "Storage": false, + "StorageBucket": false, + "StorageBucketManager": false, + "StorageEvent": false, + "StorageManager": false, + "String": false, + "StylePropertyMap": false, + "StylePropertyMapReadOnly": false, + "StyleSheet": false, + "StyleSheetList": false, + "SubmitEvent": false, + "SubtleCrypto": false, + "Symbol": false, + "SyncManager": false, + "SyntaxError": false, + "TEMPORARY": false, + "TaskAttributionTiming": false, + "TaskController": false, + "TaskPriorityChangeEvent": false, + "TaskSignal": false, + "Text": false, + "TextDecoder": false, + "TextDecoderStream": false, + "TextEncoder": false, + "TextEncoderStream": false, + "TextEvent": false, + "TextFormat": false, + "TextFormatUpdateEvent": false, + "TextMetrics": false, + "TextTrack": false, + "TextTrackCue": false, + "TextTrackCueList": false, + "TextTrackList": false, + "TextUpdateEvent": false, + "TimeEvent": false, + "TimeRanges": false, + "ToggleEvent": false, + "Touch": false, + "TouchEvent": false, + "TouchList": false, + "TrackEvent": false, + "TransformStream": false, + "TransformStreamDefaultController": false, + "TransitionEvent": false, + "TreeWalker": false, + "TrustedHTML": false, + "TrustedScript": false, + "TrustedScriptURL": false, + "TrustedTypePolicy": false, + "TrustedTypePolicyFactory": false, + "TypeError": false, + "UIEvent": false, + "URIError": false, + "URL": false, + "URLPattern": false, + "URLSearchParams": false, + "USB": false, + "USBAlternateInterface": false, + "USBConfiguration": false, + "USBConnectionEvent": false, + "USBDevice": false, + "USBEndpoint": false, + "USBInTransferResult": false, + "USBInterface": false, + "USBIsochronousInTransferPacket": false, + "USBIsochronousInTransferResult": false, + "USBIsochronousOutTransferPacket": false, + "USBIsochronousOutTransferResult": false, + "USBOutTransferResult": false, + "Uint16Array": false, + "Uint32Array": false, + "Uint8Array": false, + "Uint8ClampedArray": false, + "UserActivation": false, + "VTTCue": false, + "VTTRegion": false, + "ValidityState": false, + "VideoColorSpace": false, + "VideoDecoder": false, + "VideoEncoder": false, + "VideoFrame": false, + "VideoPlaybackQuality": false, + "ViewTimeline": false, + "ViewTransition": false, + "ViewTransitionTypeSet": false, + "VirtualKeyboard": false, + "VirtualKeyboardGeometryChangeEvent": false, + "VisibilityStateEntry": false, + "VisualViewport": false, + "WGSLLanguageFeatures": false, + "WakeLock": false, + "WakeLockSentinel": false, + "WaveShaperNode": false, + "WeakMap": false, + "WeakRef": false, + "WeakSet": false, + "WebAssembly": false, + "WebGL2RenderingContext": false, + "WebGLActiveInfo": false, + "WebGLBuffer": false, + "WebGLContextEvent": false, + "WebGLFramebuffer": false, + "WebGLObject": false, + "WebGLProgram": false, + "WebGLQuery": false, + "WebGLRenderbuffer": false, + "WebGLRenderingContext": false, + "WebGLSampler": false, + "WebGLShader": false, + "WebGLShaderPrecisionFormat": false, + "WebGLSync": false, + "WebGLTexture": false, + "WebGLTransformFeedback": false, + "WebGLUniformLocation": false, + "WebGLVertexArrayObject": false, + "WebSocket": false, + "WebSocketError": false, + "WebSocketStream": false, + "WebTransport": false, + "WebTransportBidirectionalStream": false, + "WebTransportDatagramDuplexStream": false, + "WebTransportError": false, + "WebTransportReceiveStream": false, + "WebTransportSendStream": false, + "WheelEvent": false, + "Window": false, + "WindowControlsOverlay": false, + "WindowControlsOverlayGeometryChangeEvent": false, + "Worker": false, + "Worklet": false, + "WorkletGlobalScope": false, + "WritableStream": false, + "WritableStreamDefaultController": false, + "WritableStreamDefaultWriter": false, + "XMLDocument": false, + "XMLHttpRequest": false, + "XMLHttpRequestEventTarget": false, + "XMLHttpRequestUpload": false, + "XMLSerializer": false, + "XPathEvaluator": false, + "XPathExpression": false, + "XPathResult": false, + "XRAnchor": false, + "XRAnchorSet": false, + "XRBoundedReferenceSpace": false, + "XRCPUDepthInformation": false, + "XRCamera": false, + "XRDOMOverlayState": false, + "XRDepthInformation": false, + "XRFrame": false, + "XRHand": false, + "XRHitTestResult": false, + "XRHitTestSource": false, + "XRInputSource": false, + "XRInputSourceArray": false, + "XRInputSourceEvent": false, + "XRInputSourcesChangeEvent": false, + "XRJointPose": false, + "XRJointSpace": false, + "XRLayer": false, + "XRLightEstimate": false, + "XRLightProbe": false, + "XRPose": false, + "XRRay": false, + "XRReferenceSpace": false, + "XRReferenceSpaceEvent": false, + "XRRenderState": false, + "XRRigidTransform": false, + "XRSession": false, + "XRSessionEvent": false, + "XRSpace": false, + "XRSystem": false, + "XRTransientInputHitTestResult": false, + "XRTransientInputHitTestSource": false, + "XRView": false, + "XRViewerPose": false, + "XRViewport": false, + "XRWebGLBinding": false, + "XRWebGLDepthInformation": false, + "XRWebGLLayer": false, + "XSLTProcessor": false, + "addEventListener": false, + "afterAll": false, + "afterEach": false, + "ai": false, + "alert": false, + "atob": false, + "beforeAll": false, + "beforeEach": false, + "blur": false, + "btoa": false, + "caches": false, + "cancelAnimationFrame": false, + "cancelIdleCallback": false, + "clearInterval": false, + "clearTimeout": false, + "clientInformation": false, + "close": false, + "closed": false, + "confirm": false, + "console": false, + "cookieStore": false, + "createImageBitmap": false, + "credentialless": false, + "crossOriginIsolated": false, + "crypto": false, + "currentFrame": false, + "currentTime": false, + "customElements": false, + "decodeURI": false, + "decodeURIComponent": false, + "describe": false, + "devicePixelRatio": false, + "dispatchEvent": false, + "document": false, + "documentPictureInPicture": false, + "encodeURI": false, + "encodeURIComponent": false, + "escape": false, + "eval": false, + "event": false, + "expect": false, + "external": false, + "fence": false, + "fetch": false, + "fetchLater": false, + "find": false, + "fit": false, + "focus": false, + "frameElement": false, + "frames": false, + "getComputedStyle": false, + "getScreenDetails": false, + "getSelection": false, + "globalThis": false, + "history": false, + "indexedDB": false, + "innerHeight": false, + "innerWidth": false, + "isFinite": false, + "isNaN": false, + "isSecureContext": false, + "it": false, + "jest": false, + "launchQueue": false, + "length": false, + "localStorage": false, + "location": true, + "locationbar": false, + "matchMedia": false, + "menubar": false, + "model": false, + "moveBy": false, + "moveTo": false, + "name": false, + "navigation": false, + "navigator": false, + "offscreenBuffering": false, + "onabort": true, + "onafterprint": true, + "onanimationcancel": true, + "onanimationend": true, + "onanimationiteration": true, + "onanimationstart": true, + "onappinstalled": true, + "onauxclick": true, + "onbeforeinput": true, + "onbeforeinstallprompt": true, + "onbeforematch": true, + "onbeforeprint": true, + "onbeforetoggle": true, + "onbeforeunload": true, + "onbeforexrselect": true, + "onblur": true, + "oncancel": true, + "oncanplay": true, + "oncanplaythrough": true, + "onchange": true, + "onclick": true, + "onclose": true, + "oncontentvisibilityautostatechange": true, + "oncontextlost": true, + "oncontextmenu": true, + "oncontextrestored": true, + "oncopy": true, + "oncuechange": true, + "oncut": true, + "ondblclick": true, + "ondevicemotion": true, + "ondeviceorientation": true, + "ondeviceorientationabsolute": true, + "ondrag": true, + "ondragend": true, + "ondragenter": true, + "ondragleave": true, + "ondragover": true, + "ondragstart": true, + "ondrop": true, + "ondurationchange": true, + "onemptied": true, + "onended": true, + "onerror": true, + "onfocus": true, + "onformdata": true, + "ongamepadconnected": true, + "ongamepaddisconnected": true, + "ongotpointercapture": true, + "onhashchange": true, + "oninput": true, + "oninvalid": true, + "onkeydown": true, + "onkeypress": true, + "onkeyup": true, + "onlanguagechange": true, + "onload": true, + "onloadeddata": true, + "onloadedmetadata": true, + "onloadstart": true, + "onlostpointercapture": true, + "onmessage": true, + "onmessageerror": true, + "onmousedown": true, + "onmouseenter": true, + "onmouseleave": true, + "onmousemove": true, + "onmouseout": true, + "onmouseover": true, + "onmouseup": true, + "onmousewheel": true, + "onoffline": true, + "ononline": true, + "onpagehide": true, + "onpagereveal": true, + "onpageshow": true, + "onpageswap": true, + "onpaste": true, + "onpause": true, + "onplay": true, + "onplaying": true, + "onpointercancel": true, + "onpointerdown": true, + "onpointerenter": true, + "onpointerleave": true, + "onpointermove": true, + "onpointerout": true, + "onpointerover": true, + "onpointerrawupdate": true, + "onpointerup": true, + "onpopstate": true, + "onprogress": true, + "onratechange": true, + "onrejectionhandled": true, + "onreset": true, + "onresize": true, + "onscroll": true, + "onscrollend": true, + "onscrollsnapchange": true, + "onscrollsnapchanging": true, + "onsearch": true, + "onsecuritypolicyviolation": true, + "onseeked": true, + "onseeking": true, + "onselect": true, + "onselectionchange": true, + "onselectstart": true, + "onslotchange": true, + "onstalled": true, + "onstorage": true, + "onsubmit": true, + "onsuspend": true, + "ontimeupdate": true, + "ontoggle": true, + "ontransitioncancel": true, + "ontransitionend": true, + "ontransitionrun": true, + "ontransitionstart": true, + "onunhandledrejection": true, + "onunload": true, + "onvolumechange": true, + "onwaiting": true, + "onwheel": true, + "open": false, + "opener": false, + "origin": false, + "originAgentCluster": false, + "outerHeight": false, + "outerWidth": false, + "pageXOffset": false, + "pageYOffset": false, + "parent": false, + "parseFloat": false, + "parseInt": false, + "performance": false, + "personalbar": false, + "postMessage": false, + "print": false, + "prompt": false, + "queryLocalFonts": false, + "queueMicrotask": false, + "registerProcessor": false, + "removeEventListener": false, + "reportError": false, + "requestAnimationFrame": false, + "requestIdleCallback": false, + "resizeBy": false, + "resizeTo": false, + "sampleRate": false, + "scheduler": false, + "screen": false, + "screenLeft": false, + "screenTop": false, + "screenX": false, + "screenY": false, + "scroll": false, + "scrollBy": false, + "scrollTo": false, + "scrollX": false, + "scrollY": false, + "scrollbars": false, + "self": false, + "sessionStorage": false, + "setInterval": false, + "setTimeout": false, + "sharedStorage": false, + "showDirectoryPicker": false, + "showOpenFilePicker": false, + "showSaveFilePicker": false, + "speechSynthesis": false, + "status": false, + "statusbar": false, + "stop": false, + "structuredClone": false, + "styleMedia": false, + "test": false, + "toolbar": false, + "top": false, + "trustedTypes": false, + "undefined": false, + "unescape": false, + "visualViewport": false, + "window": false, + "xdescribe": false, + "xit": false, + "xtest": false, + }, + "parser": "espree@10.4.0", + "parserOptions": { + "ecmaFeatures": { + "jsx": true, + }, + "sourceType": "module", }, - "ecmaVersion": "latest", "sourceType": "module", }, + "linterOptions": { + "reportUnusedDisableDirectives": 2, + }, "plugins": [ - "@stylistic", - "switch-case", - "gettext", + "@", "import", + "gettext", + "switch-case", + "@stylistic", "jsdoc", - "prettier", + "prettier:eslint-plugin-prettier@5.2.3", + "jest:eslint-plugin-jest@28.11.0", "jest-formatting", - "jest", "jest-dom", - "testing-library", "react", - "jsx-a11y", - "react-hooks", + "react-hooks:eslint-plugin-react-hooks", + "jsx-a11y:eslint-plugin-jsx-a11y@6.10.2", ], - "reportUnusedDisableDirectives": true, + "processor": undefined, "rules": { "@babel/object-curly-spacing": [ - "off", + 0, ], "@babel/semi": [ - "off", + 0, ], "@stylistic/padding-line-between-statements": [ - "warn", + 1, { "blankLine": "always", "next": "return", @@ -110,7 +1310,7 @@ exports[`keeps rules stable 1`] = ` }, ], "@stylistic/spaced-comment": [ - "warn", + 1, "always", { "block": { @@ -137,108 +1337,114 @@ exports[`keeps rules stable 1`] = ` }, ], "@typescript-eslint/block-spacing": [ - "off", + 0, ], "@typescript-eslint/brace-style": [ - "off", + 0, ], "@typescript-eslint/comma-dangle": [ - "off", + 0, ], "@typescript-eslint/comma-spacing": [ - "off", + 0, ], "@typescript-eslint/func-call-spacing": [ - "off", + 0, ], "@typescript-eslint/indent": [ - "off", + 0, ], "@typescript-eslint/key-spacing": [ - "off", + 0, ], "@typescript-eslint/keyword-spacing": [ - "off", + 0, ], "@typescript-eslint/lines-around-comment": [ 0, ], "@typescript-eslint/member-delimiter-style": [ - "off", + 0, ], "@typescript-eslint/no-extra-parens": [ - "off", + 0, ], "@typescript-eslint/no-extra-semi": [ - "off", + 0, ], "@typescript-eslint/object-curly-spacing": [ - "off", + 0, ], "@typescript-eslint/quotes": [ 0, ], "@typescript-eslint/semi": [ - "off", + 0, ], "@typescript-eslint/space-before-blocks": [ - "off", + 0, ], "@typescript-eslint/space-before-function-paren": [ - "off", + 0, ], "@typescript-eslint/space-infix-ops": [ - "off", + 0, ], "@typescript-eslint/type-annotation-spacing": [ - "off", + 0, ], "array-bracket-newline": [ - "off", + 0, ], "array-bracket-spacing": [ - "off", + 0, ], "array-callback-return": [ - "error", + 2, + { + "allowImplicit": false, + "allowVoid": false, + "checkForEach": false, + }, ], "array-element-newline": [ - "off", + 0, ], "arrow-body-style": [ - "off", + 2, "as-needed", { "requireReturnForObjectLiteral": false, }, ], "arrow-parens": [ - "off", + 0, ], "arrow-spacing": [ - "off", + 0, ], "babel/object-curly-spacing": [ - "off", + 0, ], "babel/quotes": [ 0, ], "babel/semi": [ - "off", + 0, ], "block-scoped-var": [ - "error", + 2, ], "block-spacing": [ - "off", + 0, ], "brace-style": [ - "off", + 0, ], "camelcase": [ - "error", + 2, { + "allow": [], "ignoreDestructuring": false, "ignoreGlobals": false, "ignoreImports": false, @@ -246,133 +1452,137 @@ exports[`keeps rules stable 1`] = ` }, ], "comma-dangle": [ - "off", + 0, ], "comma-spacing": [ - "off", + 0, ], "comma-style": [ - "off", + 0, ], "complexity": [ - "error", + 2, + 20, ], "computed-property-spacing": [ - "off", + 0, ], "consistent-return": [ - "error", + 2, + { + "treatUndefinedAsUnspecified": false, + }, ], "constructor-super": [ - "error", + 2, ], "curly": [ - "error", + 2, "all", ], "default-case": [ - "error", + 2, + {}, ], "default-param-last": [ - "error", + 2, ], "dot-location": [ - "off", + 0, ], "dot-notation": [ - "error", + 2, { "allowKeywords": true, "allowPattern": "", }, ], "eol-last": [ - "off", + 0, ], "eqeqeq": [ - "error", + 2, "smart", ], "flowtype/boolean-style": [ - "off", + 0, ], "flowtype/delimiter-dangle": [ - "off", + 0, ], "flowtype/generic-spacing": [ - "off", + 0, ], "flowtype/object-type-curly-spacing": [ - "off", + 0, ], "flowtype/object-type-delimiter": [ - "off", + 0, ], "flowtype/quotes": [ - "off", + 0, ], "flowtype/semi": [ - "off", + 0, ], "flowtype/space-after-type-colon": [ - "off", + 0, ], "flowtype/space-before-generic-bracket": [ - "off", + 0, ], "flowtype/space-before-type-colon": [ - "off", + 0, ], "flowtype/union-intersection-spacing": [ - "off", + 0, ], "for-direction": [ - "error", + 2, ], "func-call-spacing": [ - "off", + 0, ], "func-names": [ - "error", + 2, + "always", + {}, ], "function-call-argument-newline": [ - "off", + 0, ], "function-paren-newline": [ - "off", + 0, ], "generator-star": [ - "off", + 0, ], "generator-star-spacing": [ - "off", + 0, ], "getter-return": [ - "error", + 2, { "allowImplicit": true, }, ], "gettext/no-variable-string": [ - "error", + 2, ], "guard-for-in": [ - "error", + 2, ], "implicit-arrow-linebreak": [ - "off", + 0, ], "import/default": [ - "off", + 0, ], "import/dynamic-import-chunkname": [ - "error", - ], - "import/export": [ 2, ], "import/extensions": [ - "error", + 2, { "js": "never", "json": "always", @@ -381,51 +1591,39 @@ exports[`keeps rules stable 1`] = ` "tsx": "never", }, ], - "import/named": [ - 2, - ], - "import/namespace": [ - 2, - ], "import/newline-after-import": [ - "warn", + 1, ], "import/no-absolute-path": [ - "error", + 2, ], "import/no-amd": [ - "error", + 2, ], "import/no-duplicates": [ - "warn", + 1, { "prefer-inline": true, }, ], "import/no-dynamic-require": [ - "error", + 2, ], "import/no-extraneous-dependencies": [ - "error", + 2, { "devDependencies": true, "optionalDependencies": false, }, ], "import/no-mutable-exports": [ - "error", - ], - "import/no-named-as-default": [ - 1, - ], - "import/no-named-as-default-member": [ - 1, + 2, ], "import/no-named-default": [ - "error", + 2, ], "import/no-unresolved": [ - "error", + 2, { "caseSensitive": true, "caseSensitiveStrict": false, @@ -433,10 +1631,10 @@ exports[`keeps rules stable 1`] = ` }, ], "import/no-webpack-loader-syntax": [ - "error", + 2, ], "import/order": [ - "warn", + 1, { "alphabetize": { "caseInsensitive": true, @@ -460,197 +1658,197 @@ exports[`keeps rules stable 1`] = ` }, ], "indent": [ - "off", + 0, ], "indent-legacy": [ - "off", + 0, ], "jest-dom/prefer-checked": [ - "error", + 2, ], "jest-dom/prefer-empty": [ - "error", + 2, ], "jest-dom/prefer-enabled-disabled": [ - "error", + 2, ], "jest-dom/prefer-focus": [ - "error", + 2, ], "jest-dom/prefer-in-document": [ - "error", + 2, ], "jest-dom/prefer-required": [ - "error", + 2, ], "jest-dom/prefer-to-have-attribute": [ - "error", + 2, ], "jest-dom/prefer-to-have-class": [ - "error", + 2, ], "jest-dom/prefer-to-have-style": [ - "error", + 2, ], "jest-dom/prefer-to-have-text-content": [ - "error", + 2, ], "jest-dom/prefer-to-have-value": [ - "error", + 2, ], "jest-formatting/padding-around-all": [ - "warn", + 1, ], "jest/expect-expect": [ - "warn", + 1, ], "jest/no-alias-methods": [ - "warn", + 1, ], "jest/no-commented-out-tests": [ - "warn", + 1, ], "jest/no-conditional-expect": [ - "error", + 2, ], "jest/no-conditional-in-test": [ - "error", + 2, ], "jest/no-deprecated-functions": [ - "error", + 2, ], "jest/no-disabled-tests": [ - "warn", + 1, ], "jest/no-done-callback": [ - "off", + 0, ], "jest/no-duplicate-hooks": [ - "off", + 0, ], "jest/no-export": [ - "error", + 2, ], "jest/no-focused-tests": [ - "error", + 2, ], "jest/no-identical-title": [ - "error", + 2, ], "jest/no-interpolation-in-snapshots": [ - "error", + 2, ], "jest/no-jasmine-globals": [ - "error", + 2, ], "jest/no-mocks-import": [ - "error", + 2, ], "jest/no-restricted-matchers": [ - "error", + 2, { "toBeFalsy": "Avoid \`toBeFalsy\`, use \`toBe(false)\` instead.", "toBeTruthy": "Avoid \`toBeTruthy\`, use \`toBe(true)\` instead.", }, ], "jest/no-standalone-expect": [ - "error", + 2, ], "jest/no-test-prefixes": [ - "error", + 2, ], "jest/no-test-return-statement": [ - "error", + 2, ], "jest/prefer-hooks-on-top": [ - "error", + 2, ], "jest/prefer-to-be": [ - "error", + 2, ], "jest/prefer-to-contain": [ - "error", + 2, ], "jest/prefer-to-have-length": [ - "error", + 2, ], "jest/prefer-todo": [ - "error", + 2, ], "jest/valid-describe-callback": [ - "error", + 2, ], "jest/valid-expect": [ - "error", + 2, ], "jest/valid-expect-in-promise": [ - "error", + 2, ], "jest/valid-title": [ - "error", + 2, ], "jsdoc/check-alignment": [ - "error", + 2, ], "jsdoc/check-param-names": [ - "error", + 2, ], "jsdoc/check-syntax": [ - "error", + 2, ], "jsdoc/check-tag-names": [ - "error", + 2, ], "jsdoc/implements-on-classes": [ - "error", + 2, ], "jsdoc/require-param-name": [ - "error", + 2, ], "jsdoc/require-param-type": [ - "error", + 2, ], "jsdoc/require-returns-check": [ - "error", + 2, ], "jsdoc/require-returns-type": [ - "error", + 2, ], "jsx-a11y/alt-text": [ - "error", + 2, ], "jsx-a11y/anchor-ambiguous-text": [ - "off", + 0, ], "jsx-a11y/anchor-has-content": [ - "error", + 2, ], "jsx-a11y/anchor-is-valid": [ - "error", + 2, ], "jsx-a11y/aria-activedescendant-has-tabindex": [ - "error", + 2, ], "jsx-a11y/aria-props": [ - "error", + 2, ], "jsx-a11y/aria-proptypes": [ - "error", + 2, ], "jsx-a11y/aria-role": [ - "error", + 2, ], "jsx-a11y/aria-unsupported-elements": [ - "error", + 2, ], "jsx-a11y/autocomplete-valid": [ - "error", + 2, ], "jsx-a11y/click-events-have-key-events": [ - "error", + 2, ], "jsx-a11y/control-has-associated-label": [ - "off", + 0, { "ignoreElements": [ "audio", @@ -680,19 +1878,19 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/heading-has-content": [ - "error", + 2, ], "jsx-a11y/html-has-lang": [ - "error", + 2, ], "jsx-a11y/iframe-has-title": [ - "error", + 2, ], "jsx-a11y/img-redundant-alt": [ - "error", + 2, ], "jsx-a11y/interactive-supports-focus": [ - "error", + 2, { "tabbable": [ "button", @@ -706,28 +1904,28 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/label-has-associated-control": [ - "error", + 2, ], "jsx-a11y/label-has-for": [ - "off", + 0, ], "jsx-a11y/media-has-caption": [ - "error", + 2, ], "jsx-a11y/mouse-events-have-key-events": [ - "error", + 2, ], "jsx-a11y/no-access-key": [ - "error", + 2, ], "jsx-a11y/no-autofocus": [ - "error", + 2, ], "jsx-a11y/no-distracting-elements": [ - "error", + 2, ], "jsx-a11y/no-interactive-element-to-noninteractive-role": [ - "error", + 2, { "canvas": [ "img", @@ -739,7 +1937,7 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/no-noninteractive-element-interactions": [ - "error", + 2, { "alert": [ "onKeyUp", @@ -776,7 +1974,7 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/no-noninteractive-element-to-interactive-role": [ - "error", + 2, { "fieldset": [ "radiogroup", @@ -818,7 +2016,7 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/no-noninteractive-tabindex": [ - "error", + 2, { "allowExpressionValues": true, "roles": [ @@ -828,13 +2026,13 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/no-onchange": [ - "off", + 0, ], "jsx-a11y/no-redundant-roles": [ - "error", + 2, ], "jsx-a11y/no-static-element-interactions": [ - "error", + 2, { "allowExpressionValues": true, "handlers": [ @@ -848,47 +2046,47 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/role-has-required-aria-props": [ - "error", + 2, ], "jsx-a11y/role-supports-aria-props": [ - "error", + 2, ], "jsx-a11y/scope": [ - "error", + 2, ], "jsx-a11y/tabindex-no-positive": [ - "error", + 2, ], "jsx-quotes": [ - "off", + 0, ], "key-spacing": [ - "off", + 0, ], "keyword-spacing": [ - "off", + 0, ], "linebreak-style": [ - "off", + 0, ], "lines-around-comment": [ 0, ], "max-classes-per-file": [ - "error", + 2, 1, ], "max-len": [ 0, ], "max-statements-per-line": [ - "off", + 0, ], "multiline-ternary": [ - "off", + 0, ], "new-cap": [ - "error", + 2, { "capIsNew": false, "capIsNewExceptions": [ @@ -902,104 +2100,122 @@ exports[`keeps rules stable 1`] = ` }, ], "new-parens": [ - "off", + 0, ], "newline-per-chained-call": [ - "off", + 0, ], "no-alert": [ - "warn", + 1, ], "no-array-constructor": [ - "error", + 2, ], "no-arrow-condition": [ - "off", + 0, ], "no-async-promise-executor": [ - "error", + 2, ], "no-await-in-loop": [ - "error", + 2, ], "no-bitwise": [ - "error", + 2, + { + "allow": [], + "int32Hint": false, + }, ], "no-caller": [ - "error", + 2, ], "no-case-declarations": [ - "error", + 2, ], "no-class-assign": [ - "error", + 2, ], "no-comma-dangle": [ - "off", + 0, ], "no-compare-neg-zero": [ - "error", + 2, ], "no-cond-assign": [ - "error", + 2, "always", ], "no-confusing-arrow": [ 0, ], "no-console": [ - "warn", + 1, + {}, ], "no-const-assign": [ - "error", + 2, + ], + "no-constant-binary-expression": [ + 2, ], "no-constant-condition": [ - "warn", + 1, + { + "checkLoops": "allExceptWhileTrue", + }, ], "no-continue": [ - "error", + 2, ], "no-control-regex": [ - "error", + 2, ], "no-debugger": [ - "error", + 2, ], "no-delete-var": [ - "error", + 2, ], "no-dupe-args": [ - "error", + 2, ], "no-dupe-class-members": [ - "error", + 2, ], "no-dupe-else-if": [ - "error", + 2, ], "no-dupe-keys": [ - "error", + 2, ], "no-duplicate-case": [ - "error", + 2, ], "no-duplicate-imports": [ - "error", + 2, + { + "allowSeparateTypeImports": false, + "includeExports": false, + }, ], "no-else-return": [ - "error", + 2, { "allowElseIf": true, }, ], "no-empty": [ - "error", + 2, + { + "allowEmptyCatch": false, + }, ], "no-empty-character-class": [ - "error", + 2, ], "no-empty-function": [ - "error", + 2, { "allow": [ "arrowFunctions", @@ -1009,161 +2225,198 @@ exports[`keeps rules stable 1`] = ` }, ], "no-empty-pattern": [ - "error", + 2, + { + "allowObjectPatternsAsParameters": false, + }, + ], + "no-empty-static-block": [ + 2, ], "no-eval": [ - "error", + 2, + { + "allowIndirect": false, + }, ], "no-ex-assign": [ - "error", + 2, ], "no-extend-native": [ - "error", + 2, + { + "exceptions": [], + }, ], "no-extra-bind": [ - "error", + 2, ], "no-extra-boolean-cast": [ - "error", + 2, + {}, ], "no-extra-label": [ - "error", + 2, ], "no-extra-parens": [ - "off", + 0, ], "no-extra-semi": [ - "off", + 0, ], "no-fallthrough": [ - "error", + 2, + { + "allowEmptyCase": false, + "reportUnusedFallthroughComment": false, + }, ], "no-floating-decimal": [ - "off", + 0, ], "no-func-assign": [ - "error", + 2, ], "no-global-assign": [ - "error", + 2, + { + "exceptions": [], + }, ], "no-implied-eval": [ - "error", + 2, ], "no-import-assign": [ - "error", - ], - "no-inner-declarations": [ - "error", + 2, ], "no-invalid-regexp": [ - "error", + 2, + {}, ], "no-irregular-whitespace": [ - "error", + 2, + { + "skipComments": false, + "skipJSXText": false, + "skipRegExps": false, + "skipStrings": true, + "skipTemplates": false, + }, ], "no-iterator": [ - "error", + 2, ], "no-label-var": [ - "error", + 2, ], "no-labels": [ - "error", + 2, { "allowLoop": false, "allowSwitch": false, }, ], "no-lone-blocks": [ - "error", + 2, ], "no-lonely-if": [ - "error", + 2, ], "no-loop-func": [ - "error", + 2, ], "no-loss-of-precision": [ - "error", + 2, ], "no-misleading-character-class": [ - "error", + 2, + { + "allowEscape": false, + }, ], "no-mixed-operators": [ 0, ], "no-mixed-spaces-and-tabs": [ - "off", + 0, ], "no-multi-assign": [ - "error", + 2, + { + "ignoreNonDeclaration": false, + }, ], "no-multi-spaces": [ - "off", + 0, ], "no-multi-str": [ - "error", + 2, ], "no-multiple-empty-lines": [ - "off", + 0, ], "no-nested-ternary": [ - "error", + 2, ], "no-new": [ - "error", + 2, ], "no-new-func": [ - "error", + 2, ], - "no-new-symbol": [ - "error", + "no-new-native-nonconstructor": [ + 2, ], "no-new-wrappers": [ - "error", + 2, ], "no-nonoctal-decimal-escape": [ - "error", + 2, ], "no-obj-calls": [ - "error", + 2, ], "no-object-constructor": [ - "error", + 2, ], "no-octal": [ - "error", + 2, ], "no-octal-escape": [ - "error", + 2, ], "no-param-reassign": [ - "error", + 2, { "props": false, }, ], "no-plusplus": [ - "error", + 2, + { + "allowForLoopAfterthoughts": false, + }, ], "no-proto": [ - "error", + 2, ], "no-prototype-builtins": [ - "off", + 0, ], "no-redeclare": [ - "error", + 2, + { + "builtinGlobals": true, + }, ], "no-regex-spaces": [ - "error", + 2, ], "no-reserved-keys": [ - "off", + 0, ], "no-restricted-globals": [ - "error", + 2, "isFinite", "isNaN", "addEventListener", @@ -1226,10 +2479,10 @@ exports[`keeps rules stable 1`] = ` "top", ], "no-restricted-imports": [ - "error", + 2, ], "no-restricted-properties": [ - "error", + 2, { "message": "arguments.callee is deprecated", "object": "arguments", @@ -1280,7 +2533,7 @@ exports[`keeps rules stable 1`] = ` }, ], "no-restricted-syntax": [ - "error", + 2, { "message": "for..in loops iterate over the entire prototype chain, which is virtually never what you want. Use Object.{keys,values,entries}, and iterate over the resulting array.", "selector": "ForInStatement", @@ -1307,65 +2560,81 @@ exports[`keeps rules stable 1`] = ` }, ], "no-return-assign": [ - "error", + 2, "except-parens", ], "no-script-url": [ - "error", + 2, ], "no-self-assign": [ - "error", + 2, + { + "props": true, + }, ], "no-self-compare": [ - "error", + 2, ], "no-sequences": [ - "error", + 2, + { + "allowInParentheses": true, + }, ], "no-setter-return": [ - "error", + 2, ], "no-shadow": [ - "error", + 2, { + "allow": [], "builtinGlobals": false, "hoist": "all", + "ignoreFunctionTypeParameterNameValueShadow": true, "ignoreOnInitialization": false, + "ignoreTypeValueShadow": true, }, ], "no-shadow-restricted-names": [ - "error", + 2, + { + "reportGlobalThis": false, + }, ], "no-space-before-semi": [ - "off", + 0, ], "no-spaced-func": [ - "off", + 0, ], "no-sparse-arrays": [ - "error", + 2, ], "no-tabs": [ 0, ], "no-template-curly-in-string": [ - "error", + 2, ], "no-this-before-super": [ - "error", + 2, ], "no-trailing-spaces": [ - "off", + 0, ], "no-undef": [ - "error", + 2, + { + "typeof": false, + }, ], "no-undef-init": [ - "error", + 2, ], "no-underscore-dangle": [ - "error", + 2, { + "allow": [], "allowAfterSuper": true, "allowAfterThis": true, "allowAfterThisConstructor": false, @@ -1380,31 +2649,47 @@ exports[`keeps rules stable 1`] = ` 0, ], "no-unneeded-ternary": [ - "error", + 2, { "defaultAssignment": false, }, ], "no-unreachable": [ - "error", + 2, ], "no-unsafe-finally": [ - "error", + 2, ], "no-unsafe-negation": [ - "error", + 2, + { + "enforceForOrderingRelations": false, + }, ], "no-unsafe-optional-chaining": [ - "error", + 2, + { + "disallowArithmeticOperators": false, + }, ], "no-unused-expressions": [ - "error", + 2, + { + "allowShortCircuit": false, + "allowTaggedTemplates": false, + "allowTernary": false, + "enforceForJSX": false, + "ignoreDirectives": false, + }, ], "no-unused-labels": [ - "error", + 2, + ], + "no-unused-private-class-members": [ + 2, ], "no-unused-vars": [ - "error", + 2, { "args": "after-used", "ignoreRestSiblings": true, @@ -1412,29 +2697,35 @@ exports[`keeps rules stable 1`] = ` }, ], "no-use-before-define": [ - "error", + 2, "nofunc", ], "no-useless-backreference": [ - "error", + 2, ], "no-useless-catch": [ - "error", + 2, ], "no-useless-computed-key": [ - "error", + 2, + { + "enforceForClassMembers": true, + }, ], "no-useless-concat": [ - "error", + 2, ], "no-useless-constructor": [ - "error", + 2, ], "no-useless-escape": [ - "error", + 2, + { + "allowRegexCharacters": [], + }, ], "no-useless-rename": [ - "error", + 2, { "ignoreDestructuring": false, "ignoreExport": false, @@ -1442,40 +2733,40 @@ exports[`keeps rules stable 1`] = ` }, ], "no-useless-return": [ - "error", + 2, ], "no-var": [ - "error", + 2, ], "no-void": [ - "error", + 2, { "allowAsStatement": true, }, ], "no-whitespace-before-property": [ - "off", + 0, ], "no-with": [ - "error", + 2, ], "no-wrap-func": [ - "off", + 0, ], "nonblock-statement-body-position": [ - "off", + 0, ], "object-curly-newline": [ - "off", + 0, ], "object-curly-spacing": [ - "off", + 0, ], "object-property-newline": [ - "off", + 0, ], "object-shorthand": [ - "error", + 2, "always", { "avoidQuotes": true, @@ -1483,47 +2774,47 @@ exports[`keeps rules stable 1`] = ` }, ], "one-var": [ - "error", + 2, "never", ], "one-var-declaration-per-line": [ - "off", + 0, ], "operator-assignment": [ - "error", + 2, "always", ], "operator-linebreak": [ - "off", + 0, ], "padded-blocks": [ - "off", + 0, ], "prefer-arrow-callback": [ - "off", + 2, { "allowNamedFunctions": false, "allowUnboundThis": true, }, ], "prefer-const": [ - "error", + 2, { "destructuring": "any", "ignoreReadBeforeAssign": true, }, ], "prefer-numeric-literals": [ - "error", + 2, ], "prefer-rest-params": [ - "error", + 2, ], "prefer-template": [ - "error", + 2, ], "prettier/prettier": [ - "warn", + 1, { "printWidth": 100, "singleQuote": true, @@ -1534,37 +2825,38 @@ exports[`keeps rules stable 1`] = ` }, ], "quote-props": [ - "off", + 0, ], "quotes": [ 0, ], "radix": [ - "error", + 2, + "always", ], "react-hooks/exhaustive-deps": [ - "error", + 2, ], "react-hooks/rules-of-hooks": [ - "error", + 2, ], "react/destructuring-assignment": [ - "error", + 2, ], "react/display-name": [ - "off", + 0, ], "react/jsx-child-element-spacing": [ - "off", + 0, ], "react/jsx-closing-bracket-location": [ - "off", + 0, ], "react/jsx-closing-tag-location": [ - "off", + 0, ], "react/jsx-curly-brace-presence": [ - "error", + 2, { "children": "never", "propElementValues": "always", @@ -1572,38 +2864,38 @@ exports[`keeps rules stable 1`] = ` }, ], "react/jsx-curly-newline": [ - "off", + 0, ], "react/jsx-curly-spacing": [ - "off", + 0, ], "react/jsx-equals-spacing": [ - "off", + 0, ], "react/jsx-first-prop-new-line": [ - "off", + 0, ], "react/jsx-fragments": [ - "error", + 2, "syntax", ], "react/jsx-indent": [ - "off", + 0, ], "react/jsx-indent-props": [ - "off", + 0, ], "react/jsx-key": [ 2, ], "react/jsx-max-props-per-line": [ - "off", + 0, ], "react/jsx-newline": [ - "off", + 0, ], "react/jsx-no-bind": [ - "error", + 2, { "allowArrowFunctions": true, "allowBind": false, @@ -1625,25 +2917,25 @@ exports[`keeps rules stable 1`] = ` 2, ], "react/jsx-no-useless-fragment": [ - "error", + 2, ], "react/jsx-one-expression-per-line": [ - "off", + 0, ], "react/jsx-pascal-case": [ - "error", + 2, ], "react/jsx-props-no-multi-spaces": [ - "off", + 0, ], "react/jsx-sort-props": [ - "warn", + 1, ], "react/jsx-space-before-closing": [ - "off", + 0, ], "react/jsx-tag-spacing": [ - "off", + 0, ], "react/jsx-uses-react": [ 2, @@ -1652,7 +2944,7 @@ exports[`keeps rules stable 1`] = ` 2, ], "react/jsx-wrap-multilines": [ - "off", + 0, ], "react/no-children-prop": [ 2, @@ -1673,7 +2965,7 @@ exports[`keeps rules stable 1`] = ` 2, ], "react/no-redundant-should-component-update": [ - "error", + 2, ], "react/no-render-return-value": [ 2, @@ -1682,10 +2974,10 @@ exports[`keeps rules stable 1`] = ` 2, ], "react/no-this-in-sfc": [ - "error", + 2, ], "react/no-unescaped-entities": [ - "error", + 2, { "forbid": [ { @@ -1707,19 +2999,19 @@ exports[`keeps rules stable 1`] = ` 2, ], "react/no-unsafe": [ - "error", + 2, ], "react/no-unused-state": [ - "error", + 2, ], "react/prefer-es6-class": [ - "error", + 2, ], "react/prefer-read-only-props": [ - "error", + 2, ], "react/prop-types": [ - "off", + 0, ], "react/react-in-jsx-scope": [ 2, @@ -1728,339 +3020,277 @@ exports[`keeps rules stable 1`] = ` 2, ], "react/self-closing-comp": [ - "error", + 2, ], "react/style-prop-object": [ - "error", + 2, ], "require-yield": [ - "error", + 2, ], "rest-spread-spacing": [ - "off", + 0, ], "semi": [ - "off", + 0, ], "semi-spacing": [ - "off", + 0, ], "semi-style": [ - "off", + 0, ], "sort-imports": [ - "error", + 2, { "allowSeparatedGroups": false, "ignoreCase": true, "ignoreDeclarationSort": true, "ignoreMemberSort": false, + "memberSyntaxSortOrder": [ + "none", + "all", + "multiple", + "single", + ], }, ], "space-after-function-name": [ - "off", + 0, ], "space-after-keywords": [ - "off", + 0, ], "space-before-blocks": [ - "off", + 0, ], "space-before-function-paren": [ - "off", + 0, ], "space-before-function-parentheses": [ - "off", + 0, ], "space-before-keywords": [ - "off", + 0, ], "space-in-brackets": [ - "off", + 0, ], "space-in-parens": [ - "off", + 0, ], "space-infix-ops": [ - "off", + 0, ], "space-return-throw-case": [ - "off", + 0, ], "space-unary-ops": [ - "off", + 0, ], "space-unary-word-ops": [ - "off", + 0, ], "standard/array-bracket-even-spacing": [ - "off", + 0, ], "standard/computed-property-even-spacing": [ - "off", + 0, ], "standard/object-curly-even-spacing": [ - "off", + 0, ], "strict": [ - "error", + 2, + "safe", ], "switch-case/newline-between-switch-case": [ - "warn", + 1, "always", { "fallthrough": "never", }, ], "switch-colon-spacing": [ - "off", + 0, ], "symbol-description": [ - "error", + 2, ], "template-curly-spacing": [ - "off", + 0, ], "template-tag-spacing": [ - "off", - ], - "testing-library/await-async-events": [ - "error", - { - "eventModule": "userEvent", - }, - ], - "testing-library/await-async-queries": [ - "error", - ], - "testing-library/await-async-utils": [ - "error", - ], - "testing-library/no-await-sync-events": [ - "error", - { - "eventModules": [ - "fire-event", - ], - }, - ], - "testing-library/no-await-sync-queries": [ - "error", - ], - "testing-library/no-container": [ - "error", - ], - "testing-library/no-debugging-utils": [ - "warn", - ], - "testing-library/no-dom-import": [ - "error", - "react", - ], - "testing-library/no-global-regexp-flag-in-query": [ - "error", - ], - "testing-library/no-manual-cleanup": [ - "error", - ], - "testing-library/no-node-access": [ - "error", - ], - "testing-library/no-promise-in-fire-event": [ - "error", - ], - "testing-library/no-render-in-lifecycle": [ - "off", - ], - "testing-library/no-unnecessary-act": [ - "error", - ], - "testing-library/no-wait-for-multiple-assertions": [ - "error", - ], - "testing-library/no-wait-for-side-effects": [ - "error", - ], - "testing-library/no-wait-for-snapshot": [ - "error", - ], - "testing-library/prefer-find-by": [ - "error", - ], - "testing-library/prefer-presence-queries": [ - "error", - ], - "testing-library/prefer-query-by-disappearance": [ - "error", - ], - "testing-library/prefer-screen-queries": [ - "error", - ], - "testing-library/render-result-naming-convention": [ - "error", + 0, ], "unicorn/empty-brace-spaces": [ - "off", + 0, ], "unicorn/no-nested-ternary": [ - "off", + 0, ], "unicorn/number-literal-case": [ - "off", + 0, ], "unicorn/template-indent": [ 0, ], "use-isnan": [ - "error", + 2, + { + "enforceForIndexOf": false, + "enforceForSwitchCase": true, + }, ], "valid-jsdoc": [ - "off", + 0, { "requireParamDescription": false, - "requireParamType": true, - "requireReturn": true, "requireReturnDescription": false, - "requireReturnType": true, }, ], "valid-typeof": [ - "error", + 2, { "requireStringLiterals": true, }, ], "vars-on-top": [ - "error", + 2, ], "vue/array-bracket-newline": [ - "off", + 0, ], "vue/array-bracket-spacing": [ - "off", + 0, ], "vue/array-element-newline": [ - "off", + 0, ], "vue/arrow-spacing": [ - "off", + 0, ], "vue/block-spacing": [ - "off", + 0, ], "vue/block-tag-newline": [ - "off", + 0, ], "vue/brace-style": [ - "off", + 0, ], "vue/comma-dangle": [ - "off", + 0, ], "vue/comma-spacing": [ - "off", + 0, ], "vue/comma-style": [ - "off", + 0, ], "vue/dot-location": [ - "off", + 0, ], "vue/func-call-spacing": [ - "off", + 0, ], "vue/html-closing-bracket-newline": [ - "off", + 0, ], "vue/html-closing-bracket-spacing": [ - "off", + 0, ], "vue/html-end-tags": [ - "off", + 0, ], "vue/html-indent": [ - "off", + 0, ], "vue/html-quotes": [ - "off", + 0, ], "vue/html-self-closing": [ 0, ], "vue/key-spacing": [ - "off", + 0, ], "vue/keyword-spacing": [ - "off", + 0, ], "vue/max-attributes-per-line": [ - "off", + 0, ], "vue/max-len": [ 0, ], "vue/multiline-html-element-content-newline": [ - "off", + 0, ], "vue/multiline-ternary": [ - "off", + 0, ], "vue/mustache-interpolation-spacing": [ - "off", + 0, ], "vue/no-extra-parens": [ - "off", + 0, ], "vue/no-multi-spaces": [ - "off", + 0, ], "vue/no-spaces-around-equal-signs-in-attribute": [ - "off", + 0, ], "vue/object-curly-newline": [ - "off", + 0, ], "vue/object-curly-spacing": [ - "off", + 0, ], "vue/object-property-newline": [ - "off", + 0, ], "vue/operator-linebreak": [ - "off", + 0, ], "vue/quote-props": [ - "off", + 0, ], "vue/script-indent": [ - "off", + 0, ], "vue/singleline-html-element-content-newline": [ - "off", + 0, ], "vue/space-in-parens": [ - "off", + 0, ], "vue/space-infix-ops": [ - "off", + 0, ], "vue/space-unary-ops": [ - "off", + 0, ], "vue/template-curly-spacing": [ - "off", + 0, ], "wrap-iife": [ - "off", + 0, ], "wrap-regex": [ - "off", + 0, ], "yield-star-spacing": [ - "off", + 0, ], "yoda": [ - "error", + 2, + "never", + { + "exceptRange": false, + "onlyEquality": false, + }, ], }, "settings": { diff --git a/packages/eslint-config/test/__snapshots__/ts.spec.js.snap b/packages/eslint-config/test/__snapshots__/ts.spec.js.snap index 39d6132..ca7f3b2 100644 --- a/packages/eslint-config/test/__snapshots__/ts.spec.js.snap +++ b/packages/eslint-config/test/__snapshots__/ts.spec.js.snap @@ -2,48 +2,1235 @@ exports[`keeps rules stable 1`] = ` { - "env": { - "browser": true, - "es6": true, - }, - "globals": {}, - "ignorePatterns": [], - "noInlineConfig": undefined, - "parser": "/node_modules/@typescript-eslint/parser/dist/index.js", - "parserOptions": { - "ecmaFeatures": { - "jsx": true, + "language": "@/js", + "languageOptions": { + "ecmaVersion": 2026, + "globals": { + "AI": false, + "AITextSession": false, + "AbortController": false, + "AbortSignal": false, + "AbsoluteOrientationSensor": false, + "AbstractRange": false, + "Accelerometer": false, + "AggregateError": false, + "AnalyserNode": false, + "Animation": false, + "AnimationEffect": false, + "AnimationEvent": false, + "AnimationPlaybackEvent": false, + "AnimationTimeline": false, + "Array": false, + "ArrayBuffer": false, + "Atomics": false, + "Attr": false, + "Audio": false, + "AudioBuffer": false, + "AudioBufferSourceNode": false, + "AudioContext": false, + "AudioData": false, + "AudioDecoder": false, + "AudioDestinationNode": false, + "AudioEncoder": false, + "AudioListener": false, + "AudioNode": false, + "AudioParam": false, + "AudioParamMap": false, + "AudioProcessingEvent": false, + "AudioScheduledSourceNode": false, + "AudioSinkInfo": false, + "AudioWorklet": false, + "AudioWorkletGlobalScope": false, + "AudioWorkletNode": false, + "AudioWorkletProcessor": false, + "AuthenticatorAssertionResponse": false, + "AuthenticatorAttestationResponse": false, + "AuthenticatorResponse": false, + "BackgroundFetchManager": false, + "BackgroundFetchRecord": false, + "BackgroundFetchRegistration": false, + "BarProp": false, + "BarcodeDetector": false, + "BaseAudioContext": false, + "BatteryManager": false, + "BeforeUnloadEvent": false, + "BigInt": false, + "BigInt64Array": false, + "BigUint64Array": false, + "BiquadFilterNode": false, + "Blob": false, + "BlobEvent": false, + "Bluetooth": false, + "BluetoothCharacteristicProperties": false, + "BluetoothDevice": false, + "BluetoothRemoteGATTCharacteristic": false, + "BluetoothRemoteGATTDescriptor": false, + "BluetoothRemoteGATTServer": false, + "BluetoothRemoteGATTService": false, + "BluetoothUUID": false, + "Boolean": false, + "BroadcastChannel": false, + "BrowserCaptureMediaStreamTrack": false, + "ByteLengthQueuingStrategy": false, + "CDATASection": false, + "CSS": false, + "CSSAnimation": false, + "CSSConditionRule": false, + "CSSContainerRule": false, + "CSSCounterStyleRule": false, + "CSSFontFaceRule": false, + "CSSFontFeatureValuesRule": false, + "CSSFontPaletteValuesRule": false, + "CSSGroupingRule": false, + "CSSImageValue": false, + "CSSImportRule": false, + "CSSKeyframeRule": false, + "CSSKeyframesRule": false, + "CSSKeywordValue": false, + "CSSLayerBlockRule": false, + "CSSLayerStatementRule": false, + "CSSMarginRule": false, + "CSSMathClamp": false, + "CSSMathInvert": false, + "CSSMathMax": false, + "CSSMathMin": false, + "CSSMathNegate": false, + "CSSMathProduct": false, + "CSSMathSum": false, + "CSSMathValue": false, + "CSSMatrixComponent": false, + "CSSMediaRule": false, + "CSSNamespaceRule": false, + "CSSNestedDeclarations": false, + "CSSNumericArray": false, + "CSSNumericValue": false, + "CSSPageDescriptors": false, + "CSSPageRule": false, + "CSSPerspective": false, + "CSSPositionTryDescriptors": false, + "CSSPositionTryRule": false, + "CSSPositionValue": false, + "CSSPropertyRule": false, + "CSSRotate": false, + "CSSRule": false, + "CSSRuleList": false, + "CSSScale": false, + "CSSScopeRule": false, + "CSSSkew": false, + "CSSSkewX": false, + "CSSSkewY": false, + "CSSStartingStyleRule": false, + "CSSStyleDeclaration": false, + "CSSStyleRule": false, + "CSSStyleSheet": false, + "CSSStyleValue": false, + "CSSSupportsRule": false, + "CSSTransformComponent": false, + "CSSTransformValue": false, + "CSSTransition": false, + "CSSTranslate": false, + "CSSUnitValue": false, + "CSSUnparsedValue": false, + "CSSVariableReferenceValue": false, + "CSSViewTransitionRule": false, + "Cache": false, + "CacheStorage": false, + "CanvasCaptureMediaStream": false, + "CanvasCaptureMediaStreamTrack": false, + "CanvasGradient": false, + "CanvasPattern": false, + "CanvasRenderingContext2D": false, + "CaptureController": false, + "CaretPosition": false, + "ChannelMergerNode": false, + "ChannelSplitterNode": false, + "ChapterInformation": false, + "CharacterBoundsUpdateEvent": false, + "CharacterData": false, + "Clipboard": false, + "ClipboardEvent": false, + "ClipboardItem": false, + "CloseEvent": false, + "CloseWatcher": false, + "Comment": false, + "CompositionEvent": false, + "CompressionStream": false, + "ConstantSourceNode": false, + "ContentVisibilityAutoStateChangeEvent": false, + "ConvolverNode": false, + "CookieChangeEvent": false, + "CookieDeprecationLabel": false, + "CookieStore": false, + "CookieStoreManager": false, + "CountQueuingStrategy": false, + "Credential": false, + "CredentialsContainer": false, + "CropTarget": false, + "Crypto": false, + "CryptoKey": false, + "CustomElementRegistry": false, + "CustomEvent": false, + "CustomStateSet": false, + "DOMError": false, + "DOMException": false, + "DOMImplementation": false, + "DOMMatrix": false, + "DOMMatrixReadOnly": false, + "DOMParser": false, + "DOMPoint": false, + "DOMPointReadOnly": false, + "DOMQuad": false, + "DOMRect": false, + "DOMRectList": false, + "DOMRectReadOnly": false, + "DOMStringList": false, + "DOMStringMap": false, + "DOMTokenList": false, + "DataTransfer": false, + "DataTransferItem": false, + "DataTransferItemList": false, + "DataView": false, + "Date": false, + "DecompressionStream": false, + "DelayNode": false, + "DelegatedInkTrailPresenter": false, + "DeviceMotionEvent": false, + "DeviceMotionEventAcceleration": false, + "DeviceMotionEventRotationRate": false, + "DeviceOrientationEvent": false, + "Document": false, + "DocumentFragment": false, + "DocumentPictureInPicture": false, + "DocumentPictureInPictureEvent": false, + "DocumentTimeline": false, + "DocumentType": false, + "DragEvent": false, + "DynamicsCompressorNode": false, + "EditContext": false, + "Element": false, + "ElementInternals": false, + "EncodedAudioChunk": false, + "EncodedVideoChunk": false, + "Error": false, + "ErrorEvent": false, + "EvalError": false, + "Event": false, + "EventCounts": false, + "EventSource": false, + "EventTarget": false, + "External": false, + "EyeDropper": false, + "FeaturePolicy": false, + "FederatedCredential": false, + "Fence": false, + "FencedFrameConfig": false, + "FetchLaterResult": false, + "File": false, + "FileList": false, + "FileReader": false, + "FileSystem": false, + "FileSystemDirectoryEntry": false, + "FileSystemDirectoryHandle": false, + "FileSystemDirectoryReader": false, + "FileSystemEntry": false, + "FileSystemFileEntry": false, + "FileSystemFileHandle": false, + "FileSystemHandle": false, + "FileSystemWritableFileStream": false, + "FinalizationRegistry": false, + "Float16Array": false, + "Float32Array": false, + "Float64Array": false, + "FocusEvent": false, + "FontData": false, + "FontFace": false, + "FontFaceSet": false, + "FontFaceSetLoadEvent": false, + "FormData": false, + "FormDataEvent": false, + "FragmentDirective": false, + "Function": false, + "GPU": false, + "GPUAdapter": false, + "GPUAdapterInfo": false, + "GPUBindGroup": false, + "GPUBindGroupLayout": false, + "GPUBuffer": false, + "GPUBufferUsage": false, + "GPUCanvasContext": false, + "GPUColorWrite": false, + "GPUCommandBuffer": false, + "GPUCommandEncoder": false, + "GPUCompilationInfo": false, + "GPUCompilationMessage": false, + "GPUComputePassEncoder": false, + "GPUComputePipeline": false, + "GPUDevice": false, + "GPUDeviceLostInfo": false, + "GPUError": false, + "GPUExternalTexture": false, + "GPUInternalError": false, + "GPUMapMode": false, + "GPUOutOfMemoryError": false, + "GPUPipelineError": false, + "GPUPipelineLayout": false, + "GPUQuerySet": false, + "GPUQueue": false, + "GPURenderBundle": false, + "GPURenderBundleEncoder": false, + "GPURenderPassEncoder": false, + "GPURenderPipeline": false, + "GPUSampler": false, + "GPUShaderModule": false, + "GPUShaderStage": false, + "GPUSupportedFeatures": false, + "GPUSupportedLimits": false, + "GPUTexture": false, + "GPUTextureUsage": false, + "GPUTextureView": false, + "GPUUncapturedErrorEvent": false, + "GPUValidationError": false, + "GainNode": false, + "Gamepad": false, + "GamepadAxisMoveEvent": false, + "GamepadButton": false, + "GamepadButtonEvent": false, + "GamepadEvent": false, + "GamepadHapticActuator": false, + "GamepadPose": false, + "Geolocation": false, + "GeolocationCoordinates": false, + "GeolocationPosition": false, + "GeolocationPositionError": false, + "GravitySensor": false, + "Gyroscope": false, + "HID": false, + "HIDConnectionEvent": false, + "HIDDevice": false, + "HIDInputReportEvent": false, + "HTMLAllCollection": false, + "HTMLAnchorElement": false, + "HTMLAreaElement": false, + "HTMLAudioElement": false, + "HTMLBRElement": false, + "HTMLBaseElement": false, + "HTMLBodyElement": false, + "HTMLButtonElement": false, + "HTMLCanvasElement": false, + "HTMLCollection": false, + "HTMLDListElement": false, + "HTMLDataElement": false, + "HTMLDataListElement": false, + "HTMLDetailsElement": false, + "HTMLDialogElement": false, + "HTMLDirectoryElement": false, + "HTMLDivElement": false, + "HTMLDocument": false, + "HTMLElement": false, + "HTMLEmbedElement": false, + "HTMLFencedFrameElement": false, + "HTMLFieldSetElement": false, + "HTMLFontElement": false, + "HTMLFormControlsCollection": false, + "HTMLFormElement": false, + "HTMLFrameElement": false, + "HTMLFrameSetElement": false, + "HTMLHRElement": false, + "HTMLHeadElement": false, + "HTMLHeadingElement": false, + "HTMLHtmlElement": false, + "HTMLIFrameElement": false, + "HTMLImageElement": false, + "HTMLInputElement": false, + "HTMLLIElement": false, + "HTMLLabelElement": false, + "HTMLLegendElement": false, + "HTMLLinkElement": false, + "HTMLMapElement": false, + "HTMLMarqueeElement": false, + "HTMLMediaElement": false, + "HTMLMenuElement": false, + "HTMLMetaElement": false, + "HTMLMeterElement": false, + "HTMLModElement": false, + "HTMLOListElement": false, + "HTMLObjectElement": false, + "HTMLOptGroupElement": false, + "HTMLOptionElement": false, + "HTMLOptionsCollection": false, + "HTMLOutputElement": false, + "HTMLParagraphElement": false, + "HTMLParamElement": false, + "HTMLPictureElement": false, + "HTMLPreElement": false, + "HTMLProgressElement": false, + "HTMLQuoteElement": false, + "HTMLScriptElement": false, + "HTMLSelectElement": false, + "HTMLSlotElement": false, + "HTMLSourceElement": false, + "HTMLSpanElement": false, + "HTMLStyleElement": false, + "HTMLTableCaptionElement": false, + "HTMLTableCellElement": false, + "HTMLTableColElement": false, + "HTMLTableElement": false, + "HTMLTableRowElement": false, + "HTMLTableSectionElement": false, + "HTMLTemplateElement": false, + "HTMLTextAreaElement": false, + "HTMLTimeElement": false, + "HTMLTitleElement": false, + "HTMLTrackElement": false, + "HTMLUListElement": false, + "HTMLUnknownElement": false, + "HTMLVideoElement": false, + "HashChangeEvent": false, + "Headers": false, + "Highlight": false, + "HighlightRegistry": false, + "History": false, + "IDBCursor": false, + "IDBCursorWithValue": false, + "IDBDatabase": false, + "IDBFactory": false, + "IDBIndex": false, + "IDBKeyRange": false, + "IDBObjectStore": false, + "IDBOpenDBRequest": false, + "IDBRequest": false, + "IDBTransaction": false, + "IDBVersionChangeEvent": false, + "IIRFilterNode": false, + "IdentityCredential": false, + "IdentityCredentialError": false, + "IdentityProvider": false, + "IdleDeadline": false, + "IdleDetector": false, + "Image": false, + "ImageBitmap": false, + "ImageBitmapRenderingContext": false, + "ImageCapture": false, + "ImageData": false, + "ImageDecoder": false, + "ImageTrack": false, + "ImageTrackList": false, + "Infinity": false, + "Ink": false, + "InputDeviceCapabilities": false, + "InputDeviceInfo": false, + "InputEvent": false, + "Int16Array": false, + "Int32Array": false, + "Int8Array": false, + "IntersectionObserver": false, + "IntersectionObserverEntry": false, + "Intl": false, + "JSON": false, + "Keyboard": false, + "KeyboardEvent": false, + "KeyboardLayoutMap": false, + "KeyframeEffect": false, + "LargestContentfulPaint": false, + "LaunchParams": false, + "LaunchQueue": false, + "LayoutShift": false, + "LayoutShiftAttribution": false, + "LinearAccelerationSensor": false, + "Location": false, + "Lock": false, + "LockManager": false, + "MIDIAccess": false, + "MIDIConnectionEvent": false, + "MIDIInput": false, + "MIDIInputMap": false, + "MIDIMessageEvent": false, + "MIDIOutput": false, + "MIDIOutputMap": false, + "MIDIPort": false, + "Map": false, + "Math": false, + "MathMLElement": false, + "MediaCapabilities": false, + "MediaCapabilitiesInfo": false, + "MediaDeviceInfo": false, + "MediaDevices": false, + "MediaElementAudioSourceNode": false, + "MediaEncryptedEvent": false, + "MediaError": false, + "MediaKeyError": false, + "MediaKeyMessageEvent": false, + "MediaKeySession": false, + "MediaKeyStatusMap": false, + "MediaKeySystemAccess": false, + "MediaKeys": false, + "MediaList": false, + "MediaMetadata": false, + "MediaQueryList": false, + "MediaQueryListEvent": false, + "MediaRecorder": false, + "MediaRecorderErrorEvent": false, + "MediaSession": false, + "MediaSource": false, + "MediaSourceHandle": false, + "MediaStream": false, + "MediaStreamAudioDestinationNode": false, + "MediaStreamAudioSourceNode": false, + "MediaStreamEvent": false, + "MediaStreamTrack": false, + "MediaStreamTrackAudioSourceNode": false, + "MediaStreamTrackAudioStats": false, + "MediaStreamTrackEvent": false, + "MediaStreamTrackGenerator": false, + "MediaStreamTrackProcessor": false, + "MediaStreamTrackVideoStats": false, + "MessageChannel": false, + "MessageEvent": false, + "MessagePort": false, + "MimeType": false, + "MimeTypeArray": false, + "ModelGenericSession": false, + "ModelManager": false, + "MouseEvent": false, + "MutationEvent": false, + "MutationObserver": false, + "MutationRecord": false, + "NaN": false, + "NamedNodeMap": false, + "NavigateEvent": false, + "Navigation": false, + "NavigationActivation": false, + "NavigationCurrentEntryChangeEvent": false, + "NavigationDestination": false, + "NavigationHistoryEntry": false, + "NavigationPreloadManager": false, + "NavigationTransition": false, + "Navigator": false, + "NavigatorLogin": false, + "NavigatorManagedData": false, + "NavigatorUAData": false, + "NetworkInformation": false, + "Node": false, + "NodeFilter": false, + "NodeIterator": false, + "NodeList": false, + "NotRestoredReasonDetails": false, + "NotRestoredReasons": false, + "Notification": false, + "NotifyPaintEvent": false, + "Number": false, + "OTPCredential": false, + "Object": false, + "OfflineAudioCompletionEvent": false, + "OfflineAudioContext": false, + "OffscreenCanvas": false, + "OffscreenCanvasRenderingContext2D": false, + "Option": false, + "OrientationSensor": false, + "OscillatorNode": false, + "OverconstrainedError": false, + "PERSISTENT": false, + "PageRevealEvent": false, + "PageSwapEvent": false, + "PageTransitionEvent": false, + "PannerNode": false, + "PasswordCredential": false, + "Path2D": false, + "PaymentAddress": false, + "PaymentManager": false, + "PaymentMethodChangeEvent": false, + "PaymentRequest": false, + "PaymentRequestUpdateEvent": false, + "PaymentResponse": false, + "Performance": false, + "PerformanceElementTiming": false, + "PerformanceEntry": false, + "PerformanceEventTiming": false, + "PerformanceLongAnimationFrameTiming": false, + "PerformanceLongTaskTiming": false, + "PerformanceMark": false, + "PerformanceMeasure": false, + "PerformanceNavigation": false, + "PerformanceNavigationTiming": false, + "PerformanceObserver": false, + "PerformanceObserverEntryList": false, + "PerformancePaintTiming": false, + "PerformanceResourceTiming": false, + "PerformanceScriptTiming": false, + "PerformanceServerTiming": false, + "PerformanceTiming": false, + "PeriodicSyncManager": false, + "PeriodicWave": false, + "PermissionStatus": false, + "Permissions": false, + "PictureInPictureEvent": false, + "PictureInPictureWindow": false, + "Plugin": false, + "PluginArray": false, + "PointerEvent": false, + "PopStateEvent": false, + "Presentation": false, + "PresentationAvailability": false, + "PresentationConnection": false, + "PresentationConnectionAvailableEvent": false, + "PresentationConnectionCloseEvent": false, + "PresentationConnectionList": false, + "PresentationReceiver": false, + "PresentationRequest": false, + "PressureObserver": false, + "PressureRecord": false, + "ProcessingInstruction": false, + "Profiler": false, + "ProgressEvent": false, + "Promise": false, + "PromiseRejectionEvent": false, + "ProtectedAudience": false, + "Proxy": false, + "PublicKeyCredential": false, + "PushManager": false, + "PushSubscription": false, + "PushSubscriptionOptions": false, + "RTCCertificate": false, + "RTCDTMFSender": false, + "RTCDTMFToneChangeEvent": false, + "RTCDataChannel": false, + "RTCDataChannelEvent": false, + "RTCDtlsTransport": false, + "RTCEncodedAudioFrame": false, + "RTCEncodedVideoFrame": false, + "RTCError": false, + "RTCErrorEvent": false, + "RTCIceCandidate": false, + "RTCIceTransport": false, + "RTCPeerConnection": false, + "RTCPeerConnectionIceErrorEvent": false, + "RTCPeerConnectionIceEvent": false, + "RTCRtpReceiver": false, + "RTCRtpScriptTransform": false, + "RTCRtpSender": false, + "RTCRtpTransceiver": false, + "RTCSctpTransport": false, + "RTCSessionDescription": false, + "RTCStatsReport": false, + "RTCTrackEvent": false, + "RadioNodeList": false, + "Range": false, + "RangeError": false, + "ReadableByteStreamController": false, + "ReadableStream": false, + "ReadableStreamBYOBReader": false, + "ReadableStreamBYOBRequest": false, + "ReadableStreamDefaultController": false, + "ReadableStreamDefaultReader": false, + "ReferenceError": false, + "Reflect": false, + "RegExp": false, + "RelativeOrientationSensor": false, + "RemotePlayback": false, + "ReportingObserver": false, + "Request": false, + "ResizeObserver": false, + "ResizeObserverEntry": false, + "ResizeObserverSize": false, + "Response": false, + "SVGAElement": false, + "SVGAngle": false, + "SVGAnimateElement": false, + "SVGAnimateMotionElement": false, + "SVGAnimateTransformElement": false, + "SVGAnimatedAngle": false, + "SVGAnimatedBoolean": false, + "SVGAnimatedEnumeration": false, + "SVGAnimatedInteger": false, + "SVGAnimatedLength": false, + "SVGAnimatedLengthList": false, + "SVGAnimatedNumber": false, + "SVGAnimatedNumberList": false, + "SVGAnimatedPreserveAspectRatio": false, + "SVGAnimatedRect": false, + "SVGAnimatedString": false, + "SVGAnimatedTransformList": false, + "SVGAnimationElement": false, + "SVGCircleElement": false, + "SVGClipPathElement": false, + "SVGComponentTransferFunctionElement": false, + "SVGDefsElement": false, + "SVGDescElement": false, + "SVGElement": false, + "SVGEllipseElement": false, + "SVGFEBlendElement": false, + "SVGFEColorMatrixElement": false, + "SVGFEComponentTransferElement": false, + "SVGFECompositeElement": false, + "SVGFEConvolveMatrixElement": false, + "SVGFEDiffuseLightingElement": false, + "SVGFEDisplacementMapElement": false, + "SVGFEDistantLightElement": false, + "SVGFEDropShadowElement": false, + "SVGFEFloodElement": false, + "SVGFEFuncAElement": false, + "SVGFEFuncBElement": false, + "SVGFEFuncGElement": false, + "SVGFEFuncRElement": false, + "SVGFEGaussianBlurElement": false, + "SVGFEImageElement": false, + "SVGFEMergeElement": false, + "SVGFEMergeNodeElement": false, + "SVGFEMorphologyElement": false, + "SVGFEOffsetElement": false, + "SVGFEPointLightElement": false, + "SVGFESpecularLightingElement": false, + "SVGFESpotLightElement": false, + "SVGFETileElement": false, + "SVGFETurbulenceElement": false, + "SVGFilterElement": false, + "SVGForeignObjectElement": false, + "SVGGElement": false, + "SVGGeometryElement": false, + "SVGGradientElement": false, + "SVGGraphicsElement": false, + "SVGImageElement": false, + "SVGLength": false, + "SVGLengthList": false, + "SVGLineElement": false, + "SVGLinearGradientElement": false, + "SVGMPathElement": false, + "SVGMarkerElement": false, + "SVGMaskElement": false, + "SVGMatrix": false, + "SVGMetadataElement": false, + "SVGNumber": false, + "SVGNumberList": false, + "SVGPathElement": false, + "SVGPatternElement": false, + "SVGPoint": false, + "SVGPointList": false, + "SVGPolygonElement": false, + "SVGPolylineElement": false, + "SVGPreserveAspectRatio": false, + "SVGRadialGradientElement": false, + "SVGRect": false, + "SVGRectElement": false, + "SVGSVGElement": false, + "SVGScriptElement": false, + "SVGSetElement": false, + "SVGStopElement": false, + "SVGStringList": false, + "SVGStyleElement": false, + "SVGSwitchElement": false, + "SVGSymbolElement": false, + "SVGTSpanElement": false, + "SVGTextContentElement": false, + "SVGTextElement": false, + "SVGTextPathElement": false, + "SVGTextPositioningElement": false, + "SVGTitleElement": false, + "SVGTransform": false, + "SVGTransformList": false, + "SVGUnitTypes": false, + "SVGUseElement": false, + "SVGViewElement": false, + "Scheduler": false, + "Scheduling": false, + "Screen": false, + "ScreenDetailed": false, + "ScreenDetails": false, + "ScreenOrientation": false, + "ScriptProcessorNode": false, + "ScrollTimeline": false, + "SecurityPolicyViolationEvent": false, + "Selection": false, + "Sensor": false, + "SensorErrorEvent": false, + "Serial": false, + "SerialPort": false, + "ServiceWorker": false, + "ServiceWorkerContainer": false, + "ServiceWorkerRegistration": false, + "Set": false, + "ShadowRoot": false, + "SharedArrayBuffer": false, + "SharedStorage": false, + "SharedStorageWorklet": false, + "SharedWorker": false, + "SnapEvent": false, + "SourceBuffer": false, + "SourceBufferList": false, + "SpeechSynthesis": false, + "SpeechSynthesisErrorEvent": false, + "SpeechSynthesisEvent": false, + "SpeechSynthesisUtterance": false, + "SpeechSynthesisVoice": false, + "StaticRange": false, + "StereoPannerNode": false, + "Storage": false, + "StorageBucket": false, + "StorageBucketManager": false, + "StorageEvent": false, + "StorageManager": false, + "String": false, + "StylePropertyMap": false, + "StylePropertyMapReadOnly": false, + "StyleSheet": false, + "StyleSheetList": false, + "SubmitEvent": false, + "SubtleCrypto": false, + "Symbol": false, + "SyncManager": false, + "SyntaxError": false, + "TEMPORARY": false, + "TaskAttributionTiming": false, + "TaskController": false, + "TaskPriorityChangeEvent": false, + "TaskSignal": false, + "Text": false, + "TextDecoder": false, + "TextDecoderStream": false, + "TextEncoder": false, + "TextEncoderStream": false, + "TextEvent": false, + "TextFormat": false, + "TextFormatUpdateEvent": false, + "TextMetrics": false, + "TextTrack": false, + "TextTrackCue": false, + "TextTrackCueList": false, + "TextTrackList": false, + "TextUpdateEvent": false, + "TimeEvent": false, + "TimeRanges": false, + "ToggleEvent": false, + "Touch": false, + "TouchEvent": false, + "TouchList": false, + "TrackEvent": false, + "TransformStream": false, + "TransformStreamDefaultController": false, + "TransitionEvent": false, + "TreeWalker": false, + "TrustedHTML": false, + "TrustedScript": false, + "TrustedScriptURL": false, + "TrustedTypePolicy": false, + "TrustedTypePolicyFactory": false, + "TypeError": false, + "UIEvent": false, + "URIError": false, + "URL": false, + "URLPattern": false, + "URLSearchParams": false, + "USB": false, + "USBAlternateInterface": false, + "USBConfiguration": false, + "USBConnectionEvent": false, + "USBDevice": false, + "USBEndpoint": false, + "USBInTransferResult": false, + "USBInterface": false, + "USBIsochronousInTransferPacket": false, + "USBIsochronousInTransferResult": false, + "USBIsochronousOutTransferPacket": false, + "USBIsochronousOutTransferResult": false, + "USBOutTransferResult": false, + "Uint16Array": false, + "Uint32Array": false, + "Uint8Array": false, + "Uint8ClampedArray": false, + "UserActivation": false, + "VTTCue": false, + "VTTRegion": false, + "ValidityState": false, + "VideoColorSpace": false, + "VideoDecoder": false, + "VideoEncoder": false, + "VideoFrame": false, + "VideoPlaybackQuality": false, + "ViewTimeline": false, + "ViewTransition": false, + "ViewTransitionTypeSet": false, + "VirtualKeyboard": false, + "VirtualKeyboardGeometryChangeEvent": false, + "VisibilityStateEntry": false, + "VisualViewport": false, + "WGSLLanguageFeatures": false, + "WakeLock": false, + "WakeLockSentinel": false, + "WaveShaperNode": false, + "WeakMap": false, + "WeakRef": false, + "WeakSet": false, + "WebAssembly": false, + "WebGL2RenderingContext": false, + "WebGLActiveInfo": false, + "WebGLBuffer": false, + "WebGLContextEvent": false, + "WebGLFramebuffer": false, + "WebGLObject": false, + "WebGLProgram": false, + "WebGLQuery": false, + "WebGLRenderbuffer": false, + "WebGLRenderingContext": false, + "WebGLSampler": false, + "WebGLShader": false, + "WebGLShaderPrecisionFormat": false, + "WebGLSync": false, + "WebGLTexture": false, + "WebGLTransformFeedback": false, + "WebGLUniformLocation": false, + "WebGLVertexArrayObject": false, + "WebSocket": false, + "WebSocketError": false, + "WebSocketStream": false, + "WebTransport": false, + "WebTransportBidirectionalStream": false, + "WebTransportDatagramDuplexStream": false, + "WebTransportError": false, + "WebTransportReceiveStream": false, + "WebTransportSendStream": false, + "WheelEvent": false, + "Window": false, + "WindowControlsOverlay": false, + "WindowControlsOverlayGeometryChangeEvent": false, + "Worker": false, + "Worklet": false, + "WorkletGlobalScope": false, + "WritableStream": false, + "WritableStreamDefaultController": false, + "WritableStreamDefaultWriter": false, + "XMLDocument": false, + "XMLHttpRequest": false, + "XMLHttpRequestEventTarget": false, + "XMLHttpRequestUpload": false, + "XMLSerializer": false, + "XPathEvaluator": false, + "XPathExpression": false, + "XPathResult": false, + "XRAnchor": false, + "XRAnchorSet": false, + "XRBoundedReferenceSpace": false, + "XRCPUDepthInformation": false, + "XRCamera": false, + "XRDOMOverlayState": false, + "XRDepthInformation": false, + "XRFrame": false, + "XRHand": false, + "XRHitTestResult": false, + "XRHitTestSource": false, + "XRInputSource": false, + "XRInputSourceArray": false, + "XRInputSourceEvent": false, + "XRInputSourcesChangeEvent": false, + "XRJointPose": false, + "XRJointSpace": false, + "XRLayer": false, + "XRLightEstimate": false, + "XRLightProbe": false, + "XRPose": false, + "XRRay": false, + "XRReferenceSpace": false, + "XRReferenceSpaceEvent": false, + "XRRenderState": false, + "XRRigidTransform": false, + "XRSession": false, + "XRSessionEvent": false, + "XRSpace": false, + "XRSystem": false, + "XRTransientInputHitTestResult": false, + "XRTransientInputHitTestSource": false, + "XRView": false, + "XRViewerPose": false, + "XRViewport": false, + "XRWebGLBinding": false, + "XRWebGLDepthInformation": false, + "XRWebGLLayer": false, + "XSLTProcessor": false, + "addEventListener": false, + "ai": false, + "alert": false, + "atob": false, + "blur": false, + "btoa": false, + "caches": false, + "cancelAnimationFrame": false, + "cancelIdleCallback": false, + "clearInterval": false, + "clearTimeout": false, + "clientInformation": false, + "close": false, + "closed": false, + "confirm": false, + "console": false, + "cookieStore": false, + "createImageBitmap": false, + "credentialless": false, + "crossOriginIsolated": false, + "crypto": false, + "currentFrame": false, + "currentTime": false, + "customElements": false, + "decodeURI": false, + "decodeURIComponent": false, + "devicePixelRatio": false, + "dispatchEvent": false, + "document": false, + "documentPictureInPicture": false, + "encodeURI": false, + "encodeURIComponent": false, + "escape": false, + "eval": false, + "event": false, + "external": false, + "fence": false, + "fetch": false, + "fetchLater": false, + "find": false, + "focus": false, + "frameElement": false, + "frames": false, + "getComputedStyle": false, + "getScreenDetails": false, + "getSelection": false, + "globalThis": false, + "history": false, + "indexedDB": false, + "innerHeight": false, + "innerWidth": false, + "isFinite": false, + "isNaN": false, + "isSecureContext": false, + "launchQueue": false, + "length": false, + "localStorage": false, + "location": true, + "locationbar": false, + "matchMedia": false, + "menubar": false, + "model": false, + "moveBy": false, + "moveTo": false, + "name": false, + "navigation": false, + "navigator": false, + "offscreenBuffering": false, + "onabort": true, + "onafterprint": true, + "onanimationcancel": true, + "onanimationend": true, + "onanimationiteration": true, + "onanimationstart": true, + "onappinstalled": true, + "onauxclick": true, + "onbeforeinput": true, + "onbeforeinstallprompt": true, + "onbeforematch": true, + "onbeforeprint": true, + "onbeforetoggle": true, + "onbeforeunload": true, + "onbeforexrselect": true, + "onblur": true, + "oncancel": true, + "oncanplay": true, + "oncanplaythrough": true, + "onchange": true, + "onclick": true, + "onclose": true, + "oncontentvisibilityautostatechange": true, + "oncontextlost": true, + "oncontextmenu": true, + "oncontextrestored": true, + "oncopy": true, + "oncuechange": true, + "oncut": true, + "ondblclick": true, + "ondevicemotion": true, + "ondeviceorientation": true, + "ondeviceorientationabsolute": true, + "ondrag": true, + "ondragend": true, + "ondragenter": true, + "ondragleave": true, + "ondragover": true, + "ondragstart": true, + "ondrop": true, + "ondurationchange": true, + "onemptied": true, + "onended": true, + "onerror": true, + "onfocus": true, + "onformdata": true, + "ongamepadconnected": true, + "ongamepaddisconnected": true, + "ongotpointercapture": true, + "onhashchange": true, + "oninput": true, + "oninvalid": true, + "onkeydown": true, + "onkeypress": true, + "onkeyup": true, + "onlanguagechange": true, + "onload": true, + "onloadeddata": true, + "onloadedmetadata": true, + "onloadstart": true, + "onlostpointercapture": true, + "onmessage": true, + "onmessageerror": true, + "onmousedown": true, + "onmouseenter": true, + "onmouseleave": true, + "onmousemove": true, + "onmouseout": true, + "onmouseover": true, + "onmouseup": true, + "onmousewheel": true, + "onoffline": true, + "ononline": true, + "onpagehide": true, + "onpagereveal": true, + "onpageshow": true, + "onpageswap": true, + "onpaste": true, + "onpause": true, + "onplay": true, + "onplaying": true, + "onpointercancel": true, + "onpointerdown": true, + "onpointerenter": true, + "onpointerleave": true, + "onpointermove": true, + "onpointerout": true, + "onpointerover": true, + "onpointerrawupdate": true, + "onpointerup": true, + "onpopstate": true, + "onprogress": true, + "onratechange": true, + "onrejectionhandled": true, + "onreset": true, + "onresize": true, + "onscroll": true, + "onscrollend": true, + "onscrollsnapchange": true, + "onscrollsnapchanging": true, + "onsearch": true, + "onsecuritypolicyviolation": true, + "onseeked": true, + "onseeking": true, + "onselect": true, + "onselectionchange": true, + "onselectstart": true, + "onslotchange": true, + "onstalled": true, + "onstorage": true, + "onsubmit": true, + "onsuspend": true, + "ontimeupdate": true, + "ontoggle": true, + "ontransitioncancel": true, + "ontransitionend": true, + "ontransitionrun": true, + "ontransitionstart": true, + "onunhandledrejection": true, + "onunload": true, + "onvolumechange": true, + "onwaiting": true, + "onwheel": true, + "open": false, + "opener": false, + "origin": false, + "originAgentCluster": false, + "outerHeight": false, + "outerWidth": false, + "pageXOffset": false, + "pageYOffset": false, + "parent": false, + "parseFloat": false, + "parseInt": false, + "performance": false, + "personalbar": false, + "postMessage": false, + "print": false, + "prompt": false, + "queryLocalFonts": false, + "queueMicrotask": false, + "registerProcessor": false, + "removeEventListener": false, + "reportError": false, + "requestAnimationFrame": false, + "requestIdleCallback": false, + "resizeBy": false, + "resizeTo": false, + "sampleRate": false, + "scheduler": false, + "screen": false, + "screenLeft": false, + "screenTop": false, + "screenX": false, + "screenY": false, + "scroll": false, + "scrollBy": false, + "scrollTo": false, + "scrollX": false, + "scrollY": false, + "scrollbars": false, + "self": false, + "sessionStorage": false, + "setInterval": false, + "setTimeout": false, + "sharedStorage": false, + "showDirectoryPicker": false, + "showOpenFilePicker": false, + "showSaveFilePicker": false, + "speechSynthesis": false, + "status": false, + "statusbar": false, + "stop": false, + "structuredClone": false, + "styleMedia": false, + "toolbar": false, + "top": false, + "trustedTypes": false, + "undefined": false, + "unescape": false, + "visualViewport": false, + "window": false, + }, + "parser": "typescript-eslint/parser@8.26.0", + "parserOptions": { + "ecmaFeatures": { + "jsx": true, + }, + "project": "/home/circleci/project/packages/eslint-config/test/__fixtures__/tsconfig.json", }, - "ecmaVersion": "latest", - "project": "/packages/eslint-config/test/__fixtures__/tsconfig.json", "sourceType": "module", }, + "linterOptions": { + "reportUnusedDisableDirectives": 2, + }, "plugins": [ - "@stylistic", - "switch-case", - "gettext", + "@", "import", + "gettext", + "switch-case", + "@stylistic", "jsdoc", - "prettier", + "prettier:eslint-plugin-prettier@5.2.3", "react", - "jsx-a11y", - "react-hooks", + "react-hooks:eslint-plugin-react-hooks", + "jsx-a11y:eslint-plugin-jsx-a11y@6.10.2", + "@typescript-eslint:@typescript-eslint/eslint-plugin@8.26.0", "@bigcommerce", - "@typescript-eslint", ], - "reportUnusedDisableDirectives": true, + "processor": undefined, "rules": { "@babel/object-curly-spacing": [ - "off", + 0, ], "@babel/semi": [ - "off", - ], - "@bigcommerce/jsx-short-circuit-conditionals": [ - "error", + 0, ], "@stylistic/padding-line-between-statements": [ - "warn", + 1, { "blankLine": "always", "next": "return", @@ -109,7 +1296,7 @@ exports[`keeps rules stable 1`] = ` }, ], "@stylistic/spaced-comment": [ - "warn", + 1, "always", { "block": { @@ -136,61 +1323,61 @@ exports[`keeps rules stable 1`] = ` }, ], "@typescript-eslint/adjacent-overload-signatures": [ - "error", + 2, ], "@typescript-eslint/array-type": [ - "error", + 2, { "default": "array-simple", }, ], "@typescript-eslint/await-thenable": [ - "error", + 2, ], "@typescript-eslint/ban-ts-comment": [ - "error", + 2, { "minimumDescriptionLength": 10, }, ], "@typescript-eslint/ban-tslint-comment": [ - "error", + 2, ], "@typescript-eslint/block-spacing": [ - "off", + 0, ], "@typescript-eslint/brace-style": [ - "off", + 0, ], "@typescript-eslint/class-literal-property-style": [ - "error", + 2, ], "@typescript-eslint/comma-dangle": [ - "off", + 0, ], "@typescript-eslint/comma-spacing": [ - "off", + 0, ], "@typescript-eslint/consistent-generic-constructors": [ - "off", + 0, ], "@typescript-eslint/consistent-indexed-object-style": [ - "error", + 2, ], "@typescript-eslint/consistent-type-assertions": [ - "error", + 2, { "assertionStyle": "never", }, ], "@typescript-eslint/consistent-type-definitions": [ - "error", + 2, ], "@typescript-eslint/default-param-last": [ - "error", + 2, ], "@typescript-eslint/dot-notation": [ - "error", + 2, { "allowIndexSignaturePropertyAccess": false, "allowKeywords": true, @@ -200,40 +1387,40 @@ exports[`keeps rules stable 1`] = ` }, ], "@typescript-eslint/explicit-function-return-type": [ - "off", + 0, ], "@typescript-eslint/explicit-member-accessibility": [ - "error", + 2, { "accessibility": "no-public", }, ], "@typescript-eslint/explicit-module-boundary-types": [ - "off", + 0, ], "@typescript-eslint/func-call-spacing": [ - "off", + 0, ], "@typescript-eslint/indent": [ - "off", + 0, ], "@typescript-eslint/key-spacing": [ - "off", + 0, ], "@typescript-eslint/keyword-spacing": [ - "off", + 0, ], "@typescript-eslint/lines-around-comment": [ - "off", + 0, ], "@typescript-eslint/member-delimiter-style": [ - "off", + 0, ], "@typescript-eslint/member-ordering": [ - "error", + 2, ], "@typescript-eslint/naming-convention": [ - "error", + 2, { "format": [ "camelCase", @@ -315,79 +1502,82 @@ exports[`keeps rules stable 1`] = ` }, ], "@typescript-eslint/no-array-constructor": [ - "error", + 2, ], "@typescript-eslint/no-array-delete": [ - "error", + 2, ], "@typescript-eslint/no-base-to-string": [ - "error", + 2, ], "@typescript-eslint/no-confusing-non-null-assertion": [ - "error", + 2, ], "@typescript-eslint/no-confusing-void-expression": [ - "error", + 2, { "ignoreArrowShorthand": true, }, ], "@typescript-eslint/no-deprecated": [ - "error", + 2, ], "@typescript-eslint/no-duplicate-enum-values": [ - "error", + 2, ], "@typescript-eslint/no-duplicate-type-constituents": [ - "error", + 2, ], "@typescript-eslint/no-dynamic-delete": [ - "error", + 2, ], "@typescript-eslint/no-empty-function": [ - "error", + 2, + { + "allow": [], + }, ], "@typescript-eslint/no-empty-object-type": [ - "error", + 2, ], "@typescript-eslint/no-explicit-any": [ - "error", + 2, ], "@typescript-eslint/no-extra-non-null-assertion": [ - "error", + 2, ], "@typescript-eslint/no-extra-parens": [ - "off", + 0, ], "@typescript-eslint/no-extra-semi": [ - "off", + 0, ], "@typescript-eslint/no-extraneous-class": [ - "error", + 2, ], "@typescript-eslint/no-floating-promises": [ - "error", + 2, ], "@typescript-eslint/no-for-in-array": [ - "error", + 2, ], "@typescript-eslint/no-implied-eval": [ - "error", + 2, ], "@typescript-eslint/no-inferrable-types": [ - "error", + 2, ], "@typescript-eslint/no-invalid-void-type": [ - "error", + 2, ], "@typescript-eslint/no-meaningless-void-operator": [ - "error", + 2, ], "@typescript-eslint/no-misused-new": [ - "error", + 2, ], "@typescript-eslint/no-misused-promises": [ - "error", + 2, { "checksVoidReturn": { "attributes": false, @@ -395,94 +1585,99 @@ exports[`keeps rules stable 1`] = ` }, ], "@typescript-eslint/no-misused-spread": [ - "error", + 2, ], "@typescript-eslint/no-mixed-enums": [ - "error", + 2, ], "@typescript-eslint/no-namespace": [ - "error", + 2, { "allowDeclarations": true, }, ], "@typescript-eslint/no-non-null-asserted-nullish-coalescing": [ - "error", + 2, ], "@typescript-eslint/no-non-null-asserted-optional-chain": [ - "error", + 2, ], "@typescript-eslint/no-non-null-assertion": [ - "error", + 2, ], "@typescript-eslint/no-redundant-type-constituents": [ - "error", + 2, ], "@typescript-eslint/no-require-imports": [ - "error", + 2, ], "@typescript-eslint/no-shadow": [ - "error", + 2, { "hoist": "all", }, ], "@typescript-eslint/no-this-alias": [ - "error", + 2, ], "@typescript-eslint/no-unnecessary-boolean-literal-compare": [ - "error", + 2, ], "@typescript-eslint/no-unnecessary-condition": [ - "error", + 2, ], "@typescript-eslint/no-unnecessary-template-expression": [ - "error", + 2, ], "@typescript-eslint/no-unnecessary-type-arguments": [ - "error", + 2, ], "@typescript-eslint/no-unnecessary-type-assertion": [ - "error", + 2, ], "@typescript-eslint/no-unnecessary-type-constraint": [ - "error", + 2, ], "@typescript-eslint/no-unnecessary-type-parameters": [ - "error", + 2, ], "@typescript-eslint/no-unsafe-argument": [ - "error", + 2, ], "@typescript-eslint/no-unsafe-assignment": [ - "error", + 2, ], "@typescript-eslint/no-unsafe-call": [ - "error", + 2, ], "@typescript-eslint/no-unsafe-declaration-merging": [ - "error", + 2, ], "@typescript-eslint/no-unsafe-enum-comparison": [ - "error", + 2, ], "@typescript-eslint/no-unsafe-function-type": [ - "error", + 2, ], "@typescript-eslint/no-unsafe-member-access": [ - "error", + 2, ], "@typescript-eslint/no-unsafe-return": [ - "error", + 2, ], "@typescript-eslint/no-unsafe-unary-minus": [ - "error", + 2, ], "@typescript-eslint/no-unused-expressions": [ - "error", + 2, + { + "allowShortCircuit": false, + "allowTaggedTemplates": false, + "allowTernary": false, + }, ], "@typescript-eslint/no-unused-vars": [ - "error", + 2, { "args": "after-used", "ignoreRestSiblings": true, @@ -490,77 +1685,77 @@ exports[`keeps rules stable 1`] = ` }, ], "@typescript-eslint/no-use-before-define": [ - "error", + 2, "nofunc", ], "@typescript-eslint/no-useless-constructor": [ - "error", + 2, ], "@typescript-eslint/no-wrapper-object-types": [ - "error", + 2, ], "@typescript-eslint/non-nullable-type-assertion-style": [ - "error", + 2, ], "@typescript-eslint/object-curly-spacing": [ - "off", + 0, ], "@typescript-eslint/only-throw-error": [ - "error", + 2, ], "@typescript-eslint/prefer-as-const": [ - "error", + 2, ], "@typescript-eslint/prefer-find": [ - "error", + 2, ], "@typescript-eslint/prefer-for-of": [ - "error", + 2, ], "@typescript-eslint/prefer-function-type": [ - "error", + 2, ], "@typescript-eslint/prefer-includes": [ - "error", + 2, ], "@typescript-eslint/prefer-literal-enum-member": [ - "error", + 2, ], "@typescript-eslint/prefer-namespace-keyword": [ - "error", + 2, ], "@typescript-eslint/prefer-nullish-coalescing": [ - "error", + 2, ], "@typescript-eslint/prefer-optional-chain": [ - "error", + 2, ], "@typescript-eslint/prefer-promise-reject-errors": [ - "error", + 2, ], "@typescript-eslint/prefer-reduce-type-parameter": [ - "error", + 2, ], "@typescript-eslint/prefer-regexp-exec": [ - "error", + 2, ], "@typescript-eslint/prefer-return-this-type": [ - "error", + 2, ], "@typescript-eslint/prefer-string-starts-ends-with": [ - "error", + 2, ], "@typescript-eslint/quotes": [ 0, ], "@typescript-eslint/related-getter-setter-pairs": [ - "error", + 2, ], "@typescript-eslint/require-await": [ - "error", + 2, ], "@typescript-eslint/restrict-plus-operands": [ - "error", + 2, { "allowAny": false, "allowBoolean": false, @@ -570,88 +1765,93 @@ exports[`keeps rules stable 1`] = ` }, ], "@typescript-eslint/restrict-template-expressions": [ - "error", + 2, { "allowNumber": true, }, ], "@typescript-eslint/return-await": [ - "error", - "error-handling-correctness-only", + 2, ], "@typescript-eslint/semi": [ - "off", + 0, ], "@typescript-eslint/space-before-blocks": [ - "off", + 0, ], "@typescript-eslint/space-before-function-paren": [ - "off", + 0, ], "@typescript-eslint/space-infix-ops": [ - "off", + 0, ], "@typescript-eslint/triple-slash-reference": [ - "error", + 2, ], "@typescript-eslint/type-annotation-spacing": [ - "off", + 0, ], "@typescript-eslint/unbound-method": [ - "off", + 0, ], "@typescript-eslint/unified-signatures": [ - "error", + 2, ], "@typescript-eslint/use-unknown-in-catch-callback-variable": [ - "error", + 2, ], "array-bracket-newline": [ - "off", + 0, ], "array-bracket-spacing": [ - "off", + 0, ], "array-callback-return": [ - "error", + 2, + { + "allowImplicit": false, + "allowVoid": false, + "checkForEach": false, + }, ], "array-element-newline": [ - "off", + 0, ], "arrow-body-style": [ - "off", + 2, "as-needed", { "requireReturnForObjectLiteral": false, }, ], "arrow-parens": [ - "off", + 0, ], "arrow-spacing": [ - "off", + 0, ], "babel/object-curly-spacing": [ - "off", + 0, ], "babel/quotes": [ 0, ], "babel/semi": [ - "off", + 0, ], "block-scoped-var": [ - "error", + 2, ], "block-spacing": [ - "off", + 0, ], "brace-style": [ - "off", + 0, ], "camelcase": [ - "off", + 0, { + "allow": [], "ignoreDestructuring": false, "ignoreGlobals": false, "ignoreImports": false, @@ -659,133 +1859,137 @@ exports[`keeps rules stable 1`] = ` }, ], "comma-dangle": [ - "off", + 0, ], "comma-spacing": [ - "off", + 0, ], "comma-style": [ - "off", + 0, ], "complexity": [ - "error", + 2, + 20, ], "computed-property-spacing": [ - "off", + 0, ], "consistent-return": [ - "off", + 0, + { + "treatUndefinedAsUnspecified": false, + }, ], "constructor-super": [ - "off", + 2, ], "curly": [ - "error", + 2, "all", ], "default-case": [ - "off", + 0, + {}, ], "default-param-last": [ - "off", + 0, ], "dot-location": [ - "off", + 0, ], "dot-notation": [ - "off", + 0, { "allowKeywords": true, "allowPattern": "", }, ], "eol-last": [ - "off", + 0, ], "eqeqeq": [ - "error", + 2, "smart", ], "flowtype/boolean-style": [ - "off", + 0, ], "flowtype/delimiter-dangle": [ - "off", + 0, ], "flowtype/generic-spacing": [ - "off", + 0, ], "flowtype/object-type-curly-spacing": [ - "off", + 0, ], "flowtype/object-type-delimiter": [ - "off", + 0, ], "flowtype/quotes": [ - "off", + 0, ], "flowtype/semi": [ - "off", + 0, ], "flowtype/space-after-type-colon": [ - "off", + 0, ], "flowtype/space-before-generic-bracket": [ - "off", + 0, ], "flowtype/space-before-type-colon": [ - "off", + 0, ], "flowtype/union-intersection-spacing": [ - "off", + 0, ], "for-direction": [ - "error", + 2, ], "func-call-spacing": [ - "off", + 0, ], "func-names": [ - "error", + 2, + "always", + {}, ], "function-call-argument-newline": [ - "off", + 0, ], "function-paren-newline": [ - "off", + 0, ], "generator-star": [ - "off", + 0, ], "generator-star-spacing": [ - "off", + 0, ], "getter-return": [ - "off", + 2, { "allowImplicit": true, }, ], "gettext/no-variable-string": [ - "error", + 2, ], "guard-for-in": [ - "error", + 2, ], "implicit-arrow-linebreak": [ - "off", + 0, ], "import/default": [ - "off", + 0, ], "import/dynamic-import-chunkname": [ - "error", - ], - "import/export": [ 2, ], "import/extensions": [ - "error", + 2, { "js": "never", "json": "always", @@ -795,46 +1999,37 @@ exports[`keeps rules stable 1`] = ` }, ], "import/named": [ - "off", - ], - "import/namespace": [ - 2, + 0, ], "import/newline-after-import": [ - "warn", + 1, ], "import/no-absolute-path": [ - "error", + 2, ], "import/no-amd": [ - "error", + 2, ], "import/no-duplicates": [ - "warn", + 1, { "prefer-inline": true, }, ], "import/no-dynamic-require": [ - "error", + 2, ], "import/no-extraneous-dependencies": [ - "error", + 2, ], "import/no-mutable-exports": [ - "error", - ], - "import/no-named-as-default": [ - 1, - ], - "import/no-named-as-default-member": [ - 1, + 2, ], "import/no-named-default": [ - "error", + 2, ], "import/no-unresolved": [ - "error", + 2, { "caseSensitive": true, "caseSensitiveStrict": false, @@ -842,10 +2037,10 @@ exports[`keeps rules stable 1`] = ` }, ], "import/no-webpack-loader-syntax": [ - "error", + 2, ], "import/order": [ - "warn", + 1, { "alphabetize": { "caseInsensitive": true, @@ -869,73 +2064,73 @@ exports[`keeps rules stable 1`] = ` }, ], "indent": [ - "off", + 0, ], "indent-legacy": [ - "off", + 0, ], "jsdoc/check-alignment": [ - "error", + 2, ], "jsdoc/check-param-names": [ - "error", + 2, ], "jsdoc/check-syntax": [ - "error", + 2, ], "jsdoc/check-tag-names": [ - "error", + 2, ], "jsdoc/implements-on-classes": [ - "error", + 2, ], "jsdoc/require-param-name": [ - "error", + 2, ], "jsdoc/require-param-type": [ - "error", + 2, ], "jsdoc/require-returns-check": [ - "error", + 2, ], "jsdoc/require-returns-type": [ - "error", + 2, ], "jsx-a11y/alt-text": [ - "error", + 2, ], "jsx-a11y/anchor-ambiguous-text": [ - "off", + 0, ], "jsx-a11y/anchor-has-content": [ - "error", + 2, ], "jsx-a11y/anchor-is-valid": [ - "error", + 2, ], "jsx-a11y/aria-activedescendant-has-tabindex": [ - "error", + 2, ], "jsx-a11y/aria-props": [ - "error", + 2, ], "jsx-a11y/aria-proptypes": [ - "error", + 2, ], "jsx-a11y/aria-role": [ - "error", + 2, ], "jsx-a11y/aria-unsupported-elements": [ - "error", + 2, ], "jsx-a11y/autocomplete-valid": [ - "error", + 2, ], "jsx-a11y/click-events-have-key-events": [ - "error", + 2, ], "jsx-a11y/control-has-associated-label": [ - "off", + 0, { "ignoreElements": [ "audio", @@ -965,19 +2160,19 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/heading-has-content": [ - "error", + 2, ], "jsx-a11y/html-has-lang": [ - "error", + 2, ], "jsx-a11y/iframe-has-title": [ - "error", + 2, ], "jsx-a11y/img-redundant-alt": [ - "error", + 2, ], "jsx-a11y/interactive-supports-focus": [ - "error", + 2, { "tabbable": [ "button", @@ -991,28 +2186,28 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/label-has-associated-control": [ - "error", + 2, ], "jsx-a11y/label-has-for": [ - "off", + 0, ], "jsx-a11y/media-has-caption": [ - "error", + 2, ], "jsx-a11y/mouse-events-have-key-events": [ - "error", + 2, ], "jsx-a11y/no-access-key": [ - "error", + 2, ], "jsx-a11y/no-autofocus": [ - "error", + 2, ], "jsx-a11y/no-distracting-elements": [ - "error", + 2, ], "jsx-a11y/no-interactive-element-to-noninteractive-role": [ - "error", + 2, { "canvas": [ "img", @@ -1024,7 +2219,7 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/no-noninteractive-element-interactions": [ - "error", + 2, { "alert": [ "onKeyUp", @@ -1061,7 +2256,7 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/no-noninteractive-element-to-interactive-role": [ - "error", + 2, { "fieldset": [ "radiogroup", @@ -1103,7 +2298,7 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/no-noninteractive-tabindex": [ - "error", + 2, { "allowExpressionValues": true, "roles": [ @@ -1113,13 +2308,13 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/no-onchange": [ - "off", + 0, ], "jsx-a11y/no-redundant-roles": [ - "error", + 2, ], "jsx-a11y/no-static-element-interactions": [ - "error", + 2, { "allowExpressionValues": true, "handlers": [ @@ -1133,47 +2328,47 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/role-has-required-aria-props": [ - "error", + 2, ], "jsx-a11y/role-supports-aria-props": [ - "error", + 2, ], "jsx-a11y/scope": [ - "error", + 2, ], "jsx-a11y/tabindex-no-positive": [ - "error", + 2, ], "jsx-quotes": [ - "off", + 0, ], "key-spacing": [ - "off", + 0, ], "keyword-spacing": [ - "off", + 0, ], "linebreak-style": [ - "off", + 0, ], "lines-around-comment": [ 0, ], "max-classes-per-file": [ - "error", + 2, 1, ], "max-len": [ 0, ], "max-statements-per-line": [ - "off", + 0, ], "multiline-ternary": [ - "off", + 0, ], "new-cap": [ - "error", + 2, { "capIsNew": false, "capIsNewExceptions": [ @@ -1187,104 +2382,122 @@ exports[`keeps rules stable 1`] = ` }, ], "new-parens": [ - "off", + 0, ], "newline-per-chained-call": [ - "off", + 0, ], "no-alert": [ - "warn", + 1, ], "no-array-constructor": [ - "off", + 0, ], "no-arrow-condition": [ - "off", + 0, ], "no-async-promise-executor": [ - "error", + 2, ], "no-await-in-loop": [ - "error", + 2, ], "no-bitwise": [ - "error", + 2, + { + "allow": [], + "int32Hint": false, + }, ], "no-caller": [ - "error", + 2, ], "no-case-declarations": [ - "error", + 2, ], "no-class-assign": [ - "off", + 2, ], "no-comma-dangle": [ - "off", + 0, ], "no-compare-neg-zero": [ - "error", + 2, ], "no-cond-assign": [ - "error", + 2, "always", ], "no-confusing-arrow": [ 0, ], "no-console": [ - "warn", + 1, + {}, ], "no-const-assign": [ - "off", + 2, + ], + "no-constant-binary-expression": [ + 2, ], "no-constant-condition": [ - "warn", + 1, + { + "checkLoops": "allExceptWhileTrue", + }, ], "no-continue": [ - "error", + 2, ], "no-control-regex": [ - "error", + 2, ], "no-debugger": [ - "error", + 2, ], "no-delete-var": [ - "error", + 2, ], "no-dupe-args": [ - "off", + 2, ], "no-dupe-class-members": [ - "off", + 2, ], "no-dupe-else-if": [ - "error", + 2, ], "no-dupe-keys": [ - "off", + 2, ], "no-duplicate-case": [ - "error", + 2, ], "no-duplicate-imports": [ - "off", + 0, + { + "allowSeparateTypeImports": false, + "includeExports": false, + }, ], "no-else-return": [ - "error", + 2, { "allowElseIf": true, }, ], "no-empty": [ - "error", + 2, + { + "allowEmptyCatch": false, + }, ], "no-empty-character-class": [ - "error", + 2, ], "no-empty-function": [ - "off", + 0, { "allow": [ "arrowFunctions", @@ -1294,164 +2507,198 @@ exports[`keeps rules stable 1`] = ` }, ], "no-empty-pattern": [ - "error", + 2, + { + "allowObjectPatternsAsParameters": false, + }, + ], + "no-empty-static-block": [ + 2, ], "no-eval": [ - "error", + 2, + { + "allowIndirect": false, + }, ], "no-ex-assign": [ - "error", + 2, ], "no-extend-native": [ - "error", + 2, + { + "exceptions": [], + }, ], "no-extra-bind": [ - "error", + 2, ], "no-extra-boolean-cast": [ - "error", + 2, + {}, ], "no-extra-label": [ - "error", + 2, ], "no-extra-parens": [ - "off", + 0, ], "no-extra-semi": [ - "off", + 0, ], "no-fallthrough": [ - "error", + 2, + { + "allowEmptyCase": false, + "reportUnusedFallthroughComment": false, + }, ], "no-floating-decimal": [ - "off", + 0, ], "no-func-assign": [ - "off", + 2, ], "no-global-assign": [ - "error", + 2, + { + "exceptions": [], + }, ], "no-implied-eval": [ - "off", + 0, ], "no-import-assign": [ - "off", - ], - "no-inner-declarations": [ - "error", + 2, ], "no-invalid-regexp": [ - "error", + 2, + {}, ], "no-irregular-whitespace": [ - "error", + 2, + { + "skipComments": false, + "skipJSXText": false, + "skipRegExps": false, + "skipStrings": true, + "skipTemplates": false, + }, ], "no-iterator": [ - "error", + 2, ], "no-label-var": [ - "error", + 2, ], "no-labels": [ - "error", + 2, { "allowLoop": false, "allowSwitch": false, }, ], "no-lone-blocks": [ - "error", + 2, ], "no-lonely-if": [ - "error", + 2, ], "no-loop-func": [ - "error", + 2, ], "no-loss-of-precision": [ - "error", + 2, ], "no-misleading-character-class": [ - "error", + 2, + { + "allowEscape": false, + }, ], "no-mixed-operators": [ 0, ], "no-mixed-spaces-and-tabs": [ - "off", + 0, ], "no-multi-assign": [ - "error", + 2, + { + "ignoreNonDeclaration": false, + }, ], "no-multi-spaces": [ - "off", + 0, ], "no-multi-str": [ - "error", + 2, ], "no-multiple-empty-lines": [ - "off", + 0, ], "no-nested-ternary": [ - "error", + 2, ], "no-new": [ - "error", + 2, ], "no-new-func": [ - "error", + 2, ], "no-new-native-nonconstructor": [ - "off", - ], - "no-new-symbol": [ - "off", + 2, ], "no-new-wrappers": [ - "error", + 2, ], "no-nonoctal-decimal-escape": [ - "error", + 2, ], "no-obj-calls": [ - "off", + 2, ], "no-object-constructor": [ - "error", + 2, ], "no-octal": [ - "error", + 2, ], "no-octal-escape": [ - "error", + 2, ], "no-param-reassign": [ - "error", + 2, { "props": false, }, ], "no-plusplus": [ - "error", + 2, + { + "allowForLoopAfterthoughts": false, + }, ], "no-proto": [ - "error", + 2, ], "no-prototype-builtins": [ - "off", + 0, ], "no-redeclare": [ - "off", + 2, + { + "builtinGlobals": true, + }, ], "no-regex-spaces": [ - "error", + 2, ], "no-reserved-keys": [ - "off", + 0, ], "no-restricted-globals": [ - "error", + 2, "isFinite", "isNaN", "addEventListener", @@ -1514,10 +2761,10 @@ exports[`keeps rules stable 1`] = ` "top", ], "no-restricted-imports": [ - "error", + 2, ], "no-restricted-properties": [ - "error", + 2, { "message": "arguments.callee is deprecated", "object": "arguments", @@ -1568,7 +2815,7 @@ exports[`keeps rules stable 1`] = ` }, ], "no-restricted-syntax": [ - "error", + 2, { "message": "for..in loops iterate over the entire prototype chain, which is virtually never what you want. Use Object.{keys,values,entries}, and iterate over the resulting array.", "selector": "ForInStatement", @@ -1595,71 +2842,87 @@ exports[`keeps rules stable 1`] = ` }, ], "no-return-assign": [ - "error", + 2, "except-parens", ], "no-return-await": [ - "off", + 0, ], "no-script-url": [ - "error", + 2, ], "no-self-assign": [ - "error", + 2, + { + "props": true, + }, ], "no-self-compare": [ - "error", + 2, ], "no-sequences": [ - "error", + 2, + { + "allowInParentheses": true, + }, ], "no-setter-return": [ - "off", + 2, ], "no-shadow": [ - "off", + 0, { + "allow": [], "builtinGlobals": false, "hoist": "all", + "ignoreFunctionTypeParameterNameValueShadow": true, "ignoreOnInitialization": false, + "ignoreTypeValueShadow": true, }, ], "no-shadow-restricted-names": [ - "error", + 2, + { + "reportGlobalThis": false, + }, ], "no-space-before-semi": [ - "off", + 0, ], "no-spaced-func": [ - "off", + 0, ], "no-sparse-arrays": [ - "error", + 2, ], "no-tabs": [ 0, ], "no-template-curly-in-string": [ - "error", + 2, ], "no-this-before-super": [ - "off", + 2, ], "no-throw-literal": [ - "off", + 0, ], "no-trailing-spaces": [ - "off", + 0, ], "no-undef": [ - "off", + 2, + { + "typeof": false, + }, ], "no-undef-init": [ - "error", + 2, ], "no-underscore-dangle": [ - "error", + 2, { + "allow": [], "allowAfterSuper": true, "allowAfterThis": true, "allowAfterThisConstructor": false, @@ -1674,31 +2937,47 @@ exports[`keeps rules stable 1`] = ` 0, ], "no-unneeded-ternary": [ - "error", + 2, { "defaultAssignment": false, }, ], "no-unreachable": [ - "off", + 2, ], "no-unsafe-finally": [ - "error", + 2, ], "no-unsafe-negation": [ - "off", + 2, + { + "enforceForOrderingRelations": false, + }, ], "no-unsafe-optional-chaining": [ - "error", + 2, + { + "disallowArithmeticOperators": false, + }, ], "no-unused-expressions": [ - "off", + 0, + { + "allowShortCircuit": false, + "allowTaggedTemplates": false, + "allowTernary": false, + "enforceForJSX": false, + "ignoreDirectives": false, + }, ], "no-unused-labels": [ - "error", + 2, + ], + "no-unused-private-class-members": [ + 2, ], "no-unused-vars": [ - "off", + 0, { "args": "after-used", "ignoreRestSiblings": true, @@ -1706,29 +2985,35 @@ exports[`keeps rules stable 1`] = ` }, ], "no-use-before-define": [ - "off", + 0, "nofunc", ], "no-useless-backreference": [ - "error", + 2, ], "no-useless-catch": [ - "error", + 2, ], "no-useless-computed-key": [ - "error", + 2, + { + "enforceForClassMembers": true, + }, ], "no-useless-concat": [ - "error", + 2, ], "no-useless-constructor": [ - "off", + 0, ], "no-useless-escape": [ - "error", + 2, + { + "allowRegexCharacters": [], + }, ], "no-useless-rename": [ - "error", + 2, { "ignoreDestructuring": false, "ignoreExport": false, @@ -1736,40 +3021,40 @@ exports[`keeps rules stable 1`] = ` }, ], "no-useless-return": [ - "error", + 2, ], "no-var": [ - "error", + 2, ], "no-void": [ - "error", + 2, { "allowAsStatement": true, }, ], "no-whitespace-before-property": [ - "off", + 0, ], "no-with": [ - "error", + 2, ], "no-wrap-func": [ - "off", + 0, ], "nonblock-statement-body-position": [ - "off", + 0, ], "object-curly-newline": [ - "off", + 0, ], "object-curly-spacing": [ - "off", + 0, ], "object-property-newline": [ - "off", + 0, ], "object-shorthand": [ - "error", + 2, "always", { "avoidQuotes": true, @@ -1777,53 +3062,53 @@ exports[`keeps rules stable 1`] = ` }, ], "one-var": [ - "error", + 2, "never", ], "one-var-declaration-per-line": [ - "off", + 0, ], "operator-assignment": [ - "error", + 2, "always", ], "operator-linebreak": [ - "off", + 0, ], "padded-blocks": [ - "off", + 0, ], "prefer-arrow-callback": [ - "off", + 2, { "allowNamedFunctions": false, "allowUnboundThis": true, }, ], "prefer-const": [ - "error", + 2, { "destructuring": "any", "ignoreReadBeforeAssign": true, }, ], "prefer-numeric-literals": [ - "error", + 2, ], "prefer-promise-reject-errors": [ - "off", + 0, + { + "allowEmptyReject": false, + }, ], "prefer-rest-params": [ - "error", - ], - "prefer-spread": [ - "error", + 2, ], "prefer-template": [ - "error", + 2, ], "prettier/prettier": [ - "warn", + 1, { "printWidth": 100, "singleQuote": true, @@ -1834,37 +3119,38 @@ exports[`keeps rules stable 1`] = ` }, ], "quote-props": [ - "off", + 0, ], "quotes": [ 0, ], "radix": [ - "error", + 2, + "always", ], "react-hooks/exhaustive-deps": [ - "error", + 2, ], "react-hooks/rules-of-hooks": [ - "error", + 2, ], "react/destructuring-assignment": [ - "error", + 2, ], "react/display-name": [ - "off", + 0, ], "react/jsx-child-element-spacing": [ - "off", + 0, ], "react/jsx-closing-bracket-location": [ - "off", + 0, ], "react/jsx-closing-tag-location": [ - "off", + 0, ], "react/jsx-curly-brace-presence": [ - "error", + 2, { "children": "never", "propElementValues": "always", @@ -1872,13 +3158,13 @@ exports[`keeps rules stable 1`] = ` }, ], "react/jsx-curly-newline": [ - "off", + 0, ], "react/jsx-curly-spacing": [ - "off", + 0, ], "react/jsx-equals-spacing": [ - "off", + 0, ], "react/jsx-filename-extension": [ 1, @@ -1889,29 +3175,29 @@ exports[`keeps rules stable 1`] = ` }, ], "react/jsx-first-prop-new-line": [ - "off", + 0, ], "react/jsx-fragments": [ - "error", + 2, "syntax", ], "react/jsx-indent": [ - "off", + 0, ], "react/jsx-indent-props": [ - "off", + 0, ], "react/jsx-key": [ 2, ], "react/jsx-max-props-per-line": [ - "off", + 0, ], "react/jsx-newline": [ - "off", + 0, ], "react/jsx-no-bind": [ - "error", + 2, { "allowArrowFunctions": true, "allowBind": false, @@ -1933,25 +3219,25 @@ exports[`keeps rules stable 1`] = ` 2, ], "react/jsx-no-useless-fragment": [ - "error", + 2, ], "react/jsx-one-expression-per-line": [ - "off", + 0, ], "react/jsx-pascal-case": [ - "error", + 2, ], "react/jsx-props-no-multi-spaces": [ - "off", + 0, ], "react/jsx-sort-props": [ - "warn", + 1, ], "react/jsx-space-before-closing": [ - "off", + 0, ], "react/jsx-tag-spacing": [ - "off", + 0, ], "react/jsx-uses-react": [ 2, @@ -1960,7 +3246,7 @@ exports[`keeps rules stable 1`] = ` 2, ], "react/jsx-wrap-multilines": [ - "off", + 0, ], "react/no-children-prop": [ 2, @@ -1981,7 +3267,7 @@ exports[`keeps rules stable 1`] = ` 2, ], "react/no-redundant-should-component-update": [ - "error", + 2, ], "react/no-render-return-value": [ 2, @@ -1990,10 +3276,10 @@ exports[`keeps rules stable 1`] = ` 2, ], "react/no-this-in-sfc": [ - "error", + 2, ], "react/no-unescaped-entities": [ - "error", + 2, { "forbid": [ { @@ -2015,19 +3301,19 @@ exports[`keeps rules stable 1`] = ` 2, ], "react/no-unsafe": [ - "error", + 2, ], "react/no-unused-state": [ - "error", + 2, ], "react/prefer-es6-class": [ - "error", + 2, ], "react/prefer-read-only-props": [ - "error", + 2, ], "react/prop-types": [ - "off", + 0, ], "react/react-in-jsx-scope": [ 2, @@ -2036,308 +3322,295 @@ exports[`keeps rules stable 1`] = ` 2, ], "react/self-closing-comp": [ - "error", + 2, ], "react/style-prop-object": [ - "error", + 2, ], "require-await": [ - "off", + 0, ], "require-yield": [ - "error", + 2, ], "rest-spread-spacing": [ - "off", + 0, ], "semi": [ - "off", + 0, ], "semi-spacing": [ - "off", + 0, ], "semi-style": [ - "off", + 0, ], "sort-imports": [ - "error", + 2, { "allowSeparatedGroups": false, "ignoreCase": true, "ignoreDeclarationSort": true, "ignoreMemberSort": false, + "memberSyntaxSortOrder": [ + "none", + "all", + "multiple", + "single", + ], }, ], "sort-keys": [ - "off", + 0, + "asc", + { + "allowLineSeparatedGroups": false, + "caseSensitive": true, + "ignoreComputedKeys": false, + "minKeys": 2, + "natural": false, + }, ], "space-after-function-name": [ - "off", + 0, ], "space-after-keywords": [ - "off", + 0, ], "space-before-blocks": [ - "off", + 0, ], "space-before-function-paren": [ - "off", + 0, ], "space-before-function-parentheses": [ - "off", + 0, ], "space-before-keywords": [ - "off", + 0, ], "space-in-brackets": [ - "off", + 0, ], "space-in-parens": [ - "off", + 0, ], "space-infix-ops": [ - "off", + 0, ], "space-return-throw-case": [ - "off", + 0, ], "space-unary-ops": [ - "off", + 0, ], "space-unary-word-ops": [ - "off", + 0, ], "standard/array-bracket-even-spacing": [ - "off", + 0, ], "standard/computed-property-even-spacing": [ - "off", + 0, ], "standard/object-curly-even-spacing": [ - "off", + 0, ], "strict": [ - "error", + 2, + "safe", ], "switch-case/newline-between-switch-case": [ - "warn", + 1, "always", { "fallthrough": "never", }, ], "switch-colon-spacing": [ - "off", + 0, ], "symbol-description": [ - "error", + 2, ], "template-curly-spacing": [ - "off", + 0, ], "template-tag-spacing": [ - "off", + 0, ], "unicorn/empty-brace-spaces": [ - "off", + 0, ], "unicorn/no-nested-ternary": [ - "off", + 0, ], "unicorn/number-literal-case": [ - "off", + 0, ], "unicorn/template-indent": [ 0, ], "use-isnan": [ - "error", + 2, + { + "enforceForIndexOf": false, + "enforceForSwitchCase": true, + }, ], "valid-jsdoc": [ - "off", + 0, { "requireParamDescription": false, - "requireParamType": true, - "requireReturn": true, "requireReturnDescription": false, - "requireReturnType": true, }, ], "valid-typeof": [ - "error", + 2, { "requireStringLiterals": true, }, ], "vars-on-top": [ - "error", + 2, ], "vue/array-bracket-newline": [ - "off", + 0, ], "vue/array-bracket-spacing": [ - "off", + 0, ], "vue/array-element-newline": [ - "off", + 0, ], "vue/arrow-spacing": [ - "off", + 0, ], "vue/block-spacing": [ - "off", + 0, ], "vue/block-tag-newline": [ - "off", + 0, ], "vue/brace-style": [ - "off", + 0, ], "vue/comma-dangle": [ - "off", + 0, ], "vue/comma-spacing": [ - "off", + 0, ], "vue/comma-style": [ - "off", + 0, ], "vue/dot-location": [ - "off", + 0, ], "vue/func-call-spacing": [ - "off", + 0, ], "vue/html-closing-bracket-newline": [ - "off", + 0, ], "vue/html-closing-bracket-spacing": [ - "off", + 0, ], "vue/html-end-tags": [ - "off", + 0, ], "vue/html-indent": [ - "off", + 0, ], "vue/html-quotes": [ - "off", + 0, ], "vue/html-self-closing": [ 0, ], "vue/key-spacing": [ - "off", + 0, ], "vue/keyword-spacing": [ - "off", + 0, ], "vue/max-attributes-per-line": [ - "off", + 0, ], "vue/max-len": [ 0, ], "vue/multiline-html-element-content-newline": [ - "off", + 0, ], "vue/multiline-ternary": [ - "off", + 0, ], "vue/mustache-interpolation-spacing": [ - "off", + 0, ], "vue/no-extra-parens": [ - "off", + 0, ], "vue/no-multi-spaces": [ - "off", + 0, ], "vue/no-spaces-around-equal-signs-in-attribute": [ - "off", + 0, ], "vue/object-curly-newline": [ - "off", + 0, ], "vue/object-curly-spacing": [ - "off", + 0, ], "vue/object-property-newline": [ - "off", + 0, ], "vue/operator-linebreak": [ - "off", + 0, ], "vue/quote-props": [ - "off", + 0, ], "vue/script-indent": [ - "off", + 0, ], "vue/singleline-html-element-content-newline": [ - "off", + 0, ], "vue/space-in-parens": [ - "off", + 0, ], "vue/space-infix-ops": [ - "off", + 0, ], "vue/space-unary-ops": [ - "off", + 0, ], "vue/template-curly-spacing": [ - "off", + 0, ], "wrap-iife": [ - "off", + 0, ], "wrap-regex": [ - "off", + 0, ], "yield-star-spacing": [ - "off", + 0, ], "yoda": [ - "error", + 2, + "never", + { + "exceptRange": false, + "onlyEquality": false, + }, ], }, "settings": { - "import/extensions": [ - ".ts", - ".cts", - ".mts", - ".tsx", - ".js", - ".jsx", - ".mjs", - ".cjs", - ], - "import/external-module-folders": [ - "node_modules", - "node_modules/@types", - ], - "import/parsers": { - "@typescript-eslint/parser": [ - ".ts", - ".cts", - ".mts", - ".tsx", - ], - }, "import/resolver": { - "node": { - "extensions": [ - ".ts", - ".cts", - ".mts", - ".tsx", - ".js", - ".jsx", - ".mjs", - ".cjs", - ], - }, "typescript": { "alwaysTryTypes": true, }, diff --git a/packages/eslint-config/test/__snapshots__/tsx.spec.js.snap b/packages/eslint-config/test/__snapshots__/tsx.spec.js.snap index 6aeed4d..eb7efc1 100644 --- a/packages/eslint-config/test/__snapshots__/tsx.spec.js.snap +++ b/packages/eslint-config/test/__snapshots__/tsx.spec.js.snap @@ -2,48 +2,1235 @@ exports[`keeps rules stable 1`] = ` { - "env": { - "browser": true, - "es6": true, - }, - "globals": {}, - "ignorePatterns": [], - "noInlineConfig": undefined, - "parser": "/node_modules/@typescript-eslint/parser/dist/index.js", - "parserOptions": { - "ecmaFeatures": { - "jsx": true, + "language": "@/js", + "languageOptions": { + "ecmaVersion": 2026, + "globals": { + "AI": false, + "AITextSession": false, + "AbortController": false, + "AbortSignal": false, + "AbsoluteOrientationSensor": false, + "AbstractRange": false, + "Accelerometer": false, + "AggregateError": false, + "AnalyserNode": false, + "Animation": false, + "AnimationEffect": false, + "AnimationEvent": false, + "AnimationPlaybackEvent": false, + "AnimationTimeline": false, + "Array": false, + "ArrayBuffer": false, + "Atomics": false, + "Attr": false, + "Audio": false, + "AudioBuffer": false, + "AudioBufferSourceNode": false, + "AudioContext": false, + "AudioData": false, + "AudioDecoder": false, + "AudioDestinationNode": false, + "AudioEncoder": false, + "AudioListener": false, + "AudioNode": false, + "AudioParam": false, + "AudioParamMap": false, + "AudioProcessingEvent": false, + "AudioScheduledSourceNode": false, + "AudioSinkInfo": false, + "AudioWorklet": false, + "AudioWorkletGlobalScope": false, + "AudioWorkletNode": false, + "AudioWorkletProcessor": false, + "AuthenticatorAssertionResponse": false, + "AuthenticatorAttestationResponse": false, + "AuthenticatorResponse": false, + "BackgroundFetchManager": false, + "BackgroundFetchRecord": false, + "BackgroundFetchRegistration": false, + "BarProp": false, + "BarcodeDetector": false, + "BaseAudioContext": false, + "BatteryManager": false, + "BeforeUnloadEvent": false, + "BigInt": false, + "BigInt64Array": false, + "BigUint64Array": false, + "BiquadFilterNode": false, + "Blob": false, + "BlobEvent": false, + "Bluetooth": false, + "BluetoothCharacteristicProperties": false, + "BluetoothDevice": false, + "BluetoothRemoteGATTCharacteristic": false, + "BluetoothRemoteGATTDescriptor": false, + "BluetoothRemoteGATTServer": false, + "BluetoothRemoteGATTService": false, + "BluetoothUUID": false, + "Boolean": false, + "BroadcastChannel": false, + "BrowserCaptureMediaStreamTrack": false, + "ByteLengthQueuingStrategy": false, + "CDATASection": false, + "CSS": false, + "CSSAnimation": false, + "CSSConditionRule": false, + "CSSContainerRule": false, + "CSSCounterStyleRule": false, + "CSSFontFaceRule": false, + "CSSFontFeatureValuesRule": false, + "CSSFontPaletteValuesRule": false, + "CSSGroupingRule": false, + "CSSImageValue": false, + "CSSImportRule": false, + "CSSKeyframeRule": false, + "CSSKeyframesRule": false, + "CSSKeywordValue": false, + "CSSLayerBlockRule": false, + "CSSLayerStatementRule": false, + "CSSMarginRule": false, + "CSSMathClamp": false, + "CSSMathInvert": false, + "CSSMathMax": false, + "CSSMathMin": false, + "CSSMathNegate": false, + "CSSMathProduct": false, + "CSSMathSum": false, + "CSSMathValue": false, + "CSSMatrixComponent": false, + "CSSMediaRule": false, + "CSSNamespaceRule": false, + "CSSNestedDeclarations": false, + "CSSNumericArray": false, + "CSSNumericValue": false, + "CSSPageDescriptors": false, + "CSSPageRule": false, + "CSSPerspective": false, + "CSSPositionTryDescriptors": false, + "CSSPositionTryRule": false, + "CSSPositionValue": false, + "CSSPropertyRule": false, + "CSSRotate": false, + "CSSRule": false, + "CSSRuleList": false, + "CSSScale": false, + "CSSScopeRule": false, + "CSSSkew": false, + "CSSSkewX": false, + "CSSSkewY": false, + "CSSStartingStyleRule": false, + "CSSStyleDeclaration": false, + "CSSStyleRule": false, + "CSSStyleSheet": false, + "CSSStyleValue": false, + "CSSSupportsRule": false, + "CSSTransformComponent": false, + "CSSTransformValue": false, + "CSSTransition": false, + "CSSTranslate": false, + "CSSUnitValue": false, + "CSSUnparsedValue": false, + "CSSVariableReferenceValue": false, + "CSSViewTransitionRule": false, + "Cache": false, + "CacheStorage": false, + "CanvasCaptureMediaStream": false, + "CanvasCaptureMediaStreamTrack": false, + "CanvasGradient": false, + "CanvasPattern": false, + "CanvasRenderingContext2D": false, + "CaptureController": false, + "CaretPosition": false, + "ChannelMergerNode": false, + "ChannelSplitterNode": false, + "ChapterInformation": false, + "CharacterBoundsUpdateEvent": false, + "CharacterData": false, + "Clipboard": false, + "ClipboardEvent": false, + "ClipboardItem": false, + "CloseEvent": false, + "CloseWatcher": false, + "Comment": false, + "CompositionEvent": false, + "CompressionStream": false, + "ConstantSourceNode": false, + "ContentVisibilityAutoStateChangeEvent": false, + "ConvolverNode": false, + "CookieChangeEvent": false, + "CookieDeprecationLabel": false, + "CookieStore": false, + "CookieStoreManager": false, + "CountQueuingStrategy": false, + "Credential": false, + "CredentialsContainer": false, + "CropTarget": false, + "Crypto": false, + "CryptoKey": false, + "CustomElementRegistry": false, + "CustomEvent": false, + "CustomStateSet": false, + "DOMError": false, + "DOMException": false, + "DOMImplementation": false, + "DOMMatrix": false, + "DOMMatrixReadOnly": false, + "DOMParser": false, + "DOMPoint": false, + "DOMPointReadOnly": false, + "DOMQuad": false, + "DOMRect": false, + "DOMRectList": false, + "DOMRectReadOnly": false, + "DOMStringList": false, + "DOMStringMap": false, + "DOMTokenList": false, + "DataTransfer": false, + "DataTransferItem": false, + "DataTransferItemList": false, + "DataView": false, + "Date": false, + "DecompressionStream": false, + "DelayNode": false, + "DelegatedInkTrailPresenter": false, + "DeviceMotionEvent": false, + "DeviceMotionEventAcceleration": false, + "DeviceMotionEventRotationRate": false, + "DeviceOrientationEvent": false, + "Document": false, + "DocumentFragment": false, + "DocumentPictureInPicture": false, + "DocumentPictureInPictureEvent": false, + "DocumentTimeline": false, + "DocumentType": false, + "DragEvent": false, + "DynamicsCompressorNode": false, + "EditContext": false, + "Element": false, + "ElementInternals": false, + "EncodedAudioChunk": false, + "EncodedVideoChunk": false, + "Error": false, + "ErrorEvent": false, + "EvalError": false, + "Event": false, + "EventCounts": false, + "EventSource": false, + "EventTarget": false, + "External": false, + "EyeDropper": false, + "FeaturePolicy": false, + "FederatedCredential": false, + "Fence": false, + "FencedFrameConfig": false, + "FetchLaterResult": false, + "File": false, + "FileList": false, + "FileReader": false, + "FileSystem": false, + "FileSystemDirectoryEntry": false, + "FileSystemDirectoryHandle": false, + "FileSystemDirectoryReader": false, + "FileSystemEntry": false, + "FileSystemFileEntry": false, + "FileSystemFileHandle": false, + "FileSystemHandle": false, + "FileSystemWritableFileStream": false, + "FinalizationRegistry": false, + "Float16Array": false, + "Float32Array": false, + "Float64Array": false, + "FocusEvent": false, + "FontData": false, + "FontFace": false, + "FontFaceSet": false, + "FontFaceSetLoadEvent": false, + "FormData": false, + "FormDataEvent": false, + "FragmentDirective": false, + "Function": false, + "GPU": false, + "GPUAdapter": false, + "GPUAdapterInfo": false, + "GPUBindGroup": false, + "GPUBindGroupLayout": false, + "GPUBuffer": false, + "GPUBufferUsage": false, + "GPUCanvasContext": false, + "GPUColorWrite": false, + "GPUCommandBuffer": false, + "GPUCommandEncoder": false, + "GPUCompilationInfo": false, + "GPUCompilationMessage": false, + "GPUComputePassEncoder": false, + "GPUComputePipeline": false, + "GPUDevice": false, + "GPUDeviceLostInfo": false, + "GPUError": false, + "GPUExternalTexture": false, + "GPUInternalError": false, + "GPUMapMode": false, + "GPUOutOfMemoryError": false, + "GPUPipelineError": false, + "GPUPipelineLayout": false, + "GPUQuerySet": false, + "GPUQueue": false, + "GPURenderBundle": false, + "GPURenderBundleEncoder": false, + "GPURenderPassEncoder": false, + "GPURenderPipeline": false, + "GPUSampler": false, + "GPUShaderModule": false, + "GPUShaderStage": false, + "GPUSupportedFeatures": false, + "GPUSupportedLimits": false, + "GPUTexture": false, + "GPUTextureUsage": false, + "GPUTextureView": false, + "GPUUncapturedErrorEvent": false, + "GPUValidationError": false, + "GainNode": false, + "Gamepad": false, + "GamepadAxisMoveEvent": false, + "GamepadButton": false, + "GamepadButtonEvent": false, + "GamepadEvent": false, + "GamepadHapticActuator": false, + "GamepadPose": false, + "Geolocation": false, + "GeolocationCoordinates": false, + "GeolocationPosition": false, + "GeolocationPositionError": false, + "GravitySensor": false, + "Gyroscope": false, + "HID": false, + "HIDConnectionEvent": false, + "HIDDevice": false, + "HIDInputReportEvent": false, + "HTMLAllCollection": false, + "HTMLAnchorElement": false, + "HTMLAreaElement": false, + "HTMLAudioElement": false, + "HTMLBRElement": false, + "HTMLBaseElement": false, + "HTMLBodyElement": false, + "HTMLButtonElement": false, + "HTMLCanvasElement": false, + "HTMLCollection": false, + "HTMLDListElement": false, + "HTMLDataElement": false, + "HTMLDataListElement": false, + "HTMLDetailsElement": false, + "HTMLDialogElement": false, + "HTMLDirectoryElement": false, + "HTMLDivElement": false, + "HTMLDocument": false, + "HTMLElement": false, + "HTMLEmbedElement": false, + "HTMLFencedFrameElement": false, + "HTMLFieldSetElement": false, + "HTMLFontElement": false, + "HTMLFormControlsCollection": false, + "HTMLFormElement": false, + "HTMLFrameElement": false, + "HTMLFrameSetElement": false, + "HTMLHRElement": false, + "HTMLHeadElement": false, + "HTMLHeadingElement": false, + "HTMLHtmlElement": false, + "HTMLIFrameElement": false, + "HTMLImageElement": false, + "HTMLInputElement": false, + "HTMLLIElement": false, + "HTMLLabelElement": false, + "HTMLLegendElement": false, + "HTMLLinkElement": false, + "HTMLMapElement": false, + "HTMLMarqueeElement": false, + "HTMLMediaElement": false, + "HTMLMenuElement": false, + "HTMLMetaElement": false, + "HTMLMeterElement": false, + "HTMLModElement": false, + "HTMLOListElement": false, + "HTMLObjectElement": false, + "HTMLOptGroupElement": false, + "HTMLOptionElement": false, + "HTMLOptionsCollection": false, + "HTMLOutputElement": false, + "HTMLParagraphElement": false, + "HTMLParamElement": false, + "HTMLPictureElement": false, + "HTMLPreElement": false, + "HTMLProgressElement": false, + "HTMLQuoteElement": false, + "HTMLScriptElement": false, + "HTMLSelectElement": false, + "HTMLSlotElement": false, + "HTMLSourceElement": false, + "HTMLSpanElement": false, + "HTMLStyleElement": false, + "HTMLTableCaptionElement": false, + "HTMLTableCellElement": false, + "HTMLTableColElement": false, + "HTMLTableElement": false, + "HTMLTableRowElement": false, + "HTMLTableSectionElement": false, + "HTMLTemplateElement": false, + "HTMLTextAreaElement": false, + "HTMLTimeElement": false, + "HTMLTitleElement": false, + "HTMLTrackElement": false, + "HTMLUListElement": false, + "HTMLUnknownElement": false, + "HTMLVideoElement": false, + "HashChangeEvent": false, + "Headers": false, + "Highlight": false, + "HighlightRegistry": false, + "History": false, + "IDBCursor": false, + "IDBCursorWithValue": false, + "IDBDatabase": false, + "IDBFactory": false, + "IDBIndex": false, + "IDBKeyRange": false, + "IDBObjectStore": false, + "IDBOpenDBRequest": false, + "IDBRequest": false, + "IDBTransaction": false, + "IDBVersionChangeEvent": false, + "IIRFilterNode": false, + "IdentityCredential": false, + "IdentityCredentialError": false, + "IdentityProvider": false, + "IdleDeadline": false, + "IdleDetector": false, + "Image": false, + "ImageBitmap": false, + "ImageBitmapRenderingContext": false, + "ImageCapture": false, + "ImageData": false, + "ImageDecoder": false, + "ImageTrack": false, + "ImageTrackList": false, + "Infinity": false, + "Ink": false, + "InputDeviceCapabilities": false, + "InputDeviceInfo": false, + "InputEvent": false, + "Int16Array": false, + "Int32Array": false, + "Int8Array": false, + "IntersectionObserver": false, + "IntersectionObserverEntry": false, + "Intl": false, + "JSON": false, + "Keyboard": false, + "KeyboardEvent": false, + "KeyboardLayoutMap": false, + "KeyframeEffect": false, + "LargestContentfulPaint": false, + "LaunchParams": false, + "LaunchQueue": false, + "LayoutShift": false, + "LayoutShiftAttribution": false, + "LinearAccelerationSensor": false, + "Location": false, + "Lock": false, + "LockManager": false, + "MIDIAccess": false, + "MIDIConnectionEvent": false, + "MIDIInput": false, + "MIDIInputMap": false, + "MIDIMessageEvent": false, + "MIDIOutput": false, + "MIDIOutputMap": false, + "MIDIPort": false, + "Map": false, + "Math": false, + "MathMLElement": false, + "MediaCapabilities": false, + "MediaCapabilitiesInfo": false, + "MediaDeviceInfo": false, + "MediaDevices": false, + "MediaElementAudioSourceNode": false, + "MediaEncryptedEvent": false, + "MediaError": false, + "MediaKeyError": false, + "MediaKeyMessageEvent": false, + "MediaKeySession": false, + "MediaKeyStatusMap": false, + "MediaKeySystemAccess": false, + "MediaKeys": false, + "MediaList": false, + "MediaMetadata": false, + "MediaQueryList": false, + "MediaQueryListEvent": false, + "MediaRecorder": false, + "MediaRecorderErrorEvent": false, + "MediaSession": false, + "MediaSource": false, + "MediaSourceHandle": false, + "MediaStream": false, + "MediaStreamAudioDestinationNode": false, + "MediaStreamAudioSourceNode": false, + "MediaStreamEvent": false, + "MediaStreamTrack": false, + "MediaStreamTrackAudioSourceNode": false, + "MediaStreamTrackAudioStats": false, + "MediaStreamTrackEvent": false, + "MediaStreamTrackGenerator": false, + "MediaStreamTrackProcessor": false, + "MediaStreamTrackVideoStats": false, + "MessageChannel": false, + "MessageEvent": false, + "MessagePort": false, + "MimeType": false, + "MimeTypeArray": false, + "ModelGenericSession": false, + "ModelManager": false, + "MouseEvent": false, + "MutationEvent": false, + "MutationObserver": false, + "MutationRecord": false, + "NaN": false, + "NamedNodeMap": false, + "NavigateEvent": false, + "Navigation": false, + "NavigationActivation": false, + "NavigationCurrentEntryChangeEvent": false, + "NavigationDestination": false, + "NavigationHistoryEntry": false, + "NavigationPreloadManager": false, + "NavigationTransition": false, + "Navigator": false, + "NavigatorLogin": false, + "NavigatorManagedData": false, + "NavigatorUAData": false, + "NetworkInformation": false, + "Node": false, + "NodeFilter": false, + "NodeIterator": false, + "NodeList": false, + "NotRestoredReasonDetails": false, + "NotRestoredReasons": false, + "Notification": false, + "NotifyPaintEvent": false, + "Number": false, + "OTPCredential": false, + "Object": false, + "OfflineAudioCompletionEvent": false, + "OfflineAudioContext": false, + "OffscreenCanvas": false, + "OffscreenCanvasRenderingContext2D": false, + "Option": false, + "OrientationSensor": false, + "OscillatorNode": false, + "OverconstrainedError": false, + "PERSISTENT": false, + "PageRevealEvent": false, + "PageSwapEvent": false, + "PageTransitionEvent": false, + "PannerNode": false, + "PasswordCredential": false, + "Path2D": false, + "PaymentAddress": false, + "PaymentManager": false, + "PaymentMethodChangeEvent": false, + "PaymentRequest": false, + "PaymentRequestUpdateEvent": false, + "PaymentResponse": false, + "Performance": false, + "PerformanceElementTiming": false, + "PerformanceEntry": false, + "PerformanceEventTiming": false, + "PerformanceLongAnimationFrameTiming": false, + "PerformanceLongTaskTiming": false, + "PerformanceMark": false, + "PerformanceMeasure": false, + "PerformanceNavigation": false, + "PerformanceNavigationTiming": false, + "PerformanceObserver": false, + "PerformanceObserverEntryList": false, + "PerformancePaintTiming": false, + "PerformanceResourceTiming": false, + "PerformanceScriptTiming": false, + "PerformanceServerTiming": false, + "PerformanceTiming": false, + "PeriodicSyncManager": false, + "PeriodicWave": false, + "PermissionStatus": false, + "Permissions": false, + "PictureInPictureEvent": false, + "PictureInPictureWindow": false, + "Plugin": false, + "PluginArray": false, + "PointerEvent": false, + "PopStateEvent": false, + "Presentation": false, + "PresentationAvailability": false, + "PresentationConnection": false, + "PresentationConnectionAvailableEvent": false, + "PresentationConnectionCloseEvent": false, + "PresentationConnectionList": false, + "PresentationReceiver": false, + "PresentationRequest": false, + "PressureObserver": false, + "PressureRecord": false, + "ProcessingInstruction": false, + "Profiler": false, + "ProgressEvent": false, + "Promise": false, + "PromiseRejectionEvent": false, + "ProtectedAudience": false, + "Proxy": false, + "PublicKeyCredential": false, + "PushManager": false, + "PushSubscription": false, + "PushSubscriptionOptions": false, + "RTCCertificate": false, + "RTCDTMFSender": false, + "RTCDTMFToneChangeEvent": false, + "RTCDataChannel": false, + "RTCDataChannelEvent": false, + "RTCDtlsTransport": false, + "RTCEncodedAudioFrame": false, + "RTCEncodedVideoFrame": false, + "RTCError": false, + "RTCErrorEvent": false, + "RTCIceCandidate": false, + "RTCIceTransport": false, + "RTCPeerConnection": false, + "RTCPeerConnectionIceErrorEvent": false, + "RTCPeerConnectionIceEvent": false, + "RTCRtpReceiver": false, + "RTCRtpScriptTransform": false, + "RTCRtpSender": false, + "RTCRtpTransceiver": false, + "RTCSctpTransport": false, + "RTCSessionDescription": false, + "RTCStatsReport": false, + "RTCTrackEvent": false, + "RadioNodeList": false, + "Range": false, + "RangeError": false, + "ReadableByteStreamController": false, + "ReadableStream": false, + "ReadableStreamBYOBReader": false, + "ReadableStreamBYOBRequest": false, + "ReadableStreamDefaultController": false, + "ReadableStreamDefaultReader": false, + "ReferenceError": false, + "Reflect": false, + "RegExp": false, + "RelativeOrientationSensor": false, + "RemotePlayback": false, + "ReportingObserver": false, + "Request": false, + "ResizeObserver": false, + "ResizeObserverEntry": false, + "ResizeObserverSize": false, + "Response": false, + "SVGAElement": false, + "SVGAngle": false, + "SVGAnimateElement": false, + "SVGAnimateMotionElement": false, + "SVGAnimateTransformElement": false, + "SVGAnimatedAngle": false, + "SVGAnimatedBoolean": false, + "SVGAnimatedEnumeration": false, + "SVGAnimatedInteger": false, + "SVGAnimatedLength": false, + "SVGAnimatedLengthList": false, + "SVGAnimatedNumber": false, + "SVGAnimatedNumberList": false, + "SVGAnimatedPreserveAspectRatio": false, + "SVGAnimatedRect": false, + "SVGAnimatedString": false, + "SVGAnimatedTransformList": false, + "SVGAnimationElement": false, + "SVGCircleElement": false, + "SVGClipPathElement": false, + "SVGComponentTransferFunctionElement": false, + "SVGDefsElement": false, + "SVGDescElement": false, + "SVGElement": false, + "SVGEllipseElement": false, + "SVGFEBlendElement": false, + "SVGFEColorMatrixElement": false, + "SVGFEComponentTransferElement": false, + "SVGFECompositeElement": false, + "SVGFEConvolveMatrixElement": false, + "SVGFEDiffuseLightingElement": false, + "SVGFEDisplacementMapElement": false, + "SVGFEDistantLightElement": false, + "SVGFEDropShadowElement": false, + "SVGFEFloodElement": false, + "SVGFEFuncAElement": false, + "SVGFEFuncBElement": false, + "SVGFEFuncGElement": false, + "SVGFEFuncRElement": false, + "SVGFEGaussianBlurElement": false, + "SVGFEImageElement": false, + "SVGFEMergeElement": false, + "SVGFEMergeNodeElement": false, + "SVGFEMorphologyElement": false, + "SVGFEOffsetElement": false, + "SVGFEPointLightElement": false, + "SVGFESpecularLightingElement": false, + "SVGFESpotLightElement": false, + "SVGFETileElement": false, + "SVGFETurbulenceElement": false, + "SVGFilterElement": false, + "SVGForeignObjectElement": false, + "SVGGElement": false, + "SVGGeometryElement": false, + "SVGGradientElement": false, + "SVGGraphicsElement": false, + "SVGImageElement": false, + "SVGLength": false, + "SVGLengthList": false, + "SVGLineElement": false, + "SVGLinearGradientElement": false, + "SVGMPathElement": false, + "SVGMarkerElement": false, + "SVGMaskElement": false, + "SVGMatrix": false, + "SVGMetadataElement": false, + "SVGNumber": false, + "SVGNumberList": false, + "SVGPathElement": false, + "SVGPatternElement": false, + "SVGPoint": false, + "SVGPointList": false, + "SVGPolygonElement": false, + "SVGPolylineElement": false, + "SVGPreserveAspectRatio": false, + "SVGRadialGradientElement": false, + "SVGRect": false, + "SVGRectElement": false, + "SVGSVGElement": false, + "SVGScriptElement": false, + "SVGSetElement": false, + "SVGStopElement": false, + "SVGStringList": false, + "SVGStyleElement": false, + "SVGSwitchElement": false, + "SVGSymbolElement": false, + "SVGTSpanElement": false, + "SVGTextContentElement": false, + "SVGTextElement": false, + "SVGTextPathElement": false, + "SVGTextPositioningElement": false, + "SVGTitleElement": false, + "SVGTransform": false, + "SVGTransformList": false, + "SVGUnitTypes": false, + "SVGUseElement": false, + "SVGViewElement": false, + "Scheduler": false, + "Scheduling": false, + "Screen": false, + "ScreenDetailed": false, + "ScreenDetails": false, + "ScreenOrientation": false, + "ScriptProcessorNode": false, + "ScrollTimeline": false, + "SecurityPolicyViolationEvent": false, + "Selection": false, + "Sensor": false, + "SensorErrorEvent": false, + "Serial": false, + "SerialPort": false, + "ServiceWorker": false, + "ServiceWorkerContainer": false, + "ServiceWorkerRegistration": false, + "Set": false, + "ShadowRoot": false, + "SharedArrayBuffer": false, + "SharedStorage": false, + "SharedStorageWorklet": false, + "SharedWorker": false, + "SnapEvent": false, + "SourceBuffer": false, + "SourceBufferList": false, + "SpeechSynthesis": false, + "SpeechSynthesisErrorEvent": false, + "SpeechSynthesisEvent": false, + "SpeechSynthesisUtterance": false, + "SpeechSynthesisVoice": false, + "StaticRange": false, + "StereoPannerNode": false, + "Storage": false, + "StorageBucket": false, + "StorageBucketManager": false, + "StorageEvent": false, + "StorageManager": false, + "String": false, + "StylePropertyMap": false, + "StylePropertyMapReadOnly": false, + "StyleSheet": false, + "StyleSheetList": false, + "SubmitEvent": false, + "SubtleCrypto": false, + "Symbol": false, + "SyncManager": false, + "SyntaxError": false, + "TEMPORARY": false, + "TaskAttributionTiming": false, + "TaskController": false, + "TaskPriorityChangeEvent": false, + "TaskSignal": false, + "Text": false, + "TextDecoder": false, + "TextDecoderStream": false, + "TextEncoder": false, + "TextEncoderStream": false, + "TextEvent": false, + "TextFormat": false, + "TextFormatUpdateEvent": false, + "TextMetrics": false, + "TextTrack": false, + "TextTrackCue": false, + "TextTrackCueList": false, + "TextTrackList": false, + "TextUpdateEvent": false, + "TimeEvent": false, + "TimeRanges": false, + "ToggleEvent": false, + "Touch": false, + "TouchEvent": false, + "TouchList": false, + "TrackEvent": false, + "TransformStream": false, + "TransformStreamDefaultController": false, + "TransitionEvent": false, + "TreeWalker": false, + "TrustedHTML": false, + "TrustedScript": false, + "TrustedScriptURL": false, + "TrustedTypePolicy": false, + "TrustedTypePolicyFactory": false, + "TypeError": false, + "UIEvent": false, + "URIError": false, + "URL": false, + "URLPattern": false, + "URLSearchParams": false, + "USB": false, + "USBAlternateInterface": false, + "USBConfiguration": false, + "USBConnectionEvent": false, + "USBDevice": false, + "USBEndpoint": false, + "USBInTransferResult": false, + "USBInterface": false, + "USBIsochronousInTransferPacket": false, + "USBIsochronousInTransferResult": false, + "USBIsochronousOutTransferPacket": false, + "USBIsochronousOutTransferResult": false, + "USBOutTransferResult": false, + "Uint16Array": false, + "Uint32Array": false, + "Uint8Array": false, + "Uint8ClampedArray": false, + "UserActivation": false, + "VTTCue": false, + "VTTRegion": false, + "ValidityState": false, + "VideoColorSpace": false, + "VideoDecoder": false, + "VideoEncoder": false, + "VideoFrame": false, + "VideoPlaybackQuality": false, + "ViewTimeline": false, + "ViewTransition": false, + "ViewTransitionTypeSet": false, + "VirtualKeyboard": false, + "VirtualKeyboardGeometryChangeEvent": false, + "VisibilityStateEntry": false, + "VisualViewport": false, + "WGSLLanguageFeatures": false, + "WakeLock": false, + "WakeLockSentinel": false, + "WaveShaperNode": false, + "WeakMap": false, + "WeakRef": false, + "WeakSet": false, + "WebAssembly": false, + "WebGL2RenderingContext": false, + "WebGLActiveInfo": false, + "WebGLBuffer": false, + "WebGLContextEvent": false, + "WebGLFramebuffer": false, + "WebGLObject": false, + "WebGLProgram": false, + "WebGLQuery": false, + "WebGLRenderbuffer": false, + "WebGLRenderingContext": false, + "WebGLSampler": false, + "WebGLShader": false, + "WebGLShaderPrecisionFormat": false, + "WebGLSync": false, + "WebGLTexture": false, + "WebGLTransformFeedback": false, + "WebGLUniformLocation": false, + "WebGLVertexArrayObject": false, + "WebSocket": false, + "WebSocketError": false, + "WebSocketStream": false, + "WebTransport": false, + "WebTransportBidirectionalStream": false, + "WebTransportDatagramDuplexStream": false, + "WebTransportError": false, + "WebTransportReceiveStream": false, + "WebTransportSendStream": false, + "WheelEvent": false, + "Window": false, + "WindowControlsOverlay": false, + "WindowControlsOverlayGeometryChangeEvent": false, + "Worker": false, + "Worklet": false, + "WorkletGlobalScope": false, + "WritableStream": false, + "WritableStreamDefaultController": false, + "WritableStreamDefaultWriter": false, + "XMLDocument": false, + "XMLHttpRequest": false, + "XMLHttpRequestEventTarget": false, + "XMLHttpRequestUpload": false, + "XMLSerializer": false, + "XPathEvaluator": false, + "XPathExpression": false, + "XPathResult": false, + "XRAnchor": false, + "XRAnchorSet": false, + "XRBoundedReferenceSpace": false, + "XRCPUDepthInformation": false, + "XRCamera": false, + "XRDOMOverlayState": false, + "XRDepthInformation": false, + "XRFrame": false, + "XRHand": false, + "XRHitTestResult": false, + "XRHitTestSource": false, + "XRInputSource": false, + "XRInputSourceArray": false, + "XRInputSourceEvent": false, + "XRInputSourcesChangeEvent": false, + "XRJointPose": false, + "XRJointSpace": false, + "XRLayer": false, + "XRLightEstimate": false, + "XRLightProbe": false, + "XRPose": false, + "XRRay": false, + "XRReferenceSpace": false, + "XRReferenceSpaceEvent": false, + "XRRenderState": false, + "XRRigidTransform": false, + "XRSession": false, + "XRSessionEvent": false, + "XRSpace": false, + "XRSystem": false, + "XRTransientInputHitTestResult": false, + "XRTransientInputHitTestSource": false, + "XRView": false, + "XRViewerPose": false, + "XRViewport": false, + "XRWebGLBinding": false, + "XRWebGLDepthInformation": false, + "XRWebGLLayer": false, + "XSLTProcessor": false, + "addEventListener": false, + "ai": false, + "alert": false, + "atob": false, + "blur": false, + "btoa": false, + "caches": false, + "cancelAnimationFrame": false, + "cancelIdleCallback": false, + "clearInterval": false, + "clearTimeout": false, + "clientInformation": false, + "close": false, + "closed": false, + "confirm": false, + "console": false, + "cookieStore": false, + "createImageBitmap": false, + "credentialless": false, + "crossOriginIsolated": false, + "crypto": false, + "currentFrame": false, + "currentTime": false, + "customElements": false, + "decodeURI": false, + "decodeURIComponent": false, + "devicePixelRatio": false, + "dispatchEvent": false, + "document": false, + "documentPictureInPicture": false, + "encodeURI": false, + "encodeURIComponent": false, + "escape": false, + "eval": false, + "event": false, + "external": false, + "fence": false, + "fetch": false, + "fetchLater": false, + "find": false, + "focus": false, + "frameElement": false, + "frames": false, + "getComputedStyle": false, + "getScreenDetails": false, + "getSelection": false, + "globalThis": false, + "history": false, + "indexedDB": false, + "innerHeight": false, + "innerWidth": false, + "isFinite": false, + "isNaN": false, + "isSecureContext": false, + "launchQueue": false, + "length": false, + "localStorage": false, + "location": true, + "locationbar": false, + "matchMedia": false, + "menubar": false, + "model": false, + "moveBy": false, + "moveTo": false, + "name": false, + "navigation": false, + "navigator": false, + "offscreenBuffering": false, + "onabort": true, + "onafterprint": true, + "onanimationcancel": true, + "onanimationend": true, + "onanimationiteration": true, + "onanimationstart": true, + "onappinstalled": true, + "onauxclick": true, + "onbeforeinput": true, + "onbeforeinstallprompt": true, + "onbeforematch": true, + "onbeforeprint": true, + "onbeforetoggle": true, + "onbeforeunload": true, + "onbeforexrselect": true, + "onblur": true, + "oncancel": true, + "oncanplay": true, + "oncanplaythrough": true, + "onchange": true, + "onclick": true, + "onclose": true, + "oncontentvisibilityautostatechange": true, + "oncontextlost": true, + "oncontextmenu": true, + "oncontextrestored": true, + "oncopy": true, + "oncuechange": true, + "oncut": true, + "ondblclick": true, + "ondevicemotion": true, + "ondeviceorientation": true, + "ondeviceorientationabsolute": true, + "ondrag": true, + "ondragend": true, + "ondragenter": true, + "ondragleave": true, + "ondragover": true, + "ondragstart": true, + "ondrop": true, + "ondurationchange": true, + "onemptied": true, + "onended": true, + "onerror": true, + "onfocus": true, + "onformdata": true, + "ongamepadconnected": true, + "ongamepaddisconnected": true, + "ongotpointercapture": true, + "onhashchange": true, + "oninput": true, + "oninvalid": true, + "onkeydown": true, + "onkeypress": true, + "onkeyup": true, + "onlanguagechange": true, + "onload": true, + "onloadeddata": true, + "onloadedmetadata": true, + "onloadstart": true, + "onlostpointercapture": true, + "onmessage": true, + "onmessageerror": true, + "onmousedown": true, + "onmouseenter": true, + "onmouseleave": true, + "onmousemove": true, + "onmouseout": true, + "onmouseover": true, + "onmouseup": true, + "onmousewheel": true, + "onoffline": true, + "ononline": true, + "onpagehide": true, + "onpagereveal": true, + "onpageshow": true, + "onpageswap": true, + "onpaste": true, + "onpause": true, + "onplay": true, + "onplaying": true, + "onpointercancel": true, + "onpointerdown": true, + "onpointerenter": true, + "onpointerleave": true, + "onpointermove": true, + "onpointerout": true, + "onpointerover": true, + "onpointerrawupdate": true, + "onpointerup": true, + "onpopstate": true, + "onprogress": true, + "onratechange": true, + "onrejectionhandled": true, + "onreset": true, + "onresize": true, + "onscroll": true, + "onscrollend": true, + "onscrollsnapchange": true, + "onscrollsnapchanging": true, + "onsearch": true, + "onsecuritypolicyviolation": true, + "onseeked": true, + "onseeking": true, + "onselect": true, + "onselectionchange": true, + "onselectstart": true, + "onslotchange": true, + "onstalled": true, + "onstorage": true, + "onsubmit": true, + "onsuspend": true, + "ontimeupdate": true, + "ontoggle": true, + "ontransitioncancel": true, + "ontransitionend": true, + "ontransitionrun": true, + "ontransitionstart": true, + "onunhandledrejection": true, + "onunload": true, + "onvolumechange": true, + "onwaiting": true, + "onwheel": true, + "open": false, + "opener": false, + "origin": false, + "originAgentCluster": false, + "outerHeight": false, + "outerWidth": false, + "pageXOffset": false, + "pageYOffset": false, + "parent": false, + "parseFloat": false, + "parseInt": false, + "performance": false, + "personalbar": false, + "postMessage": false, + "print": false, + "prompt": false, + "queryLocalFonts": false, + "queueMicrotask": false, + "registerProcessor": false, + "removeEventListener": false, + "reportError": false, + "requestAnimationFrame": false, + "requestIdleCallback": false, + "resizeBy": false, + "resizeTo": false, + "sampleRate": false, + "scheduler": false, + "screen": false, + "screenLeft": false, + "screenTop": false, + "screenX": false, + "screenY": false, + "scroll": false, + "scrollBy": false, + "scrollTo": false, + "scrollX": false, + "scrollY": false, + "scrollbars": false, + "self": false, + "sessionStorage": false, + "setInterval": false, + "setTimeout": false, + "sharedStorage": false, + "showDirectoryPicker": false, + "showOpenFilePicker": false, + "showSaveFilePicker": false, + "speechSynthesis": false, + "status": false, + "statusbar": false, + "stop": false, + "structuredClone": false, + "styleMedia": false, + "toolbar": false, + "top": false, + "trustedTypes": false, + "undefined": false, + "unescape": false, + "visualViewport": false, + "window": false, + }, + "parser": "typescript-eslint/parser@8.26.0", + "parserOptions": { + "ecmaFeatures": { + "jsx": true, + }, + "project": "/home/circleci/project/packages/eslint-config/test/__fixtures__/tsconfig.json", }, - "ecmaVersion": "latest", - "project": "/packages/eslint-config/test/__fixtures__/tsconfig.json", "sourceType": "module", }, + "linterOptions": { + "reportUnusedDisableDirectives": 2, + }, "plugins": [ - "@stylistic", - "switch-case", - "gettext", + "@", "import", + "gettext", + "switch-case", + "@stylistic", "jsdoc", - "prettier", + "prettier:eslint-plugin-prettier@5.2.3", "react", - "jsx-a11y", - "react-hooks", + "react-hooks:eslint-plugin-react-hooks", + "jsx-a11y:eslint-plugin-jsx-a11y@6.10.2", + "@typescript-eslint:@typescript-eslint/eslint-plugin@8.26.0", "@bigcommerce", - "@typescript-eslint", ], - "reportUnusedDisableDirectives": true, + "processor": undefined, "rules": { "@babel/object-curly-spacing": [ - "off", + 0, ], "@babel/semi": [ - "off", - ], - "@bigcommerce/jsx-short-circuit-conditionals": [ - "error", + 0, ], "@stylistic/padding-line-between-statements": [ - "warn", + 1, { "blankLine": "always", "next": "return", @@ -109,7 +1296,7 @@ exports[`keeps rules stable 1`] = ` }, ], "@stylistic/spaced-comment": [ - "warn", + 1, "always", { "block": { @@ -136,61 +1323,61 @@ exports[`keeps rules stable 1`] = ` }, ], "@typescript-eslint/adjacent-overload-signatures": [ - "error", + 2, ], "@typescript-eslint/array-type": [ - "error", + 2, { "default": "array-simple", }, ], "@typescript-eslint/await-thenable": [ - "error", + 2, ], "@typescript-eslint/ban-ts-comment": [ - "error", + 2, { "minimumDescriptionLength": 10, }, ], "@typescript-eslint/ban-tslint-comment": [ - "error", + 2, ], "@typescript-eslint/block-spacing": [ - "off", + 0, ], "@typescript-eslint/brace-style": [ - "off", + 0, ], "@typescript-eslint/class-literal-property-style": [ - "error", + 2, ], "@typescript-eslint/comma-dangle": [ - "off", + 0, ], "@typescript-eslint/comma-spacing": [ - "off", + 0, ], "@typescript-eslint/consistent-generic-constructors": [ - "off", + 0, ], "@typescript-eslint/consistent-indexed-object-style": [ - "error", + 2, ], "@typescript-eslint/consistent-type-assertions": [ - "error", + 2, { "assertionStyle": "never", }, ], "@typescript-eslint/consistent-type-definitions": [ - "error", + 2, ], "@typescript-eslint/default-param-last": [ - "error", + 2, ], "@typescript-eslint/dot-notation": [ - "error", + 2, { "allowIndexSignaturePropertyAccess": false, "allowKeywords": true, @@ -200,40 +1387,40 @@ exports[`keeps rules stable 1`] = ` }, ], "@typescript-eslint/explicit-function-return-type": [ - "off", + 0, ], "@typescript-eslint/explicit-member-accessibility": [ - "error", + 2, { "accessibility": "no-public", }, ], "@typescript-eslint/explicit-module-boundary-types": [ - "off", + 0, ], "@typescript-eslint/func-call-spacing": [ - "off", + 0, ], "@typescript-eslint/indent": [ - "off", + 0, ], "@typescript-eslint/key-spacing": [ - "off", + 0, ], "@typescript-eslint/keyword-spacing": [ - "off", + 0, ], "@typescript-eslint/lines-around-comment": [ - "off", + 0, ], "@typescript-eslint/member-delimiter-style": [ - "off", + 0, ], "@typescript-eslint/member-ordering": [ - "error", + 2, ], "@typescript-eslint/naming-convention": [ - "error", + 2, { "format": [ "camelCase", @@ -315,79 +1502,82 @@ exports[`keeps rules stable 1`] = ` }, ], "@typescript-eslint/no-array-constructor": [ - "error", + 2, ], "@typescript-eslint/no-array-delete": [ - "error", + 2, ], "@typescript-eslint/no-base-to-string": [ - "error", + 2, ], "@typescript-eslint/no-confusing-non-null-assertion": [ - "error", + 2, ], "@typescript-eslint/no-confusing-void-expression": [ - "error", + 2, { "ignoreArrowShorthand": true, }, ], "@typescript-eslint/no-deprecated": [ - "error", + 2, ], "@typescript-eslint/no-duplicate-enum-values": [ - "error", + 2, ], "@typescript-eslint/no-duplicate-type-constituents": [ - "error", + 2, ], "@typescript-eslint/no-dynamic-delete": [ - "error", + 2, ], "@typescript-eslint/no-empty-function": [ - "error", + 2, + { + "allow": [], + }, ], "@typescript-eslint/no-empty-object-type": [ - "error", + 2, ], "@typescript-eslint/no-explicit-any": [ - "error", + 2, ], "@typescript-eslint/no-extra-non-null-assertion": [ - "error", + 2, ], "@typescript-eslint/no-extra-parens": [ - "off", + 0, ], "@typescript-eslint/no-extra-semi": [ - "off", + 0, ], "@typescript-eslint/no-extraneous-class": [ - "error", + 2, ], "@typescript-eslint/no-floating-promises": [ - "error", + 2, ], "@typescript-eslint/no-for-in-array": [ - "error", + 2, ], "@typescript-eslint/no-implied-eval": [ - "error", + 2, ], "@typescript-eslint/no-inferrable-types": [ - "error", + 2, ], "@typescript-eslint/no-invalid-void-type": [ - "error", + 2, ], "@typescript-eslint/no-meaningless-void-operator": [ - "error", + 2, ], "@typescript-eslint/no-misused-new": [ - "error", + 2, ], "@typescript-eslint/no-misused-promises": [ - "error", + 2, { "checksVoidReturn": { "attributes": false, @@ -395,94 +1585,99 @@ exports[`keeps rules stable 1`] = ` }, ], "@typescript-eslint/no-misused-spread": [ - "error", + 2, ], "@typescript-eslint/no-mixed-enums": [ - "error", + 2, ], "@typescript-eslint/no-namespace": [ - "error", + 2, { "allowDeclarations": true, }, ], "@typescript-eslint/no-non-null-asserted-nullish-coalescing": [ - "error", + 2, ], "@typescript-eslint/no-non-null-asserted-optional-chain": [ - "error", + 2, ], "@typescript-eslint/no-non-null-assertion": [ - "error", + 2, ], "@typescript-eslint/no-redundant-type-constituents": [ - "error", + 2, ], "@typescript-eslint/no-require-imports": [ - "error", + 2, ], "@typescript-eslint/no-shadow": [ - "error", + 2, { "hoist": "all", }, ], "@typescript-eslint/no-this-alias": [ - "error", + 2, ], "@typescript-eslint/no-unnecessary-boolean-literal-compare": [ - "error", + 2, ], "@typescript-eslint/no-unnecessary-condition": [ - "error", + 2, ], "@typescript-eslint/no-unnecessary-template-expression": [ - "error", + 2, ], "@typescript-eslint/no-unnecessary-type-arguments": [ - "error", + 2, ], "@typescript-eslint/no-unnecessary-type-assertion": [ - "error", + 2, ], "@typescript-eslint/no-unnecessary-type-constraint": [ - "error", + 2, ], "@typescript-eslint/no-unnecessary-type-parameters": [ - "error", + 2, ], "@typescript-eslint/no-unsafe-argument": [ - "error", + 2, ], "@typescript-eslint/no-unsafe-assignment": [ - "error", + 2, ], "@typescript-eslint/no-unsafe-call": [ - "error", + 2, ], "@typescript-eslint/no-unsafe-declaration-merging": [ - "error", + 2, ], "@typescript-eslint/no-unsafe-enum-comparison": [ - "error", + 2, ], "@typescript-eslint/no-unsafe-function-type": [ - "error", + 2, ], "@typescript-eslint/no-unsafe-member-access": [ - "error", + 2, ], "@typescript-eslint/no-unsafe-return": [ - "error", + 2, ], "@typescript-eslint/no-unsafe-unary-minus": [ - "error", + 2, ], "@typescript-eslint/no-unused-expressions": [ - "error", + 2, + { + "allowShortCircuit": false, + "allowTaggedTemplates": false, + "allowTernary": false, + }, ], "@typescript-eslint/no-unused-vars": [ - "error", + 2, { "args": "after-used", "ignoreRestSiblings": true, @@ -490,77 +1685,77 @@ exports[`keeps rules stable 1`] = ` }, ], "@typescript-eslint/no-use-before-define": [ - "error", + 2, "nofunc", ], "@typescript-eslint/no-useless-constructor": [ - "error", + 2, ], "@typescript-eslint/no-wrapper-object-types": [ - "error", + 2, ], "@typescript-eslint/non-nullable-type-assertion-style": [ - "error", + 2, ], "@typescript-eslint/object-curly-spacing": [ - "off", + 0, ], "@typescript-eslint/only-throw-error": [ - "error", + 2, ], "@typescript-eslint/prefer-as-const": [ - "error", + 2, ], "@typescript-eslint/prefer-find": [ - "error", + 2, ], "@typescript-eslint/prefer-for-of": [ - "error", + 2, ], "@typescript-eslint/prefer-function-type": [ - "error", + 2, ], "@typescript-eslint/prefer-includes": [ - "error", + 2, ], "@typescript-eslint/prefer-literal-enum-member": [ - "error", + 2, ], "@typescript-eslint/prefer-namespace-keyword": [ - "error", + 2, ], "@typescript-eslint/prefer-nullish-coalescing": [ - "error", + 2, ], "@typescript-eslint/prefer-optional-chain": [ - "error", + 2, ], "@typescript-eslint/prefer-promise-reject-errors": [ - "error", + 2, ], "@typescript-eslint/prefer-reduce-type-parameter": [ - "error", + 2, ], "@typescript-eslint/prefer-regexp-exec": [ - "error", + 2, ], "@typescript-eslint/prefer-return-this-type": [ - "error", + 2, ], "@typescript-eslint/prefer-string-starts-ends-with": [ - "error", + 2, ], "@typescript-eslint/quotes": [ 0, ], "@typescript-eslint/related-getter-setter-pairs": [ - "error", + 2, ], "@typescript-eslint/require-await": [ - "error", + 2, ], "@typescript-eslint/restrict-plus-operands": [ - "error", + 2, { "allowAny": false, "allowBoolean": false, @@ -570,88 +1765,93 @@ exports[`keeps rules stable 1`] = ` }, ], "@typescript-eslint/restrict-template-expressions": [ - "error", + 2, { "allowNumber": true, }, ], "@typescript-eslint/return-await": [ - "error", - "error-handling-correctness-only", + 2, ], "@typescript-eslint/semi": [ - "off", + 0, ], "@typescript-eslint/space-before-blocks": [ - "off", + 0, ], "@typescript-eslint/space-before-function-paren": [ - "off", + 0, ], "@typescript-eslint/space-infix-ops": [ - "off", + 0, ], "@typescript-eslint/triple-slash-reference": [ - "error", + 2, ], "@typescript-eslint/type-annotation-spacing": [ - "off", + 0, ], "@typescript-eslint/unbound-method": [ - "off", + 0, ], "@typescript-eslint/unified-signatures": [ - "error", + 2, ], "@typescript-eslint/use-unknown-in-catch-callback-variable": [ - "error", + 2, ], "array-bracket-newline": [ - "off", + 0, ], "array-bracket-spacing": [ - "off", + 0, ], "array-callback-return": [ - "error", + 2, + { + "allowImplicit": false, + "allowVoid": false, + "checkForEach": false, + }, ], "array-element-newline": [ - "off", + 0, ], "arrow-body-style": [ - "off", + 2, "as-needed", { "requireReturnForObjectLiteral": false, }, ], "arrow-parens": [ - "off", + 0, ], "arrow-spacing": [ - "off", + 0, ], "babel/object-curly-spacing": [ - "off", + 0, ], "babel/quotes": [ 0, ], "babel/semi": [ - "off", + 0, ], "block-scoped-var": [ - "error", + 2, ], "block-spacing": [ - "off", + 0, ], "brace-style": [ - "off", + 0, ], "camelcase": [ - "off", + 0, { + "allow": [], "ignoreDestructuring": false, "ignoreGlobals": false, "ignoreImports": false, @@ -659,133 +1859,137 @@ exports[`keeps rules stable 1`] = ` }, ], "comma-dangle": [ - "off", + 0, ], "comma-spacing": [ - "off", + 0, ], "comma-style": [ - "off", + 0, ], "complexity": [ - "error", + 2, + 20, ], "computed-property-spacing": [ - "off", + 0, ], "consistent-return": [ - "off", + 0, + { + "treatUndefinedAsUnspecified": false, + }, ], "constructor-super": [ - "off", + 2, ], "curly": [ - "error", + 2, "all", ], "default-case": [ - "off", + 0, + {}, ], "default-param-last": [ - "off", + 0, ], "dot-location": [ - "off", + 0, ], "dot-notation": [ - "off", + 0, { "allowKeywords": true, "allowPattern": "", }, ], "eol-last": [ - "off", + 0, ], "eqeqeq": [ - "error", + 2, "smart", ], "flowtype/boolean-style": [ - "off", + 0, ], "flowtype/delimiter-dangle": [ - "off", + 0, ], "flowtype/generic-spacing": [ - "off", + 0, ], "flowtype/object-type-curly-spacing": [ - "off", + 0, ], "flowtype/object-type-delimiter": [ - "off", + 0, ], "flowtype/quotes": [ - "off", + 0, ], "flowtype/semi": [ - "off", + 0, ], "flowtype/space-after-type-colon": [ - "off", + 0, ], "flowtype/space-before-generic-bracket": [ - "off", + 0, ], "flowtype/space-before-type-colon": [ - "off", + 0, ], "flowtype/union-intersection-spacing": [ - "off", + 0, ], "for-direction": [ - "error", + 2, ], "func-call-spacing": [ - "off", + 0, ], "func-names": [ - "error", + 2, + "always", + {}, ], "function-call-argument-newline": [ - "off", + 0, ], "function-paren-newline": [ - "off", + 0, ], "generator-star": [ - "off", + 0, ], "generator-star-spacing": [ - "off", + 0, ], "getter-return": [ - "off", + 2, { "allowImplicit": true, }, ], "gettext/no-variable-string": [ - "error", + 2, ], "guard-for-in": [ - "error", + 2, ], "implicit-arrow-linebreak": [ - "off", + 0, ], "import/default": [ - "off", + 0, ], "import/dynamic-import-chunkname": [ - "error", - ], - "import/export": [ 2, ], "import/extensions": [ - "error", + 2, { "js": "never", "json": "always", @@ -795,46 +1999,37 @@ exports[`keeps rules stable 1`] = ` }, ], "import/named": [ - "off", - ], - "import/namespace": [ - 2, + 0, ], "import/newline-after-import": [ - "warn", + 1, ], "import/no-absolute-path": [ - "error", + 2, ], "import/no-amd": [ - "error", + 2, ], "import/no-duplicates": [ - "warn", + 1, { "prefer-inline": true, }, ], "import/no-dynamic-require": [ - "error", + 2, ], "import/no-extraneous-dependencies": [ - "error", + 2, ], "import/no-mutable-exports": [ - "error", - ], - "import/no-named-as-default": [ - 1, - ], - "import/no-named-as-default-member": [ - 1, + 2, ], "import/no-named-default": [ - "error", + 2, ], "import/no-unresolved": [ - "error", + 2, { "caseSensitive": true, "caseSensitiveStrict": false, @@ -842,10 +2037,10 @@ exports[`keeps rules stable 1`] = ` }, ], "import/no-webpack-loader-syntax": [ - "error", + 2, ], "import/order": [ - "warn", + 1, { "alphabetize": { "caseInsensitive": true, @@ -869,73 +2064,73 @@ exports[`keeps rules stable 1`] = ` }, ], "indent": [ - "off", + 0, ], "indent-legacy": [ - "off", + 0, ], "jsdoc/check-alignment": [ - "error", + 2, ], "jsdoc/check-param-names": [ - "error", + 2, ], "jsdoc/check-syntax": [ - "error", + 2, ], "jsdoc/check-tag-names": [ - "error", + 2, ], "jsdoc/implements-on-classes": [ - "error", + 2, ], "jsdoc/require-param-name": [ - "error", + 2, ], "jsdoc/require-param-type": [ - "error", + 2, ], "jsdoc/require-returns-check": [ - "error", + 2, ], "jsdoc/require-returns-type": [ - "error", + 2, ], "jsx-a11y/alt-text": [ - "error", + 2, ], "jsx-a11y/anchor-ambiguous-text": [ - "off", + 0, ], "jsx-a11y/anchor-has-content": [ - "error", + 2, ], "jsx-a11y/anchor-is-valid": [ - "error", + 2, ], "jsx-a11y/aria-activedescendant-has-tabindex": [ - "error", + 2, ], "jsx-a11y/aria-props": [ - "error", + 2, ], "jsx-a11y/aria-proptypes": [ - "error", + 2, ], "jsx-a11y/aria-role": [ - "error", + 2, ], "jsx-a11y/aria-unsupported-elements": [ - "error", + 2, ], "jsx-a11y/autocomplete-valid": [ - "error", + 2, ], "jsx-a11y/click-events-have-key-events": [ - "error", + 2, ], "jsx-a11y/control-has-associated-label": [ - "off", + 0, { "ignoreElements": [ "audio", @@ -965,19 +2160,19 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/heading-has-content": [ - "error", + 2, ], "jsx-a11y/html-has-lang": [ - "error", + 2, ], "jsx-a11y/iframe-has-title": [ - "error", + 2, ], "jsx-a11y/img-redundant-alt": [ - "error", + 2, ], "jsx-a11y/interactive-supports-focus": [ - "error", + 2, { "tabbable": [ "button", @@ -991,28 +2186,28 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/label-has-associated-control": [ - "error", + 2, ], "jsx-a11y/label-has-for": [ - "off", + 0, ], "jsx-a11y/media-has-caption": [ - "error", + 2, ], "jsx-a11y/mouse-events-have-key-events": [ - "error", + 2, ], "jsx-a11y/no-access-key": [ - "error", + 2, ], "jsx-a11y/no-autofocus": [ - "error", + 2, ], "jsx-a11y/no-distracting-elements": [ - "error", + 2, ], "jsx-a11y/no-interactive-element-to-noninteractive-role": [ - "error", + 2, { "canvas": [ "img", @@ -1024,7 +2219,7 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/no-noninteractive-element-interactions": [ - "error", + 2, { "alert": [ "onKeyUp", @@ -1061,7 +2256,7 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/no-noninteractive-element-to-interactive-role": [ - "error", + 2, { "fieldset": [ "radiogroup", @@ -1103,7 +2298,7 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/no-noninteractive-tabindex": [ - "error", + 2, { "allowExpressionValues": true, "roles": [ @@ -1113,13 +2308,13 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/no-onchange": [ - "off", + 0, ], "jsx-a11y/no-redundant-roles": [ - "error", + 2, ], "jsx-a11y/no-static-element-interactions": [ - "error", + 2, { "allowExpressionValues": true, "handlers": [ @@ -1133,47 +2328,47 @@ exports[`keeps rules stable 1`] = ` }, ], "jsx-a11y/role-has-required-aria-props": [ - "error", + 2, ], "jsx-a11y/role-supports-aria-props": [ - "error", + 2, ], "jsx-a11y/scope": [ - "error", + 2, ], "jsx-a11y/tabindex-no-positive": [ - "error", + 2, ], "jsx-quotes": [ - "off", + 0, ], "key-spacing": [ - "off", + 0, ], "keyword-spacing": [ - "off", + 0, ], "linebreak-style": [ - "off", + 0, ], "lines-around-comment": [ 0, ], "max-classes-per-file": [ - "error", + 2, 1, ], "max-len": [ 0, ], "max-statements-per-line": [ - "off", + 0, ], "multiline-ternary": [ - "off", + 0, ], "new-cap": [ - "error", + 2, { "capIsNew": false, "capIsNewExceptions": [ @@ -1187,104 +2382,122 @@ exports[`keeps rules stable 1`] = ` }, ], "new-parens": [ - "off", + 0, ], "newline-per-chained-call": [ - "off", + 0, ], "no-alert": [ - "warn", + 1, ], "no-array-constructor": [ - "off", + 0, ], "no-arrow-condition": [ - "off", + 0, ], "no-async-promise-executor": [ - "error", + 2, ], "no-await-in-loop": [ - "error", + 2, ], "no-bitwise": [ - "error", + 2, + { + "allow": [], + "int32Hint": false, + }, ], "no-caller": [ - "error", + 2, ], "no-case-declarations": [ - "error", + 2, ], "no-class-assign": [ - "off", + 2, ], "no-comma-dangle": [ - "off", + 0, ], "no-compare-neg-zero": [ - "error", + 2, ], "no-cond-assign": [ - "error", + 2, "always", ], "no-confusing-arrow": [ 0, ], "no-console": [ - "warn", + 1, + {}, ], "no-const-assign": [ - "off", + 2, + ], + "no-constant-binary-expression": [ + 2, ], "no-constant-condition": [ - "warn", + 1, + { + "checkLoops": "allExceptWhileTrue", + }, ], "no-continue": [ - "error", + 2, ], "no-control-regex": [ - "error", + 2, ], "no-debugger": [ - "error", + 2, ], "no-delete-var": [ - "error", + 2, ], "no-dupe-args": [ - "off", + 2, ], "no-dupe-class-members": [ - "off", + 2, ], "no-dupe-else-if": [ - "error", + 2, ], "no-dupe-keys": [ - "off", + 2, ], "no-duplicate-case": [ - "error", + 2, ], "no-duplicate-imports": [ - "off", + 0, + { + "allowSeparateTypeImports": false, + "includeExports": false, + }, ], "no-else-return": [ - "error", + 2, { "allowElseIf": true, }, ], "no-empty": [ - "error", + 2, + { + "allowEmptyCatch": false, + }, ], "no-empty-character-class": [ - "error", + 2, ], "no-empty-function": [ - "off", + 0, { "allow": [ "arrowFunctions", @@ -1294,164 +2507,198 @@ exports[`keeps rules stable 1`] = ` }, ], "no-empty-pattern": [ - "error", + 2, + { + "allowObjectPatternsAsParameters": false, + }, + ], + "no-empty-static-block": [ + 2, ], "no-eval": [ - "error", + 2, + { + "allowIndirect": false, + }, ], "no-ex-assign": [ - "error", + 2, ], "no-extend-native": [ - "error", + 2, + { + "exceptions": [], + }, ], "no-extra-bind": [ - "error", + 2, ], "no-extra-boolean-cast": [ - "error", + 2, + {}, ], "no-extra-label": [ - "error", + 2, ], "no-extra-parens": [ - "off", + 0, ], "no-extra-semi": [ - "off", + 0, ], "no-fallthrough": [ - "error", + 2, + { + "allowEmptyCase": false, + "reportUnusedFallthroughComment": false, + }, ], "no-floating-decimal": [ - "off", + 0, ], "no-func-assign": [ - "off", + 2, ], "no-global-assign": [ - "error", + 2, + { + "exceptions": [], + }, ], "no-implied-eval": [ - "off", + 0, ], "no-import-assign": [ - "off", - ], - "no-inner-declarations": [ - "error", + 2, ], "no-invalid-regexp": [ - "error", + 2, + {}, ], "no-irregular-whitespace": [ - "error", + 2, + { + "skipComments": false, + "skipJSXText": false, + "skipRegExps": false, + "skipStrings": true, + "skipTemplates": false, + }, ], "no-iterator": [ - "error", + 2, ], "no-label-var": [ - "error", + 2, ], "no-labels": [ - "error", + 2, { "allowLoop": false, "allowSwitch": false, }, ], "no-lone-blocks": [ - "error", + 2, ], "no-lonely-if": [ - "error", + 2, ], "no-loop-func": [ - "error", + 2, ], "no-loss-of-precision": [ - "error", + 2, ], "no-misleading-character-class": [ - "error", + 2, + { + "allowEscape": false, + }, ], "no-mixed-operators": [ 0, ], "no-mixed-spaces-and-tabs": [ - "off", + 0, ], "no-multi-assign": [ - "error", + 2, + { + "ignoreNonDeclaration": false, + }, ], "no-multi-spaces": [ - "off", + 0, ], "no-multi-str": [ - "error", + 2, ], "no-multiple-empty-lines": [ - "off", + 0, ], "no-nested-ternary": [ - "error", + 2, ], "no-new": [ - "error", + 2, ], "no-new-func": [ - "error", + 2, ], "no-new-native-nonconstructor": [ - "off", - ], - "no-new-symbol": [ - "off", + 2, ], "no-new-wrappers": [ - "error", + 2, ], "no-nonoctal-decimal-escape": [ - "error", + 2, ], "no-obj-calls": [ - "off", + 2, ], "no-object-constructor": [ - "error", + 2, ], "no-octal": [ - "error", + 2, ], "no-octal-escape": [ - "error", + 2, ], "no-param-reassign": [ - "error", + 2, { "props": false, }, ], "no-plusplus": [ - "error", + 2, + { + "allowForLoopAfterthoughts": false, + }, ], "no-proto": [ - "error", + 2, ], "no-prototype-builtins": [ - "off", + 0, ], "no-redeclare": [ - "off", + 2, + { + "builtinGlobals": true, + }, ], "no-regex-spaces": [ - "error", + 2, ], "no-reserved-keys": [ - "off", + 0, ], "no-restricted-globals": [ - "error", + 2, "isFinite", "isNaN", "addEventListener", @@ -1514,10 +2761,10 @@ exports[`keeps rules stable 1`] = ` "top", ], "no-restricted-imports": [ - "error", + 2, ], "no-restricted-properties": [ - "error", + 2, { "message": "arguments.callee is deprecated", "object": "arguments", @@ -1568,7 +2815,7 @@ exports[`keeps rules stable 1`] = ` }, ], "no-restricted-syntax": [ - "error", + 2, { "message": "for..in loops iterate over the entire prototype chain, which is virtually never what you want. Use Object.{keys,values,entries}, and iterate over the resulting array.", "selector": "ForInStatement", @@ -1595,71 +2842,87 @@ exports[`keeps rules stable 1`] = ` }, ], "no-return-assign": [ - "error", + 2, "except-parens", ], "no-return-await": [ - "off", + 0, ], "no-script-url": [ - "error", + 2, ], "no-self-assign": [ - "error", + 2, + { + "props": true, + }, ], "no-self-compare": [ - "error", + 2, ], "no-sequences": [ - "error", + 2, + { + "allowInParentheses": true, + }, ], "no-setter-return": [ - "off", + 2, ], "no-shadow": [ - "off", + 0, { + "allow": [], "builtinGlobals": false, "hoist": "all", + "ignoreFunctionTypeParameterNameValueShadow": true, "ignoreOnInitialization": false, + "ignoreTypeValueShadow": true, }, ], "no-shadow-restricted-names": [ - "error", + 2, + { + "reportGlobalThis": false, + }, ], "no-space-before-semi": [ - "off", + 0, ], "no-spaced-func": [ - "off", + 0, ], "no-sparse-arrays": [ - "error", + 2, ], "no-tabs": [ 0, ], "no-template-curly-in-string": [ - "error", + 2, ], "no-this-before-super": [ - "off", + 2, ], "no-throw-literal": [ - "off", + 0, ], "no-trailing-spaces": [ - "off", + 0, ], "no-undef": [ - "off", + 2, + { + "typeof": false, + }, ], "no-undef-init": [ - "error", + 2, ], "no-underscore-dangle": [ - "error", + 2, { + "allow": [], "allowAfterSuper": true, "allowAfterThis": true, "allowAfterThisConstructor": false, @@ -1674,31 +2937,47 @@ exports[`keeps rules stable 1`] = ` 0, ], "no-unneeded-ternary": [ - "error", + 2, { "defaultAssignment": false, }, ], "no-unreachable": [ - "off", + 2, ], "no-unsafe-finally": [ - "error", + 2, ], "no-unsafe-negation": [ - "off", + 2, + { + "enforceForOrderingRelations": false, + }, ], "no-unsafe-optional-chaining": [ - "error", + 2, + { + "disallowArithmeticOperators": false, + }, ], "no-unused-expressions": [ - "off", + 0, + { + "allowShortCircuit": false, + "allowTaggedTemplates": false, + "allowTernary": false, + "enforceForJSX": false, + "ignoreDirectives": false, + }, ], "no-unused-labels": [ - "error", + 2, + ], + "no-unused-private-class-members": [ + 2, ], "no-unused-vars": [ - "off", + 0, { "args": "after-used", "ignoreRestSiblings": true, @@ -1706,29 +2985,35 @@ exports[`keeps rules stable 1`] = ` }, ], "no-use-before-define": [ - "off", + 0, "nofunc", ], "no-useless-backreference": [ - "error", + 2, ], "no-useless-catch": [ - "error", + 2, ], "no-useless-computed-key": [ - "error", + 2, + { + "enforceForClassMembers": true, + }, ], "no-useless-concat": [ - "error", + 2, ], "no-useless-constructor": [ - "off", + 0, ], "no-useless-escape": [ - "error", + 2, + { + "allowRegexCharacters": [], + }, ], "no-useless-rename": [ - "error", + 2, { "ignoreDestructuring": false, "ignoreExport": false, @@ -1736,40 +3021,40 @@ exports[`keeps rules stable 1`] = ` }, ], "no-useless-return": [ - "error", + 2, ], "no-var": [ - "error", + 2, ], "no-void": [ - "error", + 2, { "allowAsStatement": true, }, ], "no-whitespace-before-property": [ - "off", + 0, ], "no-with": [ - "error", + 2, ], "no-wrap-func": [ - "off", + 0, ], "nonblock-statement-body-position": [ - "off", + 0, ], "object-curly-newline": [ - "off", + 0, ], "object-curly-spacing": [ - "off", + 0, ], "object-property-newline": [ - "off", + 0, ], "object-shorthand": [ - "error", + 2, "always", { "avoidQuotes": true, @@ -1777,53 +3062,53 @@ exports[`keeps rules stable 1`] = ` }, ], "one-var": [ - "error", + 2, "never", ], "one-var-declaration-per-line": [ - "off", + 0, ], "operator-assignment": [ - "error", + 2, "always", ], "operator-linebreak": [ - "off", + 0, ], "padded-blocks": [ - "off", + 0, ], "prefer-arrow-callback": [ - "off", + 2, { "allowNamedFunctions": false, "allowUnboundThis": true, }, ], "prefer-const": [ - "error", + 2, { "destructuring": "any", "ignoreReadBeforeAssign": true, }, ], "prefer-numeric-literals": [ - "error", + 2, ], "prefer-promise-reject-errors": [ - "off", + 0, + { + "allowEmptyReject": false, + }, ], "prefer-rest-params": [ - "error", - ], - "prefer-spread": [ - "error", + 2, ], "prefer-template": [ - "error", + 2, ], "prettier/prettier": [ - "warn", + 1, { "printWidth": 100, "singleQuote": true, @@ -1834,37 +3119,38 @@ exports[`keeps rules stable 1`] = ` }, ], "quote-props": [ - "off", + 0, ], "quotes": [ 0, ], "radix": [ - "error", + 2, + "always", ], "react-hooks/exhaustive-deps": [ - "error", + 2, ], "react-hooks/rules-of-hooks": [ - "error", + 2, ], "react/destructuring-assignment": [ - "error", + 2, ], "react/display-name": [ - "off", + 0, ], "react/jsx-child-element-spacing": [ - "off", + 0, ], "react/jsx-closing-bracket-location": [ - "off", + 0, ], "react/jsx-closing-tag-location": [ - "off", + 0, ], "react/jsx-curly-brace-presence": [ - "error", + 2, { "children": "never", "propElementValues": "always", @@ -1872,38 +3158,38 @@ exports[`keeps rules stable 1`] = ` }, ], "react/jsx-curly-newline": [ - "off", + 0, ], "react/jsx-curly-spacing": [ - "off", + 0, ], "react/jsx-equals-spacing": [ - "off", + 0, ], "react/jsx-first-prop-new-line": [ - "off", + 0, ], "react/jsx-fragments": [ - "error", + 2, "syntax", ], "react/jsx-indent": [ - "off", + 0, ], "react/jsx-indent-props": [ - "off", + 0, ], "react/jsx-key": [ 2, ], "react/jsx-max-props-per-line": [ - "off", + 0, ], "react/jsx-newline": [ - "off", + 0, ], "react/jsx-no-bind": [ - "error", + 2, { "allowArrowFunctions": true, "allowBind": false, @@ -1925,25 +3211,25 @@ exports[`keeps rules stable 1`] = ` 2, ], "react/jsx-no-useless-fragment": [ - "error", + 2, ], "react/jsx-one-expression-per-line": [ - "off", + 0, ], "react/jsx-pascal-case": [ - "error", + 2, ], "react/jsx-props-no-multi-spaces": [ - "off", + 0, ], "react/jsx-sort-props": [ - "warn", + 1, ], "react/jsx-space-before-closing": [ - "off", + 0, ], "react/jsx-tag-spacing": [ - "off", + 0, ], "react/jsx-uses-react": [ 2, @@ -1952,7 +3238,7 @@ exports[`keeps rules stable 1`] = ` 2, ], "react/jsx-wrap-multilines": [ - "off", + 0, ], "react/no-children-prop": [ 2, @@ -1973,7 +3259,7 @@ exports[`keeps rules stable 1`] = ` 2, ], "react/no-redundant-should-component-update": [ - "error", + 2, ], "react/no-render-return-value": [ 2, @@ -1982,10 +3268,10 @@ exports[`keeps rules stable 1`] = ` 2, ], "react/no-this-in-sfc": [ - "error", + 2, ], "react/no-unescaped-entities": [ - "error", + 2, { "forbid": [ { @@ -2007,19 +3293,19 @@ exports[`keeps rules stable 1`] = ` 2, ], "react/no-unsafe": [ - "error", + 2, ], "react/no-unused-state": [ - "error", + 2, ], "react/prefer-es6-class": [ - "error", + 2, ], "react/prefer-read-only-props": [ - "error", + 2, ], "react/prop-types": [ - "off", + 0, ], "react/react-in-jsx-scope": [ 2, @@ -2028,308 +3314,295 @@ exports[`keeps rules stable 1`] = ` 2, ], "react/self-closing-comp": [ - "error", + 2, ], "react/style-prop-object": [ - "error", + 2, ], "require-await": [ - "off", + 0, ], "require-yield": [ - "error", + 2, ], "rest-spread-spacing": [ - "off", + 0, ], "semi": [ - "off", + 0, ], "semi-spacing": [ - "off", + 0, ], "semi-style": [ - "off", + 0, ], "sort-imports": [ - "error", + 2, { "allowSeparatedGroups": false, "ignoreCase": true, "ignoreDeclarationSort": true, "ignoreMemberSort": false, + "memberSyntaxSortOrder": [ + "none", + "all", + "multiple", + "single", + ], }, ], "sort-keys": [ - "off", + 0, + "asc", + { + "allowLineSeparatedGroups": false, + "caseSensitive": true, + "ignoreComputedKeys": false, + "minKeys": 2, + "natural": false, + }, ], "space-after-function-name": [ - "off", + 0, ], "space-after-keywords": [ - "off", + 0, ], "space-before-blocks": [ - "off", + 0, ], "space-before-function-paren": [ - "off", + 0, ], "space-before-function-parentheses": [ - "off", + 0, ], "space-before-keywords": [ - "off", + 0, ], "space-in-brackets": [ - "off", + 0, ], "space-in-parens": [ - "off", + 0, ], "space-infix-ops": [ - "off", + 0, ], "space-return-throw-case": [ - "off", + 0, ], "space-unary-ops": [ - "off", + 0, ], "space-unary-word-ops": [ - "off", + 0, ], "standard/array-bracket-even-spacing": [ - "off", + 0, ], "standard/computed-property-even-spacing": [ - "off", + 0, ], "standard/object-curly-even-spacing": [ - "off", + 0, ], "strict": [ - "error", + 2, + "safe", ], "switch-case/newline-between-switch-case": [ - "warn", + 1, "always", { "fallthrough": "never", }, ], "switch-colon-spacing": [ - "off", + 0, ], "symbol-description": [ - "error", + 2, ], "template-curly-spacing": [ - "off", + 0, ], "template-tag-spacing": [ - "off", + 0, ], "unicorn/empty-brace-spaces": [ - "off", + 0, ], "unicorn/no-nested-ternary": [ - "off", + 0, ], "unicorn/number-literal-case": [ - "off", + 0, ], "unicorn/template-indent": [ 0, ], "use-isnan": [ - "error", + 2, + { + "enforceForIndexOf": false, + "enforceForSwitchCase": true, + }, ], "valid-jsdoc": [ - "off", + 0, { "requireParamDescription": false, - "requireParamType": true, - "requireReturn": true, "requireReturnDescription": false, - "requireReturnType": true, }, ], "valid-typeof": [ - "error", + 2, { "requireStringLiterals": true, }, ], "vars-on-top": [ - "error", + 2, ], "vue/array-bracket-newline": [ - "off", + 0, ], "vue/array-bracket-spacing": [ - "off", + 0, ], "vue/array-element-newline": [ - "off", + 0, ], "vue/arrow-spacing": [ - "off", + 0, ], "vue/block-spacing": [ - "off", + 0, ], "vue/block-tag-newline": [ - "off", + 0, ], "vue/brace-style": [ - "off", + 0, ], "vue/comma-dangle": [ - "off", + 0, ], "vue/comma-spacing": [ - "off", + 0, ], "vue/comma-style": [ - "off", + 0, ], "vue/dot-location": [ - "off", + 0, ], "vue/func-call-spacing": [ - "off", + 0, ], "vue/html-closing-bracket-newline": [ - "off", + 0, ], "vue/html-closing-bracket-spacing": [ - "off", + 0, ], "vue/html-end-tags": [ - "off", + 0, ], "vue/html-indent": [ - "off", + 0, ], "vue/html-quotes": [ - "off", + 0, ], "vue/html-self-closing": [ 0, ], "vue/key-spacing": [ - "off", + 0, ], "vue/keyword-spacing": [ - "off", + 0, ], "vue/max-attributes-per-line": [ - "off", + 0, ], "vue/max-len": [ 0, ], "vue/multiline-html-element-content-newline": [ - "off", + 0, ], "vue/multiline-ternary": [ - "off", + 0, ], "vue/mustache-interpolation-spacing": [ - "off", + 0, ], "vue/no-extra-parens": [ - "off", + 0, ], "vue/no-multi-spaces": [ - "off", + 0, ], "vue/no-spaces-around-equal-signs-in-attribute": [ - "off", + 0, ], "vue/object-curly-newline": [ - "off", + 0, ], "vue/object-curly-spacing": [ - "off", + 0, ], "vue/object-property-newline": [ - "off", + 0, ], "vue/operator-linebreak": [ - "off", + 0, ], "vue/quote-props": [ - "off", + 0, ], "vue/script-indent": [ - "off", + 0, ], "vue/singleline-html-element-content-newline": [ - "off", + 0, ], "vue/space-in-parens": [ - "off", + 0, ], "vue/space-infix-ops": [ - "off", + 0, ], "vue/space-unary-ops": [ - "off", + 0, ], "vue/template-curly-spacing": [ - "off", + 0, ], "wrap-iife": [ - "off", + 0, ], "wrap-regex": [ - "off", + 0, ], "yield-star-spacing": [ - "off", + 0, ], "yoda": [ - "error", + 2, + "never", + { + "exceptRange": false, + "onlyEquality": false, + }, ], }, "settings": { - "import/extensions": [ - ".ts", - ".cts", - ".mts", - ".tsx", - ".js", - ".jsx", - ".mjs", - ".cjs", - ], - "import/external-module-folders": [ - "node_modules", - "node_modules/@types", - ], - "import/parsers": { - "@typescript-eslint/parser": [ - ".ts", - ".cts", - ".mts", - ".tsx", - ], - }, "import/resolver": { - "node": { - "extensions": [ - ".ts", - ".cts", - ".mts", - ".tsx", - ".js", - ".jsx", - ".mjs", - ".cjs", - ], - }, "typescript": { "alwaysTryTypes": true, }, diff --git a/packages/eslint-config/test/__snapshots__/typescript-eslint.spec.js.snap b/packages/eslint-config/test/__snapshots__/typescript-eslint.spec.js.snap index 8e6a2be..78c628a 100644 --- a/packages/eslint-config/test/__snapshots__/typescript-eslint.spec.js.snap +++ b/packages/eslint-config/test/__snapshots__/typescript-eslint.spec.js.snap @@ -2,528 +2,540 @@ exports[`plugin:@typescript-eslint/all if this test fails, the plugin probably added new rules. Please check which rules were added/changed and add them to our config when appropriate 1`] = ` { - "env": {}, - "globals": {}, - "ignorePatterns": [], - "noInlineConfig": undefined, - "parser": "/node_modules/@typescript-eslint/parser/dist/index.js", - "parserOptions": { - "project": "/tsconfig.json", + "language": "@/js", + "languageOptions": { + "ecmaVersion": 2026, + "parser": "typescript-eslint/parser@8.26.0", + "parserOptions": { + "project": "/tsconfig.json", + }, "sourceType": "module", }, + "linterOptions": { + "reportUnusedDisableDirectives": 1, + }, "plugins": [ - "@typescript-eslint", + "@", + "@typescript-eslint:@typescript-eslint/eslint-plugin@8.26.0", ], - "reportUnusedDisableDirectives": undefined, + "processor": undefined, "rules": { "@typescript-eslint/adjacent-overload-signatures": [ - "error", + 2, ], "@typescript-eslint/array-type": [ - "error", + 2, ], "@typescript-eslint/await-thenable": [ - "error", + 2, ], "@typescript-eslint/ban-ts-comment": [ - "error", + 2, ], "@typescript-eslint/ban-tslint-comment": [ - "error", + 2, ], "@typescript-eslint/class-literal-property-style": [ - "error", + 2, ], "@typescript-eslint/class-methods-use-this": [ - "error", + 2, ], "@typescript-eslint/consistent-generic-constructors": [ - "error", + 2, ], "@typescript-eslint/consistent-indexed-object-style": [ - "error", + 2, ], "@typescript-eslint/consistent-return": [ - "error", + 2, + { + "treatUndefinedAsUnspecified": false, + }, ], "@typescript-eslint/consistent-type-assertions": [ - "error", + 2, ], "@typescript-eslint/consistent-type-definitions": [ - "error", + 2, ], "@typescript-eslint/consistent-type-exports": [ - "error", + 2, ], "@typescript-eslint/consistent-type-imports": [ - "error", + 2, ], "@typescript-eslint/default-param-last": [ - "error", + 2, ], "@typescript-eslint/dot-notation": [ - "error", + 2, + { + "allowIndexSignaturePropertyAccess": false, + "allowKeywords": true, + "allowPattern": "", + "allowPrivateClassPropertyAccess": false, + "allowProtectedClassPropertyAccess": false, + }, ], "@typescript-eslint/explicit-function-return-type": [ - "error", + 2, ], "@typescript-eslint/explicit-member-accessibility": [ - "error", + 2, ], "@typescript-eslint/explicit-module-boundary-types": [ - "error", + 2, ], "@typescript-eslint/init-declarations": [ - "error", + 2, ], "@typescript-eslint/max-params": [ - "error", + 2, ], "@typescript-eslint/member-ordering": [ - "error", + 2, ], "@typescript-eslint/method-signature-style": [ - "error", + 2, ], "@typescript-eslint/naming-convention": [ - "error", + 2, ], "@typescript-eslint/no-array-constructor": [ - "error", + 2, ], "@typescript-eslint/no-array-delete": [ - "error", + 2, ], "@typescript-eslint/no-base-to-string": [ - "error", + 2, ], "@typescript-eslint/no-confusing-non-null-assertion": [ - "error", + 2, ], "@typescript-eslint/no-confusing-void-expression": [ - "error", + 2, ], "@typescript-eslint/no-deprecated": [ - "error", + 2, ], "@typescript-eslint/no-dupe-class-members": [ - "error", + 2, ], "@typescript-eslint/no-duplicate-enum-values": [ - "error", + 2, ], "@typescript-eslint/no-duplicate-type-constituents": [ - "error", + 2, ], "@typescript-eslint/no-dynamic-delete": [ - "error", + 2, ], "@typescript-eslint/no-empty-function": [ - "error", + 2, + { + "allow": [], + }, ], "@typescript-eslint/no-empty-object-type": [ - "error", + 2, ], "@typescript-eslint/no-explicit-any": [ - "error", + 2, ], "@typescript-eslint/no-extra-non-null-assertion": [ - "error", + 2, ], "@typescript-eslint/no-extraneous-class": [ - "error", + 2, ], "@typescript-eslint/no-floating-promises": [ - "error", + 2, ], "@typescript-eslint/no-for-in-array": [ - "error", + 2, ], "@typescript-eslint/no-implied-eval": [ - "error", + 2, ], "@typescript-eslint/no-import-type-side-effects": [ - "error", + 2, ], "@typescript-eslint/no-inferrable-types": [ - "error", + 2, ], "@typescript-eslint/no-invalid-this": [ - "error", + 2, + { + "capIsConstructor": true, + }, ], "@typescript-eslint/no-invalid-void-type": [ - "error", + 2, ], "@typescript-eslint/no-loop-func": [ - "error", + 2, ], "@typescript-eslint/no-magic-numbers": [ - "error", + 2, ], "@typescript-eslint/no-meaningless-void-operator": [ - "error", + 2, ], "@typescript-eslint/no-misused-new": [ - "error", + 2, ], "@typescript-eslint/no-misused-promises": [ - "error", + 2, ], "@typescript-eslint/no-misused-spread": [ - "error", + 2, ], "@typescript-eslint/no-mixed-enums": [ - "error", + 2, ], "@typescript-eslint/no-namespace": [ - "error", + 2, ], "@typescript-eslint/no-non-null-asserted-nullish-coalescing": [ - "error", + 2, ], "@typescript-eslint/no-non-null-asserted-optional-chain": [ - "error", + 2, ], "@typescript-eslint/no-non-null-assertion": [ - "error", + 2, ], "@typescript-eslint/no-redeclare": [ - "error", + 2, ], "@typescript-eslint/no-redundant-type-constituents": [ - "error", + 2, ], "@typescript-eslint/no-require-imports": [ - "error", + 2, ], "@typescript-eslint/no-restricted-imports": [ - "error", + 2, ], "@typescript-eslint/no-restricted-types": [ - "error", + 2, ], "@typescript-eslint/no-shadow": [ - "error", + 2, ], "@typescript-eslint/no-this-alias": [ - "error", + 2, ], "@typescript-eslint/no-unnecessary-boolean-literal-compare": [ - "error", + 2, ], "@typescript-eslint/no-unnecessary-condition": [ - "error", + 2, ], "@typescript-eslint/no-unnecessary-parameter-property-assignment": [ - "error", + 2, ], "@typescript-eslint/no-unnecessary-qualifier": [ - "error", + 2, ], "@typescript-eslint/no-unnecessary-template-expression": [ - "error", + 2, ], "@typescript-eslint/no-unnecessary-type-arguments": [ - "error", + 2, ], "@typescript-eslint/no-unnecessary-type-assertion": [ - "error", + 2, ], "@typescript-eslint/no-unnecessary-type-constraint": [ - "error", + 2, ], "@typescript-eslint/no-unnecessary-type-parameters": [ - "error", + 2, ], "@typescript-eslint/no-unsafe-argument": [ - "error", + 2, ], "@typescript-eslint/no-unsafe-assignment": [ - "error", + 2, ], "@typescript-eslint/no-unsafe-call": [ - "error", + 2, ], "@typescript-eslint/no-unsafe-declaration-merging": [ - "error", + 2, ], "@typescript-eslint/no-unsafe-enum-comparison": [ - "error", + 2, ], "@typescript-eslint/no-unsafe-function-type": [ - "error", + 2, ], "@typescript-eslint/no-unsafe-member-access": [ - "error", + 2, ], "@typescript-eslint/no-unsafe-return": [ - "error", + 2, ], "@typescript-eslint/no-unsafe-type-assertion": [ - "error", + 2, ], "@typescript-eslint/no-unsafe-unary-minus": [ - "error", + 2, ], "@typescript-eslint/no-unused-expressions": [ - "error", + 2, + { + "allowShortCircuit": false, + "allowTaggedTemplates": false, + "allowTernary": false, + }, ], "@typescript-eslint/no-unused-vars": [ - "error", + 2, ], "@typescript-eslint/no-use-before-define": [ - "error", + 2, ], "@typescript-eslint/no-useless-constructor": [ - "error", + 2, ], "@typescript-eslint/no-useless-empty-export": [ - "error", + 2, ], "@typescript-eslint/no-wrapper-object-types": [ - "error", + 2, ], "@typescript-eslint/non-nullable-type-assertion-style": [ - "error", + 2, ], "@typescript-eslint/only-throw-error": [ - "error", + 2, ], "@typescript-eslint/parameter-properties": [ - "error", + 2, ], "@typescript-eslint/prefer-as-const": [ - "error", + 2, ], "@typescript-eslint/prefer-destructuring": [ - "error", + 2, ], "@typescript-eslint/prefer-enum-initializers": [ - "error", + 2, ], "@typescript-eslint/prefer-find": [ - "error", + 2, ], "@typescript-eslint/prefer-for-of": [ - "error", + 2, ], "@typescript-eslint/prefer-function-type": [ - "error", + 2, ], "@typescript-eslint/prefer-includes": [ - "error", + 2, ], "@typescript-eslint/prefer-literal-enum-member": [ - "error", + 2, ], "@typescript-eslint/prefer-namespace-keyword": [ - "error", + 2, ], "@typescript-eslint/prefer-nullish-coalescing": [ - "error", + 2, ], "@typescript-eslint/prefer-optional-chain": [ - "error", + 2, ], "@typescript-eslint/prefer-promise-reject-errors": [ - "error", + 2, ], "@typescript-eslint/prefer-readonly": [ - "error", + 2, ], "@typescript-eslint/prefer-readonly-parameter-types": [ - "error", + 2, ], "@typescript-eslint/prefer-reduce-type-parameter": [ - "error", + 2, ], "@typescript-eslint/prefer-regexp-exec": [ - "error", + 2, ], "@typescript-eslint/prefer-return-this-type": [ - "error", + 2, ], "@typescript-eslint/prefer-string-starts-ends-with": [ - "error", + 2, ], "@typescript-eslint/promise-function-async": [ - "error", + 2, ], "@typescript-eslint/related-getter-setter-pairs": [ - "error", + 2, ], "@typescript-eslint/require-array-sort-compare": [ - "error", + 2, ], "@typescript-eslint/require-await": [ - "error", + 2, ], "@typescript-eslint/restrict-plus-operands": [ - "error", + 2, ], "@typescript-eslint/restrict-template-expressions": [ - "error", + 2, ], "@typescript-eslint/return-await": [ - "error", + 2, ], "@typescript-eslint/strict-boolean-expressions": [ - "error", + 2, ], "@typescript-eslint/switch-exhaustiveness-check": [ - "error", + 2, ], "@typescript-eslint/triple-slash-reference": [ - "error", + 2, ], "@typescript-eslint/typedef": [ - "error", + 2, ], "@typescript-eslint/unbound-method": [ - "error", + 2, ], "@typescript-eslint/unified-signatures": [ - "error", + 2, ], "@typescript-eslint/use-unknown-in-catch-callback-variable": [ - "error", + 2, ], "class-methods-use-this": [ - "off", + 0, + { + "enforceForClassFields": true, + "exceptMethods": [], + "ignoreOverrideMethods": false, + }, ], "consistent-return": [ - "off", - ], - "constructor-super": [ - "off", + 0, + { + "treatUndefinedAsUnspecified": false, + }, ], "default-param-last": [ - "off", + 0, ], "dot-notation": [ - "off", - ], - "getter-return": [ - "off", + 0, + { + "allowKeywords": true, + "allowPattern": "", + }, ], "init-declarations": [ - "off", + 0, ], "max-params": [ - "off", + 0, ], "no-array-constructor": [ - "off", - ], - "no-class-assign": [ - "off", - ], - "no-const-assign": [ - "off", - ], - "no-dupe-args": [ - "off", + 0, ], "no-dupe-class-members": [ - "off", - ], - "no-dupe-keys": [ - "off", + 0, ], "no-empty-function": [ - "off", - ], - "no-func-assign": [ - "off", + 0, + { + "allow": [], + }, ], "no-implied-eval": [ - "off", - ], - "no-import-assign": [ - "off", + 0, ], "no-invalid-this": [ - "off", + 0, + { + "capIsConstructor": true, + }, ], "no-loop-func": [ - "off", + 0, ], "no-magic-numbers": [ - "off", - ], - "no-new-native-nonconstructor": [ - "off", - ], - "no-new-symbol": [ - "off", - ], - "no-obj-calls": [ - "off", + 0, ], "no-redeclare": [ - "off", + 0, + { + "builtinGlobals": true, + }, ], "no-restricted-imports": [ - "off", + 0, ], "no-return-await": [ - "off", - ], - "no-setter-return": [ - "off", + 0, ], "no-shadow": [ - "off", - ], - "no-this-before-super": [ - "off", + 0, + { + "allow": [], + "builtinGlobals": false, + "hoist": "functions", + "ignoreFunctionTypeParameterNameValueShadow": true, + "ignoreOnInitialization": false, + "ignoreTypeValueShadow": true, + }, ], "no-throw-literal": [ - "off", - ], - "no-undef": [ - "off", - ], - "no-unreachable": [ - "off", - ], - "no-unsafe-negation": [ - "off", + 0, ], "no-unused-expressions": [ - "off", + 0, + { + "allowShortCircuit": false, + "allowTaggedTemplates": false, + "allowTernary": false, + "enforceForJSX": false, + "ignoreDirectives": false, + }, ], "no-unused-vars": [ - "off", + 0, ], "no-use-before-define": [ - "off", + 0, + { + "allowNamedExports": false, + "classes": true, + "enums": true, + "functions": true, + "ignoreTypeReferences": true, + "typedefs": true, + "variables": true, + }, ], "no-useless-constructor": [ - "off", - ], - "no-var": [ - "error", - ], - "prefer-const": [ - "error", + 0, ], "prefer-destructuring": [ - "off", + 0, ], "prefer-promise-reject-errors": [ - "off", - ], - "prefer-rest-params": [ - "error", - ], - "prefer-spread": [ - "error", + 0, + { + "allowEmptyReject": false, + }, ], "require-await": [ - "off", + 0, ], }, - "settings": {}, } `; diff --git a/packages/eslint-config/test/d.ts.spec.js b/packages/eslint-config/test/d.ts.spec.js index 1545a52..7688fe3 100644 --- a/packages/eslint-config/test/d.ts.spec.js +++ b/packages/eslint-config/test/d.ts.spec.js @@ -1,23 +1,29 @@ -const { join } = require('path'); +import { join } from 'path'; +import { fileURLToPath } from 'url'; -const { getTSEslint } = require('./getEslint'); +import { getTSEslint } from './getEslint.js'; + +const __dirname = fileURLToPath(new URL('.', import.meta.url)); const fileName = join(__dirname, '__fixtures__', 'file_d.d.ts'); it('keeps rules stable', async () => { - const output = await getTSEslint().calculateConfigForFile(fileName); + const eslint = await getTSEslint(); + const output = await eslint.calculateConfigForFile(fileName); expect(output).toMatchSnapshot(); }); it('checks that the rules are working', async () => { - const [result] = await getTSEslint().lintFiles([fileName]); + const eslint = await getTSEslint(); + const [result] = await eslint.lintFiles([fileName]); expect(result.messages).toEqual([]); }); it('checks for rule deprecations', async () => { - const [result] = await getTSEslint().lintFiles([fileName]); + const eslint = await getTSEslint(); + const [result] = await eslint.lintFiles([fileName]); expect(result.usedDeprecatedRules).toMatchInlineSnapshot(`[]`); }); diff --git a/packages/eslint-config/test/eslint-serializer.js b/packages/eslint-config/test/eslint-serializer.js index 07a2098..84e55cc 100644 --- a/packages/eslint-config/test/eslint-serializer.js +++ b/packages/eslint-config/test/eslint-serializer.js @@ -1,4 +1,4 @@ -module.exports = { +export default { print(value, serialize) { return serialize(value.replace(process.cwd(), '')); }, diff --git a/packages/eslint-config/test/getEslint.js b/packages/eslint-config/test/getEslint.js index 0d62cb9..82494c5 100644 --- a/packages/eslint-config/test/getEslint.js +++ b/packages/eslint-config/test/getEslint.js @@ -1,31 +1,32 @@ /* eslint-env node, jest */ -const { ESLint } = require('eslint'); -const { join } = require('path'); +import { ESLint } from 'eslint'; +import { join } from 'path'; +import { fileURLToPath } from 'url'; -const eslintSerializer = require('./eslint-serializer'); +import eslintConfig from '../index.js'; -expect.addSnapshotSerializer(eslintSerializer); +const __dirname = fileURLToPath(new URL('.', import.meta.url)); + +async function getEslint(additionalConfig = []) { + // Wait for the config promise to resolve + const baseConfig = await eslintConfig; -function getEslint(config = {}) { return new ESLint({ - cwd: process.cwd(), - overrideConfig: { - ...config, - }, - overrideConfigFile: join(__dirname, '..', 'index.js'), - resolvePluginsRelativeTo: process.cwd(), - useEslintrc: false, + overrideConfigFile: true, // Don't look for config files + baseConfig: [...baseConfig, ...additionalConfig], }); } -const getTSEslint = () => - getEslint({ - parserOptions: { - project: join(__dirname, '__fixtures__', 'tsconfig.json'), +async function getTSEslint() { + return getEslint([ + { + languageOptions: { + parserOptions: { + project: join(__dirname, '__fixtures__', 'tsconfig.json'), + }, + }, }, - }); + ]); +} -module.exports = { - getEslint: () => getEslint(), - getTSEslint, -}; +export { getEslint, getTSEslint }; diff --git a/packages/eslint-config/test/js.spec.js b/packages/eslint-config/test/js.spec.js index 39b0fae..f6206b6 100644 --- a/packages/eslint-config/test/js.spec.js +++ b/packages/eslint-config/test/js.spec.js @@ -1,23 +1,32 @@ -const { join } = require('path'); +import { join } from 'path'; +import { fileURLToPath } from 'url'; -const { getEslint } = require('./getEslint'); +import eslintSerializer from './eslint-serializer.js'; +import { getEslint } from './getEslint.js'; + +const __dirname = fileURLToPath(new URL('.', import.meta.url)); + +expect.addSnapshotSerializer(eslintSerializer); const fileName = join(__dirname, '__fixtures__', 'file_js.js'); it('keeps rules stable', async () => { - const output = await getEslint().calculateConfigForFile(fileName); + const eslint = await getEslint(); + const output = await eslint.calculateConfigForFile(fileName); expect(output).toMatchSnapshot(); }); it('checks that the rules are working', async () => { - const [result] = await getEslint().lintFiles([fileName]); + const eslint = await getEslint(); + const [result] = await eslint.lintFiles([fileName]); expect(result.messages).toEqual([]); }); it('checks for rule deprecations', async () => { - const [result] = await getEslint().lintFiles([fileName]); + const eslint = await getEslint(); + const [result] = await eslint.lintFiles([fileName]); expect(result.usedDeprecatedRules).toMatchInlineSnapshot(`[]`); }); diff --git a/packages/eslint-config/test/jsx.spec.js b/packages/eslint-config/test/jsx.spec.js index 543efac..bb66d19 100644 --- a/packages/eslint-config/test/jsx.spec.js +++ b/packages/eslint-config/test/jsx.spec.js @@ -1,23 +1,29 @@ -const { join } = require('path'); +import { join } from 'path'; +import { fileURLToPath } from 'url'; -const { getEslint } = require('./getEslint'); +import { getEslint } from './getEslint.js'; + +const __dirname = fileURLToPath(new URL('.', import.meta.url)); const fileName = join(__dirname, '__fixtures__', 'file_jsx.jsx'); it('keeps rules stable', async () => { - const output = await getEslint().calculateConfigForFile(fileName); + const eslint = await getEslint(); + const output = await eslint.calculateConfigForFile(fileName); expect(output).toMatchSnapshot(); }); it('checks that the rules are working', async () => { - const [result] = await getEslint().lintFiles([fileName]); + const eslint = await getEslint(); + const [result] = await eslint.lintFiles([fileName]); expect(result.messages).toEqual([]); }); it('checks for rule deprecations', async () => { - const [result] = await getEslint().lintFiles([fileName]); + const eslint = await getEslint(); + const [result] = await eslint.lintFiles([fileName]); expect(result.usedDeprecatedRules).toMatchInlineSnapshot(`[]`); }); diff --git a/packages/eslint-config/test/spec.spec.js b/packages/eslint-config/test/spec.spec.js index de1dbc5..673a189 100644 --- a/packages/eslint-config/test/spec.spec.js +++ b/packages/eslint-config/test/spec.spec.js @@ -1,23 +1,29 @@ -const { join } = require('path'); +import { join } from 'path'; +import { fileURLToPath } from 'url'; -const { getEslint } = require('./getEslint'); +import { getEslint } from './getEslint.js'; + +const __dirname = fileURLToPath(new URL('.', import.meta.url)); const fileName = join(__dirname, '__fixtures__', 'file_spec.spec.js'); it('keeps rules stable', async () => { - const output = await getEslint().calculateConfigForFile(fileName); + const eslint = await getEslint(); + const output = await eslint.calculateConfigForFile(fileName); expect(output).toMatchSnapshot(); }); it('checks that the rules are working', async () => { - const [result] = await getEslint().lintFiles([fileName]); + const eslint = await getEslint(); + const [result] = await eslint.lintFiles([fileName]); expect(result.messages).toEqual([]); }); it('checks for rule deprecations', async () => { - const [result] = await getEslint().lintFiles([fileName]); + const eslint = await getEslint(); + const [result] = await eslint.lintFiles([fileName]); expect(result.usedDeprecatedRules).toMatchInlineSnapshot(`[]`); }); diff --git a/packages/eslint-config/test/ts.spec.js b/packages/eslint-config/test/ts.spec.js index 2233d83..16ca156 100644 --- a/packages/eslint-config/test/ts.spec.js +++ b/packages/eslint-config/test/ts.spec.js @@ -1,23 +1,29 @@ -const { join } = require('path'); +import { join } from 'path'; +import { fileURLToPath } from 'url'; -const { getTSEslint } = require('./getEslint'); +import { getTSEslint } from './getEslint.js'; + +const __dirname = fileURLToPath(new URL('.', import.meta.url)); const fileName = join(__dirname, '__fixtures__', 'file_ts.ts'); it('keeps rules stable', async () => { - const output = await getTSEslint().calculateConfigForFile(fileName); + const eslint = await getTSEslint(); + const output = await eslint.calculateConfigForFile(fileName); expect(output).toMatchSnapshot(); }); it('checks that the rules are working', async () => { - const [result] = await getTSEslint().lintFiles([fileName]); + const eslint = await getTSEslint(); + const [result] = await eslint.lintFiles([fileName]); expect(result.messages).toEqual([]); }); it('checks for rule deprecations', async () => { - const [result] = await getTSEslint().lintFiles([fileName]); + const eslint = await getTSEslint(); + const [result] = await eslint.lintFiles([fileName]); expect(result.usedDeprecatedRules).toMatchInlineSnapshot(`[]`); }); diff --git a/packages/eslint-config/test/tsx.spec.js b/packages/eslint-config/test/tsx.spec.js index 3ce48d5..4ac2f19 100644 --- a/packages/eslint-config/test/tsx.spec.js +++ b/packages/eslint-config/test/tsx.spec.js @@ -1,23 +1,29 @@ -const { join } = require('path'); +import { join } from 'path'; +import { fileURLToPath } from 'url'; -const { getTSEslint } = require('./getEslint'); +import { getTSEslint } from './getEslint.js'; + +const __dirname = fileURLToPath(new URL('.', import.meta.url)); const fileName = join(__dirname, '__fixtures__', 'file_tsx.tsx'); it('keeps rules stable', async () => { - const output = await getTSEslint().calculateConfigForFile(fileName); + const eslint = await getTSEslint(); + const output = await eslint.calculateConfigForFile(fileName); expect(output).toMatchSnapshot(); }); it('checks that the rules are working', async () => { - const [result] = await getTSEslint().lintFiles([fileName]); + const eslint = await getTSEslint(); + const [result] = await eslint.lintFiles([fileName]); expect(result.messages).toEqual([]); }); it('checks for rule deprecations', async () => { - const [result] = await getTSEslint().lintFiles([fileName]); + const eslint = await getTSEslint(); + const [result] = await eslint.lintFiles([fileName]); expect(result.usedDeprecatedRules).toMatchInlineSnapshot(`[]`); }); diff --git a/packages/eslint-config/test/typescript-eslint.spec.js b/packages/eslint-config/test/typescript-eslint.spec.js index 1e7693f..8f23de7 100644 --- a/packages/eslint-config/test/typescript-eslint.spec.js +++ b/packages/eslint-config/test/typescript-eslint.spec.js @@ -1,27 +1,42 @@ -const { ESLint } = require('eslint'); -const { join } = require('path'); +import tseslint from '@typescript-eslint/eslint-plugin'; +import tsParser from '@typescript-eslint/parser'; +import { ESLint } from 'eslint'; +import { join } from 'path'; +import { fileURLToPath } from 'url'; -const eslintSerializer = require('./eslint-serializer'); +import eslintSerializer from './eslint-serializer.js'; + +const __dirname = fileURLToPath(new URL('.', import.meta.url)); expect.addSnapshotSerializer(eslintSerializer); -function getEslint() { +async function getEslint() { return new ESLint({ - cwd: process.cwd(), - overrideConfig: { - extends: ['plugin:@typescript-eslint/all'], - parserOptions: { - project: join(process.cwd(), 'tsconfig.json'), + overrideConfigFile: true, + baseConfig: [ + { + files: ['**/*.ts'], + languageOptions: { + parser: tsParser, + parserOptions: { + project: join(process.cwd(), 'tsconfig.json'), + }, + }, + plugins: { + '@typescript-eslint': tseslint, + }, + rules: { + ...tseslint.configs.all.rules, + }, }, - }, - resolvePluginsRelativeTo: process.cwd(), - useEslintrc: false, + ], }); } describe('plugin:@typescript-eslint/all', () => { it('if this test fails, the plugin probably added new rules. Please check which rules were added/changed and add them to our config when appropriate', async () => { - const output = await getEslint().calculateConfigForFile(join(__dirname, 'file.ts')); + const eslint = await getEslint(); + const output = await eslint.calculateConfigForFile(join(__dirname, 'file.ts')); expect(output).toMatchSnapshot(); }); diff --git a/packages/eslint-config/utils/index.js b/packages/eslint-config/utils/index.js index dd00cc5..378fdf9 100644 --- a/packages/eslint-config/utils/index.js +++ b/packages/eslint-config/utils/index.js @@ -1,13 +1,11 @@ -function hasPackage(pkgName) { +export async function hasPackage(pkgName) { try { - require.resolve(pkgName, { paths: [process.cwd()] }); + // In ES modules, we try to resolve the package from the current working directory + // Note: import.meta.resolve is experimental, so we'll use dynamic import instead + await import(pkgName); return true; - } catch (e) { + } catch { return false; } } - -module.exports = { - hasPackage, -}; diff --git a/packages/eslint-plugin/index.js b/packages/eslint-plugin/index.js index 48b972c..c0cdb00 100644 --- a/packages/eslint-plugin/index.js +++ b/packages/eslint-plugin/index.js @@ -1,17 +1,30 @@ -const jsxShortCircuitConditionals = require('./rules/jsx-short-circuit-conditionals'); +import tsParser from '@typescript-eslint/parser'; -module.exports = { - configs: { - recommended: { - parser: '@typescript-eslint/parser', - parserOptions: { sourceType: 'module' }, - plugins: ['@bigcommerce'], - rules: { - '@bigcommerce/jsx-short-circuit-conditionals': 'error', - }, - }, - }, +import jsxShortCircuitConditionals from './rules/jsx-short-circuit-conditionals.js'; + +const plugin = { + configs: {}, rules: { 'jsx-short-circuit-conditionals': jsxShortCircuitConditionals, }, }; + +// Add recommended config in flat config format +plugin.configs.recommended = [ + { + languageOptions: { + parser: tsParser, + parserOptions: { + sourceType: 'module', + }, + }, + plugins: { + '@bigcommerce': plugin, + }, + rules: { + '@bigcommerce/jsx-short-circuit-conditionals': 'error', + }, + }, +]; + +export default plugin; diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index bb892f8..d59139c 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -16,9 +16,10 @@ "dependencies": { "tsutils": "^3.21.0" }, + "type": "module", "peerDependencies": { "@typescript-eslint/parser": "^8.0.0", - "eslint": "^8.0.0", + "eslint": "^9.0.0", "typescript": "^4.0.0 || ^5.0.0" }, "devDependencies": { diff --git a/packages/eslint-plugin/rules/jsx-short-circuit-conditionals.js b/packages/eslint-plugin/rules/jsx-short-circuit-conditionals.js index 1dab6ce..f979cee 100644 --- a/packages/eslint-plugin/rules/jsx-short-circuit-conditionals.js +++ b/packages/eslint-plugin/rules/jsx-short-circuit-conditionals.js @@ -1,18 +1,17 @@ -/* eslint-disable sort-keys */ -const tsutils = require('tsutils'); -const ts = require('typescript'); +import tsutils from 'tsutils'; +import ts from 'typescript'; -module.exports = { +export default { name: 'jsx-short-circuit-conditionals', meta: { type: 'problem', fixable: true, hasSuggestions: true, - }, - docs: { - description: 'Disallows usage of string / number while short-circuiting jsx', - suggestion: true, - recommended: true, + schema: [], // No options for this rule + docs: { + description: 'Disallows usage of string / number while short-circuiting jsx', + recommended: true, + }, }, create(context) { const { parserServices } = context.sourceCode; @@ -27,12 +26,10 @@ module.exports = { const suggestions = [ { desc: `Make it a boolean by casting it: Boolean(${targetNode.name})`, - fix: (fixer) => { - return [ - fixer.insertTextBefore(targetNode, `Boolean(`), - fixer.insertTextAfter(targetNode, ')'), - ]; - }, + fix: (fixer) => [ + fixer.insertTextBefore(targetNode, `Boolean(`), + fixer.insertTextAfter(targetNode, ')'), + ], }, ]; diff --git a/packages/eslint-plugin/tests/jsx-short-circuit-conditionals.spec.js b/packages/eslint-plugin/tests/jsx-short-circuit-conditionals.spec.js index 8d4195d..a0b0146 100644 --- a/packages/eslint-plugin/tests/jsx-short-circuit-conditionals.spec.js +++ b/packages/eslint-plugin/tests/jsx-short-circuit-conditionals.spec.js @@ -1,9 +1,13 @@ -/* eslint-disable sort-keys */ -/* eslint-disable-next-line import/no-unresolved */ -const { RuleTester } = require('@typescript-eslint/rule-tester'); -const endent = require('endent').default; +import { RuleTester } from '@typescript-eslint/rule-tester'; +import edentImport from 'endent'; +import { dirname } from 'path'; +import { fileURLToPath } from 'url'; -const rule = require('../rules/jsx-short-circuit-conditionals'); +import rule from '../rules/jsx-short-circuit-conditionals.js'; + +const endent = edentImport.default || edentImport; + +const __dirname = dirname(fileURLToPath(import.meta.url)); const ruleTester = new RuleTester({ languageOptions: { diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..03270c6 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "target": "ES2020", + "module": "ES2020", + "lib": ["ES2020"], + "jsx": "react", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "moduleResolution": "node" + }, + "include": ["packages/*/test/**/*", "packages/*/tests/**/*"], + "exclude": ["node_modules"] +} diff --git a/yarn.lock b/yarn.lock index 43c20ff..3303ae6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -420,56 +420,103 @@ esquery "^1.6.0" jsdoc-type-pratt-parser "~4.1.0" -"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": +"@eslint-community/eslint-utils@^4.4.0": version "4.4.1" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz#d1145bf2c20132d6400495d6df4bf59362fd9d56" integrity sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA== dependencies: eslint-visitor-keys "^3.4.3" -"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.6.1": +"@eslint-community/eslint-utils@^4.8.0": + version "4.9.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz#7308df158e064f0dd8b8fdb58aa14fa2a7f913b3" + integrity sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g== + dependencies: + eslint-visitor-keys "^3.4.3" + +"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.12.1": version "4.12.1" resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== -"@eslint/eslintrc@^2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" - integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== +"@eslint/config-array@^0.21.1": + version "0.21.1" + resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.21.1.tgz#7d1b0060fea407f8301e932492ba8c18aff29713" + integrity sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA== + dependencies: + "@eslint/object-schema" "^2.1.7" + debug "^4.3.1" + minimatch "^3.1.2" + +"@eslint/config-helpers@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@eslint/config-helpers/-/config-helpers-0.4.1.tgz#7d173a1a35fe256f0989a0fdd8d911ebbbf50037" + integrity sha512-csZAzkNhsgwb0I/UAV6/RGFTbiakPCf0ZrGmrIxQpYvGZ00PhTkSnyKNolphgIvmnJeGw6rcGVEXfTzUnFuEvw== + dependencies: + "@eslint/core" "^0.16.0" + +"@eslint/core@^0.16.0": + version "0.16.0" + resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.16.0.tgz#490254f275ba9667ddbab344f4f0a6b7a7bd7209" + integrity sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q== + dependencies: + "@types/json-schema" "^7.0.15" + +"@eslint/eslintrc@^3.3.1": + version "3.3.1" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.3.1.tgz#e55f7f1dd400600dd066dbba349c4c0bac916964" + integrity sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.6.0" - globals "^13.19.0" + espree "^10.0.1" + globals "^14.0.0" ignore "^5.2.0" import-fresh "^3.2.1" js-yaml "^4.1.0" minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.57.1": - version "8.57.1" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2" - integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q== +"@eslint/js@9.38.0", "@eslint/js@^9.0.0": + version "9.38.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.38.0.tgz#f7aa9c7577577f53302c1d795643589d7709ebd1" + integrity sha512-UZ1VpFvXf9J06YG9xQBdnzU+kthors6KjhMAl6f4gH4usHyh31rUf2DLGInT8RFYIReYXNSydgPY0V2LuWgl7A== + +"@eslint/object-schema@^2.1.7": + version "2.1.7" + resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.7.tgz#6e2126a1347e86a4dedf8706ec67ff8e107ebbad" + integrity sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA== -"@humanwhocodes/config-array@^0.13.0": - version "0.13.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.13.0.tgz#fb907624df3256d04b9aa2df50d7aa97ec648748" - integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw== +"@eslint/plugin-kit@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.4.0.tgz#f6a245b42886abf6fc9c7ab7744a932250335ab2" + integrity sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A== dependencies: - "@humanwhocodes/object-schema" "^2.0.3" - debug "^4.3.1" - minimatch "^3.0.5" + "@eslint/core" "^0.16.0" + levn "^0.4.1" + +"@humanfs/core@^0.19.1": + version "0.19.1" + resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77" + integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== + +"@humanfs/node@^0.16.6": + version "0.16.7" + resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.7.tgz#822cb7b3a12c5a240a24f621b5a2413e27a45f26" + integrity sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ== + dependencies: + "@humanfs/core" "^0.19.1" + "@humanwhocodes/retry" "^0.4.0" "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" - integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== +"@humanwhocodes/retry@^0.4.0", "@humanwhocodes/retry@^0.4.2": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.3.tgz#c2b9d2e374ee62c586d3adbea87199b1d7a7a6ba" + integrity sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ== "@hutson/parse-repository-url@^3.0.0": version "3.0.2" @@ -831,7 +878,7 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": +"@nodelib/fs.walk@^1.2.3": version "1.2.8" resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== @@ -1193,11 +1240,6 @@ resolved "https://registry.yarnpkg.com/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8" integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g== -"@rushstack/eslint-patch@^1.10.5": - version "1.10.5" - resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.10.5.tgz#3a1c12c959010a55c17d46b395ed3047b545c246" - integrity sha512-kkKUDVlII2DQiKy7UstOR1ErJP8kUKAQ4oa+SQtM0K+lPdmmjj0YnnxBgtTVYH7mUKtbsxeFC9y0AmK7Yb78/A== - "@sigstore/bundle@^2.3.2": version "2.3.2" resolved "https://registry.yarnpkg.com/@sigstore/bundle/-/bundle-2.3.2.tgz#ad4dbb95d665405fd4a7a02c8a073dbd01e4e95e" @@ -1347,6 +1389,11 @@ dependencies: "@babel/types" "^7.3.0" +"@types/estree@^1.0.6": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" + integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== + "@types/graceful-fs@^4.1.3": version "4.1.9" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" @@ -1373,6 +1420,11 @@ dependencies: "@types/istanbul-lib-report" "*" +"@types/json-schema@^7.0.15": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + "@types/json5@^0.0.29": version "0.0.29" resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" @@ -1509,11 +1561,6 @@ "@typescript-eslint/types" "8.26.0" eslint-visitor-keys "^4.2.0" -"@ungap/structured-clone@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" - integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== - "@yarnpkg/lockfile@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" @@ -1552,11 +1599,16 @@ acorn-jsx@^5.3.2: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn@^8.14.0, acorn@^8.9.0: +acorn@^8.14.0: version "8.14.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== +acorn@^8.15.0: + version "8.15.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816" + integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== + add-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" @@ -2389,7 +2441,7 @@ create-jest@^29.7.0: jest-util "^29.7.0" prompts "^2.0.1" -cross-spawn@^7.0.2, cross-spawn@^7.0.3, cross-spawn@^7.0.6: +cross-spawn@^7.0.3, cross-spawn@^7.0.6: version "7.0.6" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== @@ -2587,13 +2639,6 @@ doctrine@^2.1.0: dependencies: esutils "^2.0.2" -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - dom-accessibility-api@^0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz#993e925cc1d73f2c662e7d75dd5a5445259a8fd8" @@ -3053,15 +3098,15 @@ eslint-plugin-testing-library@^7.1.1: "@typescript-eslint/scope-manager" "^8.15.0" "@typescript-eslint/utils" "^8.15.0" -eslint-scope@^7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" - integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== +eslint-scope@^8.4.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.4.0.tgz#88e646a207fad61436ffa39eb505147200655c82" + integrity sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: +eslint-visitor-keys@^3.4.3: version "3.4.3" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== @@ -3071,49 +3116,59 @@ eslint-visitor-keys@^4.2.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#687bacb2af884fcdda8a6e7d65c606f46a14cd45" integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== -eslint@^8.14.0: - version "8.57.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9" - integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.57.1" - "@humanwhocodes/config-array" "^0.13.0" +eslint-visitor-keys@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz#4cfea60fe7dd0ad8e816e1ed026c1d5251b512c1" + integrity sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ== + +eslint@^9.0.0: + version "9.38.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.38.0.tgz#3957d2af804e5cf6cc503c618f60acc71acb2e7e" + integrity sha512-t5aPOpmtJcZcz5UJyY2GbvpDlsK5E8JqRqoKtfiKE3cNh437KIqfJr3A3AKf5k64NPx6d0G3dno6XDY05PqPtw== + dependencies: + "@eslint-community/eslint-utils" "^4.8.0" + "@eslint-community/regexpp" "^4.12.1" + "@eslint/config-array" "^0.21.1" + "@eslint/config-helpers" "^0.4.1" + "@eslint/core" "^0.16.0" + "@eslint/eslintrc" "^3.3.1" + "@eslint/js" "9.38.0" + "@eslint/plugin-kit" "^0.4.0" + "@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.2" + "@types/estree" "^1.0.6" ajv "^6.12.4" chalk "^4.0.0" - cross-spawn "^7.0.2" + cross-spawn "^7.0.6" debug "^4.3.2" - doctrine "^3.0.0" escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" - esquery "^1.4.2" + eslint-scope "^8.4.0" + eslint-visitor-keys "^4.2.1" + espree "^10.4.0" + esquery "^1.5.0" esutils "^2.0.2" 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.19.0" - graphemer "^1.4.0" ignore "^5.2.0" imurmurhash "^0.1.4" is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" lodash.merge "^4.6.2" minimatch "^3.1.2" natural-compare "^1.4.0" optionator "^0.9.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" + +espree@^10.0.1, espree@^10.4.0: + version "10.4.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-10.4.0.tgz#d54f4949d4629005a1fa168d937c3ff1f7e2a837" + integrity sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ== + dependencies: + acorn "^8.15.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^4.2.1" espree@^10.1.0, espree@^10.3.0: version "10.3.0" @@ -3124,21 +3179,12 @@ espree@^10.1.0, espree@^10.3.0: acorn-jsx "^5.3.2" eslint-visitor-keys "^4.2.0" -espree@^9.6.0, espree@^9.6.1: - version "9.6.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" - integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== - dependencies: - acorn "^8.9.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" - esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.4.2, esquery@^1.6.0: +esquery@^1.5.0, esquery@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== @@ -3274,12 +3320,12 @@ figures@3.2.0, figures@^3.0.0: dependencies: escape-string-regexp "^1.0.5" -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== +file-entry-cache@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f" + integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== dependencies: - flat-cache "^3.0.4" + flat-cache "^4.0.0" filelist@^1.0.4: version "1.0.4" @@ -3318,14 +3364,13 @@ find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" -flat-cache@^3.0.4: - version "3.2.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" - integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== +flat-cache@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c" + integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw== dependencies: flatted "^3.2.9" - keyv "^4.5.3" - rimraf "^3.0.2" + keyv "^4.5.4" flat@^5.0.2: version "5.0.2" @@ -3636,12 +3681,15 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^13.19.0: - version "13.24.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" - integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== - dependencies: - type-fest "^0.20.2" +globals@^14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" + integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== + +globals@^15.0.0: + version "15.15.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-15.15.0.tgz#7c4761299d41c32b075715a4ce1ede7897ff72a8" + integrity sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg== globalthis@^1.0.4: version "1.0.4" @@ -4104,11 +4152,6 @@ is-obj@^2.0.0: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" @@ -4821,7 +4864,7 @@ just-diff@^6.0.0: resolved "https://registry.yarnpkg.com/just-diff/-/just-diff-6.0.2.tgz#03b65908543ac0521caf6d8eb85035f7d27ea285" integrity sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA== -keyv@^4.5.3: +keyv@^4.5.4: version "4.5.4" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== @@ -5215,7 +5258,7 @@ minimatch@9.0.3: dependencies: brace-expansion "^2.0.1" -minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -6371,13 +6414,6 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.1.0.tgz#0fe13b9522e1473f51b558ee796e08f11f9b489f" integrity sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw== -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - rimraf@^4.4.1: version "4.4.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-4.4.1.tgz#bd33364f67021c5b79e93d7f4fa0568c7c21b755" @@ -6978,11 +7014,6 @@ text-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - through2@^2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" @@ -7115,11 +7146,6 @@ type-fest@^0.18.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - type-fest@^0.21.3: version "0.21.3" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37"