@paratco/eslint-config 3.3.1 → 3.4.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/README.md +35 -56
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["eslintJS","eslintTSConfigs","eslintPluginUnicorn","javascriptRules","typescriptRules","unicornRules","baseConfig","reactHooksConfigs","reactRefreshPlugin","reactPlugin","reactRules","importXFlatConfigs","unusedImports","importXRules","eslintConfigPrettier","stylistic","stylisticRules","reactPlugin","nodeConfig","reactConfig","stylisticFormatter","prettierFormatter"],"sources":["../src/rules/javascript.ts","../src/rules/typescript.ts","../src/rules/unicorn.ts","../src/configs/base.ts","../src/rules/react.ts","../src/configs/react.ts","../src/rules/import.ts","../src/configs/import.ts","../src/configs/prettierFormatter.ts","../src/rules/stylistic.ts","../src/configs/stylisticFormatter.ts","../src/index.ts"],"sourcesContent":["import type { Linter } from \"eslint\";\n\nexport default {\n // https://eslint.org/docs/latest/rules/eqeqeq\n // Require the use of === and !==\n eqeqeq: [\"warn\"],\n\n // https://eslint.org/docs/latest/rules/curly\n // Enforce consistent brace style for all control statements\n curly: [\"warn\", \"all\"],\n\n // https://eslint.org/docs/latest/rules/no-restricted-imports\n // Disallow specified modules when loaded by import\n \"no-restricted-imports\": [\n \"error\",\n {\n patterns: [\n {\n regex: \"^(node:)?process$\",\n message: \"Please dont import node:process.\"\n }\n ]\n }\n ],\n\n // https://eslint.org/docs/latest/rules/no-unused-vars\n // Disallow unused variables\n \"no-unused-vars\": [\n \"error\",\n {\n args: \"all\",\n argsIgnorePattern: \"^_\",\n caughtErrors: \"all\",\n caughtErrorsIgnorePattern: \"^_\",\n destructuredArrayIgnorePattern: \"^_\",\n ignoreRestSiblings: true\n }\n ],\n\n // https://eslint.org/docs/latest/rules/no-fallthrough\n // Disallow fallthrough of case statements\n \"no-fallthrough\": [\n \"error\",\n {\n allowEmptyCase: true\n }\n ]\n} as const satisfies Linter.RulesRecord;\n","import type { Linter } from \"eslint\";\n\nexport default {\n // Enforce that class methods utilize this.\n // https://typescript-eslint.io/rules/class-methods-use-this\n // Note: you must disable the base rule as it can report incorrect errors\n \"class-methods-use-this\": \"off\",\n \"@typescript-eslint/class-methods-use-this\": [\n \"error\",\n {\n ignoreOverrideMethods: true,\n ignoreClassesThatImplementAnInterface: true\n }\n ],\n\n // Require return statements to either always or never specify values\n // https://typescript-eslint.io/rules/consistent-return/\n // Note: you must disable the base rule as it can report incorrect errors\n \"consistent-return\": \"off\",\n \"@typescript-eslint/consistent-return\": \"off\",\n\n // Enforce consistent usage of type exports.\n // https://typescript-eslint.io/rules/consistent-type-exports\n \"@typescript-eslint/consistent-type-exports\": [\n \"error\",\n {\n fixMixedExportsWithInlineTypeSpecifier: true\n }\n ],\n\n // Enforce consistent usage of type imports.\n // https://typescript-eslint.io/rules/consistent-type-imports\n \"@typescript-eslint/consistent-type-imports\": [\"error\"],\n\n // Enforce default parameters to be last.\n // https://typescript-eslint.io/rules/default-param-last\n // Note: you must disable the base rule as it can report incorrect errors\n \"default-param-last\": \"off\",\n \"@typescript-eslint/default-param-last\": [\"error\"],\n\n // Require explicit return types on functions and class methods.\n // https://typescript-eslint.io/rules/explicit-function-return-type\n \"@typescript-eslint/explicit-function-return-type\": [\n \"error\",\n {\n allowExpressions: true\n }\n ],\n\n // Require explicit accessibility modifiers on class properties and methods.\n // https://typescript-eslint.io/rules/explicit-member-accessibility\n \"@typescript-eslint/explicit-member-accessibility\": [\n \"error\",\n {\n accessibility: \"no-public\",\n overrides: {\n constructors: \"off\"\n }\n }\n ],\n\n // Require explicit return and argument types on exported functions' and classes' public class methods.\n // https://typescript-eslint.io/rules/explicit-module-boundary-types\n \"@typescript-eslint/explicit-module-boundary-types\": [\"error\"],\n\n // Require or disallow initialization in variable declarations.\n // https://typescript-eslint.io/rules/init-declarations\n // Note: you must disable the base rule as it can report incorrect errors\n \"init-declarations\": \"off\",\n \"@typescript-eslint/init-declarations\": [\"off\"],\n\n // Enforce a maximum number of parameters in function definitions.\n // https://typescript-eslint.io/rules/max-params\n // Note: you must disable the base rule as it can report incorrect errors\n \"max-params\": \"off\",\n \"@typescript-eslint/max-params\": [\"off\"],\n\n // Require a consistent member declaration order.\n // https://typescript-eslint.io/rules/member-ordering\n \"@typescript-eslint/member-ordering\": [\n \"error\",\n { default: [\"constructor\", \"field\", \"static-method\", \"method\", \"signature\"] }\n ],\n\n // Enforce using a particular method signature syntax.\n // https://typescript-eslint.io/rules/method-signature-style\n \"@typescript-eslint/method-signature-style\": [\"error\"],\n\n // Enforce naming conventions for everything across a codebase.\n // https://typescript-eslint.io/rules/naming-convention\n // TODO: We can split this rule. for components it enforces PascalCase and functions camelCase\n \"@typescript-eslint/naming-convention\": [\n \"error\",\n {\n selector: \"function\",\n format: [\"PascalCase\", \"camelCase\"]\n }\n ],\n\n // Disallow duplicate class members.\n // https://typescript-eslint.io/rules/no-dupe-class-members\n // Note: you must disable the base rule as it can report incorrect errors\n \"no-dupe-class-members\": \"off\",\n \"@typescript-eslint/no-dupe-class-members\": [\"off\"],\n\n // Enforce the use of top-level import type qualifier when an import only has specifiers with inline type qualifiers.\n // https://typescript-eslint.io/rules/no-import-type-side-effects\n \"@typescript-eslint/no-import-type-side-effects\": [\"error\"],\n\n // Disallow this keywords outside of classes or class-like objects.\n // https://typescript-eslint.io/rules/no-invalid-this\n // Note: you must disable the base rule as it can report incorrect errors\n \"no-invalid-this\": \"off\",\n \"@typescript-eslint/no-invalid-this\": [\"error\"],\n\n // Disallow function declarations that contain unsafe references inside loop statements.\n // https://typescript-eslint.io/rules/no-loop-func\n // Note: you must disable the base rule as it can report incorrect errors\n \"no-loop-func\": \"off\",\n \"@typescript-eslint/no-loop-func\": [\"error\"],\n\n // Disallow magic numbers.\n // https://typescript-eslint.io/rules/no-magic-numbers\n // Note: you must disable the base rule as it can report incorrect errors\n \"no-magic-numbers\": \"off\",\n \"@typescript-eslint/no-magic-numbers\": [\"off\"],\n\n // Disallow variable redeclaration.\n // https://typescript-eslint.io/rules/no-redeclare\n // Note: you must disable the base rule as it can report incorrect errors\n \"no-redeclare\": \"off\",\n \"@typescript-eslint/no-redeclare\": [\"off\"],\n\n // Disallow invocation of require().\n // https://typescript-eslint.io/rules/no-require-imports\n // Added to recommended\n // \"@typescript-eslint/no-require-imports\": [\"error\"],\n\n // Disallow specified modules when loaded by import.\n // https://typescript-eslint.io/rules/no-restricted-imports\n // Note: you must disable the base rule as it can report incorrect errors\n \"no-restricted-imports\": \"off\",\n \"@typescript-eslint/no-restricted-imports\": [\n \"error\",\n {\n patterns: [\n {\n regex: \"^(node:)?process$\",\n message: \"Please dont import node:process.\"\n }\n ]\n }\n ],\n\n // Disallow certain types\n // https://typescript-eslint.io/rules/no-restricted-types/\n // \"@typescript-eslint/no-restricted-types\": [\"off\"],\n\n // Disallow variable declarations from shadowing variables declared in the outer scope.\n // https://typescript-eslint.io/rules/no-shadow\n // Note: you must disable the base rule as it can report incorrect errors\n \"no-shadow\": \"off\",\n \"@typescript-eslint/no-shadow\": [\"error\"],\n\n // https://typescript-eslint.io/rules/no-unnecessary-parameter-property-assignment/\n // Disallow unnecessary assignment of constructor property parameter\n \"@typescript-eslint/no-unnecessary-parameter-property-assignment\": [\"off\"],\n\n // Disallow unnecessary namespace qualifiers.\n // https://typescript-eslint.io/rules/no-unnecessary-qualifier\n \"@typescript-eslint/no-unnecessary-qualifier\": [\"warn\"],\n\n // Disallow conversion idioms when they do not change the type or value of the expression\n // https://typescript-eslint.io/rules/no-unnecessary-type-conversion/\n \"@typescript-eslint/no-unnecessary-type-conversion\": [\"warn\"],\n\n // Disallow type assertions that narrow a type\n // https://typescript-eslint.io/rules/no-unsafe-type-assertion/\n \"@typescript-eslint/no-unsafe-type-assertion\": [\"off\"],\n\n // Require unary negation to take a number.\n // https://typescript-eslint.io/rules/no-unsafe-unary-minus\n // Added to recommended\n // \"@typescript-eslint/no-unsafe-unary-minus\": [\"error\"],\n\n // Disallow unused expressions.\n // https://typescript-eslint.io/rules/no-unused-expressions\n // Note: you must disable the base rule as it can report incorrect errors\n // Added to recommended\n // \"no-unused-expressions\": \"off\",\n // \"@typescript-eslint/no-unused-expressions\": [\"off\"],\n\n // Disallow the use of variables before they are defined.\n // https://typescript-eslint.io/rules/no-use-before-define\n // Note: you must disable the base rule as it can report incorrect errors\n \"no-use-before-define\": \"off\",\n \"@typescript-eslint/no-use-before-define\": [\"error\"],\n\n // Disallow empty exports that don't change anything in a module file.\n // https://typescript-eslint.io/rules/no-useless-empty-export\n \"@typescript-eslint/no-useless-empty-export\": [\"warn\"],\n\n // Require or disallow parameter properties in class constructors.\n // https://typescript-eslint.io/rules/parameter-properties\n \"@typescript-eslint/parameter-properties\": [\"error\"],\n\n // Require destructuring from arrays and/or objects.\n // https://typescript-eslint.io/rules/prefer-destructuring\n // Note: you must disable the base rule as it can report incorrect errors\n \"prefer-destructuring\": \"off\",\n \"@typescript-eslint/prefer-destructuring\": [\"off\"],\n\n // Require each enum member value to be explicitly initialized.\n // https://typescript-eslint.io/rules/prefer-enum-initializers\n \"@typescript-eslint/prefer-enum-initializers\": [\"off\"],\n\n // Enforce the use of Array.prototype.find() over Array.prototype.filter() followed by [0] when looking for a single result.\n // https://typescript-eslint.io/rules/prefer-find\n // Added to stylistic\n // \"@typescript-eslint/prefer-find\": [\"warn\"],\n\n // Require private members to be marked as readonly if they're never modified outside the constructor.\n // https://typescript-eslint.io/rules/prefer-readonly\n \"@typescript-eslint/prefer-readonly\": [\"warn\"],\n\n // Require function parameters to be typed as readonly to prevent accidental mutation of inputs.\n // https://typescript-eslint.io/rules/prefer-readonly-parameter-types\n \"@typescript-eslint/prefer-readonly-parameter-types\": [\"off\"],\n\n // Enforce RegExp#exec over String#match if no global flag is provided.\n // https://typescript-eslint.io/rules/prefer-regexp-exec\n // Added to stylistic\n // \"@typescript-eslint/prefer-regexp-exec\": [\"warn\"],\n\n // Require any function or method that returns a Promise to be marked async.\n // https://typescript-eslint.io/rules/promise-function-async\n \"@typescript-eslint/promise-function-async\": [\"error\"],\n\n // Require Array#sort and Array#toSorted calls to always provide a compareFunction.\n // https://typescript-eslint.io/rules/require-array-sort-compare\n \"@typescript-eslint/require-array-sort-compare\": [\"error\"],\n\n // Enforce consistent returning of awaited values.\n // https://typescript-eslint.io/rules/return-await\n // Note: you must disable the base rule as it can report incorrect errors\n // Added to recommended\n // \"no-return-await\": \"off\",\n // \"@typescript-eslint/return-await\": [\"off\"],\n\n // Disallow certain types in boolean expressions.\n // https://typescript-eslint.io/rules/strict-boolean-expressions\n \"@typescript-eslint/strict-boolean-expressions\": [\n \"error\",\n {\n allowString: false,\n allowNumber: false,\n allowNullableObject: false\n }\n ],\n\n // Require switch-case statements to be exhaustive.\n // https://typescript-eslint.io/rules/switch-exhaustiveness-check\n \"@typescript-eslint/switch-exhaustiveness-check\": [\"error\"],\n\n // Additional rules (Customize rules that are not in predefined configs)\n\n // Enforce template literal expressions to be of string type.\n // https://typescript-eslint.io/rules/restrict-template-expressions\n \"@typescript-eslint/restrict-template-expressions\": [\n \"error\",\n {\n allowBoolean: true,\n allowNumber: true,\n allowRegExp: true\n }\n ],\n\n // Disallow type parameters that aren't used multiple times\n // https://typescript-eslint.io/rules/no-unnecessary-type-parameters\n // Note: This rule is in the strict rules. But we decided to disable this rule.\n \"@typescript-eslint/no-unnecessary-type-parameters\": [\"off\"],\n\n // Disallow unused variables.\n // https://typescript-eslint.io/rules/no-unused-vars\n // Note: This rule is in the recommended rules. But we modify it.\n \"no-unused-vars\": [\"off\"],\n \"@typescript-eslint/no-unused-vars\": [\n \"error\",\n {\n args: \"all\",\n argsIgnorePattern: \"^_\",\n caughtErrors: \"all\",\n caughtErrorsIgnorePattern: \"^_\",\n destructuredArrayIgnorePattern: \"^_\",\n ignoreRestSiblings: true\n }\n ],\n\n // Enforce using concise optional chain expressions instead of chained logical ands, negated logical ors, or empty objects\n // https://typescript-eslint.io/rules/prefer-optional-chain\n // Note: This rule is in the recommended rules. But we remove it.\n \"@typescript-eslint/prefer-optional-chain\": [\"off\"]\n} as const satisfies Linter.RulesRecord;\n","import type { Linter } from \"eslint\";\n\nexport default {\n // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/catch-error-name.md\n // Enforce a specific parameter name in catch clauses.\n \"unicorn/catch-error-name\": [\n \"error\",\n {\n ignore: [String.raw`^error[\\da-zA-Z_]*$`]\n }\n ],\n\n // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/filename-case.md\n // Enforce a case style for filenames.\n \"unicorn/filename-case\": [\"off\"],\n\n // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prevent-abbreviations.md\n // Prevent abbreviations.\n \"unicorn/prevent-abbreviations\": [\"off\"],\n\n // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-null.md\n // Disallow the use of the null literal.\n \"unicorn/no-null\": [\"off\"],\n\n // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-negated-condition.md\n // Disallow negated conditions.\n \"unicorn/no-negated-condition\": [\"off\"],\n\n // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/switch-case-braces.md\n // Enforce consistent brace style for case clauses.\n \"unicorn/switch-case-braces\": [\"off\"],\n\n // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-spread.md\n // Prefer the spread operator over Array.from(…), Array#concat(…), Array#{slice,toSpliced}() and String#split('').\n \"unicorn/prefer-spread\": [\"off\"],\n\n // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-at.md\n // Prefer .at() method for index access and String#charAt().\n \"unicorn/prefer-at\": [\"off\"],\n\n // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-ternary.md\n // Prefer ternary expressions over simple if-else statements.\n \"unicorn/prefer-ternary\": [\"warn\", \"only-single-line\"],\n\n // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-typeof-undefined.md\n // Disallow comparing undefined using typeof.\n \"unicorn/no-typeof-undefined\": [\"off\"],\n\n // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-static-only-class.md\n // Disallow classes that only have static members.\n \"unicorn/no-static-only-class\": [\"off\"]\n} as const satisfies Linter.RulesRecord;\n","import eslintJS from \"@eslint/js\";\nimport { configs as eslintTSConfigs } from \"typescript-eslint\";\nimport eslintPluginUnicorn from \"eslint-plugin-unicorn\";\n\n// Custom Rules\nimport type { Linter } from \"eslint\";\nimport javascriptRules from \"../rules/javascript\";\nimport typescriptRules from \"../rules/typescript\";\nimport unicornRules from \"../rules/unicorn\";\n\nexport default [\n eslintJS.configs.recommended,\n ...eslintTSConfigs.strictTypeChecked,\n ...eslintTSConfigs.stylisticTypeChecked,\n eslintPluginUnicorn.configs.recommended,\n\n // JavaScript Rules\n {\n files: [\"**/*.{js,mjs,cjs,ts,jsx,tsx}\"],\n rules: javascriptRules\n },\n\n // TypeScript Rules\n {\n files: [\"**/*.{ts,tsx}\"],\n rules: typescriptRules\n },\n\n // Unicorn Rules\n {\n files: [\"**/*.{js,mjs,cjs,ts,jsx,tsx}\"],\n rules: unicornRules\n }\n] as Linter.Config[];\n","import type { Linter } from \"eslint\";\n\nexport default {\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/boolean-prop-naming.md\n // Enforces consistent naming for boolean props\n \"react/boolean-prop-naming\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/button-has-type.md\n // Disallow usage of button elements without an explicit type attribute\n \"react/button-has-type\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/checked-requires-onchange-or-readonly.md\n // Enforce using onChange or readonly attribute when checked is used\n \"react/checked-requires-onchange-or-readonly\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/default-props-match-prop-types.md\n // Enforce all defaultProps have a corresponding non-required PropType\n \"react/default-props-match-prop-types\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/destructuring-assignment.md\n // Enforce consistent usage of destructuring assignment of props, state, and context\n \"react/destructuring-assignment\": [\"warn\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/display-name.md\n // Disallow missing displayName in a React component definition\n \"react/display-name\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/forbid-component-props.md\n // Disallow certain props on components\n \"react/forbid-component-props\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/forbid-dom-props.md\n // Disallow certain props on DOM Nodes\n \"react/forbid-dom-props\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/forbid-elements.md\n // Disallow certain elements\n \"react/forbid-elements\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/forbid-foreign-prop-types.md\n // Disallow using another component's propTypes\n \"react/forbid-foreign-prop-types\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/forbid-prop-types.md\n // Disallow certain propTypes\n \"react/forbid-prop-types\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/forward-ref-uses-ref.md\n // Require all forwardRef components include a ref parameter\n // It seems that React 19 doesn't require this rule\n \"react/forward-ref-uses-ref\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/function-component-definition.md\n // Enforce a specific function type for function components\n \"react/function-component-definition\": [\"warn\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/hook-use-state.md\n // Ensure destructuring and symmetric naming of useState hook value and setter variables\n \"react/hook-use-state\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/iframe-missing-sandbox.md\n // Enforce sandbox attribute on iframe elements\n \"react/iframe-missing-sandbox\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-boolean-value.md\n // Enforce boolean attributes notation in JSX\n \"react/jsx-boolean-value\": [\"warn\", \"always\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-child-element-spacing.md\n // Enforce or disallow spaces inside curly braces in JSX attributes and expressions\n \"react/jsx-child-element-spacing\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-closing-bracket-location.md\n // Enforce closing bracket location in JSX\n // Use similar stylistic rule instead\n \"react/jsx-closing-bracket-location\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-closing-tag-location.md\n // Enforce closing tag location for multiline JSX\n // Use similar stylistic rule instead\n \"react/jsx-closing-tag-location\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-curly-brace-presence.md\n // Disallow unnecessary JSX expressions when literals alone are sufficient or enforce JSX expressions on literals in JSX children or attributes\n // Use similar stylistic rule instead\n \"react/jsx-curly-brace-presence\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-curly-newline.md\n // Enforce consistent linebreaks in curly braces in JSX attributes and expressions\n // Use similar stylistic rule instead\n \"react/jsx-curly-newline\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-curly-spacing.md\n // Enforce or disallow spaces inside curly braces in JSX attributes and expressions\n // Use similar stylistic rule instead\n \"react/jsx-curly-spacing\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-equals-spacing.md\n // Enforce or disallow spaces around equal signs in JSX attributes\n // Use similar stylistic rule instead\n \"react/jsx-equals-spacing\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-filename-extension.md\n // Disallow file extensions that may contain JSX\n \"react/jsx-filename-extension\": [\"error\", { allow: \"always\", extensions: [\".tsx\"] }],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-first-prop-new-line.md\n // Enforce proper position of the first property in JSX\n // Use similar stylistic rule instead\n \"react/jsx-first-prop-new-line\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-fragments.md\n // Enforce shorthand or standard form for React fragments\n \"react/jsx-fragments\": [\"warn\", \"element\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-handler-names.md\n // Enforce event handler naming conventions in JSX\n \"react/jsx-handler-names\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-indent.md\n // Enforce JSX indentation\n // Use similar stylistic rule instead\n \"react/jsx-indent\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-indent-props.md\n // Enforce props indentation in JSX\n // Use similar stylistic rule instead\n \"react/jsx-indent-props\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-key.md\n // Disallow missing key props in iterators/collection literals\n \"react/jsx-key\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-max-depth.md\n // Enforce JSX maximum depth\n \"react/jsx-max-depth\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-max-props-per-line.md\n // Enforce maximum of props on a single line in JSX\n // Use similar stylistic rule instead\n \"react/jsx-max-props-per-line\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-newline.md\n // Require or prevent a new line after jsx elements and expressions\n // Use similar stylistic rule instead\n \"react/jsx-newline\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-bind.md\n // Disallow .bind() or arrow functions in JSX props\n \"react/jsx-no-bind\": [\n \"error\",\n {\n allowArrowFunctions: true\n }\n ],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-comment-textnodes.md\n // Disallow comments from being inserted as text nodes\n \"react/jsx-no-comment-textnodes\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-constructed-context-values.md\n // Disallows JSX context provider values from taking values that will cause needless renders\n \"react/jsx-no-constructed-context-values\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-duplicate-props.md\n // Disallow duplicate properties in JSX\n \"react/jsx-no-duplicate-props\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-leaked-render.md\n // Disallow problematic leaked values from being rendered\n \"react/jsx-no-leaked-render\": [\"warn\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-literals.md\n // Disallow usage of string literals in JSX\n \"react/jsx-no-literals\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-script-url.md\n // Disallow usage of javascript: URLs\n \"react/jsx-no-script-url\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-target-blank.md\n // Disallow target=\"_blank\" attribute without rel=\"noreferrer\"\n \"react/jsx-no-target-blank\": [\"warn\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-undef.md\n // Disallow undeclared variables in JSX\n \"react/jsx-no-undef\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-useless-fragment.md\n // Disallow unnecessary fragments\n \"react/jsx-no-useless-fragment\": [\"warn\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-one-expression-per-line.md\n // Require one JSX element per line\n // Use similar stylistic rule instead\n \"react/jsx-one-expression-per-line\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-pascal-case.md\n // Enforce PascalCase for user-defined JSX components\n // Use similar stylistic rule instead\n \"react/jsx-pascal-case\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-props-no-multi-spaces.md\n // Disallow multiple spaces between inline JSX props\n // Use similar stylistic rule instead\n \"react/jsx-props-no-multi-spaces\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-props-no-spread-multi.md\n // Disallow multiple spaces between inline JSX props\n \"react/jsx-props-no-spread-multi\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-props-no-spreading.md\n // Disallow JSX prop spreading\n \"react/jsx-props-no-spreading\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-sort-props.md\n // Enforce props alphabetical sorting\n // Use similar stylistic rule instead\n \"react/jsx-sort-props\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-tag-spacing.md\n // Enforce whitespace in and around the JSX opening and closing brackets\n // Use similar stylistic rule instead\n \"react/jsx-tag-spacing\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-uses-react.md\n // Disallow React to be incorrectly marked as unused\n \"react/jsx-uses-react\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-uses-vars.md\n // Disallow variables used in JSX to be incorrectly marked as unused\n \"react/jsx-uses-vars\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-wrap-multilines.md\n // Disallow missing parentheses around multiline JSX\n // Use similar stylistic rule instead\n \"react/jsx-wrap-multilines\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-access-state-in-setstate.md\n // Disallow when this.state is accessed within setState\n \"react/no-access-state-in-setstate\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-adjacent-inline-elements.md\n // Disallow adjacent inline elements not separated by whitespace.\n \"react/no-adjacent-inline-elements\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-array-index-key.md\n // Disallow usage of Array index in keys\n \"react/no-array-index-key\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-arrow-function-lifecycle.md\n // Lifecycle methods should be methods on the prototype, not class fields\n \"react/no-arrow-function-lifecycle\": [\"warn\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-children-prop.md\n // Disallow passing of children as props\n \"react/no-children-prop\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-danger.md\n // Disallow usage of dangerous JSX properties\n \"react/no-danger\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-danger-with-children.md\n // Disallow when a DOM element is using both children and dangerouslySetInnerHTML\n \"react/no-danger-with-children\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-deprecated.md\n // Disallow usage of deprecated methods\n \"react/no-deprecated\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-did-mount-set-state.md\n // Disallow usage of setState in componentDidMount\n \"react/no-did-mount-set-state\": [\"error\", \"disallow-in-func\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-did-update-set-state.md\n // Disallow usage of setState in componentDidUpdate\n \"react/no-did-update-set-state\": [\"error\", \"disallow-in-func\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-direct-mutation-state.md\n // Disallow direct mutation of this.state\n \"react/no-direct-mutation-state\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-find-dom-node.md\n // Disallow usage of findDOMNode\n \"react/no-find-dom-node\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-invalid-html-attribute.md\n // Disallow usage of invalid attributes\n \"react/no-invalid-html-attribute\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-is-mounted.md\n // Disallow usage of isMounted\n \"react/no-is-mounted\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-multi-comp.md\n // Disallow multiple component definition per file\n \"react/no-multi-comp\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-namespace.md\n // Enforce that namespaces are not used in React elements\n \"react/no-namespace\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-object-type-as-default-prop.md\n // Disallow usage of referential-type variables as default param in functional component\n \"react/no-object-type-as-default-prop\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-redundant-should-component-update.md\n // Disallow usage of shouldComponentUpdate when extending React.PureComponent\n \"react/no-redundant-should-component-update\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-render-return-value.md\n // Disallow usage of the return value of ReactDOM.render\n \"react/no-render-return-value\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-set-state.md\n // Disallow usage of setState\n \"react/no-set-state\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-string-refs.md\n // Disallow using string references\n \"react/no-string-refs\": [\"error\", { noTemplateLiterals: true }],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-this-in-sfc.md\n // Disallow this from being used in stateless functional components\n \"react/no-this-in-sfc\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-typos.md\n // Disallow common typos\n \"react/no-typos\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-unescaped-entities.md\n // Disallow unescaped HTML entities from appearing in markup\n \"react/no-unescaped-entities\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-unknown-property.md\n // Disallow usage of unknown DOM property\n \"react/no-unknown-property\": [\"warn\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-unsafe.md\n // Disallow usage of unsafe lifecycle methods\n // Disabled in recommended configs\n \"react/no-unsafe\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-unstable-nested-components.md\n // Disallow creating unstable components inside components\n \"react/no-unstable-nested-components\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-unused-class-component-methods.md\n // Disallow declaring unused methods of component class\n \"react/no-unused-class-component-methods\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-unused-prop-types.md\n // Disallow definitions of unused propTypes\n \"react/no-unused-prop-types\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-unused-state.md\n // Disallow definitions of unused state\n \"react/no-unused-state\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-will-update-set-state.md\n // Disallow usage of setState in componentWillUpdate\n \"react/no-will-update-set-state\": [\"error\", \"disallow-in-func\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/prefer-es6-class.md\n // Enforce ES5 or ES6 class for React Components\n \"react/prefer-es6-class\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/prefer-exact-props.md\n // Prefer exact prop type definitions\n \"react/prefer-exact-props\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/prefer-read-only-props.md\n // Enforce that props are read-only\n \"react/prefer-read-only-props\": [\"warn\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/prefer-stateless-function.md\n // Enforce stateless components to be written as a pure function\n \"react/prefer-stateless-function\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/prop-types.md\n // Disallow missing props validation in a React component definition\n \"react/prop-types\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/react-in-jsx-scope.md\n // Disallow missing React when using JSX\n // Disable this rule because react 17 doesn't need to import React to use JSX\n \"react/react-in-jsx-scope\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/require-default-props.md\n // Enforce a defaultProps definition for every prop that is not a required prop\n \"react/require-default-props\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/require-optimization.md\n // Enforce React components to have a shouldComponentUpdate method\n \"react/require-optimization\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/require-render-return.md\n // Enforce ES5 or ES6 class for returning value in render function\n \"react/require-render-return\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/self-closing-comp.md\n // Disallow extra closing tags for components without children\n \"react/self-closing-comp\": [\"warn\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/sort-comp.md\n // Enforce component methods order\n \"react/sort-comp\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/sort-default-props.md\n // Enforce defaultProps declarations alphabetical sorting\n \"react/sort-default-props\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/sort-prop-types.md\n // Enforce propTypes declarations alphabetical sorting\n \"react/sort-prop-types\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/state-in-constructor.md\n // Enforce class component state initialization style\n \"react/state-in-constructor\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/static-property-placement.md\n // Enforces where React component static properties should be positioned.\n \"react/static-property-placement\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/style-prop-object.md\n // Enforce style prop value is an object\n \"react/style-prop-object\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/void-dom-elements-no-children.md\n // Disallow void DOM elements (e.g. <img />, <br />) from receiving children\n \"react/void-dom-elements-no-children\": [\"error\"]\n} as const satisfies Linter.RulesRecord;\n","// Plugins\nimport reactPlugin from \"eslint-plugin-react\";\nimport { configs as reactHooksConfigs } from \"eslint-plugin-react-hooks\";\nimport reactRefreshPlugin from \"eslint-plugin-react-refresh\";\n\n// Custom Rules\nimport type { Linter } from \"eslint\";\nimport reactRules from \"../rules/react\";\nimport baseConfig from \"./base\";\n\nexport default [\n ...baseConfig,\n reactHooksConfigs.flat[\"recommended-latest\"],\n reactRefreshPlugin.configs.recommended,\n\n // React Plugin\n {\n files: [\"**/*.{js,mjs,cjs,jsx,mjsx,ts,tsx,mtsx}\"],\n ...reactPlugin.configs.flat.recommended,\n\n settings: {\n react: {\n version: \"detect\"\n }\n },\n rules: {\n ...reactRules\n }\n }\n] as Linter.Config[];\n","import type { Linter } from \"eslint\";\n\nexport default {\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-deprecated.md\n // Forbid imported names marked with @deprecated documentation tag.\n \"import-x/no-deprecated\": [\"error\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-empty-named-blocks.md\n // Forbid empty named import blocks.\n \"import-x/no-empty-named-blocks\": [\"warn\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-extraneous-dependencies.md\n // Forbid the use of extraneous packages.\n \"import-x/no-extraneous-dependencies\": [\n \"error\",\n { devDependencies: false, optionalDependencies: false }\n ],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-mutable-exports.md\n // Forbid the use of mutable exports with var or let.\n \"import-x/no-mutable-exports\": [\"error\"],\n\n // https://github.com/un-ts/eslint-plugin-import-x/blob/HEAD/docs/rules/no-rename-default.md\n // Prohibit importing a default export by another name.\n \"import-x/no-rename-default\": [\"off\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-unused-modules.md\n // Forbid modules without exports, or exports without matching import in another module.\n // TODO: Can be enabled\n \"import-x/no-unused-modules\": [\"off\", { missingExports: true }],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-amd.md\n // Forbid AMD require and define calls.\n \"import-x/no-amd\": [\"error\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-commonjs.md\n // Forbid CommonJS require calls and module.exports or exports.*.\n \"import-x/no-commonjs\": [\"error\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-import-module-exports.md\n // Forbid import statements with CommonJS module.exports.\n \"import-x/no-import-module-exports\": [\"warn\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-nodejs-modules.md\n // Forbid Node.js builtin modules.\n // TODO: Can enable for front-end\n \"import-x/no-nodejs-modules\": [\"off\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/unambiguous.md\n // Forbid potentially ambiguous parse goal (script vs. module).\n \"import-x/unambiguous\": [\"error\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-absolute-path.md\n // Forbid import of modules using absolute paths.\n \"import-x/no-absolute-path\": [\"warn\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-cycle.md\n // Forbid a module from importing a module with a dependency path back to itself.\n \"import-x/no-cycle\": [\"error\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-dynamic-require.md\n // Forbid require() calls with expressions.\n \"import-x/no-dynamic-require\": [\"off\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-internal-modules.md\n // Forbid importing the submodules of other modules.\n // TODO: Must define in the project\n \"import-x/no-internal-modules\": [\"off\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-relative-packages.md\n // Forbid importing packages through relative paths.\n \"import-x/no-relative-packages\": [\"warn\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-relative-parent-imports.md\n // Forbid importing modules from parent directories.\n \"import-x/no-relative-parent-imports\": [\"off\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-restricted-paths.md\n // Enforce which files can be imported in a given folder.\n // TODO: Can be customized\n // \"import-x/no-restricted-paths\": [\"off\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-self-import.md\n // Forbid a module from importing itself.\n \"import-x/no-self-import\": [\"error\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-useless-path-segments.md\n // Forbid unnecessary path segments in import and require statements.\n \"import-x/no-useless-path-segments\": [\n \"warn\",\n {\n noUselessIndex: true\n }\n ],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-webpack-loader-syntax.md\n // Forbid webpack loader syntax in imports.\n \"import-x/no-webpack-loader-syntax\": [\"error\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/consistent-type-specifier-style.md\n // Enforce or ban the use of inline type-only markers for named imports.\n \"import-x/consistent-type-specifier-style\": [\"warn\", \"prefer-top-level\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/dynamic-import-chunkname.md\n // Enforce a leading comment with the webpackChunkName for dynamic imports.\n \"import-x/dynamic-import-chunkname\": [\"off\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/exports-last.md\n // Ensure all exports appear after other statements.\n // TODO: Can be enabled\n \"import-x/exports-last\": [\"off\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/extensions.md\n // Ensure consistent use of file extension within the import path.\n \"import-x/extensions\": [\"error\", \"never\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/first.md\n // Ensure all imports appear before other statements.\n \"import-x/first\": [\"warn\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/group-exports.md\n // Prefer named exports to be grouped together in a single export declaration\n // TODO: Can be enabled\n \"import-x/group-exports\": [\"off\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/max-dependencies.md\n // Enforce the maximum number of dependencies a module can have.\n \"import-x/max-dependencies\": [\"off\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/newline-after-import.md\n // Enforce a newline after import statements.\n \"import-x/newline-after-import\": [\"warn\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-anonymous-default-export.md\n // Forbid anonymous values as default exports.\n \"import-x/no-anonymous-default-export\": [\n \"error\",\n {\n allowArray: false,\n allowArrowFunction: true,\n allowAnonymousClass: false,\n allowAnonymousFunction: false,\n\n // The true value here is for backward compatibility\n allowCallExpression: true,\n allowNew: false,\n allowLiteral: false,\n allowObject: false\n }\n ],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-default-export.md\n // Forbid default exports.\n \"import-x/no-default-export\": [\"off\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-named-default.md\n // Forbid named default exports.\n \"import-x/no-named-default\": [\"off\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-named-export.md\n // Forbid named exports.\n \"import-x/no-named-export\": [\"off\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-namespace.md\n // Forbid namespace (a.k.a. \"wildcard\" *) imports.\n \"import-x/no-namespace\": [\"warn\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-unassigned-import.md\n // Forbid unassigned imports\n \"import-x/no-unassigned-import\": [\"error\", { allow: [\"**/*.css\"] }],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/order.md\n // Enforce a convention in module import order.\n \"import-x/order\": [\"warn\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/prefer-default-export.md\n // Prefer a default export if module exports a single name or multiple names.\n \"import-x/prefer-default-export\": [\"off\"]\n} as const satisfies Linter.RulesRecord;\n","import { flatConfigs as importXFlatConfigs } from \"eslint-plugin-import-x\";\nimport { createTypeScriptImportResolver } from \"eslint-import-resolver-typescript\";\nimport unusedImports from \"eslint-plugin-unused-imports\";\n\n// Custom Rules\nimport type { Linter } from \"eslint\";\nimport type { TypeScriptResolverOptions } from \"eslint-import-resolver-typescript\";\nimport importXRules from \"../rules/import\";\nimport type { TypescriptOptions } from \"../types\";\n\nexport default function importConfig(typescript?: TypescriptOptions): Linter.Config[] {\n const resolverOptions: TypeScriptResolverOptions = { alwaysTryTypes: true, bun: true };\n\n if (typescript !== undefined) {\n resolverOptions.project = typescript.project;\n }\n\n return [\n importXFlatConfigs.recommended,\n importXFlatConfigs.typescript,\n\n // ESLint Plugin Import\n {\n files: [\"**/*.{js,mjs,cjs,ts,jsx,tsx}\"],\n plugins: {\n \"unused-imports\": unusedImports\n },\n settings: {\n \"import-x/resolver-next\": [createTypeScriptImportResolver(resolverOptions)]\n },\n rules: {\n ...importXRules,\n\n // unused-imports\n \"unused-imports/no-unused-imports\": [\"error\"]\n }\n }\n ] as Linter.Config[];\n}\n","// Plugins\nimport eslintConfigPrettier from \"eslint-config-prettier\";\nimport type { Linter } from \"eslint\";\n\nexport default [eslintConfigPrettier] as Linter.Config[];\n","import type { Linter } from \"eslint\";\n\nexport default {\n // https://eslint.style/rules/default/array-bracket-newline\n // Enforce linebreaks after opening and before closing array brackets\n \"@stylistic/array-bracket-newline\": [\"warn\"],\n\n // https://eslint.style/rules/default/array-bracket-spacing\n // Enforce consistent spacing inside array brackets\n \"@stylistic/array-bracket-spacing\": [\"warn\"],\n\n // https://eslint.style/rules/default/array-element-newline\n // Enforce line breaks after each array element\n \"@stylistic/array-element-newline\": [\"warn\", \"consistent\"],\n\n // https://eslint.style/rules/default/arrow-parens\n // Require parentheses around arrow function arguments\n \"@stylistic/arrow-parens\": [\"warn\", \"always\"],\n\n // https://eslint.style/rules/default/arrow-spacing\n // Enforce consistent spacing before and after the arrow in arrow functions\n \"@stylistic/arrow-spacing\": [\"warn\"],\n\n // https://eslint.style/rules/default/block-spacing\n // Disallow or enforce spaces inside of blocks after opening block and before closing block\n \"@stylistic/block-spacing\": [\"warn\"],\n\n // https://eslint.style/rules/default/brace-style\n // Enforce consistent brace style for blocks\n \"@stylistic/brace-style\": [\"warn\", \"1tbs\"],\n\n // https://eslint.style/rules/default/comma-dangle\n // Require or disallow trailing commas\n \"@stylistic/comma-dangle\": [\"warn\"],\n\n // https://eslint.style/rules/default/comma-spacing\n // Enforce consistent spacing before and after commas\n \"@stylistic/comma-spacing\": [\"warn\"],\n\n // https://eslint.style/rules/default/comma-style\n // Enforce consistent comma style\n \"@stylistic/comma-style\": [\"warn\"],\n\n // https://eslint.style/rules/default/computed-property-spacing\n // Enforce consistent spacing inside computed property brackets\n \"@stylistic/computed-property-spacing\": [\"warn\"],\n\n // https://eslint.style/rules/default/curly-newline\n // Enforce consistent line breaks after opening and before closing braces\n \"@stylistic/curly-newline\": [\"warn\", \"always\"],\n\n // https://eslint.style/rules/default/dot-location\n // Enforce consistent newlines before and after dots\n \"@stylistic/dot-location\": [\"warn\", \"property\"],\n\n // https://eslint.style/rules/default/eol-last\n // Require or disallow newline at the end of files\n \"@stylistic/eol-last\": [\"warn\"],\n\n // https://eslint.style/rules/default/function-call-spacing\n // Require or disallow spacing between function identifiers and their invocations. Alias of `function-call-spacing`.\n \"@stylistic/function-call-spacing\": [\"warn\"],\n\n // https://eslint.style/rules/default/function-call-argument-newline\n // Enforce line breaks between arguments of a function call\n \"@stylistic/function-call-argument-newline\": [\"warn\", \"consistent\"],\n\n // https://eslint.style/rules/default/function-paren-newline\n // Enforce consistent line breaks inside function parentheses\n \"@stylistic/function-paren-newline\": [\"warn\", \"consistent\"],\n\n // https://eslint.style/rules/default/generator-star-spacing\n // Enforce consistent spacing around `*` operators in generator functions\n \"@stylistic/generator-star-spacing\": [\"warn\"],\n\n // https://eslint.style/rules/default/implicit-arrow-linebreak\n // Enforce the location of arrow function bodies\n \"@stylistic/implicit-arrow-linebreak\": [\"warn\"],\n\n // https://eslint.style/rules/default/indent\n // Enforce consistent indentation\n \"@stylistic/indent\": [\"warn\", 2],\n\n // https://eslint.style/rules/default/indent-binary-ops\n // Indentation for binary operators\n \"@stylistic/indent-binary-ops\": [\"warn\", 2],\n\n // https://eslint.style/rules/default/jsx-child-element-spacing\n // Enforce or disallow spaces inside curly braces in JSX attributes and expressions\n \"@stylistic/jsx-child-element-spacing\": [\"error\"],\n\n // https://eslint.style/rules/default/jsx-closing-bracket-location\n // Enforce closing bracket location in JSX\n \"@stylistic/jsx-closing-bracket-location\": [\"warn\"],\n\n // https://eslint.style/rules/default/jsx-closing-tag-location\n // Enforce closing tag location for multiline JSX\n \"@stylistic/jsx-closing-tag-location\": [\"warn\"],\n\n // https://eslint.style/rules/default/jsx-curly-brace-presence\n // Disallow unnecessary JSX expressions when literals alone are sufficient or enforce JSX expressions on literals in JSX children or attributes\n \"@stylistic/jsx-curly-brace-presence\": [\"warn\"],\n\n // https://eslint.style/rules/default/jsx-curly-newline\n // Enforce consistent linebreaks in curly braces in JSX attributes and expressions\n \"@stylistic/jsx-curly-newline\": [\"warn\"],\n\n // https://eslint.style/rules/default/jsx-curly-spacing\n // Enforce or disallow spaces inside curly braces in JSX attributes and expressions\n \"@stylistic/jsx-curly-spacing\": [\"warn\"],\n\n // https://eslint.style/rules/default/jsx-equals-spacing\n // Enforce or disallow spaces around equal signs in JSX attributes\n \"@stylistic/jsx-equals-spacing\": [\"warn\"],\n\n // https://eslint.style/rules/default/jsx-first-prop-new-line\n // Enforce proper position of the first property in JSX\n \"@stylistic/jsx-first-prop-new-line\": [\"warn\"],\n\n // https://eslint.style/rules/default/jsx-function-call-newline\n // Enforce line breaks before and after JSX elements when they are used as arguments to a function.\n \"@stylistic/jsx-function-call-newline\": [\"warn\"],\n\n // https://eslint.style/rules/default/jsx-indent-props\n // Enforce props indentation in JSX\n \"@stylistic/jsx-indent-props\": [\"warn\", 2],\n\n // https://eslint.style/rules/default/jsx-max-props-per-line\n // Enforce maximum of props on a single line in JSX\n \"@stylistic/jsx/jsx-max-props-per-line\": [\"off\"],\n\n // https://eslint.style/rules/default/jsx-newline\n // Require or prevent a new line after jsx elements and expressions.\n \"@stylistic/jsx-newline\": [\"off\"],\n\n // https://eslint.style/rules/default/jsx-one-expression-per-line\n // Require one JSX element per line\n \"@stylistic/jsx-one-expression-per-line\": [\"warn\", { allow: \"single-child\" }],\n\n // https://eslint.style/rules/default/jsx-pascal-case\n // Enforce PascalCase for user-defined JSX components\n \"@stylistic/jsx-pascal-case\": [\"error\"],\n\n // https://eslint.style/rules/default/jsx-quotes\n // Enforce the consistent use of either double or single quotes in JSX attributes\n \"@stylistic/jsx-quotes\": [\"warn\"],\n\n // https://eslint.style/rules/default/jsx-self-closing-comp\n // Disallow extra closing tags for components without children\n \"@stylistic/jsx-self-closing-comp\": [\"warn\"],\n\n // https://eslint.style/rules/default/jsx-sort-props\n // Enforce props alphabetical sorting\n \"@stylistic/jsx-sort-props\": [\n \"warn\",\n {\n callbacksLast: true,\n shorthandFirst: true,\n\n // shorthandLast: false,\n multiline: \"last\",\n\n // ignoreCase: false,\n noSortAlphabetically: true\n\n // reservedFirst: true\n // locale: \"auto\"\n }\n ],\n\n // https://eslint.style/rules/default/jsx-tag-spacing\n // Enforce whitespace in and around the JSX opening and closing brackets\n \"@stylistic/jsx-tag-spacing\": [\n \"warn\",\n {\n closingSlash: \"never\",\n beforeSelfClosing: \"always\",\n afterOpening: \"never\",\n beforeClosing: \"never\"\n }\n ],\n\n // https://eslint.style/rules/default/jsx-wrap-multilines\n // Disallow missing parentheses around multiline JSX\n \"@stylistic/jsx-wrap-multilines\": [\n \"warn\",\n {\n declaration: \"parens-new-line\",\n assignment: \"parens-new-line\",\n return: \"parens-new-line\",\n arrow: \"parens-new-line\",\n condition: \"parens-new-line\",\n logical: \"parens-new-line\",\n prop: \"parens-new-line\"\n }\n ],\n\n // https://eslint.style/rules/default/key-spacing\n // Enforce consistent spacing between keys and values in object literal properties\n \"@stylistic/key-spacing\": \"warn\",\n\n // https://eslint.style/rules/default/keyword-spacing\n // Enforce consistent spacing before and after keywords\n \"@stylistic/keyword-spacing\": \"warn\",\n\n // https://eslint.style/rules/default/line-comment-position\n // Enforce position of line comments\n \"@stylistic/line-comment-position\": \"warn\",\n\n // https://eslint.style/rules/default/linebreak-style\n // Enforce consistent linebreak style\n \"@stylistic/linebreak-style\": \"warn\",\n\n // https://eslint.style/rules/default/lines-around-comment\n // Require empty lines around comments\n \"@stylistic/lines-around-comment\": [\n \"warn\",\n {\n beforeBlockComment: true,\n afterBlockComment: false,\n beforeLineComment: true,\n afterLineComment: false,\n allowBlockStart: true,\n allowBlockEnd: true,\n allowObjectStart: true,\n allowObjectEnd: true,\n allowArrayStart: true,\n allowArrayEnd: true,\n allowClassStart: true,\n allowClassEnd: true,\n afterHashbangComment: true\n }\n ],\n\n // https://eslint.style/rules/default/lines-between-class-members\n // Require or disallow an empty line between class members\n \"@stylistic/lines-between-class-members\": [\n \"warn\",\n {\n enforce: [\n {\n blankLine: \"never\",\n prev: \"field\",\n next: \"field\"\n },\n {\n blankLine: \"always\",\n prev: \"*\",\n next: \"method\"\n },\n {\n blankLine: \"always\",\n prev: \"method\",\n next: \"*\"\n }\n ]\n }\n ],\n\n // https://eslint.style/rules/default/max-len\n // Enforce a maximum line length\n \"@stylistic/max-len\": [\n \"error\",\n {\n code: 120,\n tabWidth: 2,\n comments: 120,\n\n // ignorePattern: true,\n ignoreComments: true,\n ignoreTrailingComments: true,\n ignoreUrls: true,\n ignoreStrings: true,\n ignoreTemplateLiterals: true,\n ignoreRegExpLiterals: true\n }\n ],\n\n // https://eslint.style/rules/default/max-statements-per-line\n // Enforce a maximum number of statements allowed per line\n \"@stylistic/max-statements-per-line\": [\"error\"],\n\n // https://eslint.style/rules/default/member-delimiter-style\n // Require a specific member delimiter style for interfaces and type literals\n \"@stylistic/member-delimiter-style\": [\"warn\"],\n\n // https://eslint.style/rules/default/multiline-comment-style\n // Enforce a particular style for multiline comments\n \"@stylistic/multiline-comment-style\": [\"off\"],\n\n // https://eslint.style/rules/default/multiline-ternary\n // Enforce newlines between operands of ternary expressions\n \"@stylistic/multiline-ternary\": [\"warn\", \"always-multiline\"],\n\n // https://eslint.style/rules/default/new-parens\n // Enforce or disallow parentheses when invoking a constructor with no arguments\n \"@stylistic/new-parens\": [\"warn\"],\n\n // https://eslint.style/rules/default/newline-per-chained-call\n // Require a newline after each call in a method chain\n \"@stylistic/newline-per-chained-call\": [\"warn\"],\n\n // https://eslint.style/rules/default/no-confusing-arrow\n // Disallow arrow functions where they could be confused with comparisons\n \"@stylistic/no-confusing-arrow\": [\"warn\"],\n\n // https://eslint.style/rules/default/no-extra-parens\n // Disallow unnecessary parentheses\n \"@stylistic/no-extra-parens\": [\"warn\"],\n\n // https://eslint.style/rules/default/no-extra-semi\n // Disallow unnecessary semicolons\n \"@stylistic/no-extra-semi\": [\"warn\"],\n\n // https://eslint.style/rules/default/no-floating-decimal\n // Disallow leading or trailing decimal points in numeric literals\n \"@stylistic/no-floating-decimal\": [\"warn\"],\n\n // https://eslint.style/rules/default/no-mixed-operators\n // Disallow mixed binary operators\n \"@stylistic/no-mixed-operators\": [\"error\"],\n\n // https://eslint.style/rules/default/no-mixed-spaces-and-tabs\n // Disallow mixed spaces and tabs for indentation\n \"@stylistic/no-mixed-spaces-and-tabs\": [\"error\"],\n\n // https://eslint.style/rules/default/no-multi-spaces\n // Disallow multiple spaces\n \"@stylistic/no-multi-spaces\": [\"warn\"],\n\n // https://eslint.style/rules/default/no-multiple-empty-lines\n // Disallow multiple empty lines\n \"@stylistic/no-multiple-empty-lines\": [\"warn\"],\n\n // https://eslint.style/rules/default/no-tabs\n // Disallow all tabs\n \"@stylistic/no-tabs\": [\"error\"],\n\n // https://eslint.style/rules/default/no-trailing-spaces\n // Disallow trailing whitespace at the end of lines\n \"@stylistic/no-trailing-spaces\": [\"warn\"],\n\n // https://eslint.style/rules/default/no-whitespace-before-property\n // Disallow whitespace before properties\n \"@stylistic/no-whitespace-before-property\": [\"warn\"],\n\n // https://eslint.style/rules/default/nonblock-statement-body-position\n // Enforce the location of single-line statements\n \"@stylistic/nonblock-statement-body-position\": [\"warn\"],\n\n // https://eslint.style/rules/default/object-curly-newline\n // Enforce consistent line breaks after opening and before closing braces\n \"@stylistic/object-curly-newline\": [\n \"warn\",\n {\n consistent: true\n }\n ],\n\n // https://eslint.style/rules/default/object-curly-spacing\n // Enforce consistent spacing inside braces\n \"@stylistic/object-curly-spacing\": [\"warn\"],\n\n // https://eslint.style/rules/default/object-property-newline\n // Enforce placing object properties on separate lines\n \"@stylistic/object-property-newline\": [\n \"warn\",\n {\n allowAllPropertiesOnSameLine: true\n }\n ],\n\n // https://eslint.style/rules/default/one-var-declaration-per-line\n // Require or disallow newlines around variable declarations\n \"@stylistic/one-var-declaration-per-line\": [\"warn\"],\n\n // https://eslint.style/rules/default/operator-linebreak\n // Enforce consistent linebreak style for operators\n \"@stylistic/operator-linebreak\": [\"warn\"],\n\n // https://eslint.style/rules/default/padded-blocks\n // Require or disallow padding within blocks\n \"@stylistic/padded-blocks\": [\"warn\", \"never\"],\n\n // https://eslint.style/rules/default/padding-line-between-statements\n // Require or disallow padding lines between statements\n \"@stylistic/padding-line-between-statements\": [\n \"warn\",\n {\n blankLine: \"always\",\n prev: \"*\",\n next: \"return\"\n },\n {\n blankLine: \"always\",\n prev: \"*\",\n next: \"block-like\"\n },\n {\n blankLine: \"always\",\n prev: \"block-like\",\n next: \"*\"\n },\n {\n blankLine: \"always\",\n prev: \"case\",\n next: \"case\"\n },\n {\n blankLine: \"never\",\n prev: \"*\",\n next: \"break\"\n },\n {\n blankLine: \"always\",\n prev: \"*\",\n next: \"export\"\n },\n {\n blankLine: \"always\",\n prev: \"*\",\n next: \"interface\"\n },\n {\n blankLine: \"always\",\n prev: \"interface\",\n next: \"*\"\n },\n {\n blankLine: \"always\",\n prev: \"*\",\n next: \"class\"\n },\n {\n blankLine: \"always\",\n prev: \"class\",\n next: \"*\"\n }\n ],\n\n // https://eslint.style/rules/default/quote-props\n // Require quotes around object literal property names\n \"@stylistic/quote-props\": [\"warn\", \"as-needed\"],\n\n // https://eslint.style/rules/default/quotes\n // Enforce the consistent use of either backticks, double, or single quotes\n \"@stylistic/quotes\": [\"warn\"],\n\n // https://eslint.style/rules/default/rest-spread-spacing\n // Enforce spacing between rest and spread operators and their expressions\n \"@stylistic/rest-spread-spacing\": [\"warn\"],\n\n // https://eslint.style/rules/default/semi\n // Require or disallow semicolons instead of ASI\n \"@stylistic/semi\": [\"warn\"],\n\n // https://eslint.style/rules/default/semi-spacing\n // Enforce consistent spacing before and after semicolons\n \"@stylistic/semi-spacing\": [\"warn\"],\n\n // https://eslint.style/rules/default/semi-style\n // Enforce location of semicolons\n \"@stylistic/semi-style\": [\"warn\"],\n\n // https://eslint.style/rules/default/space-before-blocks\n // Enforce consistent spacing before blocks\n \"@stylistic/space-before-blocks\": [\"warn\"],\n\n // https://eslint.style/rules/default/space-before-function-paren\n // Enforce consistent spacing before `function` definition opening parenthesis\n \"@stylistic/space-before-function-paren\": [\n \"warn\",\n {\n anonymous: \"always\",\n named: \"never\",\n asyncArrow: \"always\"\n }\n ],\n\n // https://eslint.style/rules/default/space-in-parens\n // Enforce consistent spacing inside parentheses\n \"@stylistic/space-in-parens\": [\"warn\"],\n\n // https://eslint.style/rules/default/space-infix-ops\n // Require spacing around infix operators\n \"@stylistic/space-infix-ops\": [\"warn\"],\n\n // https://eslint.style/rules/default/space-unary-ops\n // Enforce consistent spacing before or after unary operators\n \"@stylistic/space-unary-ops\": [\"warn\"],\n\n // https://eslint.style/rules/default/spaced-comment\n // Enforce consistent spacing after the `//` or `/*` in a comment\n \"@stylistic/spaced-comment\": [\"warn\"],\n\n // https://eslint.style/rules/default/switch-colon-spacing\n // Enforce spacing around colons of switch statements\n \"@stylistic/switch-colon-spacing\": [\"warn\"],\n\n // https://eslint.style/rules/default/template-curly-spacing\n // Require or disallow spacing around embedded expressions of template strings\n \"@stylistic/template-curly-spacing\": [\"warn\"],\n\n // https://eslint.style/rules/default/template-tag-spacing\n // Require or disallow spacing between template tags and their literals\n \"@stylistic/template-tag-spacing\": [\"warn\"],\n\n // https://eslint.style/rules/default/type-annotation-spacing\n // Require consistent spacing around type annotations\n \"@stylistic/type-annotation-spacing\": [\"warn\"],\n\n // https://eslint.style/rules/default/type-generic-spacing\n // Enforces consistent spacing inside TypeScript type generics\n \"@stylistic/type-generic-spacing\": [\"warn\"],\n\n // https://eslint.style/rules/default/type-named-tuple-spacing\n // Expect space before the type declaration in the named tuple\n \"@stylistic/type-named-tuple-spacing\": [\"warn\"],\n\n // https://eslint.style/rules/default/wrap-iife\n // Require parentheses around immediate `function` invocations\n \"@stylistic/wrap-iife\": [\"warn\", \"inside\"],\n\n // https://eslint.style/rules/default/wrap-regex\n // Require parenthesis around regex literals\n \"@stylistic/wrap-regex\": [\"warn\"],\n\n // https://eslint.style/rules/default/yield-star-spacing\n // Require or disallow spacing around the `*` in `yield*` expressions\n \"@stylistic/yield-star-spacing\": [\"warn\", \"after\"]\n} as const satisfies Linter.RulesRecord;\n","import stylistic from \"@stylistic/eslint-plugin\";\nimport type { Linter } from \"eslint\";\nimport stylisticRules from \"../rules/stylistic\";\n\nexport default [\n // Stylistic Configs\n stylistic.configs.customize({\n jsx: true,\n arrowParens: true,\n blockSpacing: true,\n braceStyle: \"stroustrup\",\n commaDangle: \"never\",\n indent: 2,\n semi: true,\n quotes: \"double\",\n quoteProps: \"always\"\n }),\n\n // Stylistic Rules\n {\n files: [\"**/*.{js,mjs,cjs,ts,jsx,tsx}\"],\n languageOptions: {\n parserOptions: {\n ecmaFeatures: {\n jsx: true\n }\n }\n },\n rules: stylisticRules\n }\n] as Linter.Config[];\n","import type { Linter } from \"eslint\";\nimport globals from \"globals\";\nimport type { TSESLint } from \"@typescript-eslint/utils\";\nimport reactPlugin from \"eslint-plugin-react\";\nimport nodeConfig from \"./configs/node\";\nimport reactConfig from \"./configs/react\";\nimport importConfig from \"./configs/import\";\nimport prettierFormatter from \"./configs/prettierFormatter\";\nimport stylisticFormatter from \"./configs/stylisticFormatter\";\nimport type { Options, TypescriptOptions } from \"./types\";\n\nfunction node(typescript?: TypescriptOptions): TSESLint.FlatConfig.Config[\"languageOptions\"] {\n return {\n globals: globals.node,\n parserOptions: {\n ecmaVersion: \"latest\",\n tsconfigRootDir: typescript?.tsconfigRootDir,\n project: typescript?.project\n }\n };\n}\n\nfunction react(typescript?: TypescriptOptions): TSESLint.FlatConfig.Config[\"languageOptions\"] {\n return {\n ...reactPlugin.configs.flat.recommended.languageOptions,\n globals: {\n ...globals.serviceworker,\n ...globals.browser\n },\n parserOptions: {\n tsconfigRootDir: typescript?.tsconfigRootDir,\n project: typescript?.project\n }\n };\n}\n\nexport function createConfig(opt: Options): Linter.Config[] {\n let config: Linter.Config[];\n\n if (opt.platform === \"node\") {\n config = nodeConfig;\n\n config.push({\n files: [\"**/*.{ts,js}\"],\n languageOptions: node(opt.typescript) as unknown as Linter.LanguageOptions\n });\n } else {\n config = reactConfig;\n\n config.push({\n files: [\"**/*.{js,mjs,cjs,jsx,mjsx,ts,tsx,mtsx}\"],\n languageOptions: react(opt.typescript) as unknown as Linter.LanguageOptions\n });\n }\n\n if (opt.useImport === true) {\n config.push(...importConfig(opt.typescript));\n }\n\n config.push(...(opt.style === \"stylistic\" ? stylisticFormatter : prettierFormatter));\n\n if (opt.overrides !== undefined) {\n config.push(...opt.overrides);\n }\n\n if (opt.ignores !== undefined) {\n config.push({ ignores: opt.ignores });\n }\n\n return config;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["eslintJS","eslintTSConfigs","eslintPluginUnicorn","javascriptRules","typescriptRules","unicornRules","baseConfig","reactHooksConfigs","reactRefreshPlugin","reactPlugin","reactRules","importXFlatConfigs","unusedImports","importXRules","eslintConfigPrettier","stylistic","stylisticRules","reactPlugin","nodeConfig","reactConfig","stylisticFormatter","prettierFormatter"],"sources":["../src/rules/javascript.ts","../src/rules/typescript.ts","../src/rules/unicorn.ts","../src/configs/base.ts","../src/rules/react.ts","../src/configs/react.ts","../src/rules/import.ts","../src/configs/import.ts","../src/configs/prettierFormatter.ts","../src/rules/stylistic.ts","../src/configs/stylisticFormatter.ts","../src/index.ts"],"sourcesContent":["import type { Linter } from \"eslint\";\n\nexport default {\n // https://eslint.org/docs/latest/rules/eqeqeq\n // Require the use of === and !==\n eqeqeq: [\"warn\"],\n\n // https://eslint.org/docs/latest/rules/curly\n // Enforce consistent brace style for all control statements\n curly: [\"warn\", \"all\"],\n\n // https://eslint.org/docs/latest/rules/no-restricted-imports\n // Disallow specified modules when loaded by import\n \"no-restricted-imports\": [\n \"error\",\n {\n patterns: [\n {\n regex: \"^(node:)?process$\",\n message: \"Please dont import node:process.\"\n }\n ]\n }\n ],\n\n // https://eslint.org/docs/latest/rules/no-unused-vars\n // Disallow unused variables\n \"no-unused-vars\": [\n \"error\",\n {\n args: \"all\",\n argsIgnorePattern: \"^_\",\n caughtErrors: \"all\",\n caughtErrorsIgnorePattern: \"^_\",\n destructuredArrayIgnorePattern: \"^_\",\n ignoreRestSiblings: true\n }\n ],\n\n // https://eslint.org/docs/latest/rules/no-fallthrough\n // Disallow fallthrough of case statements\n \"no-fallthrough\": [\n \"error\",\n {\n allowEmptyCase: true\n }\n ]\n} as const satisfies Linter.RulesRecord;\n","import type { Linter } from \"eslint\";\n\nexport default {\n // Enforce that class methods utilize this.\n // https://typescript-eslint.io/rules/class-methods-use-this\n // Note: you must disable the base rule as it can report incorrect errors\n \"class-methods-use-this\": \"off\",\n \"@typescript-eslint/class-methods-use-this\": [\n \"error\",\n {\n ignoreOverrideMethods: true,\n ignoreClassesThatImplementAnInterface: true\n }\n ],\n\n // Require return statements to either always or never specify values\n // https://typescript-eslint.io/rules/consistent-return/\n // Note: you must disable the base rule as it can report incorrect errors\n \"consistent-return\": \"off\",\n \"@typescript-eslint/consistent-return\": \"off\",\n\n // Enforce consistent usage of type exports.\n // https://typescript-eslint.io/rules/consistent-type-exports\n \"@typescript-eslint/consistent-type-exports\": [\n \"error\",\n {\n fixMixedExportsWithInlineTypeSpecifier: true\n }\n ],\n\n // Enforce consistent usage of type imports.\n // https://typescript-eslint.io/rules/consistent-type-imports\n \"@typescript-eslint/consistent-type-imports\": [\"error\"],\n\n // Enforce default parameters to be last.\n // https://typescript-eslint.io/rules/default-param-last\n // Note: you must disable the base rule as it can report incorrect errors\n \"default-param-last\": \"off\",\n \"@typescript-eslint/default-param-last\": [\"error\"],\n\n // Require explicit return types on functions and class methods.\n // https://typescript-eslint.io/rules/explicit-function-return-type\n \"@typescript-eslint/explicit-function-return-type\": [\n \"error\",\n {\n allowExpressions: true\n }\n ],\n\n // Require explicit accessibility modifiers on class properties and methods.\n // https://typescript-eslint.io/rules/explicit-member-accessibility\n \"@typescript-eslint/explicit-member-accessibility\": [\n \"error\",\n {\n accessibility: \"no-public\",\n overrides: {\n constructors: \"off\"\n }\n }\n ],\n\n // Require explicit return and argument types on exported functions' and classes' public class methods.\n // https://typescript-eslint.io/rules/explicit-module-boundary-types\n \"@typescript-eslint/explicit-module-boundary-types\": [\"error\"],\n\n // Require or disallow initialization in variable declarations.\n // https://typescript-eslint.io/rules/init-declarations\n // Note: you must disable the base rule as it can report incorrect errors\n \"init-declarations\": \"off\",\n \"@typescript-eslint/init-declarations\": [\"off\"],\n\n // Enforce a maximum number of parameters in function definitions.\n // https://typescript-eslint.io/rules/max-params\n // Note: you must disable the base rule as it can report incorrect errors\n \"max-params\": \"off\",\n \"@typescript-eslint/max-params\": [\"off\"],\n\n // Require a consistent member declaration order.\n // https://typescript-eslint.io/rules/member-ordering\n \"@typescript-eslint/member-ordering\": [\n \"error\",\n { default: [\"constructor\", \"field\", \"static-method\", \"method\", \"signature\"] }\n ],\n\n // Enforce using a particular method signature syntax.\n // https://typescript-eslint.io/rules/method-signature-style\n \"@typescript-eslint/method-signature-style\": [\"error\"],\n\n // Enforce naming conventions for everything across a codebase.\n // https://typescript-eslint.io/rules/naming-convention\n // TODO: We can split this rule. for components it enforces PascalCase and functions camelCase\n \"@typescript-eslint/naming-convention\": [\n \"error\",\n {\n selector: \"function\",\n format: [\"PascalCase\", \"camelCase\"]\n }\n ],\n\n // Disallow duplicate class members.\n // https://typescript-eslint.io/rules/no-dupe-class-members\n // Note: you must disable the base rule as it can report incorrect errors\n \"no-dupe-class-members\": \"off\",\n \"@typescript-eslint/no-dupe-class-members\": [\"off\"],\n\n // Enforce the use of top-level import type qualifier when an import only has specifiers with inline type qualifiers.\n // https://typescript-eslint.io/rules/no-import-type-side-effects\n \"@typescript-eslint/no-import-type-side-effects\": [\"error\"],\n\n // Disallow this keywords outside of classes or class-like objects.\n // https://typescript-eslint.io/rules/no-invalid-this\n // Note: you must disable the base rule as it can report incorrect errors\n \"no-invalid-this\": \"off\",\n \"@typescript-eslint/no-invalid-this\": [\"error\"],\n\n // Disallow function declarations that contain unsafe references inside loop statements.\n // https://typescript-eslint.io/rules/no-loop-func\n // Note: you must disable the base rule as it can report incorrect errors\n \"no-loop-func\": \"off\",\n \"@typescript-eslint/no-loop-func\": [\"error\"],\n\n // Disallow magic numbers.\n // https://typescript-eslint.io/rules/no-magic-numbers\n // Note: you must disable the base rule as it can report incorrect errors\n \"no-magic-numbers\": \"off\",\n \"@typescript-eslint/no-magic-numbers\": [\"off\"],\n\n // Disallow variable redeclaration.\n // https://typescript-eslint.io/rules/no-redeclare\n // Note: you must disable the base rule as it can report incorrect errors\n \"no-redeclare\": \"off\",\n \"@typescript-eslint/no-redeclare\": [\"off\"],\n\n // Disallow invocation of require().\n // https://typescript-eslint.io/rules/no-require-imports\n // Added to recommended\n // \"@typescript-eslint/no-require-imports\": [\"error\"],\n\n // Disallow specified modules when loaded by import.\n // https://typescript-eslint.io/rules/no-restricted-imports\n // Note: you must disable the base rule as it can report incorrect errors\n \"no-restricted-imports\": \"off\",\n \"@typescript-eslint/no-restricted-imports\": [\n \"error\",\n {\n patterns: [\n {\n regex: \"^(node:)?process$\",\n message: \"Please dont import node:process.\"\n }\n ]\n }\n ],\n\n // Disallow certain types\n // https://typescript-eslint.io/rules/no-restricted-types/\n // \"@typescript-eslint/no-restricted-types\": [\"off\"],\n\n // Disallow variable declarations from shadowing variables declared in the outer scope.\n // https://typescript-eslint.io/rules/no-shadow\n // Note: you must disable the base rule as it can report incorrect errors\n \"no-shadow\": \"off\",\n \"@typescript-eslint/no-shadow\": [\"error\"],\n\n // https://typescript-eslint.io/rules/no-unnecessary-parameter-property-assignment/\n // Disallow unnecessary assignment of constructor property parameter\n \"@typescript-eslint/no-unnecessary-parameter-property-assignment\": [\"off\"],\n\n // Disallow unnecessary namespace qualifiers.\n // https://typescript-eslint.io/rules/no-unnecessary-qualifier\n \"@typescript-eslint/no-unnecessary-qualifier\": [\"warn\"],\n\n // Disallow conversion idioms when they do not change the type or value of the expression\n // https://typescript-eslint.io/rules/no-unnecessary-type-conversion/\n \"@typescript-eslint/no-unnecessary-type-conversion\": [\"warn\"],\n\n // Disallow type assertions that narrow a type\n // https://typescript-eslint.io/rules/no-unsafe-type-assertion/\n \"@typescript-eslint/no-unsafe-type-assertion\": [\"off\"],\n\n // Require unary negation to take a number.\n // https://typescript-eslint.io/rules/no-unsafe-unary-minus\n // Added to recommended\n // \"@typescript-eslint/no-unsafe-unary-minus\": [\"error\"],\n\n // Disallow unused expressions.\n // https://typescript-eslint.io/rules/no-unused-expressions\n // Note: you must disable the base rule as it can report incorrect errors\n // Added to recommended\n // \"no-unused-expressions\": \"off\",\n // \"@typescript-eslint/no-unused-expressions\": [\"off\"],\n\n // Disallow the use of variables before they are defined.\n // https://typescript-eslint.io/rules/no-use-before-define\n // Note: you must disable the base rule as it can report incorrect errors\n \"no-use-before-define\": \"off\",\n \"@typescript-eslint/no-use-before-define\": [\"error\"],\n\n // Disallow empty exports that don't change anything in a module file.\n // https://typescript-eslint.io/rules/no-useless-empty-export\n \"@typescript-eslint/no-useless-empty-export\": [\"warn\"],\n\n // Require or disallow parameter properties in class constructors.\n // https://typescript-eslint.io/rules/parameter-properties\n \"@typescript-eslint/parameter-properties\": [\"error\"],\n\n // Require destructuring from arrays and/or objects.\n // https://typescript-eslint.io/rules/prefer-destructuring\n // Note: you must disable the base rule as it can report incorrect errors\n \"prefer-destructuring\": \"off\",\n \"@typescript-eslint/prefer-destructuring\": [\"off\"],\n\n // Require each enum member value to be explicitly initialized.\n // https://typescript-eslint.io/rules/prefer-enum-initializers\n \"@typescript-eslint/prefer-enum-initializers\": [\"off\"],\n\n // Enforce the use of Array.prototype.find() over Array.prototype.filter() followed by [0] when looking for a single result.\n // https://typescript-eslint.io/rules/prefer-find\n // Added to stylistic\n // \"@typescript-eslint/prefer-find\": [\"warn\"],\n\n // Require private members to be marked as readonly if they're never modified outside the constructor.\n // https://typescript-eslint.io/rules/prefer-readonly\n \"@typescript-eslint/prefer-readonly\": [\"warn\"],\n\n // Require function parameters to be typed as readonly to prevent accidental mutation of inputs.\n // https://typescript-eslint.io/rules/prefer-readonly-parameter-types\n \"@typescript-eslint/prefer-readonly-parameter-types\": [\"off\"],\n\n // Enforce RegExp#exec over String#match if no global flag is provided.\n // https://typescript-eslint.io/rules/prefer-regexp-exec\n // Added to stylistic\n // \"@typescript-eslint/prefer-regexp-exec\": [\"warn\"],\n\n // Require any function or method that returns a Promise to be marked async.\n // https://typescript-eslint.io/rules/promise-function-async\n \"@typescript-eslint/promise-function-async\": [\"error\"],\n\n // Require Array#sort and Array#toSorted calls to always provide a compareFunction.\n // https://typescript-eslint.io/rules/require-array-sort-compare\n \"@typescript-eslint/require-array-sort-compare\": [\"error\"],\n\n // Enforce consistent returning of awaited values.\n // https://typescript-eslint.io/rules/return-await\n // Note: you must disable the base rule as it can report incorrect errors\n // Added to recommended\n // \"no-return-await\": \"off\",\n // \"@typescript-eslint/return-await\": [\"off\"],\n\n // Disallow certain types in boolean expressions.\n // https://typescript-eslint.io/rules/strict-boolean-expressions\n \"@typescript-eslint/strict-boolean-expressions\": [\n \"error\",\n {\n allowString: false,\n allowNumber: false,\n allowNullableObject: false\n }\n ],\n\n // Require switch-case statements to be exhaustive.\n // https://typescript-eslint.io/rules/switch-exhaustiveness-check\n \"@typescript-eslint/switch-exhaustiveness-check\": [\"error\"],\n\n // Additional rules (Customize rules that are not in predefined configs)\n\n // Enforce template literal expressions to be of string type.\n // https://typescript-eslint.io/rules/restrict-template-expressions\n \"@typescript-eslint/restrict-template-expressions\": [\n \"error\",\n {\n allowBoolean: true,\n allowNumber: true,\n allowRegExp: true\n }\n ],\n\n // Disallow type parameters that aren't used multiple times\n // https://typescript-eslint.io/rules/no-unnecessary-type-parameters\n // Note: This rule is in the strict rules. But we decided to disable this rule.\n \"@typescript-eslint/no-unnecessary-type-parameters\": [\"off\"],\n\n // Disallow unused variables.\n // https://typescript-eslint.io/rules/no-unused-vars\n // Note: This rule is in the recommended rules. But we modify it.\n \"no-unused-vars\": [\"off\"],\n \"@typescript-eslint/no-unused-vars\": [\n \"error\",\n {\n args: \"all\",\n argsIgnorePattern: \"^_\",\n caughtErrors: \"all\",\n caughtErrorsIgnorePattern: \"^_\",\n destructuredArrayIgnorePattern: \"^_\",\n ignoreRestSiblings: true\n }\n ],\n\n // Enforce using concise optional chain expressions instead of chained logical ands, negated logical ors, or empty objects\n // https://typescript-eslint.io/rules/prefer-optional-chain\n // Note: This rule is in the recommended rules. But we remove it.\n \"@typescript-eslint/prefer-optional-chain\": [\"off\"],\n\n // Disallow type assertions that do not change the type of an expression.\n // https://typescript-eslint.io/rules/no-unnecessary-type-assertion/\n // Note: This rule is in the recommended rules. But we disable it.\n \"@typescript-eslint/no-unnecessary-type-assertion\": [\"off\"]\n} as const satisfies Linter.RulesRecord;\n","import type { Linter } from \"eslint\";\n\nexport default {\n // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/catch-error-name.md\n // Enforce a specific parameter name in catch clauses.\n \"unicorn/catch-error-name\": [\n \"error\",\n {\n ignore: [String.raw`^error[\\da-zA-Z_]*$`]\n }\n ],\n\n // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/filename-case.md\n // Enforce a case style for filenames.\n \"unicorn/filename-case\": [\"off\"],\n\n // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prevent-abbreviations.md\n // Prevent abbreviations.\n \"unicorn/prevent-abbreviations\": [\"off\"],\n\n // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-null.md\n // Disallow the use of the null literal.\n \"unicorn/no-null\": [\"off\"],\n\n // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-negated-condition.md\n // Disallow negated conditions.\n \"unicorn/no-negated-condition\": [\"off\"],\n\n // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/switch-case-braces.md\n // Enforce consistent brace style for case clauses.\n \"unicorn/switch-case-braces\": [\"off\"],\n\n // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-spread.md\n // Prefer the spread operator over Array.from(…), Array#concat(…), Array#{slice,toSpliced}() and String#split('').\n \"unicorn/prefer-spread\": [\"off\"],\n\n // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-at.md\n // Prefer .at() method for index access and String#charAt().\n \"unicorn/prefer-at\": [\"off\"],\n\n // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-ternary.md\n // Prefer ternary expressions over simple if-else statements.\n \"unicorn/prefer-ternary\": [\"warn\", \"only-single-line\"],\n\n // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-typeof-undefined.md\n // Disallow comparing undefined using typeof.\n \"unicorn/no-typeof-undefined\": [\"off\"],\n\n // https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-static-only-class.md\n // Disallow classes that only have static members.\n \"unicorn/no-static-only-class\": [\"off\"]\n} as const satisfies Linter.RulesRecord;\n","import eslintJS from \"@eslint/js\";\nimport { configs as eslintTSConfigs } from \"typescript-eslint\";\nimport eslintPluginUnicorn from \"eslint-plugin-unicorn\";\n\n// Custom Rules\nimport type { Linter } from \"eslint\";\nimport javascriptRules from \"../rules/javascript\";\nimport typescriptRules from \"../rules/typescript\";\nimport unicornRules from \"../rules/unicorn\";\n\nexport default [\n eslintJS.configs.recommended,\n ...eslintTSConfigs.strictTypeChecked,\n ...eslintTSConfigs.stylisticTypeChecked,\n eslintPluginUnicorn.configs.recommended,\n\n // JavaScript Rules\n {\n files: [\"**/*.{js,mjs,cjs,ts,jsx,tsx}\"],\n rules: javascriptRules\n },\n\n // TypeScript Rules\n {\n files: [\"**/*.{ts,tsx}\"],\n rules: typescriptRules\n },\n\n // Unicorn Rules\n {\n files: [\"**/*.{js,mjs,cjs,ts,jsx,tsx}\"],\n rules: unicornRules\n }\n] as Linter.Config[];\n","import type { Linter } from \"eslint\";\n\nexport default {\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/boolean-prop-naming.md\n // Enforces consistent naming for boolean props\n \"react/boolean-prop-naming\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/button-has-type.md\n // Disallow usage of button elements without an explicit type attribute\n \"react/button-has-type\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/checked-requires-onchange-or-readonly.md\n // Enforce using onChange or readonly attribute when checked is used\n \"react/checked-requires-onchange-or-readonly\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/default-props-match-prop-types.md\n // Enforce all defaultProps have a corresponding non-required PropType\n \"react/default-props-match-prop-types\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/destructuring-assignment.md\n // Enforce consistent usage of destructuring assignment of props, state, and context\n \"react/destructuring-assignment\": [\"warn\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/display-name.md\n // Disallow missing displayName in a React component definition\n \"react/display-name\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/forbid-component-props.md\n // Disallow certain props on components\n \"react/forbid-component-props\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/forbid-dom-props.md\n // Disallow certain props on DOM Nodes\n \"react/forbid-dom-props\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/forbid-elements.md\n // Disallow certain elements\n \"react/forbid-elements\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/forbid-foreign-prop-types.md\n // Disallow using another component's propTypes\n \"react/forbid-foreign-prop-types\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/forbid-prop-types.md\n // Disallow certain propTypes\n \"react/forbid-prop-types\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/forward-ref-uses-ref.md\n // Require all forwardRef components include a ref parameter\n // It seems that React 19 doesn't require this rule\n \"react/forward-ref-uses-ref\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/function-component-definition.md\n // Enforce a specific function type for function components\n \"react/function-component-definition\": [\"warn\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/hook-use-state.md\n // Ensure destructuring and symmetric naming of useState hook value and setter variables\n \"react/hook-use-state\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/iframe-missing-sandbox.md\n // Enforce sandbox attribute on iframe elements\n \"react/iframe-missing-sandbox\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-boolean-value.md\n // Enforce boolean attributes notation in JSX\n \"react/jsx-boolean-value\": [\"warn\", \"always\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-child-element-spacing.md\n // Enforce or disallow spaces inside curly braces in JSX attributes and expressions\n \"react/jsx-child-element-spacing\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-closing-bracket-location.md\n // Enforce closing bracket location in JSX\n // Use similar stylistic rule instead\n \"react/jsx-closing-bracket-location\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-closing-tag-location.md\n // Enforce closing tag location for multiline JSX\n // Use similar stylistic rule instead\n \"react/jsx-closing-tag-location\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-curly-brace-presence.md\n // Disallow unnecessary JSX expressions when literals alone are sufficient or enforce JSX expressions on literals in JSX children or attributes\n // Use similar stylistic rule instead\n \"react/jsx-curly-brace-presence\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-curly-newline.md\n // Enforce consistent linebreaks in curly braces in JSX attributes and expressions\n // Use similar stylistic rule instead\n \"react/jsx-curly-newline\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-curly-spacing.md\n // Enforce or disallow spaces inside curly braces in JSX attributes and expressions\n // Use similar stylistic rule instead\n \"react/jsx-curly-spacing\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-equals-spacing.md\n // Enforce or disallow spaces around equal signs in JSX attributes\n // Use similar stylistic rule instead\n \"react/jsx-equals-spacing\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-filename-extension.md\n // Disallow file extensions that may contain JSX\n \"react/jsx-filename-extension\": [\"error\", { allow: \"always\", extensions: [\".tsx\"] }],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-first-prop-new-line.md\n // Enforce proper position of the first property in JSX\n // Use similar stylistic rule instead\n \"react/jsx-first-prop-new-line\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-fragments.md\n // Enforce shorthand or standard form for React fragments\n \"react/jsx-fragments\": [\"warn\", \"element\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-handler-names.md\n // Enforce event handler naming conventions in JSX\n \"react/jsx-handler-names\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-indent.md\n // Enforce JSX indentation\n // Use similar stylistic rule instead\n \"react/jsx-indent\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-indent-props.md\n // Enforce props indentation in JSX\n // Use similar stylistic rule instead\n \"react/jsx-indent-props\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-key.md\n // Disallow missing key props in iterators/collection literals\n \"react/jsx-key\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-max-depth.md\n // Enforce JSX maximum depth\n \"react/jsx-max-depth\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-max-props-per-line.md\n // Enforce maximum of props on a single line in JSX\n // Use similar stylistic rule instead\n \"react/jsx-max-props-per-line\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-newline.md\n // Require or prevent a new line after jsx elements and expressions\n // Use similar stylistic rule instead\n \"react/jsx-newline\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-bind.md\n // Disallow .bind() or arrow functions in JSX props\n \"react/jsx-no-bind\": [\n \"error\",\n {\n allowArrowFunctions: true\n }\n ],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-comment-textnodes.md\n // Disallow comments from being inserted as text nodes\n \"react/jsx-no-comment-textnodes\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-constructed-context-values.md\n // Disallows JSX context provider values from taking values that will cause needless renders\n \"react/jsx-no-constructed-context-values\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-duplicate-props.md\n // Disallow duplicate properties in JSX\n \"react/jsx-no-duplicate-props\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-leaked-render.md\n // Disallow problematic leaked values from being rendered\n \"react/jsx-no-leaked-render\": [\"warn\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-literals.md\n // Disallow usage of string literals in JSX\n \"react/jsx-no-literals\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-script-url.md\n // Disallow usage of javascript: URLs\n \"react/jsx-no-script-url\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-target-blank.md\n // Disallow target=\"_blank\" attribute without rel=\"noreferrer\"\n \"react/jsx-no-target-blank\": [\"warn\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-undef.md\n // Disallow undeclared variables in JSX\n \"react/jsx-no-undef\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-useless-fragment.md\n // Disallow unnecessary fragments\n \"react/jsx-no-useless-fragment\": [\"warn\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-one-expression-per-line.md\n // Require one JSX element per line\n // Use similar stylistic rule instead\n \"react/jsx-one-expression-per-line\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-pascal-case.md\n // Enforce PascalCase for user-defined JSX components\n // Use similar stylistic rule instead\n \"react/jsx-pascal-case\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-props-no-multi-spaces.md\n // Disallow multiple spaces between inline JSX props\n // Use similar stylistic rule instead\n \"react/jsx-props-no-multi-spaces\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-props-no-spread-multi.md\n // Disallow multiple spaces between inline JSX props\n \"react/jsx-props-no-spread-multi\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-props-no-spreading.md\n // Disallow JSX prop spreading\n \"react/jsx-props-no-spreading\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-sort-props.md\n // Enforce props alphabetical sorting\n // Use similar stylistic rule instead\n \"react/jsx-sort-props\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-tag-spacing.md\n // Enforce whitespace in and around the JSX opening and closing brackets\n // Use similar stylistic rule instead\n \"react/jsx-tag-spacing\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-uses-react.md\n // Disallow React to be incorrectly marked as unused\n \"react/jsx-uses-react\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-uses-vars.md\n // Disallow variables used in JSX to be incorrectly marked as unused\n \"react/jsx-uses-vars\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-wrap-multilines.md\n // Disallow missing parentheses around multiline JSX\n // Use similar stylistic rule instead\n \"react/jsx-wrap-multilines\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-access-state-in-setstate.md\n // Disallow when this.state is accessed within setState\n \"react/no-access-state-in-setstate\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-adjacent-inline-elements.md\n // Disallow adjacent inline elements not separated by whitespace.\n \"react/no-adjacent-inline-elements\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-array-index-key.md\n // Disallow usage of Array index in keys\n \"react/no-array-index-key\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-arrow-function-lifecycle.md\n // Lifecycle methods should be methods on the prototype, not class fields\n \"react/no-arrow-function-lifecycle\": [\"warn\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-children-prop.md\n // Disallow passing of children as props\n \"react/no-children-prop\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-danger.md\n // Disallow usage of dangerous JSX properties\n \"react/no-danger\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-danger-with-children.md\n // Disallow when a DOM element is using both children and dangerouslySetInnerHTML\n \"react/no-danger-with-children\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-deprecated.md\n // Disallow usage of deprecated methods\n \"react/no-deprecated\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-did-mount-set-state.md\n // Disallow usage of setState in componentDidMount\n \"react/no-did-mount-set-state\": [\"error\", \"disallow-in-func\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-did-update-set-state.md\n // Disallow usage of setState in componentDidUpdate\n \"react/no-did-update-set-state\": [\"error\", \"disallow-in-func\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-direct-mutation-state.md\n // Disallow direct mutation of this.state\n \"react/no-direct-mutation-state\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-find-dom-node.md\n // Disallow usage of findDOMNode\n \"react/no-find-dom-node\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-invalid-html-attribute.md\n // Disallow usage of invalid attributes\n \"react/no-invalid-html-attribute\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-is-mounted.md\n // Disallow usage of isMounted\n \"react/no-is-mounted\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-multi-comp.md\n // Disallow multiple component definition per file\n \"react/no-multi-comp\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-namespace.md\n // Enforce that namespaces are not used in React elements\n \"react/no-namespace\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-object-type-as-default-prop.md\n // Disallow usage of referential-type variables as default param in functional component\n \"react/no-object-type-as-default-prop\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-redundant-should-component-update.md\n // Disallow usage of shouldComponentUpdate when extending React.PureComponent\n \"react/no-redundant-should-component-update\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-render-return-value.md\n // Disallow usage of the return value of ReactDOM.render\n \"react/no-render-return-value\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-set-state.md\n // Disallow usage of setState\n \"react/no-set-state\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-string-refs.md\n // Disallow using string references\n \"react/no-string-refs\": [\"error\", { noTemplateLiterals: true }],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-this-in-sfc.md\n // Disallow this from being used in stateless functional components\n \"react/no-this-in-sfc\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-typos.md\n // Disallow common typos\n \"react/no-typos\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-unescaped-entities.md\n // Disallow unescaped HTML entities from appearing in markup\n \"react/no-unescaped-entities\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-unknown-property.md\n // Disallow usage of unknown DOM property\n \"react/no-unknown-property\": [\"warn\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-unsafe.md\n // Disallow usage of unsafe lifecycle methods\n // Disabled in recommended configs\n \"react/no-unsafe\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-unstable-nested-components.md\n // Disallow creating unstable components inside components\n \"react/no-unstable-nested-components\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-unused-class-component-methods.md\n // Disallow declaring unused methods of component class\n \"react/no-unused-class-component-methods\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-unused-prop-types.md\n // Disallow definitions of unused propTypes\n \"react/no-unused-prop-types\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-unused-state.md\n // Disallow definitions of unused state\n \"react/no-unused-state\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-will-update-set-state.md\n // Disallow usage of setState in componentWillUpdate\n \"react/no-will-update-set-state\": [\"error\", \"disallow-in-func\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/prefer-es6-class.md\n // Enforce ES5 or ES6 class for React Components\n \"react/prefer-es6-class\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/prefer-exact-props.md\n // Prefer exact prop type definitions\n \"react/prefer-exact-props\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/prefer-read-only-props.md\n // Enforce that props are read-only\n \"react/prefer-read-only-props\": [\"warn\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/prefer-stateless-function.md\n // Enforce stateless components to be written as a pure function\n \"react/prefer-stateless-function\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/prop-types.md\n // Disallow missing props validation in a React component definition\n \"react/prop-types\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/react-in-jsx-scope.md\n // Disallow missing React when using JSX\n // Disable this rule because react 17 doesn't need to import React to use JSX\n \"react/react-in-jsx-scope\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/require-default-props.md\n // Enforce a defaultProps definition for every prop that is not a required prop\n \"react/require-default-props\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/require-optimization.md\n // Enforce React components to have a shouldComponentUpdate method\n \"react/require-optimization\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/require-render-return.md\n // Enforce ES5 or ES6 class for returning value in render function\n \"react/require-render-return\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/self-closing-comp.md\n // Disallow extra closing tags for components without children\n \"react/self-closing-comp\": [\"warn\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/sort-comp.md\n // Enforce component methods order\n \"react/sort-comp\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/sort-default-props.md\n // Enforce defaultProps declarations alphabetical sorting\n \"react/sort-default-props\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/sort-prop-types.md\n // Enforce propTypes declarations alphabetical sorting\n \"react/sort-prop-types\": [\"off\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/state-in-constructor.md\n // Enforce class component state initialization style\n \"react/state-in-constructor\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/static-property-placement.md\n // Enforces where React component static properties should be positioned.\n \"react/static-property-placement\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/style-prop-object.md\n // Enforce style prop value is an object\n \"react/style-prop-object\": [\"error\"],\n\n // https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/void-dom-elements-no-children.md\n // Disallow void DOM elements (e.g. <img />, <br />) from receiving children\n \"react/void-dom-elements-no-children\": [\"error\"]\n} as const satisfies Linter.RulesRecord;\n","// Plugins\nimport reactPlugin from \"eslint-plugin-react\";\nimport { configs as reactHooksConfigs } from \"eslint-plugin-react-hooks\";\nimport reactRefreshPlugin from \"eslint-plugin-react-refresh\";\n\n// Custom Rules\nimport type { Linter } from \"eslint\";\nimport reactRules from \"../rules/react\";\nimport baseConfig from \"./base\";\n\nexport default [\n ...baseConfig,\n reactHooksConfigs.flat[\"recommended-latest\"],\n reactRefreshPlugin.configs.recommended,\n\n // React Plugin\n {\n files: [\"**/*.{js,mjs,cjs,jsx,mjsx,ts,tsx,mtsx}\"],\n ...reactPlugin.configs.flat.recommended,\n\n settings: {\n react: {\n version: \"detect\"\n }\n },\n rules: {\n ...reactRules\n }\n }\n] as Linter.Config[];\n","import type { Linter } from \"eslint\";\n\nexport default {\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-deprecated.md\n // Forbid imported names marked with @deprecated documentation tag.\n \"import-x/no-deprecated\": [\"error\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-empty-named-blocks.md\n // Forbid empty named import blocks.\n \"import-x/no-empty-named-blocks\": [\"warn\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-extraneous-dependencies.md\n // Forbid the use of extraneous packages.\n \"import-x/no-extraneous-dependencies\": [\n \"error\",\n { devDependencies: false, optionalDependencies: false }\n ],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-mutable-exports.md\n // Forbid the use of mutable exports with var or let.\n \"import-x/no-mutable-exports\": [\"error\"],\n\n // https://github.com/un-ts/eslint-plugin-import-x/blob/HEAD/docs/rules/no-rename-default.md\n // Prohibit importing a default export by another name.\n \"import-x/no-rename-default\": [\"off\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-unused-modules.md\n // Forbid modules without exports, or exports without matching import in another module.\n // TODO: Can be enabled\n \"import-x/no-unused-modules\": [\"off\", { missingExports: true }],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-amd.md\n // Forbid AMD require and define calls.\n \"import-x/no-amd\": [\"error\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-commonjs.md\n // Forbid CommonJS require calls and module.exports or exports.*.\n \"import-x/no-commonjs\": [\"error\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-import-module-exports.md\n // Forbid import statements with CommonJS module.exports.\n \"import-x/no-import-module-exports\": [\"warn\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-nodejs-modules.md\n // Forbid Node.js builtin modules.\n // TODO: Can enable for front-end\n \"import-x/no-nodejs-modules\": [\"off\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/unambiguous.md\n // Forbid potentially ambiguous parse goal (script vs. module).\n \"import-x/unambiguous\": [\"error\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-absolute-path.md\n // Forbid import of modules using absolute paths.\n \"import-x/no-absolute-path\": [\"warn\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-cycle.md\n // Forbid a module from importing a module with a dependency path back to itself.\n \"import-x/no-cycle\": [\"error\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-dynamic-require.md\n // Forbid require() calls with expressions.\n \"import-x/no-dynamic-require\": [\"off\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-internal-modules.md\n // Forbid importing the submodules of other modules.\n // TODO: Must define in the project\n \"import-x/no-internal-modules\": [\"off\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-relative-packages.md\n // Forbid importing packages through relative paths.\n \"import-x/no-relative-packages\": [\"warn\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-relative-parent-imports.md\n // Forbid importing modules from parent directories.\n \"import-x/no-relative-parent-imports\": [\"off\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-restricted-paths.md\n // Enforce which files can be imported in a given folder.\n // TODO: Can be customized\n // \"import-x/no-restricted-paths\": [\"off\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-self-import.md\n // Forbid a module from importing itself.\n \"import-x/no-self-import\": [\"error\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-useless-path-segments.md\n // Forbid unnecessary path segments in import and require statements.\n \"import-x/no-useless-path-segments\": [\n \"warn\",\n {\n noUselessIndex: true\n }\n ],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-webpack-loader-syntax.md\n // Forbid webpack loader syntax in imports.\n \"import-x/no-webpack-loader-syntax\": [\"error\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/consistent-type-specifier-style.md\n // Enforce or ban the use of inline type-only markers for named imports.\n \"import-x/consistent-type-specifier-style\": [\"warn\", \"prefer-top-level\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/dynamic-import-chunkname.md\n // Enforce a leading comment with the webpackChunkName for dynamic imports.\n \"import-x/dynamic-import-chunkname\": [\"off\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/exports-last.md\n // Ensure all exports appear after other statements.\n // TODO: Can be enabled\n \"import-x/exports-last\": [\"off\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/extensions.md\n // Ensure consistent use of file extension within the import path.\n \"import-x/extensions\": [\"error\", \"never\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/first.md\n // Ensure all imports appear before other statements.\n \"import-x/first\": [\"warn\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/group-exports.md\n // Prefer named exports to be grouped together in a single export declaration\n // TODO: Can be enabled\n \"import-x/group-exports\": [\"off\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/max-dependencies.md\n // Enforce the maximum number of dependencies a module can have.\n \"import-x/max-dependencies\": [\"off\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/newline-after-import.md\n // Enforce a newline after import statements.\n \"import-x/newline-after-import\": [\"warn\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-anonymous-default-export.md\n // Forbid anonymous values as default exports.\n \"import-x/no-anonymous-default-export\": [\n \"error\",\n {\n allowArray: false,\n allowArrowFunction: true,\n allowAnonymousClass: false,\n allowAnonymousFunction: false,\n\n // The true value here is for backward compatibility\n allowCallExpression: true,\n allowNew: false,\n allowLiteral: false,\n allowObject: false\n }\n ],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-default-export.md\n // Forbid default exports.\n \"import-x/no-default-export\": [\"off\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-named-default.md\n // Forbid named default exports.\n \"import-x/no-named-default\": [\"off\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-named-export.md\n // Forbid named exports.\n \"import-x/no-named-export\": [\"off\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-namespace.md\n // Forbid namespace (a.k.a. \"wildcard\" *) imports.\n \"import-x/no-namespace\": [\"warn\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-unassigned-import.md\n // Forbid unassigned imports\n \"import-x/no-unassigned-import\": [\"error\", { allow: [\"**/*.css\"] }],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/order.md\n // Enforce a convention in module import order.\n \"import-x/order\": [\"warn\"],\n\n // https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/prefer-default-export.md\n // Prefer a default export if module exports a single name or multiple names.\n \"import-x/prefer-default-export\": [\"off\"]\n} as const satisfies Linter.RulesRecord;\n","import { flatConfigs as importXFlatConfigs } from \"eslint-plugin-import-x\";\nimport { createTypeScriptImportResolver } from \"eslint-import-resolver-typescript\";\nimport unusedImports from \"eslint-plugin-unused-imports\";\n\n// Custom Rules\nimport type { Linter } from \"eslint\";\nimport type { TypeScriptResolverOptions } from \"eslint-import-resolver-typescript\";\nimport importXRules from \"../rules/import\";\nimport type { TypescriptOptions } from \"../types\";\n\nexport default function importConfig(typescript?: TypescriptOptions): Linter.Config[] {\n const resolverOptions: TypeScriptResolverOptions = { alwaysTryTypes: true, bun: true };\n\n if (typescript !== undefined) {\n resolverOptions.project = typescript.project;\n }\n\n return [\n importXFlatConfigs.recommended,\n importXFlatConfigs.typescript,\n\n // ESLint Plugin Import\n {\n files: [\"**/*.{js,mjs,cjs,ts,jsx,tsx}\"],\n plugins: {\n \"unused-imports\": unusedImports\n },\n settings: {\n \"import-x/resolver-next\": [createTypeScriptImportResolver(resolverOptions)]\n },\n rules: {\n ...importXRules,\n\n // unused-imports\n \"unused-imports/no-unused-imports\": [\"error\"]\n }\n }\n ] as Linter.Config[];\n}\n","// Plugins\nimport eslintConfigPrettier from \"eslint-config-prettier\";\nimport type { Linter } from \"eslint\";\n\nexport default [eslintConfigPrettier] as Linter.Config[];\n","import type { Linter } from \"eslint\";\n\nexport default {\n // https://eslint.style/rules/default/array-bracket-newline\n // Enforce linebreaks after opening and before closing array brackets\n \"@stylistic/array-bracket-newline\": [\"warn\"],\n\n // https://eslint.style/rules/default/array-bracket-spacing\n // Enforce consistent spacing inside array brackets\n \"@stylistic/array-bracket-spacing\": [\"warn\"],\n\n // https://eslint.style/rules/default/array-element-newline\n // Enforce line breaks after each array element\n \"@stylistic/array-element-newline\": [\"warn\", \"consistent\"],\n\n // https://eslint.style/rules/default/arrow-parens\n // Require parentheses around arrow function arguments\n \"@stylistic/arrow-parens\": [\"warn\", \"always\"],\n\n // https://eslint.style/rules/default/arrow-spacing\n // Enforce consistent spacing before and after the arrow in arrow functions\n \"@stylistic/arrow-spacing\": [\"warn\"],\n\n // https://eslint.style/rules/default/block-spacing\n // Disallow or enforce spaces inside of blocks after opening block and before closing block\n \"@stylistic/block-spacing\": [\"warn\"],\n\n // https://eslint.style/rules/default/brace-style\n // Enforce consistent brace style for blocks\n \"@stylistic/brace-style\": [\"warn\", \"1tbs\"],\n\n // https://eslint.style/rules/default/comma-dangle\n // Require or disallow trailing commas\n \"@stylistic/comma-dangle\": [\"warn\"],\n\n // https://eslint.style/rules/default/comma-spacing\n // Enforce consistent spacing before and after commas\n \"@stylistic/comma-spacing\": [\"warn\"],\n\n // https://eslint.style/rules/default/comma-style\n // Enforce consistent comma style\n \"@stylistic/comma-style\": [\"warn\"],\n\n // https://eslint.style/rules/default/computed-property-spacing\n // Enforce consistent spacing inside computed property brackets\n \"@stylistic/computed-property-spacing\": [\"warn\"],\n\n // https://eslint.style/rules/default/curly-newline\n // Enforce consistent line breaks after opening and before closing braces\n \"@stylistic/curly-newline\": [\"warn\", \"always\"],\n\n // https://eslint.style/rules/default/dot-location\n // Enforce consistent newlines before and after dots\n \"@stylistic/dot-location\": [\"warn\", \"property\"],\n\n // https://eslint.style/rules/default/eol-last\n // Require or disallow newline at the end of files\n \"@stylistic/eol-last\": [\"warn\"],\n\n // https://eslint.style/rules/default/function-call-spacing\n // Require or disallow spacing between function identifiers and their invocations. Alias of `function-call-spacing`.\n \"@stylistic/function-call-spacing\": [\"warn\"],\n\n // https://eslint.style/rules/default/function-call-argument-newline\n // Enforce line breaks between arguments of a function call\n \"@stylistic/function-call-argument-newline\": [\"warn\", \"consistent\"],\n\n // https://eslint.style/rules/default/function-paren-newline\n // Enforce consistent line breaks inside function parentheses\n \"@stylistic/function-paren-newline\": [\"warn\", \"consistent\"],\n\n // https://eslint.style/rules/default/generator-star-spacing\n // Enforce consistent spacing around `*` operators in generator functions\n \"@stylistic/generator-star-spacing\": [\"warn\"],\n\n // https://eslint.style/rules/default/implicit-arrow-linebreak\n // Enforce the location of arrow function bodies\n \"@stylistic/implicit-arrow-linebreak\": [\"warn\"],\n\n // https://eslint.style/rules/default/indent\n // Enforce consistent indentation\n \"@stylistic/indent\": [\"warn\", 2],\n\n // https://eslint.style/rules/default/indent-binary-ops\n // Indentation for binary operators\n \"@stylistic/indent-binary-ops\": [\"warn\", 2],\n\n // https://eslint.style/rules/default/jsx-child-element-spacing\n // Enforce or disallow spaces inside curly braces in JSX attributes and expressions\n \"@stylistic/jsx-child-element-spacing\": [\"error\"],\n\n // https://eslint.style/rules/default/jsx-closing-bracket-location\n // Enforce closing bracket location in JSX\n \"@stylistic/jsx-closing-bracket-location\": [\"warn\"],\n\n // https://eslint.style/rules/default/jsx-closing-tag-location\n // Enforce closing tag location for multiline JSX\n \"@stylistic/jsx-closing-tag-location\": [\"warn\"],\n\n // https://eslint.style/rules/default/jsx-curly-brace-presence\n // Disallow unnecessary JSX expressions when literals alone are sufficient or enforce JSX expressions on literals in JSX children or attributes\n \"@stylistic/jsx-curly-brace-presence\": [\"warn\"],\n\n // https://eslint.style/rules/default/jsx-curly-newline\n // Enforce consistent linebreaks in curly braces in JSX attributes and expressions\n \"@stylistic/jsx-curly-newline\": [\"warn\"],\n\n // https://eslint.style/rules/default/jsx-curly-spacing\n // Enforce or disallow spaces inside curly braces in JSX attributes and expressions\n \"@stylistic/jsx-curly-spacing\": [\"warn\"],\n\n // https://eslint.style/rules/default/jsx-equals-spacing\n // Enforce or disallow spaces around equal signs in JSX attributes\n \"@stylistic/jsx-equals-spacing\": [\"warn\"],\n\n // https://eslint.style/rules/default/jsx-first-prop-new-line\n // Enforce proper position of the first property in JSX\n \"@stylistic/jsx-first-prop-new-line\": [\"warn\"],\n\n // https://eslint.style/rules/default/jsx-function-call-newline\n // Enforce line breaks before and after JSX elements when they are used as arguments to a function.\n \"@stylistic/jsx-function-call-newline\": [\"warn\"],\n\n // https://eslint.style/rules/default/jsx-indent-props\n // Enforce props indentation in JSX\n \"@stylistic/jsx-indent-props\": [\"warn\", 2],\n\n // https://eslint.style/rules/default/jsx-max-props-per-line\n // Enforce maximum of props on a single line in JSX\n \"@stylistic/jsx/jsx-max-props-per-line\": [\"off\"],\n\n // https://eslint.style/rules/default/jsx-newline\n // Require or prevent a new line after jsx elements and expressions.\n \"@stylistic/jsx-newline\": [\"off\"],\n\n // https://eslint.style/rules/default/jsx-one-expression-per-line\n // Require one JSX element per line\n \"@stylistic/jsx-one-expression-per-line\": [\"warn\", { allow: \"single-child\" }],\n\n // https://eslint.style/rules/default/jsx-pascal-case\n // Enforce PascalCase for user-defined JSX components\n \"@stylistic/jsx-pascal-case\": [\"error\"],\n\n // https://eslint.style/rules/default/jsx-quotes\n // Enforce the consistent use of either double or single quotes in JSX attributes\n \"@stylistic/jsx-quotes\": [\"warn\"],\n\n // https://eslint.style/rules/default/jsx-self-closing-comp\n // Disallow extra closing tags for components without children\n \"@stylistic/jsx-self-closing-comp\": [\"warn\"],\n\n // https://eslint.style/rules/default/jsx-sort-props\n // Enforce props alphabetical sorting\n \"@stylistic/jsx-sort-props\": [\n \"warn\",\n {\n callbacksLast: true,\n shorthandFirst: true,\n\n // shorthandLast: false,\n multiline: \"last\",\n\n // ignoreCase: false,\n noSortAlphabetically: true\n\n // reservedFirst: true\n // locale: \"auto\"\n }\n ],\n\n // https://eslint.style/rules/default/jsx-tag-spacing\n // Enforce whitespace in and around the JSX opening and closing brackets\n \"@stylistic/jsx-tag-spacing\": [\n \"warn\",\n {\n closingSlash: \"never\",\n beforeSelfClosing: \"always\",\n afterOpening: \"never\",\n beforeClosing: \"never\"\n }\n ],\n\n // https://eslint.style/rules/default/jsx-wrap-multilines\n // Disallow missing parentheses around multiline JSX\n \"@stylistic/jsx-wrap-multilines\": [\n \"warn\",\n {\n declaration: \"parens-new-line\",\n assignment: \"parens-new-line\",\n return: \"parens-new-line\",\n arrow: \"parens-new-line\",\n condition: \"parens-new-line\",\n logical: \"parens-new-line\",\n prop: \"parens-new-line\"\n }\n ],\n\n // https://eslint.style/rules/default/key-spacing\n // Enforce consistent spacing between keys and values in object literal properties\n \"@stylistic/key-spacing\": \"warn\",\n\n // https://eslint.style/rules/default/keyword-spacing\n // Enforce consistent spacing before and after keywords\n \"@stylistic/keyword-spacing\": \"warn\",\n\n // https://eslint.style/rules/default/line-comment-position\n // Enforce position of line comments\n \"@stylistic/line-comment-position\": \"warn\",\n\n // https://eslint.style/rules/default/linebreak-style\n // Enforce consistent linebreak style\n \"@stylistic/linebreak-style\": \"warn\",\n\n // https://eslint.style/rules/default/lines-around-comment\n // Require empty lines around comments\n \"@stylistic/lines-around-comment\": [\n \"warn\",\n {\n beforeBlockComment: true,\n afterBlockComment: false,\n beforeLineComment: true,\n afterLineComment: false,\n allowBlockStart: true,\n allowBlockEnd: true,\n allowObjectStart: true,\n allowObjectEnd: true,\n allowArrayStart: true,\n allowArrayEnd: true,\n allowClassStart: true,\n allowClassEnd: true,\n afterHashbangComment: true\n }\n ],\n\n // https://eslint.style/rules/default/lines-between-class-members\n // Require or disallow an empty line between class members\n \"@stylistic/lines-between-class-members\": [\n \"warn\",\n {\n enforce: [\n {\n blankLine: \"never\",\n prev: \"field\",\n next: \"field\"\n },\n {\n blankLine: \"always\",\n prev: \"*\",\n next: \"method\"\n },\n {\n blankLine: \"always\",\n prev: \"method\",\n next: \"*\"\n }\n ]\n }\n ],\n\n // https://eslint.style/rules/default/max-len\n // Enforce a maximum line length\n \"@stylistic/max-len\": [\n \"error\",\n {\n code: 120,\n tabWidth: 2,\n comments: 120,\n\n // ignorePattern: true,\n ignoreComments: true,\n ignoreTrailingComments: true,\n ignoreUrls: true,\n ignoreStrings: true,\n ignoreTemplateLiterals: true,\n ignoreRegExpLiterals: true\n }\n ],\n\n // https://eslint.style/rules/default/max-statements-per-line\n // Enforce a maximum number of statements allowed per line\n \"@stylistic/max-statements-per-line\": [\"error\"],\n\n // https://eslint.style/rules/default/member-delimiter-style\n // Require a specific member delimiter style for interfaces and type literals\n \"@stylistic/member-delimiter-style\": [\"warn\"],\n\n // https://eslint.style/rules/default/multiline-comment-style\n // Enforce a particular style for multiline comments\n \"@stylistic/multiline-comment-style\": [\"off\"],\n\n // https://eslint.style/rules/default/multiline-ternary\n // Enforce newlines between operands of ternary expressions\n \"@stylistic/multiline-ternary\": [\"warn\", \"always-multiline\"],\n\n // https://eslint.style/rules/default/new-parens\n // Enforce or disallow parentheses when invoking a constructor with no arguments\n \"@stylistic/new-parens\": [\"warn\"],\n\n // https://eslint.style/rules/default/newline-per-chained-call\n // Require a newline after each call in a method chain\n \"@stylistic/newline-per-chained-call\": [\"warn\"],\n\n // https://eslint.style/rules/default/no-confusing-arrow\n // Disallow arrow functions where they could be confused with comparisons\n \"@stylistic/no-confusing-arrow\": [\"warn\"],\n\n // https://eslint.style/rules/default/no-extra-parens\n // Disallow unnecessary parentheses\n \"@stylistic/no-extra-parens\": [\"warn\"],\n\n // https://eslint.style/rules/default/no-extra-semi\n // Disallow unnecessary semicolons\n \"@stylistic/no-extra-semi\": [\"warn\"],\n\n // https://eslint.style/rules/default/no-floating-decimal\n // Disallow leading or trailing decimal points in numeric literals\n \"@stylistic/no-floating-decimal\": [\"warn\"],\n\n // https://eslint.style/rules/default/no-mixed-operators\n // Disallow mixed binary operators\n \"@stylistic/no-mixed-operators\": [\"error\"],\n\n // https://eslint.style/rules/default/no-mixed-spaces-and-tabs\n // Disallow mixed spaces and tabs for indentation\n \"@stylistic/no-mixed-spaces-and-tabs\": [\"error\"],\n\n // https://eslint.style/rules/default/no-multi-spaces\n // Disallow multiple spaces\n \"@stylistic/no-multi-spaces\": [\"warn\"],\n\n // https://eslint.style/rules/default/no-multiple-empty-lines\n // Disallow multiple empty lines\n \"@stylistic/no-multiple-empty-lines\": [\"warn\"],\n\n // https://eslint.style/rules/default/no-tabs\n // Disallow all tabs\n \"@stylistic/no-tabs\": [\"error\"],\n\n // https://eslint.style/rules/default/no-trailing-spaces\n // Disallow trailing whitespace at the end of lines\n \"@stylistic/no-trailing-spaces\": [\"warn\"],\n\n // https://eslint.style/rules/default/no-whitespace-before-property\n // Disallow whitespace before properties\n \"@stylistic/no-whitespace-before-property\": [\"warn\"],\n\n // https://eslint.style/rules/default/nonblock-statement-body-position\n // Enforce the location of single-line statements\n \"@stylistic/nonblock-statement-body-position\": [\"warn\"],\n\n // https://eslint.style/rules/default/object-curly-newline\n // Enforce consistent line breaks after opening and before closing braces\n \"@stylistic/object-curly-newline\": [\n \"warn\",\n {\n consistent: true\n }\n ],\n\n // https://eslint.style/rules/default/object-curly-spacing\n // Enforce consistent spacing inside braces\n \"@stylistic/object-curly-spacing\": [\"warn\"],\n\n // https://eslint.style/rules/default/object-property-newline\n // Enforce placing object properties on separate lines\n \"@stylistic/object-property-newline\": [\n \"warn\",\n {\n allowAllPropertiesOnSameLine: true\n }\n ],\n\n // https://eslint.style/rules/default/one-var-declaration-per-line\n // Require or disallow newlines around variable declarations\n \"@stylistic/one-var-declaration-per-line\": [\"warn\"],\n\n // https://eslint.style/rules/default/operator-linebreak\n // Enforce consistent linebreak style for operators\n \"@stylistic/operator-linebreak\": [\"warn\"],\n\n // https://eslint.style/rules/default/padded-blocks\n // Require or disallow padding within blocks\n \"@stylistic/padded-blocks\": [\"warn\", \"never\"],\n\n // https://eslint.style/rules/default/padding-line-between-statements\n // Require or disallow padding lines between statements\n \"@stylistic/padding-line-between-statements\": [\n \"warn\",\n {\n blankLine: \"always\",\n prev: \"*\",\n next: \"return\"\n },\n {\n blankLine: \"always\",\n prev: \"*\",\n next: \"block-like\"\n },\n {\n blankLine: \"always\",\n prev: \"block-like\",\n next: \"*\"\n },\n {\n blankLine: \"always\",\n prev: \"case\",\n next: \"case\"\n },\n {\n blankLine: \"never\",\n prev: \"*\",\n next: \"break\"\n },\n {\n blankLine: \"always\",\n prev: \"*\",\n next: \"export\"\n },\n {\n blankLine: \"always\",\n prev: \"*\",\n next: \"interface\"\n },\n {\n blankLine: \"always\",\n prev: \"interface\",\n next: \"*\"\n },\n {\n blankLine: \"always\",\n prev: \"*\",\n next: \"class\"\n },\n {\n blankLine: \"always\",\n prev: \"class\",\n next: \"*\"\n }\n ],\n\n // https://eslint.style/rules/default/quote-props\n // Require quotes around object literal property names\n \"@stylistic/quote-props\": [\"warn\", \"as-needed\"],\n\n // https://eslint.style/rules/default/quotes\n // Enforce the consistent use of either backticks, double, or single quotes\n \"@stylistic/quotes\": [\"warn\"],\n\n // https://eslint.style/rules/default/rest-spread-spacing\n // Enforce spacing between rest and spread operators and their expressions\n \"@stylistic/rest-spread-spacing\": [\"warn\"],\n\n // https://eslint.style/rules/default/semi\n // Require or disallow semicolons instead of ASI\n \"@stylistic/semi\": [\"warn\"],\n\n // https://eslint.style/rules/default/semi-spacing\n // Enforce consistent spacing before and after semicolons\n \"@stylistic/semi-spacing\": [\"warn\"],\n\n // https://eslint.style/rules/default/semi-style\n // Enforce location of semicolons\n \"@stylistic/semi-style\": [\"warn\"],\n\n // https://eslint.style/rules/default/space-before-blocks\n // Enforce consistent spacing before blocks\n \"@stylistic/space-before-blocks\": [\"warn\"],\n\n // https://eslint.style/rules/default/space-before-function-paren\n // Enforce consistent spacing before `function` definition opening parenthesis\n \"@stylistic/space-before-function-paren\": [\n \"warn\",\n {\n anonymous: \"always\",\n named: \"never\",\n asyncArrow: \"always\"\n }\n ],\n\n // https://eslint.style/rules/default/space-in-parens\n // Enforce consistent spacing inside parentheses\n \"@stylistic/space-in-parens\": [\"warn\"],\n\n // https://eslint.style/rules/default/space-infix-ops\n // Require spacing around infix operators\n \"@stylistic/space-infix-ops\": [\"warn\"],\n\n // https://eslint.style/rules/default/space-unary-ops\n // Enforce consistent spacing before or after unary operators\n \"@stylistic/space-unary-ops\": [\"warn\"],\n\n // https://eslint.style/rules/default/spaced-comment\n // Enforce consistent spacing after the `//` or `/*` in a comment\n \"@stylistic/spaced-comment\": [\"warn\"],\n\n // https://eslint.style/rules/default/switch-colon-spacing\n // Enforce spacing around colons of switch statements\n \"@stylistic/switch-colon-spacing\": [\"warn\"],\n\n // https://eslint.style/rules/default/template-curly-spacing\n // Require or disallow spacing around embedded expressions of template strings\n \"@stylistic/template-curly-spacing\": [\"warn\"],\n\n // https://eslint.style/rules/default/template-tag-spacing\n // Require or disallow spacing between template tags and their literals\n \"@stylistic/template-tag-spacing\": [\"warn\"],\n\n // https://eslint.style/rules/default/type-annotation-spacing\n // Require consistent spacing around type annotations\n \"@stylistic/type-annotation-spacing\": [\"warn\"],\n\n // https://eslint.style/rules/default/type-generic-spacing\n // Enforces consistent spacing inside TypeScript type generics\n \"@stylistic/type-generic-spacing\": [\"warn\"],\n\n // https://eslint.style/rules/default/type-named-tuple-spacing\n // Expect space before the type declaration in the named tuple\n \"@stylistic/type-named-tuple-spacing\": [\"warn\"],\n\n // https://eslint.style/rules/default/wrap-iife\n // Require parentheses around immediate `function` invocations\n \"@stylistic/wrap-iife\": [\"warn\", \"inside\"],\n\n // https://eslint.style/rules/default/wrap-regex\n // Require parenthesis around regex literals\n \"@stylistic/wrap-regex\": [\"warn\"],\n\n // https://eslint.style/rules/default/yield-star-spacing\n // Require or disallow spacing around the `*` in `yield*` expressions\n \"@stylistic/yield-star-spacing\": [\"warn\", \"after\"]\n} as const satisfies Linter.RulesRecord;\n","import stylistic from \"@stylistic/eslint-plugin\";\nimport type { Linter } from \"eslint\";\nimport stylisticRules from \"../rules/stylistic\";\n\nexport default [\n // Stylistic Configs\n stylistic.configs.customize({\n jsx: true,\n arrowParens: true,\n blockSpacing: true,\n braceStyle: \"stroustrup\",\n commaDangle: \"never\",\n indent: 2,\n semi: true,\n quotes: \"double\",\n quoteProps: \"always\"\n }),\n\n // Stylistic Rules\n {\n files: [\"**/*.{js,mjs,cjs,ts,jsx,tsx}\"],\n languageOptions: {\n parserOptions: {\n ecmaFeatures: {\n jsx: true\n }\n }\n },\n rules: stylisticRules\n }\n] as Linter.Config[];\n","import type { Linter } from \"eslint\";\nimport { defineConfig } from \"eslint/config\";\nimport globals from \"globals\";\nimport type { TSESLint } from \"@typescript-eslint/utils\";\nimport reactPlugin from \"eslint-plugin-react\";\nimport nodeConfig from \"./configs/node\";\nimport reactConfig from \"./configs/react\";\nimport importConfig from \"./configs/import\";\nimport prettierFormatter from \"./configs/prettierFormatter\";\nimport stylisticFormatter from \"./configs/stylisticFormatter\";\nimport type { Options, TypescriptOptions } from \"./types\";\n\nfunction node(typescript?: TypescriptOptions): TSESLint.FlatConfig.Config[\"languageOptions\"] {\n return {\n globals: globals.node,\n parserOptions: {\n ecmaVersion: \"latest\",\n tsconfigRootDir: typescript?.tsconfigRootDir,\n project: typescript?.project\n }\n };\n}\n\nfunction react(typescript?: TypescriptOptions): TSESLint.FlatConfig.Config[\"languageOptions\"] {\n return {\n ...reactPlugin.configs.flat.recommended.languageOptions,\n globals: {\n ...globals.serviceworker,\n ...globals.browser\n },\n parserOptions: {\n tsconfigRootDir: typescript?.tsconfigRootDir,\n project: typescript?.project\n }\n };\n}\n\nexport function createConfig(opt: Options): Linter.Config[] {\n let config: Linter.Config[];\n\n if (opt.platform === \"node\") {\n config = [\n ...nodeConfig,\n {\n files: [\"**/*.{ts,js}\"],\n languageOptions: node(opt.typescript) as unknown as Linter.LanguageOptions\n }\n ];\n } else {\n config = [\n ...reactConfig,\n {\n files: [\"**/*.{js,mjs,cjs,jsx,mjsx,ts,tsx,mtsx}\"],\n languageOptions: react(opt.typescript) as unknown as Linter.LanguageOptions\n }\n ];\n }\n\n if (opt.useImport === true) {\n config.push(...importConfig(opt.typescript));\n }\n\n config.push(...(opt.style === \"stylistic\" ? stylisticFormatter : prettierFormatter));\n\n if (opt.overrides !== undefined) {\n config.push(...opt.overrides);\n }\n\n if (opt.ignores !== undefined) {\n config.push({ ignores: opt.ignores });\n }\n\n if (opt.files !== undefined && opt.files.length > 0) {\n return defineConfig({ files: opt.files, extends: config });\n }\n\n return config;\n}\n"],"mappings":"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"}
|