@unshared/eslint-config 0.0.7 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/index.cjs +43 -45
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +43 -45
- package/dist/index.js.map +1 -1
- package/package.json +14 -14
package/dist/index.cjs
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
"use strict";
|
2
|
-
var vueParser = require("vue-eslint-parser"), tslint = require("typescript-eslint"), vueProcessorBlocks = require("eslint-processor-vue-blocks"), vuePlugin = require("eslint-plugin-vue"), eslintMergeProcessors = require("eslint-merge-processors"), node_process = require("node:process"), perfectionist = require("eslint-plugin-perfectionist"), toArray = require("@unshared/collection/toArray"), stylistic = require("@stylistic/eslint-plugin"), javascript = require("@eslint/js"), vitestPlugin = require("eslint-plugin-vitest"), unicornPlugin = require("eslint-plugin-unicorn"),
|
2
|
+
var vueParser = require("vue-eslint-parser"), tslint = require("typescript-eslint"), vueProcessorBlocks = require("eslint-processor-vue-blocks"), vuePlugin = require("eslint-plugin-vue"), eslintMergeProcessors = require("eslint-merge-processors"), node_process = require("node:process"), perfectionist = require("eslint-plugin-perfectionist"), toArray = require("@unshared/collection/toArray"), stylistic = require("@stylistic/eslint-plugin"), javascript = require("@eslint/js"), vitestPlugin = require("eslint-plugin-vitest"), unicornPlugin = require("eslint-plugin-unicorn"), pluginSonarjs = require("eslint-plugin-sonarjs"), nodePlugin = require("eslint-plugin-n"), jsonc = require("eslint-plugin-jsonc"), pluginJsdoc = require("eslint-plugin-jsdoc"), eslintCommentsPlugin = require("eslint-plugin-eslint-comments"), pluginAntfu = require("eslint-plugin-antfu");
|
3
3
|
function getConfigRules(config) {
|
4
4
|
const rules = toArray.toArray(config).flat().map((x) => x.rules);
|
5
5
|
return Object.assign({}, ...rules);
|
@@ -187,7 +187,7 @@ function typescript(options) {
|
|
187
187
|
"@stylistic/lines-around-comment": ["error", {
|
188
188
|
beforeBlockComment: !0,
|
189
189
|
beforeLineComment: !0,
|
190
|
-
ignorePattern:
|
190
|
+
ignorePattern: String.raw`^(?! ?---|\*)`,
|
191
191
|
applyDefaultIgnorePatterns: !0,
|
192
192
|
afterHashbangComment: !0
|
193
193
|
}],
|
@@ -463,7 +463,7 @@ function vue(options) {
|
|
463
463
|
* @see https://eslint.vuejs.org/rules/component-name-in-template-casing.html
|
464
464
|
*/
|
465
465
|
"vue/component-name-in-template-casing": ["error", "PascalCase", {
|
466
|
-
ignores: [
|
466
|
+
ignores: [String.raw`/\./`],
|
467
467
|
registeredComponentsOnly: !1
|
468
468
|
}],
|
469
469
|
/**
|
@@ -850,47 +850,45 @@ function unicorn(options) {
|
|
850
850
|
];
|
851
851
|
}
|
852
852
|
function sonarjs(options) {
|
853
|
-
return
|
854
|
-
|
855
|
-
|
856
|
-
|
857
|
-
|
858
|
-
|
859
|
-
|
860
|
-
|
861
|
-
|
862
|
-
|
863
|
-
|
864
|
-
|
865
|
-
|
866
|
-
|
867
|
-
|
868
|
-
|
869
|
-
|
870
|
-
|
871
|
-
|
872
|
-
|
873
|
-
|
874
|
-
|
875
|
-
|
876
|
-
|
877
|
-
|
878
|
-
|
879
|
-
|
880
|
-
|
881
|
-
|
882
|
-
|
883
|
-
|
884
|
-
|
885
|
-
|
886
|
-
|
887
|
-
|
888
|
-
|
889
|
-
|
890
|
-
/** User-defined rules */
|
891
|
-
...options.rules
|
853
|
+
return [
|
854
|
+
pluginSonarjs.configs.recommended,
|
855
|
+
{
|
856
|
+
rules: {
|
857
|
+
/**
|
858
|
+
* Cognitive Complexity is a measure of how hard the control flow of a function
|
859
|
+
* is to understand. Functions with high Cognitive Complexity will be difficult
|
860
|
+
* to maintain.
|
861
|
+
*
|
862
|
+
* @see https://github.com/SonarSource/eslint-plugin-sonarjs/blob/master/docs/rules/cognitive-complexity.md
|
863
|
+
*/
|
864
|
+
"sonarjs/cognitive-complexity": ["error", 30],
|
865
|
+
/**
|
866
|
+
* Duplicated string literals make the process of refactoring error-prone,
|
867
|
+
* since you must be sure to update all occurrences. On the other hand,
|
868
|
+
* constants can be referenced from many places, but only need to be
|
869
|
+
* updated in a single place.
|
870
|
+
*
|
871
|
+
* @see https://github.com/SonarSource/eslint-plugin-sonarjs/blob/master/docs/rules/no-duplicate-string.md
|
872
|
+
*/
|
873
|
+
"sonarjs/no-duplicate-string": ["error", {
|
874
|
+
threshold: 10
|
875
|
+
}],
|
876
|
+
/**
|
877
|
+
* Those rules are crashing ESLint at startup, so they are disabled for now.
|
878
|
+
*/
|
879
|
+
"sonarjs/no-empty-collection": "off",
|
880
|
+
"sonarjs/no-extra-arguments": "off",
|
881
|
+
"sonarjs/no-gratuitous-expressions": "off",
|
882
|
+
"sonarjs/no-one-iteration-loop": "off",
|
883
|
+
"sonarjs/no-redundant-jump": "off",
|
884
|
+
"sonarjs/no-unused-collection": "off",
|
885
|
+
"sonarjs/no-use-of-empty-return-value": "off",
|
886
|
+
"sonarjs/prefer-immediate-return": "off",
|
887
|
+
/** User-defined rules */
|
888
|
+
...options.rules
|
889
|
+
}
|
892
890
|
}
|
893
|
-
|
891
|
+
];
|
894
892
|
}
|
895
893
|
function node(options) {
|
896
894
|
return [
|
@@ -948,7 +946,7 @@ function node(options) {
|
|
948
946
|
},
|
949
947
|
settings: {
|
950
948
|
node: {
|
951
|
-
version: ">=
|
949
|
+
version: ">=22.1.0"
|
952
950
|
}
|
953
951
|
}
|
954
952
|
}
|
@@ -1085,7 +1083,7 @@ function jsonTsconfig() {
|
|
1085
1083
|
},
|
1086
1084
|
{
|
1087
1085
|
order: { type: "asc" },
|
1088
|
-
pathPattern:
|
1086
|
+
pathPattern: String.raw`^compilerOptions\.paths$`
|
1089
1087
|
}
|
1090
1088
|
]
|
1091
1089
|
}
|
package/dist/index.cjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../utils/getConfigRules.ts","../configs/typescript.ts","../configs/vue.ts","../configs/vitest.ts","../configs/unicorn.ts","../configs/sonarjs.ts","../configs/node.ts","../configs/jsonTsconfig.ts","../configs/jsonPackage.ts","../configs/json.ts","../configs/jsdoc.ts","../configs/eslintComments.ts","../configs/antfu.ts","../configs/all.ts"],"sourcesContent":["import { Linter } from 'eslint'\nimport { MaybeArray } from '@unshared/types'\nimport { toArray } from '@unshared/collection/toArray'\n\nexport interface ESLintConfigLike {\n rules?: Partial<Linter.RulesRecord>\n}\n\n/**\n * Extract the rules of an ESLint configuration object.\n *\n * @param config The ESLint configuration object.\n * @returns The `RulesRecord` object from the configuration.\n */\nexport function getConfigRules(config: MaybeArray<ESLintConfigLike>): Linter.RulesRecord {\n const configs = toArray(config).flat() as Array<{ rules: Linter.RulesRecord }>\n const rules = configs.map(x => x.rules)\n return Object.assign({}, ...rules) as Linter.RulesRecord\n}\n","import tslint from 'typescript-eslint'\nimport { cwd } from 'node:process'\nimport perfectionist from 'eslint-plugin-perfectionist'\nimport { ESLint, Linter } from 'eslint'\nimport { toArray } from '@unshared/collection/toArray'\nimport stylistic from '@stylistic/eslint-plugin'\nimport javascript from '@eslint/js'\nimport { ESLintConfigOptions } from './all'\nimport { getConfigRules } from '../utils'\n\nexport function typescript(options: ESLintConfigOptions): Linter.FlatConfig[] {\n return [\n javascript.configs.recommended,\n {\n languageOptions: {\n // @ts-expect-error: ignore\n parser: tslint.parser,\n parserOptions: {\n ecmaVersion: 'latest',\n sourceType: 'module',\n project: toArray(options.tsConfigPath ?? './tsconfig.json'),\n tsconfigRootDir: cwd(),\n },\n },\n plugins: {\n '@typescript-eslint': tslint.plugin as ESLint.Plugin,\n '@stylistic': stylistic as ESLint.Plugin,\n 'perfectionist': perfectionist,\n },\n files: [\n '**/*.{ts,tsx,cts,mts}',\n '**/*.{js,jsx,cjs,mjs}',\n ],\n rules: {\n\n /**\n * Inherit all recommended rules from the `@eslint/js` plugin. This is the base\n * configuration for JavaScript files.\n */\n ...getConfigRules(tslint.configs.recommendedTypeChecked),\n ...getConfigRules(tslint.configs.stylisticTypeChecked),\n\n /**\n * Age-old debate over how to style braces. This rule aims to reduce the\n * cognitive load of reasoning about code by enforcing a consistent style.\n *\n * @see https://eslint.style/rules/default/brace-style\n */\n 'brace-style': 'off',\n '@typescript-eslint/brace-style': 'off',\n '@stylistic/brace-style': ['error', 'stroustrup', {\n allowSingleLine: true,\n }],\n\n /**\n * Enforce an indent of 2 spaces. Aims to reduce visual noise and maintain\n * readability of code when viewed on GitHub or GitLab.\n *\n * @see https://eslint.style/rules/default/no-tabs\n * @see https://eslint.style/rules/default/indent\n * @see https://eslint.style/rules/default/indent-binary-ops\n */\n 'no-tabs': 'off',\n 'indent': 'off',\n 'indent-binary-ops': 'off',\n '@typescript-eslint/no-tabs': 'off',\n '@typescript-eslint/indent': 'off',\n '@typescript-eslint/indent-binary-ops': 'off',\n '@stylistic/no-tabs': 'error',\n '@stylistic/indent': ['error', 2],\n '@stylistic/indent-binary-ops': ['error', 2],\n\n /**\n * Enforce no semi-colons. This rule aims to maintain consistency around the\n * use or omission of trailing semicolons. Helps reduce the visual noise in\n * the codebase. Also helps to prevent errors when refactoring and adding\n * new lines.\n *\n * @see https://eslint.style/rules/default/semi\n */\n 'semi': 'off',\n '@typescript-eslint/semi': 'off',\n '@stylistic/semi': ['error', 'never'],\n\n /**\n * Enforce a consistent linebreak style and ensure no leading line breaks\n * and a single trailing line break. This rule aims to maintain consistency\n * around the use of line breaks in the codebase and reduce the amount of\n * diff churn when making changes.\n *\n * @see https://eslint.style/rules/default/linebreak-style\n */\n 'eol-last': 'off',\n 'no-multiple-empty-lines': 'off',\n '@stylistic/eol-last': ['error', 'always'],\n '@stylistic/no-multiple-empty-lines': ['error', {\n max: 1,\n maxBOF: 0,\n maxEOF: 0,\n }],\n\n /**\n * Enforce a trailing comma after the last element or property in a multiline\n * list of properties or elements. This rule improves the clarity of diffs\n * when an item is added or removed from an object or array.\n *\n * @see https://eslint.style/rules/default/comma-dangle\n * @see https://eslint.style/rules/default/comma-spacing\n */\n 'comma-dangle': 'off',\n '@typescript-eslint/comma-dangle': 'off',\n '@stylistic/comma-dangle': ['error', 'always-multiline'],\n\n /**\n * This rule requires empty lines before and/or after comments. It is disabled\n * however when in an object literal, array, or type literal.\n *\n * @see https://eslint.style/rules/default/lines-around-comment\n */\n\n /**\n * Normalize type declaration and definition. This reduces the cognitive load\n * of reasoning about code by enforcing a consistent style.\n *\n * @see https://typescript-eslint.io/rules/consistent-indexed-object-style\n */\n '@typescript-eslint/consistent-indexed-object-style': ['error', 'record'],\n '@typescript-eslint/consistent-type-definitions': ['error', 'interface'],\n '@typescript-eslint/member-delimiter-style': ['error', { multiline: { delimiter: 'none' } }],\n '@typescript-eslint/array-type': ['error', { default: 'array-simple', readonly: 'array-simple' }],\n\n /**\n * Enforce sequential declarations in the same block. This rule aims to\n * enforce a top to bottom ordering of variable and type declarations.\n * This reduces the likelihood of a developer skipping over a declaration\n * when modifying code.\n *\n * @see https://typescript-eslint.io/rules/no-use-before-define\n */\n 'no-use-before-define': 'off',\n '@typescript-eslint/no-use-before-define': ['error', {\n enums: true,\n classes: false,\n typedefs: true,\n variables: true,\n functions: false,\n ignoreTypeReferences: true,\n }],\n\n /**\n * Enforce a consistent spacing around various places where spaces are optional.\n * This rule aims to maintain consistency around the use of spaces in the codebase\n * and reduce the amount of diff churn when making changes.\n *\n * @see https://eslint.style/rules/default/key-spacing\n * @see https://eslint.style/rules/default/comma-spacing\n * @see https://eslint.style/rules/default/block-spacing\n * @see https://eslint.style/rules/default/arrow-spacing\n * @see https://eslint.style/rules/default/object-curly-spacing\n */\n 'key-spacing': 'off',\n 'comma-spacing': 'off',\n 'block-spacing': 'off',\n 'arrow-spacing': 'off',\n 'spaced-comment': 'off',\n 'no-multi-spaces': 'off',\n 'space-before-blocks': 'off',\n 'lines-around-comment': 'off',\n 'object-curly-spacing': 'off',\n 'array-bracket-spacing': 'off',\n 'array-bracket-newline': 'off',\n 'function-call-spacing': 'off',\n 'generator-star-spacing': 'off',\n 'template-curly-spacing': 'off',\n 'object-property-newline ': 'off',\n 'newline-per-chained-call': 'off',\n 'computed-property-spacing': 'off',\n 'lines-between-class-members': 'off',\n '@typescript-eslint/comma-spacing': 'off',\n '@typescript-eslint/object-curly-spacing': 'off',\n '@typescript-eslint/type-annotation-spacing': 'off',\n '@typescript-eslint/lines-around-comment': 'off',\n\n '@stylistic/key-spacing': ['error', { afterColon: true, beforeColon: false }],\n '@stylistic/comma-spacing': ['error', { after: true, before: false }],\n '@stylistic/arrow-spacing': ['error', { before: true, after: true }],\n '@stylistic/type-generic-spacing': 'error',\n '@stylistic/type-named-tuple-spacing': 'error',\n '@stylistic/block-spacing': ['error', 'always'],\n '@stylistic/no-multi-spaces': 'error',\n '@stylistic/keyword-spacing': ['error', { before: true, after: true }],\n '@stylistic/space-before-blocks': ['error', 'always'],\n '@stylistic/object-curly-spacing': ['error', 'always'],\n '@stylistic/array-bracket-spacing': ['error', 'never'],\n '@stylistic/array-bracket-newline': ['error', 'consistent'],\n '@stylistic/function-call-spacing': ['error', 'never'],\n '@stylistic/template-curly-spacing': ['error', 'never'],\n '@stylistic/object-property-newline': ['error', { allowAllPropertiesOnSameLine: true }],\n '@stylistic/generator-star-spacing': ['error', { before: true, after: true }],\n '@stylistic/computed-property-spacing': ['error', 'never'],\n '@stylistic/multiline-ternary': ['error', 'always-multiline'],\n '@stylistic/lines-around-comment': ['error', {\n beforeBlockComment: true,\n beforeLineComment: true,\n ignorePattern: '^(?! ?---|\\\\*)',\n applyDefaultIgnorePatterns: true,\n afterHashbangComment: true,\n }],\n '@stylistic/spaced-comment': ['error', 'always', {\n block: { markers: ['!'], exceptions: ['*'], balanced: true },\n line: { markers: ['/'], exceptions: ['/', '#'] },\n }],\n '@stylistic/lines-between-class-members': ['error', {\n enforce: [{ blankLine: 'always', prev: 'method', next: '*' }],\n }, {\n exceptAfterSingleLine: true,\n }],\n '@stylistic/type-annotation-spacing': ['error', {\n before: false,\n after: true,\n overrides: {\n arrow: { before: true, after: true },\n colon: { before: false, after: true },\n variable: { before: false, after: true },\n property: { before: false, after: true },\n parameter: { before: false, after: true },\n returnType: { before: false, after: true },\n },\n }],\n\n /**\n * Enforce the use of `@ts-expect-error` over `@ts-ignore` to silence TypeScript\n * errors. This rule aims to ensure that TypeScript errors are never silenced\n * without explanation or justification. When an error is fixed, the\n * `@ts-expect-error` forces the developer to remove the comment.\n *\n * @see https://typescript-eslint.io/rules/prefer-ts-expect-error\n * @see https://typescript-eslint.io/rules/ban-ts-comment\n */\n '@typescript-eslint/prefer-ts-expect-error': 'error',\n '@typescript-eslint/ban-ts-comment': ['error', {\n 'ts-check': false,\n 'ts-expect-error': 'allow-with-description',\n 'ts-ignore': false,\n 'ts-nocheck': false,\n }],\n\n /**\n * Disallow dangling expressions and promises. This rule aims to prevent\n * dangling promises and expressions that are not assigned to a variable.\n * This can lead to bugs and unexpected behavior in the codebase.\n *\n * @see https://eslint.org/docs/rules/no-void\n * @see https://typescript-eslint.io/rules/no-floating-promises\n */\n 'no-void': 'off',\n 'no-unused-expressions': 'off',\n '@typescript-eslint/no-unused-expressions': 'error',\n '@typescript-eslint/no-floating-promises': ['error', {\n ignoreVoid: true,\n ignoreIIFE: true,\n }],\n\n /**\n * Sort imports alphabetically and group them without newlines. This rule\n * aims to maintain consistency around the order of imports in JavaScript\n * files. Helps reduce the visual noise in the codebase.\n *\n * @see https://eslint-plugin-perfectionist.azat.io/rules/sort-imports\n */\n 'sort-imports': 'off',\n '@typescript-eslint/sort-type-constituents': 'off',\n '@typescript-eslint/consistent-type-imports': ['error', {\n disallowTypeAnnotations: false,\n prefer: 'no-type-imports',\n }],\n 'perfectionist/sort-exports': ['error', {\n 'type': 'alphabetical',\n 'ignore-case': false,\n }],\n 'perfectionist/sort-named-imports': ['error', { type: 'natural' }],\n 'perfectionist/sort-imports': ['error', {\n 'newlines-between': 'never',\n 'order': 'desc',\n }],\n\n /**\n * Enforce no unused variables. Helps keep the codebase clean and reduces\n * the chance of bugs from side-effects.\n *\n * @see https://typescript-eslint.io/rules/@typescript-eslint/no-unused-vars\n */\n 'no-redeclare': 'off',\n 'no-unused-vars': 'off',\n '@typescript-eslint/no-redeclare': 'error',\n '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }],\n\n //////////////////////////////////////////////////////////////////////////////////////////\n\n 'perfectionist/sort-intersection-types': ['error', { type: 'natural' }],\n 'perfectionist/sort-union-types': ['error', {\n 'type': 'natural',\n 'nullable-last': true,\n }],\n 'no-useless-constructor': 'off',\n '@typescript-eslint/ban-types': 'off',\n '@typescript-eslint/camelcase': 'off',\n '@typescript-eslint/explicit-function-return-type': 'off',\n '@typescript-eslint/explicit-member-accessibility': 'off',\n '@typescript-eslint/explicit-module-boundary-types': 'off',\n '@typescript-eslint/no-empty-function': 'off',\n '@typescript-eslint/no-empty-interface': 'off',\n '@typescript-eslint/no-explicit-any': 'off',\n '@typescript-eslint/no-namespace': 'off',\n '@typescript-eslint/no-non-null-assertion': 'off',\n '@typescript-eslint/no-parameter-properties': 'off',\n 'array-callback-return': 'error',\n 'arrow-body-style': ['error', 'as-needed'],\n 'arrow-parens': ['error', 'as-needed', { requireForBlockBody: true }],\n 'block-scoped-var': 'error',\n 'camelcase': 'off',\n 'comma-style': ['error', 'last'],\n 'complexity': ['off', 11],\n 'consistent-return': 'off',\n 'curly': ['error', 'multi-or-nest', 'consistent'],\n 'eqeqeq': ['error', 'smart'],\n 'no-alert': 'error',\n 'no-case-declarations': 'error',\n 'no-cond-assign': ['error', 'always'],\n 'no-confusing-arrow': 'error',\n 'no-console': ['warn', { allow: ['warn', 'error'] }],\n 'no-constant-condition': 'error',\n 'no-debugger': 'error',\n 'no-eval': 'error',\n 'no-implied-eval': 'error',\n 'no-multi-str': 'error',\n 'no-param-reassign': 'off',\n 'no-restricted-syntax': ['error', 'DebuggerStatement', 'LabeledStatement', 'WithStatement'],\n 'no-return-assign': 'off',\n 'no-return-await': 'off',\n 'no-trailing-spaces': 'error',\n 'no-useless-escape': 'off',\n 'no-var': 'error',\n 'no-with': 'error',\n 'object-shorthand': ['error', 'always', { avoidQuotes: true, ignoreConstructors: false }],\n 'one-var-declaration-per-line': 'error',\n 'operator-linebreak': ['error', 'before'],\n 'prefer-arrow-callback': ['error', { allowNamedFunctions: false, allowUnboundThis: true }],\n 'prefer-const': ['error', { destructuring: 'any', ignoreReadBeforeAssign: true }],\n 'prefer-rest-params': 'error',\n 'prefer-spread': 'error',\n 'prefer-template': 'error',\n 'quote-props': ['error', 'consistent-as-needed'],\n 'quotes': ['error', 'single'],\n 'require-await': 'off',\n 'space-before-function-paren': ['error', 'never'],\n 'vars-on-top': 'error',\n },\n },\n\n /**\n * Ignore duplicate imports in declaration files as they are often used to re-export\n * types from other packages into multiple namespaces. This is a common pattern\n * in TypeScript declaration files.\n */\n {\n files: ['*.d.ts'],\n rules: {\n '@typescript-eslint/no-use-before-define': 'off',\n 'import/no-duplicates': 'off',\n },\n },\n\n /**\n * Allow console statements in scripts and CLI files since they are not part of the\n * library / production code and are useful for debugging, logging, and testing.\n */\n {\n files: ['**/scripts/**/*', 'cli.*'],\n rules: {\n 'no-console': 'off',\n },\n },\n ]\n}\n","import vueParser from 'vue-eslint-parser'\nimport tslint from 'typescript-eslint'\nimport vueProcessorBlocks from 'eslint-processor-vue-blocks'\nimport vuePlugin from 'eslint-plugin-vue'\nimport { mergeProcessors } from 'eslint-merge-processors'\nimport { Linter } from 'eslint'\nimport { typescript } from './typescript'\nimport { ESLintConfigOptions } from './all'\n\nexport function vue(options: ESLintConfigOptions): Linter.FlatConfig[] {\n const TYPESCRIPT_CONFIG = typescript(options).at(1)!\n return [\n ...vuePlugin.configs?.['flat/base'] as Linter.FlatConfig[],\n {\n plugins: {\n vue: vuePlugin,\n ...TYPESCRIPT_CONFIG.plugins,\n },\n languageOptions: {\n globals: {\n computed: 'readonly',\n defineEmits: 'readonly',\n defineExpose: 'readonly',\n defineProps: 'readonly',\n onMounted: 'readonly',\n onUnmounted: 'readonly',\n reactive: 'readonly',\n ref: 'readonly',\n shallowReactive: 'readonly',\n shallowRef: 'readonly',\n toRef: 'readonly',\n toRefs: 'readonly',\n watch: 'readonly',\n watchEffect: 'readonly',\n },\n parser: vueParser,\n parserOptions: {\n parser: tslint.parser,\n extraFileExtensions: ['.vue'],\n ...TYPESCRIPT_CONFIG.languageOptions!.parserOptions,\n },\n },\n processor: mergeProcessors([\n // @ts-expect-error: ignore\n vuePlugin.processors['.vue'],\n vueProcessorBlocks(),\n ]),\n files: [\n '**/*.vue',\n ],\n rules: {\n ...TYPESCRIPT_CONFIG.rules as Linter.RulesRecord,\n // @ts-expect-error: ignore\n ...vuePlugin.configs['flat/recommended'].rules as Linter.RulesRecord,\n // @ts-expect-error: ignore\n ...vuePlugin.configs['flat/strongly-recommended'].rules as Linter.RulesRecord,\n // @ts-expect-error: ignore\n ...vuePlugin.configs['flat/essential'].rules as Linter.RulesRecord,\n\n /**\n * Disable some TypeScript rules that may conflict with the Vue SFC parser.\n */\n '@typescript-eslint/no-unsafe-call': 'off',\n '@typescript-eslint/no-unsafe-return': 'off',\n '@typescript-eslint/no-misused-promises': 'off',\n '@typescript-eslint/no-unsafe-assignment': 'off',\n '@typescript-eslint/no-unsafe-member-access': 'off',\n\n /**\n * Enforces consistent usage of type imports. This rule will enforce the use\n * of `type` imports to make it easier for the Vue SFC compiler to analyze\n * the code and infer the dependency graph correctly.\n *\n * @see https://typescript-eslint.io/rules/consistent-type-imports\n * @see https://vuejs.github.io/vetur/guide/FAQ.html#why-does-vetur-show-cannot-find-module-xxx\n */\n // '@typescript-eslint/consistent-type-imports': ['error', {\n // disallowTypeAnnotations: false,\n // fixStyle: 'inline-type-imports',\n // prefer: 'type-imports',\n // }],\n\n /**\n * Enforce the order of the top-level properties in the component. This rule\n * helps to maintain consistency and readability by enforcing a predictable\n * order of the top-level properties in the component.\n *\n * @see https://eslint.vuejs.org/rules/ordered-component-elements.html\n */\n 'vue/block-order': ['error', {\n order: [\n 'docs',\n 'script',\n 'template',\n 'style',\n ],\n }],\n\n /**\n * Enforce use of the Composition API and TypeScript. This rule forbids the\n * use of the Options API and JavaScript in Vue components for better\n * consistency and maintainability.\n *\n * @see https://eslint.vuejs.org/rules/vue/prefer-define-options.html\n * @see https://eslint.vuejs.org/rules/vue/component-api-style.html\n */\n 'vue/prefer-define-options': 'error',\n 'vue/component-api-style': ['error', ['script-setup']],\n\n /**\n * Enforce the component name casing to be PascalCase. This rules helps identify\n * and distinguish between components and HTML elements. It also helps to avoid\n * conflicts with existing and future HTML elements.\n *\n * @see https://eslint.vuejs.org/rules/component-name-in-template-casing.html\n */\n 'vue/component-name-in-template-casing': ['error', 'PascalCase', {\n ignores: ['/\\\\./'],\n registeredComponentsOnly: false,\n }],\n\n /**\n * Enforce consistent spacing between HTML comments and their content.\n *\n * @see https://eslint.vuejs.org/rules/html-comment-content-spacing.html\n * @see https://eslint.vuejs.org/rules/html-comment-content-newline.html\n */\n 'vue/html-comment-content-spacing': ['error', 'always'],\n 'vue/html-comment-content-newline': ['error', {\n multiline: 'always',\n singleline: 'never',\n }],\n\n /**\n * Enforce consistent spacing between HTML / Component tags. This makes it\n * easier to read and understand the structure of the component.\n *\n * @see https://eslint.vuejs.org/rules/padding-line-between-blocks.html\n * @see https://eslint.vuejs.org/rules/padding-line-between-tags.html\n */\n 'vue/padding-line-between-blocks': ['error', 'always'],\n 'vue/padding-line-between-tags': ['error', [\n { blankLine: 'consistent', next: '*', prev: '*' },\n { blankLine: 'always', next: '*', prev: 'comment' },\n ]],\n\n 'vue/html-comment-indent': ['error', 2],\n 'vue/multiline-html-element-content-newline': ['error', {\n allowEmptyLines: true,\n ignores: [],\n ignoreWhenEmpty: true,\n }],\n\n /**\n * Enforce consistent spacing and newlines in the template. This rule helps\n * to maintain consistency and readability by enforcing a predictable\n *\n * @see https://eslint.vuejs.org/rules/html-indent.html\n * @see https://eslint.vuejs.org/rules/max-attributes-per-line.html\n * @see https://eslint.vuejs.org/rules/html-closing-bracket-newline.html\n */\n 'vue/html-indent': ['error', 2, {\n alignAttributesVertically: true,\n attribute: 1,\n baseIndent: 1,\n closeBracket: 0,\n ignores: [],\n }],\n\n // 'vue/func-call-spacing': ['off', 'never'],\n 'vue/key-spacing': ['error', { afterColon: true, beforeColon: false }],\n 'vue/keyword-spacing': ['error', { after: true, before: true }],\n 'vue/max-attributes-per-line': ['error', {\n multiline: { max: 1 },\n singleline: { max: 5 },\n }],\n\n /**\n * Allow single-word component names. This rule is disabled because we use\n * pascal-casing to distinguish between components and HTML elements.\n *\n * @see https://eslint.vuejs.org/rules/multi-word-component-names.html\n */\n 'vue/multi-word-component-names': 'off',\n 'vue/no-reserved-component-names': 'off',\n\n /**\n * Reports the destructuring or member expression of props passed to setup\n * causing the value to lose reactivity. This rule helps to avoid common\n * pitfalls when using the Composition API.\n *\n * @see https://eslint.vuejs.org/rules/no-setup-props-reactivity-loss.html\n */\n 'vue/no-setup-props-reactivity-loss': 'error',\n\n /**\n * Disallow v-if in v-for. This rule helps to avoid common pitfalls when\n * using v-if and v-for together in the same element.\n *\n * @see https://eslint.vuejs.org/rules/no-use-v-if-with-v-for.html\n */\n 'vue/no-use-v-if-with-v-for': 'error',\n\n /**\n * Enforce the declaration of emits in the setup function and warn on unused\n * emits declarations. This rule helps reduce the risk stale code.\n *\n * @see https://eslint.vuejs.org/rules/require-explicit-emits.html\n * @see https://eslint.vuejs.org/rules/no-unused-emit-declarations.html\n */\n 'vue/require-explicit-emits': 'error',\n\n /**\n * Enforce the `@` shorthand over `v-on:` and only allow inline callbacks.\n * This rule helps to maintain consistency and readability by enforcing a\n * predictable order of the event handlers in the component.\n *\n * @see https://eslint.vuejs.org/rules/v-on-style.html\n * @see https://eslint.vuejs.org/rules/v-on-handler-style.html\n */\n 'vue/v-on-style': ['error', 'shorthand'],\n\n 'vue/return-in-computed-property': 'off',\n 'vue/no-sparse-arrays': 'error',\n 'vue/no-unused-emit-declarations': 'error',\n 'vue/no-use-v-else-with-v-for': 'error',\n 'vue/no-useless-v-bind': 'error',\n 'vue/no-v-html': 'off',\n 'vue/no-v-text-v-html-on-component': 'error',\n 'vue/object-curly-newline': ['error', { consistent: true, multiline: true }],\n 'vue/object-curly-spacing': ['error', 'always'],\n 'vue/object-shorthand': [\n 'error',\n 'always',\n {\n avoidQuotes: true,\n ignoreConstructors: false,\n },\n ],\n 'vue/operator-linebreak': ['error', 'before'],\n 'vue/prefer-import-from-vue': 'off',\n 'vue/prefer-separate-static-class': 'error',\n 'vue/prefer-template': 'error',\n 'vue/quote-props': ['error', 'consistent-as-needed'],\n 'vue/require-default-prop': 'off',\n // reactivity transform\n 'vue/block-tag-newline': ['error', {\n multiline: 'always',\n singleline: 'always',\n }],\n // extensions\n 'vue/array-bracket-spacing': ['error', 'never'],\n 'vue/arrow-spacing': ['error', { after: true, before: true }],\n 'vue/block-lang': ['error', { script: { lang: 'ts' } }],\n 'vue/block-spacing': ['error', 'always'],\n 'vue/brace-style': ['error', 'stroustrup', { allowSingleLine: true }],\n 'vue/comma-dangle': ['error', 'always-multiline'],\n 'vue/comma-spacing': ['error', { after: true, before: false }],\n 'vue/comma-style': ['error', 'last'],\n 'vue/component-options-name-casing': ['error', 'PascalCase'],\n 'vue/custom-event-name-casing': ['error', 'camelCase'],\n 'vue/define-macros-order': ['error', {\n order: ['defineProps', 'defineEmits'],\n }],\n 'vue/dot-location': ['error', 'property'],\n 'vue/dot-notation': ['error', { allowKeywords: true }],\n 'vue/eqeqeq': ['error', 'smart'],\n 'vue/first-attribute-linebreak': ['error', {\n multiline: 'below',\n singleline: 'beside',\n }],\n 'vue/html-closing-bracket-newline': ['error', {\n multiline: 'never',\n selfClosingTag: {\n multiline: 'always',\n singleline: 'never',\n },\n singleline: 'never',\n }],\n 'vue/no-constant-condition': 'warn',\n 'vue/no-empty-pattern': 'error',\n 'vue/no-extra-parens': ['error', 'functions'],\n 'vue/no-irregular-whitespace': 'error',\n 'vue/no-loss-of-precision': 'error',\n 'vue/no-restricted-syntax': [\n 'error',\n 'DebuggerStatement',\n 'LabeledStatement',\n 'WithStatement',\n ],\n 'vue/no-restricted-v-bind': ['error', '/^v-/'],\n 'vue/require-prop-types': 'off',\n 'vue/space-in-parens': ['error', 'never'],\n 'vue/space-infix-ops': 'error',\n 'vue/space-unary-ops': ['error', { nonwords: false, words: true }],\n 'vue/template-curly-spacing': 'error',\n 'vue/v-on-handler-style': ['error', 'inline'],\n\n /** User-defined rules */\n ...options.rules,\n },\n },\n ]\n}\n","import vitestPlugin from 'eslint-plugin-vitest'\nimport { Linter } from 'eslint'\nimport { ESLintConfigOptions } from './all'\n\nexport function vitest(options: ESLintConfigOptions): Linter.FlatConfig[] {\n return [\n {\n plugins: {\n vitest: vitestPlugin,\n },\n files: [\n '**/*.{ts,mts,cts,tsx,d.ts}',\n '**/*.{js,mjs,cjs,jsx}',\n ],\n settings: {\n vitest: {\n typecheck: true,\n },\n },\n languageOptions: {\n globals: {\n ...vitestPlugin.environments.env.globals,\n expectTypeOf: true,\n },\n },\n rules: {\n\n /**\n * Inject all configuration from eslint-plugin-vitest.\n *\n * @see https://github.com/veritem/eslint-plugin-vitest/tree/main?tab=readme-ov-file#rules\n */\n ...vitestPlugin.configs.all.rules,\n\n /**\n * This rule aims to enforce having at least one expectation\n * in test body to ensure that the test is actually testing something.\n *\n * @see https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/expect-expect.md\n */\n 'vitest/expect-expect': ['error', {\n assertFunctionNames: [\n 'expect',\n 'expectTypeOf',\n ],\n }],\n\n /**\n * Disable the conditional test rule as it is prevent's us to use in-source\n * testing when using the `if (import.meta.vitest)` condition. Also disable\n * the rule that prevents the use of if-else statements in tests as we want\n * to use it to test type predicates.\n *\n * @see https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/no-conditional-in-test.md\n */\n 'vitest/no-conditional-in-test': 'off',\n 'vitest/no-conditional-tests': 'off',\n\n /**\n * Since we use in-source testing, we need to disable the rule as it may prevent\n * us from using top level evaluation that are not part of the test suite.\n *\n * @see https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/no-hooks.md\n */\n 'vitest/require-hook': 'off',\n 'vitest/no-hooks': 'off',\n\n /**\n * Disable the rule that enforces the use of `expect.assertions` in tests.\n * As much as this rule enforces a best-practice, it is not always necessary.\n *\n * @see https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/prefer-expect-assertions.md\n */\n 'vitest/prefer-expect-assertions': 'off',\n\n /**\n * Some functions may have a single test case, and it is not necessary\n * to wrap them in a describe block.\n *\n * @see https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/require-top-level-describe.md\n */\n 'vitest/require-top-level-describe': 'off',\n\n /**\n * Enforce rule titles starts with 'should'. This is a convention\n * to force the developer to write the test in a way that it reads\n * like a sentence.\n *\n * @see https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/valid-title.md\n */\n 'vitest/valid-title': ['error', {\n ignoreTypeOfDescribeName: true,\n mustMatch: {\n test: ['^should'],\n },\n }],\n\n /**\n * Disable the prefer-truthy/false rule as we want to allow the use of strict equality checks\n * with boolean values.\n *\n * @see https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-be-truthy.md\n * @see https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-be-falsy.md\n */\n 'vitest/prefer-to-be-truthy': 'off',\n 'vitest/prefer-to-be-falsy': 'off',\n\n /** User-defined rules */\n ...options.rules,\n },\n },\n ]\n}\n","import unicornPlugin from 'eslint-plugin-unicorn'\nimport { Linter } from 'eslint'\nimport { ESLintConfigOptions } from './all'\n\n// @ts-expect-error: untyped module\nconst UNICORN_RECOMMENDED_RULES = unicornPlugin.configs!.recommended.rules as Linter.RulesRecord\n\nexport function unicorn(options: ESLintConfigOptions): Linter.FlatConfig[] {\n return [\n {\n plugins: {\n unicorn: unicornPlugin,\n },\n rules: {\n ...UNICORN_RECOMMENDED_RULES,\n\n /**\n * Improve regexes by making them shorter, consistent, and safer. This rule\n * aims to improve readability and consistency of regexes while also\n * mitigating regex denial of service attacks by disallowing potentially\n * catastrophic backtracking.\n *\n * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/better-regex.md\n */\n 'unicorn/better-regex': 'error',\n\n /**\n * Enforce the catch clause parameter name to be named `error`. This rule\n * aims to enforce a consistent parameter name in catch clauses. The name\n * `error` is the most commonly used name for the parameter that is passed\n * to the catch clause.\n *\n * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/catch-error-name.md\n */\n 'unicorn/catch-error-name': ['error', {\n name: 'error',\n }],\n\n /**\n * Enforce the use of camelCase or PascalCase when naming folders, files and\n * variables. This rule aims to enforce a consistent naming convention for\n * filenames, directory names, and variable names.\n *\n * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/filename-case.md\n */\n 'unicorn/filename-case': ['error', {\n cases: {\n camelCase: true,\n pascalCase: true,\n },\n ignore: [\n '^[A-Z]+(.md)?$',\n ],\n }],\n\n /**\n * Disable the recommended import style rules. We want to be able to use both\n * named and default imports in our codebase.\n *\n * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/import-style.md\n */\n 'unicorn/import-style': 'off',\n\n /**\n * Disallow unsafe regular expressions. Regular expressions can be unsafe\n * when they are too complex and can cause catastrophic backtracking. This\n * rule disallows regular expressions that can lead to catastrophic\n *\n * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-unsafe-regex.md\n */\n 'unicorn/no-unsafe-regex': 'error',\n\n /**\n * Enforces a convention of grouping digits using numeric separators.\n * Long numbers can become really hard to read, so cutting it into groups\n * of digits, separated with a _, is important to keep your code clear.\n *\n * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/numeric-separators-style.md\n */\n 'unicorn/numeric-separators-style': ['error', {\n onlyIfContainsSeparator: true,\n }],\n\n 'unicorn/number-literal-case': 'error',\n 'unicorn/consistent-function-scoping': 'off',\n 'unicorn/error-message': 'error',\n 'unicorn/escape-case': 'error',\n 'unicorn/no-array-callback-reference': 'off',\n 'unicorn/no-array-for-each': 'off',\n 'unicorn/no-array-instanceof': 'error',\n 'unicorn/no-new-buffer': 'error',\n 'unicorn/no-static-only-class': 'off',\n 'unicorn/prefer-code-point': 'off',\n 'unicorn/prefer-exponentiation-operator': 'error',\n 'unicorn/prefer-includes': 'error',\n 'unicorn/prefer-module': 'off',\n 'unicorn/prefer-starts-ends-with': 'error',\n 'unicorn/prefer-switch': 'off',\n 'unicorn/prefer-text-content': 'error',\n 'unicorn/prefer-type-error': 'error',\n 'unicorn/prevent-abbreviations': ['error', {\n allowList: {\n args: true,\n dir: true,\n fn: true,\n i: true,\n j: true,\n k: true,\n props: true,\n Props: true,\n ref: true,\n v: true,\n x: true,\n y: true,\n z: true,\n },\n }],\n 'unicorn/throw-new-error': 'error',\n },\n\n /** User-defined rules */\n ...options.rules,\n },\n ]\n}\n","import { Linter } from 'eslint'\nimport { FlatCompat } from '@eslint/eslintrc'\nimport { ESLintConfigOptions } from './all'\n\nexport function sonarjs(options: ESLintConfigOptions): Array<Linter.FlatConfig<Linter.RulesRecord>> {\n return new FlatCompat().config({\n extends: [\n 'plugin:sonarjs/recommended',\n ],\n plugins: [\n 'sonarjs',\n ],\n rules: {\n\n /**\n * Cognitive Complexity is a measure of how hard the control flow of a function\n * is to understand. Functions with high Cognitive Complexity will be difficult\n * to maintain.\n *\n * @see https://github.com/SonarSource/eslint-plugin-sonarjs/blob/master/docs/rules/cognitive-complexity.md\n */\n 'sonarjs/cognitive-complexity': ['error', 30],\n\n /**\n * Duplicated string literals make the process of refactoring error-prone,\n * since you must be sure to update all occurrences. On the other hand,\n * constants can be referenced from many places, but only need to be\n * updated in a single place.\n *\n * @see https://github.com/SonarSource/eslint-plugin-sonarjs/blob/master/docs/rules/no-duplicate-string.md\n */\n 'sonarjs/no-duplicate-string': ['error', {\n threshold: 10,\n }],\n\n /**\n * Those rules are crashing ESLint at startup, so they are disabled for now.\n */\n 'sonarjs/no-empty-collection': 'off',\n 'sonarjs/no-extra-arguments': 'off',\n 'sonarjs/no-gratuitous-expressions': 'off',\n 'sonarjs/no-one-iteration-loop': 'off',\n 'sonarjs/no-redundant-jump': 'off',\n 'sonarjs/no-unused-collection': 'off',\n 'sonarjs/no-use-of-empty-return-value': 'off',\n\n /** User-defined rules */\n ...options.rules,\n },\n })\n}\n","import nodePlugin from 'eslint-plugin-n'\nimport { Linter } from 'eslint'\nimport { ESLintConfigOptions } from './all'\n\nexport function node(options: ESLintConfigOptions): Linter.Config[] {\n return [\n {\n plugins: {\n n: nodePlugin,\n },\n rules: {\n ...nodePlugin.configs.recommended.rules,\n\n /**\n * Disallow the use of extraneous imports. This rule helps prevent the\n * use of third-party modules that are not listed in the project's\n * dependencies.\n *\n * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-extraneous-import.md\n */\n 'n/no-extraneous-import': 'error',\n\n /**\n * Disable the no-missing-import as module resolution is already checked\n * by other tools and IDEs extensively. This rule is redundant.\n *\n * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-missing-import.md\n */\n 'n/no-missing-import': 'off',\n 'n/no-missing-require': 'off',\n\n /**\n * Enfore the use of the asyncrounous version of the `fs` and `dns` APIs.\n *\n * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-sync.md\n * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-promises/fs.md\n * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-promises/dns.md\n */\n 'n/no-sync': 'off',\n 'n/prefer-promises/fs': 'error',\n 'n/prefer-promises/dns': 'error',\n\n /**\n * Allow the use of features up to Node.js version 20. This will allow\n * the use of newer ECMAScript features and Node.js APIs.\n *\n * @see https://github.com/eslint-community/eslint-plugin-n/tree/master/docs/rules\n */\n 'n/no-unsupported-features/es-syntax': 'error',\n 'n/no-unsupported-features/es-builtins': 'error',\n 'n/no-unsupported-features/node-builtins': 'error',\n\n /**\n * Prepend the `node:` prefix to all Node.js core modules. This helps\n * identify the module as a Node.js core module and not a third-party\n * module.\n *\n * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-node-protocol.md\n */\n 'n/prefer-node-protocol': 'error',\n\n /** User-defined rules */\n ...options.rules,\n },\n settings: {\n node: {\n version: '>=20.0.0',\n },\n },\n },\n ]\n}\n","import { Linter } from 'eslint'\n\nexport function jsonTsconfig(): Linter.FlatConfig[] {\n return [\n {\n files: [\n '**/tsconfig.json',\n '**/tsconfig.*.json',\n ],\n rules: {\n 'jsonc/sort-array-values': [\n 'error',\n {\n order: { type: 'asc' },\n pathPattern: '^(includes|excludes)$',\n },\n ],\n 'jsonc/sort-keys': [\n 'error',\n {\n order: [\n 'extends',\n 'compilerOptions',\n 'references',\n 'files',\n 'include',\n 'exclude',\n ],\n pathPattern: '^$',\n },\n {\n order: [\n\n // --- Project Structure\n 'incremental',\n 'composite',\n 'tsBuildInfoFile',\n 'disableSourceOfProjectReferenceRedirect',\n 'disableSolutionSearching',\n 'disableReferencedProjectLoad',\n\n // --- Language and Environment\n 'target',\n 'jsx',\n 'jsxFactory',\n 'jsxFragmentFactory',\n 'jsxImportSource',\n 'lib',\n 'moduleDetection',\n 'noLib',\n 'reactNamespace',\n 'useDefineForClassFields',\n 'emitDecoratorMetadata',\n 'experimentalDecorators',\n\n // --- Module Resolution\n 'baseUrl',\n 'rootDir',\n 'rootDirs',\n 'customConditions',\n 'module',\n 'moduleResolution',\n 'moduleSuffixes',\n 'noResolve',\n 'paths',\n 'resolveJsonModule',\n 'resolvePackageJsonExports',\n 'resolvePackageJsonImports',\n 'typeRoots',\n 'types',\n 'allowArbitraryExtensions',\n 'allowImportingTsExtensions',\n 'allowUmdGlobalAccess',\n\n // --- JavaScript Support\n 'allowJs',\n 'checkJs',\n 'maxNodeModuleJsDepth',\n\n // --- Type Checking\n 'strict',\n 'strictBindCallApply',\n 'strictFunctionTypes',\n 'strictNullChecks',\n 'strictPropertyInitialization',\n 'allowUnreachableCode',\n 'allowUnusedLabels',\n 'alwaysStrict',\n 'exactOptionalPropertyTypes',\n 'noFallthroughCasesInSwitch',\n 'noImplicitAny',\n 'noImplicitOverride',\n 'noImplicitReturns',\n 'noImplicitThis',\n 'noPropertyAccessFromIndexSignature',\n 'noUncheckedIndexedAccess',\n 'noUnusedLocals',\n 'noUnusedParameters',\n 'useUnknownInCatchVariables',\n\n // --- Emitting\n 'declaration',\n 'declarationDir',\n 'declarationMap',\n 'downlevelIteration',\n 'emitBOM',\n 'emitDeclarationOnly',\n 'importHelpers',\n 'importsNotUsedAsValues',\n 'inlineSourceMap',\n 'inlineSources',\n 'mapRoot',\n 'newLine',\n 'noEmit',\n 'noEmitHelpers',\n 'noEmitOnError',\n 'outDir',\n 'outFile',\n 'preserveConstEnums',\n 'preserveValueImports',\n 'removeComments',\n 'sourceMap',\n 'sourceRoot',\n 'stripInternal',\n\n // --- Interop Constraints\n 'allowSyntheticDefaultImports',\n 'esModuleInterop',\n 'forceConsistentCasingInFileNames',\n 'isolatedModules',\n 'preserveSymlinks',\n 'verbatimModuleSyntax',\n\n // --- Completeness\n 'skipDefaultLibCheck',\n 'skipLibCheck',\n ],\n pathPattern: '^compilerOptions$',\n },\n {\n order: { type: 'asc' },\n pathPattern: '^compilerOptions\\\\.paths$',\n },\n ],\n },\n },\n ]\n}\n","import { Linter } from 'eslint'\n\nexport function jsonPackage(): Linter.FlatConfig[] {\n return [\n {\n files: [\n '**/package.json',\n ],\n rules: {\n 'jsonc/sort-keys': [\n 'error',\n {\n order: [\n 'name',\n 'type',\n 'version',\n 'license',\n 'private',\n 'sideEffects',\n\n // --- Publishing\n 'description',\n 'author',\n 'keywords',\n 'bugs',\n 'funding',\n 'homepage',\n 'repository',\n\n // --- Distribution\n 'bin',\n 'main',\n 'module',\n 'types',\n 'typings',\n 'browser',\n 'exports',\n 'files',\n\n // --- Package Manager\n 'packageManager',\n 'pnpm',\n\n // --- Scripts\n 'scripts',\n\n // --- Dependencies\n 'peerDependencies',\n 'peerDependenciesMeta',\n 'optionalDependencies',\n 'dependencies',\n 'devDependencies',\n 'bundledDependencies',\n 'bundleDependencies',\n\n // --- Config\n 'tsup',\n 'husky',\n 'lint-staged',\n 'eslintConfig',\n ],\n pathPattern: '^$',\n },\n {\n order: { type: 'asc' },\n pathPattern: '^(?:dev|peer|optional|bundled)?[Dd]ependencies$',\n },\n ],\n },\n },\n ]\n}\n","import jsonc from 'eslint-plugin-jsonc'\nimport { Linter } from 'eslint'\nimport { ESLintConfigOptions } from './all'\n\n/**\n * @param options The configuration options.\n * @returns The configuration for JSON files.\n * @see https://ota-meshi.github.io/eslint-plugin-jsonc/\n */\nexport function configJson(options: ESLintConfigOptions): Linter.FlatConfig[] {\n return [\n ...jsonc.configs['flat/recommended-with-json'],\n {\n files: [\n '**/*.json',\n '**/*.json5',\n ],\n rules: {\n\n /**\n * Automatically apply jsonc rules similar to your configured ESLint core rules to JSON.\n *\n * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/auto.html\n */\n 'jsonc/auto': 'error',\n\n /** User-defined rules */\n ...options.rules,\n },\n },\n ]\n}\n","import pluginJsdoc from 'eslint-plugin-jsdoc'\nimport { Linter } from 'eslint'\nimport { ESLintConfigOptions } from './all'\n\nexport function jsdoc(options: ESLintConfigOptions): Linter.FlatConfig[] {\n return [\n pluginJsdoc.configs['flat/recommended-typescript-flavor-error'],\n {\n files: [\n '**/*.{ts,mts,cts,tsx,d.ts}',\n '**/*.{js,mjs,cjs,jsx}',\n '**/*.vue',\n ],\n rules: {\n\n /**\n * Enforce a consistent padding of the block description.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/HEAD/docs/rules/check-alignment.md#readme\n */\n 'jsdoc/check-alignment': 'error',\n\n /**\n * Normalize the indentation in the JSdoc comment to improve readability.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-indentation.md#readme\n */\n 'jsdoc/check-indentation': 'error',\n\n /**\n * Enforce a strict set of tags for the JSDoc comment. This rule also includes\n * some custom tags that are used in our projects.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/.README/rules/check-tag-names.md\n */\n 'jsdoc/require-jsdoc': 'off',\n 'jsdoc/require-param-type': 'off',\n 'jsdoc/check-tag-names': ['error', {\n definedTags: [\n 'category',\n ],\n }],\n\n /**\n * Checks for multi-line-style comments which fail to meet the criteria of a jsdoc block,\n * namely that it should begin with two and only two asterisks.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-bad-blocks.md\n */\n 'jsdoc/no-bad-blocks': 'error',\n\n /**\n * It is common practice to prefix a hyphen to parameters in JSDoc. But this\n * is sometimes forgotten and has no real purpose. This rule aims to enforce\n * that no hyphen is used.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-hyphen-before-param-description\n */\n 'jsdoc/require-hyphen-before-param-description': ['error', 'never'],\n\n /**\n * Since we are using TypeScript, we don't need to enforce types in JSDoc.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param-type.md\n */\n 'jsdoc/require-returns-type': 'off',\n\n /**\n * Enforce a new-line between the JSDoc summary and tags. Aims to improve\n * readability by separating the summary and tags.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/tag-lines.md\n */\n 'jsdoc/tag-lines': ['error', 'any', { startLines: 1 }],\n\n /** User-defined rules */\n ...options.rules,\n },\n },\n ]\n}\n","import eslintCommentsPlugin from 'eslint-plugin-eslint-comments'\nimport { Linter } from 'eslint'\nimport { ESLintConfigOptions } from './all'\n\n/**\n * Provide configuration for eslint-comments plugin rules. This\n * plugin is used to enforce certain rules for eslint comments.\n *\n * @param options The configuration options for eslint-comments plugin.\n * @returns The configuration for eslint-comments plugin.\n * @see https://mysticatea.github.io/eslint-plugin-eslint-comments/\n */\nexport function eslintComments(options: ESLintConfigOptions): Linter.FlatConfig[] {\n return [\n {\n plugins: {\n 'eslint-comments': eslintCommentsPlugin,\n },\n rules: {\n\n /**\n * Allow multiple rules directive in a single comment. This\n * reduces the number of comments in the code.\n *\n * @see https://mysticatea.github.io/eslint-plugin-eslint-comments/rules/disable-enable-pair\n */\n 'eslint-comments/disable-enable-pair': 'off',\n\n /**\n * `eslint-enable` directive-comments can enable rules which are disabled by different\n * eslint-disable directive-comments. It can enable a rule unintentionally. This rule\n * will report such cases.\n *\n * @see https://mysticatea.github.io/eslint-plugin-eslint-comments/rules/no-aggregating-enable\n */\n 'eslint-comments/no-aggregating-enable': 'error',\n\n /**\n * Disallow duplicate eslint-disable comments. This rule will report when there are\n * multiple eslint-disable comments for the same rule, either in the same line or enabled\n * by different eslint-disable comments.\n *\n * @see https://mysticatea.github.io/eslint-plugin-eslint-comments/rules/no-duplicate-disable\n */\n 'eslint-comments/no-duplicate-disable': 'error',\n\n /**\n * Disallow eslint-disable comments without rule names. This ensures that we cannot\n * disable all rules in a file using eslint-disable comment.\n *\n * @see https://mysticatea.github.io/eslint-plugin-eslint-comments/rules/no-unlimited-disable\n */\n 'eslint-comments/no-unlimited-disable': 'error',\n\n /**\n * Errors when an eslint-disable comment has no effect. This is useful\n * to prevent unnecessary comments in the code.\n *\n * @see https://mysticatea.github.io/eslint-plugin-eslint-comments/rules/no-unused-disable\n */\n 'eslint-comments/no-unused-disable': 'error',\n\n /** User-defined rules */\n ...options.rules,\n },\n },\n ]\n}\n","import pluginAntfu from 'eslint-plugin-antfu'\nimport { Linter } from 'eslint'\nimport { ESLintConfigOptions } from './all'\n\nexport function antfu(options: ESLintConfigOptions): Linter.FlatConfig[] {\n return [\n {\n plugins: {\n antfu: pluginAntfu,\n },\n rules: {\n 'antfu/consistent-list-newline': 'error',\n\n /**\n * Auto-fix import duplication. The TypeScript compiler already detects and removes\n * duplicate imports, but this rule can be used to fix the issue automatically in the editor.\n *\n * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/import-dedupe.md\n */\n 'antfu/import-dedupe': 'error',\n\n /**\n * Enforce top-level function to be declared using function instead of arrow function. This\n * rule helps when you want to add additional overload signatures to a function without\n * having to transform the arrow function into a function declaration manually.\n *\n * On top of that, it mitigates the risk of accidentally using the `this` instance from\n * an outer scope.\n *\n * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/top-level-function.md\n */\n 'antfu/top-level-function': 'error',\n\n /**\n * Enforce consistent line breaks inside braces of object/array/named imports/exports and\n * function parameters. Reduces the cognitive load of reasoning about code style.\n *\n * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/consistent-list-newline.md\n */\n 'object-curly-newline': 'off',\n\n /** User-defined rules */\n ...options.rules,\n },\n },\n ]\n}\n","import { Linter } from 'eslint'\nimport { MaybeArray } from '@unshared/types'\nimport { vue } from './vue'\nimport { vitest } from './vitest'\nimport { unicorn } from './unicorn'\nimport { typescript } from './typescript'\nimport { sonarjs } from './sonarjs'\nimport { node } from './node'\nimport { jsonTsconfig } from './jsonTsconfig'\nimport { jsonPackage } from './jsonPackage'\nimport { configJson } from './json'\nimport { jsdoc } from './jsdoc'\nimport { eslintComments } from './eslintComments'\nimport { antfu } from './antfu'\n\nexport interface ESLintConfigOptions {\n tsConfigPath?: MaybeArray<string>\n rules?: Linter.RulesRecord\n}\n\nexport function all(options: ESLintConfigOptions = {}) {\n return [\n ...antfu(options),\n ...eslintComments(options),\n ...jsdoc(options),\n ...configJson(options),\n ...jsonPackage(),\n ...jsonTsconfig(),\n ...node(options),\n ...sonarjs(options),\n ...typescript(options),\n ...unicorn(options),\n ...vitest(options),\n ...vue(options),\n {\n ignores: [\n '**/dist',\n '**/bin',\n '**/node_modules',\n '**/.nuxt',\n '**/output',\n '**/coverage',\n '**/public',\n '**/__wip__',\n '**/__snapshots__',\n '**/LICENSE*',\n '**/CHANGELOG*',\n 'packages-lock.json',\n 'pnpm-lock.yaml',\n 'yarn.lock',\n ],\n },\n ]\n}\n"],"names":["toArray","cwd","mergeProcessors","FlatCompat"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../utils/getConfigRules.ts","../configs/typescript.ts","../configs/vue.ts","../configs/vitest.ts","../configs/unicorn.ts","../configs/sonarjs.ts","../configs/node.ts","../configs/jsonTsconfig.ts","../configs/jsonPackage.ts","../configs/json.ts","../configs/jsdoc.ts","../configs/eslintComments.ts","../configs/antfu.ts","../configs/all.ts"],"sourcesContent":["import { Linter } from 'eslint'\nimport { MaybeArray } from '@unshared/types'\nimport { toArray } from '@unshared/collection/toArray'\n\nexport interface ESLintConfigLike {\n rules?: Partial<Linter.RulesRecord>\n}\n\n/**\n * Extract the rules of an ESLint configuration object.\n *\n * @param config The ESLint configuration object.\n * @returns The `RulesRecord` object from the configuration.\n */\nexport function getConfigRules(config: MaybeArray<ESLintConfigLike>): Linter.RulesRecord {\n const configs = toArray(config).flat() as Array<{ rules: Linter.RulesRecord }>\n const rules = configs.map(x => x.rules)\n return Object.assign({}, ...rules) as Linter.RulesRecord\n}\n","import tslint from 'typescript-eslint'\nimport { cwd } from 'node:process'\nimport perfectionist from 'eslint-plugin-perfectionist'\nimport { ESLint, Linter } from 'eslint'\nimport { toArray } from '@unshared/collection/toArray'\nimport stylistic from '@stylistic/eslint-plugin'\nimport javascript from '@eslint/js'\nimport { ESLintConfigOptions } from './all'\nimport { getConfigRules } from '../utils'\n\nexport function typescript(options: ESLintConfigOptions): Linter.FlatConfig[] {\n return [\n javascript.configs.recommended,\n {\n languageOptions: {\n // @ts-expect-error: ignore\n parser: tslint.parser,\n parserOptions: {\n ecmaVersion: 'latest',\n sourceType: 'module',\n project: toArray(options.tsConfigPath ?? './tsconfig.json'),\n tsconfigRootDir: cwd(),\n },\n },\n plugins: {\n '@typescript-eslint': tslint.plugin as ESLint.Plugin,\n '@stylistic': stylistic as ESLint.Plugin,\n 'perfectionist': perfectionist,\n },\n files: [\n '**/*.{ts,tsx,cts,mts}',\n '**/*.{js,jsx,cjs,mjs}',\n ],\n rules: {\n\n /**\n * Inherit all recommended rules from the `@eslint/js` plugin. This is the base\n * configuration for JavaScript files.\n */\n ...getConfigRules(tslint.configs.recommendedTypeChecked),\n ...getConfigRules(tslint.configs.stylisticTypeChecked),\n\n /**\n * Age-old debate over how to style braces. This rule aims to reduce the\n * cognitive load of reasoning about code by enforcing a consistent style.\n *\n * @see https://eslint.style/rules/default/brace-style\n */\n 'brace-style': 'off',\n '@typescript-eslint/brace-style': 'off',\n '@stylistic/brace-style': ['error', 'stroustrup', {\n allowSingleLine: true,\n }],\n\n /**\n * Enforce an indent of 2 spaces. Aims to reduce visual noise and maintain\n * readability of code when viewed on GitHub or GitLab.\n *\n * @see https://eslint.style/rules/default/no-tabs\n * @see https://eslint.style/rules/default/indent\n * @see https://eslint.style/rules/default/indent-binary-ops\n */\n 'no-tabs': 'off',\n 'indent': 'off',\n 'indent-binary-ops': 'off',\n '@typescript-eslint/no-tabs': 'off',\n '@typescript-eslint/indent': 'off',\n '@typescript-eslint/indent-binary-ops': 'off',\n '@stylistic/no-tabs': 'error',\n '@stylistic/indent': ['error', 2],\n '@stylistic/indent-binary-ops': ['error', 2],\n\n /**\n * Enforce no semi-colons. This rule aims to maintain consistency around the\n * use or omission of trailing semicolons. Helps reduce the visual noise in\n * the codebase. Also helps to prevent errors when refactoring and adding\n * new lines.\n *\n * @see https://eslint.style/rules/default/semi\n */\n 'semi': 'off',\n '@typescript-eslint/semi': 'off',\n '@stylistic/semi': ['error', 'never'],\n\n /**\n * Enforce a consistent linebreak style and ensure no leading line breaks\n * and a single trailing line break. This rule aims to maintain consistency\n * around the use of line breaks in the codebase and reduce the amount of\n * diff churn when making changes.\n *\n * @see https://eslint.style/rules/default/linebreak-style\n */\n 'eol-last': 'off',\n 'no-multiple-empty-lines': 'off',\n '@stylistic/eol-last': ['error', 'always'],\n '@stylistic/no-multiple-empty-lines': ['error', {\n max: 1,\n maxBOF: 0,\n maxEOF: 0,\n }],\n\n /**\n * Enforce a trailing comma after the last element or property in a multiline\n * list of properties or elements. This rule improves the clarity of diffs\n * when an item is added or removed from an object or array.\n *\n * @see https://eslint.style/rules/default/comma-dangle\n * @see https://eslint.style/rules/default/comma-spacing\n */\n 'comma-dangle': 'off',\n '@typescript-eslint/comma-dangle': 'off',\n '@stylistic/comma-dangle': ['error', 'always-multiline'],\n\n /**\n * This rule requires empty lines before and/or after comments. It is disabled\n * however when in an object literal, array, or type literal.\n *\n * @see https://eslint.style/rules/default/lines-around-comment\n */\n\n /**\n * Normalize type declaration and definition. This reduces the cognitive load\n * of reasoning about code by enforcing a consistent style.\n *\n * @see https://typescript-eslint.io/rules/consistent-indexed-object-style\n */\n '@typescript-eslint/consistent-indexed-object-style': ['error', 'record'],\n '@typescript-eslint/consistent-type-definitions': ['error', 'interface'],\n '@typescript-eslint/member-delimiter-style': ['error', { multiline: { delimiter: 'none' } }],\n '@typescript-eslint/array-type': ['error', { default: 'array-simple', readonly: 'array-simple' }],\n\n /**\n * Enforce sequential declarations in the same block. This rule aims to\n * enforce a top to bottom ordering of variable and type declarations.\n * This reduces the likelihood of a developer skipping over a declaration\n * when modifying code.\n *\n * @see https://typescript-eslint.io/rules/no-use-before-define\n */\n 'no-use-before-define': 'off',\n '@typescript-eslint/no-use-before-define': ['error', {\n enums: true,\n classes: false,\n typedefs: true,\n variables: true,\n functions: false,\n ignoreTypeReferences: true,\n }],\n\n /**\n * Enforce a consistent spacing around various places where spaces are optional.\n * This rule aims to maintain consistency around the use of spaces in the codebase\n * and reduce the amount of diff churn when making changes.\n *\n * @see https://eslint.style/rules/default/key-spacing\n * @see https://eslint.style/rules/default/comma-spacing\n * @see https://eslint.style/rules/default/block-spacing\n * @see https://eslint.style/rules/default/arrow-spacing\n * @see https://eslint.style/rules/default/object-curly-spacing\n */\n 'key-spacing': 'off',\n 'comma-spacing': 'off',\n 'block-spacing': 'off',\n 'arrow-spacing': 'off',\n 'spaced-comment': 'off',\n 'no-multi-spaces': 'off',\n 'space-before-blocks': 'off',\n 'lines-around-comment': 'off',\n 'object-curly-spacing': 'off',\n 'array-bracket-spacing': 'off',\n 'array-bracket-newline': 'off',\n 'function-call-spacing': 'off',\n 'generator-star-spacing': 'off',\n 'template-curly-spacing': 'off',\n 'object-property-newline ': 'off',\n 'newline-per-chained-call': 'off',\n 'computed-property-spacing': 'off',\n 'lines-between-class-members': 'off',\n '@typescript-eslint/comma-spacing': 'off',\n '@typescript-eslint/object-curly-spacing': 'off',\n '@typescript-eslint/type-annotation-spacing': 'off',\n '@typescript-eslint/lines-around-comment': 'off',\n\n '@stylistic/key-spacing': ['error', { afterColon: true, beforeColon: false }],\n '@stylistic/comma-spacing': ['error', { after: true, before: false }],\n '@stylistic/arrow-spacing': ['error', { before: true, after: true }],\n '@stylistic/type-generic-spacing': 'error',\n '@stylistic/type-named-tuple-spacing': 'error',\n '@stylistic/block-spacing': ['error', 'always'],\n '@stylistic/no-multi-spaces': 'error',\n '@stylistic/keyword-spacing': ['error', { before: true, after: true }],\n '@stylistic/space-before-blocks': ['error', 'always'],\n '@stylistic/object-curly-spacing': ['error', 'always'],\n '@stylistic/array-bracket-spacing': ['error', 'never'],\n '@stylistic/array-bracket-newline': ['error', 'consistent'],\n '@stylistic/function-call-spacing': ['error', 'never'],\n '@stylistic/template-curly-spacing': ['error', 'never'],\n '@stylistic/object-property-newline': ['error', { allowAllPropertiesOnSameLine: true }],\n '@stylistic/generator-star-spacing': ['error', { before: true, after: true }],\n '@stylistic/computed-property-spacing': ['error', 'never'],\n '@stylistic/multiline-ternary': ['error', 'always-multiline'],\n '@stylistic/lines-around-comment': ['error', {\n beforeBlockComment: true,\n beforeLineComment: true,\n ignorePattern: String.raw`^(?! ?---|\\*)`,\n applyDefaultIgnorePatterns: true,\n afterHashbangComment: true,\n }],\n '@stylistic/spaced-comment': ['error', 'always', {\n block: { markers: ['!'], exceptions: ['*'], balanced: true },\n line: { markers: ['/'], exceptions: ['/', '#'] },\n }],\n '@stylistic/lines-between-class-members': ['error', {\n enforce: [{ blankLine: 'always', prev: 'method', next: '*' }],\n }, {\n exceptAfterSingleLine: true,\n }],\n '@stylistic/type-annotation-spacing': ['error', {\n before: false,\n after: true,\n overrides: {\n arrow: { before: true, after: true },\n colon: { before: false, after: true },\n variable: { before: false, after: true },\n property: { before: false, after: true },\n parameter: { before: false, after: true },\n returnType: { before: false, after: true },\n },\n }],\n\n /**\n * Enforce the use of `@ts-expect-error` over `@ts-ignore` to silence TypeScript\n * errors. This rule aims to ensure that TypeScript errors are never silenced\n * without explanation or justification. When an error is fixed, the\n * `@ts-expect-error` forces the developer to remove the comment.\n *\n * @see https://typescript-eslint.io/rules/prefer-ts-expect-error\n * @see https://typescript-eslint.io/rules/ban-ts-comment\n */\n '@typescript-eslint/prefer-ts-expect-error': 'error',\n '@typescript-eslint/ban-ts-comment': ['error', {\n 'ts-check': false,\n 'ts-expect-error': 'allow-with-description',\n 'ts-ignore': false,\n 'ts-nocheck': false,\n }],\n\n /**\n * Disallow dangling expressions and promises. This rule aims to prevent\n * dangling promises and expressions that are not assigned to a variable.\n * This can lead to bugs and unexpected behavior in the codebase.\n *\n * @see https://eslint.org/docs/rules/no-void\n * @see https://typescript-eslint.io/rules/no-floating-promises\n */\n 'no-void': 'off',\n 'no-unused-expressions': 'off',\n '@typescript-eslint/no-unused-expressions': 'error',\n '@typescript-eslint/no-floating-promises': ['error', {\n ignoreVoid: true,\n ignoreIIFE: true,\n }],\n\n /**\n * Sort imports alphabetically and group them without newlines. This rule\n * aims to maintain consistency around the order of imports in JavaScript\n * files. Helps reduce the visual noise in the codebase.\n *\n * @see https://eslint-plugin-perfectionist.azat.io/rules/sort-imports\n */\n 'sort-imports': 'off',\n '@typescript-eslint/sort-type-constituents': 'off',\n '@typescript-eslint/consistent-type-imports': ['error', {\n disallowTypeAnnotations: false,\n prefer: 'no-type-imports',\n }],\n 'perfectionist/sort-exports': ['error', {\n 'type': 'alphabetical',\n 'ignore-case': false,\n }],\n 'perfectionist/sort-named-imports': ['error', { type: 'natural' }],\n 'perfectionist/sort-imports': ['error', {\n 'newlines-between': 'never',\n 'order': 'desc',\n }],\n\n /**\n * Enforce no unused variables. Helps keep the codebase clean and reduces\n * the chance of bugs from side-effects.\n *\n * @see https://typescript-eslint.io/rules/@typescript-eslint/no-unused-vars\n */\n 'no-redeclare': 'off',\n 'no-unused-vars': 'off',\n '@typescript-eslint/no-redeclare': 'error',\n '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }],\n\n //////////////////////////////////////////////////////////////////////////////////////////\n\n 'perfectionist/sort-intersection-types': ['error', { type: 'natural' }],\n 'perfectionist/sort-union-types': ['error', {\n 'type': 'natural',\n 'nullable-last': true,\n }],\n 'no-useless-constructor': 'off',\n '@typescript-eslint/ban-types': 'off',\n '@typescript-eslint/camelcase': 'off',\n '@typescript-eslint/explicit-function-return-type': 'off',\n '@typescript-eslint/explicit-member-accessibility': 'off',\n '@typescript-eslint/explicit-module-boundary-types': 'off',\n '@typescript-eslint/no-empty-function': 'off',\n '@typescript-eslint/no-empty-interface': 'off',\n '@typescript-eslint/no-explicit-any': 'off',\n '@typescript-eslint/no-namespace': 'off',\n '@typescript-eslint/no-non-null-assertion': 'off',\n '@typescript-eslint/no-parameter-properties': 'off',\n 'array-callback-return': 'error',\n 'arrow-body-style': ['error', 'as-needed'],\n 'arrow-parens': ['error', 'as-needed', { requireForBlockBody: true }],\n 'block-scoped-var': 'error',\n 'camelcase': 'off',\n 'comma-style': ['error', 'last'],\n 'complexity': ['off', 11],\n 'consistent-return': 'off',\n 'curly': ['error', 'multi-or-nest', 'consistent'],\n 'eqeqeq': ['error', 'smart'],\n 'no-alert': 'error',\n 'no-case-declarations': 'error',\n 'no-cond-assign': ['error', 'always'],\n 'no-confusing-arrow': 'error',\n 'no-console': ['warn', { allow: ['warn', 'error'] }],\n 'no-constant-condition': 'error',\n 'no-debugger': 'error',\n 'no-eval': 'error',\n 'no-implied-eval': 'error',\n 'no-multi-str': 'error',\n 'no-param-reassign': 'off',\n 'no-restricted-syntax': ['error', 'DebuggerStatement', 'LabeledStatement', 'WithStatement'],\n 'no-return-assign': 'off',\n 'no-return-await': 'off',\n 'no-trailing-spaces': 'error',\n 'no-useless-escape': 'off',\n 'no-var': 'error',\n 'no-with': 'error',\n 'object-shorthand': ['error', 'always', { avoidQuotes: true, ignoreConstructors: false }],\n 'one-var-declaration-per-line': 'error',\n 'operator-linebreak': ['error', 'before'],\n 'prefer-arrow-callback': ['error', { allowNamedFunctions: false, allowUnboundThis: true }],\n 'prefer-const': ['error', { destructuring: 'any', ignoreReadBeforeAssign: true }],\n 'prefer-rest-params': 'error',\n 'prefer-spread': 'error',\n 'prefer-template': 'error',\n 'quote-props': ['error', 'consistent-as-needed'],\n 'quotes': ['error', 'single'],\n 'require-await': 'off',\n 'space-before-function-paren': ['error', 'never'],\n 'vars-on-top': 'error',\n },\n },\n\n /**\n * Ignore duplicate imports in declaration files as they are often used to re-export\n * types from other packages into multiple namespaces. This is a common pattern\n * in TypeScript declaration files.\n */\n {\n files: ['*.d.ts'],\n rules: {\n '@typescript-eslint/no-use-before-define': 'off',\n 'import/no-duplicates': 'off',\n },\n },\n\n /**\n * Allow console statements in scripts and CLI files since they are not part of the\n * library / production code and are useful for debugging, logging, and testing.\n */\n {\n files: ['**/scripts/**/*', 'cli.*'],\n rules: {\n 'no-console': 'off',\n },\n },\n ]\n}\n","import vueParser from 'vue-eslint-parser'\nimport tslint from 'typescript-eslint'\nimport vueProcessorBlocks from 'eslint-processor-vue-blocks'\nimport vuePlugin from 'eslint-plugin-vue'\nimport { mergeProcessors } from 'eslint-merge-processors'\nimport { Linter } from 'eslint'\nimport { typescript } from './typescript'\nimport { ESLintConfigOptions } from './all'\n\nexport function vue(options: ESLintConfigOptions): Linter.FlatConfig[] {\n const TYPESCRIPT_CONFIG = typescript(options).at(1)!\n return [\n ...vuePlugin.configs?.['flat/base'] as Linter.FlatConfig[],\n {\n plugins: {\n vue: vuePlugin,\n ...TYPESCRIPT_CONFIG.plugins,\n },\n languageOptions: {\n globals: {\n computed: 'readonly',\n defineEmits: 'readonly',\n defineExpose: 'readonly',\n defineProps: 'readonly',\n onMounted: 'readonly',\n onUnmounted: 'readonly',\n reactive: 'readonly',\n ref: 'readonly',\n shallowReactive: 'readonly',\n shallowRef: 'readonly',\n toRef: 'readonly',\n toRefs: 'readonly',\n watch: 'readonly',\n watchEffect: 'readonly',\n },\n parser: vueParser,\n parserOptions: {\n parser: tslint.parser,\n extraFileExtensions: ['.vue'],\n ...TYPESCRIPT_CONFIG.languageOptions!.parserOptions,\n },\n },\n processor: mergeProcessors([\n // @ts-expect-error: ignore\n vuePlugin.processors['.vue'],\n vueProcessorBlocks(),\n ]),\n files: [\n '**/*.vue',\n ],\n rules: {\n ...TYPESCRIPT_CONFIG.rules as Linter.RulesRecord,\n // @ts-expect-error: ignore\n ...vuePlugin.configs['flat/recommended'].rules as Linter.RulesRecord,\n // @ts-expect-error: ignore\n ...vuePlugin.configs['flat/strongly-recommended'].rules as Linter.RulesRecord,\n // @ts-expect-error: ignore\n ...vuePlugin.configs['flat/essential'].rules as Linter.RulesRecord,\n\n /**\n * Disable some TypeScript rules that may conflict with the Vue SFC parser.\n */\n '@typescript-eslint/no-unsafe-call': 'off',\n '@typescript-eslint/no-unsafe-return': 'off',\n '@typescript-eslint/no-misused-promises': 'off',\n '@typescript-eslint/no-unsafe-assignment': 'off',\n '@typescript-eslint/no-unsafe-member-access': 'off',\n\n /**\n * Enforces consistent usage of type imports. This rule will enforce the use\n * of `type` imports to make it easier for the Vue SFC compiler to analyze\n * the code and infer the dependency graph correctly.\n *\n * @see https://typescript-eslint.io/rules/consistent-type-imports\n * @see https://vuejs.github.io/vetur/guide/FAQ.html#why-does-vetur-show-cannot-find-module-xxx\n */\n // '@typescript-eslint/consistent-type-imports': ['error', {\n // disallowTypeAnnotations: false,\n // fixStyle: 'inline-type-imports',\n // prefer: 'type-imports',\n // }],\n\n /**\n * Enforce the order of the top-level properties in the component. This rule\n * helps to maintain consistency and readability by enforcing a predictable\n * order of the top-level properties in the component.\n *\n * @see https://eslint.vuejs.org/rules/ordered-component-elements.html\n */\n 'vue/block-order': ['error', {\n order: [\n 'docs',\n 'script',\n 'template',\n 'style',\n ],\n }],\n\n /**\n * Enforce use of the Composition API and TypeScript. This rule forbids the\n * use of the Options API and JavaScript in Vue components for better\n * consistency and maintainability.\n *\n * @see https://eslint.vuejs.org/rules/vue/prefer-define-options.html\n * @see https://eslint.vuejs.org/rules/vue/component-api-style.html\n */\n 'vue/prefer-define-options': 'error',\n 'vue/component-api-style': ['error', ['script-setup']],\n\n /**\n * Enforce the component name casing to be PascalCase. This rules helps identify\n * and distinguish between components and HTML elements. It also helps to avoid\n * conflicts with existing and future HTML elements.\n *\n * @see https://eslint.vuejs.org/rules/component-name-in-template-casing.html\n */\n 'vue/component-name-in-template-casing': ['error', 'PascalCase', {\n ignores: [String.raw`/\\./`],\n registeredComponentsOnly: false,\n }],\n\n /**\n * Enforce consistent spacing between HTML comments and their content.\n *\n * @see https://eslint.vuejs.org/rules/html-comment-content-spacing.html\n * @see https://eslint.vuejs.org/rules/html-comment-content-newline.html\n */\n 'vue/html-comment-content-spacing': ['error', 'always'],\n 'vue/html-comment-content-newline': ['error', {\n multiline: 'always',\n singleline: 'never',\n }],\n\n /**\n * Enforce consistent spacing between HTML / Component tags. This makes it\n * easier to read and understand the structure of the component.\n *\n * @see https://eslint.vuejs.org/rules/padding-line-between-blocks.html\n * @see https://eslint.vuejs.org/rules/padding-line-between-tags.html\n */\n 'vue/padding-line-between-blocks': ['error', 'always'],\n 'vue/padding-line-between-tags': ['error', [\n { blankLine: 'consistent', next: '*', prev: '*' },\n { blankLine: 'always', next: '*', prev: 'comment' },\n ]],\n\n 'vue/html-comment-indent': ['error', 2],\n 'vue/multiline-html-element-content-newline': ['error', {\n allowEmptyLines: true,\n ignores: [],\n ignoreWhenEmpty: true,\n }],\n\n /**\n * Enforce consistent spacing and newlines in the template. This rule helps\n * to maintain consistency and readability by enforcing a predictable\n *\n * @see https://eslint.vuejs.org/rules/html-indent.html\n * @see https://eslint.vuejs.org/rules/max-attributes-per-line.html\n * @see https://eslint.vuejs.org/rules/html-closing-bracket-newline.html\n */\n 'vue/html-indent': ['error', 2, {\n alignAttributesVertically: true,\n attribute: 1,\n baseIndent: 1,\n closeBracket: 0,\n ignores: [],\n }],\n\n // 'vue/func-call-spacing': ['off', 'never'],\n 'vue/key-spacing': ['error', { afterColon: true, beforeColon: false }],\n 'vue/keyword-spacing': ['error', { after: true, before: true }],\n 'vue/max-attributes-per-line': ['error', {\n multiline: { max: 1 },\n singleline: { max: 5 },\n }],\n\n /**\n * Allow single-word component names. This rule is disabled because we use\n * pascal-casing to distinguish between components and HTML elements.\n *\n * @see https://eslint.vuejs.org/rules/multi-word-component-names.html\n */\n 'vue/multi-word-component-names': 'off',\n 'vue/no-reserved-component-names': 'off',\n\n /**\n * Reports the destructuring or member expression of props passed to setup\n * causing the value to lose reactivity. This rule helps to avoid common\n * pitfalls when using the Composition API.\n *\n * @see https://eslint.vuejs.org/rules/no-setup-props-reactivity-loss.html\n */\n 'vue/no-setup-props-reactivity-loss': 'error',\n\n /**\n * Disallow v-if in v-for. This rule helps to avoid common pitfalls when\n * using v-if and v-for together in the same element.\n *\n * @see https://eslint.vuejs.org/rules/no-use-v-if-with-v-for.html\n */\n 'vue/no-use-v-if-with-v-for': 'error',\n\n /**\n * Enforce the declaration of emits in the setup function and warn on unused\n * emits declarations. This rule helps reduce the risk stale code.\n *\n * @see https://eslint.vuejs.org/rules/require-explicit-emits.html\n * @see https://eslint.vuejs.org/rules/no-unused-emit-declarations.html\n */\n 'vue/require-explicit-emits': 'error',\n\n /**\n * Enforce the `@` shorthand over `v-on:` and only allow inline callbacks.\n * This rule helps to maintain consistency and readability by enforcing a\n * predictable order of the event handlers in the component.\n *\n * @see https://eslint.vuejs.org/rules/v-on-style.html\n * @see https://eslint.vuejs.org/rules/v-on-handler-style.html\n */\n 'vue/v-on-style': ['error', 'shorthand'],\n\n 'vue/return-in-computed-property': 'off',\n 'vue/no-sparse-arrays': 'error',\n 'vue/no-unused-emit-declarations': 'error',\n 'vue/no-use-v-else-with-v-for': 'error',\n 'vue/no-useless-v-bind': 'error',\n 'vue/no-v-html': 'off',\n 'vue/no-v-text-v-html-on-component': 'error',\n 'vue/object-curly-newline': ['error', { consistent: true, multiline: true }],\n 'vue/object-curly-spacing': ['error', 'always'],\n 'vue/object-shorthand': [\n 'error',\n 'always',\n {\n avoidQuotes: true,\n ignoreConstructors: false,\n },\n ],\n 'vue/operator-linebreak': ['error', 'before'],\n 'vue/prefer-import-from-vue': 'off',\n 'vue/prefer-separate-static-class': 'error',\n 'vue/prefer-template': 'error',\n 'vue/quote-props': ['error', 'consistent-as-needed'],\n 'vue/require-default-prop': 'off',\n // reactivity transform\n 'vue/block-tag-newline': ['error', {\n multiline: 'always',\n singleline: 'always',\n }],\n // extensions\n 'vue/array-bracket-spacing': ['error', 'never'],\n 'vue/arrow-spacing': ['error', { after: true, before: true }],\n 'vue/block-lang': ['error', { script: { lang: 'ts' } }],\n 'vue/block-spacing': ['error', 'always'],\n 'vue/brace-style': ['error', 'stroustrup', { allowSingleLine: true }],\n 'vue/comma-dangle': ['error', 'always-multiline'],\n 'vue/comma-spacing': ['error', { after: true, before: false }],\n 'vue/comma-style': ['error', 'last'],\n 'vue/component-options-name-casing': ['error', 'PascalCase'],\n 'vue/custom-event-name-casing': ['error', 'camelCase'],\n 'vue/define-macros-order': ['error', {\n order: ['defineProps', 'defineEmits'],\n }],\n 'vue/dot-location': ['error', 'property'],\n 'vue/dot-notation': ['error', { allowKeywords: true }],\n 'vue/eqeqeq': ['error', 'smart'],\n 'vue/first-attribute-linebreak': ['error', {\n multiline: 'below',\n singleline: 'beside',\n }],\n 'vue/html-closing-bracket-newline': ['error', {\n multiline: 'never',\n selfClosingTag: {\n multiline: 'always',\n singleline: 'never',\n },\n singleline: 'never',\n }],\n 'vue/no-constant-condition': 'warn',\n 'vue/no-empty-pattern': 'error',\n 'vue/no-extra-parens': ['error', 'functions'],\n 'vue/no-irregular-whitespace': 'error',\n 'vue/no-loss-of-precision': 'error',\n 'vue/no-restricted-syntax': [\n 'error',\n 'DebuggerStatement',\n 'LabeledStatement',\n 'WithStatement',\n ],\n 'vue/no-restricted-v-bind': ['error', '/^v-/'],\n 'vue/require-prop-types': 'off',\n 'vue/space-in-parens': ['error', 'never'],\n 'vue/space-infix-ops': 'error',\n 'vue/space-unary-ops': ['error', { nonwords: false, words: true }],\n 'vue/template-curly-spacing': 'error',\n 'vue/v-on-handler-style': ['error', 'inline'],\n\n /** User-defined rules */\n ...options.rules,\n },\n },\n ]\n}\n","import vitestPlugin from 'eslint-plugin-vitest'\nimport { Linter } from 'eslint'\nimport { ESLintConfigOptions } from './all'\n\nexport function vitest(options: ESLintConfigOptions): Linter.FlatConfig[] {\n return [\n {\n plugins: {\n vitest: vitestPlugin,\n },\n files: [\n '**/*.{ts,mts,cts,tsx,d.ts}',\n '**/*.{js,mjs,cjs,jsx}',\n ],\n settings: {\n vitest: {\n typecheck: true,\n },\n },\n languageOptions: {\n globals: {\n ...vitestPlugin.environments.env.globals,\n expectTypeOf: true,\n },\n },\n rules: {\n\n /**\n * Inject all configuration from eslint-plugin-vitest.\n *\n * @see https://github.com/veritem/eslint-plugin-vitest/tree/main?tab=readme-ov-file#rules\n */\n ...vitestPlugin.configs.all.rules,\n\n /**\n * This rule aims to enforce having at least one expectation\n * in test body to ensure that the test is actually testing something.\n *\n * @see https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/expect-expect.md\n */\n 'vitest/expect-expect': ['error', {\n assertFunctionNames: [\n 'expect',\n 'expectTypeOf',\n ],\n }],\n\n /**\n * Disable the conditional test rule as it is prevent's us to use in-source\n * testing when using the `if (import.meta.vitest)` condition. Also disable\n * the rule that prevents the use of if-else statements in tests as we want\n * to use it to test type predicates.\n *\n * @see https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/no-conditional-in-test.md\n */\n 'vitest/no-conditional-in-test': 'off',\n 'vitest/no-conditional-tests': 'off',\n\n /**\n * Since we use in-source testing, we need to disable the rule as it may prevent\n * us from using top level evaluation that are not part of the test suite.\n *\n * @see https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/no-hooks.md\n */\n 'vitest/require-hook': 'off',\n 'vitest/no-hooks': 'off',\n\n /**\n * Disable the rule that enforces the use of `expect.assertions` in tests.\n * As much as this rule enforces a best-practice, it is not always necessary.\n *\n * @see https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/prefer-expect-assertions.md\n */\n 'vitest/prefer-expect-assertions': 'off',\n\n /**\n * Some functions may have a single test case, and it is not necessary\n * to wrap them in a describe block.\n *\n * @see https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/require-top-level-describe.md\n */\n 'vitest/require-top-level-describe': 'off',\n\n /**\n * Enforce rule titles starts with 'should'. This is a convention\n * to force the developer to write the test in a way that it reads\n * like a sentence.\n *\n * @see https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/valid-title.md\n */\n 'vitest/valid-title': ['error', {\n ignoreTypeOfDescribeName: true,\n mustMatch: {\n test: ['^should'],\n },\n }],\n\n /**\n * Disable the prefer-truthy/false rule as we want to allow the use of strict equality checks\n * with boolean values.\n *\n * @see https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-be-truthy.md\n * @see https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-be-falsy.md\n */\n 'vitest/prefer-to-be-truthy': 'off',\n 'vitest/prefer-to-be-falsy': 'off',\n\n /** User-defined rules */\n ...options.rules,\n },\n },\n ]\n}\n","import unicornPlugin from 'eslint-plugin-unicorn'\nimport { Linter } from 'eslint'\nimport { ESLintConfigOptions } from './all'\n\n// @ts-expect-error: untyped module\nconst UNICORN_RECOMMENDED_RULES = unicornPlugin.configs!.recommended.rules as Linter.RulesRecord\n\nexport function unicorn(options: ESLintConfigOptions): Linter.FlatConfig[] {\n return [\n {\n plugins: {\n unicorn: unicornPlugin,\n },\n rules: {\n ...UNICORN_RECOMMENDED_RULES,\n\n /**\n * Improve regexes by making them shorter, consistent, and safer. This rule\n * aims to improve readability and consistency of regexes while also\n * mitigating regex denial of service attacks by disallowing potentially\n * catastrophic backtracking.\n *\n * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/better-regex.md\n */\n 'unicorn/better-regex': 'error',\n\n /**\n * Enforce the catch clause parameter name to be named `error`. This rule\n * aims to enforce a consistent parameter name in catch clauses. The name\n * `error` is the most commonly used name for the parameter that is passed\n * to the catch clause.\n *\n * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/catch-error-name.md\n */\n 'unicorn/catch-error-name': ['error', {\n name: 'error',\n }],\n\n /**\n * Enforce the use of camelCase or PascalCase when naming folders, files and\n * variables. This rule aims to enforce a consistent naming convention for\n * filenames, directory names, and variable names.\n *\n * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/filename-case.md\n */\n 'unicorn/filename-case': ['error', {\n cases: {\n camelCase: true,\n pascalCase: true,\n },\n ignore: [\n '^[A-Z]+(.md)?$',\n ],\n }],\n\n /**\n * Disable the recommended import style rules. We want to be able to use both\n * named and default imports in our codebase.\n *\n * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/import-style.md\n */\n 'unicorn/import-style': 'off',\n\n /**\n * Disallow unsafe regular expressions. Regular expressions can be unsafe\n * when they are too complex and can cause catastrophic backtracking. This\n * rule disallows regular expressions that can lead to catastrophic\n *\n * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-unsafe-regex.md\n */\n 'unicorn/no-unsafe-regex': 'error',\n\n /**\n * Enforces a convention of grouping digits using numeric separators.\n * Long numbers can become really hard to read, so cutting it into groups\n * of digits, separated with a _, is important to keep your code clear.\n *\n * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/numeric-separators-style.md\n */\n 'unicorn/numeric-separators-style': ['error', {\n onlyIfContainsSeparator: true,\n }],\n\n 'unicorn/number-literal-case': 'error',\n 'unicorn/consistent-function-scoping': 'off',\n 'unicorn/error-message': 'error',\n 'unicorn/escape-case': 'error',\n 'unicorn/no-array-callback-reference': 'off',\n 'unicorn/no-array-for-each': 'off',\n 'unicorn/no-array-instanceof': 'error',\n 'unicorn/no-new-buffer': 'error',\n 'unicorn/no-static-only-class': 'off',\n 'unicorn/prefer-code-point': 'off',\n 'unicorn/prefer-exponentiation-operator': 'error',\n 'unicorn/prefer-includes': 'error',\n 'unicorn/prefer-module': 'off',\n 'unicorn/prefer-starts-ends-with': 'error',\n 'unicorn/prefer-switch': 'off',\n 'unicorn/prefer-text-content': 'error',\n 'unicorn/prefer-type-error': 'error',\n 'unicorn/prevent-abbreviations': ['error', {\n allowList: {\n args: true,\n dir: true,\n fn: true,\n i: true,\n j: true,\n k: true,\n props: true,\n Props: true,\n ref: true,\n v: true,\n x: true,\n y: true,\n z: true,\n },\n }],\n 'unicorn/throw-new-error': 'error',\n },\n\n /** User-defined rules */\n ...options.rules,\n },\n ]\n}\n","import pluginSonarjs from 'eslint-plugin-sonarjs'\nimport { Linter } from 'eslint'\nimport { ESLintConfigOptions } from './all'\n\nexport function sonarjs(options: ESLintConfigOptions): Linter.FlatConfig[] {\n return [\n pluginSonarjs.configs.recommended as Linter.FlatConfig,\n {\n rules: {\n\n /**\n * Cognitive Complexity is a measure of how hard the control flow of a function\n * is to understand. Functions with high Cognitive Complexity will be difficult\n * to maintain.\n *\n * @see https://github.com/SonarSource/eslint-plugin-sonarjs/blob/master/docs/rules/cognitive-complexity.md\n */\n 'sonarjs/cognitive-complexity': ['error', 30],\n\n /**\n * Duplicated string literals make the process of refactoring error-prone,\n * since you must be sure to update all occurrences. On the other hand,\n * constants can be referenced from many places, but only need to be\n * updated in a single place.\n *\n * @see https://github.com/SonarSource/eslint-plugin-sonarjs/blob/master/docs/rules/no-duplicate-string.md\n */\n 'sonarjs/no-duplicate-string': ['error', {\n threshold: 10,\n }],\n\n /**\n * Those rules are crashing ESLint at startup, so they are disabled for now.\n */\n 'sonarjs/no-empty-collection': 'off',\n 'sonarjs/no-extra-arguments': 'off',\n 'sonarjs/no-gratuitous-expressions': 'off',\n 'sonarjs/no-one-iteration-loop': 'off',\n 'sonarjs/no-redundant-jump': 'off',\n 'sonarjs/no-unused-collection': 'off',\n 'sonarjs/no-use-of-empty-return-value': 'off',\n 'sonarjs/prefer-immediate-return': 'off',\n\n /** User-defined rules */\n ...options.rules,\n },\n },\n ]\n}\n","import nodePlugin from 'eslint-plugin-n'\nimport { ESLint, Linter } from 'eslint'\nimport { ESLintConfigOptions } from './all'\n\nexport function node(options: ESLintConfigOptions): Linter.FlatConfig[] {\n return [\n {\n plugins: {\n n: nodePlugin as ESLint.Plugin,\n },\n rules: {\n ...nodePlugin.configs.recommended.rules,\n\n /**\n * Disallow the use of extraneous imports. This rule helps prevent the\n * use of third-party modules that are not listed in the project's\n * dependencies.\n *\n * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-extraneous-import.md\n */\n 'n/no-extraneous-import': 'error',\n\n /**\n * Disable the no-missing-import as module resolution is already checked\n * by other tools and IDEs extensively. This rule is redundant.\n *\n * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-missing-import.md\n */\n 'n/no-missing-import': 'off',\n 'n/no-missing-require': 'off',\n\n /**\n * Enfore the use of the asyncrounous version of the `fs` and `dns` APIs.\n *\n * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-sync.md\n * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-promises/fs.md\n * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-promises/dns.md\n */\n 'n/no-sync': 'off',\n 'n/prefer-promises/fs': 'error',\n 'n/prefer-promises/dns': 'error',\n\n /**\n * Allow the use of features up to Node.js version 20. This will allow\n * the use of newer ECMAScript features and Node.js APIs.\n *\n * @see https://github.com/eslint-community/eslint-plugin-n/tree/master/docs/rules\n */\n 'n/no-unsupported-features/es-syntax': 'error',\n 'n/no-unsupported-features/es-builtins': 'error',\n 'n/no-unsupported-features/node-builtins': 'error',\n\n /**\n * Prepend the `node:` prefix to all Node.js core modules. This helps\n * identify the module as a Node.js core module and not a third-party\n * module.\n *\n * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-node-protocol.md\n */\n 'n/prefer-node-protocol': 'error',\n\n /** User-defined rules */\n ...options.rules,\n },\n settings: {\n node: {\n version: '>=22.1.0',\n },\n },\n },\n ]\n}\n","import { Linter } from 'eslint'\n\nexport function jsonTsconfig(): Linter.FlatConfig[] {\n return [\n {\n files: [\n '**/tsconfig.json',\n '**/tsconfig.*.json',\n ],\n rules: {\n 'jsonc/sort-array-values': [\n 'error',\n {\n order: { type: 'asc' },\n pathPattern: '^(includes|excludes)$',\n },\n ],\n 'jsonc/sort-keys': [\n 'error',\n {\n order: [\n 'extends',\n 'compilerOptions',\n 'references',\n 'files',\n 'include',\n 'exclude',\n ],\n pathPattern: '^$',\n },\n {\n order: [\n\n // --- Project Structure\n 'incremental',\n 'composite',\n 'tsBuildInfoFile',\n 'disableSourceOfProjectReferenceRedirect',\n 'disableSolutionSearching',\n 'disableReferencedProjectLoad',\n\n // --- Language and Environment\n 'target',\n 'jsx',\n 'jsxFactory',\n 'jsxFragmentFactory',\n 'jsxImportSource',\n 'lib',\n 'moduleDetection',\n 'noLib',\n 'reactNamespace',\n 'useDefineForClassFields',\n 'emitDecoratorMetadata',\n 'experimentalDecorators',\n\n // --- Module Resolution\n 'baseUrl',\n 'rootDir',\n 'rootDirs',\n 'customConditions',\n 'module',\n 'moduleResolution',\n 'moduleSuffixes',\n 'noResolve',\n 'paths',\n 'resolveJsonModule',\n 'resolvePackageJsonExports',\n 'resolvePackageJsonImports',\n 'typeRoots',\n 'types',\n 'allowArbitraryExtensions',\n 'allowImportingTsExtensions',\n 'allowUmdGlobalAccess',\n\n // --- JavaScript Support\n 'allowJs',\n 'checkJs',\n 'maxNodeModuleJsDepth',\n\n // --- Type Checking\n 'strict',\n 'strictBindCallApply',\n 'strictFunctionTypes',\n 'strictNullChecks',\n 'strictPropertyInitialization',\n 'allowUnreachableCode',\n 'allowUnusedLabels',\n 'alwaysStrict',\n 'exactOptionalPropertyTypes',\n 'noFallthroughCasesInSwitch',\n 'noImplicitAny',\n 'noImplicitOverride',\n 'noImplicitReturns',\n 'noImplicitThis',\n 'noPropertyAccessFromIndexSignature',\n 'noUncheckedIndexedAccess',\n 'noUnusedLocals',\n 'noUnusedParameters',\n 'useUnknownInCatchVariables',\n\n // --- Emitting\n 'declaration',\n 'declarationDir',\n 'declarationMap',\n 'downlevelIteration',\n 'emitBOM',\n 'emitDeclarationOnly',\n 'importHelpers',\n 'importsNotUsedAsValues',\n 'inlineSourceMap',\n 'inlineSources',\n 'mapRoot',\n 'newLine',\n 'noEmit',\n 'noEmitHelpers',\n 'noEmitOnError',\n 'outDir',\n 'outFile',\n 'preserveConstEnums',\n 'preserveValueImports',\n 'removeComments',\n 'sourceMap',\n 'sourceRoot',\n 'stripInternal',\n\n // --- Interop Constraints\n 'allowSyntheticDefaultImports',\n 'esModuleInterop',\n 'forceConsistentCasingInFileNames',\n 'isolatedModules',\n 'preserveSymlinks',\n 'verbatimModuleSyntax',\n\n // --- Completeness\n 'skipDefaultLibCheck',\n 'skipLibCheck',\n ],\n pathPattern: '^compilerOptions$',\n },\n {\n order: { type: 'asc' },\n pathPattern: String.raw`^compilerOptions\\.paths$`,\n },\n ],\n },\n },\n ]\n}\n","import { Linter } from 'eslint'\n\nexport function jsonPackage(): Linter.FlatConfig[] {\n return [\n {\n files: [\n '**/package.json',\n ],\n rules: {\n 'jsonc/sort-keys': [\n 'error',\n {\n order: [\n 'name',\n 'type',\n 'version',\n 'license',\n 'private',\n 'sideEffects',\n\n // --- Publishing\n 'description',\n 'author',\n 'keywords',\n 'bugs',\n 'funding',\n 'homepage',\n 'repository',\n\n // --- Distribution\n 'bin',\n 'main',\n 'module',\n 'types',\n 'typings',\n 'browser',\n 'exports',\n 'files',\n\n // --- Package Manager\n 'packageManager',\n 'pnpm',\n\n // --- Scripts\n 'scripts',\n\n // --- Dependencies\n 'peerDependencies',\n 'peerDependenciesMeta',\n 'optionalDependencies',\n 'dependencies',\n 'devDependencies',\n 'bundledDependencies',\n 'bundleDependencies',\n\n // --- Config\n 'tsup',\n 'husky',\n 'lint-staged',\n 'eslintConfig',\n ],\n pathPattern: '^$',\n },\n {\n order: { type: 'asc' },\n pathPattern: '^(?:dev|peer|optional|bundled)?[Dd]ependencies$',\n },\n ],\n },\n },\n ]\n}\n","import jsonc from 'eslint-plugin-jsonc'\nimport { Linter } from 'eslint'\nimport { ESLintConfigOptions } from './all'\n\n/**\n * @param options The configuration options.\n * @returns The configuration for JSON files.\n * @see https://ota-meshi.github.io/eslint-plugin-jsonc/\n */\nexport function configJson(options: ESLintConfigOptions): Linter.FlatConfig[] {\n return [\n ...jsonc.configs['flat/recommended-with-json'],\n {\n files: [\n '**/*.json',\n '**/*.json5',\n ],\n rules: {\n\n /**\n * Automatically apply jsonc rules similar to your configured ESLint core rules to JSON.\n *\n * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/auto.html\n */\n 'jsonc/auto': 'error',\n\n /** User-defined rules */\n ...options.rules,\n },\n },\n ]\n}\n","import pluginJsdoc from 'eslint-plugin-jsdoc'\nimport { Linter } from 'eslint'\nimport { ESLintConfigOptions } from './all'\n\nexport function jsdoc(options: ESLintConfigOptions): Linter.FlatConfig[] {\n return [\n pluginJsdoc.configs['flat/recommended-typescript-flavor-error'],\n {\n files: [\n '**/*.{ts,mts,cts,tsx,d.ts}',\n '**/*.{js,mjs,cjs,jsx}',\n '**/*.vue',\n ],\n rules: {\n\n /**\n * Enforce a consistent padding of the block description.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/HEAD/docs/rules/check-alignment.md#readme\n */\n 'jsdoc/check-alignment': 'error',\n\n /**\n * Normalize the indentation in the JSdoc comment to improve readability.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-indentation.md#readme\n */\n 'jsdoc/check-indentation': 'error',\n\n /**\n * Enforce a strict set of tags for the JSDoc comment. This rule also includes\n * some custom tags that are used in our projects.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/.README/rules/check-tag-names.md\n */\n 'jsdoc/require-jsdoc': 'off',\n 'jsdoc/require-param-type': 'off',\n 'jsdoc/check-tag-names': ['error', {\n definedTags: [\n 'category',\n ],\n }],\n\n /**\n * Checks for multi-line-style comments which fail to meet the criteria of a jsdoc block,\n * namely that it should begin with two and only two asterisks.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-bad-blocks.md\n */\n 'jsdoc/no-bad-blocks': 'error',\n\n /**\n * It is common practice to prefix a hyphen to parameters in JSDoc. But this\n * is sometimes forgotten and has no real purpose. This rule aims to enforce\n * that no hyphen is used.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-hyphen-before-param-description\n */\n 'jsdoc/require-hyphen-before-param-description': ['error', 'never'],\n\n /**\n * Since we are using TypeScript, we don't need to enforce types in JSDoc.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param-type.md\n */\n 'jsdoc/require-returns-type': 'off',\n\n /**\n * Enforce a new-line between the JSDoc summary and tags. Aims to improve\n * readability by separating the summary and tags.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/tag-lines.md\n */\n 'jsdoc/tag-lines': ['error', 'any', { startLines: 1 }],\n\n /** User-defined rules */\n ...options.rules,\n },\n },\n ]\n}\n","import eslintCommentsPlugin from 'eslint-plugin-eslint-comments'\nimport { Linter } from 'eslint'\nimport { ESLintConfigOptions } from './all'\n\n/**\n * Provide configuration for eslint-comments plugin rules. This\n * plugin is used to enforce certain rules for eslint comments.\n *\n * @param options The configuration options for eslint-comments plugin.\n * @returns The configuration for eslint-comments plugin.\n * @see https://mysticatea.github.io/eslint-plugin-eslint-comments/\n */\nexport function eslintComments(options: ESLintConfigOptions): Linter.FlatConfig[] {\n return [\n {\n plugins: {\n 'eslint-comments': eslintCommentsPlugin,\n },\n rules: {\n\n /**\n * Allow multiple rules directive in a single comment. This\n * reduces the number of comments in the code.\n *\n * @see https://mysticatea.github.io/eslint-plugin-eslint-comments/rules/disable-enable-pair\n */\n 'eslint-comments/disable-enable-pair': 'off',\n\n /**\n * `eslint-enable` directive-comments can enable rules which are disabled by different\n * eslint-disable directive-comments. It can enable a rule unintentionally. This rule\n * will report such cases.\n *\n * @see https://mysticatea.github.io/eslint-plugin-eslint-comments/rules/no-aggregating-enable\n */\n 'eslint-comments/no-aggregating-enable': 'error',\n\n /**\n * Disallow duplicate eslint-disable comments. This rule will report when there are\n * multiple eslint-disable comments for the same rule, either in the same line or enabled\n * by different eslint-disable comments.\n *\n * @see https://mysticatea.github.io/eslint-plugin-eslint-comments/rules/no-duplicate-disable\n */\n 'eslint-comments/no-duplicate-disable': 'error',\n\n /**\n * Disallow eslint-disable comments without rule names. This ensures that we cannot\n * disable all rules in a file using eslint-disable comment.\n *\n * @see https://mysticatea.github.io/eslint-plugin-eslint-comments/rules/no-unlimited-disable\n */\n 'eslint-comments/no-unlimited-disable': 'error',\n\n /**\n * Errors when an eslint-disable comment has no effect. This is useful\n * to prevent unnecessary comments in the code.\n *\n * @see https://mysticatea.github.io/eslint-plugin-eslint-comments/rules/no-unused-disable\n */\n 'eslint-comments/no-unused-disable': 'error',\n\n /** User-defined rules */\n ...options.rules,\n },\n },\n ]\n}\n","import pluginAntfu from 'eslint-plugin-antfu'\nimport { Linter } from 'eslint'\nimport { ESLintConfigOptions } from './all'\n\nexport function antfu(options: ESLintConfigOptions): Linter.FlatConfig[] {\n return [\n {\n plugins: {\n antfu: pluginAntfu,\n },\n rules: {\n 'antfu/consistent-list-newline': 'error',\n\n /**\n * Auto-fix import duplication. The TypeScript compiler already detects and removes\n * duplicate imports, but this rule can be used to fix the issue automatically in the editor.\n *\n * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/import-dedupe.md\n */\n 'antfu/import-dedupe': 'error',\n\n /**\n * Enforce top-level function to be declared using function instead of arrow function. This\n * rule helps when you want to add additional overload signatures to a function without\n * having to transform the arrow function into a function declaration manually.\n *\n * On top of that, it mitigates the risk of accidentally using the `this` instance from\n * an outer scope.\n *\n * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/top-level-function.md\n */\n 'antfu/top-level-function': 'error',\n\n /**\n * Enforce consistent line breaks inside braces of object/array/named imports/exports and\n * function parameters. Reduces the cognitive load of reasoning about code style.\n *\n * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/consistent-list-newline.md\n */\n 'object-curly-newline': 'off',\n\n /** User-defined rules */\n ...options.rules,\n },\n },\n ]\n}\n","import { Linter } from 'eslint'\nimport { MaybeArray } from '@unshared/types'\nimport { vue } from './vue'\nimport { vitest } from './vitest'\nimport { unicorn } from './unicorn'\nimport { typescript } from './typescript'\nimport { sonarjs } from './sonarjs'\nimport { node } from './node'\nimport { jsonTsconfig } from './jsonTsconfig'\nimport { jsonPackage } from './jsonPackage'\nimport { configJson } from './json'\nimport { jsdoc } from './jsdoc'\nimport { eslintComments } from './eslintComments'\nimport { antfu } from './antfu'\n\nexport interface ESLintConfigOptions {\n tsConfigPath?: MaybeArray<string>\n rules?: Linter.RulesRecord\n}\n\nexport function all(options: ESLintConfigOptions = {}) {\n return [\n ...antfu(options),\n ...eslintComments(options),\n ...jsdoc(options),\n ...configJson(options),\n ...jsonPackage(),\n ...jsonTsconfig(),\n ...node(options),\n ...sonarjs(options),\n ...typescript(options),\n ...unicorn(options),\n ...vitest(options),\n ...vue(options),\n {\n ignores: [\n '**/dist',\n '**/bin',\n '**/node_modules',\n '**/.nuxt',\n '**/output',\n '**/coverage',\n '**/public',\n '**/__wip__',\n '**/__snapshots__',\n '**/LICENSE*',\n '**/CHANGELOG*',\n 'packages-lock.json',\n 'pnpm-lock.yaml',\n 'yarn.lock',\n ],\n },\n ]\n}\n"],"names":["toArray","cwd","mergeProcessors"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
@@ -5,6 +5,6 @@ interface ESLintConfigOptions {
|
|
5
5
|
tsConfigPath?: MaybeArray<string>;
|
6
6
|
rules?: Linter.RulesRecord;
|
7
7
|
}
|
8
|
-
declare function all(options?: ESLintConfigOptions):
|
8
|
+
declare function all(options?: ESLintConfigOptions): Linter.FlatConfig<Linter.RulesRecord>[];
|
9
9
|
|
10
10
|
export { all as default };
|
package/dist/index.js
CHANGED
@@ -10,7 +10,7 @@ import stylistic from "@stylistic/eslint-plugin";
|
|
10
10
|
import javascript from "@eslint/js";
|
11
11
|
import vitestPlugin from "eslint-plugin-vitest";
|
12
12
|
import unicornPlugin from "eslint-plugin-unicorn";
|
13
|
-
import
|
13
|
+
import pluginSonarjs from "eslint-plugin-sonarjs";
|
14
14
|
import nodePlugin from "eslint-plugin-n";
|
15
15
|
import jsonc from "eslint-plugin-jsonc";
|
16
16
|
import pluginJsdoc from "eslint-plugin-jsdoc";
|
@@ -203,7 +203,7 @@ function typescript(options) {
|
|
203
203
|
"@stylistic/lines-around-comment": ["error", {
|
204
204
|
beforeBlockComment: !0,
|
205
205
|
beforeLineComment: !0,
|
206
|
-
ignorePattern:
|
206
|
+
ignorePattern: String.raw`^(?! ?---|\*)`,
|
207
207
|
applyDefaultIgnorePatterns: !0,
|
208
208
|
afterHashbangComment: !0
|
209
209
|
}],
|
@@ -479,7 +479,7 @@ function vue(options) {
|
|
479
479
|
* @see https://eslint.vuejs.org/rules/component-name-in-template-casing.html
|
480
480
|
*/
|
481
481
|
"vue/component-name-in-template-casing": ["error", "PascalCase", {
|
482
|
-
ignores: [
|
482
|
+
ignores: [String.raw`/\./`],
|
483
483
|
registeredComponentsOnly: !1
|
484
484
|
}],
|
485
485
|
/**
|
@@ -866,47 +866,45 @@ function unicorn(options) {
|
|
866
866
|
];
|
867
867
|
}
|
868
868
|
function sonarjs(options) {
|
869
|
-
return
|
870
|
-
|
871
|
-
|
872
|
-
|
873
|
-
|
874
|
-
|
875
|
-
|
876
|
-
|
877
|
-
|
878
|
-
|
879
|
-
|
880
|
-
|
881
|
-
|
882
|
-
|
883
|
-
|
884
|
-
|
885
|
-
|
886
|
-
|
887
|
-
|
888
|
-
|
889
|
-
|
890
|
-
|
891
|
-
|
892
|
-
|
893
|
-
|
894
|
-
|
895
|
-
|
896
|
-
|
897
|
-
|
898
|
-
|
899
|
-
|
900
|
-
|
901
|
-
|
902
|
-
|
903
|
-
|
904
|
-
|
905
|
-
|
906
|
-
/** User-defined rules */
|
907
|
-
...options.rules
|
869
|
+
return [
|
870
|
+
pluginSonarjs.configs.recommended,
|
871
|
+
{
|
872
|
+
rules: {
|
873
|
+
/**
|
874
|
+
* Cognitive Complexity is a measure of how hard the control flow of a function
|
875
|
+
* is to understand. Functions with high Cognitive Complexity will be difficult
|
876
|
+
* to maintain.
|
877
|
+
*
|
878
|
+
* @see https://github.com/SonarSource/eslint-plugin-sonarjs/blob/master/docs/rules/cognitive-complexity.md
|
879
|
+
*/
|
880
|
+
"sonarjs/cognitive-complexity": ["error", 30],
|
881
|
+
/**
|
882
|
+
* Duplicated string literals make the process of refactoring error-prone,
|
883
|
+
* since you must be sure to update all occurrences. On the other hand,
|
884
|
+
* constants can be referenced from many places, but only need to be
|
885
|
+
* updated in a single place.
|
886
|
+
*
|
887
|
+
* @see https://github.com/SonarSource/eslint-plugin-sonarjs/blob/master/docs/rules/no-duplicate-string.md
|
888
|
+
*/
|
889
|
+
"sonarjs/no-duplicate-string": ["error", {
|
890
|
+
threshold: 10
|
891
|
+
}],
|
892
|
+
/**
|
893
|
+
* Those rules are crashing ESLint at startup, so they are disabled for now.
|
894
|
+
*/
|
895
|
+
"sonarjs/no-empty-collection": "off",
|
896
|
+
"sonarjs/no-extra-arguments": "off",
|
897
|
+
"sonarjs/no-gratuitous-expressions": "off",
|
898
|
+
"sonarjs/no-one-iteration-loop": "off",
|
899
|
+
"sonarjs/no-redundant-jump": "off",
|
900
|
+
"sonarjs/no-unused-collection": "off",
|
901
|
+
"sonarjs/no-use-of-empty-return-value": "off",
|
902
|
+
"sonarjs/prefer-immediate-return": "off",
|
903
|
+
/** User-defined rules */
|
904
|
+
...options.rules
|
905
|
+
}
|
908
906
|
}
|
909
|
-
|
907
|
+
];
|
910
908
|
}
|
911
909
|
function node(options) {
|
912
910
|
return [
|
@@ -964,7 +962,7 @@ function node(options) {
|
|
964
962
|
},
|
965
963
|
settings: {
|
966
964
|
node: {
|
967
|
-
version: ">=
|
965
|
+
version: ">=22.1.0"
|
968
966
|
}
|
969
967
|
}
|
970
968
|
}
|
@@ -1101,7 +1099,7 @@ function jsonTsconfig() {
|
|
1101
1099
|
},
|
1102
1100
|
{
|
1103
1101
|
order: { type: "asc" },
|
1104
|
-
pathPattern:
|
1102
|
+
pathPattern: String.raw`^compilerOptions\.paths$`
|
1105
1103
|
}
|
1106
1104
|
]
|
1107
1105
|
}
|
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../utils/getConfigRules.ts","../configs/typescript.ts","../configs/vue.ts","../configs/vitest.ts","../configs/unicorn.ts","../configs/sonarjs.ts","../configs/node.ts","../configs/jsonTsconfig.ts","../configs/jsonPackage.ts","../configs/json.ts","../configs/jsdoc.ts","../configs/eslintComments.ts","../configs/antfu.ts","../configs/all.ts"],"sourcesContent":["import { Linter } from 'eslint'\nimport { MaybeArray } from '@unshared/types'\nimport { toArray } from '@unshared/collection/toArray'\n\nexport interface ESLintConfigLike {\n rules?: Partial<Linter.RulesRecord>\n}\n\n/**\n * Extract the rules of an ESLint configuration object.\n *\n * @param config The ESLint configuration object.\n * @returns The `RulesRecord` object from the configuration.\n */\nexport function getConfigRules(config: MaybeArray<ESLintConfigLike>): Linter.RulesRecord {\n const configs = toArray(config).flat() as Array<{ rules: Linter.RulesRecord }>\n const rules = configs.map(x => x.rules)\n return Object.assign({}, ...rules) as Linter.RulesRecord\n}\n","import tslint from 'typescript-eslint'\nimport { cwd } from 'node:process'\nimport perfectionist from 'eslint-plugin-perfectionist'\nimport { ESLint, Linter } from 'eslint'\nimport { toArray } from '@unshared/collection/toArray'\nimport stylistic from '@stylistic/eslint-plugin'\nimport javascript from '@eslint/js'\nimport { ESLintConfigOptions } from './all'\nimport { getConfigRules } from '../utils'\n\nexport function typescript(options: ESLintConfigOptions): Linter.FlatConfig[] {\n return [\n javascript.configs.recommended,\n {\n languageOptions: {\n // @ts-expect-error: ignore\n parser: tslint.parser,\n parserOptions: {\n ecmaVersion: 'latest',\n sourceType: 'module',\n project: toArray(options.tsConfigPath ?? './tsconfig.json'),\n tsconfigRootDir: cwd(),\n },\n },\n plugins: {\n '@typescript-eslint': tslint.plugin as ESLint.Plugin,\n '@stylistic': stylistic as ESLint.Plugin,\n 'perfectionist': perfectionist,\n },\n files: [\n '**/*.{ts,tsx,cts,mts}',\n '**/*.{js,jsx,cjs,mjs}',\n ],\n rules: {\n\n /**\n * Inherit all recommended rules from the `@eslint/js` plugin. This is the base\n * configuration for JavaScript files.\n */\n ...getConfigRules(tslint.configs.recommendedTypeChecked),\n ...getConfigRules(tslint.configs.stylisticTypeChecked),\n\n /**\n * Age-old debate over how to style braces. This rule aims to reduce the\n * cognitive load of reasoning about code by enforcing a consistent style.\n *\n * @see https://eslint.style/rules/default/brace-style\n */\n 'brace-style': 'off',\n '@typescript-eslint/brace-style': 'off',\n '@stylistic/brace-style': ['error', 'stroustrup', {\n allowSingleLine: true,\n }],\n\n /**\n * Enforce an indent of 2 spaces. Aims to reduce visual noise and maintain\n * readability of code when viewed on GitHub or GitLab.\n *\n * @see https://eslint.style/rules/default/no-tabs\n * @see https://eslint.style/rules/default/indent\n * @see https://eslint.style/rules/default/indent-binary-ops\n */\n 'no-tabs': 'off',\n 'indent': 'off',\n 'indent-binary-ops': 'off',\n '@typescript-eslint/no-tabs': 'off',\n '@typescript-eslint/indent': 'off',\n '@typescript-eslint/indent-binary-ops': 'off',\n '@stylistic/no-tabs': 'error',\n '@stylistic/indent': ['error', 2],\n '@stylistic/indent-binary-ops': ['error', 2],\n\n /**\n * Enforce no semi-colons. This rule aims to maintain consistency around the\n * use or omission of trailing semicolons. Helps reduce the visual noise in\n * the codebase. Also helps to prevent errors when refactoring and adding\n * new lines.\n *\n * @see https://eslint.style/rules/default/semi\n */\n 'semi': 'off',\n '@typescript-eslint/semi': 'off',\n '@stylistic/semi': ['error', 'never'],\n\n /**\n * Enforce a consistent linebreak style and ensure no leading line breaks\n * and a single trailing line break. This rule aims to maintain consistency\n * around the use of line breaks in the codebase and reduce the amount of\n * diff churn when making changes.\n *\n * @see https://eslint.style/rules/default/linebreak-style\n */\n 'eol-last': 'off',\n 'no-multiple-empty-lines': 'off',\n '@stylistic/eol-last': ['error', 'always'],\n '@stylistic/no-multiple-empty-lines': ['error', {\n max: 1,\n maxBOF: 0,\n maxEOF: 0,\n }],\n\n /**\n * Enforce a trailing comma after the last element or property in a multiline\n * list of properties or elements. This rule improves the clarity of diffs\n * when an item is added or removed from an object or array.\n *\n * @see https://eslint.style/rules/default/comma-dangle\n * @see https://eslint.style/rules/default/comma-spacing\n */\n 'comma-dangle': 'off',\n '@typescript-eslint/comma-dangle': 'off',\n '@stylistic/comma-dangle': ['error', 'always-multiline'],\n\n /**\n * This rule requires empty lines before and/or after comments. It is disabled\n * however when in an object literal, array, or type literal.\n *\n * @see https://eslint.style/rules/default/lines-around-comment\n */\n\n /**\n * Normalize type declaration and definition. This reduces the cognitive load\n * of reasoning about code by enforcing a consistent style.\n *\n * @see https://typescript-eslint.io/rules/consistent-indexed-object-style\n */\n '@typescript-eslint/consistent-indexed-object-style': ['error', 'record'],\n '@typescript-eslint/consistent-type-definitions': ['error', 'interface'],\n '@typescript-eslint/member-delimiter-style': ['error', { multiline: { delimiter: 'none' } }],\n '@typescript-eslint/array-type': ['error', { default: 'array-simple', readonly: 'array-simple' }],\n\n /**\n * Enforce sequential declarations in the same block. This rule aims to\n * enforce a top to bottom ordering of variable and type declarations.\n * This reduces the likelihood of a developer skipping over a declaration\n * when modifying code.\n *\n * @see https://typescript-eslint.io/rules/no-use-before-define\n */\n 'no-use-before-define': 'off',\n '@typescript-eslint/no-use-before-define': ['error', {\n enums: true,\n classes: false,\n typedefs: true,\n variables: true,\n functions: false,\n ignoreTypeReferences: true,\n }],\n\n /**\n * Enforce a consistent spacing around various places where spaces are optional.\n * This rule aims to maintain consistency around the use of spaces in the codebase\n * and reduce the amount of diff churn when making changes.\n *\n * @see https://eslint.style/rules/default/key-spacing\n * @see https://eslint.style/rules/default/comma-spacing\n * @see https://eslint.style/rules/default/block-spacing\n * @see https://eslint.style/rules/default/arrow-spacing\n * @see https://eslint.style/rules/default/object-curly-spacing\n */\n 'key-spacing': 'off',\n 'comma-spacing': 'off',\n 'block-spacing': 'off',\n 'arrow-spacing': 'off',\n 'spaced-comment': 'off',\n 'no-multi-spaces': 'off',\n 'space-before-blocks': 'off',\n 'lines-around-comment': 'off',\n 'object-curly-spacing': 'off',\n 'array-bracket-spacing': 'off',\n 'array-bracket-newline': 'off',\n 'function-call-spacing': 'off',\n 'generator-star-spacing': 'off',\n 'template-curly-spacing': 'off',\n 'object-property-newline ': 'off',\n 'newline-per-chained-call': 'off',\n 'computed-property-spacing': 'off',\n 'lines-between-class-members': 'off',\n '@typescript-eslint/comma-spacing': 'off',\n '@typescript-eslint/object-curly-spacing': 'off',\n '@typescript-eslint/type-annotation-spacing': 'off',\n '@typescript-eslint/lines-around-comment': 'off',\n\n '@stylistic/key-spacing': ['error', { afterColon: true, beforeColon: false }],\n '@stylistic/comma-spacing': ['error', { after: true, before: false }],\n '@stylistic/arrow-spacing': ['error', { before: true, after: true }],\n '@stylistic/type-generic-spacing': 'error',\n '@stylistic/type-named-tuple-spacing': 'error',\n '@stylistic/block-spacing': ['error', 'always'],\n '@stylistic/no-multi-spaces': 'error',\n '@stylistic/keyword-spacing': ['error', { before: true, after: true }],\n '@stylistic/space-before-blocks': ['error', 'always'],\n '@stylistic/object-curly-spacing': ['error', 'always'],\n '@stylistic/array-bracket-spacing': ['error', 'never'],\n '@stylistic/array-bracket-newline': ['error', 'consistent'],\n '@stylistic/function-call-spacing': ['error', 'never'],\n '@stylistic/template-curly-spacing': ['error', 'never'],\n '@stylistic/object-property-newline': ['error', { allowAllPropertiesOnSameLine: true }],\n '@stylistic/generator-star-spacing': ['error', { before: true, after: true }],\n '@stylistic/computed-property-spacing': ['error', 'never'],\n '@stylistic/multiline-ternary': ['error', 'always-multiline'],\n '@stylistic/lines-around-comment': ['error', {\n beforeBlockComment: true,\n beforeLineComment: true,\n ignorePattern: '^(?! ?---|\\\\*)',\n applyDefaultIgnorePatterns: true,\n afterHashbangComment: true,\n }],\n '@stylistic/spaced-comment': ['error', 'always', {\n block: { markers: ['!'], exceptions: ['*'], balanced: true },\n line: { markers: ['/'], exceptions: ['/', '#'] },\n }],\n '@stylistic/lines-between-class-members': ['error', {\n enforce: [{ blankLine: 'always', prev: 'method', next: '*' }],\n }, {\n exceptAfterSingleLine: true,\n }],\n '@stylistic/type-annotation-spacing': ['error', {\n before: false,\n after: true,\n overrides: {\n arrow: { before: true, after: true },\n colon: { before: false, after: true },\n variable: { before: false, after: true },\n property: { before: false, after: true },\n parameter: { before: false, after: true },\n returnType: { before: false, after: true },\n },\n }],\n\n /**\n * Enforce the use of `@ts-expect-error` over `@ts-ignore` to silence TypeScript\n * errors. This rule aims to ensure that TypeScript errors are never silenced\n * without explanation or justification. When an error is fixed, the\n * `@ts-expect-error` forces the developer to remove the comment.\n *\n * @see https://typescript-eslint.io/rules/prefer-ts-expect-error\n * @see https://typescript-eslint.io/rules/ban-ts-comment\n */\n '@typescript-eslint/prefer-ts-expect-error': 'error',\n '@typescript-eslint/ban-ts-comment': ['error', {\n 'ts-check': false,\n 'ts-expect-error': 'allow-with-description',\n 'ts-ignore': false,\n 'ts-nocheck': false,\n }],\n\n /**\n * Disallow dangling expressions and promises. This rule aims to prevent\n * dangling promises and expressions that are not assigned to a variable.\n * This can lead to bugs and unexpected behavior in the codebase.\n *\n * @see https://eslint.org/docs/rules/no-void\n * @see https://typescript-eslint.io/rules/no-floating-promises\n */\n 'no-void': 'off',\n 'no-unused-expressions': 'off',\n '@typescript-eslint/no-unused-expressions': 'error',\n '@typescript-eslint/no-floating-promises': ['error', {\n ignoreVoid: true,\n ignoreIIFE: true,\n }],\n\n /**\n * Sort imports alphabetically and group them without newlines. This rule\n * aims to maintain consistency around the order of imports in JavaScript\n * files. Helps reduce the visual noise in the codebase.\n *\n * @see https://eslint-plugin-perfectionist.azat.io/rules/sort-imports\n */\n 'sort-imports': 'off',\n '@typescript-eslint/sort-type-constituents': 'off',\n '@typescript-eslint/consistent-type-imports': ['error', {\n disallowTypeAnnotations: false,\n prefer: 'no-type-imports',\n }],\n 'perfectionist/sort-exports': ['error', {\n 'type': 'alphabetical',\n 'ignore-case': false,\n }],\n 'perfectionist/sort-named-imports': ['error', { type: 'natural' }],\n 'perfectionist/sort-imports': ['error', {\n 'newlines-between': 'never',\n 'order': 'desc',\n }],\n\n /**\n * Enforce no unused variables. Helps keep the codebase clean and reduces\n * the chance of bugs from side-effects.\n *\n * @see https://typescript-eslint.io/rules/@typescript-eslint/no-unused-vars\n */\n 'no-redeclare': 'off',\n 'no-unused-vars': 'off',\n '@typescript-eslint/no-redeclare': 'error',\n '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }],\n\n //////////////////////////////////////////////////////////////////////////////////////////\n\n 'perfectionist/sort-intersection-types': ['error', { type: 'natural' }],\n 'perfectionist/sort-union-types': ['error', {\n 'type': 'natural',\n 'nullable-last': true,\n }],\n 'no-useless-constructor': 'off',\n '@typescript-eslint/ban-types': 'off',\n '@typescript-eslint/camelcase': 'off',\n '@typescript-eslint/explicit-function-return-type': 'off',\n '@typescript-eslint/explicit-member-accessibility': 'off',\n '@typescript-eslint/explicit-module-boundary-types': 'off',\n '@typescript-eslint/no-empty-function': 'off',\n '@typescript-eslint/no-empty-interface': 'off',\n '@typescript-eslint/no-explicit-any': 'off',\n '@typescript-eslint/no-namespace': 'off',\n '@typescript-eslint/no-non-null-assertion': 'off',\n '@typescript-eslint/no-parameter-properties': 'off',\n 'array-callback-return': 'error',\n 'arrow-body-style': ['error', 'as-needed'],\n 'arrow-parens': ['error', 'as-needed', { requireForBlockBody: true }],\n 'block-scoped-var': 'error',\n 'camelcase': 'off',\n 'comma-style': ['error', 'last'],\n 'complexity': ['off', 11],\n 'consistent-return': 'off',\n 'curly': ['error', 'multi-or-nest', 'consistent'],\n 'eqeqeq': ['error', 'smart'],\n 'no-alert': 'error',\n 'no-case-declarations': 'error',\n 'no-cond-assign': ['error', 'always'],\n 'no-confusing-arrow': 'error',\n 'no-console': ['warn', { allow: ['warn', 'error'] }],\n 'no-constant-condition': 'error',\n 'no-debugger': 'error',\n 'no-eval': 'error',\n 'no-implied-eval': 'error',\n 'no-multi-str': 'error',\n 'no-param-reassign': 'off',\n 'no-restricted-syntax': ['error', 'DebuggerStatement', 'LabeledStatement', 'WithStatement'],\n 'no-return-assign': 'off',\n 'no-return-await': 'off',\n 'no-trailing-spaces': 'error',\n 'no-useless-escape': 'off',\n 'no-var': 'error',\n 'no-with': 'error',\n 'object-shorthand': ['error', 'always', { avoidQuotes: true, ignoreConstructors: false }],\n 'one-var-declaration-per-line': 'error',\n 'operator-linebreak': ['error', 'before'],\n 'prefer-arrow-callback': ['error', { allowNamedFunctions: false, allowUnboundThis: true }],\n 'prefer-const': ['error', { destructuring: 'any', ignoreReadBeforeAssign: true }],\n 'prefer-rest-params': 'error',\n 'prefer-spread': 'error',\n 'prefer-template': 'error',\n 'quote-props': ['error', 'consistent-as-needed'],\n 'quotes': ['error', 'single'],\n 'require-await': 'off',\n 'space-before-function-paren': ['error', 'never'],\n 'vars-on-top': 'error',\n },\n },\n\n /**\n * Ignore duplicate imports in declaration files as they are often used to re-export\n * types from other packages into multiple namespaces. This is a common pattern\n * in TypeScript declaration files.\n */\n {\n files: ['*.d.ts'],\n rules: {\n '@typescript-eslint/no-use-before-define': 'off',\n 'import/no-duplicates': 'off',\n },\n },\n\n /**\n * Allow console statements in scripts and CLI files since they are not part of the\n * library / production code and are useful for debugging, logging, and testing.\n */\n {\n files: ['**/scripts/**/*', 'cli.*'],\n rules: {\n 'no-console': 'off',\n },\n },\n ]\n}\n","import vueParser from 'vue-eslint-parser'\nimport tslint from 'typescript-eslint'\nimport vueProcessorBlocks from 'eslint-processor-vue-blocks'\nimport vuePlugin from 'eslint-plugin-vue'\nimport { mergeProcessors } from 'eslint-merge-processors'\nimport { Linter } from 'eslint'\nimport { typescript } from './typescript'\nimport { ESLintConfigOptions } from './all'\n\nexport function vue(options: ESLintConfigOptions): Linter.FlatConfig[] {\n const TYPESCRIPT_CONFIG = typescript(options).at(1)!\n return [\n ...vuePlugin.configs?.['flat/base'] as Linter.FlatConfig[],\n {\n plugins: {\n vue: vuePlugin,\n ...TYPESCRIPT_CONFIG.plugins,\n },\n languageOptions: {\n globals: {\n computed: 'readonly',\n defineEmits: 'readonly',\n defineExpose: 'readonly',\n defineProps: 'readonly',\n onMounted: 'readonly',\n onUnmounted: 'readonly',\n reactive: 'readonly',\n ref: 'readonly',\n shallowReactive: 'readonly',\n shallowRef: 'readonly',\n toRef: 'readonly',\n toRefs: 'readonly',\n watch: 'readonly',\n watchEffect: 'readonly',\n },\n parser: vueParser,\n parserOptions: {\n parser: tslint.parser,\n extraFileExtensions: ['.vue'],\n ...TYPESCRIPT_CONFIG.languageOptions!.parserOptions,\n },\n },\n processor: mergeProcessors([\n // @ts-expect-error: ignore\n vuePlugin.processors['.vue'],\n vueProcessorBlocks(),\n ]),\n files: [\n '**/*.vue',\n ],\n rules: {\n ...TYPESCRIPT_CONFIG.rules as Linter.RulesRecord,\n // @ts-expect-error: ignore\n ...vuePlugin.configs['flat/recommended'].rules as Linter.RulesRecord,\n // @ts-expect-error: ignore\n ...vuePlugin.configs['flat/strongly-recommended'].rules as Linter.RulesRecord,\n // @ts-expect-error: ignore\n ...vuePlugin.configs['flat/essential'].rules as Linter.RulesRecord,\n\n /**\n * Disable some TypeScript rules that may conflict with the Vue SFC parser.\n */\n '@typescript-eslint/no-unsafe-call': 'off',\n '@typescript-eslint/no-unsafe-return': 'off',\n '@typescript-eslint/no-misused-promises': 'off',\n '@typescript-eslint/no-unsafe-assignment': 'off',\n '@typescript-eslint/no-unsafe-member-access': 'off',\n\n /**\n * Enforces consistent usage of type imports. This rule will enforce the use\n * of `type` imports to make it easier for the Vue SFC compiler to analyze\n * the code and infer the dependency graph correctly.\n *\n * @see https://typescript-eslint.io/rules/consistent-type-imports\n * @see https://vuejs.github.io/vetur/guide/FAQ.html#why-does-vetur-show-cannot-find-module-xxx\n */\n // '@typescript-eslint/consistent-type-imports': ['error', {\n // disallowTypeAnnotations: false,\n // fixStyle: 'inline-type-imports',\n // prefer: 'type-imports',\n // }],\n\n /**\n * Enforce the order of the top-level properties in the component. This rule\n * helps to maintain consistency and readability by enforcing a predictable\n * order of the top-level properties in the component.\n *\n * @see https://eslint.vuejs.org/rules/ordered-component-elements.html\n */\n 'vue/block-order': ['error', {\n order: [\n 'docs',\n 'script',\n 'template',\n 'style',\n ],\n }],\n\n /**\n * Enforce use of the Composition API and TypeScript. This rule forbids the\n * use of the Options API and JavaScript in Vue components for better\n * consistency and maintainability.\n *\n * @see https://eslint.vuejs.org/rules/vue/prefer-define-options.html\n * @see https://eslint.vuejs.org/rules/vue/component-api-style.html\n */\n 'vue/prefer-define-options': 'error',\n 'vue/component-api-style': ['error', ['script-setup']],\n\n /**\n * Enforce the component name casing to be PascalCase. This rules helps identify\n * and distinguish between components and HTML elements. It also helps to avoid\n * conflicts with existing and future HTML elements.\n *\n * @see https://eslint.vuejs.org/rules/component-name-in-template-casing.html\n */\n 'vue/component-name-in-template-casing': ['error', 'PascalCase', {\n ignores: ['/\\\\./'],\n registeredComponentsOnly: false,\n }],\n\n /**\n * Enforce consistent spacing between HTML comments and their content.\n *\n * @see https://eslint.vuejs.org/rules/html-comment-content-spacing.html\n * @see https://eslint.vuejs.org/rules/html-comment-content-newline.html\n */\n 'vue/html-comment-content-spacing': ['error', 'always'],\n 'vue/html-comment-content-newline': ['error', {\n multiline: 'always',\n singleline: 'never',\n }],\n\n /**\n * Enforce consistent spacing between HTML / Component tags. This makes it\n * easier to read and understand the structure of the component.\n *\n * @see https://eslint.vuejs.org/rules/padding-line-between-blocks.html\n * @see https://eslint.vuejs.org/rules/padding-line-between-tags.html\n */\n 'vue/padding-line-between-blocks': ['error', 'always'],\n 'vue/padding-line-between-tags': ['error', [\n { blankLine: 'consistent', next: '*', prev: '*' },\n { blankLine: 'always', next: '*', prev: 'comment' },\n ]],\n\n 'vue/html-comment-indent': ['error', 2],\n 'vue/multiline-html-element-content-newline': ['error', {\n allowEmptyLines: true,\n ignores: [],\n ignoreWhenEmpty: true,\n }],\n\n /**\n * Enforce consistent spacing and newlines in the template. This rule helps\n * to maintain consistency and readability by enforcing a predictable\n *\n * @see https://eslint.vuejs.org/rules/html-indent.html\n * @see https://eslint.vuejs.org/rules/max-attributes-per-line.html\n * @see https://eslint.vuejs.org/rules/html-closing-bracket-newline.html\n */\n 'vue/html-indent': ['error', 2, {\n alignAttributesVertically: true,\n attribute: 1,\n baseIndent: 1,\n closeBracket: 0,\n ignores: [],\n }],\n\n // 'vue/func-call-spacing': ['off', 'never'],\n 'vue/key-spacing': ['error', { afterColon: true, beforeColon: false }],\n 'vue/keyword-spacing': ['error', { after: true, before: true }],\n 'vue/max-attributes-per-line': ['error', {\n multiline: { max: 1 },\n singleline: { max: 5 },\n }],\n\n /**\n * Allow single-word component names. This rule is disabled because we use\n * pascal-casing to distinguish between components and HTML elements.\n *\n * @see https://eslint.vuejs.org/rules/multi-word-component-names.html\n */\n 'vue/multi-word-component-names': 'off',\n 'vue/no-reserved-component-names': 'off',\n\n /**\n * Reports the destructuring or member expression of props passed to setup\n * causing the value to lose reactivity. This rule helps to avoid common\n * pitfalls when using the Composition API.\n *\n * @see https://eslint.vuejs.org/rules/no-setup-props-reactivity-loss.html\n */\n 'vue/no-setup-props-reactivity-loss': 'error',\n\n /**\n * Disallow v-if in v-for. This rule helps to avoid common pitfalls when\n * using v-if and v-for together in the same element.\n *\n * @see https://eslint.vuejs.org/rules/no-use-v-if-with-v-for.html\n */\n 'vue/no-use-v-if-with-v-for': 'error',\n\n /**\n * Enforce the declaration of emits in the setup function and warn on unused\n * emits declarations. This rule helps reduce the risk stale code.\n *\n * @see https://eslint.vuejs.org/rules/require-explicit-emits.html\n * @see https://eslint.vuejs.org/rules/no-unused-emit-declarations.html\n */\n 'vue/require-explicit-emits': 'error',\n\n /**\n * Enforce the `@` shorthand over `v-on:` and only allow inline callbacks.\n * This rule helps to maintain consistency and readability by enforcing a\n * predictable order of the event handlers in the component.\n *\n * @see https://eslint.vuejs.org/rules/v-on-style.html\n * @see https://eslint.vuejs.org/rules/v-on-handler-style.html\n */\n 'vue/v-on-style': ['error', 'shorthand'],\n\n 'vue/return-in-computed-property': 'off',\n 'vue/no-sparse-arrays': 'error',\n 'vue/no-unused-emit-declarations': 'error',\n 'vue/no-use-v-else-with-v-for': 'error',\n 'vue/no-useless-v-bind': 'error',\n 'vue/no-v-html': 'off',\n 'vue/no-v-text-v-html-on-component': 'error',\n 'vue/object-curly-newline': ['error', { consistent: true, multiline: true }],\n 'vue/object-curly-spacing': ['error', 'always'],\n 'vue/object-shorthand': [\n 'error',\n 'always',\n {\n avoidQuotes: true,\n ignoreConstructors: false,\n },\n ],\n 'vue/operator-linebreak': ['error', 'before'],\n 'vue/prefer-import-from-vue': 'off',\n 'vue/prefer-separate-static-class': 'error',\n 'vue/prefer-template': 'error',\n 'vue/quote-props': ['error', 'consistent-as-needed'],\n 'vue/require-default-prop': 'off',\n // reactivity transform\n 'vue/block-tag-newline': ['error', {\n multiline: 'always',\n singleline: 'always',\n }],\n // extensions\n 'vue/array-bracket-spacing': ['error', 'never'],\n 'vue/arrow-spacing': ['error', { after: true, before: true }],\n 'vue/block-lang': ['error', { script: { lang: 'ts' } }],\n 'vue/block-spacing': ['error', 'always'],\n 'vue/brace-style': ['error', 'stroustrup', { allowSingleLine: true }],\n 'vue/comma-dangle': ['error', 'always-multiline'],\n 'vue/comma-spacing': ['error', { after: true, before: false }],\n 'vue/comma-style': ['error', 'last'],\n 'vue/component-options-name-casing': ['error', 'PascalCase'],\n 'vue/custom-event-name-casing': ['error', 'camelCase'],\n 'vue/define-macros-order': ['error', {\n order: ['defineProps', 'defineEmits'],\n }],\n 'vue/dot-location': ['error', 'property'],\n 'vue/dot-notation': ['error', { allowKeywords: true }],\n 'vue/eqeqeq': ['error', 'smart'],\n 'vue/first-attribute-linebreak': ['error', {\n multiline: 'below',\n singleline: 'beside',\n }],\n 'vue/html-closing-bracket-newline': ['error', {\n multiline: 'never',\n selfClosingTag: {\n multiline: 'always',\n singleline: 'never',\n },\n singleline: 'never',\n }],\n 'vue/no-constant-condition': 'warn',\n 'vue/no-empty-pattern': 'error',\n 'vue/no-extra-parens': ['error', 'functions'],\n 'vue/no-irregular-whitespace': 'error',\n 'vue/no-loss-of-precision': 'error',\n 'vue/no-restricted-syntax': [\n 'error',\n 'DebuggerStatement',\n 'LabeledStatement',\n 'WithStatement',\n ],\n 'vue/no-restricted-v-bind': ['error', '/^v-/'],\n 'vue/require-prop-types': 'off',\n 'vue/space-in-parens': ['error', 'never'],\n 'vue/space-infix-ops': 'error',\n 'vue/space-unary-ops': ['error', { nonwords: false, words: true }],\n 'vue/template-curly-spacing': 'error',\n 'vue/v-on-handler-style': ['error', 'inline'],\n\n /** User-defined rules */\n ...options.rules,\n },\n },\n ]\n}\n","import vitestPlugin from 'eslint-plugin-vitest'\nimport { Linter } from 'eslint'\nimport { ESLintConfigOptions } from './all'\n\nexport function vitest(options: ESLintConfigOptions): Linter.FlatConfig[] {\n return [\n {\n plugins: {\n vitest: vitestPlugin,\n },\n files: [\n '**/*.{ts,mts,cts,tsx,d.ts}',\n '**/*.{js,mjs,cjs,jsx}',\n ],\n settings: {\n vitest: {\n typecheck: true,\n },\n },\n languageOptions: {\n globals: {\n ...vitestPlugin.environments.env.globals,\n expectTypeOf: true,\n },\n },\n rules: {\n\n /**\n * Inject all configuration from eslint-plugin-vitest.\n *\n * @see https://github.com/veritem/eslint-plugin-vitest/tree/main?tab=readme-ov-file#rules\n */\n ...vitestPlugin.configs.all.rules,\n\n /**\n * This rule aims to enforce having at least one expectation\n * in test body to ensure that the test is actually testing something.\n *\n * @see https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/expect-expect.md\n */\n 'vitest/expect-expect': ['error', {\n assertFunctionNames: [\n 'expect',\n 'expectTypeOf',\n ],\n }],\n\n /**\n * Disable the conditional test rule as it is prevent's us to use in-source\n * testing when using the `if (import.meta.vitest)` condition. Also disable\n * the rule that prevents the use of if-else statements in tests as we want\n * to use it to test type predicates.\n *\n * @see https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/no-conditional-in-test.md\n */\n 'vitest/no-conditional-in-test': 'off',\n 'vitest/no-conditional-tests': 'off',\n\n /**\n * Since we use in-source testing, we need to disable the rule as it may prevent\n * us from using top level evaluation that are not part of the test suite.\n *\n * @see https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/no-hooks.md\n */\n 'vitest/require-hook': 'off',\n 'vitest/no-hooks': 'off',\n\n /**\n * Disable the rule that enforces the use of `expect.assertions` in tests.\n * As much as this rule enforces a best-practice, it is not always necessary.\n *\n * @see https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/prefer-expect-assertions.md\n */\n 'vitest/prefer-expect-assertions': 'off',\n\n /**\n * Some functions may have a single test case, and it is not necessary\n * to wrap them in a describe block.\n *\n * @see https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/require-top-level-describe.md\n */\n 'vitest/require-top-level-describe': 'off',\n\n /**\n * Enforce rule titles starts with 'should'. This is a convention\n * to force the developer to write the test in a way that it reads\n * like a sentence.\n *\n * @see https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/valid-title.md\n */\n 'vitest/valid-title': ['error', {\n ignoreTypeOfDescribeName: true,\n mustMatch: {\n test: ['^should'],\n },\n }],\n\n /**\n * Disable the prefer-truthy/false rule as we want to allow the use of strict equality checks\n * with boolean values.\n *\n * @see https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-be-truthy.md\n * @see https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-be-falsy.md\n */\n 'vitest/prefer-to-be-truthy': 'off',\n 'vitest/prefer-to-be-falsy': 'off',\n\n /** User-defined rules */\n ...options.rules,\n },\n },\n ]\n}\n","import unicornPlugin from 'eslint-plugin-unicorn'\nimport { Linter } from 'eslint'\nimport { ESLintConfigOptions } from './all'\n\n// @ts-expect-error: untyped module\nconst UNICORN_RECOMMENDED_RULES = unicornPlugin.configs!.recommended.rules as Linter.RulesRecord\n\nexport function unicorn(options: ESLintConfigOptions): Linter.FlatConfig[] {\n return [\n {\n plugins: {\n unicorn: unicornPlugin,\n },\n rules: {\n ...UNICORN_RECOMMENDED_RULES,\n\n /**\n * Improve regexes by making them shorter, consistent, and safer. This rule\n * aims to improve readability and consistency of regexes while also\n * mitigating regex denial of service attacks by disallowing potentially\n * catastrophic backtracking.\n *\n * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/better-regex.md\n */\n 'unicorn/better-regex': 'error',\n\n /**\n * Enforce the catch clause parameter name to be named `error`. This rule\n * aims to enforce a consistent parameter name in catch clauses. The name\n * `error` is the most commonly used name for the parameter that is passed\n * to the catch clause.\n *\n * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/catch-error-name.md\n */\n 'unicorn/catch-error-name': ['error', {\n name: 'error',\n }],\n\n /**\n * Enforce the use of camelCase or PascalCase when naming folders, files and\n * variables. This rule aims to enforce a consistent naming convention for\n * filenames, directory names, and variable names.\n *\n * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/filename-case.md\n */\n 'unicorn/filename-case': ['error', {\n cases: {\n camelCase: true,\n pascalCase: true,\n },\n ignore: [\n '^[A-Z]+(.md)?$',\n ],\n }],\n\n /**\n * Disable the recommended import style rules. We want to be able to use both\n * named and default imports in our codebase.\n *\n * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/import-style.md\n */\n 'unicorn/import-style': 'off',\n\n /**\n * Disallow unsafe regular expressions. Regular expressions can be unsafe\n * when they are too complex and can cause catastrophic backtracking. This\n * rule disallows regular expressions that can lead to catastrophic\n *\n * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-unsafe-regex.md\n */\n 'unicorn/no-unsafe-regex': 'error',\n\n /**\n * Enforces a convention of grouping digits using numeric separators.\n * Long numbers can become really hard to read, so cutting it into groups\n * of digits, separated with a _, is important to keep your code clear.\n *\n * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/numeric-separators-style.md\n */\n 'unicorn/numeric-separators-style': ['error', {\n onlyIfContainsSeparator: true,\n }],\n\n 'unicorn/number-literal-case': 'error',\n 'unicorn/consistent-function-scoping': 'off',\n 'unicorn/error-message': 'error',\n 'unicorn/escape-case': 'error',\n 'unicorn/no-array-callback-reference': 'off',\n 'unicorn/no-array-for-each': 'off',\n 'unicorn/no-array-instanceof': 'error',\n 'unicorn/no-new-buffer': 'error',\n 'unicorn/no-static-only-class': 'off',\n 'unicorn/prefer-code-point': 'off',\n 'unicorn/prefer-exponentiation-operator': 'error',\n 'unicorn/prefer-includes': 'error',\n 'unicorn/prefer-module': 'off',\n 'unicorn/prefer-starts-ends-with': 'error',\n 'unicorn/prefer-switch': 'off',\n 'unicorn/prefer-text-content': 'error',\n 'unicorn/prefer-type-error': 'error',\n 'unicorn/prevent-abbreviations': ['error', {\n allowList: {\n args: true,\n dir: true,\n fn: true,\n i: true,\n j: true,\n k: true,\n props: true,\n Props: true,\n ref: true,\n v: true,\n x: true,\n y: true,\n z: true,\n },\n }],\n 'unicorn/throw-new-error': 'error',\n },\n\n /** User-defined rules */\n ...options.rules,\n },\n ]\n}\n","import { Linter } from 'eslint'\nimport { FlatCompat } from '@eslint/eslintrc'\nimport { ESLintConfigOptions } from './all'\n\nexport function sonarjs(options: ESLintConfigOptions): Array<Linter.FlatConfig<Linter.RulesRecord>> {\n return new FlatCompat().config({\n extends: [\n 'plugin:sonarjs/recommended',\n ],\n plugins: [\n 'sonarjs',\n ],\n rules: {\n\n /**\n * Cognitive Complexity is a measure of how hard the control flow of a function\n * is to understand. Functions with high Cognitive Complexity will be difficult\n * to maintain.\n *\n * @see https://github.com/SonarSource/eslint-plugin-sonarjs/blob/master/docs/rules/cognitive-complexity.md\n */\n 'sonarjs/cognitive-complexity': ['error', 30],\n\n /**\n * Duplicated string literals make the process of refactoring error-prone,\n * since you must be sure to update all occurrences. On the other hand,\n * constants can be referenced from many places, but only need to be\n * updated in a single place.\n *\n * @see https://github.com/SonarSource/eslint-plugin-sonarjs/blob/master/docs/rules/no-duplicate-string.md\n */\n 'sonarjs/no-duplicate-string': ['error', {\n threshold: 10,\n }],\n\n /**\n * Those rules are crashing ESLint at startup, so they are disabled for now.\n */\n 'sonarjs/no-empty-collection': 'off',\n 'sonarjs/no-extra-arguments': 'off',\n 'sonarjs/no-gratuitous-expressions': 'off',\n 'sonarjs/no-one-iteration-loop': 'off',\n 'sonarjs/no-redundant-jump': 'off',\n 'sonarjs/no-unused-collection': 'off',\n 'sonarjs/no-use-of-empty-return-value': 'off',\n\n /** User-defined rules */\n ...options.rules,\n },\n })\n}\n","import nodePlugin from 'eslint-plugin-n'\nimport { Linter } from 'eslint'\nimport { ESLintConfigOptions } from './all'\n\nexport function node(options: ESLintConfigOptions): Linter.Config[] {\n return [\n {\n plugins: {\n n: nodePlugin,\n },\n rules: {\n ...nodePlugin.configs.recommended.rules,\n\n /**\n * Disallow the use of extraneous imports. This rule helps prevent the\n * use of third-party modules that are not listed in the project's\n * dependencies.\n *\n * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-extraneous-import.md\n */\n 'n/no-extraneous-import': 'error',\n\n /**\n * Disable the no-missing-import as module resolution is already checked\n * by other tools and IDEs extensively. This rule is redundant.\n *\n * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-missing-import.md\n */\n 'n/no-missing-import': 'off',\n 'n/no-missing-require': 'off',\n\n /**\n * Enfore the use of the asyncrounous version of the `fs` and `dns` APIs.\n *\n * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-sync.md\n * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-promises/fs.md\n * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-promises/dns.md\n */\n 'n/no-sync': 'off',\n 'n/prefer-promises/fs': 'error',\n 'n/prefer-promises/dns': 'error',\n\n /**\n * Allow the use of features up to Node.js version 20. This will allow\n * the use of newer ECMAScript features and Node.js APIs.\n *\n * @see https://github.com/eslint-community/eslint-plugin-n/tree/master/docs/rules\n */\n 'n/no-unsupported-features/es-syntax': 'error',\n 'n/no-unsupported-features/es-builtins': 'error',\n 'n/no-unsupported-features/node-builtins': 'error',\n\n /**\n * Prepend the `node:` prefix to all Node.js core modules. This helps\n * identify the module as a Node.js core module and not a third-party\n * module.\n *\n * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-node-protocol.md\n */\n 'n/prefer-node-protocol': 'error',\n\n /** User-defined rules */\n ...options.rules,\n },\n settings: {\n node: {\n version: '>=20.0.0',\n },\n },\n },\n ]\n}\n","import { Linter } from 'eslint'\n\nexport function jsonTsconfig(): Linter.FlatConfig[] {\n return [\n {\n files: [\n '**/tsconfig.json',\n '**/tsconfig.*.json',\n ],\n rules: {\n 'jsonc/sort-array-values': [\n 'error',\n {\n order: { type: 'asc' },\n pathPattern: '^(includes|excludes)$',\n },\n ],\n 'jsonc/sort-keys': [\n 'error',\n {\n order: [\n 'extends',\n 'compilerOptions',\n 'references',\n 'files',\n 'include',\n 'exclude',\n ],\n pathPattern: '^$',\n },\n {\n order: [\n\n // --- Project Structure\n 'incremental',\n 'composite',\n 'tsBuildInfoFile',\n 'disableSourceOfProjectReferenceRedirect',\n 'disableSolutionSearching',\n 'disableReferencedProjectLoad',\n\n // --- Language and Environment\n 'target',\n 'jsx',\n 'jsxFactory',\n 'jsxFragmentFactory',\n 'jsxImportSource',\n 'lib',\n 'moduleDetection',\n 'noLib',\n 'reactNamespace',\n 'useDefineForClassFields',\n 'emitDecoratorMetadata',\n 'experimentalDecorators',\n\n // --- Module Resolution\n 'baseUrl',\n 'rootDir',\n 'rootDirs',\n 'customConditions',\n 'module',\n 'moduleResolution',\n 'moduleSuffixes',\n 'noResolve',\n 'paths',\n 'resolveJsonModule',\n 'resolvePackageJsonExports',\n 'resolvePackageJsonImports',\n 'typeRoots',\n 'types',\n 'allowArbitraryExtensions',\n 'allowImportingTsExtensions',\n 'allowUmdGlobalAccess',\n\n // --- JavaScript Support\n 'allowJs',\n 'checkJs',\n 'maxNodeModuleJsDepth',\n\n // --- Type Checking\n 'strict',\n 'strictBindCallApply',\n 'strictFunctionTypes',\n 'strictNullChecks',\n 'strictPropertyInitialization',\n 'allowUnreachableCode',\n 'allowUnusedLabels',\n 'alwaysStrict',\n 'exactOptionalPropertyTypes',\n 'noFallthroughCasesInSwitch',\n 'noImplicitAny',\n 'noImplicitOverride',\n 'noImplicitReturns',\n 'noImplicitThis',\n 'noPropertyAccessFromIndexSignature',\n 'noUncheckedIndexedAccess',\n 'noUnusedLocals',\n 'noUnusedParameters',\n 'useUnknownInCatchVariables',\n\n // --- Emitting\n 'declaration',\n 'declarationDir',\n 'declarationMap',\n 'downlevelIteration',\n 'emitBOM',\n 'emitDeclarationOnly',\n 'importHelpers',\n 'importsNotUsedAsValues',\n 'inlineSourceMap',\n 'inlineSources',\n 'mapRoot',\n 'newLine',\n 'noEmit',\n 'noEmitHelpers',\n 'noEmitOnError',\n 'outDir',\n 'outFile',\n 'preserveConstEnums',\n 'preserveValueImports',\n 'removeComments',\n 'sourceMap',\n 'sourceRoot',\n 'stripInternal',\n\n // --- Interop Constraints\n 'allowSyntheticDefaultImports',\n 'esModuleInterop',\n 'forceConsistentCasingInFileNames',\n 'isolatedModules',\n 'preserveSymlinks',\n 'verbatimModuleSyntax',\n\n // --- Completeness\n 'skipDefaultLibCheck',\n 'skipLibCheck',\n ],\n pathPattern: '^compilerOptions$',\n },\n {\n order: { type: 'asc' },\n pathPattern: '^compilerOptions\\\\.paths$',\n },\n ],\n },\n },\n ]\n}\n","import { Linter } from 'eslint'\n\nexport function jsonPackage(): Linter.FlatConfig[] {\n return [\n {\n files: [\n '**/package.json',\n ],\n rules: {\n 'jsonc/sort-keys': [\n 'error',\n {\n order: [\n 'name',\n 'type',\n 'version',\n 'license',\n 'private',\n 'sideEffects',\n\n // --- Publishing\n 'description',\n 'author',\n 'keywords',\n 'bugs',\n 'funding',\n 'homepage',\n 'repository',\n\n // --- Distribution\n 'bin',\n 'main',\n 'module',\n 'types',\n 'typings',\n 'browser',\n 'exports',\n 'files',\n\n // --- Package Manager\n 'packageManager',\n 'pnpm',\n\n // --- Scripts\n 'scripts',\n\n // --- Dependencies\n 'peerDependencies',\n 'peerDependenciesMeta',\n 'optionalDependencies',\n 'dependencies',\n 'devDependencies',\n 'bundledDependencies',\n 'bundleDependencies',\n\n // --- Config\n 'tsup',\n 'husky',\n 'lint-staged',\n 'eslintConfig',\n ],\n pathPattern: '^$',\n },\n {\n order: { type: 'asc' },\n pathPattern: '^(?:dev|peer|optional|bundled)?[Dd]ependencies$',\n },\n ],\n },\n },\n ]\n}\n","import jsonc from 'eslint-plugin-jsonc'\nimport { Linter } from 'eslint'\nimport { ESLintConfigOptions } from './all'\n\n/**\n * @param options The configuration options.\n * @returns The configuration for JSON files.\n * @see https://ota-meshi.github.io/eslint-plugin-jsonc/\n */\nexport function configJson(options: ESLintConfigOptions): Linter.FlatConfig[] {\n return [\n ...jsonc.configs['flat/recommended-with-json'],\n {\n files: [\n '**/*.json',\n '**/*.json5',\n ],\n rules: {\n\n /**\n * Automatically apply jsonc rules similar to your configured ESLint core rules to JSON.\n *\n * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/auto.html\n */\n 'jsonc/auto': 'error',\n\n /** User-defined rules */\n ...options.rules,\n },\n },\n ]\n}\n","import pluginJsdoc from 'eslint-plugin-jsdoc'\nimport { Linter } from 'eslint'\nimport { ESLintConfigOptions } from './all'\n\nexport function jsdoc(options: ESLintConfigOptions): Linter.FlatConfig[] {\n return [\n pluginJsdoc.configs['flat/recommended-typescript-flavor-error'],\n {\n files: [\n '**/*.{ts,mts,cts,tsx,d.ts}',\n '**/*.{js,mjs,cjs,jsx}',\n '**/*.vue',\n ],\n rules: {\n\n /**\n * Enforce a consistent padding of the block description.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/HEAD/docs/rules/check-alignment.md#readme\n */\n 'jsdoc/check-alignment': 'error',\n\n /**\n * Normalize the indentation in the JSdoc comment to improve readability.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-indentation.md#readme\n */\n 'jsdoc/check-indentation': 'error',\n\n /**\n * Enforce a strict set of tags for the JSDoc comment. This rule also includes\n * some custom tags that are used in our projects.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/.README/rules/check-tag-names.md\n */\n 'jsdoc/require-jsdoc': 'off',\n 'jsdoc/require-param-type': 'off',\n 'jsdoc/check-tag-names': ['error', {\n definedTags: [\n 'category',\n ],\n }],\n\n /**\n * Checks for multi-line-style comments which fail to meet the criteria of a jsdoc block,\n * namely that it should begin with two and only two asterisks.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-bad-blocks.md\n */\n 'jsdoc/no-bad-blocks': 'error',\n\n /**\n * It is common practice to prefix a hyphen to parameters in JSDoc. But this\n * is sometimes forgotten and has no real purpose. This rule aims to enforce\n * that no hyphen is used.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-hyphen-before-param-description\n */\n 'jsdoc/require-hyphen-before-param-description': ['error', 'never'],\n\n /**\n * Since we are using TypeScript, we don't need to enforce types in JSDoc.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param-type.md\n */\n 'jsdoc/require-returns-type': 'off',\n\n /**\n * Enforce a new-line between the JSDoc summary and tags. Aims to improve\n * readability by separating the summary and tags.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/tag-lines.md\n */\n 'jsdoc/tag-lines': ['error', 'any', { startLines: 1 }],\n\n /** User-defined rules */\n ...options.rules,\n },\n },\n ]\n}\n","import eslintCommentsPlugin from 'eslint-plugin-eslint-comments'\nimport { Linter } from 'eslint'\nimport { ESLintConfigOptions } from './all'\n\n/**\n * Provide configuration for eslint-comments plugin rules. This\n * plugin is used to enforce certain rules for eslint comments.\n *\n * @param options The configuration options for eslint-comments plugin.\n * @returns The configuration for eslint-comments plugin.\n * @see https://mysticatea.github.io/eslint-plugin-eslint-comments/\n */\nexport function eslintComments(options: ESLintConfigOptions): Linter.FlatConfig[] {\n return [\n {\n plugins: {\n 'eslint-comments': eslintCommentsPlugin,\n },\n rules: {\n\n /**\n * Allow multiple rules directive in a single comment. This\n * reduces the number of comments in the code.\n *\n * @see https://mysticatea.github.io/eslint-plugin-eslint-comments/rules/disable-enable-pair\n */\n 'eslint-comments/disable-enable-pair': 'off',\n\n /**\n * `eslint-enable` directive-comments can enable rules which are disabled by different\n * eslint-disable directive-comments. It can enable a rule unintentionally. This rule\n * will report such cases.\n *\n * @see https://mysticatea.github.io/eslint-plugin-eslint-comments/rules/no-aggregating-enable\n */\n 'eslint-comments/no-aggregating-enable': 'error',\n\n /**\n * Disallow duplicate eslint-disable comments. This rule will report when there are\n * multiple eslint-disable comments for the same rule, either in the same line or enabled\n * by different eslint-disable comments.\n *\n * @see https://mysticatea.github.io/eslint-plugin-eslint-comments/rules/no-duplicate-disable\n */\n 'eslint-comments/no-duplicate-disable': 'error',\n\n /**\n * Disallow eslint-disable comments without rule names. This ensures that we cannot\n * disable all rules in a file using eslint-disable comment.\n *\n * @see https://mysticatea.github.io/eslint-plugin-eslint-comments/rules/no-unlimited-disable\n */\n 'eslint-comments/no-unlimited-disable': 'error',\n\n /**\n * Errors when an eslint-disable comment has no effect. This is useful\n * to prevent unnecessary comments in the code.\n *\n * @see https://mysticatea.github.io/eslint-plugin-eslint-comments/rules/no-unused-disable\n */\n 'eslint-comments/no-unused-disable': 'error',\n\n /** User-defined rules */\n ...options.rules,\n },\n },\n ]\n}\n","import pluginAntfu from 'eslint-plugin-antfu'\nimport { Linter } from 'eslint'\nimport { ESLintConfigOptions } from './all'\n\nexport function antfu(options: ESLintConfigOptions): Linter.FlatConfig[] {\n return [\n {\n plugins: {\n antfu: pluginAntfu,\n },\n rules: {\n 'antfu/consistent-list-newline': 'error',\n\n /**\n * Auto-fix import duplication. The TypeScript compiler already detects and removes\n * duplicate imports, but this rule can be used to fix the issue automatically in the editor.\n *\n * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/import-dedupe.md\n */\n 'antfu/import-dedupe': 'error',\n\n /**\n * Enforce top-level function to be declared using function instead of arrow function. This\n * rule helps when you want to add additional overload signatures to a function without\n * having to transform the arrow function into a function declaration manually.\n *\n * On top of that, it mitigates the risk of accidentally using the `this` instance from\n * an outer scope.\n *\n * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/top-level-function.md\n */\n 'antfu/top-level-function': 'error',\n\n /**\n * Enforce consistent line breaks inside braces of object/array/named imports/exports and\n * function parameters. Reduces the cognitive load of reasoning about code style.\n *\n * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/consistent-list-newline.md\n */\n 'object-curly-newline': 'off',\n\n /** User-defined rules */\n ...options.rules,\n },\n },\n ]\n}\n","import { Linter } from 'eslint'\nimport { MaybeArray } from '@unshared/types'\nimport { vue } from './vue'\nimport { vitest } from './vitest'\nimport { unicorn } from './unicorn'\nimport { typescript } from './typescript'\nimport { sonarjs } from './sonarjs'\nimport { node } from './node'\nimport { jsonTsconfig } from './jsonTsconfig'\nimport { jsonPackage } from './jsonPackage'\nimport { configJson } from './json'\nimport { jsdoc } from './jsdoc'\nimport { eslintComments } from './eslintComments'\nimport { antfu } from './antfu'\n\nexport interface ESLintConfigOptions {\n tsConfigPath?: MaybeArray<string>\n rules?: Linter.RulesRecord\n}\n\nexport function all(options: ESLintConfigOptions = {}) {\n return [\n ...antfu(options),\n ...eslintComments(options),\n ...jsdoc(options),\n ...configJson(options),\n ...jsonPackage(),\n ...jsonTsconfig(),\n ...node(options),\n ...sonarjs(options),\n ...typescript(options),\n ...unicorn(options),\n ...vitest(options),\n ...vue(options),\n {\n ignores: [\n '**/dist',\n '**/bin',\n '**/node_modules',\n '**/.nuxt',\n '**/output',\n '**/coverage',\n '**/public',\n '**/__wip__',\n '**/__snapshots__',\n '**/LICENSE*',\n '**/CHANGELOG*',\n 'packages-lock.json',\n 'pnpm-lock.yaml',\n 'yarn.lock',\n ],\n },\n ]\n}\n"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"index.js","sources":["../utils/getConfigRules.ts","../configs/typescript.ts","../configs/vue.ts","../configs/vitest.ts","../configs/unicorn.ts","../configs/sonarjs.ts","../configs/node.ts","../configs/jsonTsconfig.ts","../configs/jsonPackage.ts","../configs/json.ts","../configs/jsdoc.ts","../configs/eslintComments.ts","../configs/antfu.ts","../configs/all.ts"],"sourcesContent":["import { Linter } from 'eslint'\nimport { MaybeArray } from '@unshared/types'\nimport { toArray } from '@unshared/collection/toArray'\n\nexport interface ESLintConfigLike {\n rules?: Partial<Linter.RulesRecord>\n}\n\n/**\n * Extract the rules of an ESLint configuration object.\n *\n * @param config The ESLint configuration object.\n * @returns The `RulesRecord` object from the configuration.\n */\nexport function getConfigRules(config: MaybeArray<ESLintConfigLike>): Linter.RulesRecord {\n const configs = toArray(config).flat() as Array<{ rules: Linter.RulesRecord }>\n const rules = configs.map(x => x.rules)\n return Object.assign({}, ...rules) as Linter.RulesRecord\n}\n","import tslint from 'typescript-eslint'\nimport { cwd } from 'node:process'\nimport perfectionist from 'eslint-plugin-perfectionist'\nimport { ESLint, Linter } from 'eslint'\nimport { toArray } from '@unshared/collection/toArray'\nimport stylistic from '@stylistic/eslint-plugin'\nimport javascript from '@eslint/js'\nimport { ESLintConfigOptions } from './all'\nimport { getConfigRules } from '../utils'\n\nexport function typescript(options: ESLintConfigOptions): Linter.FlatConfig[] {\n return [\n javascript.configs.recommended,\n {\n languageOptions: {\n // @ts-expect-error: ignore\n parser: tslint.parser,\n parserOptions: {\n ecmaVersion: 'latest',\n sourceType: 'module',\n project: toArray(options.tsConfigPath ?? './tsconfig.json'),\n tsconfigRootDir: cwd(),\n },\n },\n plugins: {\n '@typescript-eslint': tslint.plugin as ESLint.Plugin,\n '@stylistic': stylistic as ESLint.Plugin,\n 'perfectionist': perfectionist,\n },\n files: [\n '**/*.{ts,tsx,cts,mts}',\n '**/*.{js,jsx,cjs,mjs}',\n ],\n rules: {\n\n /**\n * Inherit all recommended rules from the `@eslint/js` plugin. This is the base\n * configuration for JavaScript files.\n */\n ...getConfigRules(tslint.configs.recommendedTypeChecked),\n ...getConfigRules(tslint.configs.stylisticTypeChecked),\n\n /**\n * Age-old debate over how to style braces. This rule aims to reduce the\n * cognitive load of reasoning about code by enforcing a consistent style.\n *\n * @see https://eslint.style/rules/default/brace-style\n */\n 'brace-style': 'off',\n '@typescript-eslint/brace-style': 'off',\n '@stylistic/brace-style': ['error', 'stroustrup', {\n allowSingleLine: true,\n }],\n\n /**\n * Enforce an indent of 2 spaces. Aims to reduce visual noise and maintain\n * readability of code when viewed on GitHub or GitLab.\n *\n * @see https://eslint.style/rules/default/no-tabs\n * @see https://eslint.style/rules/default/indent\n * @see https://eslint.style/rules/default/indent-binary-ops\n */\n 'no-tabs': 'off',\n 'indent': 'off',\n 'indent-binary-ops': 'off',\n '@typescript-eslint/no-tabs': 'off',\n '@typescript-eslint/indent': 'off',\n '@typescript-eslint/indent-binary-ops': 'off',\n '@stylistic/no-tabs': 'error',\n '@stylistic/indent': ['error', 2],\n '@stylistic/indent-binary-ops': ['error', 2],\n\n /**\n * Enforce no semi-colons. This rule aims to maintain consistency around the\n * use or omission of trailing semicolons. Helps reduce the visual noise in\n * the codebase. Also helps to prevent errors when refactoring and adding\n * new lines.\n *\n * @see https://eslint.style/rules/default/semi\n */\n 'semi': 'off',\n '@typescript-eslint/semi': 'off',\n '@stylistic/semi': ['error', 'never'],\n\n /**\n * Enforce a consistent linebreak style and ensure no leading line breaks\n * and a single trailing line break. This rule aims to maintain consistency\n * around the use of line breaks in the codebase and reduce the amount of\n * diff churn when making changes.\n *\n * @see https://eslint.style/rules/default/linebreak-style\n */\n 'eol-last': 'off',\n 'no-multiple-empty-lines': 'off',\n '@stylistic/eol-last': ['error', 'always'],\n '@stylistic/no-multiple-empty-lines': ['error', {\n max: 1,\n maxBOF: 0,\n maxEOF: 0,\n }],\n\n /**\n * Enforce a trailing comma after the last element or property in a multiline\n * list of properties or elements. This rule improves the clarity of diffs\n * when an item is added or removed from an object or array.\n *\n * @see https://eslint.style/rules/default/comma-dangle\n * @see https://eslint.style/rules/default/comma-spacing\n */\n 'comma-dangle': 'off',\n '@typescript-eslint/comma-dangle': 'off',\n '@stylistic/comma-dangle': ['error', 'always-multiline'],\n\n /**\n * This rule requires empty lines before and/or after comments. It is disabled\n * however when in an object literal, array, or type literal.\n *\n * @see https://eslint.style/rules/default/lines-around-comment\n */\n\n /**\n * Normalize type declaration and definition. This reduces the cognitive load\n * of reasoning about code by enforcing a consistent style.\n *\n * @see https://typescript-eslint.io/rules/consistent-indexed-object-style\n */\n '@typescript-eslint/consistent-indexed-object-style': ['error', 'record'],\n '@typescript-eslint/consistent-type-definitions': ['error', 'interface'],\n '@typescript-eslint/member-delimiter-style': ['error', { multiline: { delimiter: 'none' } }],\n '@typescript-eslint/array-type': ['error', { default: 'array-simple', readonly: 'array-simple' }],\n\n /**\n * Enforce sequential declarations in the same block. This rule aims to\n * enforce a top to bottom ordering of variable and type declarations.\n * This reduces the likelihood of a developer skipping over a declaration\n * when modifying code.\n *\n * @see https://typescript-eslint.io/rules/no-use-before-define\n */\n 'no-use-before-define': 'off',\n '@typescript-eslint/no-use-before-define': ['error', {\n enums: true,\n classes: false,\n typedefs: true,\n variables: true,\n functions: false,\n ignoreTypeReferences: true,\n }],\n\n /**\n * Enforce a consistent spacing around various places where spaces are optional.\n * This rule aims to maintain consistency around the use of spaces in the codebase\n * and reduce the amount of diff churn when making changes.\n *\n * @see https://eslint.style/rules/default/key-spacing\n * @see https://eslint.style/rules/default/comma-spacing\n * @see https://eslint.style/rules/default/block-spacing\n * @see https://eslint.style/rules/default/arrow-spacing\n * @see https://eslint.style/rules/default/object-curly-spacing\n */\n 'key-spacing': 'off',\n 'comma-spacing': 'off',\n 'block-spacing': 'off',\n 'arrow-spacing': 'off',\n 'spaced-comment': 'off',\n 'no-multi-spaces': 'off',\n 'space-before-blocks': 'off',\n 'lines-around-comment': 'off',\n 'object-curly-spacing': 'off',\n 'array-bracket-spacing': 'off',\n 'array-bracket-newline': 'off',\n 'function-call-spacing': 'off',\n 'generator-star-spacing': 'off',\n 'template-curly-spacing': 'off',\n 'object-property-newline ': 'off',\n 'newline-per-chained-call': 'off',\n 'computed-property-spacing': 'off',\n 'lines-between-class-members': 'off',\n '@typescript-eslint/comma-spacing': 'off',\n '@typescript-eslint/object-curly-spacing': 'off',\n '@typescript-eslint/type-annotation-spacing': 'off',\n '@typescript-eslint/lines-around-comment': 'off',\n\n '@stylistic/key-spacing': ['error', { afterColon: true, beforeColon: false }],\n '@stylistic/comma-spacing': ['error', { after: true, before: false }],\n '@stylistic/arrow-spacing': ['error', { before: true, after: true }],\n '@stylistic/type-generic-spacing': 'error',\n '@stylistic/type-named-tuple-spacing': 'error',\n '@stylistic/block-spacing': ['error', 'always'],\n '@stylistic/no-multi-spaces': 'error',\n '@stylistic/keyword-spacing': ['error', { before: true, after: true }],\n '@stylistic/space-before-blocks': ['error', 'always'],\n '@stylistic/object-curly-spacing': ['error', 'always'],\n '@stylistic/array-bracket-spacing': ['error', 'never'],\n '@stylistic/array-bracket-newline': ['error', 'consistent'],\n '@stylistic/function-call-spacing': ['error', 'never'],\n '@stylistic/template-curly-spacing': ['error', 'never'],\n '@stylistic/object-property-newline': ['error', { allowAllPropertiesOnSameLine: true }],\n '@stylistic/generator-star-spacing': ['error', { before: true, after: true }],\n '@stylistic/computed-property-spacing': ['error', 'never'],\n '@stylistic/multiline-ternary': ['error', 'always-multiline'],\n '@stylistic/lines-around-comment': ['error', {\n beforeBlockComment: true,\n beforeLineComment: true,\n ignorePattern: String.raw`^(?! ?---|\\*)`,\n applyDefaultIgnorePatterns: true,\n afterHashbangComment: true,\n }],\n '@stylistic/spaced-comment': ['error', 'always', {\n block: { markers: ['!'], exceptions: ['*'], balanced: true },\n line: { markers: ['/'], exceptions: ['/', '#'] },\n }],\n '@stylistic/lines-between-class-members': ['error', {\n enforce: [{ blankLine: 'always', prev: 'method', next: '*' }],\n }, {\n exceptAfterSingleLine: true,\n }],\n '@stylistic/type-annotation-spacing': ['error', {\n before: false,\n after: true,\n overrides: {\n arrow: { before: true, after: true },\n colon: { before: false, after: true },\n variable: { before: false, after: true },\n property: { before: false, after: true },\n parameter: { before: false, after: true },\n returnType: { before: false, after: true },\n },\n }],\n\n /**\n * Enforce the use of `@ts-expect-error` over `@ts-ignore` to silence TypeScript\n * errors. This rule aims to ensure that TypeScript errors are never silenced\n * without explanation or justification. When an error is fixed, the\n * `@ts-expect-error` forces the developer to remove the comment.\n *\n * @see https://typescript-eslint.io/rules/prefer-ts-expect-error\n * @see https://typescript-eslint.io/rules/ban-ts-comment\n */\n '@typescript-eslint/prefer-ts-expect-error': 'error',\n '@typescript-eslint/ban-ts-comment': ['error', {\n 'ts-check': false,\n 'ts-expect-error': 'allow-with-description',\n 'ts-ignore': false,\n 'ts-nocheck': false,\n }],\n\n /**\n * Disallow dangling expressions and promises. This rule aims to prevent\n * dangling promises and expressions that are not assigned to a variable.\n * This can lead to bugs and unexpected behavior in the codebase.\n *\n * @see https://eslint.org/docs/rules/no-void\n * @see https://typescript-eslint.io/rules/no-floating-promises\n */\n 'no-void': 'off',\n 'no-unused-expressions': 'off',\n '@typescript-eslint/no-unused-expressions': 'error',\n '@typescript-eslint/no-floating-promises': ['error', {\n ignoreVoid: true,\n ignoreIIFE: true,\n }],\n\n /**\n * Sort imports alphabetically and group them without newlines. This rule\n * aims to maintain consistency around the order of imports in JavaScript\n * files. Helps reduce the visual noise in the codebase.\n *\n * @see https://eslint-plugin-perfectionist.azat.io/rules/sort-imports\n */\n 'sort-imports': 'off',\n '@typescript-eslint/sort-type-constituents': 'off',\n '@typescript-eslint/consistent-type-imports': ['error', {\n disallowTypeAnnotations: false,\n prefer: 'no-type-imports',\n }],\n 'perfectionist/sort-exports': ['error', {\n 'type': 'alphabetical',\n 'ignore-case': false,\n }],\n 'perfectionist/sort-named-imports': ['error', { type: 'natural' }],\n 'perfectionist/sort-imports': ['error', {\n 'newlines-between': 'never',\n 'order': 'desc',\n }],\n\n /**\n * Enforce no unused variables. Helps keep the codebase clean and reduces\n * the chance of bugs from side-effects.\n *\n * @see https://typescript-eslint.io/rules/@typescript-eslint/no-unused-vars\n */\n 'no-redeclare': 'off',\n 'no-unused-vars': 'off',\n '@typescript-eslint/no-redeclare': 'error',\n '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }],\n\n //////////////////////////////////////////////////////////////////////////////////////////\n\n 'perfectionist/sort-intersection-types': ['error', { type: 'natural' }],\n 'perfectionist/sort-union-types': ['error', {\n 'type': 'natural',\n 'nullable-last': true,\n }],\n 'no-useless-constructor': 'off',\n '@typescript-eslint/ban-types': 'off',\n '@typescript-eslint/camelcase': 'off',\n '@typescript-eslint/explicit-function-return-type': 'off',\n '@typescript-eslint/explicit-member-accessibility': 'off',\n '@typescript-eslint/explicit-module-boundary-types': 'off',\n '@typescript-eslint/no-empty-function': 'off',\n '@typescript-eslint/no-empty-interface': 'off',\n '@typescript-eslint/no-explicit-any': 'off',\n '@typescript-eslint/no-namespace': 'off',\n '@typescript-eslint/no-non-null-assertion': 'off',\n '@typescript-eslint/no-parameter-properties': 'off',\n 'array-callback-return': 'error',\n 'arrow-body-style': ['error', 'as-needed'],\n 'arrow-parens': ['error', 'as-needed', { requireForBlockBody: true }],\n 'block-scoped-var': 'error',\n 'camelcase': 'off',\n 'comma-style': ['error', 'last'],\n 'complexity': ['off', 11],\n 'consistent-return': 'off',\n 'curly': ['error', 'multi-or-nest', 'consistent'],\n 'eqeqeq': ['error', 'smart'],\n 'no-alert': 'error',\n 'no-case-declarations': 'error',\n 'no-cond-assign': ['error', 'always'],\n 'no-confusing-arrow': 'error',\n 'no-console': ['warn', { allow: ['warn', 'error'] }],\n 'no-constant-condition': 'error',\n 'no-debugger': 'error',\n 'no-eval': 'error',\n 'no-implied-eval': 'error',\n 'no-multi-str': 'error',\n 'no-param-reassign': 'off',\n 'no-restricted-syntax': ['error', 'DebuggerStatement', 'LabeledStatement', 'WithStatement'],\n 'no-return-assign': 'off',\n 'no-return-await': 'off',\n 'no-trailing-spaces': 'error',\n 'no-useless-escape': 'off',\n 'no-var': 'error',\n 'no-with': 'error',\n 'object-shorthand': ['error', 'always', { avoidQuotes: true, ignoreConstructors: false }],\n 'one-var-declaration-per-line': 'error',\n 'operator-linebreak': ['error', 'before'],\n 'prefer-arrow-callback': ['error', { allowNamedFunctions: false, allowUnboundThis: true }],\n 'prefer-const': ['error', { destructuring: 'any', ignoreReadBeforeAssign: true }],\n 'prefer-rest-params': 'error',\n 'prefer-spread': 'error',\n 'prefer-template': 'error',\n 'quote-props': ['error', 'consistent-as-needed'],\n 'quotes': ['error', 'single'],\n 'require-await': 'off',\n 'space-before-function-paren': ['error', 'never'],\n 'vars-on-top': 'error',\n },\n },\n\n /**\n * Ignore duplicate imports in declaration files as they are often used to re-export\n * types from other packages into multiple namespaces. This is a common pattern\n * in TypeScript declaration files.\n */\n {\n files: ['*.d.ts'],\n rules: {\n '@typescript-eslint/no-use-before-define': 'off',\n 'import/no-duplicates': 'off',\n },\n },\n\n /**\n * Allow console statements in scripts and CLI files since they are not part of the\n * library / production code and are useful for debugging, logging, and testing.\n */\n {\n files: ['**/scripts/**/*', 'cli.*'],\n rules: {\n 'no-console': 'off',\n },\n },\n ]\n}\n","import vueParser from 'vue-eslint-parser'\nimport tslint from 'typescript-eslint'\nimport vueProcessorBlocks from 'eslint-processor-vue-blocks'\nimport vuePlugin from 'eslint-plugin-vue'\nimport { mergeProcessors } from 'eslint-merge-processors'\nimport { Linter } from 'eslint'\nimport { typescript } from './typescript'\nimport { ESLintConfigOptions } from './all'\n\nexport function vue(options: ESLintConfigOptions): Linter.FlatConfig[] {\n const TYPESCRIPT_CONFIG = typescript(options).at(1)!\n return [\n ...vuePlugin.configs?.['flat/base'] as Linter.FlatConfig[],\n {\n plugins: {\n vue: vuePlugin,\n ...TYPESCRIPT_CONFIG.plugins,\n },\n languageOptions: {\n globals: {\n computed: 'readonly',\n defineEmits: 'readonly',\n defineExpose: 'readonly',\n defineProps: 'readonly',\n onMounted: 'readonly',\n onUnmounted: 'readonly',\n reactive: 'readonly',\n ref: 'readonly',\n shallowReactive: 'readonly',\n shallowRef: 'readonly',\n toRef: 'readonly',\n toRefs: 'readonly',\n watch: 'readonly',\n watchEffect: 'readonly',\n },\n parser: vueParser,\n parserOptions: {\n parser: tslint.parser,\n extraFileExtensions: ['.vue'],\n ...TYPESCRIPT_CONFIG.languageOptions!.parserOptions,\n },\n },\n processor: mergeProcessors([\n // @ts-expect-error: ignore\n vuePlugin.processors['.vue'],\n vueProcessorBlocks(),\n ]),\n files: [\n '**/*.vue',\n ],\n rules: {\n ...TYPESCRIPT_CONFIG.rules as Linter.RulesRecord,\n // @ts-expect-error: ignore\n ...vuePlugin.configs['flat/recommended'].rules as Linter.RulesRecord,\n // @ts-expect-error: ignore\n ...vuePlugin.configs['flat/strongly-recommended'].rules as Linter.RulesRecord,\n // @ts-expect-error: ignore\n ...vuePlugin.configs['flat/essential'].rules as Linter.RulesRecord,\n\n /**\n * Disable some TypeScript rules that may conflict with the Vue SFC parser.\n */\n '@typescript-eslint/no-unsafe-call': 'off',\n '@typescript-eslint/no-unsafe-return': 'off',\n '@typescript-eslint/no-misused-promises': 'off',\n '@typescript-eslint/no-unsafe-assignment': 'off',\n '@typescript-eslint/no-unsafe-member-access': 'off',\n\n /**\n * Enforces consistent usage of type imports. This rule will enforce the use\n * of `type` imports to make it easier for the Vue SFC compiler to analyze\n * the code and infer the dependency graph correctly.\n *\n * @see https://typescript-eslint.io/rules/consistent-type-imports\n * @see https://vuejs.github.io/vetur/guide/FAQ.html#why-does-vetur-show-cannot-find-module-xxx\n */\n // '@typescript-eslint/consistent-type-imports': ['error', {\n // disallowTypeAnnotations: false,\n // fixStyle: 'inline-type-imports',\n // prefer: 'type-imports',\n // }],\n\n /**\n * Enforce the order of the top-level properties in the component. This rule\n * helps to maintain consistency and readability by enforcing a predictable\n * order of the top-level properties in the component.\n *\n * @see https://eslint.vuejs.org/rules/ordered-component-elements.html\n */\n 'vue/block-order': ['error', {\n order: [\n 'docs',\n 'script',\n 'template',\n 'style',\n ],\n }],\n\n /**\n * Enforce use of the Composition API and TypeScript. This rule forbids the\n * use of the Options API and JavaScript in Vue components for better\n * consistency and maintainability.\n *\n * @see https://eslint.vuejs.org/rules/vue/prefer-define-options.html\n * @see https://eslint.vuejs.org/rules/vue/component-api-style.html\n */\n 'vue/prefer-define-options': 'error',\n 'vue/component-api-style': ['error', ['script-setup']],\n\n /**\n * Enforce the component name casing to be PascalCase. This rules helps identify\n * and distinguish between components and HTML elements. It also helps to avoid\n * conflicts with existing and future HTML elements.\n *\n * @see https://eslint.vuejs.org/rules/component-name-in-template-casing.html\n */\n 'vue/component-name-in-template-casing': ['error', 'PascalCase', {\n ignores: [String.raw`/\\./`],\n registeredComponentsOnly: false,\n }],\n\n /**\n * Enforce consistent spacing between HTML comments and their content.\n *\n * @see https://eslint.vuejs.org/rules/html-comment-content-spacing.html\n * @see https://eslint.vuejs.org/rules/html-comment-content-newline.html\n */\n 'vue/html-comment-content-spacing': ['error', 'always'],\n 'vue/html-comment-content-newline': ['error', {\n multiline: 'always',\n singleline: 'never',\n }],\n\n /**\n * Enforce consistent spacing between HTML / Component tags. This makes it\n * easier to read and understand the structure of the component.\n *\n * @see https://eslint.vuejs.org/rules/padding-line-between-blocks.html\n * @see https://eslint.vuejs.org/rules/padding-line-between-tags.html\n */\n 'vue/padding-line-between-blocks': ['error', 'always'],\n 'vue/padding-line-between-tags': ['error', [\n { blankLine: 'consistent', next: '*', prev: '*' },\n { blankLine: 'always', next: '*', prev: 'comment' },\n ]],\n\n 'vue/html-comment-indent': ['error', 2],\n 'vue/multiline-html-element-content-newline': ['error', {\n allowEmptyLines: true,\n ignores: [],\n ignoreWhenEmpty: true,\n }],\n\n /**\n * Enforce consistent spacing and newlines in the template. This rule helps\n * to maintain consistency and readability by enforcing a predictable\n *\n * @see https://eslint.vuejs.org/rules/html-indent.html\n * @see https://eslint.vuejs.org/rules/max-attributes-per-line.html\n * @see https://eslint.vuejs.org/rules/html-closing-bracket-newline.html\n */\n 'vue/html-indent': ['error', 2, {\n alignAttributesVertically: true,\n attribute: 1,\n baseIndent: 1,\n closeBracket: 0,\n ignores: [],\n }],\n\n // 'vue/func-call-spacing': ['off', 'never'],\n 'vue/key-spacing': ['error', { afterColon: true, beforeColon: false }],\n 'vue/keyword-spacing': ['error', { after: true, before: true }],\n 'vue/max-attributes-per-line': ['error', {\n multiline: { max: 1 },\n singleline: { max: 5 },\n }],\n\n /**\n * Allow single-word component names. This rule is disabled because we use\n * pascal-casing to distinguish between components and HTML elements.\n *\n * @see https://eslint.vuejs.org/rules/multi-word-component-names.html\n */\n 'vue/multi-word-component-names': 'off',\n 'vue/no-reserved-component-names': 'off',\n\n /**\n * Reports the destructuring or member expression of props passed to setup\n * causing the value to lose reactivity. This rule helps to avoid common\n * pitfalls when using the Composition API.\n *\n * @see https://eslint.vuejs.org/rules/no-setup-props-reactivity-loss.html\n */\n 'vue/no-setup-props-reactivity-loss': 'error',\n\n /**\n * Disallow v-if in v-for. This rule helps to avoid common pitfalls when\n * using v-if and v-for together in the same element.\n *\n * @see https://eslint.vuejs.org/rules/no-use-v-if-with-v-for.html\n */\n 'vue/no-use-v-if-with-v-for': 'error',\n\n /**\n * Enforce the declaration of emits in the setup function and warn on unused\n * emits declarations. This rule helps reduce the risk stale code.\n *\n * @see https://eslint.vuejs.org/rules/require-explicit-emits.html\n * @see https://eslint.vuejs.org/rules/no-unused-emit-declarations.html\n */\n 'vue/require-explicit-emits': 'error',\n\n /**\n * Enforce the `@` shorthand over `v-on:` and only allow inline callbacks.\n * This rule helps to maintain consistency and readability by enforcing a\n * predictable order of the event handlers in the component.\n *\n * @see https://eslint.vuejs.org/rules/v-on-style.html\n * @see https://eslint.vuejs.org/rules/v-on-handler-style.html\n */\n 'vue/v-on-style': ['error', 'shorthand'],\n\n 'vue/return-in-computed-property': 'off',\n 'vue/no-sparse-arrays': 'error',\n 'vue/no-unused-emit-declarations': 'error',\n 'vue/no-use-v-else-with-v-for': 'error',\n 'vue/no-useless-v-bind': 'error',\n 'vue/no-v-html': 'off',\n 'vue/no-v-text-v-html-on-component': 'error',\n 'vue/object-curly-newline': ['error', { consistent: true, multiline: true }],\n 'vue/object-curly-spacing': ['error', 'always'],\n 'vue/object-shorthand': [\n 'error',\n 'always',\n {\n avoidQuotes: true,\n ignoreConstructors: false,\n },\n ],\n 'vue/operator-linebreak': ['error', 'before'],\n 'vue/prefer-import-from-vue': 'off',\n 'vue/prefer-separate-static-class': 'error',\n 'vue/prefer-template': 'error',\n 'vue/quote-props': ['error', 'consistent-as-needed'],\n 'vue/require-default-prop': 'off',\n // reactivity transform\n 'vue/block-tag-newline': ['error', {\n multiline: 'always',\n singleline: 'always',\n }],\n // extensions\n 'vue/array-bracket-spacing': ['error', 'never'],\n 'vue/arrow-spacing': ['error', { after: true, before: true }],\n 'vue/block-lang': ['error', { script: { lang: 'ts' } }],\n 'vue/block-spacing': ['error', 'always'],\n 'vue/brace-style': ['error', 'stroustrup', { allowSingleLine: true }],\n 'vue/comma-dangle': ['error', 'always-multiline'],\n 'vue/comma-spacing': ['error', { after: true, before: false }],\n 'vue/comma-style': ['error', 'last'],\n 'vue/component-options-name-casing': ['error', 'PascalCase'],\n 'vue/custom-event-name-casing': ['error', 'camelCase'],\n 'vue/define-macros-order': ['error', {\n order: ['defineProps', 'defineEmits'],\n }],\n 'vue/dot-location': ['error', 'property'],\n 'vue/dot-notation': ['error', { allowKeywords: true }],\n 'vue/eqeqeq': ['error', 'smart'],\n 'vue/first-attribute-linebreak': ['error', {\n multiline: 'below',\n singleline: 'beside',\n }],\n 'vue/html-closing-bracket-newline': ['error', {\n multiline: 'never',\n selfClosingTag: {\n multiline: 'always',\n singleline: 'never',\n },\n singleline: 'never',\n }],\n 'vue/no-constant-condition': 'warn',\n 'vue/no-empty-pattern': 'error',\n 'vue/no-extra-parens': ['error', 'functions'],\n 'vue/no-irregular-whitespace': 'error',\n 'vue/no-loss-of-precision': 'error',\n 'vue/no-restricted-syntax': [\n 'error',\n 'DebuggerStatement',\n 'LabeledStatement',\n 'WithStatement',\n ],\n 'vue/no-restricted-v-bind': ['error', '/^v-/'],\n 'vue/require-prop-types': 'off',\n 'vue/space-in-parens': ['error', 'never'],\n 'vue/space-infix-ops': 'error',\n 'vue/space-unary-ops': ['error', { nonwords: false, words: true }],\n 'vue/template-curly-spacing': 'error',\n 'vue/v-on-handler-style': ['error', 'inline'],\n\n /** User-defined rules */\n ...options.rules,\n },\n },\n ]\n}\n","import vitestPlugin from 'eslint-plugin-vitest'\nimport { Linter } from 'eslint'\nimport { ESLintConfigOptions } from './all'\n\nexport function vitest(options: ESLintConfigOptions): Linter.FlatConfig[] {\n return [\n {\n plugins: {\n vitest: vitestPlugin,\n },\n files: [\n '**/*.{ts,mts,cts,tsx,d.ts}',\n '**/*.{js,mjs,cjs,jsx}',\n ],\n settings: {\n vitest: {\n typecheck: true,\n },\n },\n languageOptions: {\n globals: {\n ...vitestPlugin.environments.env.globals,\n expectTypeOf: true,\n },\n },\n rules: {\n\n /**\n * Inject all configuration from eslint-plugin-vitest.\n *\n * @see https://github.com/veritem/eslint-plugin-vitest/tree/main?tab=readme-ov-file#rules\n */\n ...vitestPlugin.configs.all.rules,\n\n /**\n * This rule aims to enforce having at least one expectation\n * in test body to ensure that the test is actually testing something.\n *\n * @see https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/expect-expect.md\n */\n 'vitest/expect-expect': ['error', {\n assertFunctionNames: [\n 'expect',\n 'expectTypeOf',\n ],\n }],\n\n /**\n * Disable the conditional test rule as it is prevent's us to use in-source\n * testing when using the `if (import.meta.vitest)` condition. Also disable\n * the rule that prevents the use of if-else statements in tests as we want\n * to use it to test type predicates.\n *\n * @see https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/no-conditional-in-test.md\n */\n 'vitest/no-conditional-in-test': 'off',\n 'vitest/no-conditional-tests': 'off',\n\n /**\n * Since we use in-source testing, we need to disable the rule as it may prevent\n * us from using top level evaluation that are not part of the test suite.\n *\n * @see https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/no-hooks.md\n */\n 'vitest/require-hook': 'off',\n 'vitest/no-hooks': 'off',\n\n /**\n * Disable the rule that enforces the use of `expect.assertions` in tests.\n * As much as this rule enforces a best-practice, it is not always necessary.\n *\n * @see https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/prefer-expect-assertions.md\n */\n 'vitest/prefer-expect-assertions': 'off',\n\n /**\n * Some functions may have a single test case, and it is not necessary\n * to wrap them in a describe block.\n *\n * @see https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/require-top-level-describe.md\n */\n 'vitest/require-top-level-describe': 'off',\n\n /**\n * Enforce rule titles starts with 'should'. This is a convention\n * to force the developer to write the test in a way that it reads\n * like a sentence.\n *\n * @see https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/valid-title.md\n */\n 'vitest/valid-title': ['error', {\n ignoreTypeOfDescribeName: true,\n mustMatch: {\n test: ['^should'],\n },\n }],\n\n /**\n * Disable the prefer-truthy/false rule as we want to allow the use of strict equality checks\n * with boolean values.\n *\n * @see https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-be-truthy.md\n * @see https://github.com/veritem/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-be-falsy.md\n */\n 'vitest/prefer-to-be-truthy': 'off',\n 'vitest/prefer-to-be-falsy': 'off',\n\n /** User-defined rules */\n ...options.rules,\n },\n },\n ]\n}\n","import unicornPlugin from 'eslint-plugin-unicorn'\nimport { Linter } from 'eslint'\nimport { ESLintConfigOptions } from './all'\n\n// @ts-expect-error: untyped module\nconst UNICORN_RECOMMENDED_RULES = unicornPlugin.configs!.recommended.rules as Linter.RulesRecord\n\nexport function unicorn(options: ESLintConfigOptions): Linter.FlatConfig[] {\n return [\n {\n plugins: {\n unicorn: unicornPlugin,\n },\n rules: {\n ...UNICORN_RECOMMENDED_RULES,\n\n /**\n * Improve regexes by making them shorter, consistent, and safer. This rule\n * aims to improve readability and consistency of regexes while also\n * mitigating regex denial of service attacks by disallowing potentially\n * catastrophic backtracking.\n *\n * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/better-regex.md\n */\n 'unicorn/better-regex': 'error',\n\n /**\n * Enforce the catch clause parameter name to be named `error`. This rule\n * aims to enforce a consistent parameter name in catch clauses. The name\n * `error` is the most commonly used name for the parameter that is passed\n * to the catch clause.\n *\n * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/catch-error-name.md\n */\n 'unicorn/catch-error-name': ['error', {\n name: 'error',\n }],\n\n /**\n * Enforce the use of camelCase or PascalCase when naming folders, files and\n * variables. This rule aims to enforce a consistent naming convention for\n * filenames, directory names, and variable names.\n *\n * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/filename-case.md\n */\n 'unicorn/filename-case': ['error', {\n cases: {\n camelCase: true,\n pascalCase: true,\n },\n ignore: [\n '^[A-Z]+(.md)?$',\n ],\n }],\n\n /**\n * Disable the recommended import style rules. We want to be able to use both\n * named and default imports in our codebase.\n *\n * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/import-style.md\n */\n 'unicorn/import-style': 'off',\n\n /**\n * Disallow unsafe regular expressions. Regular expressions can be unsafe\n * when they are too complex and can cause catastrophic backtracking. This\n * rule disallows regular expressions that can lead to catastrophic\n *\n * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-unsafe-regex.md\n */\n 'unicorn/no-unsafe-regex': 'error',\n\n /**\n * Enforces a convention of grouping digits using numeric separators.\n * Long numbers can become really hard to read, so cutting it into groups\n * of digits, separated with a _, is important to keep your code clear.\n *\n * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/numeric-separators-style.md\n */\n 'unicorn/numeric-separators-style': ['error', {\n onlyIfContainsSeparator: true,\n }],\n\n 'unicorn/number-literal-case': 'error',\n 'unicorn/consistent-function-scoping': 'off',\n 'unicorn/error-message': 'error',\n 'unicorn/escape-case': 'error',\n 'unicorn/no-array-callback-reference': 'off',\n 'unicorn/no-array-for-each': 'off',\n 'unicorn/no-array-instanceof': 'error',\n 'unicorn/no-new-buffer': 'error',\n 'unicorn/no-static-only-class': 'off',\n 'unicorn/prefer-code-point': 'off',\n 'unicorn/prefer-exponentiation-operator': 'error',\n 'unicorn/prefer-includes': 'error',\n 'unicorn/prefer-module': 'off',\n 'unicorn/prefer-starts-ends-with': 'error',\n 'unicorn/prefer-switch': 'off',\n 'unicorn/prefer-text-content': 'error',\n 'unicorn/prefer-type-error': 'error',\n 'unicorn/prevent-abbreviations': ['error', {\n allowList: {\n args: true,\n dir: true,\n fn: true,\n i: true,\n j: true,\n k: true,\n props: true,\n Props: true,\n ref: true,\n v: true,\n x: true,\n y: true,\n z: true,\n },\n }],\n 'unicorn/throw-new-error': 'error',\n },\n\n /** User-defined rules */\n ...options.rules,\n },\n ]\n}\n","import pluginSonarjs from 'eslint-plugin-sonarjs'\nimport { Linter } from 'eslint'\nimport { ESLintConfigOptions } from './all'\n\nexport function sonarjs(options: ESLintConfigOptions): Linter.FlatConfig[] {\n return [\n pluginSonarjs.configs.recommended as Linter.FlatConfig,\n {\n rules: {\n\n /**\n * Cognitive Complexity is a measure of how hard the control flow of a function\n * is to understand. Functions with high Cognitive Complexity will be difficult\n * to maintain.\n *\n * @see https://github.com/SonarSource/eslint-plugin-sonarjs/blob/master/docs/rules/cognitive-complexity.md\n */\n 'sonarjs/cognitive-complexity': ['error', 30],\n\n /**\n * Duplicated string literals make the process of refactoring error-prone,\n * since you must be sure to update all occurrences. On the other hand,\n * constants can be referenced from many places, but only need to be\n * updated in a single place.\n *\n * @see https://github.com/SonarSource/eslint-plugin-sonarjs/blob/master/docs/rules/no-duplicate-string.md\n */\n 'sonarjs/no-duplicate-string': ['error', {\n threshold: 10,\n }],\n\n /**\n * Those rules are crashing ESLint at startup, so they are disabled for now.\n */\n 'sonarjs/no-empty-collection': 'off',\n 'sonarjs/no-extra-arguments': 'off',\n 'sonarjs/no-gratuitous-expressions': 'off',\n 'sonarjs/no-one-iteration-loop': 'off',\n 'sonarjs/no-redundant-jump': 'off',\n 'sonarjs/no-unused-collection': 'off',\n 'sonarjs/no-use-of-empty-return-value': 'off',\n 'sonarjs/prefer-immediate-return': 'off',\n\n /** User-defined rules */\n ...options.rules,\n },\n },\n ]\n}\n","import nodePlugin from 'eslint-plugin-n'\nimport { ESLint, Linter } from 'eslint'\nimport { ESLintConfigOptions } from './all'\n\nexport function node(options: ESLintConfigOptions): Linter.FlatConfig[] {\n return [\n {\n plugins: {\n n: nodePlugin as ESLint.Plugin,\n },\n rules: {\n ...nodePlugin.configs.recommended.rules,\n\n /**\n * Disallow the use of extraneous imports. This rule helps prevent the\n * use of third-party modules that are not listed in the project's\n * dependencies.\n *\n * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-extraneous-import.md\n */\n 'n/no-extraneous-import': 'error',\n\n /**\n * Disable the no-missing-import as module resolution is already checked\n * by other tools and IDEs extensively. This rule is redundant.\n *\n * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-missing-import.md\n */\n 'n/no-missing-import': 'off',\n 'n/no-missing-require': 'off',\n\n /**\n * Enfore the use of the asyncrounous version of the `fs` and `dns` APIs.\n *\n * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/no-sync.md\n * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-promises/fs.md\n * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-promises/dns.md\n */\n 'n/no-sync': 'off',\n 'n/prefer-promises/fs': 'error',\n 'n/prefer-promises/dns': 'error',\n\n /**\n * Allow the use of features up to Node.js version 20. This will allow\n * the use of newer ECMAScript features and Node.js APIs.\n *\n * @see https://github.com/eslint-community/eslint-plugin-n/tree/master/docs/rules\n */\n 'n/no-unsupported-features/es-syntax': 'error',\n 'n/no-unsupported-features/es-builtins': 'error',\n 'n/no-unsupported-features/node-builtins': 'error',\n\n /**\n * Prepend the `node:` prefix to all Node.js core modules. This helps\n * identify the module as a Node.js core module and not a third-party\n * module.\n *\n * @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-node-protocol.md\n */\n 'n/prefer-node-protocol': 'error',\n\n /** User-defined rules */\n ...options.rules,\n },\n settings: {\n node: {\n version: '>=22.1.0',\n },\n },\n },\n ]\n}\n","import { Linter } from 'eslint'\n\nexport function jsonTsconfig(): Linter.FlatConfig[] {\n return [\n {\n files: [\n '**/tsconfig.json',\n '**/tsconfig.*.json',\n ],\n rules: {\n 'jsonc/sort-array-values': [\n 'error',\n {\n order: { type: 'asc' },\n pathPattern: '^(includes|excludes)$',\n },\n ],\n 'jsonc/sort-keys': [\n 'error',\n {\n order: [\n 'extends',\n 'compilerOptions',\n 'references',\n 'files',\n 'include',\n 'exclude',\n ],\n pathPattern: '^$',\n },\n {\n order: [\n\n // --- Project Structure\n 'incremental',\n 'composite',\n 'tsBuildInfoFile',\n 'disableSourceOfProjectReferenceRedirect',\n 'disableSolutionSearching',\n 'disableReferencedProjectLoad',\n\n // --- Language and Environment\n 'target',\n 'jsx',\n 'jsxFactory',\n 'jsxFragmentFactory',\n 'jsxImportSource',\n 'lib',\n 'moduleDetection',\n 'noLib',\n 'reactNamespace',\n 'useDefineForClassFields',\n 'emitDecoratorMetadata',\n 'experimentalDecorators',\n\n // --- Module Resolution\n 'baseUrl',\n 'rootDir',\n 'rootDirs',\n 'customConditions',\n 'module',\n 'moduleResolution',\n 'moduleSuffixes',\n 'noResolve',\n 'paths',\n 'resolveJsonModule',\n 'resolvePackageJsonExports',\n 'resolvePackageJsonImports',\n 'typeRoots',\n 'types',\n 'allowArbitraryExtensions',\n 'allowImportingTsExtensions',\n 'allowUmdGlobalAccess',\n\n // --- JavaScript Support\n 'allowJs',\n 'checkJs',\n 'maxNodeModuleJsDepth',\n\n // --- Type Checking\n 'strict',\n 'strictBindCallApply',\n 'strictFunctionTypes',\n 'strictNullChecks',\n 'strictPropertyInitialization',\n 'allowUnreachableCode',\n 'allowUnusedLabels',\n 'alwaysStrict',\n 'exactOptionalPropertyTypes',\n 'noFallthroughCasesInSwitch',\n 'noImplicitAny',\n 'noImplicitOverride',\n 'noImplicitReturns',\n 'noImplicitThis',\n 'noPropertyAccessFromIndexSignature',\n 'noUncheckedIndexedAccess',\n 'noUnusedLocals',\n 'noUnusedParameters',\n 'useUnknownInCatchVariables',\n\n // --- Emitting\n 'declaration',\n 'declarationDir',\n 'declarationMap',\n 'downlevelIteration',\n 'emitBOM',\n 'emitDeclarationOnly',\n 'importHelpers',\n 'importsNotUsedAsValues',\n 'inlineSourceMap',\n 'inlineSources',\n 'mapRoot',\n 'newLine',\n 'noEmit',\n 'noEmitHelpers',\n 'noEmitOnError',\n 'outDir',\n 'outFile',\n 'preserveConstEnums',\n 'preserveValueImports',\n 'removeComments',\n 'sourceMap',\n 'sourceRoot',\n 'stripInternal',\n\n // --- Interop Constraints\n 'allowSyntheticDefaultImports',\n 'esModuleInterop',\n 'forceConsistentCasingInFileNames',\n 'isolatedModules',\n 'preserveSymlinks',\n 'verbatimModuleSyntax',\n\n // --- Completeness\n 'skipDefaultLibCheck',\n 'skipLibCheck',\n ],\n pathPattern: '^compilerOptions$',\n },\n {\n order: { type: 'asc' },\n pathPattern: String.raw`^compilerOptions\\.paths$`,\n },\n ],\n },\n },\n ]\n}\n","import { Linter } from 'eslint'\n\nexport function jsonPackage(): Linter.FlatConfig[] {\n return [\n {\n files: [\n '**/package.json',\n ],\n rules: {\n 'jsonc/sort-keys': [\n 'error',\n {\n order: [\n 'name',\n 'type',\n 'version',\n 'license',\n 'private',\n 'sideEffects',\n\n // --- Publishing\n 'description',\n 'author',\n 'keywords',\n 'bugs',\n 'funding',\n 'homepage',\n 'repository',\n\n // --- Distribution\n 'bin',\n 'main',\n 'module',\n 'types',\n 'typings',\n 'browser',\n 'exports',\n 'files',\n\n // --- Package Manager\n 'packageManager',\n 'pnpm',\n\n // --- Scripts\n 'scripts',\n\n // --- Dependencies\n 'peerDependencies',\n 'peerDependenciesMeta',\n 'optionalDependencies',\n 'dependencies',\n 'devDependencies',\n 'bundledDependencies',\n 'bundleDependencies',\n\n // --- Config\n 'tsup',\n 'husky',\n 'lint-staged',\n 'eslintConfig',\n ],\n pathPattern: '^$',\n },\n {\n order: { type: 'asc' },\n pathPattern: '^(?:dev|peer|optional|bundled)?[Dd]ependencies$',\n },\n ],\n },\n },\n ]\n}\n","import jsonc from 'eslint-plugin-jsonc'\nimport { Linter } from 'eslint'\nimport { ESLintConfigOptions } from './all'\n\n/**\n * @param options The configuration options.\n * @returns The configuration for JSON files.\n * @see https://ota-meshi.github.io/eslint-plugin-jsonc/\n */\nexport function configJson(options: ESLintConfigOptions): Linter.FlatConfig[] {\n return [\n ...jsonc.configs['flat/recommended-with-json'],\n {\n files: [\n '**/*.json',\n '**/*.json5',\n ],\n rules: {\n\n /**\n * Automatically apply jsonc rules similar to your configured ESLint core rules to JSON.\n *\n * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/auto.html\n */\n 'jsonc/auto': 'error',\n\n /** User-defined rules */\n ...options.rules,\n },\n },\n ]\n}\n","import pluginJsdoc from 'eslint-plugin-jsdoc'\nimport { Linter } from 'eslint'\nimport { ESLintConfigOptions } from './all'\n\nexport function jsdoc(options: ESLintConfigOptions): Linter.FlatConfig[] {\n return [\n pluginJsdoc.configs['flat/recommended-typescript-flavor-error'],\n {\n files: [\n '**/*.{ts,mts,cts,tsx,d.ts}',\n '**/*.{js,mjs,cjs,jsx}',\n '**/*.vue',\n ],\n rules: {\n\n /**\n * Enforce a consistent padding of the block description.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/HEAD/docs/rules/check-alignment.md#readme\n */\n 'jsdoc/check-alignment': 'error',\n\n /**\n * Normalize the indentation in the JSdoc comment to improve readability.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-indentation.md#readme\n */\n 'jsdoc/check-indentation': 'error',\n\n /**\n * Enforce a strict set of tags for the JSDoc comment. This rule also includes\n * some custom tags that are used in our projects.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/.README/rules/check-tag-names.md\n */\n 'jsdoc/require-jsdoc': 'off',\n 'jsdoc/require-param-type': 'off',\n 'jsdoc/check-tag-names': ['error', {\n definedTags: [\n 'category',\n ],\n }],\n\n /**\n * Checks for multi-line-style comments which fail to meet the criteria of a jsdoc block,\n * namely that it should begin with two and only two asterisks.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-bad-blocks.md\n */\n 'jsdoc/no-bad-blocks': 'error',\n\n /**\n * It is common practice to prefix a hyphen to parameters in JSDoc. But this\n * is sometimes forgotten and has no real purpose. This rule aims to enforce\n * that no hyphen is used.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-hyphen-before-param-description\n */\n 'jsdoc/require-hyphen-before-param-description': ['error', 'never'],\n\n /**\n * Since we are using TypeScript, we don't need to enforce types in JSDoc.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param-type.md\n */\n 'jsdoc/require-returns-type': 'off',\n\n /**\n * Enforce a new-line between the JSDoc summary and tags. Aims to improve\n * readability by separating the summary and tags.\n *\n * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/tag-lines.md\n */\n 'jsdoc/tag-lines': ['error', 'any', { startLines: 1 }],\n\n /** User-defined rules */\n ...options.rules,\n },\n },\n ]\n}\n","import eslintCommentsPlugin from 'eslint-plugin-eslint-comments'\nimport { Linter } from 'eslint'\nimport { ESLintConfigOptions } from './all'\n\n/**\n * Provide configuration for eslint-comments plugin rules. This\n * plugin is used to enforce certain rules for eslint comments.\n *\n * @param options The configuration options for eslint-comments plugin.\n * @returns The configuration for eslint-comments plugin.\n * @see https://mysticatea.github.io/eslint-plugin-eslint-comments/\n */\nexport function eslintComments(options: ESLintConfigOptions): Linter.FlatConfig[] {\n return [\n {\n plugins: {\n 'eslint-comments': eslintCommentsPlugin,\n },\n rules: {\n\n /**\n * Allow multiple rules directive in a single comment. This\n * reduces the number of comments in the code.\n *\n * @see https://mysticatea.github.io/eslint-plugin-eslint-comments/rules/disable-enable-pair\n */\n 'eslint-comments/disable-enable-pair': 'off',\n\n /**\n * `eslint-enable` directive-comments can enable rules which are disabled by different\n * eslint-disable directive-comments. It can enable a rule unintentionally. This rule\n * will report such cases.\n *\n * @see https://mysticatea.github.io/eslint-plugin-eslint-comments/rules/no-aggregating-enable\n */\n 'eslint-comments/no-aggregating-enable': 'error',\n\n /**\n * Disallow duplicate eslint-disable comments. This rule will report when there are\n * multiple eslint-disable comments for the same rule, either in the same line or enabled\n * by different eslint-disable comments.\n *\n * @see https://mysticatea.github.io/eslint-plugin-eslint-comments/rules/no-duplicate-disable\n */\n 'eslint-comments/no-duplicate-disable': 'error',\n\n /**\n * Disallow eslint-disable comments without rule names. This ensures that we cannot\n * disable all rules in a file using eslint-disable comment.\n *\n * @see https://mysticatea.github.io/eslint-plugin-eslint-comments/rules/no-unlimited-disable\n */\n 'eslint-comments/no-unlimited-disable': 'error',\n\n /**\n * Errors when an eslint-disable comment has no effect. This is useful\n * to prevent unnecessary comments in the code.\n *\n * @see https://mysticatea.github.io/eslint-plugin-eslint-comments/rules/no-unused-disable\n */\n 'eslint-comments/no-unused-disable': 'error',\n\n /** User-defined rules */\n ...options.rules,\n },\n },\n ]\n}\n","import pluginAntfu from 'eslint-plugin-antfu'\nimport { Linter } from 'eslint'\nimport { ESLintConfigOptions } from './all'\n\nexport function antfu(options: ESLintConfigOptions): Linter.FlatConfig[] {\n return [\n {\n plugins: {\n antfu: pluginAntfu,\n },\n rules: {\n 'antfu/consistent-list-newline': 'error',\n\n /**\n * Auto-fix import duplication. The TypeScript compiler already detects and removes\n * duplicate imports, but this rule can be used to fix the issue automatically in the editor.\n *\n * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/import-dedupe.md\n */\n 'antfu/import-dedupe': 'error',\n\n /**\n * Enforce top-level function to be declared using function instead of arrow function. This\n * rule helps when you want to add additional overload signatures to a function without\n * having to transform the arrow function into a function declaration manually.\n *\n * On top of that, it mitigates the risk of accidentally using the `this` instance from\n * an outer scope.\n *\n * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/top-level-function.md\n */\n 'antfu/top-level-function': 'error',\n\n /**\n * Enforce consistent line breaks inside braces of object/array/named imports/exports and\n * function parameters. Reduces the cognitive load of reasoning about code style.\n *\n * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/consistent-list-newline.md\n */\n 'object-curly-newline': 'off',\n\n /** User-defined rules */\n ...options.rules,\n },\n },\n ]\n}\n","import { Linter } from 'eslint'\nimport { MaybeArray } from '@unshared/types'\nimport { vue } from './vue'\nimport { vitest } from './vitest'\nimport { unicorn } from './unicorn'\nimport { typescript } from './typescript'\nimport { sonarjs } from './sonarjs'\nimport { node } from './node'\nimport { jsonTsconfig } from './jsonTsconfig'\nimport { jsonPackage } from './jsonPackage'\nimport { configJson } from './json'\nimport { jsdoc } from './jsdoc'\nimport { eslintComments } from './eslintComments'\nimport { antfu } from './antfu'\n\nexport interface ESLintConfigOptions {\n tsConfigPath?: MaybeArray<string>\n rules?: Linter.RulesRecord\n}\n\nexport function all(options: ESLintConfigOptions = {}) {\n return [\n ...antfu(options),\n ...eslintComments(options),\n ...jsdoc(options),\n ...configJson(options),\n ...jsonPackage(),\n ...jsonTsconfig(),\n ...node(options),\n ...sonarjs(options),\n ...typescript(options),\n ...unicorn(options),\n ...vitest(options),\n ...vue(options),\n {\n ignores: [\n '**/dist',\n '**/bin',\n '**/node_modules',\n '**/.nuxt',\n '**/output',\n '**/coverage',\n '**/public',\n '**/__wip__',\n '**/__snapshots__',\n '**/LICENSE*',\n '**/CHANGELOG*',\n 'packages-lock.json',\n 'pnpm-lock.yaml',\n 'yarn.lock',\n ],\n },\n ]\n}\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@unshared/eslint-config",
|
3
3
|
"type": "module",
|
4
|
-
"version": "0.0.
|
4
|
+
"version": "0.0.8",
|
5
5
|
"license": "MIT",
|
6
6
|
"sideEffects": false,
|
7
7
|
"author": "Stanley Horwood <stanley@hsjm.io>",
|
@@ -33,36 +33,36 @@
|
|
33
33
|
},
|
34
34
|
"dependencies": {
|
35
35
|
"@eslint/eslintrc": "3.0.2",
|
36
|
-
"@eslint/js": "9.
|
37
|
-
"@stylistic/eslint-plugin": "1.
|
38
|
-
"@unshared/collection": "0.0.
|
39
|
-
"@unshared/types": "0.0.
|
36
|
+
"@eslint/js": "9.2.0",
|
37
|
+
"@stylistic/eslint-plugin": "2.1.0",
|
38
|
+
"@unshared/collection": "0.0.8",
|
39
|
+
"@unshared/types": "0.0.8",
|
40
40
|
"eslint-merge-processors": "0.1.0",
|
41
|
-
"eslint-plugin-antfu": "2.
|
41
|
+
"eslint-plugin-antfu": "2.2.0",
|
42
42
|
"eslint-plugin-eslint-comments": "3.2.0",
|
43
43
|
"eslint-plugin-html": "8.1.1",
|
44
44
|
"eslint-plugin-import": "2.29.1",
|
45
|
-
"eslint-plugin-jsdoc": "48.2.
|
45
|
+
"eslint-plugin-jsdoc": "48.2.4",
|
46
46
|
"eslint-plugin-jsonc": "2.15.1",
|
47
|
-
"eslint-plugin-markdown": "
|
48
|
-
"eslint-plugin-n": "17.
|
47
|
+
"eslint-plugin-markdown": "5.0.0",
|
48
|
+
"eslint-plugin-n": "17.7.0",
|
49
49
|
"eslint-plugin-perfectionist": "2.10.0",
|
50
50
|
"eslint-plugin-promise": "6.1.1",
|
51
|
-
"eslint-plugin-sonarjs": "0.
|
52
|
-
"eslint-plugin-unicorn": "
|
51
|
+
"eslint-plugin-sonarjs": "1.0.3",
|
52
|
+
"eslint-plugin-unicorn": "53.0.0",
|
53
53
|
"eslint-plugin-vitest": "0.5.4",
|
54
|
-
"eslint-plugin-vue": "9.
|
54
|
+
"eslint-plugin-vue": "9.26.0",
|
55
55
|
"eslint-plugin-yml": "1.14.0",
|
56
56
|
"eslint-processor-vue-blocks": "0.1.2",
|
57
57
|
"jsonc-eslint-parser": "2.4.0",
|
58
|
-
"typescript-eslint": "7.
|
58
|
+
"typescript-eslint": "7.9.0",
|
59
59
|
"vue-eslint-parser": "9.4.2",
|
60
60
|
"yaml-eslint-parser": "1.2.2"
|
61
61
|
},
|
62
62
|
"devDependencies": {
|
63
63
|
"@types/eslint__eslintrc": "2.1.1",
|
64
64
|
"@types/eslint__js": "8.42.3",
|
65
|
-
"eslint": "9.
|
65
|
+
"eslint": "9.2.0",
|
66
66
|
"typescript": "5.4.5"
|
67
67
|
}
|
68
68
|
}
|