@unshared/eslint-config 0.0.20 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../configs/antfu.ts","../configs/eslintComments.ts","../configs/jsdoc.ts","../configs/json.ts","../configs/jsonPackage.ts","../configs/jsonTsconfig.ts","../configs/node.ts","../configs/sonarjs.ts","../utils/getConfigRules.ts","../configs/typescript.ts","../configs/unicorn.ts","../configs/vitest.ts","../configs/vue.ts","../configs/all.ts"],"sourcesContent":["import type { Linter } from 'eslint'\nimport type { ESLintConfigOptions } from './all'\nimport pluginAntfu from 'eslint-plugin-antfu'\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 type { Linter } from 'eslint'\nimport type { ESLintConfigOptions } from './all'\nimport eslintCommentsPlugin from 'eslint-plugin-eslint-comments'\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 type { Linter } from 'eslint'\nimport type { ESLintConfigOptions } from './all'\nimport pluginJsdoc from 'eslint-plugin-jsdoc'\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 type { Linter } from 'eslint'\nimport type { ESLintConfigOptions } from './all'\nimport jsonc from 'eslint-plugin-jsonc'\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 type { 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 type { 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 type { ESLint, Linter } from 'eslint'\nimport type { ESLintConfigOptions } from './all'\nimport nodePlugin from 'eslint-plugin-n'\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/no-unpublished-import': '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 type { Linter } from 'eslint'\nimport type { ESLintConfigOptions } from './all'\nimport pluginSonarjs from 'eslint-plugin-sonarjs'\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 type { MaybeArray } from '@unshared/types'\nimport type { Linter } from 'eslint'\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 type { ESLint, Linter } from 'eslint'\nimport type { ESLintConfigOptions } from './all'\nimport javascript from '@eslint/js'\nimport stylistic from '@stylistic/eslint-plugin'\nimport { toArray } from '@unshared/collection/toArray'\nimport perfectionist from 'eslint-plugin-perfectionist'\nimport { cwd } from 'node:process'\nimport tslint from 'typescript-eslint'\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/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/member-delimiter-style': ['error', { multiline: { delimiter: 'none' } }],\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: true,\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://typescript-eslint.io/rules/consistent-type-imports\n * @see https://eslint-plugin-perfectionist.azat.io/rules/sort-imports\n */\n 'sort-imports': 'off',\n '@typescript-eslint/consistent-type-imports': ['error', {\n disallowTypeAnnotations: false,\n prefer: 'type-imports',\n fixStyle: 'separate-type-imports',\n }],\n 'perfectionist/sort-exports': ['error', {\n type: 'alphabetical',\n ignoreCase: true,\n }],\n 'perfectionist/sort-named-imports': ['error', {\n type: 'alphabetical',\n ignoreCase: true,\n }],\n 'perfectionist/sort-imports': ['error', {\n newlinesBetween: 'never',\n order: 'asc',\n ignoreCase: true,\n groups: [\n 'type',\n 'internal-type',\n ['parent-type', 'sibling-type', 'index-type'],\n ['builtin', 'external'],\n 'internal',\n ['parent', 'sibling', 'index'],\n 'object',\n 'unknown',\n ],\n }],\n\n /**\n * Sort types and union types alphabetically. This rule aims to maintain\n * consistency around the order of types in TypeScript files. Helps reduce\n * the visual noise in the codebase.\n *\n * @see https://perfectionist.dev/rules/sort-union-types\n */\n '@typescript-eslint/sort-type-constituents': 'off',\n 'perfectionist/sort-intersection-types': ['error', {\n type: 'natural',\n }],\n 'perfectionist/sort-union-types': ['error', {\n type: 'natural',\n ignoreCase: false,\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 '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 type { Linter } from 'eslint'\nimport type { ESLintConfigOptions } from './all'\nimport unicornPlugin from 'eslint-plugin-unicorn'\n\nconst UNICORN_RECOMMENDED_RULES = unicornPlugin.configs.recommended.rules\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 ref: true,\n Ref: true,\n props: true,\n Props: 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 type { Linter } from 'eslint'\nimport type { ESLintConfigOptions } from './all'\nimport vitestPlugin from 'eslint-plugin-vitest'\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 type { Linter } from 'eslint'\nimport type { ESLintConfigOptions } from './all'\nimport { mergeProcessors } from 'eslint-merge-processors'\nimport vuePlugin from 'eslint-plugin-vue'\nimport vueProcessorBlocks from 'eslint-processor-vue-blocks'\nimport tslint from 'typescript-eslint'\nimport vueParser from 'vue-eslint-parser'\nimport { typescript } from './typescript'\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/block-spacing.html\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/block-spacing': ['error', 'always'],\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 'vue/v-on-handler-style': ['error', 'inline-function'],\n\n /**\n * Sort the vue attributes in a consistent order. This rule helps to maintain\n * consistency and readability by enforcing a predictable order of the\n * attributes in the component.\n *\n * @see https://eslint.vuejs.org/rules/attributes-order.html\n */\n 'vue/attributes-order': ['error', {\n order: [\n 'DEFINITION',\n 'LIST_RENDERING',\n 'CONDITIONALS',\n 'RENDER_MODIFIERS',\n 'GLOBAL',\n ['UNIQUE', 'SLOT'],\n 'TWO_WAY_BINDING',\n 'OTHER_DIRECTIVES',\n 'OTHER_ATTR',\n 'EVENTS',\n 'CONTENT',\n ],\n alphabetical: false,\n }],\n\n /**\n * Enforce consistent spacing around attribute assignments. This ensures that\n * the code is easier to read and maintain.\n *\n * @see https://eslint.vuejs.org/rules/no-spaces-around-equal-signs-in-attribute.html\n */\n 'vue/no-spaces-around-equal-signs-in-attribute': 'error',\n 'vue/no-multi-spaces': 'error',\n\n /**\n * Enforce the use of the `ts` lang attribute in the script block. This rule\n * explicitly dissallows the use of the `js` lang attribute in the script.\n */\n 'vue/block-lang': ['error', {\n script: { lang: 'ts' },\n }],\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/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\n /** User-defined rules */\n ...options.rules,\n },\n },\n ]\n}\n","import type { MaybeArray } from '@unshared/types'\nimport type { Linter } from 'eslint'\nimport { antfu } from './antfu'\nimport { eslintComments } from './eslintComments'\nimport { jsdoc } from './jsdoc'\nimport { configJson } from './json'\nimport { jsonPackage } from './jsonPackage'\nimport { jsonTsconfig } from './jsonTsconfig'\nimport { node } from './node'\nimport { sonarjs } from './sonarjs'\nimport { typescript } from './typescript'\nimport { unicorn } from './unicorn'\nimport { vitest } from './vitest'\nimport { vue } from './vue'\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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"}
1
+ {"version":3,"file":"index.cjs","sources":["../configs/antfu.ts","../configs/eslintComments.ts","../configs/jsdoc.ts","../configs/json.ts","../configs/jsonPackage.ts","../configs/jsonTsconfig.ts","../configs/node.ts","../configs/sonarjs.ts","../utils/getConfigRules.ts","../configs/typescript.ts","../configs/unicorn.ts","../configs/vitest.ts","../configs/vue.ts","../configs/yml.ts","../configs/all.ts"],"sourcesContent":["import type { Linter } from 'eslint'\nimport pluginAntfu from 'eslint-plugin-antfu'\n\n/**\n * Anthony extended ESLint rules.\n *\n * @see https://github.com/antfu/eslint-plugin-antfu\n * @returns The configuration for antfu plugin.\n */\nexport function antfu(): Linter.Config[] {\n return [\n {\n plugins: {\n antfu: pluginAntfu,\n },\n rules: {\n\n // --- Enforce consistent line breaks for chaining member access.\n 'antfu/consistent-chaining': 'error',\n\n // --- Enforce consistent line breaks inside braces of object/array/named imports/exports and function parameters.\n 'antfu/consistent-list-newline': 'error',\n\n // --- Deduplicate imports.\n 'antfu/import-dedupe': 'error',\n\n // --- Avoid importing from 'dist' directories.\n 'antfu/no-import-dist': 'error',\n\n // --- Enforce `export default` insteand of `export = {}`.\n 'antfu/no-ts-export-equal': 'error',\n\n // --- Enforce `function()` instead of `() => {}` for top-level functions.\n 'antfu/top-level-function': 'error',\n },\n },\n ]\n}\n","import type { Linter } from 'eslint'\nimport eslintCommentsPlugin from 'eslint-plugin-eslint-comments'\n\n/**\n * @returns The configuration for eslint-comments plugin.\n * @see https://mysticatea.github.io/eslint-plugin-eslint-comments/\n */\nexport function eslintComments(): Linter.Config[] {\n return [\n {\n plugins: {\n 'eslint-comments': eslintCommentsPlugin,\n },\n rules: {\n\n // --- Allow disable without having to enable again.\n 'eslint-comments/disable-enable-pair': 'off',\n\n // --- Disallow eslint-disable comments without rule names. This ensures that we cannot\n 'eslint-comments/no-aggregating-enable': 'error',\n\n // --- Disable must specify rule names.\n 'eslint-comments/no-unlimited-disable': 'error',\n\n // --- Prevent superfluous eslint comments.\n 'eslint-comments/no-duplicate-disable': 'error',\n 'eslint-comments/no-unused-disable': 'error',\n 'eslint-comments/no-unused-enable': 'error',\n },\n },\n ]\n}\n","import type { Linter } from 'eslint'\nimport pluginJsdoc from 'eslint-plugin-jsdoc'\n\n/**\n * @returns Configuration for JSDoc ESLint rules.\n * @see https://github.com/gajus/eslint-plugin-jsdoc\n */\nexport function jsdoc(): Linter.Config[] {\n return [\n pluginJsdoc.configs['flat/recommended-typescript-error'],\n {\n files: [\n '**/*.{ts,mts,cts,tsx,d.ts}',\n '**/*.{js,mjs,cjs,jsx}',\n '**/*.vue',\n ],\n plugins: {\n jsdoc: pluginJsdoc,\n },\n rules: {\n\n // --- Redudant with TypeScript.\n 'jsdoc/require-jsdoc': 'off',\n 'jsdoc/require-param-type': 'off',\n 'jsdoc/require-returns-type': 'off',\n\n // --- Reports malformed JSDoc comments.\n 'jsdoc/no-bad-blocks': 'error',\n 'jsdoc/check-alignment': 'error',\n 'jsdoc/check-indentation': 'error',\n\n // --- Reports invalid block tag names.\n 'jsdoc/check-tag-names': ['error', { definedTags: ['category'] }],\n\n // --- Do not use hyphens before param descriptions.\n 'jsdoc/require-hyphen-before-param-description': ['error', 'never'],\n\n // --- Newline after description.\n 'jsdoc/tag-lines': ['error', 'any', { startLines: 1 }],\n },\n },\n ]\n}\n","import type { Linter } from 'eslint'\nimport pluginJsonc from 'eslint-plugin-jsonc'\n\n/**\n * @returns The configuration for JSON files.\n * @see https://ota-meshi.github.io/eslint-plugin-jsonc/\n */\nexport function json(): Linter.Config[] {\n return [\n ...pluginJsonc.configs['flat/recommended-with-json'],\n {\n rules: {\n\n // --- Automatically apply jsonc rules similar to your configured ESLint core rules to JSON.\n 'jsonc/auto': 'error',\n },\n },\n ]\n}\n","import type { Linter } from 'eslint'\n\n/**\n * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/sort-keys.html\n * @returns The ESLint configuration for strandardizing the `package.json` file.\n */\nexport function jsonPackage(): Linter.Config[] {\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 type { Linter } from 'eslint'\n\n/**\n * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/sort-keys.html\n * @returns The ESLint configuration for strandardizing the `tsconfig.json` file.\n */\nexport function jsonTsconfig(): Linter.Config[] {\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 type { Linter } from 'eslint'\nimport nodePlugin from 'eslint-plugin-n'\n\nexport function node(): Linter.Config[] {\n return [\n nodePlugin.configs['flat/recommended'],\n {\n settings: {\n node: {\n version: '>=20.0.0',\n },\n },\n rules: {\n\n // --- Redundant with TypeScript module resolution.\n 'n/no-missing-import': 'off',\n 'n/no-missing-require': 'off',\n 'n/no-unpublished-import': 'off',\n\n // --- Enforce async functions over synchronous functions.\n 'n/no-sync': ['error', { allowAtRootLevel: true }],\n\n // --- Enforce the use of ECMAScript features.\n 'n/no-unsupported-features/es-syntax': 'error',\n 'n/no-unsupported-features/es-builtins': 'error',\n\n // --- Ignore experimental warnings.\n 'n/no-unsupported-features/node-builtins': 'off',\n\n // --- Prefer the use of global objects over built-in modules.\n 'n/prefer-global/buffer': 'error',\n 'n/prefer-global/console': 'error',\n 'n/prefer-global/process': 'error',\n 'n/prefer-global/text-decoder': 'error',\n 'n/prefer-global/text-encoder': 'error',\n 'n/prefer-global/url': 'error',\n 'n/prefer-global/url-search-params': 'error',\n\n // --- Prefer the use of the `node:` protocol for built-in modules.\n 'n/prefer-node-protocol': 'error',\n\n // --- Prefer the use of promises over callbacks.\n 'n/prefer-promises/fs': 'error',\n 'n/prefer-promises/dns': 'error',\n },\n },\n {\n files: [\n '**/*.test.ts',\n '**/*.spec.ts',\n ],\n rules: {\n\n // --- Disable the no-sync rule for tests.\n 'n/no-sync': 'off',\n },\n },\n ]\n}\n","import type { Linter } from 'eslint'\nimport pluginSonarjs from 'eslint-plugin-sonarjs'\n\n/**\n * @see https://github.com/SonarSource/SonarJS/blob/master/packages/jsts/src/rules/README.md\n * @returns ESLint Config for SonarJS.\n */\nexport function sonarjs(): Linter.Config[] {\n return [\n pluginSonarjs.configs.recommended as Linter.Config,\n {\n rules: {\n\n // --- Increase the default threshold to 30.\n 'sonarjs/cognitive-complexity': ['error', 30],\n\n // --- Increase the default threshold to 10.\n 'sonarjs/no-duplicate-string': ['error', { threshold: 10 }],\n\n // --- Disable unnecessary rules.\n 'sonarjs/use-type-alias': 'off',\n 'sonarjs/no-use-of-empty-return-value': 'off',\n 'sonarjs/no-nested-functions': 'off',\n\n // --- Disable rules that are already covered by TypeScript.\n 'sonarjs/no-extra-arguments': 'off',\n 'sonarjs/function-return-type': 'off',\n 'sonarjs/no-misused-promises': 'off',\n 'sonarjs/no-invariant-returns': 'off',\n 'sonarjs/no-unused-expressions': 'off',\n 'sonarjs/different-types-comparison': 'off',\n\n // --- Allow control characters in regex.\n 'sonarjs/sonar-no-control-regex': 'off',\n },\n },\n {\n files: [\n '**/*.test.ts',\n '**/*.spec.ts',\n ],\n rules: {\n\n // --- Disable unnecessary rules for test files.\n 'sonarjs/cognitive-complexity': 'off',\n 'sonarjs/no-duplicate-string': 'off',\n 'sonarjs/no-useless-constructor': 'off',\n 'sonarjs/public-static-readonly': 'off',\n },\n },\n ]\n}\n","import type { MaybeArray } from '@unshared/types'\nimport type { Linter } from 'eslint'\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 type { ESLint, Linter } from 'eslint'\nimport type { ESLintConfigOptions } from './all'\nimport javascript from '@eslint/js'\nimport stylistic from '@stylistic/eslint-plugin'\nimport { toArray } from '@unshared/collection/toArray'\nimport perfectionist from 'eslint-plugin-perfectionist'\nimport tslint from 'typescript-eslint'\nimport { getConfigRules } from '../utils'\n\nexport function typescript(options: ESLintConfigOptions): Linter.Config[] {\n return [\n javascript.configs.recommended,\n // stylistic.configs['recommended-flat'],\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: process.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 '**/*.vue',\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 // --- Enforce stroustrup brace style.\n 'brace-style': 'off',\n '@typescript-eslint/brace-style': 'off',\n '@stylistic/brace-style': ['error', 'stroustrup', { allowSingleLine: true }],\n\n // --- Enforce 2 spaces for indentation and disallow tabs.\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 // --- No semicolons.\n 'semi': 'off',\n '@typescript-eslint/semi': 'off',\n '@stylistic/semi': ['error', 'never'],\n\n // --- Consistent line breaks.\n 'eol-last': 'off',\n 'no-multiple-empty-lines': 'off',\n '@stylistic/eol-last': ['error', 'always'],\n '@stylistic/no-multiple-empty-lines': ['error', { max: 1, maxBOF: 0, maxEOF: 0 }],\n\n // --- Enforce dangling commas in multiline object literals.\n 'comma-dangle': 'off',\n '@typescript-eslint/comma-dangle': 'off',\n '@stylistic/comma-dangle': ['error', 'always-multiline'],\n\n // --- Enforce type interfaces over type aliases.\n '@typescript-eslint/consistent-indexed-object-style': ['error', 'record'],\n '@typescript-eslint/consistent-type-definitions': ['error', 'interface'],\n '@typescript-eslint/array-type': ['error', { default: 'array-simple', readonly: 'array-simple' }],\n\n // --- Enforce declaration and usage from top to bottom.\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 // --- Consistent spacing and line breaks between tokens.\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/member-delimiter-style': ['error', { multiline: { delimiter: 'none' } }],\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: true,\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 // --- Enforce `@ts-expect-error` over `@ts-ignore`.\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://typescript-eslint.io/rules/consistent-type-imports\n * @see https://eslint-plugin-perfectionist.azat.io/rules/sort-imports\n */\n 'sort-imports': 'off',\n '@typescript-eslint/consistent-type-imports': ['error', {\n disallowTypeAnnotations: false,\n prefer: 'type-imports',\n fixStyle: 'separate-type-imports',\n }],\n 'perfectionist/sort-exports': ['error', {\n type: 'alphabetical',\n ignoreCase: true,\n }],\n 'perfectionist/sort-named-imports': ['error', {\n type: 'alphabetical',\n ignoreCase: true,\n }],\n 'perfectionist/sort-imports': ['error', {\n newlinesBetween: 'never',\n order: 'asc',\n ignoreCase: true,\n groups: [\n 'type',\n 'internal-type',\n ['parent-type', 'sibling-type', 'index-type'],\n ['builtin', 'external'],\n 'internal',\n ['parent', 'sibling', 'index'],\n 'object',\n 'unknown',\n ],\n }],\n\n /**\n * Sort types and union types alphabetically. This rule aims to maintain\n * consistency around the order of types in TypeScript files. Helps reduce\n * the visual noise in the codebase.\n *\n * @see https://perfectionist.dev/rules/sort-union-types\n */\n '@typescript-eslint/sort-type-constituents': 'off',\n 'perfectionist/sort-intersection-types': ['error', {\n type: 'natural',\n }],\n 'perfectionist/sort-union-types': ['error', {\n type: 'natural',\n ignoreCase: false,\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 '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 type { Linter } from 'eslint'\nimport unicornPlugin from 'eslint-plugin-unicorn'\n\n/**\n * @returns ESLint Config for Unicorn.\n * @see https://github.com/sindresorhus/eslint-plugin-unicorn\n */\nexport function unicorn(): Linter.Config[] {\n return [\n unicornPlugin.configs['flat/recommended'],\n {\n rules: {\n\n // --- Allow any kind of import style.\n 'unicorn/import-style': 'off',\n\n // --- Improve regexes by making them shorter, consistent, and safer.\n 'unicorn/better-regex': 'error',\n\n // --- Use destructured variables over properties.\n 'unicorn/consistent-destructuring': 'error',\n\n // --- Enforce consistent function scoping except for arrow functions.\n 'unicorn/consistent-function-scoping': ['error', { checkArrowFunctions: false }],\n\n // --- Disable switch-case fallthrough.\n 'unicorn/prefer-switch': 'off',\n\n // --- Enforce camelCase & PascalCase in filenames. Exepct non TS/JS files.\n 'unicorn/filename-case': ['error', {\n multipleFileExtensions: false,\n cases: { camelCase: true, pascalCase: true },\n ignore: [/\\.json$/, /\\.md$/, /\\.yml$/, /\\.yaml$/],\n }],\n\n // --- Improve readability by using numeric separators.\n 'unicorn/numeric-separators-style': ['error', {\n onlyIfContainsSeparator: true,\n }],\n\n // --- Enforce long variable names when they are meaningful.\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 ref: true,\n Ref: true,\n props: true,\n Props: true,\n v: true,\n x: true,\n y: true,\n z: true,\n },\n }],\n },\n },\n {\n files: [\n '**/*.test.ts',\n '**/*.spec.ts',\n ],\n rules: {\n\n // --- Disable unnecessary rules for test files.\n 'unicorn/no-null': 'off',\n 'unicorn/no-useless-undefined': 'off',\n 'unicorn/no-static-only-class': 'off',\n },\n },\n ]\n}\n","import type { Linter } from 'eslint'\nimport vitestPlugin from '@vitest/eslint-plugin'\n\nexport function vitest(): Linter.Config[] {\n return [\n vitestPlugin.configs.recommended,\n {\n rules: {\n\n // --- Add the `expectTypeOf` function to the list of assert functions.\n 'vitest/expect-expect': ['error', {\n assertFunctionNames: ['expect', 'expectTypeOf'],\n }],\n\n // --- Enforce a single top-level describe block.\n 'vitest/require-top-level-describe': ['error', { maxNumberOfTopLevelDescribes: 1 }],\n\n // --- Enforce 'should' as the prefix for test titles.\n 'vitest/valid-title': ['error', {\n ignoreTypeOfDescribeName: true,\n mustMatch: { test: ['^should'] },\n }],\n\n // --- Prefer strict equality checks.\n 'vitest/prefer-to-be-truthy': 'off',\n 'vitest/prefer-to-be-falsy': 'off',\n\n /// --- Loosen the rules for test files.\n 'vitest/no-hooks': 'off',\n 'vitest/require-hook': 'off',\n 'vitest/no-conditional-in-test': 'off',\n 'vitest/no-conditional-tests': 'off',\n 'vitest/prefer-expect-assertions': 'off',\n 'vitest/padding-around-all': 'off',\n 'vitest/padding-around-expect-groups': 'off',\n },\n },\n ]\n}\n","import type { Linter } from 'eslint'\nimport type { ESLintConfigOptions } from './all'\nimport { mergeProcessors } from 'eslint-merge-processors'\nimport vuePlugin from 'eslint-plugin-vue'\nimport vueProcessorBlocks from 'eslint-processor-vue-blocks'\nimport tslint from 'typescript-eslint'\nimport vueParser from 'vue-eslint-parser'\nimport { typescript } from './typescript'\n\nexport function vue(options: ESLintConfigOptions): Linter.Config[] {\n const TYPESCRIPT_CONFIG = typescript(options).at(1)!\n return [\n ...vuePlugin.configs['flat/recommended'],\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 vuePlugin.processors.vue as Linter.Processor,\n vueProcessorBlocks(),\n ]),\n files: [\n '**/*.vue',\n '**/*.ts',\n ],\n rules: {\n 'vue/return-in-computed-property': 'off',\n\n // --- Allow multiple component definitions in a single file.\n 'vue/one-component-per-file': 'off',\n\n // --- Enforce Component API style.\n 'vue/prefer-define-options': 'error',\n 'vue/component-api-style': ['error', ['script-setup', 'composition']],\n\n // --- Enforce PascalCase components and allow reserved and single-word names.\n 'vue/multi-word-component-names': 'off',\n 'vue/no-reserved-component-names': 'off',\n 'vue/component-name-in-template-casing': ['error', 'PascalCase', {\n ignores: [String.raw`/\\./`],\n registeredComponentsOnly: false,\n }],\n\n // --- Consistent spacing around HTML comments.\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 'vue/html-comment-content-spacing': ['error', 'always'],\n 'vue/html-comment-content-newline': ['error', {\n multiline: 'always',\n singleline: 'never',\n }],\n\n // --- Consistent block order in Vue components.\n 'vue/block-order': ['error', { order: ['script', 'template', 'style', 'i18n'] }],\n\n // --- Consistent spacing in and around the block.\n 'vue/block-spacing': ['error', 'always'],\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 /**\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\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 'vue/v-on-handler-style': ['error', 'inline-function'],\n\n /**\n * Sort the vue attributes in a consistent order. This rule helps to maintain\n * consistency and readability by enforcing a predictable order of the\n * attributes in the component.\n *\n * @see https://eslint.vuejs.org/rules/attributes-order.html\n */\n 'vue/attributes-order': ['error', {\n order: [\n 'DEFINITION',\n 'LIST_RENDERING',\n 'CONDITIONALS',\n 'RENDER_MODIFIERS',\n 'GLOBAL',\n ['UNIQUE', 'SLOT'],\n 'TWO_WAY_BINDING',\n 'OTHER_DIRECTIVES',\n 'OTHER_ATTR',\n 'EVENTS',\n 'CONTENT',\n ],\n alphabetical: false,\n }],\n\n /**\n * Enforce consistent spacing around attribute assignments. This ensures that\n * the code is easier to read and maintain.\n *\n * @see https://eslint.vuejs.org/rules/no-spaces-around-equal-signs-in-attribute.html\n */\n 'vue/no-spaces-around-equal-signs-in-attribute': 'error',\n 'vue/no-multi-spaces': 'error',\n\n /**\n * Enforce the use of the `ts` lang attribute in the script block. This rule\n * explicitly dissallows the use of the `js` lang attribute in the script.\n */\n 'vue/block-lang': ['error', {\n script: { lang: 'ts' },\n }],\n\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/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 },\n },\n\n // --- Disable some TypeScript rules that may conflict with the Vue SFC parser.\n {\n files: [\n '**/*.vue',\n ],\n rules: {\n '@typescript-eslint/no-unsafe-call': 'off',\n '@typescript-eslint/no-unsafe-return': 'off',\n '@typescript-eslint/no-unsafe-argument': 'off',\n '@typescript-eslint/no-unsafe-assignment': 'off',\n '@typescript-eslint/no-unsafe-member-access': 'off',\n '@typescript-eslint/no-misused-promises': 'off',\n },\n },\n\n // --- Disable in test files.\n {\n files: [\n '**/*.test.ts',\n '**/*.spec.ts',\n ],\n rules: {\n 'vue/one-component-per-file': 'off',\n },\n },\n ]\n}\n","import type { Linter } from 'eslint'\nimport pluginYml from 'eslint-plugin-yml'\n\n/**\n * @see https://ota-meshi.github.io/eslint-plugin-yml/rules/\n * @returns ESLint Config for YAML files.\n */\nexport function yml(): Linter.Config[] {\n return [\n ...pluginYml.configs['flat/standard'],\n ...pluginYml.configs['flat/recommended'],\n {\n rules: {\n\n // --- Force single quotes.\n 'yml/quotes': ['error', {\n avoidEscape: true,\n prefer: 'single',\n }],\n\n // --- Remove trailing zeros in numbers.\n 'yml/no-trailing-zeros': 'error',\n\n // --- Prevent empty keys.\n 'yml/require-string-key': 'error',\n\n // --- Prevent empty values or weird newlines in mappings.\n 'yml/block-mapping-colon-indicator-newline': 'error',\n\n // --- No more than one empty line.\n 'yml/no-multiple-empty-lines': ['error', {\n max: 1,\n maxBOF: 0,\n maxEOF: 0,\n }],\n\n // --- Sort environemnt variables alphabetically.\n 'yml/sort-sequence-values': ['error', {\n pathPattern: '^env$',\n order: { type: 'asc' },\n }],\n },\n },\n ]\n}\n","import type { Linter } from 'eslint'\nimport { antfu } from './antfu'\nimport { eslintComments } from './eslintComments'\nimport { jsdoc } from './jsdoc'\nimport { json } from './json'\nimport { jsonPackage } from './jsonPackage'\nimport { jsonTsconfig } from './jsonTsconfig'\nimport { node } from './node'\nimport { sonarjs } from './sonarjs'\nimport { typescript } from './typescript'\nimport { unicorn } from './unicorn'\nimport { vitest } from './vitest'\nimport { vue } from './vue'\nimport { yml } from './yml'\n\nexport interface ESLintConfigOptions {\n tsConfigPath?: string | string[]\n rules?: Linter.RulesRecord\n}\n\nexport function all(options: ESLintConfigOptions = {}) {\n return [\n ...antfu(),\n ...eslintComments(),\n ...jsdoc(),\n ...json(),\n ...jsonPackage(),\n ...jsonTsconfig(),\n ...node(),\n ...sonarjs(),\n ...typescript(options),\n ...unicorn(),\n ...vitest(),\n ...vue(options),\n ...yml(),\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","mergeProcessors"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,10 +1,9 @@
1
- import { MaybeArray } from '@unshared/types';
2
1
  import { Linter } from 'eslint';
3
2
 
4
3
  interface ESLintConfigOptions {
5
- tsConfigPath?: MaybeArray<string>;
4
+ tsConfigPath?: string | string[];
6
5
  rules?: Linter.RulesRecord;
7
6
  }
8
- declare function all(options?: ESLintConfigOptions): Linter.FlatConfig[];
7
+ declare function all(options?: ESLintConfigOptions): Linter.Config<Linter.RulesRecord>[];
9
8
 
10
9
  export { all as default };