@unshared/eslint-config 0.0.6 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.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"), eslintrc = require("@eslint/eslintrc"), 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");
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 new eslintrc.FlatCompat().config({
854
- extends: [
855
- "plugin:sonarjs/recommended"
856
- ],
857
- plugins: [
858
- "sonarjs"
859
- ],
860
- rules: {
861
- /**
862
- * Cognitive Complexity is a measure of how hard the control flow of a function
863
- * is to understand. Functions with high Cognitive Complexity will be difficult
864
- * to maintain.
865
- *
866
- * @see https://github.com/SonarSource/eslint-plugin-sonarjs/blob/master/docs/rules/cognitive-complexity.md
867
- */
868
- "sonarjs/cognitive-complexity": ["error", 30],
869
- /**
870
- * Duplicated string literals make the process of refactoring error-prone,
871
- * since you must be sure to update all occurrences. On the other hand,
872
- * constants can be referenced from many places, but only need to be
873
- * updated in a single place.
874
- *
875
- * @see https://github.com/SonarSource/eslint-plugin-sonarjs/blob/master/docs/rules/no-duplicate-string.md
876
- */
877
- "sonarjs/no-duplicate-string": ["error", {
878
- threshold: 10
879
- }],
880
- /**
881
- * Those rules are crashing ESLint at startup, so they are disabled for now.
882
- */
883
- "sonarjs/no-empty-collection": "off",
884
- "sonarjs/no-extra-arguments": "off",
885
- "sonarjs/no-gratuitous-expressions": "off",
886
- "sonarjs/no-one-iteration-loop": "off",
887
- "sonarjs/no-redundant-jump": "off",
888
- "sonarjs/no-unused-collection": "off",
889
- "sonarjs/no-use-of-empty-return-value": "off",
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: ">=20.0.0"
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: "^compilerOptions\\.paths$"
1086
+ pathPattern: String.raw`^compilerOptions\.paths$`
1089
1087
  }
1090
1088
  ]
1091
1089
  }
@@ -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): (Linter.FlatConfig<Linter.RulesRecord> | Linter.Config<Linter.RulesRecord, Linter.RulesRecord>)[];
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 { FlatCompat } from "@eslint/eslintrc";
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 new FlatCompat().config({
870
- extends: [
871
- "plugin:sonarjs/recommended"
872
- ],
873
- plugins: [
874
- "sonarjs"
875
- ],
876
- rules: {
877
- /**
878
- * Cognitive Complexity is a measure of how hard the control flow of a function
879
- * is to understand. Functions with high Cognitive Complexity will be difficult
880
- * to maintain.
881
- *
882
- * @see https://github.com/SonarSource/eslint-plugin-sonarjs/blob/master/docs/rules/cognitive-complexity.md
883
- */
884
- "sonarjs/cognitive-complexity": ["error", 30],
885
- /**
886
- * Duplicated string literals make the process of refactoring error-prone,
887
- * since you must be sure to update all occurrences. On the other hand,
888
- * constants can be referenced from many places, but only need to be
889
- * updated in a single place.
890
- *
891
- * @see https://github.com/SonarSource/eslint-plugin-sonarjs/blob/master/docs/rules/no-duplicate-string.md
892
- */
893
- "sonarjs/no-duplicate-string": ["error", {
894
- threshold: 10
895
- }],
896
- /**
897
- * Those rules are crashing ESLint at startup, so they are disabled for now.
898
- */
899
- "sonarjs/no-empty-collection": "off",
900
- "sonarjs/no-extra-arguments": "off",
901
- "sonarjs/no-gratuitous-expressions": "off",
902
- "sonarjs/no-one-iteration-loop": "off",
903
- "sonarjs/no-redundant-jump": "off",
904
- "sonarjs/no-unused-collection": "off",
905
- "sonarjs/no-use-of-empty-return-value": "off",
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: ">=20.0.0"
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: "^compilerOptions\\.paths$"
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.6",
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.1.1",
37
- "@stylistic/eslint-plugin": "1.7.2",
38
- "@unshared/collection": "0.0.6",
39
- "@unshared/types": "0.0.6",
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.1.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.3",
45
+ "eslint-plugin-jsdoc": "48.2.4",
46
46
  "eslint-plugin-jsonc": "2.15.1",
47
- "eslint-plugin-markdown": "4.0.1",
48
- "eslint-plugin-n": "17.3.1",
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.25.1",
52
- "eslint-plugin-unicorn": "52.0.0",
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.25.0",
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.7.1",
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.1.1",
65
+ "eslint": "9.2.0",
66
66
  "typescript": "5.4.5"
67
67
  }
68
68
  }