@jpp-toolkit/eslint-config 0.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../src/configs/eslint-config.ts","../src/configs/ignore-config.ts","../src/configs/import-x-config.ts","../src/configs/jsx-a11y-config.ts","../src/configs/perfectionist-config.ts","../src/configs/prettier-config.ts","../src/configs/react-config.ts","../src/configs/react-hooks-config.ts","../src/configs/stylistic-config.ts","../src/configs/typescript-config.ts","../src/configs/unicorn-config.ts","../src/configs/vitest-config.ts","../src/index.ts"],"sourcesContent":["import eslint from '@eslint/js';\nimport { defineConfig } from 'eslint/config';\n\n/**\n * ESLint configuration.\n * @see {@link https://eslint.org/docs/latest/rules/}\n */\nexport const eslintConfig = defineConfig({\n name: 'eslint-config',\n extends: [eslint.configs.recommended],\n rules: {\n /**\n * Enforce return statements in callbacks of array methods.\n * @see {@link https://eslint.org/docs/latest/rules/array-callback-return}\n */\n 'array-callback-return': ['error', { checkForEach: true, allowVoid: true }],\n\n /**\n * Disallow await inside of loops.\n * @see {@link https://eslint.org/docs/latest/rules/no-await-in-loop}\n */\n // 'no-await-in-loop': 'error',\n\n /**\n * Disallow returning value from constructor.\n * @see {@link https://eslint.org/docs/latest/rules/no-constructor-return}\n */\n 'no-constructor-return': 'error',\n\n /**\n * Disallow duplicate module imports.\n * @see {@link https://eslint.org/docs/latest/rules/no-duplicate-imports}\n */\n 'no-duplicate-imports': 'error',\n\n /**\n * Disallow variable or function declarations in nested blocks.\n * @see {@link https://eslint.org/docs/latest/rules/no-inner-declarations}\n */\n 'no-inner-declarations': 'error',\n\n /**\n * Disallow returning values from Promise executor functions.\n * @see {@link https://eslint.org/docs/latest/rules/no-promise-executor-return}\n */\n 'no-promise-executor-return': ['error', { allowVoid: true }],\n\n /**\n * Disallow comparisons where both sides are exactly the same.\n * @see {@link https://eslint.org/docs/latest/rules/no-self-compare}\n */\n 'no-self-compare': 'error',\n\n /**\n * Disallow template literal placeholder syntax in regular strings.\n * @see {@link https://eslint.org/docs/latest/rules/no-template-curly-in-string}\n */\n 'no-template-curly-in-string': 'error',\n\n /**\n * Disallow let or var variables that are read but never assigned.\n * @see {@link https://eslint.org/docs/latest/rules/no-unassigned-vars}\n */\n 'no-unassigned-vars': 'error',\n\n /**\n * Disallow unmodified loop conditions.\n * @see {@link https://eslint.org/docs/latest/rules/no-unmodified-loop-condition}\n */\n 'no-unmodified-loop-condition': 'error',\n\n /**\n * Disallow loops with a body that allows only one iteration.\n * @see {@link https://eslint.org/docs/latest/rules/no-unreachable-loop}\n */\n 'no-unreachable-loop': 'error',\n\n /**\n * Disallow the use of variables before they are defined.\n * @see {@link https://eslint.org/docs/latest/rules/no-use-before-define}\n */\n 'no-use-before-define': 'error',\n\n /**\n * Disallow variable assignments when the value is not used.\n * @see {@link https://eslint.org/docs/latest/rules/no-useless-assignment}\n */\n 'no-useless-assignment': 'error',\n\n /**\n * Disallow assignments that can lead to race conditions due to usage of await or yield.\n * @see {@link https://eslint.org/docs/latest/rules/require-atomic-updates}\n */\n 'require-atomic-updates': 'error',\n\n /**\n * Enforce getter and setter pairs in objects and classes.\n * @see {@link https://eslint.org/docs/latest/rules/accessor-pairs}\n */\n // 'accessor-pairs': 'error',\n\n /**\n * Require braces around arrow function bodies.\n * @fixable\n * @see {@link https://eslint.org/docs/latest/rules/arrow-body-style}\n */\n 'arrow-body-style': 'error',\n\n /**\n * Enforce the use of variables within the scope they are defined.\n * @see {@link https://eslint.org/docs/latest/rules/block-scoped-var}\n */\n 'block-scoped-var': 'error',\n\n /**\n * Enforce camelcase naming convention.\n * @see {@link https://eslint.org/docs/latest/rules/camelcase}\n */\n 'camelcase': 'error',\n\n /**\n * Enforce or disallow capitalization of the first letter of a comment.\n * @fixable\n * @see {@link https://eslint.org/docs/latest/rules/capitalized-comments}\n */\n // 'capitalized-comments': 'error',\n\n /**\n * Enforce that class methods utilize this.\n * @see {@link https://eslint.org/docs/latest/rules/class-methods-use-this}\n */\n // 'class-methods-use-this': 'error',\n\n /**\n * Enforce a maximum cyclomatic complexity allowed in a program.\n * @see {@link https://eslint.org/docs/latest/rules/complexity}\n */\n // 'complexity': 'error',\n\n /**\n * Require return statements to either always or never specify values.\n * @see {@link https://eslint.org/docs/latest/rules/consistent-return}\n */\n 'consistent-return': 'error',\n\n /**\n * Enforce consistent naming when capturing the current execution context.\n * @see {@link https://eslint.org/docs/latest/rules/consistent-this}\n */\n 'consistent-this': ['error', 'self'],\n\n /**\n * Enforce consistent brace style for all control statements.\n * @fixable\n * @see {@link https://eslint.org/docs/latest/rules/curly}\n */\n 'curly': ['error', 'multi-or-nest', 'consistent'],\n\n /**\n * Require default cases in switch statements.\n * @see {@link https://eslint.org/docs/latest/rules/default-case}\n */\n 'default-case': 'error',\n\n /**\n * Enforce default clauses in switch statements to be last.\n * @see {@link https://eslint.org/docs/latest/rules/default-case-last}\n */\n 'default-case-last': 'error',\n\n /**\n * Enforce default parameters to be last.\n * @see {@link https://eslint.org/docs/latest/rules/default-param-last}\n */\n 'default-param-last': 'error',\n\n /**\n * Enforce dot notation whenever possible.\n * @fixable\n * @see {@link https://eslint.org/docs/latest/rules/dot-notation}\n */\n 'dot-notation': 'error',\n\n /**\n * Require the use of === and !==.\n * @fixable\n * @see {@link https://eslint.org/docs/latest/rules/eqeqeq}\n */\n 'eqeqeq': 'error',\n\n /**\n * Require function names to match the name of the variable or property to which they are assigned.\n * @see {@link https://eslint.org/docs/latest/rules/func-name-matching}\n */\n // 'func-name-matching': 'error',\n\n /**\n * Require or disallow named function expressions.\n * @see {@link https://eslint.org/docs/latest/rules/func-names}\n */\n // 'func-names': 'error',\n\n /**\n * Enforce the consistent use of either function declarations or expressions assigned to variables.\n * @see {@link https://eslint.org/docs/latest/rules/func-style}\n */\n 'func-style': ['error', 'declaration', { allowArrowFunctions: true }],\n\n /**\n * Require grouped accessor pairs in object literals and classes.\n * @see {@link https://eslint.org/docs/latest/rules/grouped-accessor-pairs}\n */\n 'grouped-accessor-pairs': ['error', 'getBeforeSet'],\n\n /**\n * Require for-in loops to include an if statement.\n * @see {@link https://eslint.org/docs/latest/rules/guard-for-in}\n */\n 'guard-for-in': 'error',\n\n /**\n * Disallow specified identifiers.\n * @see {@link https://eslint.org/docs/latest/rules/id-denylist}\n */\n // 'id-denylist': 'error',\n\n /**\n * Enforce minimum and maximum identifier lengths.\n * @see {@link https://eslint.org/docs/latest/rules/id-length}\n */\n // 'id-length': 'error',\n\n /**\n * Require identifiers to match a specified regular expression.\n * @see {@link https://eslint.org/docs/latest/rules/id-match}\n */\n // 'id-match': 'error',\n\n /**\n * Require or disallow initialization in variable declarations.\n * @see {@link https://eslint.org/docs/latest/rules/init-declarations}\n */\n // 'init-declarations': 'error',\n\n /**\n * Require or disallow logical assignment operator shorthand.\n * @fixable\n * @see {@link https://eslint.org/docs/latest/rules/logical-assignment-operators}\n */\n 'logical-assignment-operators': 'error',\n\n /**\n * Enforce a maximum number of classes per file.\n * @see {@link https://eslint.org/docs/latest/rules/max-classes-per-file}\n */\n // 'max-classes-per-file': 'error',\n\n /**\n * Enforce a maximum depth that blocks can be nested.\n * @see {@link https://eslint.org/docs/latest/rules/max-depth}\n */\n // 'max-depth': 'error',\n\n /**\n * Enforce a maximum number of lines per file.\n * @see {@link https://eslint.org/docs/latest/rules/max-lines}\n */\n // 'max-lines': 'error',\n\n /**\n * Enforce a maximum number of lines of code in a function.\n * @see {@link https://eslint.org/docs/latest/rules/max-lines-per-function}\n */\n // 'max-lines-per-function': 'error',\n\n /**\n * Enforce a maximum depth that callbacks can be nested.\n * @see {@link https://eslint.org/docs/latest/rules/max-nested-callbacks}\n */\n // 'max-nested-callbacks': 'error',\n\n /**\n * Enforce a maximum number of parameters in function definitions.\n * @see {@link https://eslint.org/docs/latest/rules/max-params}\n */\n // 'max-params': 'error',\n\n /**\n * Enforce a maximum number of statements allowed in function blocks.\n * @see {@link https://eslint.org/docs/latest/rules/max-statements}\n */\n // 'max-statements': 'error',\n\n /**\n * Require constructor names to begin with a capital letter.\n * @see {@link https://eslint.org/docs/latest/rules/new-cap}\n */\n // 'new-cap': 'error',\n\n /**\n * Disallow the use of alert, confirm, and prompt.\n * @see {@link https://eslint.org/docs/latest/rules/no-alert}\n */\n // 'no-alert': 'error',\n\n /**\n * Disallow Array constructors.\n * @fixable\n * @see {@link https://eslint.org/docs/latest/rules/no-array-constructor}\n */\n 'no-array-constructor': 'error',\n\n /**\n * Disallow bitwise operators.\n * @see {@link https://eslint.org/docs/latest/rules/no-bitwise}\n */\n // 'no-bitwise': 'error',\n\n /**\n * Disallow the use of arguments.caller or arguments.callee.\n * @see {@link https://eslint.org/docs/latest/rules/no-caller}\n */\n 'no-caller': 'error',\n\n /**\n * Disallow the use of console.\n * @see {@link https://eslint.org/docs/latest/rules/no-console}\n */\n // 'no-console': 'error',\n\n /**\n * Disallow continue statements.\n * @see {@link https://eslint.org/docs/latest/rules/no-continue}\n */\n // 'no-continue': 'error',\n\n /**\n * Disallow equal signs explicitly at the beginning of regular expressions.\n * @fixable\n * @see {@link https://eslint.org/docs/latest/rules/no-div-regex}\n */\n 'no-div-regex': 'error',\n\n /**\n * Disallow else blocks after return statements in if statements.\n * @fixable\n * @see {@link https://eslint.org/docs/latest/rules/no-else-return}\n */\n // 'no-else-return': 'error',\n\n /**\n * Disallow empty functions.\n * @see {@link https://eslint.org/docs/latest/rules/no-empty-function}\n */\n 'no-empty-function': 'error',\n\n /**\n * Disallow null comparisons without type-checking operators.\n * @see {@link https://eslint.org/docs/latest/rules/no-eq-null}\n */\n 'no-eq-null': 'error',\n\n /**\n * Disallow the use of eval().\n * @see {@link https://eslint.org/docs/latest/rules/no-eval}\n */\n 'no-eval': 'error',\n\n /**\n * Disallow extending native types.\n * @see {@link https://eslint.org/docs/latest/rules/no-extend-native}\n */\n 'no-extend-native': 'error',\n\n /**\n * Disallow unnecessary calls to .bind().\n * @fixable\n * @see {@link https://eslint.org/docs/latest/rules/no-extra-bind}\n */\n 'no-extra-bind': 'error',\n\n /**\n * Disallow unnecessary labels.\n * @fixable\n * @see {@link https://eslint.org/docs/latest/rules/no-extra-label}\n */\n 'no-extra-label': 'error',\n\n /**\n * Disallow shorthand type conversions.\n * @fixable\n * @see {@link https://eslint.org/docs/latest/rules/no-implicit-coercion}\n */\n 'no-implicit-coercion': 'error',\n\n /**\n * Disallow declarations in the global scope.\n * @see {@link https://eslint.org/docs/latest/rules/no-implicit-globals}\n */\n 'no-implicit-globals': 'error',\n\n /**\n * Disallow the use of eval()-like methods.\n * @see {@link https://eslint.org/docs/latest/rules/no-implied-eval}\n */\n 'no-implied-eval': 'error',\n\n /**\n * Disallow inline comments after code.\n * @see {@link https://eslint.org/docs/latest/rules/no-inline-comments}\n */\n 'no-inline-comments': 'error',\n\n /**\n * Disallow use of this in contexts where the value of this is undefined.\n * @see {@link https://eslint.org/docs/latest/rules/no-invalid-this}\n */\n 'no-invalid-this': 'error',\n\n /**\n * Disallow the use of the __iterator__ property.\n * @see {@link https://eslint.org/docs/latest/rules/no-iterator}\n */\n 'no-iterator': 'error',\n\n /**\n * Disallow labels that share a name with a variable.\n * @see {@link https://eslint.org/docs/latest/rules/no-label-var}\n */\n 'no-label-var': 'error',\n\n /**\n * Disallow labeled statements.\n * @see {@link https://eslint.org/docs/latest/rules/no-labels}\n */\n 'no-labels': 'error',\n\n /**\n * Disallow unnecessary nested blocks.\n * @see {@link https://eslint.org/docs/latest/rules/no-lone-blocks}\n */\n 'no-lone-blocks': 'error',\n\n /**\n * Disallow if statements as the only statement in else blocks.\n * @fixable\n * @see {@link https://eslint.org/docs/latest/rules/no-lonely-if}\n */\n 'no-lonely-if': 'error',\n\n /**\n * Disallow function declarations that contain unsafe references inside loop statements.\n * @see {@link https://eslint.org/docs/latest/rules/no-loop-func}\n */\n 'no-loop-func': 'error',\n\n /**\n * Disallow magic numbers.\n * @see {@link https://eslint.org/docs/latest/rules/no-magic-numbers}\n */\n // 'no-magic-numbers': 'error',\n\n /**\n * Disallow use of chained assignment expressions.\n * @see {@link https://eslint.org/docs/latest/rules/no-multi-assign}\n */\n 'no-multi-assign': 'error',\n\n /**\n * Disallow multiline strings.\n * @see {@link https://eslint.org/docs/latest/rules/no-multi-str}\n */\n // 'no-multi-str': 'error',\n\n /**\n * Disallow negated conditions.\n * @see {@link https://eslint.org/docs/latest/rules/no-negated-condition}\n */\n // 'no-negated-condition': 'error',\n\n /**\n * Disallow nested ternary expressions.\n * @see {@link https://eslint.org/docs/latest/rules/no-nested-ternary}\n */\n // 'no-nested-ternary': 'error',\n\n /**\n * Disallow new operators outside of assignments or comparisons.\n * @see {@link https://eslint.org/docs/latest/rules/no-new}\n */\n 'no-new': 'error',\n\n /**\n * Disallow new operators with the Function object.\n * @see {@link https://eslint.org/docs/latest/rules/no-new-func}\n */\n 'no-new-func': 'error',\n\n /**\n * Disallow new operators with the String, Number, and Boolean objects.\n * @see {@link https://eslint.org/docs/latest/rules/no-new-wrappers}\n */\n 'no-new-wrappers': 'error',\n\n /**\n * Disallow calls to the Object constructor without an argument.\n * @see {@link https://eslint.org/docs/latest/rules/no-object-constructor}\n */\n 'no-object-constructor': 'error',\n\n /**\n * Disallow octal escape sequences in string literals.\n * @see {@link https://eslint.org/docs/latest/rules/no-octal-escape}\n */\n 'no-octal-escape': 'error',\n\n /**\n * Disallow reassigning function parameters.\n * @see {@link https://eslint.org/docs/latest/rules/no-param-reassign}\n */\n 'no-param-reassign': 'error',\n\n /**\n * Disallow the unary operators ++ and --.\n * @see {@link https://eslint.org/docs/latest/rules/no-plusplus}\n */\n 'no-plusplus': 'error',\n\n /**\n * Disallow the use of the __proto__ property.\n * @see {@link https://eslint.org/docs/latest/rules/no-proto}\n */\n 'no-proto': 'error',\n\n /**\n * Disallow specified names in exports.\n * @see {@link https://eslint.org/docs/latest/rules/no-restricted-exports}\n */\n // 'no-restricted-exports': 'error',\n\n /**\n * Disallow specified global variables.\n * @see {@link https://eslint.org/docs/latest/rules/no-restricted-globals}\n */\n // 'no-restricted-globals': 'error',\n\n /**\n * Disallow specified modules when loaded by import.\n * @see {@link https://eslint.org/docs/latest/rules/no-restricted-imports}\n */\n // 'no-restricted-imports': 'error',\n\n /**\n * Disallow certain properties on certain objects.\n * @see {@link https://eslint.org/docs/latest/rules/no-restricted-properties}\n */\n // 'no-restricted-properties': 'error',\n\n /**\n * Disallow specified syntax.\n * @see {@link https://eslint.org/docs/latest/rules/no-restricted-syntax}\n */\n // 'no-restricted-syntax': 'error',\n\n /**\n * Disallow assignment operators in return statements.\n * @see {@link https://eslint.org/docs/latest/rules/no-return-assign}\n */\n 'no-return-assign': 'error',\n\n /**\n * Disallow javascript: URLs.\n * @see {@link https://eslint.org/docs/latest/rules/no-script-url}\n */\n 'no-script-url': 'error',\n\n /**\n * Disallow comma operators.\n * @see {@link https://eslint.org/docs/latest/rules/no-sequences}\n */\n 'no-sequences': 'error',\n\n /**\n * Disallow variable declarations from shadowing variables declared in the outer scope.\n * @see {@link https://eslint.org/docs/latest/rules/no-shadow}\n */\n 'no-shadow': 'error',\n\n /**\n * Disallow ternary operators.\n * @see {@link https://eslint.org/docs/latest/rules/no-ternary}\n */\n // 'no-ternary': 'error',\n\n /**\n * Disallow throwing literals as exceptions.\n * @see {@link https://eslint.org/docs/latest/rules/no-throw-literal}\n */\n 'no-throw-literal': 'error',\n\n /**\n * Disallow initializing variables to undefined.\n * @fixable\n * @see {@link https://eslint.org/docs/latest/rules/no-undef-init}\n */\n 'no-undef-init': 'error',\n\n /**\n * Disallow the use of undefined as an identifier.\n * @see {@link https://eslint.org/docs/latest/rules/no-undefined}\n */\n // 'no-undefined': 'error',\n\n /**\n * Disallow dangling underscores in identifiers.\n * @see {@link https://eslint.org/docs/latest/rules/no-underscore-dangle}\n */\n // 'no-underscore-dangle': 'error',\n\n /**\n * Disallow ternary operators when simpler alternatives exist.\n * @fixable\n * @see {@link https://eslint.org/docs/latest/rules/no-unneeded-ternary}\n */\n 'no-unneeded-ternary': 'error',\n\n /**\n * Disallow unused expressions.\n * @see {@link https://eslint.org/docs/latest/rules/no-unused-expressions}\n */\n 'no-unused-expressions': 'error',\n\n /**\n * Disallow unnecessary calls to .call() and .apply().\n * @see {@link https://eslint.org/docs/latest/rules/no-useless-call}\n */\n 'no-useless-call': 'error',\n\n /**\n * Disallow unnecessary computed property keys in objects and classes.\n * @fixable\n * @see {@link https://eslint.org/docs/latest/rules/no-useless-computed-key}\n */\n 'no-useless-computed-key': 'error',\n\n /**\n * Disallow unnecessary concatenation of literals or template literals.\n * @see {@link https://eslint.org/docs/latest/rules/no-useless-concat}\n */\n 'no-useless-concat': 'error',\n\n /**\n * Disallow unnecessary constructors.\n * @see {@link https://eslint.org/docs/latest/rules/no-useless-constructor}\n */\n 'no-useless-constructor': 'error',\n\n /**\n * Disallow renaming import, export, and destructured assignments to the same name.\n * @fixable\n * @see {@link https://eslint.org/docs/latest/rules/no-useless-rename}\n */\n 'no-useless-rename': 'error',\n\n /**\n * Disallow redundant return statements.\n * @fixable\n * @see {@link https://eslint.org/docs/latest/rules/no-useless-return}\n */\n 'no-useless-return': 'error',\n\n /**\n * Require let or const instead of var.\n * @fixable\n * @see {@link https://eslint.org/docs/latest/rules/no-var}\n */\n 'no-var': 'error',\n\n /**\n * Disallow void operators.\n * @see {@link https://eslint.org/docs/latest/rules/no-void}\n */\n // 'no-void': 'error',\n\n /**\n * Disallow specified warning terms in comments.\n * @see {@link https://eslint.org/docs/latest/rules/no-warning-comments}\n */\n // 'no-warning-comments': 'error',\n\n /**\n * Require or disallow method and property shorthand syntax for object literals.\n * @fixable\n * @see {@link https://eslint.org/docs/latest/rules/object-shorthand}\n */\n 'object-shorthand': 'error',\n\n /**\n * Enforce variables to be declared either together or separately in functions.\n * @fixable\n * @see {@link https://eslint.org/docs/latest/rules/one-var}\n */\n // 'one-var': 'error',\n\n /**\n * Require or disallow assignment operator shorthand where possible.\n * @fixable\n * @see {@link https://eslint.org/docs/latest/rules/operator-assignment}\n */\n 'operator-assignment': 'error',\n\n /**\n * Require using arrow functions for callbacks.\n * @fixable\n * @see {@link https://eslint.org/docs/latest/rules/prefer-arrow-callback}\n */\n 'prefer-arrow-callback': 'error',\n\n /**\n * Require const declarations for variables that are never reassigned after declared.\n * @fixable\n * @see {@link https://eslint.org/docs/latest/rules/prefer-const}\n */\n 'prefer-const': 'error',\n\n /**\n * Require destructuring from arrays and/or objects.\n * @fixable\n * @see {@link https://eslint.org/docs/latest/rules/prefer-destructuring}\n */\n 'prefer-destructuring': 'error',\n\n /**\n * Disallow the use of Math.pow in favor of the ** operator.\n * @fixable\n * @see {@link https://eslint.org/docs/latest/rules/prefer-exponentiation-operator}\n */\n 'prefer-exponentiation-operator': 'error',\n\n /**\n * Enforce using named capture group in regular expression.\n * @see {@link https://eslint.org/docs/latest/rules/prefer-named-capture-group}\n */\n 'prefer-named-capture-group': 'error',\n\n /**\n * Disallow parseInt() and Number.parseInt() in favor of binary, octal, and hexadecimal literals.\n * @fixable\n * @see {@link https://eslint.org/docs/latest/rules/prefer-numeric-literals}\n */\n 'prefer-numeric-literals': 'error',\n\n /**\n * Disallow use of Object.prototype.hasOwnProperty.call() and prefer use of Object.hasOwn().\n * @fixable\n * @see {@link https://eslint.org/docs/latest/rules/prefer-object-has-own}\n */\n 'prefer-object-has-own': 'error',\n\n /**\n * Disallow using Object.assign with an object literal as the first argument and prefer the use of object spread instead.\n * @fixable\n * @see {@link https://eslint.org/docs/latest/rules/prefer-object-spread}\n */\n 'prefer-object-spread': 'error',\n\n /**\n * Require using Error objects as Promise rejection reasons.\n * @see {@link https://eslint.org/docs/latest/rules/prefer-promise-reject-errors}\n */\n 'prefer-promise-reject-errors': 'error',\n\n /**\n * Disallow use of the RegExp constructor in favor of regular expression literals.\n * @see {@link https://eslint.org/docs/latest/rules/prefer-regex-literals}\n */\n 'prefer-regex-literals': 'error',\n\n /**\n * Require rest parameters instead of arguments.\n * @see {@link https://eslint.org/docs/latest/rules/prefer-rest-params}\n */\n 'prefer-rest-params': 'error',\n\n /**\n * Require spread operators instead of .apply().\n * @see {@link https://eslint.org/docs/latest/rules/prefer-spread}\n */\n 'prefer-spread': 'error',\n\n /**\n * Require template literals instead of string concatenation.\n * @fixable\n * @see {@link https://eslint.org/docs/latest/rules/prefer-template}\n */\n 'prefer-template': 'error',\n\n /**\n * Disallow losing originally caught error when re-throwing custom errors.\n * @see {@link https://eslint.org/docs/latest/rules/preserve-caught-error}\n */\n // 'preserve-caught-error': 'error',\n\n /**\n * Enforce the consistent use of the radix argument when using parseInt().\n * @see {@link https://eslint.org/docs/latest/rules/radix}\n */\n 'radix': ['error', 'as-needed'],\n\n /**\n * Disallow async functions which have no await expression.\n * @see {@link https://eslint.org/docs/latest/rules/require-await}\n */\n 'require-await': 'error',\n\n /**\n * Enforce the use of u or v flag on regular expressions.\n * @see {@link https://eslint.org/docs/latest/rules/require-unicode-regexp}\n */\n 'require-unicode-regexp': 'error',\n\n /**\n * Enforce sorted import declarations within modules.\n * @fixable\n * @see {@link https://eslint.org/docs/latest/rules/sort-imports}\n */\n 'sort-imports': 'error',\n\n /**\n * Require object keys to be sorted.\n * @see {@link https://eslint.org/docs/latest/rules/sort-keys}\n */\n // 'sort-keys': 'error',\n\n /**\n * Require variables within the same declaration block to be sorted.\n * @fixable\n * @see {@link https://eslint.org/docs/latest/rules/sort-vars}\n */\n // 'sort-vars': 'error',\n\n /**\n * Require or disallow strict mode directives.\n * @fixable\n * @see {@link https://eslint.org/docs/latest/rules/strict}\n */\n // 'strict': 'error',\n\n /**\n * Require symbol descriptions.\n * @see {@link https://eslint.org/docs/latest/rules/symbol-description}\n */\n 'symbol-description': 'error',\n\n /**\n * Require var declarations be placed at the top of their containing scope.\n * @see {@link https://eslint.org/docs/latest/rules/vars-on-top}\n */\n // 'vars-on-top': 'error',\n\n /**\n * Require or disallow “Yoda” conditions.\n * @fixable\n * @see {@link https://eslint.org/docs/latest/rules/yoda}\n */\n // 'yoda': 'error',\n\n /**\n * Require or disallow Unicode byte order mark (BOM).\n * @fixable\n * @see {@link https://eslint.org/docs/latest/rules/unicode-bom}\n */\n // 'unicode-bom': 'error',\n\n /**\n * Require super() calls in constructors.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/constructor-super}\n */\n // 'constructor-super': 'off',\n\n /**\n * Enforce for loop update clause moving the counter in the right direction.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/for-direction}\n */\n // 'for-direction': 'off',\n\n /**\n * Enforce return statements in getters.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/getter-return}\n */\n // 'getter-return': 'off',\n\n /**\n * Disallow using an async function as a Promise executor.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-async-promise-executor}\n */\n // 'no-async-promise-executor': 'off',\n\n /**\n * Disallow reassigning class members.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-class-assign}\n */\n // 'no-class-assign': 'off',\n\n /**\n * Disallow comparing against -0.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-compare-neg-zero}\n */\n // 'no-compare-neg-zero': 'off',\n\n /**\n * Disallow assignment operators in conditional expressions.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-cond-assign}\n */\n // 'no-cond-assign': 'off',\n\n /**\n * Disallow reassigning const, using, and await using variables.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-const-assign}\n */\n // 'no-const-assign': 'off',\n\n /**\n * Disallow expressions where the operation doesn’t affect the value.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-constant-binary-expression}\n */\n // 'no-constant-binary-expression': 'off',\n\n /**\n * Disallow constant expressions in conditions.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-constant-condition}\n */\n // 'no-constant-condition': 'off',\n\n /**\n * Disallow control characters in regular expressions.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-control-regex}\n */\n // 'no-control-regex': 'off',\n\n /**\n * Disallow the use of debugger.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-debugger}\n */\n // 'no-debugger': 'off',\n\n /**\n * Disallow duplicate arguments in function definitions.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-dupe-args}\n */\n // 'no-dupe-args': 'off',\n\n /**\n * Disallow duplicate class members.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-dupe-class-members}\n */\n // 'no-dupe-class-members': 'off',\n\n /**\n * Disallow duplicate conditions in if-else-if chains.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-dupe-else-if}\n */\n // 'no-dupe-else-if': 'off',\n\n /**\n * Disallow duplicate keys in object literals.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-dupe-keys}\n */\n // 'no-dupe-keys': 'off',\n\n /**\n * Disallow duplicate case labels.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-duplicate-case}\n */\n // 'no-duplicate-case': 'off',\n\n /**\n * Disallow empty character classes in regular expressions.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-empty-character-class}\n */\n // 'no-empty-character-class': 'off',\n\n /**\n * Disallow empty destructuring patterns.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-empty-pattern}\n */\n // 'no-empty-pattern': 'off',\n\n /**\n * Disallow reassigning exceptions in catch clauses.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-ex-assign}\n */\n // 'no-ex-assign': 'off',\n\n /**\n * Disallow fallthrough of case statements.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-fallthrough}\n */\n // 'no-fallthrough': 'off',\n\n /**\n * Disallow reassigning function declarations.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-func-assign}\n */\n // 'no-func-assign': 'off',\n\n /**\n * Disallow assigning to imported bindings.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-import-assign}\n */\n // 'no-import-assign': 'off',\n\n /**\n * Disallow invalid regular expression strings in RegExp constructors.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-invalid-regexp}\n */\n // 'no-invalid-regexp': 'off',\n\n /**\n * Disallow irregular whitespace.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-irregular-whitespace}\n */\n // 'no-irregular-whitespace': 'off',\n\n /**\n * Disallow literal numbers that lose precision.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-loss-of-precision}\n */\n // 'no-loss-of-precision': 'off',\n\n /**\n * Disallow characters which are made with multiple code points in character class syntax.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-misleading-character-class}\n */\n // 'no-misleading-character-class': 'off',\n\n /**\n * Disallow new operators with global non-constructor functions.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-new-native-nonconstructor}\n */\n // 'no-new-native-nonconstructor': 'off',\n\n /**\n * Disallow calling global object properties as functions.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-obj-calls}\n */\n // 'no-obj-calls': 'off',\n\n /**\n * Disallow calling some Object.prototype methods directly on objects.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-prototype-builtins}\n */\n // 'no-prototype-builtins': 'off',\n\n /**\n * Disallow assignments where both sides are exactly the same.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-self-assign}\n */\n // 'no-self-assign': 'off',\n\n /**\n * Disallow returning values from setters.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-setter-return}\n */\n // 'no-setter-return': 'off',\n\n /**\n * Disallow sparse arrays.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-sparse-arrays}\n */\n // 'no-sparse-arrays': 'off',\n\n /**\n * Disallow this/super before calling super() in constructors.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-this-before-super}\n */\n // 'no-this-before-super': 'off',\n\n /**\n * Disallow the use of undeclared variables unless mentioned in /*global *\\/ comments.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-undef}\n */\n // 'no-undef': 'off',\n\n /**\n * Disallow confusing multiline expressions.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-unexpected-multiline}\n */\n // 'no-unexpected-multiline': 'off',\n\n /**\n * Disallow unreachable code after return, throw, continue, and break statements.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-unreachable}\n */\n // 'no-unreachable': 'off',\n\n /**\n * Disallow control flow statements in finally blocks.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-unsafe-finally}\n */\n // 'no-unsafe-finally': 'off',\n\n /**\n * Disallow negating the left operand of relational operators.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-unsafe-negation}\n */\n // 'no-unsafe-negation': 'off',\n\n /**\n * Disallow use of optional chaining in contexts where the undefined value is not allowed.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-unsafe-optional-chaining}\n */\n // 'no-unsafe-optional-chaining': 'off',\n\n /**\n * Disallow unused private class members.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-unused-private-class-members}\n */\n // 'no-unused-private-class-members': 'off',\n\n /**\n * Disallow unused variables.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-unused-vars}\n */\n // 'no-unused-vars': 'off',\n\n /**\n * Disallow useless backreferences in regular expressions.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-useless-backreference}\n */\n // 'no-useless-backreference': 'off',\n\n /**\n * Require calls to isNaN() when checking for NaN.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/use-isnan}\n */\n // 'use-isnan': 'off',\n\n /**\n * Enforce comparing typeof expressions against valid strings.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/valid-typeof}\n */\n // 'valid-typeof': 'off',\n\n /**\n * Disallow lexical declarations in case clauses.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-case-declarations}\n */\n // 'no-case-declarations': 'off',\n\n /**\n * Disallow deleting variables.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-delete-var}\n */\n // 'no-delete-var': 'off',\n\n /**\n * Disallow empty block statements.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-empty}\n */\n // 'no-empty': 'off',\n\n /**\n * Disallow empty static blocks.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-empty-static-block}\n */\n // 'no-empty-static-block': 'off',\n\n /**\n * Disallow unnecessary boolean casts.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.org/docs/latest/rules/no-extra-boolean-cast}\n */\n // 'no-extra-boolean-cast': 'off',\n\n /**\n * Disallow assignments to native objects or read-only global variables.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-global-assign}\n */\n // 'no-global-assign': 'off',\n\n /**\n * Disallow &#92;8 and &#92;9 escape sequences in string literals.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-nonoctal-decimal-escape}\n */\n // 'no-nonoctal-decimal-escape': 'off',\n\n /**\n * Disallow octal literals.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-octal}\n */\n // 'no-octal': 'off',\n\n /**\n * Disallow variable redeclaration.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-redeclare}\n */\n // 'no-redeclare': 'off',\n\n /**\n * Disallow multiple spaces in regular expressions.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.org/docs/latest/rules/no-regex-spaces}\n */\n // 'no-regex-spaces': 'off',\n\n /**\n * Disallow identifiers from shadowing restricted names.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-shadow-restricted-names}\n */\n // 'no-shadow-restricted-names': 'off',\n\n /**\n * Disallow unused labels.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.org/docs/latest/rules/no-unused-labels}\n */\n // 'no-unused-labels': 'off',\n\n /**\n * Disallow unnecessary catch clauses.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-useless-catch}\n */\n // 'no-useless-catch': 'off',\n\n /**\n * Disallow unnecessary escape characters.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-useless-escape}\n */\n // 'no-useless-escape': 'off',\n\n /**\n * Disallow with statements.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/no-with}\n */\n // 'no-with': 'off',\n\n /**\n * Require generator functions to contain yield.\n * @config recommended\n * @see {@link https://eslint.org/docs/latest/rules/require-yield}\n */\n // 'require-yield': 'off',\n },\n});\n","import { includeIgnoreFile } from '@eslint/compat';\nimport { findGitIgnore } from '@jpp-toolkit/utils';\nimport { defineConfig } from 'eslint/config';\n\n/**\n * Generates an ESLint configuration that ignores files based on the project's .gitignore.\n * @see {@link https://eslint.org/docs/latest/use/configure/ignore#including-gitignore-files}\n */\nexport const ignoreConfig = (rootDir?: string) => {\n const gitIgnorePath = findGitIgnore(rootDir);\n const config = includeIgnoreFile(gitIgnorePath);\n\n return defineConfig({\n name: 'ignore-config',\n extends: [config],\n });\n};\n","import { createTypeScriptImportResolver } from 'eslint-import-resolver-typescript';\nimport { createNodeResolver, importX } from 'eslint-plugin-import-x';\nimport { defineConfig } from 'eslint/config';\n\n/**\n * Import X configuration.\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x}\n */\nexport const importXConfig = defineConfig([\n {\n name: 'import-x-config',\n // @ts-expect-error - import-x flatConfigs is wrongly typed\n extends: [importX.flatConfigs.recommended],\n settings: {\n 'import-x/resolver-next': [createNodeResolver()],\n },\n rules: {\n /**\n * Forbid imported names marked with @deprecated documentation tag.\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-deprecated.md}\n */\n // 'import-x/no-deprecated': 'error',\n\n /**\n * Forbid empty named import blocks.\n * @fixable\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-empty-named-blocks.md}\n */\n 'import-x/no-empty-named-blocks': 'error',\n\n /**\n * Forbid the use of extraneous packages.\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-extraneous-dependencies.md}\n */\n // 'import-x/no-extraneous-dependencies': 'error',\n\n /**\n * Forbid the use of mutable exports with var or let.\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-mutable-exports.md}\n */\n 'import-x/no-mutable-exports': 'error',\n\n /**\n * Forbid importing a default export by a different name.\n * @config warnings\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-rename-default.md}\n */\n 'import-x/no-rename-default': 'off',\n\n /**\n * Forbid modules without exports, or exports without matching import in another module.\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-unused-modules.md}\n */\n 'import-x/no-unused-modules': 'error',\n\n /**\n * Forbid AMD require and define calls.\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-amd.md}\n */\n // 'import-x/no-amd': 'error',\n\n /**\n * Forbid CommonJS require calls and module.exports or exports.*.\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-commonjs.md}\n */\n // 'import-x/no-commonjs': 'error',\n\n /**\n * Forbid import statements with CommonJS module.exports.\n * @fixable\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-import-module-exports.md}\n */\n // 'import-x/no-import-module-exports': 'error',\n\n /**\n * Forbid Node.js builtin modules.\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-nodejs-modules.md}\n */\n // 'import-x/no-nodejs-modules': 'error',\n\n /**\n * Forbid potentially ambiguous parse goal (script vs. module).\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/unambiguous.md}\n */\n // 'import-x/unambiguous': 'error',\n\n /**\n * Forbid import of modules using absolute paths.\n * @fixable\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-absolute-path.md}\n */\n 'import-x/no-absolute-path': 'error',\n\n /**\n * Forbid a module from importing a module with a dependency path back to itself.\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-cycle.md}\n */\n 'import-x/no-cycle': 'error',\n\n /**\n * Forbid require() calls with expressions.\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-dynamic-require.md}\n */\n // 'import-x/no-dynamic-require': 'error',\n\n /**\n * Forbid importing the submodules of other modules.\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-internal-modules.md}\n */\n // 'import-x/no-internal-modules': 'error',\n\n /**\n * Forbid importing packages through relative paths.\n * @fixable\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-relative-packages.md}\n */\n 'import-x/no-relative-packages': 'error',\n\n /**\n * Forbid importing modules from parent directories.\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-relative-parent-imports.md}\n */\n // 'import-x/no-relative-parent-imports': 'error',\n\n /**\n * Enforce which files can be imported in a given folder.\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-restricted-paths.md}\n */\n // 'import-x/no-restricted-paths': 'error',\n\n /**\n * Forbid a module from importing itself.\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-self-import.md}\n */\n 'import-x/no-self-import': 'error',\n\n /**\n * Forbid unnecessary path segments in import and require statements.\n * @fixable\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-useless-path-segments.md}\n */\n 'import-x/no-useless-path-segments': 'error',\n\n /**\n * Forbid webpack loader syntax in imports.\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-webpack-loader-syntax.md}\n */\n // 'import-x/no-webpack-loader-syntax': 'error',\n\n /**\n * Enforce or ban the use of inline type-only markers for named imports.\n * @fixable\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/consistent-type-specifier-style.md}\n */\n 'import-x/consistent-type-specifier-style': ['error', 'prefer-top-level'],\n\n /**\n * Enforce a leading comment with the webpackChunkName for dynamic imports.\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/dynamic-import-chunkname.md}\n */\n // 'import-x/dynamic-import-chunkname': 'error',\n\n /**\n * Ensure all exports appear after other statements.\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/exports-last.md}\n */\n // 'import-x/exports-last': 'error',\n\n /**\n * Ensure consistent use of file extension within the import path.\n * @fixable\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/extensions.md}\n */\n // 'import-x/extensions': 'error',\n\n /**\n * Ensure all imports appear before other statements.\n * @fixable\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/first.md}\n */\n 'import-x/first': 'error',\n\n /**\n * Prefer named exports to be grouped together in a single export declaration.\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/group-exports.md}\n */\n // 'import-x/group-exports': 'error',\n\n /**\n * Replaced by import-x/first.\n * @fixable\n * @deprecated\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/imports-first.md}\n */\n // 'import-x/imports-first': 'error',\n\n /**\n * Enforce the maximum number of dependencies a module can have.\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/max-dependencies.md}\n */\n // 'import-x/max-dependencies': 'error',\n\n /**\n * Enforce a newline after import statements.\n * @fixable\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/newline-after-import.md}\n */\n 'import-x/newline-after-import': 'error',\n\n /**\n * Forbid anonymous values as default exports.\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-anonymous-default-export.md}\n */\n // 'import-x/no-anonymous-default-export': 'error',\n\n /**\n * Forbid default exports.\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-default-export.md}\n */\n // 'import-x/no-default-export': 'error',\n\n /**\n * Forbid named default exports.\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-named-default.md}\n */\n // 'import-x/no-named-default': 'error',\n\n /**\n * Forbid named exports.\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-named-export.md}\n */\n // 'import-x/no-named-export': 'error',\n\n /**\n * Forbid namespace (a.k.a. \"wildcard\" *) imports.\n * @fixable\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-namespace.md}\n */\n // 'import-x/no-namespace': 'error',\n\n /**\n * Forbid unassigned imports.\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-unassigned-import.md}\n */\n // 'import-x/no-unassigned-import': 'error',\n\n /**\n * Enforce a convention in module import order.\n * @fixable\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/order.md}\n */\n // 'import-x/order': 'error',\n\n /**\n * Prefer a default export if module exports a single name or multiple names.\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/prefer-default-export.md}\n */\n // 'import-x/prefer-default-export': 'error',\n\n /**\n * Enforce using namespace imports for specific modules, like react/react-dom, etc.\n * @fixable\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/prefer-namespace-import.md}\n */\n // 'import-x/prefer-namespace-import': 'error',\n\n /**\n * Forbid any invalid exports, i.e. re-export of the same name.\n * @config recommended\n * @config errors\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/export.md}\n */\n // 'import-x/export': 'off',\n\n /**\n * Forbid use of exported name as identifier of default export.\n * @config recommended\n * @config warnings\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-named-as-default.md}\n */\n 'import-x/no-named-as-default': 'off',\n\n /**\n * Forbid use of exported name as property of default export.\n * @config recommended\n * @config warnings\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-named-as-default-member.md}\n */\n 'import-x/no-named-as-default-member': 'off',\n\n /**\n * Ensure a default export is present, given a default import.\n * @config recommended\n * @config errors\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/default.md}\n */\n // 'import-x/default': 'off',\n\n /**\n * Ensure named imports correspond to a named export in the remote file.\n * @config recommended\n * @config typescript\n * @config errors\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/named.md}\n */\n // 'import-x/named': 'off',\n\n /**\n * Ensure imported namespaces contain dereferenced properties as they are dereferenced.\n * @config recommended\n * @config errors\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/namespace.md}\n */\n // 'import-x/namespace': 'off',\n\n /**\n * Ensure imports point to a file/module that can be resolved.\n * @config recommended\n * @config errors\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-unresolved.md}\n */\n 'import-x/no-unresolved': 'off',\n\n /**\n * Forbid repeated import of the same module in multiple places.\n * @config recommended\n * @config warnings\n * @fixable\n * @see {@link https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-duplicates.md}\n */\n 'no-duplicate-imports': 'off',\n // 'import-x/no-duplicates': 'off',\n },\n },\n {\n name: 'import-x-config-typescript',\n files: ['**/*.{ts,tsx}'],\n // @ts-expect-error - import-x flatConfigs is wrongly typed\n extends: [importX.flatConfigs.typescript],\n settings: {\n 'import-x/resolver-next': [createTypeScriptImportResolver(), createNodeResolver()],\n },\n },\n]);\n","import jsxA11y from 'eslint-plugin-jsx-a11y';\nimport { defineConfig } from 'eslint/config';\n\n/**\n * JSX a11y configuration.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-jsx-a11y}\n */\nexport const jsxA11yConfig = defineConfig({\n name: 'jsx-a11y-config',\n extends: [jsxA11y.flatConfigs.recommended],\n rules: {\n /**\n * Enforce emojis are wrapped in <span> and provide screen reader access.\n * @deprecated\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/accessible-emoji.md}\n */\n // 'jsx-a11y/accessible-emoji': 'error',\n /**\n * Enforce lang attribute has a valid value.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/lang.md}\n */\n // 'jsx-a11y/lang': 'error',\n /**\n * Disallow aria-hidden=\"true\" from being set on focusable elements.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-aria-hidden-on-focusable.md}\n */\n // 'jsx-a11y/no-aria-hidden-on-focusable': 'error',\n /**\n * Enforce usage of onBlur over onChange on select menus for accessibility.\n * @deprecated\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-onchange.md}\n */\n // 'jsx-a11y/no-onchange': 'error',\n /**\n * Enforces using semantic DOM elements over the ARIA role property.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/prefer-tag-over-role.md}\n */\n // 'jsx-a11y/prefer-tag-over-role': 'error',\n /**\n * Enforce all elements that require alternative text have meaningful information to relay back to end user.\n * @config recommended\n * @config strict\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/alt-text.md}\n */\n // 'jsx-a11y/alt-text': 'off',\n /**\n * Enforce <a> text to not exactly match \"click here\", \"here\", \"link\", or \"a link\".\n * @config recommended\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/anchor-ambiguous-text.md}\n */\n // 'jsx-a11y/anchor-ambiguous-text': 'off',\n /**\n * Enforce all anchors to contain accessible content.\n * @config recommended\n * @config strict\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/anchor-has-content.md}\n */\n // 'jsx-a11y/anchor-has-content': 'off',\n /**\n * Enforce all anchors are valid, navigable elements.\n * @config recommended\n * @config strict\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/anchor-is-valid.md}\n */\n // 'jsx-a11y/anchor-is-valid': 'off',\n /**\n * Enforce elements with aria-activedescendant are tabbable.\n * @config recommended\n * @config strict\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/aria-activedescendant-has-tabindex.md}\n */\n // 'jsx-a11y/aria-activedescendant-has-tabindex': 'off',\n /**\n * Enforce all aria-* props are valid.\n * @config recommended\n * @config strict\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/aria-props.md}\n */\n // 'jsx-a11y/aria-props': 'off',\n /**\n * Enforce ARIA state and property values are valid.\n * @config recommended\n * @config strict\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/aria-proptypes.md}\n */\n // 'jsx-a11y/aria-proptypes': 'off',\n /**\n * Enforce that elements with ARIA roles must use a valid, non-abstract ARIA role.\n * @config recommended\n * @config strict\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/aria-role.md}\n */\n // 'jsx-a11y/aria-role': 'off',\n /**\n * Enforce that elements that do not support ARIA roles, states, and properties do not have those attributes.\n * @config recommended\n * @config strict\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/aria-unsupported-elements.md}\n */\n // 'jsx-a11y/aria-unsupported-elements': 'off',\n /**\n * Enforce that autocomplete attributes are used correctly.\n * @config recommended\n * @config strict\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/autocomplete-valid.md}\n */\n // 'jsx-a11y/autocomplete-valid': 'off',\n /**\n * Enforce a clickable non-interactive element has at least one keyboard event listener.\n * @config recommended\n * @config strict\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/click-events-have-key-events.md}\n */\n // 'jsx-a11y/click-events-have-key-events': 'off',\n /**\n * Enforce that a control (an interactive element) has a text label.\n * @config recommended\n * @config strict\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/control-has-associated-label.md}\n */\n // 'jsx-a11y/control-has-associated-label': 'off',\n /**\n * Enforce heading (h1, h2, etc) elements contain accessible content.\n * @config recommended\n * @config strict\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/heading-has-content.md}\n */\n // 'jsx-a11y/heading-has-content': 'off',\n /**\n * Enforce <html> element has lang prop.\n * @config recommended\n * @config strict\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/html-has-lang.md}\n */\n // 'jsx-a11y/html-has-lang': 'off',\n /**\n * Enforce iframe elements have a title attribute.\n * @config recommended\n * @config strict\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/iframe-has-title.md}\n */\n // 'jsx-a11y/iframe-has-title': 'off',\n /**\n * Enforce <img> alt prop does not contain the word \"image\", \"picture\", or \"photo\".\n * @config recommended\n * @config strict\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/img-redundant-alt.md}\n */\n // 'jsx-a11y/img-redundant-alt': 'off',\n /**\n * Enforce that elements with interactive handlers like onClick must be focusable.\n * @config recommended\n * @config strict\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/interactive-supports-focus.md}\n */\n // 'jsx-a11y/interactive-supports-focus': 'off',\n /**\n * Enforce that a label tag has a text label and an associated control.\n * @config recommended\n * @config strict\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/label-has-associated-control.md}\n */\n // 'jsx-a11y/label-has-associated-control': 'off',\n /**\n * Enforce that <label> elements have the htmlFor prop.\n * @config recommended\n * @config strict\n * @deprecated\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/label-has-for.md}\n */\n // 'jsx-a11y/label-has-for': 'off',\n /**\n * Enforces that <audio> and <video> elements must have a <track> for captions.\n * @config recommended\n * @config strict\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/media-has-caption.md}\n */\n // 'jsx-a11y/media-has-caption': 'off',\n /**\n * Enforce that onMouseOver/onMouseOut are accompanied by onFocus/onBlur for keyboard-only users.\n * @config recommended\n * @config strict\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/mouse-events-have-key-events.md}\n */\n // 'jsx-a11y/mouse-events-have-key-events': 'off',\n /**\n * Enforce that the accessKey prop is not used on any element to avoid complications with keyboard commands used by a screen reader.\n * @config recommended\n * @config strict\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-access-key.md}\n */\n // 'jsx-a11y/no-access-key': 'off',\n /**\n * Enforce autoFocus prop is not enabled.\n * @config recommended\n * @config strict\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-autofocus.md}\n */\n // 'jsx-a11y/no-autofocus': 'off',\n /**\n * Enforce distracting elements are not used.\n * @config recommended\n * @config strict\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-distracting-elements.md}\n */\n // 'jsx-a11y/no-distracting-elements': 'off',\n /**\n * Interactive elements should not be assigned non-interactive roles.\n * @config recommended\n * @config strict\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-interactive-element-to-noninteractive-role.md}\n */\n // 'jsx-a11y/no-interactive-element-to-noninteractive-role': 'off',\n /**\n * Non-interactive elements should not be assigned mouse or keyboard event listeners.\n * @config recommended\n * @config strict\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-noninteractive-element-interactions.md}\n */\n // 'jsx-a11y/no-noninteractive-element-interactions': 'off',\n /**\n * Non-interactive elements should not be assigned interactive roles.\n * @config recommended\n * @config strict\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-noninteractive-element-to-interactive-role.md}\n */\n // 'jsx-a11y/no-noninteractive-element-to-interactive-role': 'off',\n /**\n * TabIndex should only be declared on interactive elements.\n * @config recommended\n * @config strict\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-noninteractive-tabindex.md}\n */\n // 'jsx-a11y/no-noninteractive-tabindex': 'off',\n /**\n * Enforce explicit role property is not the same as implicit/default role property on element.\n * @config recommended\n * @config strict\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-redundant-roles.md}\n */\n // 'jsx-a11y/no-redundant-roles': 'off',\n /**\n * Enforce that non-interactive, visible elements (such as <div>) that have click handlers use the role attribute.\n * @config recommended\n * @config strict\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/no-static-element-interactions.md}\n */\n // 'jsx-a11y/no-static-element-interactions': 'off',\n /**\n * Enforce that elements with ARIA roles must have all required attributes for that role.\n * @config recommended\n * @config strict\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/role-has-required-aria-props.md}\n */\n // 'jsx-a11y/role-has-required-aria-props': 'off',\n /**\n * Enforce that elements with explicit or implicit roles defined contain only aria-* properties supported by that role.\n * @config recommended\n * @config strict\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/role-supports-aria-props.md}\n */\n // 'jsx-a11y/role-supports-aria-props': 'off',\n /**\n * Enforce scope prop is only used on <th> elements.\n * @config recommended\n * @config strict\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/scope.md}\n */\n // 'jsx-a11y/scope': 'off',\n /**\n * Enforce tabIndex value is not greater than zero.\n * @config recommended\n * @config strict\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/tabindex-no-positive.md}\n */\n // 'jsx-a11y/tabindex-no-positive': 'off',\n },\n});\n","import perfectionist from 'eslint-plugin-perfectionist';\nimport { defineConfig } from 'eslint/config';\n\n/**\n * Perfectionist configuration.\n * @see {@link https://perfectionist.dev/rules}\n */\nexport const perfectionistConfig = defineConfig({\n name: 'perfectionist-config',\n plugins: { perfectionist },\n rules: {\n /**\n * Enforce sorted arrays before include method.\n * @fixable\n * @see {@link https://perfectionist.dev/rules/sort-array-includes}\n */\n 'perfectionist/sort-array-includes': 'error',\n\n /**\n * Enforce sorted classes.\n * @fixable\n * @see {@link https://perfectionist.dev/rules/sort-classes}\n */\n // 'perfectionist/sort-classes': 'error',\n\n /**\n * Enforce sorted decorators.\n * @fixable\n * @see {@link https://perfectionist.dev/rules/sort-decorators}\n */\n 'perfectionist/sort-decorators': 'error',\n\n /**\n * Enforce sorted TypeScript enums.\n * @fixable\n * @see {@link https://perfectionist.dev/rules/sort-enums}\n */\n // 'perfectionist/sort-enums': 'error',\n\n /**\n * Enforce sorted exports.\n * @fixable\n * @see {@link https://perfectionist.dev/rules/sort-exports}\n */\n 'perfectionist/sort-exports': [\n 'error',\n {\n type: 'natural',\n order: 'asc',\n groupKind: 'types-first',\n },\n ],\n\n /**\n * Enforce sorted heritage clauses.\n * @fixable\n * @see {@link https://perfectionist.dev/rules/sort-heritage-clauses}\n */\n 'perfectionist/sort-heritage-clauses': 'error',\n\n /**\n * Enforce sorted imports.\n * @fixable\n * @see {@link https://perfectionist.dev/rules/sort-imports}\n */\n 'sort-imports': 'off',\n 'perfectionist/sort-imports': [\n 'error',\n {\n type: 'natural',\n order: 'asc',\n internalPattern: ['^~.*'],\n newlinesBetween: 'always',\n groups: [\n ['side-effect', 'side-effect-style'],\n ['builtin-type', 'builtin'],\n ['external-type', 'external'],\n ['internal-type', 'internal'],\n ['parent-type', 'parent'],\n ['sibling-type', 'sibling'],\n ['index-type', 'index'],\n ['object'],\n ['style'],\n ['unknown'],\n ],\n },\n ],\n\n /**\n * Enforce sorted interface properties.\n * @fixable\n * @see {@link https://perfectionist.dev/rules/sort-interfaces}\n */\n // 'perfectionist/sort-interfaces': 'error',\n\n /**\n * Enforce sorted intersection types.\n * @fixable\n * @see {@link https://perfectionist.dev/rules/sort-intersection-types}\n */\n // 'perfectionist/sort-intersection-types': 'error',\n\n /**\n * Enforce sorted JSX props.\n * @fixable\n * @see {@link https://perfectionist.dev/rules/sort-jsx-props}\n */\n // 'perfectionist/sort-jsx-props': 'error',\n\n /**\n * Enforce sorted Map elements.\n * @fixable\n * @see {@link https://perfectionist.dev/rules/sort-maps}\n */\n // 'perfectionist/sort-maps': 'error',\n\n /**\n * Enforce sorted modules.\n * @fixable\n * @see {@link https://perfectionist.dev/rules/sort-modules}\n */\n // 'perfectionist/sort-modules': 'error',\n\n /**\n * Enforce sorted named exports.\n * @fixable\n * @see {@link https://perfectionist.dev/rules/sort-named-exports}\n */\n // 'perfectionist/sort-named-exports': 'error',\n\n /**\n * Enforce sorted named imports.\n * @fixable\n * @see {@link https://perfectionist.dev/rules/sort-named-imports}\n */\n // 'perfectionist/sort-named-imports': 'error',\n\n /**\n * Enforce sorted object types.\n * @fixable\n * @see {@link https://perfectionist.dev/rules/sort-object-types}\n */\n // 'perfectionist/sort-object-types': 'error',\n\n /**\n * Enforce sorted objects.\n * @fixable\n * @see {@link https://perfectionist.dev/rules/sort-objects}\n */\n // 'perfectionist/sort-objects': 'error',\n\n /**\n * Enforce sorted Set elements.\n * @fixable\n * @see {@link https://perfectionist.dev/rules/sort-sets}\n */\n // 'perfectionist/sort-sets': 'error',\n\n /**\n * Enforce sorted switch case statements.\n * @fixable\n * @see {@link https://perfectionist.dev/rules/sort-switch-case}\n */\n // 'perfectionist/sort-switch-case': 'error',\n\n /**\n * Enforce sorted union types.\n * @fixable\n * @see {@link https://perfectionist.dev/rules/sort-union-types}\n */\n // 'perfectionist/sort-union-types': 'error',\n\n /**\n * Enforce sorted variable declarations.\n * @fixable\n * @see {@link https://perfectionist.dev/rules/sort-variable-declarations}\n */\n // 'perfectionist/sort-variable-declarations': 'error',\n },\n});\n","import prettier from 'eslint-plugin-prettier/recommended';\nimport { defineConfig } from 'eslint/config';\n\n/**\n * Prettier configuration.\n * @see {@link https://github.com/prettier/eslint-plugin-prettier}\n */\nexport const prettierConfig = defineConfig({\n name: 'prettier-config',\n extends: [prettier],\n});\n","import react from 'eslint-plugin-react';\nimport { defineConfig } from 'eslint/config';\n\n/**\n * React configuration.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react}\n */\nexport const reactConfig = defineConfig({\n name: 'react-config',\n extends: [react.configs.flat['recommended']!, react.configs.flat['jsx-runtime']!],\n settings: {\n react: {\n version: 'detect',\n },\n },\n rules: {\n /**\n * Enforces consistent naming for boolean props.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/boolean-prop-naming.md}\n */\n 'react/boolean-prop-naming': [\n 'error',\n { rule: '^(is|has|can|should)[A-Z][A-Za-z0-9]*', validateNested: true },\n ],\n\n /**\n * Disallow usage of button elements without an explicit type attribute.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/button-has-type.md}\n */\n 'react/button-has-type': 'error',\n\n /**\n * Enforce using onChange or readonly attribute when checked is used.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/checked-requires-onchange-or-readonly.md}\n */\n 'react/checked-requires-onchange-or-readonly': 'error',\n\n /**\n * Enforce all defaultProps have a corresponding non-required PropType.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/default-props-match-prop-types.md}\n */\n 'react/default-props-match-prop-types': 'error',\n\n /**\n * Enforce consistent usage of destructuring assignment of props, state, and context.\n * @fixable\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/destructuring-assignment.md}\n */\n 'react/destructuring-assignment': 'error',\n\n /**\n * Disallow certain props on components.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/forbid-component-props.md}\n */\n // 'react/forbid-component-props': 'error',\n\n /**\n * Disallow certain props on DOM Nodes.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/forbid-dom-props.md}\n */\n // 'react/forbid-dom-props': 'error',\n\n /**\n * Disallow certain elements.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/forbid-elements.md}\n */\n // 'react/forbid-elements': 'error',\n\n /**\n * Disallow using another component's propTypes.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/forbid-foreign-prop-types.md}\n */\n // 'react/forbid-foreign-prop-types': 'error',\n\n /**\n * Disallow certain propTypes.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/forbid-prop-types.md}\n */\n // 'react/forbid-prop-types': 'error',\n\n /**\n * Require all forwardRef components include a ref parameter.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/forward-ref-uses-ref.md}\n */\n 'react/forward-ref-uses-ref': 'error',\n\n /**\n * Enforce a specific function type for function components.\n * @fixable\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/function-component-definition.md}\n */\n 'react/function-component-definition': [\n 'error',\n { namedComponents: 'arrow-function', unnamedComponents: 'arrow-function' },\n ],\n\n /**\n * Ensure destructuring and symmetric naming of useState hook value and setter variables.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/hook-use-state.md}\n */\n 'react/hook-use-state': 'error',\n\n /**\n * Enforce sandbox attribute on iframe elements.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/iframe-missing-sandbox.md}\n */\n 'react/iframe-missing-sandbox': 'error',\n\n /**\n * Enforce boolean attributes notation in JSX.\n * @fixable\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-boolean-value.md}\n */\n 'react/jsx-boolean-value': ['error', 'never'],\n\n /**\n * Enforce or disallow spaces inside of curly braces in JSX attributes and expressions.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-child-element-spacing.md}\n */\n 'react/jsx-child-element-spacing': 'error',\n\n /**\n * Enforce closing bracket location in JSX.\n * @fixable\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-closing-bracket-location.md}\n */\n 'react/jsx-closing-bracket-location': 'error',\n\n /**\n * Enforce closing tag location for multiline JSX.\n * @fixable\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-closing-tag-location.md}\n */\n 'react/jsx-closing-tag-location': 'error',\n\n /**\n * Disallow unnecessary JSX expressions when literals alone are sufficient or enforce JSX expressions on literals in JSX children or attributes.\n * @fixable\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-curly-brace-presence.md}\n */\n 'react/jsx-curly-brace-presence': ['error', 'never'],\n\n /**\n * Enforce consistent linebreaks in curly braces in JSX attributes and expressions.\n * @fixable\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-curly-newline.md}\n */\n 'react/jsx-curly-newline': 'error',\n\n /**\n * Enforce or disallow spaces inside of curly braces in JSX attributes and expressions.\n * @fixable\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-curly-spacing.md}\n */\n 'react/jsx-curly-spacing': 'error',\n\n /**\n * Enforce or disallow spaces around equal signs in JSX attributes.\n * @fixable\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-equals-spacing.md}\n */\n 'react/jsx-equals-spacing': 'error',\n\n /**\n * Disallow file extensions that may contain JSX.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-filename-extension.md}\n */\n // 'react/jsx-filename-extension': 'error',\n\n /**\n * Enforce proper position of the first property in JSX.\n * @fixable\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-first-prop-new-line.md}\n */\n 'react/jsx-first-prop-new-line': 'error',\n\n /**\n * Enforce shorthand or standard form for React fragments.\n * @fixable\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-fragments.md}\n */\n 'react/jsx-fragments': 'error',\n\n /**\n * Enforce event handler naming conventions in JSX.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-handler-names.md}\n */\n 'react/jsx-handler-names': 'error',\n\n /**\n * Enforce JSX indentation.\n * @fixable\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-indent.md}\n */\n 'react/jsx-indent': 'error',\n\n /**\n * Enforce props indentation in JSX.\n * @fixable\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-indent-props.md}\n */\n 'react/jsx-indent-props': 'error',\n\n /**\n * Enforce JSX maximum depth.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-max-depth.md}\n */\n // 'react/jsx-max-depth': 'error',\n\n /**\n * Enforce maximum of props on a single line in JSX.\n * @fixable\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-max-props-per-line.md}\n */\n // 'react/jsx-max-props-per-line': 'error',\n\n /**\n * Require or prevent a new line after jsx elements and expressions.\n * @fixable\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-newline.md}\n */\n // 'react/jsx-newline': 'error',\n\n /**\n * Disallow .bind() or arrow functions in JSX props.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-bind.md}\n */\n 'react/jsx-no-bind': 'error',\n\n /**\n * Disallows JSX context provider values from taking values that will cause needless rerenders.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-constructed-context-values.md}\n */\n 'react/jsx-no-constructed-context-values': 'error',\n\n /**\n * Disallow problematic leaked values from being rendered.\n * @fixable\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-leaked-render.md}\n */\n 'react/jsx-no-leaked-render': 'error',\n\n /**\n * Disallow usage of string literals in JSX.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-literals.md}\n */\n // 'react/jsx-no-literals': 'error',\n\n /**\n * Disallow usage of javascript: URLs.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-script-url.md}\n */\n 'react/jsx-no-script-url': 'error',\n\n /**\n * Disallow unnecessary fragments.\n * @fixable\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-useless-fragment.md}\n */\n 'react/jsx-no-useless-fragment': 'error',\n\n /**\n * Require one JSX element per line.\n * @fixable\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-one-expression-per-line.md}\n */\n 'react/jsx-one-expression-per-line': 'error',\n\n /**\n * Enforce PascalCase for user-defined JSX components.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-pascal-case.md}\n */\n 'react/jsx-pascal-case': 'error',\n\n /**\n * Disallow multiple spaces between inline JSX props.\n * @fixable\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-props-no-multi-spaces.md}\n */\n 'react/jsx-props-no-multi-spaces': 'error',\n\n /**\n * Disallow JSX prop spreading the same identifier multiple times.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-props-no-spread-multi.md}\n */\n 'react/jsx-props-no-spread-multi': 'error',\n\n /**\n * Disallow JSX prop spreading.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-props-no-spreading.md}\n */\n // 'react/jsx-props-no-spreading': 'error',\n\n /**\n * Enforce defaultProps declarations alphabetical sorting.\n * @deprecated\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-sort-default-props.md}\n */\n // 'react/jsx-sort-default-props': 'error',\n\n /**\n * Enforce props alphabetical sorting.\n * @fixable\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-sort-props.md}\n */\n 'react/jsx-sort-props': [\n 'error',\n {\n callbacksLast: true,\n shorthandLast: true,\n multiline: 'last',\n ignoreCase: false,\n noSortAlphabetically: false,\n reservedFirst: true,\n },\n ],\n\n /**\n * Enforce spacing before closing bracket in JSX.\n * @fixable\n * @deprecated\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-space-before-closing.md}\n */\n // 'react/jsx-space-before-closing': 'error',\n\n /**\n * Enforce whitespace in and around the JSX opening and closing brackets.\n * @fixable\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-tag-spacing.md}\n */\n 'react/jsx-tag-spacing': 'error',\n\n /**\n * Disallow missing parentheses around multiline JSX.\n * @fixable\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-wrap-multilines.md}\n */\n 'react/jsx-wrap-multilines': 'error',\n\n /**\n * Disallow when this.state is accessed within setState.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-access-state-in-setstate.md}\n */\n 'react/no-access-state-in-setstate': 'error',\n\n /**\n * Disallow adjacent inline elements not separated by whitespace.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-adjacent-inline-elements.md}\n */\n 'react/no-adjacent-inline-elements': 'error',\n\n /**\n * Disallow usage of Array index in keys.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-array-index-key.md}\n */\n 'react/no-array-index-key': 'error',\n\n /**\n * Lifecycle methods should be methods on the prototype, not class fields.\n * @fixable\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-arrow-function-lifecycle.md}\n */\n 'react/no-arrow-function-lifecycle': 'error',\n\n /**\n * Disallow usage of dangerous JSX properties.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-danger.md}\n */\n 'react/no-danger': 'error',\n\n /**\n * Disallow usage of setState in componentDidMount.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-did-mount-set-state.md}\n */\n 'react/no-did-mount-set-state': 'error',\n\n /**\n * Disallow usage of setState in componentDidUpdate.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-did-update-set-state.md}\n */\n 'react/no-did-update-set-state': 'error',\n\n /**\n * Disallow usage of invalid attributes.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-invalid-html-attribute.md}\n */\n 'react/no-invalid-html-attribute': 'error',\n\n /**\n * Disallow multiple component definition per file.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-multi-comp.md}\n */\n // 'react/no-multi-comp': 'error',\n\n /**\n * Enforce that namespaces are not used in React elements.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-namespace.md}\n */\n 'react/no-namespace': 'error',\n\n /**\n * Disallow usage of referential-type variables as default param in functional component.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-object-type-as-default-prop.md}\n */\n 'react/no-object-type-as-default-prop': 'error',\n\n /**\n * Disallow usage of shouldComponentUpdate when extending React.PureComponent.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-redundant-should-component-update.md}\n */\n 'react/no-redundant-should-component-update': 'error',\n\n /**\n * Disallow usage of setState.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-set-state.md}\n */\n 'react/no-set-state': 'error',\n\n /**\n * Disallow this from being used in stateless functional components.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-this-in-sfc.md}\n */\n 'react/no-this-in-sfc': 'error',\n\n /**\n * Disallow common typos.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-typos.md}\n */\n 'react/no-typos': 'error',\n\n /**\n * Disallow creating unstable components inside components.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-unstable-nested-components.md}\n */\n 'react/no-unstable-nested-components': 'error',\n\n /**\n * Disallow declaring unused methods of component class.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-unused-class-component-methods.md}\n */\n 'react/no-unused-class-component-methods': 'error',\n\n /**\n * Disallow definitions of unused propTypes.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-unused-prop-types.md}\n */\n 'react/no-unused-prop-types': 'error',\n\n /**\n * Disallow definitions of unused state.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-unused-state.md}\n */\n 'react/no-unused-state': 'error',\n\n /**\n * Disallow usage of setState in componentWillUpdate.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-will-update-set-state.md}\n */\n 'react/no-will-update-set-state': 'error',\n\n /**\n * Enforce ES5 or ES6 class for React Components.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/prefer-es6-class.md}\n */\n 'react/prefer-es6-class': 'error',\n\n /**\n * Prefer exact proptype definitions.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/prefer-exact-props.md}\n */\n 'react/prefer-exact-props': 'error',\n\n /**\n * Enforce that props are read-only.\n * @fixable\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/prefer-read-only-props.md}\n */\n 'react/prefer-read-only-props': 'error',\n\n /**\n * Enforce stateless components to be written as a pure function.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/prefer-stateless-function.md}\n */\n 'react/prefer-stateless-function': 'error',\n\n /**\n * Enforce a defaultProps definition for every prop that is not a required prop.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/require-default-props.md}\n */\n 'react/require-default-props': 'error',\n\n /**\n * Enforce React components to have a shouldComponentUpdate method.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/require-optimization.md}\n */\n 'react/require-optimization': 'error',\n\n /**\n * Disallow extra closing tags for components without children.\n * @fixable\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/self-closing-comp.md}\n */\n 'react/self-closing-comp': 'error',\n\n /**\n * Enforce component methods order.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/sort-comp.md}\n */\n 'react/sort-comp': 'error',\n\n /**\n * Enforce defaultProps declarations alphabetical sorting.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/sort-default-props.md}\n */\n 'react/sort-default-props': 'error',\n\n /**\n * Enforce propTypes declarations alphabetical sorting.\n * @fixable\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/sort-prop-types.md}\n */\n 'react/sort-prop-types': 'error',\n\n /**\n * Enforce class component state initialization style.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/state-in-constructor.md}\n */\n 'react/state-in-constructor': 'error',\n\n /**\n * Enforces where React component static properties should be positioned.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/static-property-placement.md}\n */\n 'react/static-property-placement': 'error',\n\n /**\n * Enforce style prop value is an object.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/style-prop-object.md}\n */\n // 'react/style-prop-object': 'error',\n\n /**\n * Disallow void DOM elements (e.g. <img />, <br />) from receiving children.\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/void-dom-elements-no-children.md}\n */\n 'react/void-dom-elements-no-children': 'error',\n\n /**\n * Disallow missing displayName in a React component definition.\n * @config recommended\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/display-name.md}\n */\n // 'react/display-name': 'off',\n\n /**\n * Disallow missing key props in iterators/collection literals.\n * @config recommended\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-key.md}\n */\n // 'react/jsx-key': 'off',\n\n /**\n * Disallow comments from being inserted as text nodes.\n * @config recommended\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-comment-textnodes.md}\n */\n // 'react/jsx-no-comment-textnodes': 'off',\n\n /**\n * Disallow duplicate properties in JSX.\n * @config recommended\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-duplicate-props.md}\n */\n // 'react/jsx-no-duplicate-props': 'off',\n\n /**\n * Disallow target=\"_blank\" attribute without rel=\"noreferrer\".\n * @config recommended\n * @fixable\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-target-blank.md}\n */\n // 'react/jsx-no-target-blank': 'off',\n\n /**\n * Disallow undeclared variables in JSX.\n * @config recommended\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-undef.md}\n */\n // 'react/jsx-no-undef': 'off',\n\n /**\n * Disallow React to be incorrectly marked as unused.\n * @config recommended\n * @config jsx-runtime\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-uses-react.md}\n */\n // 'react/jsx-uses-react': 'off',\n\n /**\n * Disallow variables used in JSX to be incorrectly marked as unused.\n * @config recommended\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-uses-vars.md}\n */\n // 'react/jsx-uses-vars': 'off',\n\n /**\n * Disallow passing of children as props.\n * @config recommended\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-children-prop.md}\n */\n // 'react/no-children-prop': 'off',\n\n /**\n * Disallow when a DOM element is using both children and dangerouslySetInnerHTML.\n * @config recommended\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-danger-with-children.md}\n */\n // 'react/no-danger-with-children': 'off',\n\n /**\n * Disallow usage of deprecated methods.\n * @config recommended\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-deprecated.md}\n */\n // 'react/no-deprecated': 'off',\n\n /**\n * Disallow direct mutation of this.state.\n * @config recommended\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-direct-mutation-state.md}\n */\n // 'react/no-direct-mutation-state': 'off',\n\n /**\n * Disallow usage of findDOMNode.\n * @config recommended\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-find-dom-node.md}\n */\n // 'react/no-find-dom-node': 'off',\n\n /**\n * Disallow usage of isMounted.\n * @config recommended\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-is-mounted.md}\n */\n // 'react/no-is-mounted': 'off',\n\n /**\n * Disallow usage of the return value of ReactDOM.render.\n * @config recommended\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-render-return-value.md}\n */\n // 'react/no-render-return-value': 'off',\n\n /**\n * Disallow using string references.\n * @config recommended\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-string-refs.md}\n */\n // 'react/no-string-refs': 'off',\n\n /**\n * Disallow unescaped HTML entities from appearing in markup.\n * @config recommended\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-unescaped-entities.md}\n */\n // 'react/no-unescaped-entities': 'off',\n\n /**\n * Disallow usage of unknown DOM property.\n * @config recommended\n * @fixable\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-unknown-property.md}\n */\n // 'react/no-unknown-property': 'off',\n\n /**\n * Disallow usage of unsafe lifecycle methods.\n * @config recommended\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-unsafe.md}\n */\n // 'react/no-unsafe': 'off',\n\n /**\n * Disallow missing props validation in a React component definition.\n * @config recommended\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/prop-types.md}\n */\n // 'react/prop-types': 'off',\n\n /**\n * Disallow missing React when using JSX.\n * @config recommended\n * @config jsx-runtime\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/react-in-jsx-scope.md}\n */\n // 'react/react-in-jsx-scope': 'off',\n\n /**\n * Enforce ES5 or ES6 class for returning value in render function.\n * @config recommended\n * @see {@link https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/require-render-return.md}\n */\n // 'react/require-render-return': 'off',\n },\n});\n","import reactHooks from 'eslint-plugin-react-hooks';\nimport { defineConfig } from 'eslint/config';\n\n/**\n * React hooks configuration.\n * @see {@link https://github.com/facebook/react/tree/main/packages/eslint-plugin-react-hooks}\n */\nexport const reactHooksConfig = defineConfig({\n name: 'react-hooks-config',\n extends: [reactHooks.configs.flat.recommended],\n});\n","import stylistic from '@stylistic/eslint-plugin';\nimport { defineConfig } from 'eslint/config';\n\n/**\n * Stylistic configuration.\n * @see {@link https://eslint.style/rules}\n */\nexport const stylisticConfig = defineConfig({\n name: 'stylistic-config',\n plugins: { '@stylistic': stylistic },\n rules: {\n /**\n * Enforce linebreaks after opening and before closing array brackets.\n * @fixable\n * @see {@link https://eslint.style/rules/array-bracket-newline}\n */\n // '@stylistic/array-bracket-newline': 'error',\n\n /**\n * Enforce consistent spacing inside array brackets.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/array-bracket-spacing}\n */\n // '@stylistic/array-bracket-spacing': 'error',\n\n /**\n * Enforce line breaks after each array element.\n * @fixable\n * @see {@link https://eslint.style/rules/array-element-newline}\n */\n // '@stylistic/array-element-newline': 'error',\n\n /**\n * Require parentheses around arrow function arguments.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/arrow-parens}\n */\n // '@stylistic/arrow-parens': 'error',\n\n /**\n * Enforce consistent spacing before and after the arrow in arrow functions.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/arrow-spacing}\n */\n // '@stylistic/arrow-spacing': 'error',\n\n /**\n * Disallow or enforce spaces inside of blocks after opening block and before closing block.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/block-spacing}\n */\n // '@stylistic/block-spacing': 'error',\n\n /**\n * Enforce consistent brace style for blocks.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/brace-style}\n */\n // '@stylistic/brace-style': 'error',\n\n /**\n * Require or disallow trailing commas.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/comma-dangle}\n */\n // '@stylistic/comma-dangle': 'error',\n\n /**\n * Enforce consistent spacing before and after commas.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/comma-spacing}\n */\n // '@stylistic/comma-spacing': 'error',\n\n /**\n * Enforce consistent comma style.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/comma-style}\n */\n // '@stylistic/comma-style': 'error',\n\n /**\n * Enforce consistent spacing inside computed property brackets.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/computed-property-spacing}\n */\n // '@stylistic/computed-property-spacing': 'error',\n\n /**\n * Enforce consistent line breaks after opening and before closing braces.\n * @fixable\n * @see {@link https://eslint.style/rules/curly-newline}\n */\n // '@stylistic/curly-newline': 'error',\n\n /**\n * Enforce consistent newlines before and after dots.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/dot-location}\n */\n // '@stylistic/dot-location': 'error',\n\n /**\n * Require or disallow newline at the end of files.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/eol-last}\n */\n // '@stylistic/eol-last': 'error',\n\n /**\n * Enforce line breaks between arguments of a function call.\n * @fixable\n * @see {@link https://eslint.style/rules/function-call-argument-newline}\n */\n // '@stylistic/function-call-argument-newline': 'error',\n\n /**\n * Require or disallow spacing between function identifiers and their invocations.\n * @fixable\n * @see {@link https://eslint.style/rules/function-call-spacing}\n */\n // '@stylistic/function-call-spacing': 'error',\n\n /**\n * Enforce consistent line breaks inside function parentheses.\n * @fixable\n * @see {@link https://eslint.style/rules/function-paren-newline}\n */\n // '@stylistic/function-paren-newline': 'error',\n\n /**\n * Enforce consistent spacing around `*` operators in generator functions.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/generator-star-spacing}\n */\n // '@stylistic/generator-star-spacing': 'error',\n\n /**\n * Enforce the location of arrow function bodies.\n * @fixable\n * @see {@link https://eslint.style/rules/implicit-arrow-linebreak}\n */\n // '@stylistic/implicit-arrow-linebreak': 'error',\n\n /**\n * Enforce consistent indentation.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/indent}\n */\n // '@stylistic/indent': 'error',\n\n /**\n * Indentation for binary operators.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/indent-binary-ops}\n */\n // '@stylistic/indent-binary-ops': 'error',\n\n /**\n * Enforce or disallow spaces inside of curly braces in JSX attributes and expressions.\n * @see {@link https://eslint.style/rules/jsx-child-element-spacing}\n */\n // '@stylistic/jsx-child-element-spacing': 'error',\n\n /**\n * Enforce closing bracket location in JSX.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/jsx-closing-bracket-location}\n */\n // '@stylistic/jsx-closing-bracket-location': 'error',\n\n /**\n * Enforce closing tag location for multiline JSX.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/jsx-closing-tag-location}\n */\n // '@stylistic/jsx-closing-tag-location': 'error',\n\n /**\n * Disallow unnecessary JSX expressions when literals alone are sufficient or enforce JSX expressions on literals in JSX children or attributes.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/jsx-curly-brace-presence}\n */\n // '@stylistic/jsx-curly-brace-presence': 'error',\n\n /**\n * Enforce consistent linebreaks in curly braces in JSX attributes and expressions.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/jsx-curly-newline}\n */\n // '@stylistic/jsx-curly-newline': 'error',\n\n /**\n * Enforce or disallow spaces inside of curly braces in JSX attributes and expressions.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/jsx-curly-spacing}\n */\n // '@stylistic/jsx-curly-spacing': 'error',\n\n /**\n * Enforce or disallow spaces around equal signs in JSX attributes.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/jsx-equals-spacing}\n */\n // '@stylistic/jsx-equals-spacing': 'error',\n\n /**\n * Enforce proper position of the first property in JSX.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/jsx-first-prop-new-line}\n */\n // '@stylistic/jsx-first-prop-new-line': 'error',\n\n /**\n * Enforce line breaks before and after JSX elements when they are used as arguments to a function.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/jsx-function-call-newline}\n */\n // '@stylistic/jsx-function-call-newline': 'error',\n\n /**\n * Enforce JSX indentation. Deprecated, use `indent` rule instead.\n * @fixable\n * @see {@link https://eslint.style/rules/jsx-indent}\n */\n // '@stylistic/jsx-indent': 'error',\n\n /**\n * Enforce props indentation in JSX.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/jsx-indent-props}\n */\n // '@stylistic/jsx-indent-props': 'error',\n\n /**\n * Enforce maximum of props on a single line in JSX.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/jsx-max-props-per-line}\n */\n // '@stylistic/jsx-max-props-per-line': 'error',\n\n /**\n * Require or prevent a new line after jsx elements and expressions.\n * @fixable\n * @see {@link https://eslint.style/rules/jsx-newline}\n */\n // '@stylistic/jsx-newline': 'error',\n\n /**\n * Require one JSX element per line.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/jsx-one-expression-per-line}\n */\n // '@stylistic/jsx-one-expression-per-line': 'error',\n\n /**\n * Enforce PascalCase for user-defined JSX components.\n * @see {@link https://eslint.style/rules/jsx-pascal-case}\n */\n // '@stylistic/jsx-pascal-case': 'error',\n\n /**\n * Disallow multiple spaces between inline JSX props. Deprecated, use `no-multi-spaces` rule instead.\n * @fixable\n * @see {@link https://eslint.style/rules/jsx-props-no-multi-spaces}\n */\n // '@stylistic/jsx-props-no-multi-spaces': 'error',\n\n /**\n * Enforce the consistent use of either double or single quotes in JSX attributes.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/jsx-quotes}\n */\n // '@stylistic/jsx-quotes': 'error',\n\n /**\n * Disallow extra closing tags for components without children.\n * @fixable\n * @see {@link https://eslint.style/rules/jsx-self-closing-comp}\n */\n // '@stylistic/jsx-self-closing-comp': 'error',\n\n /**\n * Enforce props alphabetical sorting.\n * @fixable\n * @see {@link https://eslint.style/rules/jsx-sort-props}\n */\n // '@stylistic/jsx-sort-props': 'error',\n\n /**\n * Enforce whitespace in and around the JSX opening and closing brackets.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/jsx-tag-spacing}\n */\n // '@stylistic/jsx-tag-spacing': 'error',\n\n /**\n * Disallow missing parentheses around multiline JSX.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/jsx-wrap-multilines}\n */\n // '@stylistic/jsx-wrap-multilines': 'error',\n\n /**\n * Enforce consistent spacing between property names and type annotations in types and interfaces.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/key-spacing}\n */\n // '@stylistic/key-spacing': 'error',\n\n /**\n * Enforce consistent spacing before and after keywords.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/keyword-spacing}\n */\n // '@stylistic/keyword-spacing': 'error',\n\n /**\n * Enforce position of line comments.\n * @see {@link https://eslint.style/rules/line-comment-position}\n */\n // '@stylistic/line-comment-position': 'error',\n\n /**\n * Enforce consistent linebreak style.\n * @fixable\n * @see {@link https://eslint.style/rules/linebreak-style}\n */\n // '@stylistic/linebreak-style': 'error',\n\n /**\n * Require empty lines around comments.\n * @fixable\n * @see {@link https://eslint.style/rules/lines-around-comment}\n */\n // '@stylistic/lines-around-comment': 'error',\n\n /**\n * Require or disallow an empty line between class members.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/lines-between-class-members}\n */\n // '@stylistic/lines-between-class-members': 'error',\n\n /**\n * Enforce consistent spacing and line break styles inside brackets.\n * @fixable\n * @experimental\n * @see {@link https://eslint.style/rules/list-style}\n */\n // '@stylistic/list-style': 'error',\n\n /**\n * Enforce a maximum line length.\n * @see {@link https://eslint.style/rules/max-len}\n */\n // '@stylistic/max-len': 'error',\n\n /**\n * Enforce a maximum number of statements allowed per line.\n * @config recommended\n * @see {@link https://eslint.style/rules/max-statements-per-line}\n */\n // '@stylistic/max-statements-per-line': 'error',\n\n /**\n * Require a specific member delimiter style for interfaces and type literals.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/member-delimiter-style}\n */\n // '@stylistic/member-delimiter-style': 'error',\n\n /**\n * Enforce a particular style for multiline comments.\n * @fixable\n * @see {@link https://eslint.style/rules/multiline-comment-style}\n */\n // '@stylistic/multiline-comment-style': 'error',\n\n /**\n * Enforce newlines between operands of ternary expressions.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/multiline-ternary}\n */\n // '@stylistic/multiline-ternary': 'error',\n\n /**\n * Enforce or disallow parentheses when invoking a constructor with no arguments.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/new-parens}\n */\n // '@stylistic/new-parens': 'error',\n\n /**\n * Require a newline after each call in a method chain.\n * @fixable\n * @see {@link https://eslint.style/rules/newline-per-chained-call}\n */\n // '@stylistic/newline-per-chained-call': 'error',\n\n /**\n * Disallow arrow functions where they could be confused with comparisons.\n * @fixable\n * @see {@link https://eslint.style/rules/no-confusing-arrow}\n */\n // '@stylistic/no-confusing-arrow': 'error',\n\n /**\n * Disallow unnecessary parentheses.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/no-extra-parens}\n */\n // '@stylistic/no-extra-parens': 'error',\n\n /**\n * Disallow unnecessary semicolons.\n * @fixable\n * @see {@link https://eslint.style/rules/no-extra-semi}\n */\n // '@stylistic/no-extra-semi': 'error',\n\n /**\n * Disallow leading or trailing decimal points in numeric literals.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/no-floating-decimal}\n */\n // '@stylistic/no-floating-decimal': 'error',\n\n /**\n * Disallow mixed binary operators.\n * @config recommended\n * @see {@link https://eslint.style/rules/no-mixed-operators}\n */\n // '@stylistic/no-mixed-operators': 'error',\n\n /**\n * Disallow mixed spaces and tabs for indentation.\n * @config recommended\n * @see {@link https://eslint.style/rules/no-mixed-spaces-and-tabs}\n */\n // '@stylistic/no-mixed-spaces-and-tabs': 'error',\n\n /**\n * Disallow multiple spaces.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/no-multi-spaces}\n */\n // '@stylistic/no-multi-spaces': 'error',\n\n /**\n * Disallow multiple empty lines.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/no-multiple-empty-lines}\n */\n // '@stylistic/no-multiple-empty-lines': 'error',\n\n /**\n * Disallow all tabs.\n * @config recommended\n * @see {@link https://eslint.style/rules/no-tabs}\n */\n // '@stylistic/no-tabs': 'error',\n\n /**\n * Disallow trailing whitespace at the end of lines.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/no-trailing-spaces}\n */\n // '@stylistic/no-trailing-spaces': 'error',\n\n /**\n * Disallow whitespace before properties.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/no-whitespace-before-property}\n */\n // '@stylistic/no-whitespace-before-property': 'error',\n\n /**\n * Enforce the location of single-line statements.\n * @fixable\n * @see {@link https://eslint.style/rules/nonblock-statement-body-position}\n */\n // '@stylistic/nonblock-statement-body-position': 'error',\n\n /**\n * Enforce consistent line breaks after opening and before closing braces.\n * @fixable\n * @see {@link https://eslint.style/rules/object-curly-newline}\n */\n // '@stylistic/object-curly-newline': 'error',\n\n /**\n * Enforce consistent spacing inside braces.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/object-curly-spacing}\n */\n // '@stylistic/object-curly-spacing': 'error',\n\n /**\n * Enforce placing object properties on separate lines.\n * @fixable\n * @see {@link https://eslint.style/rules/object-property-newline}\n */\n // '@stylistic/object-property-newline': 'error',\n\n /**\n * Require or disallow newlines around variable declarations.\n * @fixable\n * @see {@link https://eslint.style/rules/one-var-declaration-per-line}\n */\n // '@stylistic/one-var-declaration-per-line': 'error',\n\n /**\n * Enforce consistent linebreak style for operators.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/operator-linebreak}\n */\n // '@stylistic/operator-linebreak': 'error',\n\n /**\n * Require or disallow padding within blocks.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/padded-blocks}\n */\n // '@stylistic/padded-blocks': 'error',\n\n /**\n * Require or disallow padding lines between statements.\n * @fixable\n * @see {@link https://eslint.style/rules/padding-line-between-statements}\n */\n // '@stylistic/padding-line-between-statements': 'error',\n\n /**\n * Require quotes around object literal, type literal, interfaces and enums property names.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/quote-props}\n */\n // '@stylistic/quote-props': 'error',\n\n /**\n * Enforce the consistent use of either backticks, double, or single quotes.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/quotes}\n */\n '@stylistic/quotes': [\n 'error',\n 'single',\n { avoidEscape: true, allowTemplateLiterals: false },\n ],\n\n /**\n * Enforce spacing between rest and spread operators and their expressions.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/rest-spread-spacing}\n */\n // '@stylistic/rest-spread-spacing': 'error',\n\n /**\n * Require or disallow semicolons instead of ASI.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/semi}\n */\n // '@stylistic/semi': 'error',\n\n /**\n * Enforce consistent spacing before and after semicolons.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/semi-spacing}\n */\n // '@stylistic/semi-spacing': 'error',\n\n /**\n * Enforce location of semicolons.\n * @fixable\n * @see {@link https://eslint.style/rules/semi-style}\n */\n // '@stylistic/semi-style': 'error',\n\n /**\n * Enforce consistent spacing before blocks.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/space-before-blocks}\n */\n // '@stylistic/space-before-blocks': 'error',\n\n /**\n * Enforce consistent spacing before function parenthesis.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/space-before-function-paren}\n */\n // '@stylistic/space-before-function-paren': 'error',\n\n /**\n * Enforce consistent spacing inside parentheses.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/space-in-parens}\n */\n // '@stylistic/space-in-parens': 'error',\n\n /**\n * Require spacing around infix operators.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/space-infix-ops}\n */\n // '@stylistic/space-infix-ops': 'error',\n\n /**\n * Enforce consistent spacing before or after unary operators.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/space-unary-ops}\n */\n // '@stylistic/space-unary-ops': 'error',\n\n /**\n * Enforce consistent spacing after the `//` or `/*` in a comment.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/spaced-comment}\n */\n // '@stylistic/spaced-comment': 'error',\n\n /**\n * Enforce spacing around colons of switch statements.\n * @fixable\n * @see {@link https://eslint.style/rules/switch-colon-spacing}\n */\n // '@stylistic/switch-colon-spacing': 'error',\n\n /**\n * Require or disallow spacing around embedded expressions of template strings.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/template-curly-spacing}\n */\n // '@stylistic/template-curly-spacing': 'error',\n\n /**\n * Require or disallow spacing between template tags and their literals.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/template-tag-spacing}\n */\n // '@stylistic/template-tag-spacing': 'error',\n\n /**\n * Require consistent spacing around type annotations.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/type-annotation-spacing}\n */\n // '@stylistic/type-annotation-spacing': 'error',\n\n /**\n * Enforces consistent spacing inside TypeScript type generics.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/type-generic-spacing}\n */\n // '@stylistic/type-generic-spacing': 'error',\n\n /**\n * Expect space before the type declaration in the named tuple.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/type-named-tuple-spacing}\n */\n // '@stylistic/type-named-tuple-spacing': 'error',\n\n /**\n * Require parentheses around immediate `function` invocations.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/wrap-iife}\n */\n // '@stylistic/wrap-iife': 'error',\n\n /**\n * Require parenthesis around regex literals.\n * @fixable\n * @see {@link https://eslint.style/rules/wrap-regex}\n */\n // '@stylistic/wrap-regex': 'error',\n\n /**\n * Require or disallow spacing around the `*` in `yield*` expressions.\n * @config recommended\n * @fixable\n * @see {@link https://eslint.style/rules/yield-star-spacing}\n */\n // '@stylistic/yield-star-spacing': 'error',\n },\n});\n","import { defineConfig } from 'eslint/config';\nimport tseslint from 'typescript-eslint';\n\n/**\n * TypeScript configuration.\n * @see {@link https://typescript-eslint.io/rules/}\n */\nexport const typescriptConfig = defineConfig([\n {\n name: 'typescript-config',\n files: ['**/*.{ts,tsx}'],\n extends: [tseslint.configs.strictTypeChecked, tseslint.configs.stylisticTypeChecked],\n languageOptions: {\n parserOptions: {\n projectService: true,\n },\n },\n rules: {\n /**\n * Enforce that class methods utilize.\n * @extension\n * @see {@link https://typescript-eslint.io/rules/class-methods-use-this}\n */\n // '@typescript-eslint/class-methods-use-this': 'error',\n\n /**\n * Require.\n * @typeChecked\n * @extension\n * @see {@link https://typescript-eslint.io/rules/consistent-return}\n */\n // '@typescript-eslint/consistent-return': 'error',\n\n /**\n * Enforce consistent usage of type exports.\n * @fixable\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/consistent-type-exports}\n */\n '@typescript-eslint/consistent-type-exports': 'error',\n\n /**\n * Enforce consistent usage of type imports.\n * @fixable\n * @see {@link https://typescript-eslint.io/rules/consistent-type-imports}\n */\n '@typescript-eslint/consistent-type-imports': 'error',\n\n /**\n * Enforce default parameters to be last.\n * @extension\n * @see {@link https://typescript-eslint.io/rules/default-param-last}\n */\n 'default-param-last': 'off',\n '@typescript-eslint/default-param-last': 'error',\n\n /**\n * Require explicit return types on functions and class methods.\n * @see {@link https://typescript-eslint.io/rules/explicit-function-return-type}\n */\n // '@typescript-eslint/explicit-function-return-type': 'error',\n\n /**\n * Require explicit accessibility modifiers on class properties and methods.\n * @fixable\n * @see {@link https://typescript-eslint.io/rules/explicit-member-accessibility}\n */\n '@typescript-eslint/explicit-member-accessibility': [\n 'error',\n {\n accessibility: 'explicit',\n overrides: {\n accessors: 'explicit',\n constructors: 'no-public',\n methods: 'explicit',\n properties: 'no-public',\n parameterProperties: 'no-public',\n },\n },\n ],\n\n /**\n * Require explicit return and argument types on exported functions' and classes' public class methods.\n * @see {@link https://typescript-eslint.io/rules/explicit-module-boundary-types}\n */\n // '@typescript-eslint/explicit-module-boundary-types': 'error',\n\n /**\n * Require or disallow initialization in variable declarations.\n * @extension\n * @see {@link https://typescript-eslint.io/rules/init-declarations}\n */\n // '@typescript-eslint/init-declarations': 'error',\n\n /**\n * Enforce a maximum number of parameters in function definitions.\n * @extension\n * @see {@link https://typescript-eslint.io/rules/max-params}\n */\n // '@typescript-eslint/max-params': 'error',\n\n /**\n * Require a consistent member declaration order.\n * @see {@link https://typescript-eslint.io/rules/member-ordering}\n */\n '@typescript-eslint/member-ordering': [\n 'error',\n {\n default: [\n // Index signature\n 'signature',\n 'call-signature',\n\n // Fields\n 'public-static-field',\n 'protected-static-field',\n 'private-static-field',\n '#private-static-field',\n\n 'public-instance-field',\n 'protected-instance-field',\n 'private-instance-field',\n '#private-instance-field',\n\n 'public-abstract-field',\n 'protected-abstract-field',\n\n 'public-field',\n 'protected-field',\n 'private-field',\n '#private-field',\n\n 'static-field',\n 'instance-field',\n 'abstract-field',\n\n 'field',\n\n // Static initialization\n 'static-initialization',\n\n // Constructors\n 'public-constructor',\n 'protected-constructor',\n 'private-constructor',\n\n // Accessors\n 'public-static-accessor',\n 'protected-static-accessor',\n 'private-static-accessor',\n '#private-static-accessor',\n\n 'public-instance-accessor',\n 'protected-instance-accessor',\n 'private-instance-accessor',\n '#private-instance-accessor',\n\n 'public-abstract-accessor',\n 'protected-abstract-accessor',\n\n 'public-accessor',\n 'protected-accessor',\n 'private-accessor',\n '#private-accessor',\n\n 'static-accessor',\n 'instance-accessor',\n 'abstract-accessor',\n\n 'accessor',\n\n // Getters / Setters\n ['public-static-get', 'public-static-set'],\n ['protected-static-get', 'protected-static-set'],\n ['private-static-get', 'private-static-set'],\n ['#private-static-get', '#private-static-set'],\n\n ['public-instance-get', 'public-instance-set'],\n ['protected-instance-get', 'protected-instance-set'],\n ['private-instance-get', 'private-instance-set'],\n ['#private-instance-get', '#private-instance-set'],\n\n ['public-abstract-get', 'public-abstract-set'],\n ['protected-abstract-get', 'protected-abstract-set'],\n\n ['public-get', 'public-set'],\n ['protected-get', 'protected-set'],\n ['private-get', 'private-set'],\n ['#private-get', '#private-set'],\n\n ['static-get', 'static-set'],\n ['instance-get', 'instance-set'],\n ['abstract-get', 'abstract-set'],\n\n ['get', 'set'],\n\n // Methods\n 'public-static-method',\n 'protected-static-method',\n 'private-static-method',\n '#private-static-method',\n\n 'public-instance-method',\n 'protected-instance-method',\n 'private-instance-method',\n '#private-instance-method',\n\n 'public-abstract-method',\n 'protected-abstract-method',\n\n 'public-method',\n 'protected-method',\n 'private-method',\n '#private-method',\n\n 'static-method',\n 'instance-method',\n 'abstract-method',\n\n 'method',\n ],\n },\n ],\n\n /**\n * Enforce using a particular method signature syntax.\n * @fixable\n * @see {@link https://typescript-eslint.io/rules/method-signature-style}\n */\n '@typescript-eslint/method-signature-style': 'error',\n\n /**\n * Enforce naming conventions for everything across a codebase.\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/naming-convention}\n */\n '@typescript-eslint/naming-convention': [\n 'error',\n {\n selector: 'typeParameter',\n format: ['PascalCase'],\n prefix: ['T', 'K', 'U', 'V'],\n },\n {\n selector: ['method', 'parameterProperty', 'property'],\n modifiers: ['private'],\n format: ['camelCase'],\n leadingUnderscore: 'require',\n },\n {\n selector: ['interface', 'typeAlias'],\n format: ['PascalCase'],\n },\n ],\n\n /**\n * Disallow duplicate class members.\n * @extension\n * @see {@link https://typescript-eslint.io/rules/no-dupe-class-members}\n */\n // '@typescript-eslint/no-dupe-class-members': 'error',\n\n /**\n * Disallow the declaration of empty interfaces.\n * @fixable\n * @deprecated\n * @see {@link https://typescript-eslint.io/rules/no-empty-interface}\n */\n // '@typescript-eslint/no-empty-interface': 'error',\n\n /**\n * Enforce the use of top-level import type qualifier when an import only has specifiers with inline type qualifiers.\n * @fixable\n * @see {@link https://typescript-eslint.io/rules/no-import-type-side-effects}\n */\n '@typescript-eslint/no-import-type-side-effects': 'error',\n\n /**\n * Disallow.\n * @extension\n * @see {@link https://typescript-eslint.io/rules/no-invalid-this}\n */\n 'no-invalid-this': 'off',\n '@typescript-eslint/no-invalid-this': 'error',\n\n /**\n * Disallow function declarations that contain unsafe references inside loop statements.\n * @extension\n * @see {@link https://typescript-eslint.io/rules/no-loop-func}\n */\n 'no-loop-func': 'off',\n '@typescript-eslint/no-loop-func': 'error',\n\n /**\n * Disallow literal numbers that lose precision.\n * @extension\n * @deprecated\n * @see {@link https://typescript-eslint.io/rules/no-loss-of-precision}\n */\n // '@typescript-eslint/no-loss-of-precision': 'error',\n\n /**\n * Disallow magic numbers.\n * @extension\n * @see {@link https://typescript-eslint.io/rules/no-magic-numbers}\n */\n // '@typescript-eslint/no-magic-numbers': 'error',\n\n /**\n * Disallow variable redeclaration.\n * @extension\n * @see {@link https://typescript-eslint.io/rules/no-redeclare}\n */\n // '@typescript-eslint/no-redeclare': 'error',\n\n /**\n * Disallow specified modules when loaded by.\n * @extension\n * @see {@link https://typescript-eslint.io/rules/no-restricted-imports}\n */\n // '@typescript-eslint/no-restricted-imports': 'error',\n\n /**\n * Disallow certain types.\n * @fixable\n * @see {@link https://typescript-eslint.io/rules/no-restricted-types}\n */\n // '@typescript-eslint/no-restricted-types': 'error',\n\n /**\n * Disallow variable declarations from shadowing variables declared in the outer scope.\n * @extension\n * @see {@link https://typescript-eslint.io/rules/no-shadow}\n */\n 'no-shadow': 'off',\n '@typescript-eslint/no-shadow': 'error',\n\n /**\n * Disallow type aliases.\n * @deprecated\n * @see {@link https://typescript-eslint.io/rules/no-type-alias}\n */\n // '@typescript-eslint/no-type-alias': 'error',\n\n /**\n * Disallow unnecessary assignment of constructor property parameter.\n * @see {@link https://typescript-eslint.io/rules/no-unnecessary-parameter-property-assignment}\n */\n '@typescript-eslint/no-unnecessary-parameter-property-assignment': 'error',\n\n /**\n * Disallow unnecessary namespace qualifiers.\n * @fixable\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/no-unnecessary-qualifier}\n */\n '@typescript-eslint/no-unnecessary-qualifier': 'error',\n\n /**\n * Disallow type assertions that narrow a type.\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/no-unsafe-type-assertion}\n */\n // '@typescript-eslint/no-unsafe-type-assertion': 'error',\n\n /**\n * Disallow unused private class members.\n * @extension\n * @see {@link https://typescript-eslint.io/rules/no-unused-private-class-members}\n */\n // '@typescript-eslint/no-unused-private-class-members': 'error',\n\n /**\n * Disallow the use of variables before they are defined.\n * @extension\n * @see {@link https://typescript-eslint.io/rules/no-use-before-define}\n */\n 'no-use-before-define': 'off',\n '@typescript-eslint/no-use-before-define': 'error',\n\n /**\n * Disallow empty exports that don't change anything in a module file.\n * @fixable\n * @see {@link https://typescript-eslint.io/rules/no-useless-empty-export}\n */\n '@typescript-eslint/no-useless-empty-export': 'error',\n\n /**\n * Disallow.\n * @deprecated\n * @see {@link https://typescript-eslint.io/rules/no-var-requires}\n */\n // '@typescript-eslint/no-var-requires': 'error',\n\n /**\n * Require or disallow parameter properties in class constructors.\n * @see {@link https://typescript-eslint.io/rules/parameter-properties}\n */\n '@typescript-eslint/parameter-properties': 'error',\n\n /**\n * Require destructuring from arrays and/or objects.\n * @fixable\n * @typeChecked\n * @extension\n * @see {@link https://typescript-eslint.io/rules/prefer-destructuring}\n */\n 'prefer-destructuring': 'off',\n '@typescript-eslint/prefer-destructuring': 'error',\n\n /**\n * Require each enum member value to be explicitly initialized.\n * @see {@link https://typescript-eslint.io/rules/prefer-enum-initializers}\n */\n '@typescript-eslint/prefer-enum-initializers': 'error',\n\n /**\n * Require private members to be marked as.\n * @fixable\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/prefer-readonly}\n */\n '@typescript-eslint/prefer-readonly': 'error',\n\n /**\n * Require function parameters to be typed as.\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/prefer-readonly-parameter-types}\n */\n // '@typescript-eslint/prefer-readonly-parameter-types': 'error',\n\n /**\n * Enforce using.\n * @fixable\n * @deprecated\n * @see {@link https://typescript-eslint.io/rules/prefer-ts-expect-error}\n */\n // '@typescript-eslint/prefer-ts-expect-error': 'error',\n\n /**\n * Require any function or method that returns a Promise to be marked async.\n * @fixable\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/promise-function-async}\n */\n '@typescript-eslint/promise-function-async': 'error',\n\n /**\n * Require.\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/require-array-sort-compare}\n */\n '@typescript-eslint/require-array-sort-compare': 'error',\n\n /**\n * Enforce constituents of a type union/intersection to be sorted alphabetically.\n * @fixable\n * @deprecated\n * @see {@link https://typescript-eslint.io/rules/sort-type-constituents}\n */\n // '@typescript-eslint/sort-type-constituents': 'error',\n\n /**\n * Disallow certain types in boolean expressions.\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/strict-boolean-expressions}\n */\n // '@typescript-eslint/strict-boolean-expressions': 'error',\n\n /**\n * Require switch-case statements to be exhaustive.\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/switch-exhaustiveness-check}\n */\n // '@typescript-eslint/switch-exhaustiveness-check': 'error',\n\n /**\n * Require type annotations in certain places.\n * @deprecated\n * @see {@link https://typescript-eslint.io/rules/typedef}\n */\n // '@typescript-eslint/typedef': 'error',\n\n /**\n * Require that function overload signatures be consecutive.\n * @config stylistic\n * @see {@link https://typescript-eslint.io/rules/adjacent-overload-signatures}\n */\n // '@typescript-eslint/adjacent-overload-signatures': 'off',\n\n /**\n * Require consistently using either.\n * @config stylistic\n * @fixable\n * @see {@link https://typescript-eslint.io/rules/array-type}\n */\n // '@typescript-eslint/array-type': 'off',\n\n /**\n * Disallow awaiting a value that is not a Thenable.\n * @config recommended\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/await-thenable}\n */\n // '@typescript-eslint/await-thenable': 'off',\n\n /**\n * Disallow.\n * @config recommended\n * @see {@link https://typescript-eslint.io/rules/ban-ts-comment}\n */\n // '@typescript-eslint/ban-ts-comment': 'off',\n\n /**\n * Disallow.\n * @config stylistic\n * @fixable\n * @see {@link https://typescript-eslint.io/rules/ban-tslint-comment}\n */\n // '@typescript-eslint/ban-tslint-comment': 'off',\n\n /**\n * Enforce that literals on classes are exposed in a consistent style.\n * @config stylistic\n * @see {@link https://typescript-eslint.io/rules/class-literal-property-style}\n */\n // '@typescript-eslint/class-literal-property-style': 'off',\n\n /**\n * Enforce specifying generic type arguments on type annotation or constructor name of a constructor call.\n * @config stylistic\n * @fixable\n * @see {@link https://typescript-eslint.io/rules/consistent-generic-constructors}\n */\n // '@typescript-eslint/consistent-generic-constructors': 'off',\n\n /**\n * Require or disallow the.\n * @config stylistic\n * @fixable\n * @see {@link https://typescript-eslint.io/rules/consistent-indexed-object-style}\n */\n // '@typescript-eslint/consistent-indexed-object-style': 'off',\n\n /**\n * Enforce consistent usage of type assertions.\n * @config stylistic\n * @fixable\n * @see {@link https://typescript-eslint.io/rules/consistent-type-assertions}\n */\n // '@typescript-eslint/consistent-type-assertions': 'off',\n\n /**\n * Enforce type definitions to consistently use either.\n * @config stylistic\n * @fixable\n * @see {@link https://typescript-eslint.io/rules/consistent-type-definitions}\n */\n '@typescript-eslint/consistent-type-definitions': ['error', 'type'],\n\n /**\n * Enforce dot notation whenever possible.\n * @config stylistic\n * @fixable\n * @typeChecked\n * @extension\n * @see {@link https://typescript-eslint.io/rules/dot-notation}\n */\n // '@typescript-eslint/dot-notation': 'off',\n\n /**\n * Disallow generic.\n * @config recommended\n * @fixable\n * @extension\n * @see {@link https://typescript-eslint.io/rules/no-array-constructor}\n */\n // '@typescript-eslint/no-array-constructor': 'off',\n\n /**\n * Disallow using the.\n * @config recommended\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/no-array-delete}\n */\n // '@typescript-eslint/no-array-delete': 'off',\n\n /**\n * Require.\n * @config recommended\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/no-base-to-string}\n */\n // '@typescript-eslint/no-base-to-string': 'off',\n\n /**\n * Disallow non-null assertion in locations that may be confusing.\n * @config stylistic\n * @see {@link https://typescript-eslint.io/rules/no-confusing-non-null-assertion}\n */\n // '@typescript-eslint/no-confusing-non-null-assertion': 'off',\n\n /**\n * Require expressions of type void to appear in statement position.\n * @config strict\n * @fixable\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/no-confusing-void-expression}\n */\n '@typescript-eslint/no-confusing-void-expression': [\n 'error',\n { ignoreVoidOperator: true, ignoreVoidReturningFunctions: true },\n ],\n\n /**\n * Disallow using code marked as.\n * @config strict\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/no-deprecated}\n */\n // '@typescript-eslint/no-deprecated': 'off',\n\n /**\n * Disallow duplicate enum member values.\n * @config recommended\n * @see {@link https://typescript-eslint.io/rules/no-duplicate-enum-values}\n */\n // '@typescript-eslint/no-duplicate-enum-values': 'off',\n\n /**\n * Disallow duplicate constituents of union or intersection types.\n * @config recommended\n * @fixable\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/no-duplicate-type-constituents}\n */\n // '@typescript-eslint/no-duplicate-type-constituents': 'off',\n\n /**\n * Disallow using the.\n * @config strict\n * @fixable\n * @see {@link https://typescript-eslint.io/rules/no-dynamic-delete}\n */\n // '@typescript-eslint/no-dynamic-delete': 'off',\n\n /**\n * Disallow empty functions.\n * @config stylistic\n * @extension\n * @see {@link https://typescript-eslint.io/rules/no-empty-function}\n */\n // '@typescript-eslint/no-empty-function': 'off',\n\n /**\n * Disallow accidentally using the \"empty object\" type.\n * @config recommended\n * @see {@link https://typescript-eslint.io/rules/no-empty-object-type}\n */\n // '@typescript-eslint/no-empty-object-type': 'off',\n\n /**\n * Disallow the.\n * @config recommended\n * @fixable\n * @see {@link https://typescript-eslint.io/rules/no-explicit-any}\n */\n '@typescript-eslint/no-explicit-any': ['error', { ignoreRestArgs: true }],\n\n /**\n * Disallow extra non-null assertions.\n * @config recommended\n * @fixable\n * @see {@link https://typescript-eslint.io/rules/no-extra-non-null-assertion}\n */\n // '@typescript-eslint/no-extra-non-null-assertion': 'off',\n\n /**\n * Disallow classes used as namespaces.\n * @config strict\n * @see {@link https://typescript-eslint.io/rules/no-extraneous-class}\n */\n '@typescript-eslint/no-extraneous-class': 'off',\n\n /**\n * Require Promise-like statements to be handled appropriately.\n * @config recommended\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/no-floating-promises}\n */\n // '@typescript-eslint/no-floating-promises': 'off',\n\n /**\n * Disallow iterating over an array with a for-in loop.\n * @config recommended\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/no-for-in-array}\n */\n // '@typescript-eslint/no-for-in-array': 'off',\n\n /**\n * Disallow the use of.\n * @config recommended\n * @typeChecked\n * @extension\n * @see {@link https://typescript-eslint.io/rules/no-implied-eval}\n */\n // '@typescript-eslint/no-implied-eval': 'off',\n\n /**\n * Disallow explicit type declarations for variables or parameters initialized to a number, string, or boolean.\n * @config stylistic\n * @fixable\n * @see {@link https://typescript-eslint.io/rules/no-inferrable-types}\n */\n // '@typescript-eslint/no-inferrable-types': 'off',\n\n /**\n * Disallow.\n * @config strict\n * @see {@link https://typescript-eslint.io/rules/no-invalid-void-type}\n */\n // '@typescript-eslint/no-invalid-void-type': 'off',\n\n /**\n * Disallow the.\n * @config strict\n * @fixable\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/no-meaningless-void-operator}\n */\n // '@typescript-eslint/no-meaningless-void-operator': 'off',\n\n /**\n * Enforce valid definition of.\n * @config recommended\n * @see {@link https://typescript-eslint.io/rules/no-misused-new}\n */\n // '@typescript-eslint/no-misused-new': 'off',\n\n /**\n * Disallow Promises in places not designed to handle them.\n * @config recommended\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/no-misused-promises}\n */\n // '@typescript-eslint/no-misused-promises': 'off',\n\n /**\n * Disallow using the spread operator when it might cause unexpected behavior.\n * @config strict\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/no-misused-spread}\n */\n // '@typescript-eslint/no-misused-spread': 'off',\n\n /**\n * Disallow enums from having both number and string members.\n * @config strict\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/no-mixed-enums}\n */\n // '@typescript-eslint/no-mixed-enums': 'off',\n\n /**\n * Disallow TypeScript namespaces.\n * @config recommended\n * @see {@link https://typescript-eslint.io/rules/no-namespace}\n */\n // '@typescript-eslint/no-namespace': 'off',\n\n /**\n * Disallow non-null assertions in the left operand of a nullish coalescing operator.\n * @config strict\n * @see {@link https://typescript-eslint.io/rules/no-non-null-asserted-nullish-coalescing}\n */\n // '@typescript-eslint/no-non-null-asserted-nullish-coalescing': 'off',\n\n /**\n * Disallow non-null assertions after an optional chain expression.\n * @config recommended\n * @see {@link https://typescript-eslint.io/rules/no-non-null-asserted-optional-chain}\n */\n // '@typescript-eslint/no-non-null-asserted-optional-chain': 'off',\n\n /**\n * Disallow non-null assertions using the.\n * @config strict\n * @see {@link https://typescript-eslint.io/rules/no-non-null-assertion}\n */\n '@typescript-eslint/no-non-null-assertion': 'off',\n\n /**\n * Disallow members of unions and intersections that do nothing or override type information.\n * @config recommended\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/no-redundant-type-constituents}\n */\n // '@typescript-eslint/no-redundant-type-constituents': 'off',\n\n /**\n * Disallow invocation of.\n * @config recommended\n * @see {@link https://typescript-eslint.io/rules/no-require-imports}\n */\n // '@typescript-eslint/no-require-imports': 'off',\n\n /**\n * Disallow aliasing.\n * @config recommended\n * @see {@link https://typescript-eslint.io/rules/no-this-alias}\n */\n // '@typescript-eslint/no-this-alias': 'off',\n\n /**\n * Disallow unnecessary equality comparisons against boolean literals.\n * @config strict\n * @fixable\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/no-unnecessary-boolean-literal-compare}\n */\n // '@typescript-eslint/no-unnecessary-boolean-literal-compare': 'off',\n\n /**\n * Disallow conditionals where the type is always truthy or always falsy.\n * @config strict\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/no-unnecessary-condition}\n */\n // '@typescript-eslint/no-unnecessary-condition': 'off',\n\n /**\n * Disallow unnecessary template expressions.\n * @config strict\n * @fixable\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/no-unnecessary-template-expression}\n */\n // '@typescript-eslint/no-unnecessary-template-expression': 'off',\n\n /**\n * Disallow type arguments that are equal to the default.\n * @config strict\n * @fixable\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/no-unnecessary-type-arguments}\n */\n // '@typescript-eslint/no-unnecessary-type-arguments': 'off',\n\n /**\n * Disallow type assertions that do not change the type of an expression.\n * @config recommended\n * @fixable\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/no-unnecessary-type-assertion}\n */\n // '@typescript-eslint/no-unnecessary-type-assertion': 'off',\n\n /**\n * Disallow unnecessary constraints on generic types.\n * @config recommended\n * @see {@link https://typescript-eslint.io/rules/no-unnecessary-type-constraint}\n */\n // '@typescript-eslint/no-unnecessary-type-constraint': 'off',\n\n /**\n * Disallow conversion idioms when they do not change the type or value of the expression.\n * @config strict\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/no-unnecessary-type-conversion}\n */\n // '@typescript-eslint/no-unnecessary-type-conversion': 'off',\n\n /**\n * Disallow type parameters that aren't used multiple times.\n * @config strict\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/no-unnecessary-type-parameters}\n */\n // '@typescript-eslint/no-unnecessary-type-parameters': 'off',\n\n /**\n * Disallow calling a function with a value with type.\n * @config recommended\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/no-unsafe-argument}\n */\n // '@typescript-eslint/no-unsafe-argument': 'off',\n\n /**\n * Disallow assigning a value with type.\n * @config recommended\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/no-unsafe-assignment}\n */\n // '@typescript-eslint/no-unsafe-assignment': 'off',\n\n /**\n * Disallow calling a value with type.\n * @config recommended\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/no-unsafe-call}\n */\n // '@typescript-eslint/no-unsafe-call': 'off',\n\n /**\n * Disallow unsafe declaration merging.\n * @config recommended\n * @see {@link https://typescript-eslint.io/rules/no-unsafe-declaration-merging}\n */\n // '@typescript-eslint/no-unsafe-declaration-merging': 'off',\n\n /**\n * Disallow comparing an enum value with a non-enum value.\n * @config recommended\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/no-unsafe-enum-comparison}\n */\n // '@typescript-eslint/no-unsafe-enum-comparison': 'off',\n\n /**\n * Disallow using the unsafe built-in Function type.\n * @config recommended\n * @see {@link https://typescript-eslint.io/rules/no-unsafe-function-type}\n */\n // '@typescript-eslint/no-unsafe-function-type': 'off',\n\n /**\n * Disallow member access on a value with type.\n * @config recommended\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/no-unsafe-member-access}\n */\n // '@typescript-eslint/no-unsafe-member-access': 'off',\n\n /**\n * Disallow returning a value with type.\n * @config recommended\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/no-unsafe-return}\n */\n // '@typescript-eslint/no-unsafe-return': 'off',\n\n /**\n * Require unary negation to take a number.\n * @config recommended\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/no-unsafe-unary-minus}\n */\n // '@typescript-eslint/no-unsafe-unary-minus': 'off',\n\n /**\n * Disallow unused expressions.\n * @config recommended\n * @extension\n * @see {@link https://typescript-eslint.io/rules/no-unused-expressions}\n */\n // '@typescript-eslint/no-unused-expressions': 'off',\n\n /**\n * Disallow unused variables.\n * @config recommended\n * @extension\n * @see {@link https://typescript-eslint.io/rules/no-unused-vars}\n */\n '@typescript-eslint/no-unused-vars': [\n 'error',\n {\n args: 'all',\n argsIgnorePattern: '^_',\n caughtErrors: 'all',\n caughtErrorsIgnorePattern: '^_',\n destructuredArrayIgnorePattern: '^_',\n varsIgnorePattern: '^_',\n ignoreRestSiblings: true,\n },\n ],\n\n /**\n * Disallow unnecessary constructors.\n * @config strict\n * @extension\n * @see {@link https://typescript-eslint.io/rules/no-useless-constructor}\n */\n // '@typescript-eslint/no-useless-constructor': 'off',\n\n /**\n * Disallow using confusing built-in primitive class wrappers.\n * @config recommended\n * @fixable\n * @see {@link https://typescript-eslint.io/rules/no-wrapper-object-types}\n */\n // '@typescript-eslint/no-wrapper-object-types': 'off',\n\n /**\n * Enforce non-null assertions over explicit type assertions.\n * @config stylistic\n * @fixable\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/non-nullable-type-assertion-style}\n */\n // '@typescript-eslint/non-nullable-type-assertion-style': 'off',\n\n /**\n * Disallow throwing non-.\n * @config recommended\n * @typeChecked\n * @extension\n * @see {@link https://typescript-eslint.io/rules/only-throw-error}\n */\n // '@typescript-eslint/only-throw-error': 'off',\n\n /**\n * Enforce the use of.\n * @config recommended\n * @fixable\n * @see {@link https://typescript-eslint.io/rules/prefer-as-const}\n */\n // '@typescript-eslint/prefer-as-const': 'off',\n\n /**\n * Enforce the use of Array.prototype.find() over Array.prototype.filter() followed by [0] when looking for a single result.\n * @config stylistic\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/prefer-find}\n */\n // '@typescript-eslint/prefer-find': 'off',\n\n /**\n * Enforce the use of.\n * @config stylistic\n * @see {@link https://typescript-eslint.io/rules/prefer-for-of}\n */\n // '@typescript-eslint/prefer-for-of': 'off',\n\n /**\n * Enforce using function types instead of interfaces with call signatures.\n * @config stylistic\n * @fixable\n * @see {@link https://typescript-eslint.io/rules/prefer-function-type}\n */\n // '@typescript-eslint/prefer-function-type': 'off',\n\n /**\n * Enforce.\n * @config stylistic\n * @fixable\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/prefer-includes}\n */\n // '@typescript-eslint/prefer-includes': 'off',\n\n /**\n * Require all enum members to be literal values.\n * @config strict\n * @see {@link https://typescript-eslint.io/rules/prefer-literal-enum-member}\n */\n // '@typescript-eslint/prefer-literal-enum-member': 'off',\n\n /**\n * Require using.\n * @config recommended\n * @fixable\n * @see {@link https://typescript-eslint.io/rules/prefer-namespace-keyword}\n */\n // '@typescript-eslint/prefer-namespace-keyword': 'off',\n\n /**\n * Enforce using the nullish coalescing operator instead of logical assignments or chaining.\n * @config stylistic\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/prefer-nullish-coalescing}\n */\n // '@typescript-eslint/prefer-nullish-coalescing': 'off',\n\n /**\n * Enforce using concise optional chain expressions instead of chained logical ands, negated logical ors, or empty objects.\n * @config stylistic\n * @fixable\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/prefer-optional-chain}\n */\n // '@typescript-eslint/prefer-optional-chain': 'off',\n\n /**\n * Require using Error objects as Promise rejection reasons.\n * @config recommended\n * @typeChecked\n * @extension\n * @see {@link https://typescript-eslint.io/rules/prefer-promise-reject-errors}\n */\n // '@typescript-eslint/prefer-promise-reject-errors': 'off',\n\n /**\n * Enforce using type parameter when calling.\n * @config strict\n * @fixable\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/prefer-reduce-type-parameter}\n */\n // '@typescript-eslint/prefer-reduce-type-parameter': 'off',\n\n /**\n * Enforce.\n * @config stylistic\n * @fixable\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/prefer-regexp-exec}\n */\n // '@typescript-eslint/prefer-regexp-exec': 'off',\n\n /**\n * Enforce that.\n * @config strict\n * @fixable\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/prefer-return-this-type}\n */\n // '@typescript-eslint/prefer-return-this-type': 'off',\n\n /**\n * Enforce using.\n * @config stylistic\n * @fixable\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/prefer-string-starts-ends-with}\n */\n // '@typescript-eslint/prefer-string-starts-ends-with': 'off',\n\n /**\n * Enforce that.\n * @config strict\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/related-getter-setter-pairs}\n */\n // '@typescript-eslint/related-getter-setter-pairs': 'off',\n\n /**\n * Disallow async functions which do not return promises and have no.\n * @config recommended\n * @typeChecked\n * @extension\n * @see {@link https://typescript-eslint.io/rules/require-await}\n */\n // '@typescript-eslint/require-await': 'off',\n\n /**\n * Require both operands of addition to be the same type and be.\n * @config recommended\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/restrict-plus-operands}\n */\n // '@typescript-eslint/restrict-plus-operands': 'off',\n\n /**\n * Enforce template literal expressions to be of.\n * @config recommended\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/restrict-template-expressions}\n */\n '@typescript-eslint/restrict-template-expressions': 'off',\n\n /**\n * Enforce consistent awaiting of returned promises.\n * @config strict\n * @fixable\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/return-await}\n */\n // '@typescript-eslint/return-await': 'off',\n\n /**\n * Disallow certain triple slash directives in favor of ES6-style import declarations.\n * @config recommended\n * @see {@link https://typescript-eslint.io/rules/triple-slash-reference}\n */\n // '@typescript-eslint/triple-slash-reference': 'off',\n\n /**\n * Enforce unbound methods are called with their expected scope.\n * @config recommended\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/unbound-method}\n */\n '@typescript-eslint/unbound-method': ['error', { ignoreStatic: true }],\n\n /**\n * Disallow two overloads that could be unified into one with a union or an optional/rest parameter.\n * @config strict\n * @see {@link https://typescript-eslint.io/rules/unified-signatures}\n */\n // '@typescript-eslint/unified-signatures': 'off',\n\n /**\n * Enforce typing arguments in Promise rejection callbacks as.\n * @config strict\n * @typeChecked\n * @see {@link https://typescript-eslint.io/rules/use-unknown-in-catch-callback-variable}\n */\n // '@typescript-eslint/use-unknown-in-catch-callback-variable': 'off',\n },\n },\n {\n name: 'typescript-config-dts',\n files: ['**/*.d.ts'],\n rules: {\n '@typescript-eslint/consistent-type-definitions': 'off',\n '@typescript-eslint/naming-convention': 'off',\n },\n },\n]);\n","import unicorn from 'eslint-plugin-unicorn';\nimport { defineConfig } from 'eslint/config';\n\n/**\n * Unicorn configuration.\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn}\n */\nexport const unicornConfig = defineConfig({\n name: 'unicorn-config',\n plugins: { unicorn },\n rules: {\n /**\n * Improve regexes by making them shorter, consistent, and safer.\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/better-regex.md}\n */\n // 'unicorn/better-regex': 'error',\n\n /**\n * Enforce a specific parameter name in catch clauses.\n * @config recommended\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/catch-error-name.md}\n */\n // 'unicorn/catch-error-name': 'error',\n\n /**\n * Enforce consistent assertion style with node:assert.\n * @config recommended\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/consistent-assert.md}\n */\n // 'unicorn/consistent-assert': 'error',\n\n /**\n * Prefer passing Date directly to the constructor when cloning.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/consistent-date-clone.md}\n */\n // 'unicorn/consistent-date-clone': 'error',\n\n /**\n * Use destructured variables over properties.\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/consistent-destructuring.md}\n */\n // 'unicorn/consistent-destructuring': 'error',\n\n /**\n * Prefer consistent types when spreading a ternary in an array literal.\n * @config recommended\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/consistent-empty-array-spread.md}\n */\n // 'unicorn/consistent-empty-array-spread': 'error',\n\n /**\n * Enforce consistent style for element existence checks with indexOf(), lastIndexOf(), findIndex(), and findLastIndex().\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/consistent-existence-index-check.md}\n */\n // 'unicorn/consistent-existence-index-check': 'error',\n\n /**\n * Move function definitions to the highest possible scope.\n * @config recommended\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/consistent-function-scoping.md}\n */\n // 'unicorn/consistent-function-scoping': 'error',\n\n /**\n * Enforce correct Error subclassing.\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/custom-error-definition.md}\n */\n // 'unicorn/custom-error-definition': 'error',\n\n /**\n * Enforce no spaces between braces.\n * @config recommended\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/empty-brace-spaces.md}\n */\n // 'unicorn/empty-brace-spaces': 'error',\n\n /**\n * Enforce passing a message value when creating a built-in error.\n * @config recommended\n * @config unopinionated\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/error-message.md}\n */\n // 'unicorn/error-message': 'error',\n\n /**\n * Require escape sequences to use uppercase or lowercase values.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/escape-case.md}\n */\n // 'unicorn/escape-case': 'error',\n\n /**\n * Add expiration conditions to TODO comments.\n * @config recommended\n * @config unopinionated\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/expiring-todo-comments.md}\n */\n // 'unicorn/expiring-todo-comments': 'error',\n\n /**\n * Enforce explicitly comparing the length or size property of a value.\n * @config recommended\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/explicit-length-check.md}\n */\n // 'unicorn/explicit-length-check': 'error',\n\n /**\n * Enforce a case style for filenames.\n * @config recommended\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/filename-case.md}\n */\n 'unicorn/filename-case': ['error', { case: 'kebabCase' }],\n\n /**\n * Enforce specific import styles per module.\n * @config recommended\n * @config unopinionated\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/import-style.md}\n */\n // 'unicorn/import-style': 'error',\n\n /**\n * Prevent usage of variables from outside the scope of isolated functions.\n * @config recommended\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/isolated-functions.md}\n */\n // 'unicorn/isolated-functions': 'error',\n\n /**\n * Enforce the use of new for all builtins, except String, Number, Boolean, Symbol and BigInt.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/new-for-builtins.md}\n */\n // 'unicorn/new-for-builtins': 'error',\n\n /**\n * Enforce specifying rules to disable in eslint-disable comments.\n * @config recommended\n * @config unopinionated\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-abusive-eslint-disable.md}\n */\n // 'unicorn/no-abusive-eslint-disable': 'error',\n\n /**\n * Disallow recursive access to this within getters and setters.\n * @config recommended\n * @config unopinionated\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-accessor-recursion.md}\n */\n // 'unicorn/no-accessor-recursion': 'error',\n\n /**\n * Disallow anonymous functions and classes as the default export.\n * @config recommended\n * @config unopinionated\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-anonymous-default-export.md}\n */\n // 'unicorn/no-anonymous-default-export': 'error',\n\n /**\n * Prevent passing a function reference directly to iterator methods.\n * @config recommended\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-array-callback-reference.md}\n */\n // 'unicorn/no-array-callback-reference': 'error',\n\n /**\n * Prefer for…of over the forEach method.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-array-for-each.md}\n */\n // 'unicorn/no-array-for-each': 'error',\n\n /**\n * Disallow using the this argument in array methods.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-array-method-this-argument.md}\n */\n // 'unicorn/no-array-method-this-argument': 'error',\n\n /**\n * Disallow Array#reduce() and Array#reduceRight().\n * @config recommended\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-array-reduce.md}\n */\n // 'unicorn/no-array-reduce': 'error',\n\n /**\n * Prefer Array#toReversed() over Array#reverse().\n * @config recommended\n * @config unopinionated\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-array-reverse.md}\n */\n // 'unicorn/no-array-reverse': 'error',\n\n /**\n * Prefer Array#toSorted() over Array#sort().\n * @config recommended\n * @config unopinionated\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-array-sort.md}\n */\n // 'unicorn/no-array-sort': 'error',\n\n /**\n * Disallow member access from await expression.\n * @config recommended\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-await-expression-member.md}\n */\n // 'unicorn/no-await-expression-member': 'error',\n\n /**\n * Disallow using await in Promise method parameters.\n * @config recommended\n * @config unopinionated\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-await-in-promise-methods.md}\n */\n // 'unicorn/no-await-in-promise-methods': 'error',\n\n /**\n * Do not use leading/trailing space between console.log parameters.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-console-spaces.md}\n */\n // 'unicorn/no-console-spaces': 'error',\n\n /**\n * Do not use document.cookie directly.\n * @config recommended\n * @config unopinionated\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-document-cookie.md}\n */\n // 'unicorn/no-document-cookie': 'error',\n\n /**\n * Disallow empty files.\n * @config recommended\n * @config unopinionated\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-empty-file.md}\n */\n // 'unicorn/no-empty-file': 'error',\n\n /**\n * Do not use a for loop that can be replaced with a for-of loop.\n * @config recommended\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-for-loop.md}\n */\n // 'unicorn/no-for-loop': 'error',\n\n /**\n * Enforce the use of Unicode escapes instead of hexadecimal escapes.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-hex-escape.md}\n */\n // 'unicorn/no-hex-escape': 'error',\n\n /**\n * Disallow immediate mutation after variable assignment.\n * @config recommended\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-immediate-mutation.md}\n */\n // 'unicorn/no-immediate-mutation': 'error',\n\n /**\n * Disallow instanceof with built-in objects.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-instanceof-builtins.md}\n */\n // 'unicorn/no-instanceof-builtins': 'error',\n\n /**\n * Disallow invalid options in fetch() and new Request().\n * @config recommended\n * @config unopinionated\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-invalid-fetch-options.md}\n */\n // 'unicorn/no-invalid-fetch-options': 'error',\n\n /**\n * Prevent calling EventTarget#removeEventListener() with the result of an expression.\n * @config recommended\n * @config unopinionated\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-invalid-remove-event-listener.md}\n */\n // 'unicorn/no-invalid-remove-event-listener': 'error',\n\n /**\n * Disallow identifiers starting with new or class.\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-keyword-prefix.md}\n */\n // 'unicorn/no-keyword-prefix': 'error',\n\n /**\n * Disallow if statements as the only statement in if blocks without else.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-lonely-if.md}\n */\n // 'unicorn/no-lonely-if': 'error',\n\n /**\n * Disallow a magic number as the depth argument in Array#flat(…).\n * @config recommended\n * @config unopinionated\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-magic-array-flat-depth.md}\n */\n // 'unicorn/no-magic-array-flat-depth': 'error',\n\n /**\n * Disallow named usage of default import and export.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-named-default.md}\n */\n // 'unicorn/no-named-default': 'error',\n\n /**\n * Disallow negated conditions.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-negated-condition.md}\n */\n // 'unicorn/no-negated-condition': 'error',\n\n /**\n * Disallow negated expression in equality check.\n * @config recommended\n * @config unopinionated\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-negation-in-equality-check.md}\n */\n // 'unicorn/no-negation-in-equality-check': 'error',\n\n /**\n * Disallow nested ternary expressions.\n * @config recommended\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-nested-ternary.md}\n */\n // 'unicorn/no-nested-ternary': 'error',\n\n /**\n * Disallow new Array().\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-new-array.md}\n */\n // 'unicorn/no-new-array': 'error',\n\n /**\n * Enforce the use of Buffer.from() and Buffer.alloc() instead of the deprecated new Buffer().\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-new-buffer.md}\n */\n // 'unicorn/no-new-buffer': 'error',\n\n /**\n * Disallow the use of the null literal.\n * @config recommended\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-null.md}\n */\n // 'unicorn/no-null': 'error',\n\n /**\n * Disallow the use of objects as default parameters.\n * @config recommended\n * @config unopinionated\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-object-as-default-parameter.md}\n */\n // 'unicorn/no-object-as-default-parameter': 'error',\n\n /**\n * Disallow process.exit().\n * @config recommended\n * @config unopinionated\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-process-exit.md}\n */\n // 'unicorn/no-process-exit': 'error',\n\n /**\n * Disallow passing single-element arrays to Promise methods.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-single-promise-in-promise-methods.md}\n */\n // 'unicorn/no-single-promise-in-promise-methods': 'error',\n\n /**\n * Disallow classes that only have static members.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-static-only-class.md}\n */\n // 'unicorn/no-static-only-class': 'error',\n\n /**\n * Disallow then property.\n * @config recommended\n * @config unopinionated\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-thenable.md}\n */\n // 'unicorn/no-thenable': 'error',\n\n /**\n * Disallow assigning this to a variable.\n * @config recommended\n * @config unopinionated\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-this-assignment.md}\n */\n // 'unicorn/no-this-assignment': 'error',\n\n /**\n * Disallow comparing undefined using typeof.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-typeof-undefined.md}\n */\n // 'unicorn/no-typeof-undefined': 'error',\n\n /**\n * Disallow using 1 as the depth argument of Array#flat().\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-unnecessary-array-flat-depth.md}\n */\n // 'unicorn/no-unnecessary-array-flat-depth': 'error',\n\n /**\n * Disallow using .length or Infinity as the deleteCount or skipCount argument of Array#{splice,toSpliced}().\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-unnecessary-array-splice-count.md}\n */\n // 'unicorn/no-unnecessary-array-splice-count': 'error',\n\n /**\n * Disallow awaiting non-promise values.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-unnecessary-await.md}\n */\n // 'unicorn/no-unnecessary-await': 'error',\n\n /**\n * Enforce the use of built-in methods instead of unnecessary polyfills.\n * @config recommended\n * @config unopinionated\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-unnecessary-polyfills.md}\n */\n // 'unicorn/no-unnecessary-polyfills': 'error',\n\n /**\n * Disallow using .length or Infinity as the end argument of {Array,String,TypedArray}#slice().\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-unnecessary-slice-end.md}\n */\n // 'unicorn/no-unnecessary-slice-end': 'error',\n\n /**\n * Disallow unreadable array destructuring.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-unreadable-array-destructuring.md}\n */\n // 'unicorn/no-unreadable-array-destructuring': 'error',\n\n /**\n * Disallow unreadable IIFEs.\n * @config recommended\n * @config unopinionated\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-unreadable-iife.md}\n */\n // 'unicorn/no-unreadable-iife': 'error',\n\n /**\n * Disallow unused object properties.\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-unused-properties.md}\n */\n // 'unicorn/no-unused-properties': 'error',\n\n /**\n * Disallow useless values or fallbacks in Set, Map, WeakSet, or WeakMap.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-useless-collection-argument.md}\n */\n // 'unicorn/no-useless-collection-argument': 'error',\n\n /**\n * Disallow unnecessary Error.captureStackTrace(…).\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-useless-error-capture-stack-trace.md}\n */\n // 'unicorn/no-useless-error-capture-stack-trace': 'error',\n\n /**\n * Disallow useless fallback when spreading in object literals.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-useless-fallback-in-spread.md}\n */\n // 'unicorn/no-useless-fallback-in-spread': 'error',\n\n /**\n * Disallow useless array length check.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-useless-length-check.md}\n */\n // 'unicorn/no-useless-length-check': 'error',\n\n /**\n * Disallow returning/yielding Promise.resolve/reject() in async functions or promise callbacks.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-useless-promise-resolve-reject.md}\n */\n // 'unicorn/no-useless-promise-resolve-reject': 'error',\n\n /**\n * Disallow unnecessary spread.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-useless-spread.md}\n */\n // 'unicorn/no-useless-spread': 'error',\n\n /**\n * Disallow useless case in switch statements.\n * @config recommended\n * @config unopinionated\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-useless-switch-case.md}\n */\n // 'unicorn/no-useless-switch-case': 'error',\n\n /**\n * Disallow useless undefined.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-useless-undefined.md}\n */\n // 'unicorn/no-useless-undefined': 'error',\n\n /**\n * Disallow number literals with zero fractions or dangling dots.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-zero-fractions.md}\n */\n // 'unicorn/no-zero-fractions': 'error',\n\n /**\n * Enforce proper case for numeric literals.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/number-literal-case.md}\n */\n // 'unicorn/number-literal-case': 'error',\n\n /**\n * Enforce the style of numeric separators by correctly grouping digits.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/numeric-separators-style.md}\n */\n // 'unicorn/numeric-separators-style': 'error',\n\n /**\n * Prefer .addEventListener() and .removeEventListener() over on-functions.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-add-event-listener.md}\n */\n // 'unicorn/prefer-add-event-listener': 'error',\n\n /**\n * Prefer .find(…) and .findLast(…) over the first or last element from .filter(…).\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-array-find.md}\n */\n // 'unicorn/prefer-array-find': 'error',\n\n /**\n * Prefer Array#flat() over legacy techniques to flatten arrays.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-array-flat.md}\n */\n // 'unicorn/prefer-array-flat': 'error',\n\n /**\n * Prefer .flatMap(…) over .map(…).flat().\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-array-flat-map.md}\n */\n // 'unicorn/prefer-array-flat-map': 'error',\n\n /**\n * Prefer Array#{indexOf,lastIndexOf}() over Array#{findIndex,findLastIndex}() when looking for the index of an item.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-array-index-of.md}\n */\n // 'unicorn/prefer-array-index-of': 'error',\n\n /**\n * Prefer .some(…) over .filter(…).length check and .{find,findLast,findIndex,findLastIndex}(…).\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-array-some.md}\n */\n // 'unicorn/prefer-array-some': 'error',\n\n /**\n * Prefer .at() method for index access and String#charAt().\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-at.md}\n */\n // 'unicorn/prefer-at': 'error',\n\n /**\n * Prefer BigInt literals over the constructor.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-bigint-literals.md}\n */\n // 'unicorn/prefer-bigint-literals': 'error',\n\n /**\n * Prefer Blob#arrayBuffer() over FileReader#readAsArrayBuffer(…) and Blob#text() over FileReader#readAsText(…).\n * @config recommended\n * @config unopinionated\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-blob-reading-methods.md}\n */\n // 'unicorn/prefer-blob-reading-methods': 'error',\n\n /**\n * Prefer class field declarations over this assignments in constructors.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-class-fields.md}\n */\n // 'unicorn/prefer-class-fields': 'error',\n\n /**\n * Prefer using Element#classList.toggle() to toggle class names.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-classlist-toggle.md}\n */\n // 'unicorn/prefer-classlist-toggle': 'error',\n\n /**\n * Prefer String#codePointAt(…) over String#charCodeAt(…) and String.fromCodePoint(…) over String.fromCharCode(…).\n * @config recommended\n * @config unopinionated\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-code-point.md}\n */\n // 'unicorn/prefer-code-point': 'error',\n\n /**\n * Prefer Date.now() to get the number of milliseconds since the Unix Epoch.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-date-now.md}\n */\n // 'unicorn/prefer-date-now': 'error',\n\n /**\n * Prefer default parameters over reassignment.\n * @config recommended\n * @config unopinionated\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-default-parameters.md}\n */\n // 'unicorn/prefer-default-parameters': 'error',\n\n /**\n * Prefer Node#append() over Node#appendChild().\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-dom-node-append.md}\n */\n // 'unicorn/prefer-dom-node-append': 'error',\n\n /**\n * Prefer using .dataset on DOM elements over calling attribute methods.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-dom-node-dataset.md}\n */\n // 'unicorn/prefer-dom-node-dataset': 'error',\n\n /**\n * Prefer childNode.remove() over parentNode.removeChild(childNode).\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-dom-node-remove.md}\n */\n // 'unicorn/prefer-dom-node-remove': 'error',\n\n /**\n * Prefer .textContent over .innerText.\n * @config recommended\n * @config unopinionated\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-dom-node-text-content.md}\n */\n // 'unicorn/prefer-dom-node-text-content': 'error',\n\n /**\n * Prefer EventTarget over EventEmitter.\n * @config recommended\n * @config unopinionated\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-event-target.md}\n */\n // 'unicorn/prefer-event-target': 'error',\n\n /**\n * Prefer export…from when re-exporting.\n * @config recommended\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-export-from.md}\n */\n // 'unicorn/prefer-export-from': 'error',\n\n /**\n * Prefer globalThis over window, self, and global.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-global-this.md}\n */\n // 'unicorn/prefer-global-this': 'error',\n\n /**\n * Prefer import.meta.{dirname,filename} over legacy techniques for getting file paths.\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-import-meta-properties.md}\n */\n // 'unicorn/prefer-import-meta-properties': 'error',\n\n /**\n * Prefer .includes() over .indexOf(), .lastIndexOf(), and Array#some() when checking for existence or non-existence.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-includes.md}\n */\n // 'unicorn/prefer-includes': 'error',\n\n /**\n * Prefer reading a JSON file as a buffer.\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-json-parse-buffer.md}\n */\n // 'unicorn/prefer-json-parse-buffer': 'error',\n\n /**\n * Prefer KeyboardEvent#key over KeyboardEvent#keyCode.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-keyboard-event-key.md}\n */\n // 'unicorn/prefer-keyboard-event-key': 'error',\n\n /**\n * Prefer using a logical operator over a ternary.\n * @config recommended\n * @config unopinionated\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-logical-operator-over-ternary.md}\n */\n // 'unicorn/prefer-logical-operator-over-ternary': 'error',\n\n /**\n * Prefer Math.min() and Math.max() over ternaries for simple comparisons.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-math-min-max.md}\n */\n // 'unicorn/prefer-math-min-max': 'error',\n\n /**\n * Enforce the use of Math.trunc instead of bitwise operators.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-math-trunc.md}\n */\n // 'unicorn/prefer-math-trunc': 'error',\n\n /**\n * Prefer .before() over .insertBefore(), .replaceWith() over .replaceChild(), prefer one of .before(), .after(), .append() or .prepend() over insertAdjacentText() and insertAdjacentElement().\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-modern-dom-apis.md}\n */\n // 'unicorn/prefer-modern-dom-apis': 'error',\n\n /**\n * Prefer modern Math APIs over legacy patterns.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-modern-math-apis.md}\n */\n // 'unicorn/prefer-modern-math-apis': 'error',\n\n /**\n * Prefer JavaScript modules (ESM) over CommonJS.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-module.md}\n */\n // 'unicorn/prefer-module': 'error',\n\n /**\n * Prefer using String, Number, BigInt, Boolean, and Symbol directly.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-native-coercion-functions.md}\n */\n // 'unicorn/prefer-native-coercion-functions': 'error',\n\n /**\n * Prefer negative index over .length - index when possible.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-negative-index.md}\n */\n // 'unicorn/prefer-negative-index': 'error',\n\n /**\n * Prefer using the node: protocol when importing Node.js builtin modules.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-node-protocol.md}\n */\n 'unicorn/prefer-node-protocol': 'error',\n\n /**\n * Prefer Number static properties over global ones.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-number-properties.md}\n */\n // 'unicorn/prefer-number-properties': 'error',\n\n /**\n * Prefer using Object.fromEntries(…) to transform a list of key-value pairs into an object.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-object-from-entries.md}\n */\n // 'unicorn/prefer-object-from-entries': 'error',\n\n /**\n * Prefer omitting the catch binding parameter.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-optional-catch-binding.md}\n */\n // 'unicorn/prefer-optional-catch-binding': 'error',\n\n /**\n * Prefer borrowing methods from the prototype instead of the instance.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-prototype-methods.md}\n */\n // 'unicorn/prefer-prototype-methods': 'error',\n\n /**\n * Prefer .querySelector() over .getElementById(), .querySelectorAll() over .getElementsByClassName() and .getElementsByTagName() and .getElementsByName().\n * @config recommended\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-query-selector.md}\n */\n // 'unicorn/prefer-query-selector': 'error',\n\n /**\n * Prefer Reflect.apply() over Function#apply().\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-reflect-apply.md}\n */\n // 'unicorn/prefer-reflect-apply': 'error',\n\n /**\n * Prefer RegExp#test() over String#match() and RegExp#exec().\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-regexp-test.md}\n */\n // 'unicorn/prefer-regexp-test': 'error',\n\n /**\n * Prefer Response.json() over new Response(JSON.stringify()).\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-response-static-json.md}\n */\n // 'unicorn/prefer-response-static-json': 'error',\n\n /**\n * Prefer Set#has() over Array#includes() when checking for existence or non-existence.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-set-has.md}\n */\n // 'unicorn/prefer-set-has': 'error',\n\n /**\n * Prefer using Set#size instead of Array#length.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-set-size.md}\n */\n // 'unicorn/prefer-set-size': 'error',\n\n /**\n * Enforce combining multiple Array#push(), Element#classList.{add,remove}(), and importScripts() into one call.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-single-call.md}\n */\n // 'unicorn/prefer-single-call': 'error',\n\n /**\n * Prefer the spread operator over Array.from(…), Array#concat(…), Array#{slice,toSpliced}() and String#split('').\n * @config recommended\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-spread.md}\n */\n // 'unicorn/prefer-spread': 'error',\n\n /**\n * Prefer using the String.raw tag to avoid escaping \\.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-string-raw.md}\n */\n // 'unicorn/prefer-string-raw': 'error',\n\n /**\n * Prefer String#replaceAll() over regex searches with the global flag.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-string-replace-all.md}\n */\n // 'unicorn/prefer-string-replace-all': 'error',\n\n /**\n * Prefer String#slice() over String#substr() and String#substring().\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-string-slice.md}\n */\n // 'unicorn/prefer-string-slice': 'error',\n\n /**\n * Prefer String#startsWith() & String#endsWith() over RegExp#test().\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-string-starts-ends-with.md}\n */\n // 'unicorn/prefer-string-starts-ends-with': 'error',\n\n /**\n * Prefer String#trimStart() / String#trimEnd() over String#trimLeft() / String#trimRight().\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-string-trim-start-end.md}\n */\n // 'unicorn/prefer-string-trim-start-end': 'error',\n\n /**\n * Prefer using structuredClone to create a deep clone.\n * @config recommended\n * @config unopinionated\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-structured-clone.md}\n */\n // 'unicorn/prefer-structured-clone': 'error',\n\n /**\n * Prefer switch over multiple else-if.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-switch.md}\n */\n // 'unicorn/prefer-switch': 'error',\n\n /**\n * Prefer ternary expressions over simple if-else statements.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-ternary.md}\n */\n // 'unicorn/prefer-ternary': 'error',\n\n /**\n * Prefer top-level await over top-level promises and async function calls.\n * @config recommended\n * @config unopinionated\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-top-level-await.md}\n */\n // 'unicorn/prefer-top-level-await': 'error',\n\n /**\n * Enforce throwing TypeError in type checking conditions.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-type-error.md}\n */\n // 'unicorn/prefer-type-error': 'error',\n\n /**\n * Prevent abbreviations.\n * @config recommended\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prevent-abbreviations.md}\n */\n // 'unicorn/prevent-abbreviations': 'error',\n\n /**\n * Enforce consistent relative URL style.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/relative-url-style.md}\n */\n // 'unicorn/relative-url-style': 'error',\n\n /**\n * Enforce using the separator argument with Array#join().\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/require-array-join-separator.md}\n */\n // 'unicorn/require-array-join-separator': 'error',\n\n /**\n * Require non-empty module attributes for imports and exports.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/require-module-attributes.md}\n */\n // 'unicorn/require-module-attributes': 'error',\n\n /**\n * Require non-empty specifier list in import and export statements.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/require-module-specifiers.md}\n */\n // 'unicorn/require-module-specifiers': 'error',\n\n /**\n * Enforce using the digits argument with Number#toFixed().\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/require-number-to-fixed-digits-argument.md}\n */\n // 'unicorn/require-number-to-fixed-digits-argument': 'error',\n\n /**\n * Enforce using the targetOrigin argument with window.postMessage().\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/require-post-message-target-origin.md}\n */\n // 'unicorn/require-post-message-target-origin': 'error',\n\n /**\n * Enforce better string content.\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/string-content.md}\n */\n // 'unicorn/string-content': 'error',\n\n /**\n * Enforce consistent brace style for case clauses.\n * @config recommended\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/switch-case-braces.md}\n */\n // 'unicorn/switch-case-braces': 'error',\n\n /**\n * Fix whitespace-insensitive template indentation.\n * @config recommended\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/template-indent.md}\n */\n // 'unicorn/template-indent': 'error',\n\n /**\n * Enforce consistent case for text encoding identifiers.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/text-encoding-identifier-case.md}\n */\n // 'unicorn/text-encoding-identifier-case': 'error',\n\n /**\n * Require new when creating an error.\n * @config recommended\n * @config unopinionated\n * @fixable\n * @see {@link https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/throw-new-error.md}\n */\n // 'unicorn/throw-new-error': 'error',\n },\n});\n","import vitest from '@vitest/eslint-plugin';\nimport { defineConfig } from 'eslint/config';\n\n/**\n * Vitest configuration.\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest}\n */\nexport const vitestConfig = defineConfig({\n name: 'vitest-config',\n files: ['**/*.{spec,test}.{js,jsx,ts,tsx}'],\n extends: [vitest.configs.recommended],\n settings: {\n vitest: {\n typecheck: true,\n },\n },\n languageOptions: {\n globals: {\n ...vitest.environments.env.globals,\n },\n },\n rules: {\n /**\n * Require test file pattern.\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/consistent-test-filename.md}\n */\n // 'vitest/consistent-test-filename': 'error',\n\n /**\n * Enforce using test or it but not both.\n * @fixable\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/consistent-test-it.md}\n */\n 'vitest/consistent-test-it': ['error', { fn: 'it' }],\n\n /**\n * Enforce using vitest or vi but not both.\n * @fixable\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/consistent-vitest-vi.md}\n */\n // 'vitest/consistent-vitest-vi': 'error',\n\n /**\n * Enforce hoisted APIs to be on top of the file.\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/hoisted-apis-on-top.md}\n */\n // 'vitest/hoisted-apis-on-top': 'error',\n\n /**\n * Enforce a maximum number of expect per test.\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/max-expects.md}\n */\n // 'vitest/max-expects': 'error',\n\n /**\n * Require describe block to be less than set max value or default value.\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/max-nested-describe.md}\n */\n // 'vitest/max-nested-describe': 'error',\n\n /**\n * Disallow alias methods.\n * @fixable\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-alias-methods.md}\n */\n // 'vitest/no-alias-methods': 'error',\n\n /**\n * Disallow conditional expects.\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-conditional-expect.md}\n */\n // 'vitest/no-conditional-expect': 'error',\n\n /**\n * Disallow conditional tests.\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-conditional-in-test.md}\n */\n 'vitest/no-conditional-in-test': 'error',\n\n /**\n * Disallow conditional tests.\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-conditional-tests.md}\n */\n // 'vitest/no-conditional-tests': 'error',\n\n /**\n * Disallow disabled tests.\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-disabled-tests.md}\n */\n // 'vitest/no-disabled-tests': 'error',\n\n /**\n * Disallow using a callback in asynchronous tests and hooks.\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-done-callback.md}\n */\n // 'vitest/no-done-callback': 'error',\n\n /**\n * Disallow duplicate hooks and teardown hooks.\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-duplicate-hooks.md}\n */\n 'vitest/no-duplicate-hooks': 'error',\n\n /**\n * Disallow focused tests.\n * @fixable\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-focused-tests.md}\n */\n // 'vitest/no-focused-tests': 'error',\n\n /**\n * Disallow setup and teardown hooks.\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-hooks.md}\n */\n // 'vitest/no-hooks': 'error',\n\n /**\n * Disallow importing Vitest globals.\n * @fixable\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-importing-vitest-globals.md}\n */\n // 'vitest/no-importing-vitest-globals': 'error',\n\n /**\n * Disallow string interpolation in snapshots.\n * @fixable\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-interpolation-in-snapshots.md}\n */\n // 'vitest/no-interpolation-in-snapshots': 'error',\n\n /**\n * Disallow large snapshots.\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-large-snapshots.md}\n */\n // 'vitest/no-large-snapshots': 'error',\n\n /**\n * Disallow importing from mocks directory.\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-mocks-import.md}\n */\n // 'vitest/no-mocks-import': 'error',\n\n /**\n * Disallow the use of certain matchers.\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-restricted-matchers.md}\n */\n // 'vitest/no-restricted-matchers': 'error',\n\n /**\n * Disallow specific vi. methods.\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-restricted-vi-methods.md}\n */\n // 'vitest/no-restricted-vi-methods': 'error',\n\n /**\n * Disallow using expect outside of it or test blocks.\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-standalone-expect.md}\n */\n // 'vitest/no-standalone-expect': 'error',\n\n /**\n * Disallow using the f and x prefixes in favour of .only and .skip.\n * @fixable\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-test-prefixes.md}\n */\n // 'vitest/no-test-prefixes': 'error',\n\n /**\n * Disallow return statements in tests.\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-test-return-statement.md}\n */\n 'vitest/no-test-return-statement': 'error',\n\n /**\n * Enforce padding around afterAll blocks.\n * @fixable\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-after-all-blocks.md}\n */\n // 'vitest/padding-around-after-all-blocks': 'error',\n\n /**\n * Enforce padding around afterEach blocks.\n * @fixable\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-after-each-blocks.md}\n */\n // 'vitest/padding-around-after-each-blocks': 'error',\n\n /**\n * Enforce padding around vitest functions.\n * @fixable\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-all.md}\n */\n 'vitest/padding-around-all': 'error',\n\n /**\n * Enforce padding around beforeAll blocks.\n * @fixable\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-before-all-blocks.md}\n */\n // 'vitest/padding-around-before-all-blocks': 'error',\n\n /**\n * Enforce padding around beforeEach blocks.\n * @fixable\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-before-each-blocks.md}\n */\n // 'vitest/padding-around-before-each-blocks': 'error',\n\n /**\n * Enforce padding around describe blocks.\n * @fixable\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-describe-blocks.md}\n */\n // 'vitest/padding-around-describe-blocks': 'error',\n\n /**\n * Enforce padding around expect groups.\n * @fixable\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-expect-groups.md}\n */\n // 'vitest/padding-around-expect-groups': 'error',\n\n /**\n * Enforce padding around test blocks.\n * @fixable\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-test-blocks.md}\n */\n // 'vitest/padding-around-test-blocks': 'error',\n\n /**\n * Enforce using toBeCalledOnce() or toHaveBeenCalledOnce().\n * @fixable\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-called-once.md}\n */\n // 'vitest/prefer-called-once': 'error',\n\n /**\n * Enforce using toBeCalledTimes(1) or toHaveBeenCalledTimes(1).\n * @fixable\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-called-times.md}\n */\n // 'vitest/prefer-called-times': 'error',\n\n /**\n * Enforce using toBeCalledWith() or toHaveBeenCalledWith().\n * @fixable\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-called-with.md}\n */\n 'vitest/prefer-called-with': 'error',\n\n /**\n * Enforce using the built-in comparison matchers.\n * @fixable\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-comparison-matcher.md}\n */\n 'vitest/prefer-comparison-matcher': 'error',\n\n /**\n * Enforce using a function as a describe title over an equivalent string.\n * @fixable\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-describe-function-title.md}\n */\n // 'vitest/prefer-describe-function-title': 'error',\n\n /**\n * Enforce using each rather than manual loops.\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-each.md}\n */\n 'vitest/prefer-each': 'error',\n\n /**\n * Enforce using the built-in quality matchers.\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-equality-matcher.md}\n */\n 'vitest/prefer-equality-matcher': 'error',\n\n /**\n * Enforce using expect assertions instead of callbacks.\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-expect-assertions.md}\n */\n 'vitest/prefer-expect-assertions': 'error',\n\n /**\n * Enforce using expect().resolves over expect(await ...) syntax.\n * @fixable\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-expect-resolves.md}\n */\n 'vitest/prefer-expect-resolves': 'error',\n\n /**\n * Enforce using expectTypeOf instead of expect(typeof ...).\n * @fixable\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-expect-type-of.md}\n */\n // 'vitest/prefer-expect-type-of': 'error',\n\n /**\n * Enforce having hooks in consistent order.\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-hooks-in-order.md}\n */\n 'vitest/prefer-hooks-in-order': 'error',\n\n /**\n * Enforce having hooks before any test cases.\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-hooks-on-top.md}\n */\n 'vitest/prefer-hooks-on-top': 'error',\n\n /**\n * Prefer dynamic import in mock.\n * @fixable\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-import-in-mock.md}\n */\n // 'vitest/prefer-import-in-mock': 'error',\n\n /**\n * Enforce importing Vitest globals.\n * @fixable\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-importing-vitest-globals.md}\n */\n // 'vitest/prefer-importing-vitest-globals': 'error',\n\n /**\n * Enforce lowercase titles.\n * @fixable\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-lowercase-title.md}\n */\n 'vitest/prefer-lowercase-title': ['error', { ignore: ['describe'] }],\n\n /**\n * Enforce mock resolved/rejected shorthands for promises.\n * @fixable\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-mock-promise-shorthand.md}\n */\n 'vitest/prefer-mock-promise-shorthand': 'error',\n\n /**\n * Enforce including a hint with external snapshots.\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-snapshot-hint.md}\n */\n 'vitest/prefer-snapshot-hint': 'error',\n\n /**\n * Enforce using vi.spyOn.\n * @fixable\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-spy-on.md}\n */\n 'vitest/prefer-spy-on': 'error',\n\n /**\n * Enforce using toBe(true) and toBe(false) over matchers that coerce types to boolean.\n * @fixable\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-strict-boolean-matchers.md}\n */\n // 'vitest/prefer-strict-boolean-matchers': 'error',\n\n /**\n * Enforce strict equal over equal.\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-strict-equal.md}\n */\n 'vitest/prefer-strict-equal': 'error',\n\n /**\n * Enforce using toBe().\n * @fixable\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-be.md}\n */\n // 'vitest/prefer-to-be': 'error',\n\n /**\n * Enforce using toBeFalsy().\n * @fixable\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-be-falsy.md}\n */\n // 'vitest/prefer-to-be-falsy': 'error',\n\n /**\n * Enforce using toBeObject().\n * @fixable\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-be-object.md}\n */\n // 'vitest/prefer-to-be-object': 'error',\n\n /**\n * Enforce using toBeTruthy.\n * @fixable\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-be-truthy.md}\n */\n // 'vitest/prefer-to-be-truthy': 'error',\n\n /**\n * Enforce using toContain().\n * @fixable\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-contain.md}\n */\n // 'vitest/prefer-to-contain': 'error',\n\n /**\n * Enforce using toHaveLength().\n * @fixable\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-have-length.md}\n */\n // 'vitest/prefer-to-have-length': 'error',\n\n /**\n * Enforce using test.todo.\n * @fixable\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-todo.md}\n */\n 'vitest/prefer-todo': 'error',\n\n /**\n * Require vi.mocked() over fn as Mock.\n * @fixable\n * @typeChecked\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-vi-mocked.md}\n */\n 'vitest/prefer-vi-mocked': 'error',\n\n /**\n * Ensure that every expect.poll call is awaited.\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-awaited-expect-poll.md}\n */\n // 'vitest/require-awaited-expect-poll': 'error',\n\n /**\n * Require setup and teardown to be within a hook.\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-hook.md}\n */\n // 'vitest/require-hook': 'error',\n\n /**\n * Enforce using type parameters with vitest mock functions.\n * @fixable\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-mock-type-parameters.md}\n */\n // 'vitest/require-mock-type-parameters': 'error',\n\n /**\n * Require toThrow() to be called with an error message.\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-to-throw-message.md}\n */\n 'vitest/require-to-throw-message': 'error',\n\n /**\n * Enforce that all tests are in a top-level describe.\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-top-level-describe.md}\n */\n 'vitest/require-top-level-describe': 'error',\n\n /**\n * Require promises that have expectations in their chain to be valid.\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/valid-expect-in-promise.md}\n */\n // 'vitest/valid-expect-in-promise': 'error',\n\n /**\n * Disallow .todo usage.\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/warn-todo.md}\n */\n // 'vitest/warn-todo': 'error',\n\n /**\n * Enforce having expectation in test body.\n * @config recommended\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/expect-expect.md}\n */\n // 'vitest/expect-expect': 'off',\n\n /**\n * Disallow commented out tests.\n * @config recommended\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-commented-out-tests.md}\n */\n // 'vitest/no-commented-out-tests': 'off',\n\n /**\n * Disallow identical titles.\n * @config recommended\n * @fixable\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-identical-title.md}\n */\n // 'vitest/no-identical-title': 'off',\n\n /**\n * Disallow importing node:test.\n * @config recommended\n * @fixable\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-import-node-test.md}\n */\n // 'vitest/no-import-node-test': 'off',\n\n /**\n * Prefer toHaveBeenCalledExactlyOnceWith over toHaveBeenCalledOnce and toHaveBeenCalledWith.\n * @config recommended\n * @fixable\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-called-exactly-once-with.md}\n */\n // 'vitest/prefer-called-exactly-once-with': 'off',\n\n /**\n * Require local Test Context for concurrent snapshot tests.\n * @config recommended\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-local-test-context-for-concurrent-snapshots.md}\n */\n // 'vitest/require-local-test-context-for-concurrent-snapshots': 'off',\n\n /**\n * Enforce valid describe callback.\n * @config recommended\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/valid-describe-callback.md}\n */\n // 'vitest/valid-describe-callback': 'off',\n\n /**\n * Enforce valid expect() usage.\n * @config recommended\n * @fixable\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/valid-expect.md}\n */\n // 'vitest/valid-expect': 'off',\n\n /**\n * Enforce valid titles.\n * @config recommended\n * @fixable\n * @see {@link https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/valid-title.md}\n */\n 'vitest/valid-title': [\n 'error',\n {\n mustMatch: { test: '^should' },\n },\n ],\n },\n});\n","import { defineConfig } from 'eslint/config';\nimport type { Config } from 'eslint/config';\nimport globals from 'globals';\n\nimport { eslintConfig } from './configs/eslint-config';\nimport { ignoreConfig } from './configs/ignore-config';\nimport { importXConfig } from './configs/import-x-config';\nimport { jsxA11yConfig } from './configs/jsx-a11y-config';\nimport { perfectionistConfig } from './configs/perfectionist-config';\nimport { prettierConfig } from './configs/prettier-config';\nimport { reactConfig } from './configs/react-config';\nimport { reactHooksConfig } from './configs/react-hooks-config';\nimport { stylisticConfig } from './configs/stylistic-config';\nimport { typescriptConfig } from './configs/typescript-config';\nimport { unicornConfig } from './configs/unicorn-config';\nimport { vitestConfig } from './configs/vitest-config';\n\n/**\n * Creates a base ESLint configuration object with predefined defaults.\n */\nexport function createBaseEslintConfig(rootDir?: string, overrides: Config[] = []) {\n return defineConfig([\n ignoreConfig(rootDir),\n eslintConfig,\n stylisticConfig,\n importXConfig,\n perfectionistConfig,\n unicornConfig,\n typescriptConfig,\n vitestConfig,\n ...overrides,\n prettierConfig,\n {\n name: 'language-config',\n languageOptions: {\n ecmaVersion: 'latest',\n globals: {\n ...globals.node,\n },\n },\n },\n ]);\n}\n\n/**\n * Creates a React-specific ESLint configuration object with predefined defaults.\n */\nexport function createReactEslintConfig(rootDir?: string, overrides: Config[] = []) {\n return defineConfig([\n createBaseEslintConfig(rootDir, overrides),\n {\n name: 'typescript-config',\n files: ['**/*.{ts,tsx}'],\n rules: {\n // Allow {} type with React\n '@typescript-eslint/no-empty-object-type': 'off',\n },\n },\n reactConfig,\n reactHooksConfig,\n jsxA11yConfig,\n ...overrides,\n prettierConfig,\n {\n name: 'language-config',\n languageOptions: {\n globals: {\n ...globals.browser,\n },\n },\n },\n ]);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAOA,MAAa,eAAe,aAAa;CACrC,MAAM;CACN,SAAS,CAAC,OAAO,QAAQ,YAAY;CACrC,OAAO;EAKH,yBAAyB,CAAC,SAAS;GAAE,cAAc;GAAM,WAAW;GAAM,CAAC;EAY3E,yBAAyB;EAMzB,wBAAwB;EAMxB,yBAAyB;EAMzB,8BAA8B,CAAC,SAAS,EAAE,WAAW,MAAM,CAAC;EAM5D,mBAAmB;EAMnB,+BAA+B;EAM/B,sBAAsB;EAMtB,gCAAgC;EAMhC,uBAAuB;EAMvB,wBAAwB;EAMxB,yBAAyB;EAMzB,0BAA0B;EAa1B,oBAAoB;EAMpB,oBAAoB;EAMpB,aAAa;EAyBb,qBAAqB;EAMrB,mBAAmB,CAAC,SAAS,OAAO;EAOpC,SAAS;GAAC;GAAS;GAAiB;GAAa;EAMjD,gBAAgB;EAMhB,qBAAqB;EAMrB,sBAAsB;EAOtB,gBAAgB;EAOhB,UAAU;EAkBV,cAAc;GAAC;GAAS;GAAe,EAAE,qBAAqB,MAAM;GAAC;EAMrE,0BAA0B,CAAC,SAAS,eAAe;EAMnD,gBAAgB;EA+BhB,gCAAgC;EA6DhC,wBAAwB;EAYxB,aAAa;EAmBb,gBAAgB;EAahB,qBAAqB;EAMrB,cAAc;EAMd,WAAW;EAMX,oBAAoB;EAOpB,iBAAiB;EAOjB,kBAAkB;EAOlB,wBAAwB;EAMxB,uBAAuB;EAMvB,mBAAmB;EAMnB,sBAAsB;EAMtB,mBAAmB;EAMnB,eAAe;EAMf,gBAAgB;EAMhB,aAAa;EAMb,kBAAkB;EAOlB,gBAAgB;EAMhB,gBAAgB;EAYhB,mBAAmB;EAwBnB,UAAU;EAMV,eAAe;EAMf,mBAAmB;EAMnB,yBAAyB;EAMzB,mBAAmB;EAMnB,qBAAqB;EAMrB,eAAe;EAMf,YAAY;EAoCZ,oBAAoB;EAMpB,iBAAiB;EAMjB,gBAAgB;EAMhB,aAAa;EAYb,oBAAoB;EAOpB,iBAAiB;EAmBjB,uBAAuB;EAMvB,yBAAyB;EAMzB,mBAAmB;EAOnB,2BAA2B;EAM3B,qBAAqB;EAMrB,0BAA0B;EAO1B,qBAAqB;EAOrB,qBAAqB;EAOrB,UAAU;EAmBV,oBAAoB;EAcpB,uBAAuB;EAOvB,yBAAyB;EAOzB,gBAAgB;EAOhB,wBAAwB;EAOxB,kCAAkC;EAMlC,8BAA8B;EAO9B,2BAA2B;EAO3B,yBAAyB;EAOzB,wBAAwB;EAMxB,gCAAgC;EAMhC,yBAAyB;EAMzB,sBAAsB;EAMtB,iBAAiB;EAOjB,mBAAmB;EAYnB,SAAS,CAAC,SAAS,YAAY;EAM/B,iBAAiB;EAMjB,0BAA0B;EAO1B,gBAAgB;EA0BhB,sBAAsB;EAmczB;CACJ,CAAC;;;;;;;;AChxCF,MAAa,gBAAgB,YAAqB;AAI9C,QAAO,aAAa;EAChB,MAAM;EACN,SAAS,CAJE,kBADO,cAAc,QAAQ,CACG,CAI1B;EACpB,CAAC;;;;;;;;;ACPN,MAAa,gBAAgB,aAAa,CACtC;CACI,MAAM;CAEN,SAAS,CAAC,QAAQ,YAAY,YAAY;CAC1C,UAAU,EACN,0BAA0B,CAAC,oBAAoB,CAAC,EACnD;CACD,OAAO;EAYH,kCAAkC;EAYlC,+BAA+B;EAO/B,8BAA8B;EAM9B,8BAA8B;EAsC9B,6BAA6B;EAM7B,qBAAqB;EAmBrB,iCAAiC;EAkBjC,2BAA2B;EAO3B,qCAAqC;EAarC,4CAA4C,CAAC,SAAS,mBAAmB;EA0BzE,kBAAkB;EA2BlB,iCAAiC;EAyEjC,gCAAgC;EAQhC,uCAAuC;EAiCvC,0BAA0B;EAS1B,wBAAwB;EAE3B;CACJ,EACD;CACI,MAAM;CACN,OAAO,CAAC,gBAAgB;CAExB,SAAS,CAAC,QAAQ,YAAY,WAAW;CACzC,UAAU,EACN,0BAA0B,CAAC,gCAAgC,EAAE,oBAAoB,CAAC,EACrF;CACJ,CACJ,CAAC;;;;;;;;AChVF,MAAa,gBAAgB,aAAa;CACtC,MAAM;CACN,SAAS,CAAC,QAAQ,YAAY,YAAY;CAC1C,OAAO,EA0QN;CACJ,CAAC;;;;;;;;AC9QF,MAAa,sBAAsB,aAAa;CAC5C,MAAM;CACN,SAAS,EAAE,eAAe;CAC1B,OAAO;EAMH,qCAAqC;EAcrC,iCAAiC;EAcjC,8BAA8B,CAC1B,SACA;GACI,MAAM;GACN,OAAO;GACP,WAAW;GACd,CACJ;EAOD,uCAAuC;EAOvC,gBAAgB;EAChB,8BAA8B,CAC1B,SACA;GACI,MAAM;GACN,OAAO;GACP,iBAAiB,CAAC,OAAO;GACzB,iBAAiB;GACjB,QAAQ;IACJ,CAAC,eAAe,oBAAoB;IACpC,CAAC,gBAAgB,UAAU;IAC3B,CAAC,iBAAiB,WAAW;IAC7B,CAAC,iBAAiB,WAAW;IAC7B,CAAC,eAAe,SAAS;IACzB,CAAC,gBAAgB,UAAU;IAC3B,CAAC,cAAc,QAAQ;IACvB,CAAC,SAAS;IACV,CAAC,QAAQ;IACT,CAAC,UAAU;IACd;GACJ,CACJ;EA4FJ;CACJ,CAAC;;;;;;;;AC5KF,MAAa,iBAAiB,aAAa;CACvC,MAAM;CACN,SAAS,CAAC,SAAS;CACtB,CAAC;;;;;;;;ACHF,MAAa,cAAc,aAAa;CACpC,MAAM;CACN,SAAS,CAAC,MAAM,QAAQ,KAAK,gBAAiB,MAAM,QAAQ,KAAK,eAAgB;CACjF,UAAU,EACN,OAAO,EACH,SAAS,UACZ,EACJ;CACD,OAAO;EAKH,6BAA6B,CACzB,SACA;GAAE,MAAM;GAAyC,gBAAgB;GAAM,CAC1E;EAMD,yBAAyB;EAMzB,+CAA+C;EAM/C,wCAAwC;EAOxC,kCAAkC;EAoClC,8BAA8B;EAO9B,uCAAuC,CACnC,SACA;GAAE,iBAAiB;GAAkB,mBAAmB;GAAkB,CAC7E;EAMD,wBAAwB;EAMxB,gCAAgC;EAOhC,2BAA2B,CAAC,SAAS,QAAQ;EAM7C,mCAAmC;EAOnC,sCAAsC;EAOtC,kCAAkC;EAOlC,kCAAkC,CAAC,SAAS,QAAQ;EAOpD,2BAA2B;EAO3B,2BAA2B;EAO3B,4BAA4B;EAa5B,iCAAiC;EAOjC,uBAAuB;EAMvB,2BAA2B;EAO3B,oBAAoB;EAOpB,0BAA0B;EA0B1B,qBAAqB;EAMrB,2CAA2C;EAO3C,8BAA8B;EAY9B,2BAA2B;EAO3B,iCAAiC;EAOjC,qCAAqC;EAMrC,yBAAyB;EAOzB,mCAAmC;EAMnC,mCAAmC;EAoBnC,wBAAwB,CACpB,SACA;GACI,eAAe;GACf,eAAe;GACf,WAAW;GACX,YAAY;GACZ,sBAAsB;GACtB,eAAe;GAClB,CACJ;EAeD,yBAAyB;EAOzB,6BAA6B;EAM7B,qCAAqC;EAMrC,qCAAqC;EAMrC,4BAA4B;EAO5B,qCAAqC;EAMrC,mBAAmB;EAMnB,gCAAgC;EAMhC,iCAAiC;EAMjC,mCAAmC;EAYnC,sBAAsB;EAMtB,wCAAwC;EAMxC,8CAA8C;EAM9C,sBAAsB;EAMtB,wBAAwB;EAMxB,kBAAkB;EAMlB,uCAAuC;EAMvC,2CAA2C;EAM3C,8BAA8B;EAM9B,yBAAyB;EAMzB,kCAAkC;EAMlC,0BAA0B;EAM1B,4BAA4B;EAO5B,gCAAgC;EAMhC,mCAAmC;EAMnC,+BAA+B;EAM/B,8BAA8B;EAO9B,2BAA2B;EAM3B,mBAAmB;EAMnB,4BAA4B;EAO5B,yBAAyB;EAMzB,8BAA8B;EAM9B,mCAAmC;EAYnC,uCAAuC;EA+J1C;CACJ,CAAC;;;;;;;;AC1rBF,MAAa,mBAAmB,aAAa;CACzC,MAAM;CACN,SAAS,CAAC,WAAW,QAAQ,KAAK,YAAY;CACjD,CAAC;;;;;;;;ACHF,MAAa,kBAAkB,aAAa;CACxC,MAAM;CACN,SAAS,EAAE,cAAc,WAAW;CACpC,OAAO,EAokBH,qBAAqB;EACjB;EACA;EACA;GAAE,aAAa;GAAM,uBAAuB;GAAO;EACtD,EAsJJ;CACJ,CAAC;;;;;;;;ACluBF,MAAa,mBAAmB,aAAa,CACzC;CACI,MAAM;CACN,OAAO,CAAC,gBAAgB;CACxB,SAAS,CAAC,SAAS,QAAQ,mBAAmB,SAAS,QAAQ,qBAAqB;CACpF,iBAAiB,EACb,eAAe,EACX,gBAAgB,MACnB,EACJ;CACD,OAAO;EAsBH,8CAA8C;EAO9C,8CAA8C;EAO9C,sBAAsB;EACtB,yCAAyC;EAazC,oDAAoD,CAChD,SACA;GACI,eAAe;GACf,WAAW;IACP,WAAW;IACX,cAAc;IACd,SAAS;IACT,YAAY;IACZ,qBAAqB;IACxB;GACJ,CACJ;EA0BD,sCAAsC,CAClC,SACA,EACI,SAAS;GAEL;GACA;GAGA;GACA;GACA;GACA;GAEA;GACA;GACA;GACA;GAEA;GACA;GAEA;GACA;GACA;GACA;GAEA;GACA;GACA;GAEA;GAGA;GAGA;GACA;GACA;GAGA;GACA;GACA;GACA;GAEA;GACA;GACA;GACA;GAEA;GACA;GAEA;GACA;GACA;GACA;GAEA;GACA;GACA;GAEA;GAGA,CAAC,qBAAqB,oBAAoB;GAC1C,CAAC,wBAAwB,uBAAuB;GAChD,CAAC,sBAAsB,qBAAqB;GAC5C,CAAC,uBAAuB,sBAAsB;GAE9C,CAAC,uBAAuB,sBAAsB;GAC9C,CAAC,0BAA0B,yBAAyB;GACpD,CAAC,wBAAwB,uBAAuB;GAChD,CAAC,yBAAyB,wBAAwB;GAElD,CAAC,uBAAuB,sBAAsB;GAC9C,CAAC,0BAA0B,yBAAyB;GAEpD,CAAC,cAAc,aAAa;GAC5B,CAAC,iBAAiB,gBAAgB;GAClC,CAAC,eAAe,cAAc;GAC9B,CAAC,gBAAgB,eAAe;GAEhC,CAAC,cAAc,aAAa;GAC5B,CAAC,gBAAgB,eAAe;GAChC,CAAC,gBAAgB,eAAe;GAEhC,CAAC,OAAO,MAAM;GAGd;GACA;GACA;GACA;GAEA;GACA;GACA;GACA;GAEA;GACA;GAEA;GACA;GACA;GACA;GAEA;GACA;GACA;GAEA;GACH,EACJ,CACJ;EAOD,6CAA6C;EAO7C,wCAAwC;GACpC;GACA;IACI,UAAU;IACV,QAAQ,CAAC,aAAa;IACtB,QAAQ;KAAC;KAAK;KAAK;KAAK;KAAI;IAC/B;GACD;IACI,UAAU;KAAC;KAAU;KAAqB;KAAW;IACrD,WAAW,CAAC,UAAU;IACtB,QAAQ,CAAC,YAAY;IACrB,mBAAmB;IACtB;GACD;IACI,UAAU,CAAC,aAAa,YAAY;IACpC,QAAQ,CAAC,aAAa;IACzB;GACJ;EAsBD,kDAAkD;EAOlD,mBAAmB;EACnB,sCAAsC;EAOtC,gBAAgB;EAChB,mCAAmC;EA2CnC,aAAa;EACb,gCAAgC;EAahC,mEAAmE;EAQnE,+CAA+C;EAqB/C,wBAAwB;EACxB,2CAA2C;EAO3C,8CAA8C;EAa9C,2CAA2C;EAS3C,wBAAwB;EACxB,2CAA2C;EAM3C,+CAA+C;EAQ/C,sCAAsC;EAuBtC,6CAA6C;EAO7C,iDAAiD;EA0GjD,kDAAkD,CAAC,SAAS,OAAO;EAmDnE,mDAAmD,CAC/C,SACA;GAAE,oBAAoB;GAAM,8BAA8B;GAAM,CACnE;EAuDD,sCAAsC,CAAC,SAAS,EAAE,gBAAgB,MAAM,CAAC;EAezE,0CAA0C;EA4G1C,4CAA4C;EA+K5C,qCAAqC,CACjC,SACA;GACI,MAAM;GACN,mBAAmB;GACnB,cAAc;GACd,2BAA2B;GAC3B,gCAAgC;GAChC,mBAAmB;GACnB,oBAAoB;GACvB,CACJ;EAwLD,oDAAoD;EAwBpD,qCAAqC,CAAC,SAAS,EAAE,cAAc,MAAM,CAAC;EAgBzE;CACJ,EACD;CACI,MAAM;CACN,OAAO,CAAC,YAAY;CACpB,OAAO;EACH,kDAAkD;EAClD,wCAAwC;EAC3C;CACJ,CACJ,CAAC;;;;;;;;ACnrCF,MAAa,gBAAgB,aAAa;CACtC,MAAM;CACN,SAAS,EAAE,SAAS;CACpB,OAAO;EAoHH,yBAAyB,CAAC,SAAS,EAAE,MAAM,aAAa,CAAC;EAqxBzD,gCAAgC;EAuSnC;CACJ,CAAC;;;;;;;;ACprCF,MAAa,eAAe,aAAa;CACrC,MAAM;CACN,OAAO,CAAC,mCAAmC;CAC3C,SAAS,CAAC,OAAO,QAAQ,YAAY;CACrC,UAAU,EACN,QAAQ,EACJ,WAAW,MACd,EACJ;CACD,iBAAiB,EACb,SAAS,EACL,GAAG,OAAO,aAAa,IAAI,SAC9B,EACJ;CACD,OAAO;EAYH,6BAA6B,CAAC,SAAS,EAAE,IAAI,MAAM,CAAC;EA4CpD,iCAAiC;EAwBjC,6BAA6B;EAsE7B,mCAAmC;EAqBnC,6BAA6B;EAwD7B,6BAA6B;EAO7B,oCAAoC;EAapC,sBAAsB;EAMtB,kCAAkC;EAMlC,mCAAmC;EAOnC,iCAAiC;EAajC,gCAAgC;EAMhC,8BAA8B;EAqB9B,iCAAiC,CAAC,SAAS,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAC;EAOpE,wCAAwC;EAMxC,+BAA+B;EAO/B,wBAAwB;EAaxB,8BAA8B;EAiD9B,sBAAsB;EAQtB,2BAA2B;EAyB3B,mCAAmC;EAMnC,qCAAqC;EAgFrC,sBAAsB,CAClB,SACA,EACI,WAAW,EAAE,MAAM,WAAW,EACjC,CACJ;EACJ;CACJ,CAAC;;;;;;;ACngBF,SAAgB,uBAAuB,SAAkB,YAAsB,EAAE,EAAE;AAC/E,QAAO,aAAa;EAChB,aAAa,QAAQ;EACrB;EACA;EACA;EACA;EACA;EACA;EACA;EACA,GAAG;EACH;EACA;GACI,MAAM;GACN,iBAAiB;IACb,aAAa;IACb,SAAS,EACL,GAAG,QAAQ,MACd;IACJ;GACJ;EACJ,CAAC;;;;;AAMN,SAAgB,wBAAwB,SAAkB,YAAsB,EAAE,EAAE;AAChF,QAAO,aAAa;EAChB,uBAAuB,SAAS,UAAU;EAC1C;GACI,MAAM;GACN,OAAO,CAAC,gBAAgB;GACxB,OAAO,EAEH,2CAA2C,OAC9C;GACJ;EACD;EACA;EACA;EACA,GAAG;EACH;EACA;GACI,MAAM;GACN,iBAAiB,EACb,SAAS,EACL,GAAG,QAAQ,SACd,EACJ;GACJ;EACJ,CAAC"}