@homer0/oxlint-config 1.0.3 → 2.0.0

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.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["typeAware","typeAwareRules","nextjs","nextjsRules","vitestRules"],"sources":["../src/consts.ts","../src/rules/base.ts","../src/rules/browser.ts","../src/rules/jsdoc.ts","../src/rules/nextjs.ts","../src/rules/node.ts","../src/rules/react.ts","../src/rules/tests.ts","../src/rules/typeAware.ts","../src/rules/typescript.ts","../src/rules/vitest.ts","../src/fragments.ts","../src/createConfig.ts","../src/createNextjsConfig.ts","../src/index.ts"],"sourcesContent":["export const DEFAULT_IGNORES = ['coverage/', 'coverage-*/', 'dist/', 'node_modules/'];\n\nexport const TEST_FILES = {\n colocated: ['**/*.{test,spec}.{js,jsx,ts,tsx,mjs,cjs,mts,cts}'],\n directory: ['tests/**/*.{js,jsx,ts,tsx,mjs,cjs,mts,cts}'],\n} as const;\n\nexport const EXTENSION_FRAGMENT_NAMES = [\n 'base',\n 'browser',\n 'jsdoc',\n 'node',\n 'react',\n 'tests',\n 'typescript',\n] as const;\n\nexport type TestConvention = keyof typeof TEST_FILES;\n\nexport type ExtensionFragmentName = (typeof EXTENSION_FRAGMENT_NAMES)[number];\n","const maxComplexity = 30;\n\nexport const base = {\n /**\n * Enforce `return` statements in callbacks of array methods.\n *\n * @see https://eslint.org/docs/latest/rules/array-callback-return\n */\n 'array-callback-return': [\n 'error',\n {\n allowImplicit: true,\n },\n ],\n /**\n * Enforce the use of variables within the scope they are defined.\n *\n * @see https://eslint.org/docs/latest/rules/block-scoped-var\n */\n 'block-scoped-var': 'error',\n /**\n * Enforce a maximum cyclomatic complexity allowed in a program.\n *\n * @see https://eslint.org/docs/latest/rules/complexity\n */\n complexity: ['warn', maxComplexity],\n /**\n * Require `return` statements to either always or never specify values.\n *\n * @see https://eslint.org/docs/latest/rules/consistent-return\n */\n 'consistent-return': 'error',\n /**\n * Enforce consistent brace style for all control statements.\n *\n * @see https://eslint.org/docs/latest/rules/curly\n */\n curly: 'off',\n /**\n * Require `default` cases in `switch` statements.\n *\n * @see https://eslint.org/docs/latest/rules/default-case\n */\n 'default-case': [\n 'error',\n {\n commentPattern: '^no default$',\n },\n ],\n /**\n * Enforce `default` clauses in `switch` statements to be last.\n *\n * @see https://eslint.org/docs/latest/rules/default-case-last\n */\n 'default-case-last': 'error',\n /**\n * Enforce default parameters to be last.\n *\n * @see https://eslint.org/docs/latest/rules/default-param-last\n */\n 'default-param-last': 'error',\n /**\n * Enforce dot notation whenever possible.\n *\n * @see https://eslint.org/docs/latest/rules/dot-notation\n */\n 'dot-notation': [\n 'error',\n {\n allowKeywords: true,\n },\n ],\n /**\n * Require the use of `===` and `!==`\n *\n * @see https://eslint.org/docs/latest/rules/eqeqeq\n */\n eqeqeq: [\n 'error',\n 'always',\n {\n null: 'ignore',\n },\n ],\n /**\n * Require grouped accessor pairs in object literals and classes.\n *\n * @see https://eslint.org/docs/latest/rules/grouped-accessor-pairs\n */\n 'grouped-accessor-pairs': 'error',\n /**\n * Require `for-in` loops to include an `if` statement.\n *\n * @see https://eslint.org/docs/latest/rules/guard-for-in\n */\n 'guard-for-in': 'error',\n /**\n * Enforce a maximum number of classes per file.\n *\n * @see https://eslint.org/docs/latest/rules/max-classes-per-file\n */\n 'max-classes-per-file': ['error', 1],\n /**\n * Disallow the use of `alert`, `confirm`, and `prompt`\n *\n * @see https://eslint.org/docs/latest/rules/no-alert\n */\n 'no-alert': 'warn',\n /**\n * Disallow the use of `arguments.caller` or `arguments.callee`\n *\n * @see https://eslint.org/docs/latest/rules/no-caller\n */\n 'no-caller': 'error',\n /**\n * Disallow lexical declarations in case clauses.\n *\n * @see https://eslint.org/docs/latest/rules/no-case-declarations\n */\n 'no-case-declarations': 'error',\n /**\n * Disallow returning value from constructor.\n *\n * @see https://eslint.org/docs/latest/rules/no-constructor-return\n */\n 'no-constructor-return': 'error',\n /**\n * Disallow `else` blocks after `return` statements in `if` statements.\n *\n * @see https://eslint.org/docs/latest/rules/no-else-return\n */\n 'no-else-return': [\n 'error',\n {\n allowElseIf: false,\n },\n ],\n /**\n * Disallow empty functions.\n *\n * @see https://eslint.org/docs/latest/rules/no-empty-function\n */\n 'no-empty-function': [\n 'error',\n {\n allow: ['arrowFunctions', 'functions', 'methods'],\n },\n ],\n /**\n * Disallow empty destructuring patterns.\n *\n * @see https://eslint.org/docs/latest/rules/no-empty-pattern\n */\n 'no-empty-pattern': 'error',\n /**\n * Disallow the use of `eval()`\n *\n * @see https://eslint.org/docs/latest/rules/no-eval\n */\n 'no-eval': 'error',\n /**\n * Disallow extending native types.\n *\n * @see https://eslint.org/docs/latest/rules/no-extend-native\n */\n 'no-extend-native': 'error',\n /**\n * Disallow unnecessary calls to `.bind()`\n *\n * @see https://eslint.org/docs/latest/rules/no-extra-bind\n */\n 'no-extra-bind': 'error',\n /**\n * Disallow unnecessary labels.\n *\n * @see https://eslint.org/docs/latest/rules/no-extra-label\n */\n 'no-extra-label': 'error',\n /**\n * Disallow fallthrough of `case` statements.\n *\n * @see https://eslint.org/docs/latest/rules/no-fallthrough\n */\n 'no-fallthrough': 'error',\n /**\n * Disallow assignments to native objects or read-only global variables.\n *\n * @see https://eslint.org/docs/latest/rules/no-global-assign\n */\n 'no-global-assign': [\n 'error',\n {\n exceptions: [],\n },\n ],\n /**\n * Disallow the use of `eval()`-like methods.\n *\n * @see https://eslint.org/docs/latest/rules/no-implied-eval\n */\n 'no-implied-eval': 'error',\n /**\n * Disallow the use of the `__iterator__` property.\n *\n * @see https://eslint.org/docs/latest/rules/no-iterator\n */\n 'no-iterator': 'error',\n /**\n * Disallow labeled statements.\n *\n * @see https://eslint.org/docs/latest/rules/no-labels\n */\n 'no-labels': [\n 'error',\n {\n allowLoop: false,\n allowSwitch: false,\n },\n ],\n /**\n * Disallow unnecessary nested blocks.\n *\n * @see https://eslint.org/docs/latest/rules/no-lone-blocks\n */\n 'no-lone-blocks': 'error',\n /**\n * Disallow function declarations that contain unsafe references inside loop statements.\n *\n * @see https://eslint.org/docs/latest/rules/no-loop-func\n */\n 'no-loop-func': 'error',\n /**\n * Disallow magic numbers.\n *\n * @see https://eslint.org/docs/latest/rules/no-magic-numbers\n */\n 'no-magic-numbers': [\n 'error',\n {\n ignore: [0, 1, -1, 60, 100, 1000],\n ignoreArrayIndexes: true,\n enforceConst: false,\n detectObjects: false,\n },\n ],\n /**\n * Disallow multiline strings.\n *\n * @see https://eslint.org/docs/latest/rules/no-multi-str\n */\n 'no-multi-str': 'error',\n /**\n * Disallow `new` operators outside of assignments or comparisons.\n *\n * @see https://eslint.org/docs/latest/rules/no-new\n */\n 'no-new': 'error',\n /**\n * Disallow `new` operators with the `Function` object.\n *\n * @see https://eslint.org/docs/latest/rules/no-new-func\n */\n 'no-new-func': 'error',\n /**\n * Disallow `new` operators with the `String`, `Number`, and `Boolean` objects.\n *\n * @see https://eslint.org/docs/latest/rules/no-new-wrappers\n */\n 'no-new-wrappers': 'error',\n /**\n * Disallow `\\8` and `\\9` escape sequences in string literals.\n *\n * @see https://eslint.org/docs/latest/rules/no-nonoctal-decimal-escape\n */\n 'no-nonoctal-decimal-escape': 'error',\n /**\n * Disallow reassigning function parameters.\n *\n * @see https://eslint.org/docs/latest/rules/no-param-reassign\n */\n 'no-param-reassign': [\n 'error',\n {\n props: true,\n ignorePropertyModificationsFor: [\n 'acc',\n 'accumulator',\n 'e',\n 'ctx',\n 'context',\n 'req',\n 'request',\n 'res',\n 'response',\n '$scope',\n 'staticContext',\n 'state',\n 'ref',\n 'sacc',\n ],\n },\n ],\n /**\n * Disallow the use of the `__proto__` property.\n *\n * @see https://eslint.org/docs/latest/rules/no-proto\n */\n 'no-proto': 'error',\n /**\n * Disallow variable redeclaration.\n *\n * @see https://eslint.org/docs/latest/rules/no-redeclare\n */\n 'no-redeclare': 'error',\n /**\n * Disallow certain properties on certain objects.\n *\n * @see https://eslint.org/docs/latest/rules/no-restricted-properties\n */\n 'no-restricted-properties': [\n 'error',\n {\n object: 'arguments',\n property: 'callee',\n message: 'arguments.callee is deprecated',\n },\n {\n object: 'global',\n property: 'isFinite',\n message: 'Please use Number.isFinite instead',\n },\n {\n object: 'self',\n property: 'isFinite',\n message: 'Please use Number.isFinite instead',\n },\n {\n object: 'window',\n property: 'isFinite',\n message: 'Please use Number.isFinite instead',\n },\n {\n object: 'global',\n property: 'isNaN',\n message: 'Please use Number.isNaN instead',\n },\n {\n object: 'self',\n property: 'isNaN',\n message: 'Please use Number.isNaN instead',\n },\n {\n object: 'window',\n property: 'isNaN',\n message: 'Please use Number.isNaN instead',\n },\n {\n property: '__defineGetter__',\n message: 'Please use Object.defineProperty instead.',\n },\n {\n property: '__defineSetter__',\n message: 'Please use Object.defineProperty instead.',\n },\n {\n object: 'Math',\n property: 'pow',\n message: 'Use the exponentiation operator (**) instead.',\n },\n ],\n /**\n * Disallow assignment operators in `return` statements.\n *\n * @see https://eslint.org/docs/latest/rules/no-return-assign\n */\n 'no-return-assign': ['error', 'always'],\n /**\n * Disallow `javascript:` URLs.\n *\n * @see https://eslint.org/docs/latest/rules/no-script-url\n */\n 'no-script-url': 'error',\n /**\n * Disallow assignments where both sides are exactly the same.\n *\n * @see https://eslint.org/docs/latest/rules/no-self-assign\n */\n 'no-self-assign': [\n 'error',\n {\n props: true,\n },\n ],\n /**\n * Disallow comparisons where both sides are exactly the same.\n *\n * @see https://eslint.org/docs/latest/rules/no-self-compare\n */\n 'no-self-compare': 'error',\n /**\n * Disallow comma operators.\n *\n * @see https://eslint.org/docs/latest/rules/no-sequences\n */\n 'no-sequences': 'error',\n /**\n * Disallow throwing literals as exceptions.\n *\n * @see https://eslint.org/docs/latest/rules/no-throw-literal\n */\n 'no-throw-literal': 'error',\n /**\n * Disallow unmodified loop conditions.\n *\n * @see https://eslint.org/docs/latest/rules/no-unmodified-loop-condition\n */\n 'no-unmodified-loop-condition': 'error',\n /**\n * Disallow unused expressions.\n *\n * @see https://eslint.org/docs/latest/rules/no-unused-expressions\n */\n 'no-unused-expressions': [\n 'error',\n {\n allowShortCircuit: false,\n allowTernary: false,\n allowTaggedTemplates: false,\n },\n ],\n /**\n * Disallow unused labels.\n *\n * @see https://eslint.org/docs/latest/rules/no-unused-labels\n */\n 'no-unused-labels': 'error',\n /**\n * Disallow unnecessary calls to `.call()` and `.apply()`\n *\n * @see https://eslint.org/docs/latest/rules/no-useless-call\n */\n 'no-useless-call': 'error',\n /**\n * Disallow unnecessary `catch` clauses.\n *\n * @see https://eslint.org/docs/latest/rules/no-useless-catch\n */\n 'no-useless-catch': 'error',\n /**\n * Disallow unnecessary concatenation of literals or template literals.\n *\n * @see https://eslint.org/docs/latest/rules/no-useless-concat\n */\n 'no-useless-concat': 'error',\n /**\n * Disallow redundant return statements.\n *\n * @see https://eslint.org/docs/latest/rules/no-useless-return\n */\n 'no-useless-return': 'error',\n /**\n * Disallow `void` operators.\n *\n * @see https://eslint.org/docs/latest/rules/no-void\n */\n 'no-void': 'error',\n /**\n * Disallow `with` statements.\n *\n * @see https://eslint.org/docs/latest/rules/no-with\n */\n 'no-with': 'error',\n /**\n * Require using Error objects as Promise rejection reasons.\n *\n * @see https://eslint.org/docs/latest/rules/prefer-promise-reject-errors\n */\n 'prefer-promise-reject-errors': [\n 'error',\n {\n allowEmptyReject: true,\n },\n ],\n /**\n * Disallow use of the `RegExp` constructor in favor of regular expression literals.\n *\n * @see https://eslint.org/docs/latest/rules/prefer-regex-literals\n */\n 'prefer-regex-literals': [\n 'error',\n {\n disallowRedundantWrapping: true,\n },\n ],\n /**\n * Enforce the consistent use of the radix argument when using `parseInt()`\n *\n * @see https://eslint.org/docs/latest/rules/radix\n */\n radix: 'error',\n /**\n * Require `var` declarations be placed at the top of their containing scope.\n *\n * @see https://eslint.org/docs/latest/rules/vars-on-top\n */\n 'vars-on-top': 'error',\n /**\n * Require or disallow \"Yoda\" conditions.\n *\n * @see https://eslint.org/docs/latest/rules/yoda\n */\n yoda: 'error',\n /**\n * Enforce `for` loop update clause moving the counter in the right direction.\n *\n * @see https://eslint.org/docs/latest/rules/for-direction\n */\n 'for-direction': 'error',\n /**\n * Enforce `return` statements in getters.\n *\n * @see https://eslint.org/docs/latest/rules/getter-return\n */\n 'getter-return': [\n 'error',\n {\n allowImplicit: true,\n },\n ],\n /**\n * Disallow using an async function as a Promise executor.\n *\n * @see https://eslint.org/docs/latest/rules/no-async-promise-executor\n */\n 'no-async-promise-executor': 'error',\n /**\n * Disallow comparing against `-0`\n *\n * @see https://eslint.org/docs/latest/rules/no-compare-neg-zero\n */\n 'no-compare-neg-zero': 'error',\n /**\n * Disallow assignment operators in conditional expressions.\n *\n * @see https://eslint.org/docs/latest/rules/no-cond-assign\n */\n 'no-cond-assign': ['error', 'always'],\n /**\n * Disallow the use of `console`\n *\n * @see https://eslint.org/docs/latest/rules/no-console\n */\n 'no-console': 'warn',\n /**\n * Disallow control characters in regular expressions.\n *\n * @see https://eslint.org/docs/latest/rules/no-control-regex\n */\n 'no-control-regex': 'error',\n /**\n * Disallow the use of `debugger`\n *\n * @see https://eslint.org/docs/latest/rules/no-debugger\n */\n 'no-debugger': 'error',\n /**\n * Disallow duplicate conditions in if-else-if chains.\n *\n * @see https://eslint.org/docs/latest/rules/no-dupe-else-if\n */\n 'no-dupe-else-if': 'error',\n /**\n * Disallow duplicate keys in object literals.\n *\n * @see https://eslint.org/docs/latest/rules/no-dupe-keys\n */\n 'no-dupe-keys': 'error',\n /**\n * Disallow duplicate case labels.\n *\n * @see https://eslint.org/docs/latest/rules/no-duplicate-case\n */\n 'no-duplicate-case': 'error',\n /**\n * Disallow empty block statements.\n *\n * @see https://eslint.org/docs/latest/rules/no-empty\n */\n 'no-empty': 'error',\n /**\n * Disallow empty character classes in regular expressions.\n *\n * @see https://eslint.org/docs/latest/rules/no-empty-character-class\n */\n 'no-empty-character-class': 'error',\n /**\n * Disallow reassigning exceptions in `catch` clauses.\n *\n * @see https://eslint.org/docs/latest/rules/no-ex-assign\n */\n 'no-ex-assign': 'error',\n /**\n * Disallow unnecessary boolean casts.\n *\n * @see https://eslint.org/docs/latest/rules/no-extra-boolean-cast\n */\n 'no-extra-boolean-cast': 'error',\n /**\n * Disallow reassigning `function` declarations.\n *\n * @see https://eslint.org/docs/latest/rules/no-func-assign\n */\n 'no-func-assign': 'error',\n /**\n * Disallow assigning to imported bindings.\n *\n * @see https://eslint.org/docs/latest/rules/no-import-assign\n */\n 'no-import-assign': 'error',\n /**\n * Disallow variable or `function` declarations in nested blocks.\n *\n * @see https://eslint.org/docs/latest/rules/no-inner-declarations\n */\n 'no-inner-declarations': 'error',\n /**\n * Disallow invalid regular expression strings in `RegExp` constructors.\n *\n * @see https://eslint.org/docs/latest/rules/no-invalid-regexp\n */\n 'no-invalid-regexp': 'error',\n /**\n * Disallow irregular whitespace.\n *\n * @see https://eslint.org/docs/latest/rules/no-irregular-whitespace\n */\n 'no-irregular-whitespace': 'error',\n /**\n * Disallow literal numbers that lose precision.\n *\n * @see https://eslint.org/docs/latest/rules/no-loss-of-precision\n */\n 'no-loss-of-precision': 'error',\n /**\n * Disallow characters which are made with multiple code points in character class\n * syntax.\n *\n * @see https://eslint.org/docs/latest/rules/no-misleading-character-class\n */\n 'no-misleading-character-class': 'error',\n /**\n * Disallow calling global object properties as functions.\n *\n * @see https://eslint.org/docs/latest/rules/no-obj-calls\n */\n 'no-obj-calls': 'error',\n /**\n * Disallow returning values from Promise executor functions.\n *\n * @see https://eslint.org/docs/latest/rules/no-promise-executor-return\n */\n 'no-promise-executor-return': 'error',\n /**\n * Disallow calling some `Object.prototype` methods directly on objects.\n *\n * @see https://eslint.org/docs/latest/rules/no-prototype-builtins\n */\n 'no-prototype-builtins': 'error',\n /**\n * Disallow multiple spaces in regular expressions.\n *\n * @see https://eslint.org/docs/latest/rules/no-regex-spaces\n */\n 'no-regex-spaces': 'error',\n /**\n * Disallow returning values from setters.\n *\n * @see https://eslint.org/docs/latest/rules/no-setter-return\n */\n 'no-setter-return': 'error',\n /**\n * Disallow sparse arrays.\n *\n * @see https://eslint.org/docs/latest/rules/no-sparse-arrays\n */\n 'no-sparse-arrays': 'error',\n /**\n * Disallow template literal placeholder syntax in regular strings.\n *\n * @see https://eslint.org/docs/latest/rules/no-template-curly-in-string\n */\n 'no-template-curly-in-string': 'error',\n /**\n * Disallow confusing multiline expressions.\n *\n * @see https://eslint.org/docs/latest/rules/no-unexpected-multiline\n */\n 'no-unexpected-multiline': 'off',\n /**\n * Disallow unreachable code after `return`, `throw`, `continue`, and `break`\n * statements.\n *\n * @see https://eslint.org/docs/latest/rules/no-unreachable\n */\n 'no-unreachable': 'error',\n /**\n * Disallow loops with a body that allows only one iteration.\n *\n * @see https://eslint.org/docs/latest/rules/no-unreachable-loop\n */\n 'no-unreachable-loop': [\n 'error',\n {\n ignore: [],\n },\n ],\n /**\n * Disallow control flow statements in `finally` blocks.\n *\n * @see https://eslint.org/docs/latest/rules/no-unsafe-finally\n */\n 'no-unsafe-finally': 'error',\n /**\n * Disallow negating the left operand of relational operators.\n *\n * @see https://eslint.org/docs/latest/rules/no-unsafe-negation\n */\n 'no-unsafe-negation': 'error',\n /**\n * Disallow use of optional chaining in contexts where the `undefined` value is not\n * allowed.\n *\n * @see https://eslint.org/docs/latest/rules/no-unsafe-optional-chaining\n */\n 'no-unsafe-optional-chaining': [\n 'error',\n {\n disallowArithmeticOperators: true,\n },\n ],\n /**\n * Disallow useless backreferences in regular expressions.\n *\n * @see https://eslint.org/docs/latest/rules/no-useless-backreference\n */\n 'no-useless-backreference': 'error',\n /**\n * Require calls to `isNaN()` when checking for `NaN`\n *\n * @see https://eslint.org/docs/latest/rules/use-isnan\n */\n 'use-isnan': 'error',\n /**\n * Enforce comparing `typeof` expressions against valid strings.\n *\n * @see https://eslint.org/docs/latest/rules/valid-typeof\n */\n 'valid-typeof': [\n 'error',\n {\n requireStringLiterals: true,\n },\n ],\n /**\n * Require or disallow named `function` expressions.\n *\n * @see https://eslint.org/docs/latest/rules/func-names\n */\n 'func-names': 'warn',\n /**\n * Require constructor names to begin with a capital letter.\n *\n * @see https://eslint.org/docs/latest/rules/new-cap\n */\n 'new-cap': [\n 'error',\n {\n newIsCap: true,\n newIsCapExceptions: [],\n capIsNew: false,\n capIsNewExceptions: ['Immutable.Map', 'Immutable.Set', 'Immutable.List'],\n },\n ],\n /**\n * Disallow `Array` constructors.\n *\n * @see https://eslint.org/docs/latest/rules/no-array-constructor\n */\n 'no-array-constructor': 'error',\n /**\n * Disallow bitwise operators.\n *\n * @see https://eslint.org/docs/latest/rules/no-bitwise\n */\n 'no-bitwise': 'error',\n /**\n * Disallow `continue` statements.\n *\n * @see https://eslint.org/docs/latest/rules/no-continue\n */\n 'no-continue': 'error',\n /**\n * Disallow `if` statements as the only statement in `else` blocks.\n *\n * @see https://eslint.org/docs/latest/rules/no-lonely-if\n */\n 'no-lonely-if': 'error',\n /**\n * Disallow use of chained assignment expressions.\n *\n * @see https://eslint.org/docs/latest/rules/no-multi-assign\n */\n 'no-multi-assign': ['error'],\n /**\n * Disallow nested ternary expressions.\n *\n * @see https://eslint.org/docs/latest/rules/no-nested-ternary\n */\n 'no-nested-ternary': 'error',\n /**\n * Disallow dangling underscores in identifiers.\n *\n * @see https://eslint.org/docs/latest/rules/no-underscore-dangle\n */\n 'no-underscore-dangle': [\n 'error',\n {\n allow: ['__'],\n allowAfterThis: true,\n allowAfterSuper: true,\n enforceInMethodNames: false,\n },\n ],\n /**\n * Disallow ternary operators when simpler alternatives exist.\n *\n * @see https://eslint.org/docs/latest/rules/no-unneeded-ternary\n */\n 'no-unneeded-ternary': [\n 'error',\n {\n defaultAssignment: false,\n },\n ],\n /**\n * Require or disallow assignment operator shorthand where possible.\n *\n * @see https://eslint.org/docs/latest/rules/operator-assignment\n */\n 'operator-assignment': ['error', 'always'],\n /**\n * Disallow the use of `Math.pow` in favor of the `**` operator.\n *\n * @see https://eslint.org/docs/latest/rules/prefer-exponentiation-operator\n */\n 'prefer-exponentiation-operator': 'error',\n /**\n * Disallow using `Object.assign` with an object literal as the first argument and\n * prefer the use of object spread instead.\n *\n * @see https://eslint.org/docs/latest/rules/prefer-object-spread\n */\n 'prefer-object-spread': 'error',\n /**\n * Require or disallow Unicode byte order mark (BOM)\n *\n * @see https://eslint.org/docs/latest/rules/unicode-bom\n */\n 'unicode-bom': ['error', 'never'],\n /**\n * Disallow deleting variables.\n *\n * @see https://eslint.org/docs/latest/rules/no-delete-var\n */\n 'no-delete-var': 'error',\n /**\n * Disallow labels that share a name with a variable.\n *\n * @see https://eslint.org/docs/latest/rules/no-label-var\n */\n 'no-label-var': 'error',\n /**\n * Disallow variable declarations from shadowing variables declared in the outer scope.\n *\n * @see https://eslint.org/docs/latest/rules/no-shadow\n */\n 'no-shadow': 'error',\n /**\n * Disallow identifiers from shadowing restricted names.\n *\n * @see https://eslint.org/docs/latest/rules/no-shadow-restricted-names\n */\n 'no-shadow-restricted-names': 'error',\n /**\n * Disallow the use of undeclared variables unless mentioned in `/*global * /` comments.\n *\n * @see https://eslint.org/docs/latest/rules/no-undef\n */\n 'no-undef': 'error',\n /**\n * Disallow unused variables.\n *\n * @see https://eslint.org/docs/latest/rules/no-unused-vars\n */\n 'no-unused-vars': [\n 'error',\n {\n vars: 'all',\n args: 'after-used',\n ignoreRestSiblings: true,\n },\n ],\n /**\n * Disallow the use of variables before they are defined.\n *\n * @see https://eslint.org/docs/latest/rules/no-use-before-define\n */\n 'no-use-before-define': [\n 'error',\n {\n functions: true,\n classes: true,\n variables: true,\n },\n ],\n /**\n * Require braces around arrow function bodies.\n *\n * @see https://eslint.org/docs/latest/rules/arrow-body-style\n */\n 'arrow-body-style': [\n 'error',\n 'as-needed',\n {\n requireReturnForObjectLiteral: false,\n },\n ],\n /**\n * Require `super()` calls in constructors.\n *\n * @see https://eslint.org/docs/latest/rules/constructor-super\n */\n 'constructor-super': 'error',\n /**\n * Disallow reassigning class members.\n *\n * @see https://eslint.org/docs/latest/rules/no-class-assign\n */\n 'no-class-assign': 'error',\n /**\n * Disallow reassigning `const`, `using`, and `await using` variables.\n *\n * @see https://eslint.org/docs/latest/rules/no-const-assign\n */\n 'no-const-assign': 'error',\n /**\n * Disallow duplicate class members.\n *\n * @see https://eslint.org/docs/latest/rules/no-dupe-class-members\n */\n 'no-dupe-class-members': 'error',\n /**\n * Disallow specified names in exports.\n *\n * @see https://eslint.org/docs/latest/rules/no-restricted-exports\n */\n 'no-restricted-exports': [\n 'error',\n {\n restrictedNamedExports: ['default', 'then'],\n },\n ],\n /**\n * Disallow `this`/`super` before calling `super()` in constructors.\n *\n * @see https://eslint.org/docs/latest/rules/no-this-before-super\n */\n 'no-this-before-super': 'error',\n /**\n * Disallow unnecessary computed property keys in objects and classes.\n *\n * @see https://eslint.org/docs/latest/rules/no-useless-computed-key\n */\n 'no-useless-computed-key': 'error',\n /**\n * Disallow unnecessary constructors.\n *\n * @see https://eslint.org/docs/latest/rules/no-useless-constructor\n */\n 'no-useless-constructor': 'error',\n /**\n * Disallow renaming import, export, and destructured assignments to the same name.\n *\n * @see https://eslint.org/docs/latest/rules/no-useless-rename\n */\n 'no-useless-rename': [\n 'error',\n {\n ignoreDestructuring: false,\n ignoreImport: false,\n ignoreExport: false,\n },\n ],\n /**\n * Require `let` or `const` instead of `var`\n *\n * @see https://eslint.org/docs/latest/rules/no-var\n */\n 'no-var': 'error',\n /**\n * Require or disallow method and property shorthand syntax for object literals.\n *\n * @see https://eslint.org/docs/latest/rules/object-shorthand\n */\n 'object-shorthand': [\n 'error',\n 'always',\n {\n ignoreConstructors: false,\n avoidQuotes: true,\n },\n ],\n /**\n * Require using arrow functions for callbacks.\n *\n * @see https://eslint.org/docs/latest/rules/prefer-arrow-callback\n */\n 'prefer-arrow-callback': [\n 'error',\n {\n allowNamedFunctions: false,\n allowUnboundThis: true,\n },\n ],\n /**\n * Require `const` declarations for variables that are never reassigned after declared.\n *\n * @see https://eslint.org/docs/latest/rules/prefer-const\n */\n 'prefer-const': [\n 'error',\n {\n destructuring: 'any',\n ignoreReadBeforeAssign: true,\n },\n ],\n /**\n * Require destructuring from arrays and/or objects.\n *\n * @see https://eslint.org/docs/latest/rules/prefer-destructuring\n */\n 'prefer-destructuring': [\n 'error',\n {\n VariableDeclarator: {\n array: false,\n object: true,\n },\n AssignmentExpression: {\n array: true,\n object: false,\n },\n },\n {\n enforceForRenamedProperties: false,\n },\n ],\n /**\n * Disallow `parseInt()` and `Number.parseInt()` in favor of binary, octal, and\n * hexadecimal literals.\n *\n * @see https://eslint.org/docs/latest/rules/prefer-numeric-literals\n */\n 'prefer-numeric-literals': 'error',\n /**\n * Require rest parameters instead of `arguments`\n *\n * @see https://eslint.org/docs/latest/rules/prefer-rest-params\n */\n 'prefer-rest-params': 'error',\n /**\n * Require spread operators instead of `.apply()`\n *\n * @see https://eslint.org/docs/latest/rules/prefer-spread\n */\n 'prefer-spread': 'error',\n /**\n * Require template literals instead of string concatenation.\n *\n * @see https://eslint.org/docs/latest/rules/prefer-template\n */\n 'prefer-template': 'error',\n /**\n * Require generator functions to contain `yield`\n *\n * @see https://eslint.org/docs/latest/rules/require-yield\n */\n 'require-yield': 'error',\n /**\n * Require symbol descriptions.\n *\n * @see https://eslint.org/docs/latest/rules/symbol-description\n */\n 'symbol-description': 'error',\n /**\n * Ensure named imports correspond to a named export in the remote file.\n *\n * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.17.1/docs/rules/named.md\n */\n 'import/named': 'error',\n /**\n * Forbid any invalid exports, i.e. re-export of the same name.\n *\n * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.17.1/docs/rules/export.md\n */\n 'import/export': 'error',\n /**\n * Forbid use of exported name as identifier of default export.\n *\n * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.17.1/docs/rules/no-named-as-default.md\n */\n 'import/no-named-as-default': 'error',\n /**\n * Forbid use of exported name as property of default export.\n *\n * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.17.1/docs/rules/no-named-as-default-member.md\n */\n 'import/no-named-as-default-member': 'error',\n /**\n * Forbid the use of mutable exports with `var` or `let`.\n *\n * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.17.1/docs/rules/no-mutable-exports.md\n */\n 'import/no-mutable-exports': 'error',\n /**\n * Forbid AMD `require` and `define` calls.\n *\n * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.17.1/docs/rules/no-amd.md\n */\n 'import/no-amd': 'error',\n /**\n * Ensure all imports appear before other statements.\n *\n * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.17.1/docs/rules/first.md\n */\n 'import/first': 'error',\n /**\n * Forbid repeated import of the same module in multiple places.\n *\n * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.17.1/docs/rules/no-duplicates.md\n */\n 'import/no-duplicates': 'error',\n /**\n * Ensure consistent use of file extension within the import path.\n *\n * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.17.1/docs/rules/extensions.md\n */\n 'import/extensions': [\n 'error',\n 'ignorePackages',\n {\n js: 'never',\n mjs: 'never',\n jsx: 'never',\n },\n ],\n /**\n * Enforce a newline after import statements.\n *\n * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.17.1/docs/rules/newline-after-import.md\n */\n 'import/newline-after-import': 'error',\n /**\n * Forbid import of modules using absolute paths.\n *\n * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.17.1/docs/rules/no-absolute-path.md\n */\n 'import/no-absolute-path': 'error',\n /**\n * Forbid `require()` calls with expressions.\n *\n * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.17.1/docs/rules/no-dynamic-require.md\n */\n 'import/no-dynamic-require': 'error',\n /**\n * Forbid webpack loader syntax in imports.\n *\n * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.17.1/docs/rules/no-webpack-loader-syntax.md\n */\n 'import/no-webpack-loader-syntax': 'error',\n /**\n * Forbid named default exports.\n *\n * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.17.1/docs/rules/no-named-default.md\n */\n 'import/no-named-default': 'error',\n /**\n * Forbid a module from importing itself.\n *\n * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.17.1/docs/rules/no-self-import.md\n */\n 'import/no-self-import': 'error',\n /**\n * Forbid a module from importing a module with a dependency path back to itself.\n *\n * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.17.1/docs/rules/no-cycle.md\n */\n 'import/no-cycle': [\n 'error',\n {\n maxDepth: 4294967295,\n },\n ],\n} as const;\n","export const browser = {} as const;\n","export const jsdoc = {\n /**\n * Require valid values for JSDoc access tags.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-access.md\n */\n 'jsdoc/check-access': 'error',\n /**\n * Require JSDoc property names to be unique and complete.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-property-names.md\n */\n 'jsdoc/check-property-names': 'error',\n /**\n * Require JSDoc tags to have valid names.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-tag-names.md\n */\n 'jsdoc/check-tag-names': 'error',\n /**\n * Restrict `@implements` tags to classes.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/implements-on-classes.md\n */\n 'jsdoc/implements-on-classes': 'error',\n /**\n * Require every function parameter to be documented.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param.md\n */\n 'jsdoc/require-param': 'error',\n /**\n * Require documented parameters to have descriptions.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param-description.md\n */\n 'jsdoc/require-param-description': 'error',\n /**\n * Require documented parameters to have names.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param-name.md\n */\n 'jsdoc/require-param-name': 'error',\n /**\n * Require documented parameters to have types.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param-type.md\n */\n 'jsdoc/require-param-type': 'error',\n /**\n * Require properties to be documented when their type requires it.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-property.md\n */\n 'jsdoc/require-property': 'error',\n /**\n * Require documented properties to have descriptions.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-property-description.md\n */\n 'jsdoc/require-property-description': 'error',\n /**\n * Require documented properties to have names.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-property-name.md\n */\n 'jsdoc/require-property-name': 'error',\n /**\n * Require documented properties to have types.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-property-type.md\n */\n 'jsdoc/require-property-type': 'error',\n /**\n * Require return values to be documented.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-returns.md\n */\n 'jsdoc/require-returns': 'error',\n /**\n * Require documented return values to have types.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-returns-type.md\n */\n 'jsdoc/require-returns-type': 'error',\n} as const;\n","export const nextjs = {\n /**\n * Require Google Fonts to use an allowed display strategy.\n *\n * @see https://nextjs.org/docs/messages/google-font-display\n */\n 'nextjs/google-font-display': 'warn',\n /**\n * Require preconnect for Google Fonts.\n *\n * @see https://nextjs.org/docs/messages/google-font-preconnect\n */\n 'nextjs/google-font-preconnect': 'warn',\n /**\n * Require an ID for inline Next.js scripts.\n *\n * @see https://nextjs.org/docs/messages/inline-script-id\n */\n 'nextjs/inline-script-id': 'error',\n /**\n * Prefer `next/script` for Google Analytics.\n *\n * @see https://nextjs.org/docs/messages/next-script-for-ga\n */\n 'nextjs/next-script-for-ga': 'warn',\n /**\n * Disallow assigning to the `module` variable.\n *\n * @see https://nextjs.org/docs/messages/no-assign-module-variable\n */\n 'nextjs/no-assign-module-variable': 'error',\n /**\n * Disallow async client components.\n *\n * @see https://nextjs.org/docs/messages/no-async-client-component\n */\n 'nextjs/no-async-client-component': 'warn',\n /**\n * Restrict beforeInteractive scripts to the document.\n *\n * @see https://nextjs.org/docs/messages/no-before-interactive-script-outside-document\n */\n 'nextjs/no-before-interactive-script-outside-document': 'warn',\n /**\n * Disallow manually added stylesheet tags.\n *\n * @see https://nextjs.org/docs/messages/no-css-tags\n */\n 'nextjs/no-css-tags': 'warn',\n /**\n * Restrict document imports to the custom document file.\n *\n * @see https://nextjs.org/docs/messages/no-document-import-in-page\n */\n 'nextjs/no-document-import-in-page': 'error',\n /**\n * Disallow duplicate Head components.\n *\n * @see https://nextjs.org/docs/messages/no-duplicate-head\n */\n 'nextjs/no-duplicate-head': 'error',\n /**\n * Disallow the HTML head element in Next.js pages.\n *\n * @see https://nextjs.org/docs/messages/no-head-element\n */\n 'nextjs/no-head-element': 'warn',\n /**\n * Restrict document head imports to the custom document file.\n *\n * @see https://nextjs.org/docs/messages/no-head-import-in-document\n */\n 'nextjs/no-head-import-in-document': 'error',\n /**\n * Require Next.js routing instead of HTML links between pages.\n *\n * @see https://nextjs.org/docs/messages/no-html-link-for-pages\n */\n 'nextjs/no-html-link-for-pages': 'error',\n /**\n * Prefer `next/image` over HTML image elements.\n *\n * @see https://nextjs.org/docs/messages/no-img-element\n */\n 'nextjs/no-img-element': 'warn',\n /**\n * Restrict custom fonts to the custom document file.\n *\n * @see https://nextjs.org/docs/messages/no-page-custom-font\n */\n 'nextjs/no-page-custom-font': 'warn',\n /**\n * Disallow Script components in Head.\n *\n * @see https://nextjs.org/docs/messages/no-script-component-in-head\n */\n 'nextjs/no-script-component-in-head': 'error',\n /**\n * Restrict styled-jsx to supported files.\n *\n * @see https://nextjs.org/docs/messages/no-styled-jsx-in-document\n */\n 'nextjs/no-styled-jsx-in-document': 'warn',\n /**\n * Disallow synchronous script tags.\n *\n * @see https://nextjs.org/docs/messages/no-sync-scripts\n */\n 'nextjs/no-sync-scripts': 'error',\n /**\n * Restrict title tags in the custom document head.\n *\n * @see https://nextjs.org/docs/messages/no-title-in-document-head\n */\n 'nextjs/no-title-in-document-head': 'warn',\n /**\n * Catch misspelled Next.js data-fetching methods.\n *\n * @see https://nextjs.org/docs/messages/no-typos\n */\n 'nextjs/no-typos': 'warn',\n /**\n * Disallow deprecated Polyfill.io URLs.\n *\n * @see https://nextjs.org/docs/messages/no-unwanted-polyfillio\n */\n 'nextjs/no-unwanted-polyfillio': 'warn',\n} as const;\n","export const node = {\n /**\n * Disallow the assignment to `exports`\n *\n * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-exports-assign.md\n */\n 'node/no-exports-assign': 'error',\n /**\n * Require `require()` calls to be placed at top-level module scope.\n *\n * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/global-require.md\n */\n 'node/global-require': 'error',\n /**\n * Require error handling in callbacks.\n *\n * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/handle-callback-err.md\n */\n 'node/handle-callback-err': ['error', '^(err|error|\\\\w+Error)$'],\n /**\n * Disallow `require` calls to be mixed with regular variable declarations.\n *\n * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-mixed-requires.md\n */\n 'node/no-mixed-requires': 'error',\n /**\n * Disallow `new` operators with calls to `require`\n *\n * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-new-require.md\n */\n 'node/no-new-require': 'error',\n /**\n * Disallow string concatenation with `__dirname` and `__filename`\n *\n * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-path-concat.md\n */\n 'node/no-path-concat': 'error',\n /**\n * Disallow the use of `process.env`\n *\n * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-process-env.md\n */\n 'node/no-process-env': 'error',\n} as const;\n","export const react = {\n /**\n * Enforce all elements that require alternative text have meaningful information to\n * relay back to end user.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/alt-text.md\n */\n 'jsx-a11y/alt-text': 'error',\n /**\n * Enforce all anchors to contain accessible content.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/anchor-has-content.md\n */\n 'jsx-a11y/anchor-has-content': 'error',\n /**\n * Enforce all anchors are valid, navigable elements.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/anchor-is-valid.md\n */\n 'jsx-a11y/anchor-is-valid': 'error',\n /**\n * Enforce elements with aria-activedescendant are tabbable.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-activedescendant-has-tabindex.md\n */\n 'jsx-a11y/aria-activedescendant-has-tabindex': 'error',\n /**\n * Enforce all `aria-*` props are valid.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-props.md\n */\n 'jsx-a11y/aria-props': 'error',\n /**\n * Enforce ARIA state and property values are valid.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-proptypes.md\n */\n 'jsx-a11y/aria-proptypes': 'error',\n /**\n * Enforce that elements with ARIA roles must use a valid, non-abstract ARIA role.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-role.md\n */\n 'jsx-a11y/aria-role': 'error',\n /**\n * Enforce that elements that do not support ARIA roles, states, and properties do not\n * have those attributes.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-unsupported-elements.md\n */\n 'jsx-a11y/aria-unsupported-elements': 'error',\n /**\n * Enforce that autocomplete attributes are used correctly.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/autocomplete-valid.md\n */\n 'jsx-a11y/autocomplete-valid': 'error',\n /**\n * Enforce a clickable non-interactive element has at least one keyboard event listener.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/click-events-have-key-events.md\n */\n 'jsx-a11y/click-events-have-key-events': 'error',\n /**\n * Enforce interactive controls have an associated text label.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/control-has-associated-label.md\n */\n 'jsx-a11y/control-has-associated-label': 'error',\n /**\n * Enforce heading (`h1`, `h2`, etc) elements contain accessible content.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/heading-has-content.md\n */\n 'jsx-a11y/heading-has-content': 'error',\n /**\n * Enforce `<html>` element has `lang` prop.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/html-has-lang.md\n */\n 'jsx-a11y/html-has-lang': 'error',\n /**\n * Enforce iframe elements have a title attribute.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/iframe-has-title.md\n */\n 'jsx-a11y/iframe-has-title': 'error',\n /**\n * Enforce `<img>` alt prop does not contain the word \"image\", \"picture\", or \"photo\".\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/img-redundant-alt.md\n */\n 'jsx-a11y/img-redundant-alt': 'error',\n /**\n * Enforce that elements with interactive handlers like `onClick` must be focusable.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/interactive-supports-focus.md\n */\n 'jsx-a11y/interactive-supports-focus': [\n 'error',\n {\n tabbable: [\n 'button',\n 'checkbox',\n 'link',\n 'searchbox',\n 'spinbutton',\n 'switch',\n 'textbox',\n ],\n },\n ],\n /**\n * Enforce that a `label` tag has a text label and an associated control.\n *\n * @see 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': 'error',\n /**\n * Enforces that `<audio>` and `<video>` elements must have a `<track>` for captions.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/media-has-caption.md\n */\n 'jsx-a11y/media-has-caption': 'error',\n /**\n * Enforce that `onMouseOver`/`onMouseOut` are accompanied by `onFocus`/`onBlur` for\n * keyboard-only users.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/mouse-events-have-key-events.md\n */\n 'jsx-a11y/mouse-events-have-key-events': 'error',\n /**\n * Enforce that the `accessKey` prop is not used on any element to avoid complications\n * with keyboard commands used by a screen reader.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-access-key.md\n */\n 'jsx-a11y/no-access-key': 'error',\n /**\n * Enforce autoFocus prop is not used.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-autofocus.md\n */\n 'jsx-a11y/no-autofocus': 'error',\n /**\n * Enforce distracting elements are not used.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-distracting-elements.md\n */\n 'jsx-a11y/no-distracting-elements': 'error',\n /**\n * Interactive elements should not be assigned non-interactive roles.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-interactive-element-to-noninteractive-role.md\n */\n 'jsx-a11y/no-interactive-element-to-noninteractive-role': [\n 'error',\n {\n tr: ['none', 'presentation'],\n canvas: ['img'],\n },\n ],\n /**\n * Non-interactive elements should not be assigned mouse or keyboard event listeners.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-noninteractive-element-interactions.md\n */\n 'jsx-a11y/no-noninteractive-element-interactions': [\n 'error',\n {\n handlers: [\n 'onClick',\n 'onError',\n 'onLoad',\n 'onMouseDown',\n 'onMouseUp',\n 'onKeyPress',\n 'onKeyDown',\n 'onKeyUp',\n ],\n alert: ['onKeyUp', 'onKeyDown', 'onKeyPress'],\n body: ['onError', 'onLoad'],\n dialog: ['onKeyUp', 'onKeyDown', 'onKeyPress'],\n iframe: ['onError', 'onLoad'],\n img: ['onError', 'onLoad'],\n },\n ],\n /**\n * Non-interactive elements should not be assigned interactive roles.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-noninteractive-element-to-interactive-role.md\n */\n 'jsx-a11y/no-noninteractive-element-to-interactive-role': [\n 'error',\n {\n ul: ['listbox', 'menu', 'menubar', 'radiogroup', 'tablist', 'tree', 'treegrid'],\n ol: ['listbox', 'menu', 'menubar', 'radiogroup', 'tablist', 'tree', 'treegrid'],\n li: [\n 'menuitem',\n 'menuitemradio',\n 'menuitemcheckbox',\n 'option',\n 'row',\n 'tab',\n 'treeitem',\n ],\n table: ['grid'],\n td: ['gridcell'],\n fieldset: ['radiogroup', 'presentation'],\n },\n ],\n /**\n * `tabIndex` should only be declared on interactive elements.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-noninteractive-tabindex.md\n */\n 'jsx-a11y/no-noninteractive-tabindex': [\n 'error',\n {\n tags: [],\n roles: ['tabpanel'],\n allowExpressionValues: true,\n },\n ],\n /**\n * Enforce explicit role property is not the same as implicit/default role property on\n * element.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-redundant-roles.md\n */\n 'jsx-a11y/no-redundant-roles': 'error',\n /**\n * Enforce that non-interactive, visible elements (such as `<div>`) that have click\n * handlers use the role attribute.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-static-element-interactions.md\n */\n 'jsx-a11y/no-static-element-interactions': [\n 'error',\n {\n allowExpressionValues: true,\n handlers: [\n 'onClick',\n 'onMouseDown',\n 'onMouseUp',\n 'onKeyPress',\n 'onKeyDown',\n 'onKeyUp',\n ],\n },\n ],\n /**\n * Enforce that elements with ARIA roles must have all required attributes for that\n * role.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/role-has-required-aria-props.md\n */\n 'jsx-a11y/role-has-required-aria-props': 'error',\n /**\n * Enforce that elements with explicit or implicit roles defined contain only `aria-*`\n * properties supported by that `role`.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/role-supports-aria-props.md\n */\n 'jsx-a11y/role-supports-aria-props': 'error',\n /**\n * Enforce `scope` prop is only used on `<th>` elements.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/scope.md\n */\n 'jsx-a11y/scope': 'error',\n /**\n * Enforce `tabIndex` value is not greater than zero.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/tabindex-no-positive.md\n */\n 'jsx-a11y/tabindex-no-positive': 'error',\n /**\n * Disallow missing displayName in a React component definition.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/display-name.md\n */\n 'react/display-name': 2,\n /**\n * Disallow missing `key` props in iterators/collection literals.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-key.md\n */\n 'react/jsx-key': 2,\n /**\n * Disallow comments from being inserted as text nodes.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-comment-textnodes.md\n */\n 'react/jsx-no-comment-textnodes': 2,\n /**\n * Disallow duplicate properties in JSX.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-duplicate-props.md\n */\n 'react/jsx-no-duplicate-props': 2,\n /**\n * Disallow `target=\"_blank\"` attribute without `rel=\"noreferrer\"`\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-target-blank.md\n */\n 'react/jsx-no-target-blank': 2,\n /**\n * Disallow undeclared variables in JSX.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-undef.md\n */\n 'react/jsx-no-undef': 2,\n /**\n * Disallow passing of children as props.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-children-prop.md\n */\n 'react/no-children-prop': 2,\n /**\n * Disallow when a DOM element is using both children and dangerouslySetInnerHTML.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-danger-with-children.md\n */\n 'react/no-danger-with-children': 2,\n /**\n * Disallow direct mutation of this.state.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-direct-mutation-state.md\n */\n 'react/no-direct-mutation-state': 2,\n /**\n * Disallow usage of findDOMNode.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-find-dom-node.md\n */\n 'react/no-find-dom-node': 2,\n /**\n * Disallow usage of isMounted.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-is-mounted.md\n */\n 'react/no-is-mounted': 2,\n /**\n * Disallow usage of the return value of ReactDOM.render.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-render-return-value.md\n */\n 'react/no-render-return-value': 2,\n /**\n * Disallow using string references.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-string-refs.md\n */\n 'react/no-string-refs': 2,\n /**\n * Disallow unescaped HTML entities from appearing in markup.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unescaped-entities.md\n */\n 'react/no-unescaped-entities': 2,\n /**\n * Disallow usage of unknown DOM property.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unknown-property.md\n */\n 'react/no-unknown-property': 2,\n /**\n * Enforce ES5 or ES6 class for returning value in render function.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/require-render-return.md\n */\n 'react/require-render-return': 2,\n /**\n * Enforces the Rules of Hooks.\n *\n * @see https://react.dev/reference/rules/rules-of-hooks\n */\n 'react/rules-of-hooks': 'error',\n /**\n * Verifies the list of dependencies for Hooks like useEffect and similar.\n *\n * @see https://github.com/facebook/react/issues/14920\n */\n 'react/exhaustive-deps': 'warn',\n /**\n * Disallow new arrays passed directly as JSX props.\n *\n * @see https://github.com/cvazac/eslint-plugin-react-perf/blob/master/docs/rules/jsx-no-new-array-as-prop.md\n */\n 'react-perf/jsx-no-new-array-as-prop': 'error',\n /**\n * Disallow new functions passed directly as JSX props.\n *\n * @see https://github.com/cvazac/eslint-plugin-react-perf/blob/master/docs/rules/jsx-no-new-function-as-prop.md\n */\n 'react-perf/jsx-no-new-function-as-prop': 'error',\n /**\n * Disallow new objects passed directly as JSX props.\n *\n * @see https://github.com/cvazac/eslint-plugin-react-perf/blob/master/docs/rules/jsx-no-new-object-as-prop.md\n */\n 'react-perf/jsx-no-new-object-as-prop': 'error',\n /**\n * Allow React components to reference declarations defined later in the file.\n *\n * @see https://eslint.org/docs/latest/rules/no-use-before-define\n */\n 'no-use-before-define': 'off',\n} as const;\n","export const tests = {\n /**\n * Enforce a maximum number of classes per file.\n *\n * @see https://eslint.org/docs/latest/rules/max-classes-per-file\n */\n 'max-classes-per-file': 'off',\n /**\n * Disallow magic numbers.\n *\n * @see https://eslint.org/docs/latest/rules/no-magic-numbers\n */\n 'no-magic-numbers': 'off',\n /**\n * Ensure all imports appear before other statements.\n *\n * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.17.1/docs/rules/first.md\n */\n 'import/first': 'off',\n} as const;\n","export const typeAware = {\n /**\n * Disallow use of APIs marked as deprecated by TypeScript declarations.\n *\n * @see https://typescript-eslint.io/rules/no-deprecated\n */\n 'typescript/no-deprecated': 'error',\n /**\n * Require promises to be awaited, returned, or explicitly ignored.\n *\n * @see https://typescript-eslint.io/rules/no-floating-promises\n */\n 'typescript/no-floating-promises': 'error',\n /**\n * Disallow promises in places that expect synchronous values or callbacks.\n *\n * @see https://typescript-eslint.io/rules/no-misused-promises\n */\n 'typescript/no-misused-promises': 'error',\n} as const;\n","export const typescript = {\n /**\n * Disallow `@ts-<directive>` comments or require descriptions after directives.\n *\n * @see https://typescript-eslint.io/rules/ban-ts-comment\n */\n 'typescript/ban-ts-comment': [\n 'error',\n {\n 'ts-expect-error': 'allow-with-description',\n 'ts-ignore': 'allow-with-description',\n 'ts-nocheck': 'allow-with-description',\n 'ts-check': 'allow-with-description',\n },\n ],\n /**\n * Disallow `Array` constructors in favor of array literals.\n *\n * @see https://typescript-eslint.io/rules/no-array-constructor\n */\n 'typescript/no-array-constructor': 'error',\n /**\n * Disallow duplicate values in TypeScript enums.\n *\n * @see https://typescript-eslint.io/rules/no-duplicate-enum-values\n */\n 'typescript/no-duplicate-enum-values': 'error',\n /**\n * Disallow the empty object type.\n *\n * @see https://typescript-eslint.io/rules/no-empty-object-type\n */\n 'typescript/no-empty-object-type': 'error',\n /**\n * Disallow the `any` type.\n *\n * @see https://typescript-eslint.io/rules/no-explicit-any\n */\n 'typescript/no-explicit-any': 'error',\n /**\n * Disallow unnecessary non-null assertions.\n *\n * @see https://typescript-eslint.io/rules/no-extra-non-null-assertion\n */\n 'typescript/no-extra-non-null-assertion': 'error',\n /**\n * Disallow classes that are used as namespaces.\n *\n * @see https://typescript-eslint.io/rules/no-misused-new\n */\n 'typescript/no-misused-new': 'error',\n /**\n * Disallow TypeScript namespaces.\n *\n * @see https://typescript-eslint.io/rules/no-namespace\n */\n 'typescript/no-namespace': 'error',\n /**\n * Disallow non-null assertions after optional chains.\n *\n * @see https://typescript-eslint.io/rules/no-non-null-asserted-optional-chain\n */\n 'typescript/no-non-null-asserted-optional-chain': 'error',\n /**\n * Disallow CommonJS `require()` imports.\n *\n * @see https://typescript-eslint.io/rules/no-require-imports\n */\n 'typescript/no-require-imports': 'error',\n /**\n * Disallow assigning `this` to another variable.\n *\n * @see https://typescript-eslint.io/rules/no-this-alias\n */\n 'typescript/no-this-alias': 'error',\n /**\n * Disallow unnecessary type constraints.\n *\n * @see https://typescript-eslint.io/rules/no-unnecessary-type-constraint\n */\n 'typescript/no-unnecessary-type-constraint': 'error',\n /**\n * Disallow unsafe declaration merging.\n *\n * @see https://typescript-eslint.io/rules/no-unsafe-declaration-merging\n */\n 'typescript/no-unsafe-declaration-merging': 'error',\n /**\n * Disallow unsafe built-in function types.\n *\n * @see https://typescript-eslint.io/rules/no-unsafe-function-type\n */\n 'typescript/no-unsafe-function-type': 'error',\n /**\n * Disallow unused expressions.\n *\n * @see https://typescript-eslint.io/rules/no-unused-expressions\n */\n 'typescript/no-unused-expressions': 'error',\n /**\n * Disallow unused variables.\n *\n * @see https://typescript-eslint.io/rules/no-unused-vars\n */\n 'typescript/no-unused-vars': 'error',\n /**\n * Disallow object-wrapper types.\n *\n * @see https://typescript-eslint.io/rules/no-wrapper-object-types\n */\n 'typescript/no-wrapper-object-types': 'error',\n /**\n * Require `as const` assertions for literal types.\n *\n * @see https://typescript-eslint.io/rules/prefer-as-const\n */\n 'typescript/prefer-as-const': 'error',\n /**\n * Require `namespace` instead of `module` declarations.\n *\n * @see https://typescript-eslint.io/rules/prefer-namespace-keyword\n */\n 'typescript/prefer-namespace-keyword': 'error',\n /**\n * Disallow triple-slash reference directives.\n *\n * @see https://typescript-eslint.io/rules/triple-slash-reference\n */\n 'typescript/triple-slash-reference': 'error',\n /**\n * Enforce dot notation whenever possible.\n *\n * @see https://typescript-eslint.io/rules/dot-notation\n */\n 'typescript/dot-notation': 'error',\n /**\n * Let the TypeScript-specific rule enforce array constructor usage.\n *\n * @see https://eslint.org/docs/latest/rules/no-array-constructor\n */\n 'no-array-constructor': 'off',\n /**\n * Allow empty functions for interface implementations and placeholders.\n *\n * @see https://eslint.org/docs/latest/rules/no-empty-function\n */\n 'no-empty-function': 'off',\n /**\n * Let the TypeScript-specific rule enforce dot notation.\n *\n * @see https://eslint.org/docs/latest/rules/dot-notation\n */\n 'dot-notation': 'off',\n /**\n * Let the TypeScript-specific rule detect unused expressions.\n *\n * @see https://eslint.org/docs/latest/rules/no-unused-expressions\n */\n 'no-unused-expressions': 'off',\n /**\n * Let the TypeScript-specific rule detect unused variables.\n *\n * @see https://eslint.org/docs/latest/rules/no-unused-vars\n */\n 'no-unused-vars': 'off',\n /**\n * Allow constructors that TypeScript requires for parameter properties.\n *\n * @see https://eslint.org/docs/latest/rules/no-useless-constructor\n */\n 'no-useless-constructor': 'off',\n /**\n * Ensure consistent use of file extension within the import path.\n *\n * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.17.1/docs/rules/extensions.md\n */\n 'import/extensions': 'off',\n} as const;\n","export const vitest = {\n /**\n * Disallow focused tests committed with `.only`.\n *\n * @see 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 * Disallow disabled tests committed with `.skip`.\n *\n * @see 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 * Require unique test titles within a suite.\n *\n * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-identical-title.md\n */\n 'vitest/no-identical-title': 'error',\n /**\n * Disallow assertions that execute only in conditional branches.\n *\n * @see 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 * Disallow assertions outside a test or hook callback.\n *\n * @see 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 * Allow mock factories without explicit type parameters.\n *\n * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-mock-type-parameters.md\n */\n 'vitest/require-mock-type-parameters': 'off',\n /**\n * Validate assertion matchers and their arguments.\n *\n * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/valid-expect.md\n */\n 'vitest/valid-expect': 'error',\n} as const;\n","import globals from 'globals';\nimport type { ExtensionFragmentName } from './consts.js';\nimport { base, browser, jsdoc, node, react, tests, typescript } from './rules/index.js';\n\n/** Policy fragments used by the configuration factories and caller extensions. */\nexport const extensionFragments = {\n base: {\n globals: globals.es2023,\n rules: base,\n },\n browser: {\n globals: globals.browser,\n rules: browser,\n },\n jsdoc: {\n rules: jsdoc,\n },\n node: {\n globals: globals.node,\n rules: node,\n },\n react: {\n rules: react,\n },\n tests: {\n rules: tests,\n },\n typescript: {\n rules: typescript,\n },\n} as const satisfies Record<ExtensionFragmentName, object>;\n","import globals from 'globals';\nimport { DEFAULT_IGNORES, TEST_FILES, type TestConvention } from './consts.js';\nimport { extensionFragments } from './fragments.js';\nimport {\n nextjs as nextjsRules,\n typeAware as typeAwareRules,\n vitest as vitestRules,\n} from './rules/index.js';\nimport type {\n ConfigFragment,\n ConfigName,\n CreateConfigSettings,\n GeneratedConfig,\n GeneratedConfigOverride,\n ResolvedTestConfig,\n ResolveTestConfigOptions,\n ResolveConfigComponentsOptions,\n ResolveConfigComponentsResult,\n ResolveTestConfigComponentsOptions,\n CreateTestOverrideOptions,\n} from './types.js';\n\nconst mergeRules = (...fragments: (ConfigFragment | undefined)[]) =>\n fragments.reduce<Record<string, unknown>>((acc, fragment) => {\n Object.assign(acc, fragment?.rules);\n return acc;\n }, {});\n\nconst getConfig = (configs: ConfigName[]): ConfigName => {\n if (configs.length !== 1) {\n throw new Error(\n 'Exactly one environment config must be selected: \"node\" or \"browser\".',\n );\n }\n\n const [config] = configs;\n if (typeof config === 'undefined') {\n throw new Error(\n 'Exactly one environment config must be selected: \"node\" or \"browser\".',\n );\n }\n\n return config;\n};\n\nconst resolveTestFiles = (files: string | string[] | undefined): string[] => {\n if (typeof files === 'undefined') return [];\n if (Array.isArray(files)) return files.slice();\n if (Object.hasOwn(TEST_FILES, files))\n return TEST_FILES[files as TestConvention].slice();\n\n return [files];\n};\n\nconst resolveTestConfig = ({\n tests,\n productionConfig,\n productionTs,\n}: ResolveTestConfigOptions): ResolvedTestConfig | undefined => {\n if (!tests) return undefined;\n\n if (tests === true) {\n return {\n configs: [productionConfig],\n files: [...TEST_FILES.colocated, ...TEST_FILES.directory],\n framework: 'vitest',\n ts: productionTs,\n };\n }\n\n if (typeof tests === 'string') {\n return {\n configs: [productionConfig],\n files: TEST_FILES[tests].slice(),\n framework: 'vitest',\n ts: productionTs,\n };\n }\n\n return {\n configs: tests.configs ?? [productionConfig],\n files: resolveTestFiles(tests.files),\n framework: tests.framework || 'vitest',\n ts: tests.ts ?? productionTs,\n };\n};\n\nconst resolveTestConfigComponents = ({\n config,\n testConfig,\n tests,\n ts,\n}: ResolveTestConfigComponentsOptions) => {\n if (testConfig) {\n return {\n doingTestsSetup: true,\n testConfig,\n };\n }\n\n if (!tests) {\n return {\n doingTestsSetup: false,\n testConfig: undefined,\n };\n }\n\n return {\n doingTestsSetup: false,\n testConfig: resolveTestConfig({\n tests,\n productionConfig: config,\n productionTs: ts ?? false,\n }),\n };\n};\n\nconst resolveConfigComponents = (\n options: ResolveConfigComponentsOptions,\n): ResolveConfigComponentsResult => {\n const {\n configs,\n extensions,\n jsdoc,\n nextjs,\n react,\n ts = true,\n typeAware,\n baseFragment = extensionFragments.base,\n baseExtensionFragment: baseExtensionFragmentOption,\n } = options;\n\n const baseExtensionFragment = baseExtensionFragmentOption ?? extensions?.base;\n\n const config = getConfig(options.configs);\n\n const { doingTestsSetup, testConfig } = resolveTestConfigComponents({\n config,\n testConfig: options.testConfig,\n tests: options.tests,\n ts,\n });\n\n const fragments: ConfigFragment[] = [baseFragment, extensionFragments[config]];\n\n const plugins = ['import'];\n\n const configGlobals: Array<Record<string, boolean | string>> = [];\n\n if (configs.includes('node')) {\n plugins.push('node');\n }\n\n if (jsdoc) {\n fragments.push(extensionFragments.jsdoc);\n plugins.push('jsdoc');\n }\n\n if (ts) {\n fragments.push(extensionFragments.typescript);\n }\n\n if (typeAware) {\n fragments.push({ rules: typeAwareRules });\n }\n\n if (ts || typeAware) {\n plugins.push('typescript');\n }\n\n if (react) {\n fragments.push(extensionFragments.react);\n plugins.push('react', 'jsx-a11y', 'react-perf');\n }\n\n if (nextjs) {\n fragments.push({ rules: nextjsRules });\n plugins.push('nextjs');\n }\n\n if (testConfig?.framework === 'vitest') {\n plugins.push('vitest');\n if (doingTestsSetup) {\n fragments.push({ rules: vitestRules });\n configGlobals.push(globals.vitest);\n }\n }\n\n if (baseExtensionFragment) {\n fragments.push(baseExtensionFragment);\n }\n\n if (extensions?.[config]) {\n fragments.push(extensions[config]);\n }\n\n if (jsdoc && extensions?.jsdoc) {\n fragments.push(extensions.jsdoc);\n }\n\n if (ts && extensions?.typescript) {\n fragments.push(extensions.typescript);\n }\n\n if (react && extensions?.react) {\n fragments.push(extensions.react);\n }\n\n return {\n config,\n fragments,\n plugins,\n testConfig,\n configGlobals:\n configGlobals.length > 0 ? Object.assign({}, ...configGlobals) : undefined,\n };\n};\n\nconst createTestOverride = ({\n testConfig,\n extensions,\n}: CreateTestOverrideOptions): GeneratedConfigOverride => {\n const { config, fragments, configGlobals } = resolveConfigComponents({\n configs: testConfig.configs,\n extensions,\n testConfig,\n ts: testConfig.ts,\n baseFragment: extensionFragments.tests,\n baseExtensionFragment: extensions?.tests,\n });\n const rules = mergeRules(...fragments);\n\n if (testConfig.files.length === 0) {\n throw new Error('Custom test configuration requires at least one file glob.');\n }\n\n return {\n files: testConfig.files,\n globals: {\n ...extensionFragments[config].globals,\n ...configGlobals,\n },\n rules,\n };\n};\n\n/** Creates a native Oxlint configuration from one environment and optional policy layers. */\nexport const createConfig = (options: CreateConfigSettings): GeneratedConfig => {\n const { fragments, plugins, config, testConfig } = resolveConfigComponents(options);\n const { extensions, ignores, typeAware } = options;\n\n const rules = mergeRules(...fragments);\n\n return {\n globals: {\n ...extensionFragments.base.globals,\n ...extensionFragments[config].globals,\n },\n ignorePatterns: [...DEFAULT_IGNORES, ...(ignores || [])],\n options: typeAware ? { typeAware: true } : undefined,\n plugins,\n rules,\n overrides: testConfig ? [createTestOverride({ testConfig, extensions })] : undefined,\n };\n};\n","import { createConfig } from './createConfig.js';\nimport type { CreateNextjsConfigOptions } from './types.js';\n\nconst NEXTJS_IGNORES = ['.next/', 'out/', 'build/', 'next-env.d.ts'];\n\n/** Creates a native Oxlint configuration for a Next.js TypeScript project. */\nexport const createNextjsConfig = ({\n ignores = [],\n ...options\n}: CreateNextjsConfigOptions) =>\n createConfig({\n ...options,\n configs: ['node'],\n ignores: [...NEXTJS_IGNORES, ...ignores],\n nextjs: true,\n react: true,\n ts: true,\n });\n","import { createConfig } from './createConfig.js';\nimport type { CreateReactConfigOptions } from './types.js';\n\nexport { createConfig } from './createConfig.js';\nexport { createNextjsConfig } from './createNextjsConfig.js';\nexport { extensionFragments } from './fragments.js';\nexport type {\n ConfigFragment,\n ConfigName,\n CreateConfigOptions,\n CreateNextjsConfigOptions,\n CreateReactConfigOptions,\n ExtensionFragmentName,\n ExtensionFragments,\n GeneratedConfig,\n GeneratedConfigOverride,\n RuleSettings,\n TestConfigOptions,\n TestFramework,\n TestsOption,\n} from './types.js';\n\n/** Creates a native Oxlint configuration with React and JSX accessibility policy. */\nexport const createReactConfig = (options: CreateReactConfigOptions) =>\n createConfig({\n ...options,\n react: true,\n });\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["typeAware","typeAwareRules","nextjs","nextjsRules","vitestRules"],"sources":["../src/consts.ts","../src/rules/base.ts","../src/rules/browser.ts","../src/rules/jsdoc.ts","../src/rules/nextjs.ts","../src/rules/node.ts","../src/rules/react.ts","../src/rules/tests.ts","../src/rules/typeAware.ts","../src/rules/typescript.ts","../src/rules/vitest.ts","../src/fragments.ts","../src/createConfig.ts","../src/createNextjsConfig.ts"],"sourcesContent":["export const CONFIG_ENVS = ['browser', 'node'] as const;\nexport type ConfigEnv = (typeof CONFIG_ENVS)[number];\n\nexport const DEFAULT_IGNORES = ['coverage/', 'coverage-*/', 'dist/', 'node_modules/'];\n\nexport const TEST_FILES = {\n colocated: ['**/*.{test,spec}.{js,jsx,ts,tsx,mjs,cjs,mts,cts}'],\n directory: ['tests/**/*.{js,jsx,ts,tsx,mjs,cjs,mts,cts}'],\n} as const;\n\nexport const EXTENSION_FRAGMENT_NAMES = [\n 'base',\n 'browser',\n 'jsdoc',\n 'node',\n 'react',\n 'tests',\n 'typescript',\n] as const;\n\nexport type TestConvention = keyof typeof TEST_FILES;\n\nexport type ExtensionFragmentName = (typeof EXTENSION_FRAGMENT_NAMES)[number];\n","export const maxComplexity = 30;\nexport const noUnderscoreDangleOptions = {\n allow: ['__'],\n allowAfterThis: true,\n allowAfterSuper: true,\n enforceInMethodNames: false,\n};\nexport const noUnderscoreDangleRule = ['error', noUnderscoreDangleOptions] as const;\n\nexport const base = {\n /**\n * Enforce `return` statements in callbacks of array methods.\n *\n * @see https://eslint.org/docs/latest/rules/array-callback-return\n */\n 'array-callback-return': [\n 'error',\n {\n allowImplicit: true,\n },\n ],\n /**\n * Enforce the use of variables within the scope they are defined.\n *\n * @see https://eslint.org/docs/latest/rules/block-scoped-var\n */\n 'block-scoped-var': 'error',\n /**\n * Enforce a maximum cyclomatic complexity allowed in a program.\n *\n * @see https://eslint.org/docs/latest/rules/complexity\n */\n complexity: ['warn', maxComplexity],\n /**\n * Require `return` statements to either always or never specify values.\n *\n * @see https://eslint.org/docs/latest/rules/consistent-return\n */\n 'consistent-return': 'error',\n /**\n * Enforce consistent brace style for all control statements.\n *\n * @see https://eslint.org/docs/latest/rules/curly\n */\n curly: 'off',\n /**\n * Require `default` cases in `switch` statements.\n *\n * @see https://eslint.org/docs/latest/rules/default-case\n */\n 'default-case': [\n 'error',\n {\n commentPattern: '^no default$',\n },\n ],\n /**\n * Enforce `default` clauses in `switch` statements to be last.\n *\n * @see https://eslint.org/docs/latest/rules/default-case-last\n */\n 'default-case-last': 'error',\n /**\n * Enforce default parameters to be last.\n *\n * @see https://eslint.org/docs/latest/rules/default-param-last\n */\n 'default-param-last': 'error',\n /**\n * Enforce dot notation whenever possible.\n *\n * @see https://eslint.org/docs/latest/rules/dot-notation\n */\n 'dot-notation': [\n 'error',\n {\n allowKeywords: true,\n },\n ],\n /**\n * Require the use of `===` and `!==`\n *\n * @see https://eslint.org/docs/latest/rules/eqeqeq\n */\n eqeqeq: [\n 'error',\n 'always',\n {\n null: 'ignore',\n },\n ],\n /**\n * Require grouped accessor pairs in object literals and classes.\n *\n * @see https://eslint.org/docs/latest/rules/grouped-accessor-pairs\n */\n 'grouped-accessor-pairs': 'error',\n /**\n * Require `for-in` loops to include an `if` statement.\n *\n * @see https://eslint.org/docs/latest/rules/guard-for-in\n */\n 'guard-for-in': 'error',\n /**\n * Enforce a maximum number of classes per file.\n *\n * @see https://eslint.org/docs/latest/rules/max-classes-per-file\n */\n 'max-classes-per-file': ['error', 1],\n /**\n * Disallow the use of `alert`, `confirm`, and `prompt`\n *\n * @see https://eslint.org/docs/latest/rules/no-alert\n */\n 'no-alert': 'warn',\n /**\n * Disallow the use of `arguments.caller` or `arguments.callee`\n *\n * @see https://eslint.org/docs/latest/rules/no-caller\n */\n 'no-caller': 'error',\n /**\n * Disallow lexical declarations in case clauses.\n *\n * @see https://eslint.org/docs/latest/rules/no-case-declarations\n */\n 'no-case-declarations': 'error',\n /**\n * Disallow returning value from constructor.\n *\n * @see https://eslint.org/docs/latest/rules/no-constructor-return\n */\n 'no-constructor-return': 'error',\n /**\n * Disallow `else` blocks after `return` statements in `if` statements.\n *\n * @see https://eslint.org/docs/latest/rules/no-else-return\n */\n 'no-else-return': [\n 'error',\n {\n allowElseIf: false,\n },\n ],\n /**\n * Disallow empty functions.\n *\n * @see https://eslint.org/docs/latest/rules/no-empty-function\n */\n 'no-empty-function': [\n 'error',\n {\n allow: ['arrowFunctions', 'functions', 'methods'],\n },\n ],\n /**\n * Disallow empty destructuring patterns.\n *\n * @see https://eslint.org/docs/latest/rules/no-empty-pattern\n */\n 'no-empty-pattern': 'error',\n /**\n * Disallow the use of `eval()`\n *\n * @see https://eslint.org/docs/latest/rules/no-eval\n */\n 'no-eval': 'error',\n /**\n * Disallow extending native types.\n *\n * @see https://eslint.org/docs/latest/rules/no-extend-native\n */\n 'no-extend-native': 'error',\n /**\n * Disallow unnecessary calls to `.bind()`\n *\n * @see https://eslint.org/docs/latest/rules/no-extra-bind\n */\n 'no-extra-bind': 'error',\n /**\n * Disallow unnecessary labels.\n *\n * @see https://eslint.org/docs/latest/rules/no-extra-label\n */\n 'no-extra-label': 'error',\n /**\n * Disallow fallthrough of `case` statements.\n *\n * @see https://eslint.org/docs/latest/rules/no-fallthrough\n */\n 'no-fallthrough': 'error',\n /**\n * Disallow assignments to native objects or read-only global variables.\n *\n * @see https://eslint.org/docs/latest/rules/no-global-assign\n */\n 'no-global-assign': [\n 'error',\n {\n exceptions: [],\n },\n ],\n /**\n * Disallow the use of `eval()`-like methods.\n *\n * @see https://eslint.org/docs/latest/rules/no-implied-eval\n */\n 'no-implied-eval': 'error',\n /**\n * Disallow the use of the `__iterator__` property.\n *\n * @see https://eslint.org/docs/latest/rules/no-iterator\n */\n 'no-iterator': 'error',\n /**\n * Disallow labeled statements.\n *\n * @see https://eslint.org/docs/latest/rules/no-labels\n */\n 'no-labels': [\n 'error',\n {\n allowLoop: false,\n allowSwitch: false,\n },\n ],\n /**\n * Disallow unnecessary nested blocks.\n *\n * @see https://eslint.org/docs/latest/rules/no-lone-blocks\n */\n 'no-lone-blocks': 'error',\n /**\n * Disallow function declarations that contain unsafe references inside loop statements.\n *\n * @see https://eslint.org/docs/latest/rules/no-loop-func\n */\n 'no-loop-func': 'error',\n /**\n * Disallow magic numbers.\n *\n * @see https://eslint.org/docs/latest/rules/no-magic-numbers\n */\n 'no-magic-numbers': [\n 'error',\n {\n ignore: [0, 1, -1, 60, 100, 1000],\n ignoreArrayIndexes: true,\n enforceConst: false,\n detectObjects: false,\n },\n ],\n /**\n * Disallow multiline strings.\n *\n * @see https://eslint.org/docs/latest/rules/no-multi-str\n */\n 'no-multi-str': 'error',\n /**\n * Disallow `new` operators outside of assignments or comparisons.\n *\n * @see https://eslint.org/docs/latest/rules/no-new\n */\n 'no-new': 'error',\n /**\n * Disallow `new` operators with the `Function` object.\n *\n * @see https://eslint.org/docs/latest/rules/no-new-func\n */\n 'no-new-func': 'error',\n /**\n * Disallow `new` operators with the `String`, `Number`, and `Boolean` objects.\n *\n * @see https://eslint.org/docs/latest/rules/no-new-wrappers\n */\n 'no-new-wrappers': 'error',\n /**\n * Disallow `\\8` and `\\9` escape sequences in string literals.\n *\n * @see https://eslint.org/docs/latest/rules/no-nonoctal-decimal-escape\n */\n 'no-nonoctal-decimal-escape': 'error',\n /**\n * Disallow reassigning function parameters.\n *\n * @see https://eslint.org/docs/latest/rules/no-param-reassign\n */\n 'no-param-reassign': [\n 'error',\n {\n props: true,\n ignorePropertyModificationsFor: [\n 'acc',\n 'accumulator',\n 'e',\n 'ctx',\n 'context',\n 'req',\n 'request',\n 'res',\n 'response',\n '$scope',\n 'staticContext',\n 'state',\n 'ref',\n 'sacc',\n ],\n },\n ],\n /**\n * Disallow the use of the `__proto__` property.\n *\n * @see https://eslint.org/docs/latest/rules/no-proto\n */\n 'no-proto': 'error',\n /**\n * Disallow variable redeclaration.\n *\n * @see https://eslint.org/docs/latest/rules/no-redeclare\n */\n 'no-redeclare': 'error',\n /**\n * Disallow certain properties on certain objects.\n *\n * @see https://eslint.org/docs/latest/rules/no-restricted-properties\n */\n 'no-restricted-properties': [\n 'error',\n {\n object: 'arguments',\n property: 'callee',\n message: 'arguments.callee is deprecated',\n },\n {\n object: 'global',\n property: 'isFinite',\n message: 'Please use Number.isFinite instead',\n },\n {\n object: 'self',\n property: 'isFinite',\n message: 'Please use Number.isFinite instead',\n },\n {\n object: 'window',\n property: 'isFinite',\n message: 'Please use Number.isFinite instead',\n },\n {\n object: 'global',\n property: 'isNaN',\n message: 'Please use Number.isNaN instead',\n },\n {\n object: 'self',\n property: 'isNaN',\n message: 'Please use Number.isNaN instead',\n },\n {\n object: 'window',\n property: 'isNaN',\n message: 'Please use Number.isNaN instead',\n },\n {\n property: '__defineGetter__',\n message: 'Please use Object.defineProperty instead.',\n },\n {\n property: '__defineSetter__',\n message: 'Please use Object.defineProperty instead.',\n },\n {\n object: 'Math',\n property: 'pow',\n message: 'Use the exponentiation operator (**) instead.',\n },\n ],\n /**\n * Disallow assignment operators in `return` statements.\n *\n * @see https://eslint.org/docs/latest/rules/no-return-assign\n */\n 'no-return-assign': ['error', 'always'],\n /**\n * Disallow `javascript:` URLs.\n *\n * @see https://eslint.org/docs/latest/rules/no-script-url\n */\n 'no-script-url': 'error',\n /**\n * Disallow assignments where both sides are exactly the same.\n *\n * @see https://eslint.org/docs/latest/rules/no-self-assign\n */\n 'no-self-assign': [\n 'error',\n {\n props: true,\n },\n ],\n /**\n * Disallow comparisons where both sides are exactly the same.\n *\n * @see https://eslint.org/docs/latest/rules/no-self-compare\n */\n 'no-self-compare': 'error',\n /**\n * Disallow comma operators.\n *\n * @see https://eslint.org/docs/latest/rules/no-sequences\n */\n 'no-sequences': 'error',\n /**\n * Disallow throwing literals as exceptions.\n *\n * @see https://eslint.org/docs/latest/rules/no-throw-literal\n */\n 'no-throw-literal': 'error',\n /**\n * Disallow unmodified loop conditions.\n *\n * @see https://eslint.org/docs/latest/rules/no-unmodified-loop-condition\n */\n 'no-unmodified-loop-condition': 'error',\n /**\n * Disallow unused expressions.\n *\n * @see https://eslint.org/docs/latest/rules/no-unused-expressions\n */\n 'no-unused-expressions': [\n 'error',\n {\n allowShortCircuit: false,\n allowTernary: false,\n allowTaggedTemplates: false,\n },\n ],\n /**\n * Disallow unused labels.\n *\n * @see https://eslint.org/docs/latest/rules/no-unused-labels\n */\n 'no-unused-labels': 'error',\n /**\n * Disallow unnecessary calls to `.call()` and `.apply()`\n *\n * @see https://eslint.org/docs/latest/rules/no-useless-call\n */\n 'no-useless-call': 'error',\n /**\n * Disallow unnecessary `catch` clauses.\n *\n * @see https://eslint.org/docs/latest/rules/no-useless-catch\n */\n 'no-useless-catch': 'error',\n /**\n * Disallow unnecessary concatenation of literals or template literals.\n *\n * @see https://eslint.org/docs/latest/rules/no-useless-concat\n */\n 'no-useless-concat': 'error',\n /**\n * Allow escapes that may be unnecessary but improve regular expression readability.\n *\n * @see https://eslint.org/docs/latest/rules/no-useless-escape\n */\n 'no-useless-escape': 'off',\n /**\n * Disallow redundant return statements.\n *\n * @see https://eslint.org/docs/latest/rules/no-useless-return\n */\n 'no-useless-return': 'error',\n /**\n * Disallow `void` operators.\n *\n * @see https://eslint.org/docs/latest/rules/no-void\n */\n 'no-void': 'error',\n /**\n * Disallow `with` statements.\n *\n * @see https://eslint.org/docs/latest/rules/no-with\n */\n 'no-with': 'error',\n /**\n * Require using Error objects as Promise rejection reasons.\n *\n * @see https://eslint.org/docs/latest/rules/prefer-promise-reject-errors\n */\n 'prefer-promise-reject-errors': [\n 'error',\n {\n allowEmptyReject: true,\n },\n ],\n /**\n * Disallow use of the `RegExp` constructor in favor of regular expression literals.\n *\n * @see https://eslint.org/docs/latest/rules/prefer-regex-literals\n */\n 'prefer-regex-literals': [\n 'error',\n {\n disallowRedundantWrapping: true,\n },\n ],\n /**\n * Enforce the consistent use of the radix argument when using `parseInt()`\n *\n * @see https://eslint.org/docs/latest/rules/radix\n */\n radix: 'error',\n /**\n * Require `var` declarations be placed at the top of their containing scope.\n *\n * @see https://eslint.org/docs/latest/rules/vars-on-top\n */\n 'vars-on-top': 'error',\n /**\n * Require or disallow \"Yoda\" conditions.\n *\n * @see https://eslint.org/docs/latest/rules/yoda\n */\n yoda: 'error',\n /**\n * Enforce `for` loop update clause moving the counter in the right direction.\n *\n * @see https://eslint.org/docs/latest/rules/for-direction\n */\n 'for-direction': 'error',\n /**\n * Enforce `return` statements in getters.\n *\n * @see https://eslint.org/docs/latest/rules/getter-return\n */\n 'getter-return': [\n 'error',\n {\n allowImplicit: true,\n },\n ],\n /**\n * Disallow using an async function as a Promise executor.\n *\n * @see https://eslint.org/docs/latest/rules/no-async-promise-executor\n */\n 'no-async-promise-executor': 'error',\n /**\n * Disallow comparing against `-0`\n *\n * @see https://eslint.org/docs/latest/rules/no-compare-neg-zero\n */\n 'no-compare-neg-zero': 'error',\n /**\n * Disallow assignment operators in conditional expressions.\n *\n * @see https://eslint.org/docs/latest/rules/no-cond-assign\n */\n 'no-cond-assign': ['error', 'always'],\n /**\n * Disallow the use of `console`\n *\n * @see https://eslint.org/docs/latest/rules/no-console\n */\n 'no-console': 'warn',\n /**\n * Disallow control characters in regular expressions.\n *\n * @see https://eslint.org/docs/latest/rules/no-control-regex\n */\n 'no-control-regex': 'error',\n /**\n * Disallow the use of `debugger`\n *\n * @see https://eslint.org/docs/latest/rules/no-debugger\n */\n 'no-debugger': 'error',\n /**\n * Disallow duplicate conditions in if-else-if chains.\n *\n * @see https://eslint.org/docs/latest/rules/no-dupe-else-if\n */\n 'no-dupe-else-if': 'error',\n /**\n * Disallow duplicate keys in object literals.\n *\n * @see https://eslint.org/docs/latest/rules/no-dupe-keys\n */\n 'no-dupe-keys': 'error',\n /**\n * Disallow duplicate case labels.\n *\n * @see https://eslint.org/docs/latest/rules/no-duplicate-case\n */\n 'no-duplicate-case': 'error',\n /**\n * Disallow empty block statements.\n *\n * @see https://eslint.org/docs/latest/rules/no-empty\n */\n 'no-empty': 'error',\n /**\n * Disallow empty character classes in regular expressions.\n *\n * @see https://eslint.org/docs/latest/rules/no-empty-character-class\n */\n 'no-empty-character-class': 'error',\n /**\n * Disallow reassigning exceptions in `catch` clauses.\n *\n * @see https://eslint.org/docs/latest/rules/no-ex-assign\n */\n 'no-ex-assign': 'error',\n /**\n * Disallow unnecessary boolean casts.\n *\n * @see https://eslint.org/docs/latest/rules/no-extra-boolean-cast\n */\n 'no-extra-boolean-cast': 'error',\n /**\n * Disallow reassigning `function` declarations.\n *\n * @see https://eslint.org/docs/latest/rules/no-func-assign\n */\n 'no-func-assign': 'error',\n /**\n * Disallow assigning to imported bindings.\n *\n * @see https://eslint.org/docs/latest/rules/no-import-assign\n */\n 'no-import-assign': 'error',\n /**\n * Disallow variable or `function` declarations in nested blocks.\n *\n * @see https://eslint.org/docs/latest/rules/no-inner-declarations\n */\n 'no-inner-declarations': 'error',\n /**\n * Disallow invalid regular expression strings in `RegExp` constructors.\n *\n * @see https://eslint.org/docs/latest/rules/no-invalid-regexp\n */\n 'no-invalid-regexp': 'error',\n /**\n * Disallow irregular whitespace.\n *\n * @see https://eslint.org/docs/latest/rules/no-irregular-whitespace\n */\n 'no-irregular-whitespace': 'error',\n /**\n * Disallow literal numbers that lose precision.\n *\n * @see https://eslint.org/docs/latest/rules/no-loss-of-precision\n */\n 'no-loss-of-precision': 'error',\n /**\n * Disallow characters which are made with multiple code points in character class\n * syntax.\n *\n * @see https://eslint.org/docs/latest/rules/no-misleading-character-class\n */\n 'no-misleading-character-class': 'error',\n /**\n * Disallow calling global object properties as functions.\n *\n * @see https://eslint.org/docs/latest/rules/no-obj-calls\n */\n 'no-obj-calls': 'error',\n /**\n * Disallow returning values from Promise executor functions.\n *\n * @see https://eslint.org/docs/latest/rules/no-promise-executor-return\n */\n 'no-promise-executor-return': 'error',\n /**\n * Disallow calling some `Object.prototype` methods directly on objects.\n *\n * @see https://eslint.org/docs/latest/rules/no-prototype-builtins\n */\n 'no-prototype-builtins': 'error',\n /**\n * Disallow multiple spaces in regular expressions.\n *\n * @see https://eslint.org/docs/latest/rules/no-regex-spaces\n */\n 'no-regex-spaces': 'error',\n /**\n * Disallow returning values from setters.\n *\n * @see https://eslint.org/docs/latest/rules/no-setter-return\n */\n 'no-setter-return': 'error',\n /**\n * Disallow sparse arrays.\n *\n * @see https://eslint.org/docs/latest/rules/no-sparse-arrays\n */\n 'no-sparse-arrays': 'error',\n /**\n * Disallow template literal placeholder syntax in regular strings.\n *\n * @see https://eslint.org/docs/latest/rules/no-template-curly-in-string\n */\n 'no-template-curly-in-string': 'error',\n /**\n * Disallow confusing multiline expressions.\n *\n * @see https://eslint.org/docs/latest/rules/no-unexpected-multiline\n */\n 'no-unexpected-multiline': 'off',\n /**\n * Disallow unreachable code after `return`, `throw`, `continue`, and `break`\n * statements.\n *\n * @see https://eslint.org/docs/latest/rules/no-unreachable\n */\n 'no-unreachable': 'error',\n /**\n * Disallow loops with a body that allows only one iteration.\n *\n * @see https://eslint.org/docs/latest/rules/no-unreachable-loop\n */\n 'no-unreachable-loop': [\n 'error',\n {\n ignore: [],\n },\n ],\n /**\n * Disallow control flow statements in `finally` blocks.\n *\n * @see https://eslint.org/docs/latest/rules/no-unsafe-finally\n */\n 'no-unsafe-finally': 'error',\n /**\n * Disallow negating the left operand of relational operators.\n *\n * @see https://eslint.org/docs/latest/rules/no-unsafe-negation\n */\n 'no-unsafe-negation': 'error',\n /**\n * Disallow use of optional chaining in contexts where the `undefined` value is not\n * allowed.\n *\n * @see https://eslint.org/docs/latest/rules/no-unsafe-optional-chaining\n */\n 'no-unsafe-optional-chaining': [\n 'error',\n {\n disallowArithmeticOperators: true,\n },\n ],\n /**\n * Disallow useless backreferences in regular expressions.\n *\n * @see https://eslint.org/docs/latest/rules/no-useless-backreference\n */\n 'no-useless-backreference': 'error',\n /**\n * Require calls to `isNaN()` when checking for `NaN`\n *\n * @see https://eslint.org/docs/latest/rules/use-isnan\n */\n 'use-isnan': 'error',\n /**\n * Enforce comparing `typeof` expressions against valid strings.\n *\n * @see https://eslint.org/docs/latest/rules/valid-typeof\n */\n 'valid-typeof': [\n 'error',\n {\n requireStringLiterals: true,\n },\n ],\n /**\n * Require or disallow named `function` expressions.\n *\n * @see https://eslint.org/docs/latest/rules/func-names\n */\n 'func-names': 'warn',\n /**\n * Require constructor names to begin with a capital letter.\n *\n * @see https://eslint.org/docs/latest/rules/new-cap\n */\n 'new-cap': [\n 'error',\n {\n newIsCap: true,\n newIsCapExceptions: [],\n capIsNew: false,\n capIsNewExceptions: ['Immutable.Map', 'Immutable.Set', 'Immutable.List'],\n },\n ],\n /**\n * Disallow `Array` constructors.\n *\n * @see https://eslint.org/docs/latest/rules/no-array-constructor\n */\n 'no-array-constructor': 'error',\n /**\n * Disallow bitwise operators.\n *\n * @see https://eslint.org/docs/latest/rules/no-bitwise\n */\n 'no-bitwise': 'error',\n /**\n * Disallow `continue` statements.\n *\n * @see https://eslint.org/docs/latest/rules/no-continue\n */\n 'no-continue': 'error',\n /**\n * Disallow `if` statements as the only statement in `else` blocks.\n *\n * @see https://eslint.org/docs/latest/rules/no-lonely-if\n */\n 'no-lonely-if': 'error',\n /**\n * Disallow use of chained assignment expressions.\n *\n * @see https://eslint.org/docs/latest/rules/no-multi-assign\n */\n 'no-multi-assign': ['error'],\n /**\n * Disallow nested ternary expressions.\n *\n * @see https://eslint.org/docs/latest/rules/no-nested-ternary\n */\n 'no-nested-ternary': 'error',\n /**\n * Disallow dangling underscores in identifiers.\n *\n * @see https://eslint.org/docs/latest/rules/no-underscore-dangle\n */\n 'no-underscore-dangle': noUnderscoreDangleRule,\n /**\n * Disallow ternary operators when simpler alternatives exist.\n *\n * @see https://eslint.org/docs/latest/rules/no-unneeded-ternary\n */\n 'no-unneeded-ternary': [\n 'error',\n {\n defaultAssignment: false,\n },\n ],\n /**\n * Require or disallow assignment operator shorthand where possible.\n *\n * @see https://eslint.org/docs/latest/rules/operator-assignment\n */\n 'operator-assignment': ['error', 'always'],\n /**\n * Disallow the use of `Math.pow` in favor of the `**` operator.\n *\n * @see https://eslint.org/docs/latest/rules/prefer-exponentiation-operator\n */\n 'prefer-exponentiation-operator': 'error',\n /**\n * Disallow using `Object.assign` with an object literal as the first argument and\n * prefer the use of object spread instead.\n *\n * @see https://eslint.org/docs/latest/rules/prefer-object-spread\n */\n 'prefer-object-spread': 'error',\n /**\n * Require or disallow Unicode byte order mark (BOM)\n *\n * @see https://eslint.org/docs/latest/rules/unicode-bom\n */\n 'unicode-bom': ['error', 'never'],\n /**\n * Disallow deleting variables.\n *\n * @see https://eslint.org/docs/latest/rules/no-delete-var\n */\n 'no-delete-var': 'error',\n /**\n * Disallow labels that share a name with a variable.\n *\n * @see https://eslint.org/docs/latest/rules/no-label-var\n */\n 'no-label-var': 'error',\n /**\n * Disallow variable declarations from shadowing variables declared in the outer scope.\n *\n * @see https://eslint.org/docs/latest/rules/no-shadow\n */\n 'no-shadow': 'error',\n /**\n * Disallow identifiers from shadowing restricted names.\n *\n * @see https://eslint.org/docs/latest/rules/no-shadow-restricted-names\n */\n 'no-shadow-restricted-names': 'error',\n /**\n * Disallow the use of undeclared variables unless mentioned in `/*global * /` comments.\n *\n * @see https://eslint.org/docs/latest/rules/no-undef\n */\n 'no-undef': 'error',\n /**\n * Disallow unused variables.\n *\n * @see https://eslint.org/docs/latest/rules/no-unused-vars\n */\n 'no-unused-vars': [\n 'error',\n {\n vars: 'all',\n args: 'after-used',\n ignoreRestSiblings: true,\n },\n ],\n /**\n * Disallow the use of variables before they are defined.\n *\n * @see https://eslint.org/docs/latest/rules/no-use-before-define\n */\n 'no-use-before-define': [\n 'error',\n {\n functions: true,\n classes: true,\n variables: true,\n },\n ],\n /**\n * Require braces around arrow function bodies.\n *\n * @see https://eslint.org/docs/latest/rules/arrow-body-style\n */\n 'arrow-body-style': [\n 'error',\n 'as-needed',\n {\n requireReturnForObjectLiteral: false,\n },\n ],\n /**\n * Require `super()` calls in constructors.\n *\n * @see https://eslint.org/docs/latest/rules/constructor-super\n */\n 'constructor-super': 'error',\n /**\n * Disallow reassigning class members.\n *\n * @see https://eslint.org/docs/latest/rules/no-class-assign\n */\n 'no-class-assign': 'error',\n /**\n * Disallow reassigning `const`, `using`, and `await using` variables.\n *\n * @see https://eslint.org/docs/latest/rules/no-const-assign\n */\n 'no-const-assign': 'error',\n /**\n * Disallow duplicate class members.\n *\n * @see https://eslint.org/docs/latest/rules/no-dupe-class-members\n */\n 'no-dupe-class-members': 'error',\n /**\n * Disallow specified names in exports.\n *\n * @see https://eslint.org/docs/latest/rules/no-restricted-exports\n */\n 'no-restricted-exports': [\n 'error',\n {\n restrictedNamedExports: ['default', 'then'],\n },\n ],\n /**\n * Disallow `this`/`super` before calling `super()` in constructors.\n *\n * @see https://eslint.org/docs/latest/rules/no-this-before-super\n */\n 'no-this-before-super': 'error',\n /**\n * Disallow unnecessary computed property keys in objects and classes.\n *\n * @see https://eslint.org/docs/latest/rules/no-useless-computed-key\n */\n 'no-useless-computed-key': 'error',\n /**\n * Disallow unnecessary constructors.\n *\n * @see https://eslint.org/docs/latest/rules/no-useless-constructor\n */\n 'no-useless-constructor': 'error',\n /**\n * Disallow renaming import, export, and destructured assignments to the same name.\n *\n * @see https://eslint.org/docs/latest/rules/no-useless-rename\n */\n 'no-useless-rename': [\n 'error',\n {\n ignoreDestructuring: false,\n ignoreImport: false,\n ignoreExport: false,\n },\n ],\n /**\n * Require `let` or `const` instead of `var`\n *\n * @see https://eslint.org/docs/latest/rules/no-var\n */\n 'no-var': 'error',\n /**\n * Require or disallow method and property shorthand syntax for object literals.\n *\n * @see https://eslint.org/docs/latest/rules/object-shorthand\n */\n 'object-shorthand': [\n 'error',\n 'always',\n {\n ignoreConstructors: false,\n avoidQuotes: true,\n },\n ],\n /**\n * Require using arrow functions for callbacks.\n *\n * @see https://eslint.org/docs/latest/rules/prefer-arrow-callback\n */\n 'prefer-arrow-callback': [\n 'error',\n {\n allowNamedFunctions: false,\n allowUnboundThis: true,\n },\n ],\n /**\n * Require `const` declarations for variables that are never reassigned after declared.\n *\n * @see https://eslint.org/docs/latest/rules/prefer-const\n */\n 'prefer-const': [\n 'error',\n {\n destructuring: 'any',\n ignoreReadBeforeAssign: true,\n },\n ],\n /**\n * Require destructuring from arrays and/or objects.\n *\n * @see https://eslint.org/docs/latest/rules/prefer-destructuring\n */\n 'prefer-destructuring': [\n 'error',\n {\n VariableDeclarator: {\n array: false,\n object: true,\n },\n AssignmentExpression: {\n array: true,\n object: false,\n },\n },\n {\n enforceForRenamedProperties: false,\n },\n ],\n /**\n * Disallow `parseInt()` and `Number.parseInt()` in favor of binary, octal, and\n * hexadecimal literals.\n *\n * @see https://eslint.org/docs/latest/rules/prefer-numeric-literals\n */\n 'prefer-numeric-literals': 'error',\n /**\n * Require rest parameters instead of `arguments`\n *\n * @see https://eslint.org/docs/latest/rules/prefer-rest-params\n */\n 'prefer-rest-params': 'error',\n /**\n * Require spread operators instead of `.apply()`\n *\n * @see https://eslint.org/docs/latest/rules/prefer-spread\n */\n 'prefer-spread': 'error',\n /**\n * Require template literals instead of string concatenation.\n *\n * @see https://eslint.org/docs/latest/rules/prefer-template\n */\n 'prefer-template': 'error',\n /**\n * Require generator functions to contain `yield`\n *\n * @see https://eslint.org/docs/latest/rules/require-yield\n */\n 'require-yield': 'error',\n /**\n * Require symbol descriptions.\n *\n * @see https://eslint.org/docs/latest/rules/symbol-description\n */\n 'symbol-description': 'error',\n /**\n * Ensure named imports correspond to a named export in the remote file.\n *\n * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.17.1/docs/rules/named.md\n */\n 'import/named': 'error',\n /**\n * Forbid any invalid exports, i.e. re-export of the same name.\n *\n * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.17.1/docs/rules/export.md\n */\n 'import/export': 'error',\n /**\n * Forbid use of exported name as identifier of default export.\n *\n * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.17.1/docs/rules/no-named-as-default.md\n */\n 'import/no-named-as-default': 'error',\n /**\n * Forbid use of exported name as property of default export.\n *\n * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.17.1/docs/rules/no-named-as-default-member.md\n */\n 'import/no-named-as-default-member': 'error',\n /**\n * Forbid the use of mutable exports with `var` or `let`.\n *\n * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.17.1/docs/rules/no-mutable-exports.md\n */\n 'import/no-mutable-exports': 'error',\n /**\n * Forbid AMD `require` and `define` calls.\n *\n * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.17.1/docs/rules/no-amd.md\n */\n 'import/no-amd': 'error',\n /**\n * Ensure all imports appear before other statements.\n *\n * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.17.1/docs/rules/first.md\n */\n 'import/first': 'error',\n /**\n * Forbid repeated import of the same module in multiple places.\n *\n * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.17.1/docs/rules/no-duplicates.md\n */\n 'import/no-duplicates': 'error',\n /**\n * Ensure consistent use of file extension within the import path.\n *\n * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.17.1/docs/rules/extensions.md\n */\n 'import/extensions': [\n 'error',\n 'ignorePackages',\n {\n js: 'never',\n mjs: 'never',\n jsx: 'never',\n },\n ],\n /**\n * Enforce a newline after import statements.\n *\n * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.17.1/docs/rules/newline-after-import.md\n */\n 'import/newline-after-import': 'error',\n /**\n * Forbid import of modules using absolute paths.\n *\n * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.17.1/docs/rules/no-absolute-path.md\n */\n 'import/no-absolute-path': 'error',\n /**\n * Forbid `require()` calls with expressions.\n *\n * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.17.1/docs/rules/no-dynamic-require.md\n */\n 'import/no-dynamic-require': 'error',\n /**\n * Forbid webpack loader syntax in imports.\n *\n * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.17.1/docs/rules/no-webpack-loader-syntax.md\n */\n 'import/no-webpack-loader-syntax': 'error',\n /**\n * Forbid named default exports.\n *\n * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.17.1/docs/rules/no-named-default.md\n */\n 'import/no-named-default': 'error',\n /**\n * Forbid a module from importing itself.\n *\n * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.17.1/docs/rules/no-self-import.md\n */\n 'import/no-self-import': 'error',\n /**\n * Forbid a module from importing a module with a dependency path back to itself.\n *\n * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.17.1/docs/rules/no-cycle.md\n */\n 'import/no-cycle': [\n 'error',\n {\n maxDepth: 4294967295,\n },\n ],\n} as const;\n","export const browser = {} as const;\n","export const jsdoc = {\n /**\n * Require valid values for JSDoc access tags.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-access.md\n */\n 'jsdoc/check-access': 'error',\n /**\n * Require JSDoc property names to be unique and complete.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-property-names.md\n */\n 'jsdoc/check-property-names': 'error',\n /**\n * Require JSDoc tags to have valid names.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-tag-names.md\n */\n 'jsdoc/check-tag-names': 'error',\n /**\n * Restrict `@implements` tags to classes.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/implements-on-classes.md\n */\n 'jsdoc/implements-on-classes': 'error',\n /**\n * Require every function parameter to be documented.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param.md\n */\n 'jsdoc/require-param': 'error',\n /**\n * Require documented parameters to have descriptions.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param-description.md\n */\n 'jsdoc/require-param-description': 'error',\n /**\n * Require documented parameters to have names.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param-name.md\n */\n 'jsdoc/require-param-name': 'error',\n /**\n * Require documented parameters to have types.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param-type.md\n */\n 'jsdoc/require-param-type': 'error',\n /**\n * Require properties to be documented when their type requires it.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-property.md\n */\n 'jsdoc/require-property': 'error',\n /**\n * Require documented properties to have descriptions.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-property-description.md\n */\n 'jsdoc/require-property-description': 'error',\n /**\n * Require documented properties to have names.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-property-name.md\n */\n 'jsdoc/require-property-name': 'error',\n /**\n * Require documented properties to have types.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-property-type.md\n */\n 'jsdoc/require-property-type': 'error',\n /**\n * Require return values to be documented.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-returns.md\n */\n 'jsdoc/require-returns': 'error',\n /**\n * Require documented return values to have types.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-returns-type.md\n */\n 'jsdoc/require-returns-type': 'error',\n} as const;\n","export const nextjs = {\n /**\n * Require Google Fonts to use an allowed display strategy.\n *\n * @see https://nextjs.org/docs/messages/google-font-display\n */\n 'nextjs/google-font-display': 'warn',\n /**\n * Require preconnect for Google Fonts.\n *\n * @see https://nextjs.org/docs/messages/google-font-preconnect\n */\n 'nextjs/google-font-preconnect': 'warn',\n /**\n * Require an ID for inline Next.js scripts.\n *\n * @see https://nextjs.org/docs/messages/inline-script-id\n */\n 'nextjs/inline-script-id': 'error',\n /**\n * Prefer `next/script` for Google Analytics.\n *\n * @see https://nextjs.org/docs/messages/next-script-for-ga\n */\n 'nextjs/next-script-for-ga': 'warn',\n /**\n * Disallow assigning to the `module` variable.\n *\n * @see https://nextjs.org/docs/messages/no-assign-module-variable\n */\n 'nextjs/no-assign-module-variable': 'error',\n /**\n * Disallow async client components.\n *\n * @see https://nextjs.org/docs/messages/no-async-client-component\n */\n 'nextjs/no-async-client-component': 'warn',\n /**\n * Restrict beforeInteractive scripts to the document.\n *\n * @see https://nextjs.org/docs/messages/no-before-interactive-script-outside-document\n */\n 'nextjs/no-before-interactive-script-outside-document': 'warn',\n /**\n * Disallow manually added stylesheet tags.\n *\n * @see https://nextjs.org/docs/messages/no-css-tags\n */\n 'nextjs/no-css-tags': 'warn',\n /**\n * Restrict document imports to the custom document file.\n *\n * @see https://nextjs.org/docs/messages/no-document-import-in-page\n */\n 'nextjs/no-document-import-in-page': 'error',\n /**\n * Disallow duplicate Head components.\n *\n * @see https://nextjs.org/docs/messages/no-duplicate-head\n */\n 'nextjs/no-duplicate-head': 'error',\n /**\n * Disallow the HTML head element in Next.js pages.\n *\n * @see https://nextjs.org/docs/messages/no-head-element\n */\n 'nextjs/no-head-element': 'warn',\n /**\n * Restrict document head imports to the custom document file.\n *\n * @see https://nextjs.org/docs/messages/no-head-import-in-document\n */\n 'nextjs/no-head-import-in-document': 'error',\n /**\n * Require Next.js routing instead of HTML links between pages.\n *\n * @see https://nextjs.org/docs/messages/no-html-link-for-pages\n */\n 'nextjs/no-html-link-for-pages': 'error',\n /**\n * Prefer `next/image` over HTML image elements.\n *\n * @see https://nextjs.org/docs/messages/no-img-element\n */\n 'nextjs/no-img-element': 'warn',\n /**\n * Restrict custom fonts to the custom document file.\n *\n * @see https://nextjs.org/docs/messages/no-page-custom-font\n */\n 'nextjs/no-page-custom-font': 'warn',\n /**\n * Disallow Script components in Head.\n *\n * @see https://nextjs.org/docs/messages/no-script-component-in-head\n */\n 'nextjs/no-script-component-in-head': 'error',\n /**\n * Restrict styled-jsx to supported files.\n *\n * @see https://nextjs.org/docs/messages/no-styled-jsx-in-document\n */\n 'nextjs/no-styled-jsx-in-document': 'warn',\n /**\n * Disallow synchronous script tags.\n *\n * @see https://nextjs.org/docs/messages/no-sync-scripts\n */\n 'nextjs/no-sync-scripts': 'error',\n /**\n * Restrict title tags in the custom document head.\n *\n * @see https://nextjs.org/docs/messages/no-title-in-document-head\n */\n 'nextjs/no-title-in-document-head': 'warn',\n /**\n * Catch misspelled Next.js data-fetching methods.\n *\n * @see https://nextjs.org/docs/messages/no-typos\n */\n 'nextjs/no-typos': 'warn',\n /**\n * Disallow deprecated Polyfill.io URLs.\n *\n * @see https://nextjs.org/docs/messages/no-unwanted-polyfillio\n */\n 'nextjs/no-unwanted-polyfillio': 'warn',\n} as const;\n","export const node = {\n /**\n * Disallow the assignment to `exports`\n *\n * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-exports-assign.md\n */\n 'node/no-exports-assign': 'error',\n /**\n * Require `require()` calls to be placed at top-level module scope.\n *\n * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/global-require.md\n */\n 'node/global-require': 'error',\n /**\n * Require error handling in callbacks.\n *\n * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/handle-callback-err.md\n */\n 'node/handle-callback-err': ['error', '^(err|error|\\\\w+Error)$'],\n /**\n * Disallow `require` calls to be mixed with regular variable declarations.\n *\n * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-mixed-requires.md\n */\n 'node/no-mixed-requires': 'error',\n /**\n * Disallow `new` operators with calls to `require`\n *\n * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-new-require.md\n */\n 'node/no-new-require': 'error',\n /**\n * Disallow string concatenation with `__dirname` and `__filename`\n *\n * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-path-concat.md\n */\n 'node/no-path-concat': 'error',\n /**\n * Disallow the use of `process.env`\n *\n * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-process-env.md\n */\n 'node/no-process-env': 'error',\n} as const;\n","export const react = {\n /**\n * Enforce all elements that require alternative text have meaningful information to\n * relay back to end user.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/alt-text.md\n */\n 'jsx-a11y/alt-text': 'error',\n /**\n * Enforce all anchors to contain accessible content.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/anchor-has-content.md\n */\n 'jsx-a11y/anchor-has-content': 'error',\n /**\n * Enforce all anchors are valid, navigable elements.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/anchor-is-valid.md\n */\n 'jsx-a11y/anchor-is-valid': 'error',\n /**\n * Enforce elements with aria-activedescendant are tabbable.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-activedescendant-has-tabindex.md\n */\n 'jsx-a11y/aria-activedescendant-has-tabindex': 'error',\n /**\n * Enforce all `aria-*` props are valid.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-props.md\n */\n 'jsx-a11y/aria-props': 'error',\n /**\n * Enforce ARIA state and property values are valid.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-proptypes.md\n */\n 'jsx-a11y/aria-proptypes': 'error',\n /**\n * Enforce that elements with ARIA roles must use a valid, non-abstract ARIA role.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-role.md\n */\n 'jsx-a11y/aria-role': 'error',\n /**\n * Enforce that elements that do not support ARIA roles, states, and properties do not\n * have those attributes.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-unsupported-elements.md\n */\n 'jsx-a11y/aria-unsupported-elements': 'error',\n /**\n * Enforce that autocomplete attributes are used correctly.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/autocomplete-valid.md\n */\n 'jsx-a11y/autocomplete-valid': 'error',\n /**\n * Enforce a clickable non-interactive element has at least one keyboard event listener.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/click-events-have-key-events.md\n */\n 'jsx-a11y/click-events-have-key-events': 'error',\n /**\n * Enforce interactive controls have an associated text label.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/control-has-associated-label.md\n */\n 'jsx-a11y/control-has-associated-label': 'error',\n /**\n * Enforce heading (`h1`, `h2`, etc) elements contain accessible content.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/heading-has-content.md\n */\n 'jsx-a11y/heading-has-content': 'error',\n /**\n * Enforce `<html>` element has `lang` prop.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/html-has-lang.md\n */\n 'jsx-a11y/html-has-lang': 'error',\n /**\n * Enforce iframe elements have a title attribute.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/iframe-has-title.md\n */\n 'jsx-a11y/iframe-has-title': 'error',\n /**\n * Enforce `<img>` alt prop does not contain the word \"image\", \"picture\", or \"photo\".\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/img-redundant-alt.md\n */\n 'jsx-a11y/img-redundant-alt': 'error',\n /**\n * Enforce that elements with interactive handlers like `onClick` must be focusable.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/interactive-supports-focus.md\n */\n 'jsx-a11y/interactive-supports-focus': [\n 'error',\n {\n tabbable: [\n 'button',\n 'checkbox',\n 'link',\n 'searchbox',\n 'spinbutton',\n 'switch',\n 'textbox',\n ],\n },\n ],\n /**\n * Enforce that a `label` tag has a text label and an associated control.\n *\n * @see 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': 'error',\n /**\n * Enforces that `<audio>` and `<video>` elements must have a `<track>` for captions.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/media-has-caption.md\n */\n 'jsx-a11y/media-has-caption': 'error',\n /**\n * Enforce that `onMouseOver`/`onMouseOut` are accompanied by `onFocus`/`onBlur` for\n * keyboard-only users.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/mouse-events-have-key-events.md\n */\n 'jsx-a11y/mouse-events-have-key-events': 'error',\n /**\n * Enforce that the `accessKey` prop is not used on any element to avoid complications\n * with keyboard commands used by a screen reader.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-access-key.md\n */\n 'jsx-a11y/no-access-key': 'error',\n /**\n * Enforce autoFocus prop is not used.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-autofocus.md\n */\n 'jsx-a11y/no-autofocus': 'error',\n /**\n * Enforce distracting elements are not used.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-distracting-elements.md\n */\n 'jsx-a11y/no-distracting-elements': 'error',\n /**\n * Interactive elements should not be assigned non-interactive roles.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-interactive-element-to-noninteractive-role.md\n */\n 'jsx-a11y/no-interactive-element-to-noninteractive-role': [\n 'error',\n {\n tr: ['none', 'presentation'],\n canvas: ['img'],\n },\n ],\n /**\n * Non-interactive elements should not be assigned mouse or keyboard event listeners.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-noninteractive-element-interactions.md\n */\n 'jsx-a11y/no-noninteractive-element-interactions': [\n 'error',\n {\n handlers: [\n 'onClick',\n 'onError',\n 'onLoad',\n 'onMouseDown',\n 'onMouseUp',\n 'onKeyPress',\n 'onKeyDown',\n 'onKeyUp',\n ],\n alert: ['onKeyUp', 'onKeyDown', 'onKeyPress'],\n body: ['onError', 'onLoad'],\n dialog: ['onKeyUp', 'onKeyDown', 'onKeyPress'],\n iframe: ['onError', 'onLoad'],\n img: ['onError', 'onLoad'],\n },\n ],\n /**\n * Non-interactive elements should not be assigned interactive roles.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-noninteractive-element-to-interactive-role.md\n */\n 'jsx-a11y/no-noninteractive-element-to-interactive-role': [\n 'error',\n {\n ul: ['listbox', 'menu', 'menubar', 'radiogroup', 'tablist', 'tree', 'treegrid'],\n ol: ['listbox', 'menu', 'menubar', 'radiogroup', 'tablist', 'tree', 'treegrid'],\n li: [\n 'menuitem',\n 'menuitemradio',\n 'menuitemcheckbox',\n 'option',\n 'row',\n 'tab',\n 'treeitem',\n ],\n table: ['grid'],\n td: ['gridcell'],\n fieldset: ['radiogroup', 'presentation'],\n },\n ],\n /**\n * `tabIndex` should only be declared on interactive elements.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-noninteractive-tabindex.md\n */\n 'jsx-a11y/no-noninteractive-tabindex': [\n 'error',\n {\n tags: [],\n roles: ['tabpanel'],\n allowExpressionValues: true,\n },\n ],\n /**\n * Enforce explicit role property is not the same as implicit/default role property on\n * element.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-redundant-roles.md\n */\n 'jsx-a11y/no-redundant-roles': 'error',\n /**\n * Enforce that non-interactive, visible elements (such as `<div>`) that have click\n * handlers use the role attribute.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-static-element-interactions.md\n */\n 'jsx-a11y/no-static-element-interactions': [\n 'error',\n {\n allowExpressionValues: true,\n handlers: [\n 'onClick',\n 'onMouseDown',\n 'onMouseUp',\n 'onKeyPress',\n 'onKeyDown',\n 'onKeyUp',\n ],\n },\n ],\n /**\n * Enforce that elements with ARIA roles must have all required attributes for that\n * role.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/role-has-required-aria-props.md\n */\n 'jsx-a11y/role-has-required-aria-props': 'error',\n /**\n * Enforce that elements with explicit or implicit roles defined contain only `aria-*`\n * properties supported by that `role`.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/role-supports-aria-props.md\n */\n 'jsx-a11y/role-supports-aria-props': 'error',\n /**\n * Enforce `scope` prop is only used on `<th>` elements.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/scope.md\n */\n 'jsx-a11y/scope': 'error',\n /**\n * Enforce `tabIndex` value is not greater than zero.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/tabindex-no-positive.md\n */\n 'jsx-a11y/tabindex-no-positive': 'error',\n /**\n * Disallow missing displayName in a React component definition.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/display-name.md\n */\n 'react/display-name': 2,\n /**\n * Disallow missing `key` props in iterators/collection literals.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-key.md\n */\n 'react/jsx-key': 2,\n /**\n * Disallow comments from being inserted as text nodes.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-comment-textnodes.md\n */\n 'react/jsx-no-comment-textnodes': 2,\n /**\n * Disallow duplicate properties in JSX.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-duplicate-props.md\n */\n 'react/jsx-no-duplicate-props': 2,\n /**\n * Disallow `target=\"_blank\"` attribute without `rel=\"noreferrer\"`\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-target-blank.md\n */\n 'react/jsx-no-target-blank': 2,\n /**\n * Disallow undeclared variables in JSX.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-undef.md\n */\n 'react/jsx-no-undef': 2,\n /**\n * Disallow passing of children as props.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-children-prop.md\n */\n 'react/no-children-prop': 2,\n /**\n * Disallow when a DOM element is using both children and dangerouslySetInnerHTML.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-danger-with-children.md\n */\n 'react/no-danger-with-children': 2,\n /**\n * Disallow direct mutation of this.state.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-direct-mutation-state.md\n */\n 'react/no-direct-mutation-state': 2,\n /**\n * Disallow usage of findDOMNode.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-find-dom-node.md\n */\n 'react/no-find-dom-node': 2,\n /**\n * Disallow usage of isMounted.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-is-mounted.md\n */\n 'react/no-is-mounted': 2,\n /**\n * Disallow usage of the return value of ReactDOM.render.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-render-return-value.md\n */\n 'react/no-render-return-value': 2,\n /**\n * Disallow using string references.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-string-refs.md\n */\n 'react/no-string-refs': 2,\n /**\n * Disallow unescaped HTML entities from appearing in markup.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unescaped-entities.md\n */\n 'react/no-unescaped-entities': 2,\n /**\n * Disallow usage of unknown DOM property.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unknown-property.md\n */\n 'react/no-unknown-property': 2,\n /**\n * Enforce ES5 or ES6 class for returning value in render function.\n *\n * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/require-render-return.md\n */\n 'react/require-render-return': 2,\n /**\n * Enforces the Rules of Hooks.\n *\n * @see https://react.dev/reference/rules/rules-of-hooks\n */\n 'react/rules-of-hooks': 'error',\n /**\n * Verifies the list of dependencies for Hooks like useEffect and similar.\n *\n * @see https://github.com/facebook/react/issues/14920\n */\n 'react/exhaustive-deps': 'warn',\n /**\n * Disallow new arrays passed directly as JSX props.\n *\n * @see https://github.com/cvazac/eslint-plugin-react-perf/blob/master/docs/rules/jsx-no-new-array-as-prop.md\n */\n 'react-perf/jsx-no-new-array-as-prop': 'error',\n /**\n * Disallow new functions passed directly as JSX props.\n *\n * @see https://github.com/cvazac/eslint-plugin-react-perf/blob/master/docs/rules/jsx-no-new-function-as-prop.md\n */\n 'react-perf/jsx-no-new-function-as-prop': 'error',\n /**\n * Disallow new objects passed directly as JSX props.\n *\n * @see https://github.com/cvazac/eslint-plugin-react-perf/blob/master/docs/rules/jsx-no-new-object-as-prop.md\n */\n 'react-perf/jsx-no-new-object-as-prop': 'error',\n /**\n * Allow React components to reference declarations defined later in the file.\n *\n * @see https://eslint.org/docs/latest/rules/no-use-before-define\n */\n 'no-use-before-define': 'off',\n} as const;\n","export const tests = {\n /**\n * Enforce a maximum number of classes per file.\n *\n * @see https://eslint.org/docs/latest/rules/max-classes-per-file\n */\n 'max-classes-per-file': 'off',\n /**\n * Disallow magic numbers.\n *\n * @see https://eslint.org/docs/latest/rules/no-magic-numbers\n */\n 'no-magic-numbers': 'off',\n /**\n * Ensure all imports appear before other statements.\n *\n * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.17.1/docs/rules/first.md\n */\n 'import/first': 'off',\n} as const;\n","export const typeAware = {\n /**\n * Disallow use of APIs marked as deprecated by TypeScript declarations.\n *\n * @see https://typescript-eslint.io/rules/no-deprecated\n */\n 'typescript/no-deprecated': 'error',\n /**\n * Require promises to be awaited, returned, or explicitly ignored.\n *\n * @see https://typescript-eslint.io/rules/no-floating-promises\n */\n 'typescript/no-floating-promises': 'error',\n /**\n * Disallow promises in places that expect synchronous values or callbacks.\n *\n * @see https://typescript-eslint.io/rules/no-misused-promises\n */\n 'typescript/no-misused-promises': 'error',\n} as const;\n","export const typescript = {\n /**\n * Disallow `@ts-<directive>` comments or require descriptions after directives.\n *\n * @see https://typescript-eslint.io/rules/ban-ts-comment\n */\n 'typescript/ban-ts-comment': [\n 'error',\n {\n 'ts-expect-error': 'allow-with-description',\n 'ts-ignore': 'allow-with-description',\n 'ts-nocheck': 'allow-with-description',\n 'ts-check': 'allow-with-description',\n },\n ],\n /**\n * Disallow `Array` constructors in favor of array literals.\n *\n * @see https://typescript-eslint.io/rules/no-array-constructor\n */\n 'typescript/no-array-constructor': 'error',\n /**\n * Disallow duplicate values in TypeScript enums.\n *\n * @see https://typescript-eslint.io/rules/no-duplicate-enum-values\n */\n 'typescript/no-duplicate-enum-values': 'error',\n /**\n * Disallow the empty object type.\n *\n * @see https://typescript-eslint.io/rules/no-empty-object-type\n */\n 'typescript/no-empty-object-type': 'error',\n /**\n * Disallow the `any` type.\n *\n * @see https://typescript-eslint.io/rules/no-explicit-any\n */\n 'typescript/no-explicit-any': 'error',\n /**\n * Disallow unnecessary non-null assertions.\n *\n * @see https://typescript-eslint.io/rules/no-extra-non-null-assertion\n */\n 'typescript/no-extra-non-null-assertion': 'error',\n /**\n * Disallow classes that are used as namespaces.\n *\n * @see https://typescript-eslint.io/rules/no-misused-new\n */\n 'typescript/no-misused-new': 'error',\n /**\n * Disallow TypeScript namespaces.\n *\n * @see https://typescript-eslint.io/rules/no-namespace\n */\n 'typescript/no-namespace': 'error',\n /**\n * Disallow non-null assertions after optional chains.\n *\n * @see https://typescript-eslint.io/rules/no-non-null-asserted-optional-chain\n */\n 'typescript/no-non-null-asserted-optional-chain': 'error',\n /**\n * Disallow CommonJS `require()` imports.\n *\n * @see https://typescript-eslint.io/rules/no-require-imports\n */\n 'typescript/no-require-imports': 'error',\n /**\n * Disallow assigning `this` to another variable.\n *\n * @see https://typescript-eslint.io/rules/no-this-alias\n */\n 'typescript/no-this-alias': 'error',\n /**\n * Disallow unnecessary type constraints.\n *\n * @see https://typescript-eslint.io/rules/no-unnecessary-type-constraint\n */\n 'typescript/no-unnecessary-type-constraint': 'error',\n /**\n * Disallow unsafe declaration merging.\n *\n * @see https://typescript-eslint.io/rules/no-unsafe-declaration-merging\n */\n 'typescript/no-unsafe-declaration-merging': 'error',\n /**\n * Disallow unsafe built-in function types.\n *\n * @see https://typescript-eslint.io/rules/no-unsafe-function-type\n */\n 'typescript/no-unsafe-function-type': 'error',\n /**\n * Disallow unused expressions.\n *\n * @see https://typescript-eslint.io/rules/no-unused-expressions\n */\n 'typescript/no-unused-expressions': 'error',\n /**\n * Disallow unused variables.\n *\n * @see https://typescript-eslint.io/rules/no-unused-vars\n */\n 'typescript/no-unused-vars': 'error',\n /**\n * Disallow object-wrapper types.\n *\n * @see https://typescript-eslint.io/rules/no-wrapper-object-types\n */\n 'typescript/no-wrapper-object-types': 'error',\n /**\n * Require `as const` assertions for literal types.\n *\n * @see https://typescript-eslint.io/rules/prefer-as-const\n */\n 'typescript/prefer-as-const': 'error',\n /**\n * Require `namespace` instead of `module` declarations.\n *\n * @see https://typescript-eslint.io/rules/prefer-namespace-keyword\n */\n 'typescript/prefer-namespace-keyword': 'error',\n /**\n * Disallow triple-slash reference directives.\n *\n * @see https://typescript-eslint.io/rules/triple-slash-reference\n */\n 'typescript/triple-slash-reference': 'error',\n /**\n * Enforce dot notation whenever possible.\n *\n * @see https://typescript-eslint.io/rules/dot-notation\n */\n 'typescript/dot-notation': 'error',\n /**\n * Let the TypeScript-specific rule enforce array constructor usage.\n *\n * @see https://eslint.org/docs/latest/rules/no-array-constructor\n */\n 'no-array-constructor': 'off',\n /**\n * Allow empty functions for interface implementations and placeholders.\n *\n * @see https://eslint.org/docs/latest/rules/no-empty-function\n */\n 'no-empty-function': 'off',\n /**\n * Let the TypeScript-specific rule enforce dot notation.\n *\n * @see https://eslint.org/docs/latest/rules/dot-notation\n */\n 'dot-notation': 'off',\n /**\n * Let the TypeScript-specific rule detect unused expressions.\n *\n * @see https://eslint.org/docs/latest/rules/no-unused-expressions\n */\n 'no-unused-expressions': 'off',\n /**\n * Let the TypeScript-specific rule detect unused variables.\n *\n * @see https://eslint.org/docs/latest/rules/no-unused-vars\n */\n 'no-unused-vars': 'off',\n /**\n * Allow constructors that TypeScript requires for parameter properties.\n *\n * @see https://eslint.org/docs/latest/rules/no-useless-constructor\n */\n 'no-useless-constructor': 'off',\n /**\n * Ensure consistent use of file extension within the import path.\n *\n * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.17.1/docs/rules/extensions.md\n */\n 'import/extensions': 'off',\n} as const;\n","export const vitest = {\n /**\n * Disallow focused tests committed with `.only`.\n *\n * @see 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 * Disallow disabled tests committed with `.skip`.\n *\n * @see 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 * Require unique test titles within a suite.\n *\n * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-identical-title.md\n */\n 'vitest/no-identical-title': 'error',\n /**\n * Disallow assertions that execute only in conditional branches.\n *\n * @see 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 * Disallow assertions outside a test or hook callback.\n *\n * @see 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 * Allow mock factories without explicit type parameters.\n *\n * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-mock-type-parameters.md\n */\n 'vitest/require-mock-type-parameters': 'off',\n /**\n * Validate assertion matchers and their arguments.\n *\n * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/valid-expect.md\n */\n 'vitest/valid-expect': 'error',\n} as const;\n","import globals from 'globals';\nimport type { ExtensionFragmentName } from './consts.js';\nimport { base, browser, jsdoc, node, react, tests, typescript } from './rules/index.js';\n\n/** Policy fragments used by the configuration factories and caller extensions. */\nexport const extensionFragments = {\n base: {\n globals: globals.es2023,\n rules: base,\n },\n browser: {\n globals: globals.browser,\n rules: browser,\n },\n jsdoc: {\n rules: jsdoc,\n },\n node: {\n globals: globals.node,\n rules: node,\n },\n react: {\n rules: react,\n },\n tests: {\n rules: tests,\n },\n typescript: {\n rules: typescript,\n },\n} as const satisfies Record<ExtensionFragmentName, object>;\n","import globals from 'globals';\nimport {\n DEFAULT_IGNORES,\n TEST_FILES,\n CONFIG_ENVS,\n type ConfigEnv,\n type TestConvention,\n} from './consts.js';\nimport { extensionFragments } from './fragments.js';\nimport {\n nextjs as nextjsRules,\n typeAware as typeAwareRules,\n vitest as vitestRules,\n noUnderscoreDangleRule,\n noUnderscoreDangleOptions,\n} from './rules/index.js';\nimport type {\n ConfigFragment,\n ConfigOverrideOptions,\n DangleRuleOptions,\n DangleRuleSettings,\n CreateConfigSettings,\n GeneratedConfig,\n GeneratedConfigOverride,\n ResolvedTestConfig,\n ResolveTestConfigOptions,\n ResolveConfigComponentsOptions,\n ResolveConfigComponentsResult,\n ResolveTestConfigComponentsOptions,\n ResolveTestConfigComponentsResult,\n CreateTestOverrideOptions,\n ResolveGlobalsOptions,\n ResolvedGlobalVars,\n RuleSettings,\n} from './types.js';\n\nconst mergeRules = (...fragments: (ConfigFragment | undefined)[]) =>\n fragments.reduce<Record<string, unknown>>((acc, fragment) => {\n Object.assign(acc, fragment?.rules);\n return acc;\n }, {});\n\n/** Combines config rules with user overrides. */\nconst mergeRuleSettings = (fragments: ConfigFragment[], settings: RuleSettings[] = []) =>\n mergeRules(...fragments, ...settings.map((rules) => ({ rules })));\n\n/** Marks environment globals as unavailable. */\nconst disableGlobals = (env: ConfigEnv): ResolvedGlobalVars =>\n Object.fromEntries(\n Object.keys(extensionFragments[env].globals).map((name) => [name, 'off']),\n );\n\n/** Checks if an override applies to files. */\nconst isConfigOverride = (\n override: ConfigOverrideOptions | RuleSettings,\n): override is ConfigOverrideOptions => Object.hasOwn(override, 'files');\n\n/** Splits rule overrides from file overrides. */\nconst resolveUserOverrides = (overrides: CreateConfigSettings['overrides']) => {\n if (!overrides) {\n return {\n configOverrides: [],\n ruleOverrides: [],\n };\n }\n\n if (!Array.isArray(overrides)) {\n return {\n configOverrides: [],\n ruleOverrides: [overrides],\n };\n }\n\n return overrides.reduce<{\n configOverrides: ConfigOverrideOptions[];\n ruleOverrides: RuleSettings[];\n }>(\n (acc, override) => {\n if (isConfigOverride(override)) {\n acc.configOverrides.push(override);\n } else {\n acc.ruleOverrides.push(override);\n }\n\n return acc;\n },\n { configOverrides: [], ruleOverrides: [] },\n );\n};\n\nconst allowDangleNames = (rules: RuleSettings, names: string[] = []): RuleSettings => {\n if (names.length === 0) return rules;\n\n const dangleRule = rules['no-underscore-dangle'] || noUnderscoreDangleRule;\n if (!Array.isArray(dangleRule)) return rules;\n\n const [severity, configuredOptions] = dangleRule as DangleRuleSettings;\n const options: DangleRuleOptions =\n typeof configuredOptions === 'object' && configuredOptions !== null\n ? configuredOptions\n : {};\n\n return {\n ...rules,\n 'no-underscore-dangle': [\n severity,\n {\n ...noUnderscoreDangleOptions,\n ...options,\n allow: Array.from(\n new Set([\n ...noUnderscoreDangleOptions.allow,\n ...(options.allow || []),\n ...names,\n ]),\n ),\n },\n ],\n };\n};\n\nconst resolveGlobals = ({\n globals: globalVars = {},\n doingTestsSetup,\n}: ResolveGlobalsOptions): ResolvedGlobalVars => {\n if (doingTestsSetup) {\n return globalVars;\n }\n\n return Object.entries(globalVars).reduce<ResolvedGlobalVars>((acc, [name, mode]) => {\n if (name.startsWith('$')) {\n const groupName = name.slice(1);\n if (!Object.hasOwn(globals, groupName)) {\n throw new Error(`Unknown global group: \"${groupName}\".`);\n }\n\n Object.assign(acc, globals[groupName as keyof typeof globals]);\n } else {\n acc[name] = mode === true ? 'writable' : mode;\n }\n\n return acc;\n }, {});\n};\n\nconst getEnvironment = (env: ConfigEnv): ConfigEnv => {\n if (!CONFIG_ENVS.includes(env)) {\n const humanReadableEnvs = CONFIG_ENVS.map((e) => `\"${e}\"`).join(' or ');\n throw new Error(`Environment must be ${humanReadableEnvs}.`);\n }\n\n return env;\n};\n\n/** Turns a file glob into a list. */\nconst resolveFiles = (files: string | string[]): string[] =>\n Array.isArray(files) ? files.slice() : [files];\n\nconst resolveTestFiles = (files: string | string[] | undefined): string[] => {\n if (typeof files === 'undefined') return [];\n if (typeof files === 'string' && Object.hasOwn(TEST_FILES, files)) {\n return TEST_FILES[files as TestConvention].slice();\n }\n\n return resolveFiles(files);\n};\n\nconst resolveTestConfig = ({\n tests,\n productionEnv,\n productionTs,\n}: ResolveTestConfigOptions): ResolvedTestConfig => {\n if (tests === true) {\n return {\n env: productionEnv,\n files: [...TEST_FILES.colocated, ...TEST_FILES.directory],\n framework: 'vitest',\n ts: productionTs,\n };\n }\n\n if (typeof tests === 'string') {\n return {\n env: productionEnv,\n files: TEST_FILES[tests].slice(),\n framework: 'vitest',\n ts: productionTs,\n };\n }\n\n return {\n env: tests.env ?? productionEnv,\n files: resolveTestFiles(tests.files),\n framework: tests.framework || 'vitest',\n ts: tests.ts ?? productionTs,\n };\n};\n\nconst resolveTestConfigComponents = ({\n env,\n testConfig,\n tests,\n ts = false,\n}: ResolveTestConfigComponentsOptions): ResolveTestConfigComponentsResult => {\n if (testConfig) {\n return {\n doingTestsSetup: true,\n testConfig,\n };\n }\n\n if (!tests) {\n return {\n doingTestsSetup: false,\n testConfig: undefined,\n };\n }\n\n return {\n doingTestsSetup: false,\n testConfig: resolveTestConfig({\n tests,\n productionEnv: env,\n productionTs: ts,\n }),\n };\n};\n\nconst resolveConfigComponents = (\n options: ResolveConfigComponentsOptions,\n): ResolveConfigComponentsResult => {\n const {\n env: environment,\n extensions,\n globals: globalVars,\n jsdoc,\n nextjs,\n react,\n ts = true,\n typeAware,\n baseFragment = extensionFragments.base,\n baseExtensionFragment: baseExtensionFragmentOption,\n } = options;\n\n const baseExtensionFragment = baseExtensionFragmentOption ?? extensions?.base;\n\n const env = getEnvironment(environment);\n\n const { doingTestsSetup, testConfig } = resolveTestConfigComponents({\n env,\n testConfig: options.testConfig,\n tests: options.tests,\n ts,\n });\n\n const fragments: ConfigFragment[] = [baseFragment, extensionFragments[env]];\n const resolvedGlobals = resolveGlobals({ globals: globalVars, doingTestsSetup });\n\n const plugins = ['import'];\n\n const configGlobals: Array<Record<string, boolean | string>> = [];\n\n if (env === 'node') {\n plugins.push('node');\n }\n\n if (jsdoc) {\n fragments.push(extensionFragments.jsdoc);\n plugins.push('jsdoc');\n }\n\n if (ts) {\n fragments.push(extensionFragments.typescript);\n }\n\n if (typeAware) {\n fragments.push({ rules: typeAwareRules });\n }\n\n if (ts || typeAware) {\n plugins.push('typescript');\n }\n\n if (react) {\n fragments.push(extensionFragments.react);\n plugins.push('react', 'jsx-a11y', 'react-perf');\n }\n\n if (nextjs) {\n fragments.push({ rules: nextjsRules });\n plugins.push('nextjs');\n }\n\n if (testConfig?.framework === 'vitest') {\n plugins.push('vitest');\n if (doingTestsSetup) {\n fragments.push({ rules: vitestRules });\n configGlobals.push(globals.vitest);\n }\n }\n\n if (baseExtensionFragment) {\n fragments.push(baseExtensionFragment);\n }\n\n if (extensions?.[env]) {\n fragments.push(extensions[env]);\n }\n\n if (jsdoc && extensions?.jsdoc) {\n fragments.push(extensions.jsdoc);\n }\n\n if (ts && extensions?.typescript) {\n fragments.push(extensions.typescript);\n }\n\n if (react && extensions?.react) {\n fragments.push(extensions.react);\n }\n\n return {\n env,\n fragments,\n globals: resolvedGlobals,\n plugins,\n testConfig,\n configGlobals:\n configGlobals.length > 0 ? Object.assign({}, ...configGlobals) : undefined,\n };\n};\n\nconst createTestOverride = ({\n parentEnv,\n testConfig,\n allowedDangleNames,\n extensions,\n extraRules = [],\n globals: globalVars,\n}: CreateTestOverrideOptions): GeneratedConfigOverride => {\n const {\n env,\n fragments,\n globals: resolvedGlobals,\n configGlobals,\n } = resolveConfigComponents({\n env: testConfig.env,\n extensions,\n globals: globalVars,\n testConfig,\n ts: testConfig.ts,\n baseFragment: extensionFragments.tests,\n baseExtensionFragment: extensions?.tests,\n });\n const rules = allowDangleNames(\n mergeRuleSettings(fragments, extraRules),\n allowedDangleNames,\n );\n\n if (testConfig.files.length === 0) {\n throw new Error('Custom test configuration requires at least one file glob.');\n }\n\n return {\n files: testConfig.files,\n globals: {\n ...disableGlobals(parentEnv),\n ...extensionFragments[env].globals,\n ...resolvedGlobals,\n ...configGlobals,\n },\n rules,\n };\n};\n\ntype CreateConfigOverrideOptions = {\n override: ConfigOverrideOptions;\n options: CreateConfigSettings;\n parentEnv: ConfigEnv;\n rootRuleOverrides: RuleSettings[];\n};\n\n/** Creates a file override and its test override. */\nconst createConfigOverride = ({\n override,\n options,\n parentEnv,\n rootRuleOverrides,\n}: CreateConfigOverrideOptions) => {\n const { files, ignores, rules: overrideRules, tests, ...overrideOptions } = override;\n const {\n env,\n fragments,\n globals: resolvedGlobals,\n plugins,\n testConfig,\n } = resolveConfigComponents({\n ...options,\n ...overrideOptions,\n env: override.env ?? parentEnv,\n tests,\n });\n const extraRules = [...rootRuleOverrides, ...(overrideRules ? [overrideRules] : [])];\n\n return {\n override: {\n excludeFiles: ignores,\n files: resolveFiles(files),\n globals: {\n ...disableGlobals(parentEnv),\n ...extensionFragments[env].globals,\n ...resolvedGlobals,\n },\n rules: allowDangleNames(\n mergeRuleSettings(fragments, extraRules),\n options.allowedDangleNames,\n ),\n },\n plugins,\n testOverride: testConfig\n ? createTestOverride({\n parentEnv,\n testConfig,\n allowedDangleNames: options.allowedDangleNames,\n extensions: overrideOptions.extensions ?? options.extensions,\n extraRules,\n globals: overrideOptions.globals ?? options.globals,\n })\n : undefined,\n };\n};\n\n/** Creates a native Oxlint configuration from one environment and optional policy layers. */\nexport const createConfig = (options: CreateConfigSettings): GeneratedConfig => {\n const {\n fragments,\n globals: resolvedGlobals,\n plugins: resolvedPlugins,\n env,\n testConfig,\n } = resolveConfigComponents(options);\n const { allowedDangleNames, extensions, ignores, typeAware } = options;\n const { configOverrides, ruleOverrides } = resolveUserOverrides(options.overrides);\n const generatedOverrides: GeneratedConfigOverride[] = [];\n const plugins = resolvedPlugins.slice();\n\n if (testConfig) {\n generatedOverrides.push(\n createTestOverride({\n parentEnv: env,\n testConfig,\n allowedDangleNames,\n extensions,\n extraRules: ruleOverrides,\n globals: resolvedGlobals,\n }),\n );\n }\n\n for (const override of configOverrides) {\n const generatedOverride = createConfigOverride({\n override,\n options,\n parentEnv: env,\n rootRuleOverrides: ruleOverrides,\n });\n\n generatedOverrides.push(generatedOverride.override);\n if (generatedOverride.testOverride) {\n generatedOverrides.push(generatedOverride.testOverride);\n }\n\n for (const plugin of generatedOverride.plugins) {\n if (!plugins.includes(plugin)) plugins.push(plugin);\n }\n }\n\n const rules = allowDangleNames(\n mergeRuleSettings(fragments, ruleOverrides),\n allowedDangleNames,\n );\n\n return {\n globals: {\n ...extensionFragments.base.globals,\n ...extensionFragments[env].globals,\n ...resolvedGlobals,\n },\n ignorePatterns: [...DEFAULT_IGNORES, ...(ignores || [])],\n options: typeAware ? { typeAware: true } : undefined,\n plugins,\n rules,\n overrides: generatedOverrides.length > 0 ? generatedOverrides : undefined,\n };\n};\n","import { createConfig } from './createConfig.js';\nimport type { CreateNextjsConfigOptions } from './types.js';\n\nconst NEXTJS_IGNORES = ['.next/', 'out/', 'build/', 'next-env.d.ts'];\n\n/** Creates a native Oxlint configuration for a Next.js TypeScript project. */\nexport const createNextjsConfig = ({\n globals = {},\n ignores = [],\n ...options\n}: CreateNextjsConfigOptions) =>\n createConfig({\n ...options,\n env: 'node',\n globals: { $browser: true, ...globals },\n ignores: [...NEXTJS_IGNORES, ...ignores],\n nextjs: true,\n react: true,\n ts: true,\n });\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@homer0/oxlint-config",
3
3
  "description": "My custom Oxlint configurations.",
4
- "version": "1.0.3",
4
+ "version": "2.0.0",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "git+https://github.com/homer0/packages.git",
@@ -59,5 +59,5 @@
59
59
  "build": "tsdown",
60
60
  "prepublishOnly": "pnpm run build"
61
61
  },
62
- "gitHead": "27e773cc888ac2ffe26fabd5976a45ea7fdfaae8"
62
+ "gitHead": "7d849b3b0b5d9cc54557f3132bb50b1acc67f9f5"
63
63
  }
package/src/consts.ts CHANGED
@@ -1,3 +1,6 @@
1
+ export const CONFIG_ENVS = ['browser', 'node'] as const;
2
+ export type ConfigEnv = (typeof CONFIG_ENVS)[number];
3
+
1
4
  export const DEFAULT_IGNORES = ['coverage/', 'coverage-*/', 'dist/', 'node_modules/'];
2
5
 
3
6
  export const TEST_FILES = {