@xylabs/eslint-config-flat 8.2.2 → 8.2.3

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.
@@ -754,11 +754,20 @@ var typescriptTypeCheckedConfig = [
754
754
  ];
755
755
 
756
756
  // src/tiers/opinionated.ts
757
+ var filenameCaseRuleOptions = {
758
+ cases: {
759
+ kebabCase: true,
760
+ pascalCase: true
761
+ }
762
+ };
763
+ function filenameCaseRule(severity) {
764
+ return [severity, filenameCaseRuleOptions];
765
+ }
757
766
  var opinionatedLayerConfig = {
758
767
  files: scriptFiles,
759
768
  rules: {
760
769
  "@typescript-eslint/strict-boolean-expressions": "warn",
761
- "unicorn/filename-case": ["warn", { case: "kebabCase" }],
770
+ "unicorn/filename-case": filenameCaseRule("warn"),
762
771
  "unicorn/no-await-expression-member": "warn",
763
772
  "unicorn/number-literal-case": "warn",
764
773
  "workspaces/no-relative-imports": "warn",
@@ -785,6 +794,7 @@ var strictPromotionRules = {
785
794
  "sonarjs/public-static-readonly": "error",
786
795
  "unicorn/no-useless-undefined": "error",
787
796
  ...Object.fromEntries(unicornV66MigrationQueue.map((rule) => [rule, "error"])),
797
+ "unicorn/filename-case": filenameCaseRule("error"),
788
798
  ...Object.fromEntries([
789
799
  "@typescript-eslint/consistent-type-imports",
790
800
  "@typescript-eslint/explicit-member-accessibility",
@@ -796,7 +806,6 @@ var strictPromotionRules = {
796
806
  "@stylistic/object-property-newline",
797
807
  "@stylistic/quotes",
798
808
  "@stylistic/max-len",
799
- "unicorn/filename-case",
800
809
  "unicorn/no-await-expression-member",
801
810
  "unicorn/number-literal-case",
802
811
  "workspaces/no-relative-imports",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/json/index.ts", "../../src/ignores.ts", "../../src/markdown/index.ts", "../../src/shared.ts", "../../src/core/index.ts", "../../src/rules/consistency.ts", "../../src/rules/correctness.ts", "../../src/rules/index.ts", "../../src/unicorn/index.ts", "../../src/workspaces/index.ts", "../../src/import/index.ts", "../../src/sonar/index.ts", "../../src/tiers/conflicts.ts", "../../src/typescript/index.ts", "../../src/tiers/opinionated.ts", "../../src/tiers/index.ts", "../../src/tiers/plugin-rules.ts", "../../src/index.ts"],
4
- "sourcesContent": ["import json from '@eslint/json'\nimport type { ESLint, Linter } from 'eslint'\n\nimport { ignores } from '../ignores.ts'\n\nexport const jsonConfig: Linter.Config = {\n ignores,\n files: ['**/*.json'],\n plugins: { json: json as unknown as ESLint.Plugin },\n language: 'json/json',\n rules: { 'json/no-duplicate-keys': ['error'] },\n}\n\nexport const jsoncConfig: Linter.Config = {\n ignores,\n files: ['**/*.jsonc'],\n plugins: { json: json as unknown as ESLint.Plugin },\n language: 'json/jsonc',\n rules: { 'json/no-duplicate-keys': ['error'] },\n}\n\nexport const json5Config: Linter.Config = {\n ignores,\n files: ['**/*.json5'],\n plugins: { json: json as unknown as ESLint.Plugin },\n language: 'json/json5',\n rules: { 'json/no-duplicate-keys': ['error'] },\n}\n", "export const ignores = [\n '.eslintcache',\n '.github',\n '.husky',\n '.jest',\n '.next',\n '.vscode',\n '.yarn',\n '**/dist',\n '**/docs',\n '**/node_modules',\n 'coverage',\n 'cypress',\n 'public',\n 'storybook-static',\n 'tmp',\n 'yarn-error.log',\n 'yarn.lock',\n]\n", "import markdown from '@eslint/markdown'\nimport type { Linter } from 'eslint'\n\nimport { scopeConfigs } from '../shared.ts'\n\nexport const markdownConfig: Linter.Config[] = scopeConfigs(markdown.configs.recommended)\n", "import tsParser from '@typescript-eslint/parser'\nimport type { Linter } from 'eslint'\n\nimport { ignores } from './ignores.ts'\n\nexport const scriptFiles = [\n '**/*.ts',\n '**/*.tsx',\n '**/*.mts',\n '**/*.cts',\n '**/*.js',\n '**/*.jsx',\n '**/*.cjs',\n '**/*.mjs',\n '**/*.d.ts',\n '**/*.d.tsx',\n '**/*.d.jsx',\n '**/*.d.mts',\n '**/*.d.cts',\n]\n\nexport const scriptLanguageOptions: Linter.LanguageOptions = {\n ecmaVersion: 'latest',\n parser: tsParser,\n parserOptions: { ecmaFeatures: { jsx: true } },\n sourceType: 'module',\n}\n\nexport const typeCheckedLanguageOptions: Linter.LanguageOptions = {\n ...scriptLanguageOptions,\n parserOptions: {\n ...scriptLanguageOptions.parserOptions,\n projectService: true,\n tsconfigRootDir: process.cwd(),\n },\n}\n\nfunction unique(values: (string | undefined)[]): string[] {\n return [...new Set(values.filter((value): value is string => value !== undefined))]\n}\n\nfunction mergeLanguageOptions(\n base: Linter.LanguageOptions | undefined,\n next: Linter.LanguageOptions | undefined,\n): Linter.LanguageOptions | undefined {\n if (!base) return next\n if (!next) return base\n\n return {\n ...base,\n ...next,\n globals: {\n ...base.globals,\n ...next.globals,\n },\n parserOptions: {\n ...base.parserOptions,\n ...next.parserOptions,\n },\n }\n}\n\nexport function scopeConfig(\n config: Linter.Config,\n {\n files,\n languageOptions,\n }: {\n files?: string[]\n languageOptions?: Linter.LanguageOptions\n } = {},\n): Linter.Config {\n const merged = mergeLanguageOptions(languageOptions, config.languageOptions)\n const result: Linter.Config = {\n ...config,\n files: files ?? config.files,\n ignores: unique([...(config.ignores ?? []), ...ignores]),\n }\n if (merged) {\n result.languageOptions = merged\n }\n return result\n}\n\nexport function scopeConfigs(\n configs: Linter.Config | Linter.Config[],\n options: {\n files?: string[]\n languageOptions?: Linter.LanguageOptions\n } = {},\n): Linter.Config[] {\n return (Array.isArray(configs) ? configs : [configs]).map(config => scopeConfig(config, options))\n}\n", "import js from '@eslint/js'\nimport type { Linter } from 'eslint'\n\nimport {\n consistencyRulesConfig,\n correctnessRulesConfig,\n srcImportsConfig,\n} from '../rules/index.ts'\nimport {\n scopeConfig, scriptFiles, scriptLanguageOptions,\n} from '../shared.ts'\nimport { unicornConfig } from '../unicorn/index.ts'\nimport { workspacesConfig } from '../workspaces/index.ts'\n\nexport const correctnessCoreConfig: Linter.Config[] = [\n scopeConfig(js.configs.recommended, { files: scriptFiles, languageOptions: scriptLanguageOptions }),\n correctnessRulesConfig,\n srcImportsConfig,\n workspacesConfig,\n]\n\nexport const bestPracticesCoreConfig: Linter.Config[] = [\n scopeConfig(unicornConfig, { files: scriptFiles }),\n]\n\nexport const coreConfig: Linter.Config[] = [\n ...correctnessCoreConfig,\n consistencyRulesConfig,\n ...bestPracticesCoreConfig,\n]\n", "import type { Linter } from 'eslint'\n\nimport { ignores } from '../ignores.ts'\n\nexport const consistencyRulesConfig: Linter.Config = {\n ignores,\n rules: {\n 'complexity': ['error', 18],\n 'max-depth': ['error', 6],\n 'max-lines': [\n 'error',\n {\n max: 512,\n skipBlankLines: true,\n },\n ],\n 'array-element-newline': ['warn', 'consistent'],\n // Owned by max-nested-callbacks \u2014 measures callback nesting, not call depth\n 'max-nested-callbacks': ['error', 6],\n 'max-statements': ['error', 32],\n 'no-tabs': ['error'],\n },\n}\n", "import type { Linter } from 'eslint'\n\nimport { ignores } from '../ignores.ts'\n\nconst restrictedImportPaths = [\n './index.ts',\n '../index.ts',\n '../../index.ts',\n '../../../index.ts',\n '../../../../index.ts',\n '../../../../../index.ts',\n '../../../../../../index.ts',\n '../../../../../../../index.ts',\n]\n\nexport const correctnessRulesConfig: Linter.Config = {\n ignores,\n rules: {\n // Owned by @typescript-eslint/no-unused-vars\n 'no-unused-vars': 'off',\n // Owned by unicorn/escape-case\n 'no-useless-escape': 'off',\n // Owned by unicorn/prefer-spread\n 'prefer-spread': 'off',\n 'no-restricted-imports': [\n 'error',\n { paths: restrictedImportPaths },\n ],\n },\n}\n", "import type { Linter } from 'eslint'\n\nimport { ignores } from '../ignores.ts'\nimport { scriptFiles } from '../shared.ts'\nimport { consistencyRulesConfig } from './consistency.ts'\nimport { correctnessRulesConfig } from './correctness.ts'\n\nconst restrictedImportPaths = [\n './index.ts',\n '../index.ts',\n '../../index.ts',\n '../../../index.ts',\n '../../../../index.ts',\n '../../../../../index.ts',\n '../../../../../../index.ts',\n '../../../../../../../index.ts',\n]\n\nconst restrictedSrcImportPatterns = [\n {\n group: [\n '**/src/**',\n '**/src',\n 'src/**',\n ],\n message: 'Do not import from another package\\'s src folder. Import the package by its public entry point instead.',\n },\n]\n\nexport { consistencyRulesConfig } from './consistency.ts'\nexport { correctnessRulesConfig } from './correctness.ts'\n\nexport const rulesConfig: Linter.Config = {\n ignores,\n rules: {\n ...correctnessRulesConfig.rules,\n ...consistencyRulesConfig.rules,\n },\n}\n\n// Source files (under src/) should never reference a src/ path \u2014 own-package files\n// are reached via ./ or ../, and other packages via their published name. Scoped to\n// src/ so test specs (which legitimately import their own ../../src/...) are unaffected.\nexport const srcImportsConfig: Linter.Config = {\n files: scriptFiles.map(pattern => `**/src/${pattern}`),\n ignores,\n rules: {\n 'no-restricted-imports': [\n 'error',\n {\n paths: restrictedImportPaths,\n patterns: restrictedSrcImportPatterns,\n },\n ],\n },\n}\n", "import type { ESLint, Linter } from 'eslint'\nimport unicornPlugin from 'eslint-plugin-unicorn'\n\n// New recommended rules in eslint-plugin-unicorn v66 \u2014 warnings during adoption.\n// Promote individual rules to 'error' once the org has cleared existing violations.\n// Rules permanently disabled for ownership conflicts are listed separately below.\nexport const unicornV66MigrationQueue = [\n 'unicorn/class-reference-in-static-methods',\n 'unicorn/comment-content',\n 'unicorn/consistent-export-decorator-position',\n 'unicorn/consistent-optional-chaining',\n 'unicorn/explicit-timer-delay',\n 'unicorn/no-array-reverse',\n 'unicorn/no-array-sort',\n 'unicorn/no-break-in-nested-loop',\n 'unicorn/no-computed-property-existence-check',\n 'unicorn/no-confusing-array-with',\n 'unicorn/no-declarations-before-early-exit',\n 'unicorn/no-duplicate-loops',\n 'unicorn/no-error-property-assignment',\n 'unicorn/no-for-each',\n 'unicorn/no-global-object-property-assignment',\n 'unicorn/no-incorrect-template-string-interpolation',\n 'unicorn/no-invalid-argument-count',\n 'unicorn/no-mismatched-map-key',\n 'unicorn/no-negated-array-predicate',\n 'unicorn/no-negated-comparison',\n 'unicorn/no-object-methods-with-collections',\n 'unicorn/no-optional-chaining-on-undeclared-variable',\n 'unicorn/no-redundant-comparison',\n 'unicorn/no-return-array-push',\n 'unicorn/no-subtraction-comparison',\n 'unicorn/no-top-level-side-effects',\n 'unicorn/no-undeclared-class-members',\n 'unicorn/no-unnecessary-global-this',\n 'unicorn/no-unnecessary-splice',\n 'unicorn/no-unreadable-new-expression',\n 'unicorn/no-unreadable-object-destructuring',\n 'unicorn/no-unsafe-buffer-conversion',\n 'unicorn/no-unsafe-property-key',\n 'unicorn/no-unsafe-string-replacement',\n 'unicorn/no-useless-boolean-cast',\n 'unicorn/no-useless-concat',\n 'unicorn/no-useless-else',\n 'unicorn/no-useless-recursion',\n 'unicorn/no-useless-template-literals',\n 'unicorn/prefer-add-event-listener-options',\n 'unicorn/prefer-array-from-map',\n 'unicorn/prefer-await',\n 'unicorn/prefer-direct-iteration',\n 'unicorn/prefer-early-return',\n 'unicorn/prefer-global-number-constants',\n 'unicorn/prefer-identifier-import-export-specifiers',\n 'unicorn/prefer-iterable-in-constructor',\n 'unicorn/prefer-iterator-to-array',\n 'unicorn/prefer-location-assign',\n 'unicorn/prefer-minimal-ternary',\n 'unicorn/prefer-number-coercion',\n 'unicorn/prefer-number-is-safe-integer',\n 'unicorn/prefer-object-define-properties',\n 'unicorn/prefer-object-destructuring-defaults',\n 'unicorn/prefer-object-iterable-methods',\n 'unicorn/prefer-path2d',\n 'unicorn/prefer-private-class-fields',\n 'unicorn/prefer-scoped-selector',\n 'unicorn/prefer-short-arrow-method',\n 'unicorn/prefer-simple-sort-comparator',\n 'unicorn/prefer-single-array-predicate',\n 'unicorn/prefer-single-object-destructuring',\n 'unicorn/prefer-smaller-scope',\n 'unicorn/prefer-type-literal-last',\n 'unicorn/prefer-uint8array-base64',\n 'unicorn/prefer-unicode-code-point-escapes',\n 'unicorn/prefer-url-href',\n 'unicorn/require-array-sort-compare',\n 'unicorn/require-proxy-trap-boolean-return',\n] as const\n\n/** @deprecated Use `unicornV66MigrationQueue` instead. */\nexport const unicornV66NewRules = unicornV66MigrationQueue\n\nexport const unicornConfig: Linter.Config = {\n ...(unicornPlugin.configs.recommended as Linter.Config),\n plugins: { unicorn: unicornPlugin as ESLint.Plugin },\n rules: {\n ...(unicornPlugin.configs.recommended as ESLint.ConfigData).rules,\n ...Object.fromEntries(unicornV66MigrationQueue.map(rule => [rule, 'warn'])),\n // Owned by @typescript-eslint/member-ordering\n 'unicorn/consistent-class-member-order': ['off'],\n // Owned by max-nested-callbacks\n 'unicorn/max-nested-calls': ['off'],\n // Naming preference \u2014 too disruptive for org-wide enforcement\n 'unicorn/catch-error-name': ['off'],\n // Closure patterns are valid in our codebase\n 'unicorn/consistent-function-scoping': ['off'],\n // Tier 3 opinionated \u2014 enabled in opinionatedConfig\n 'unicorn/filename-case': ['off'],\n 'unicorn/new-for-builtins': ['off'],\n 'unicorn/no-array-callback-reference': ['off'],\n // Tier 3 opinionated \u2014 enabled in opinionatedConfig\n 'unicorn/no-await-expression-member': ['off'],\n // Owned by unicorn/no-unnecessary-nested-ternary\n 'unicorn/no-nested-ternary': ['off'],\n // Org uses null alongside undefined\n 'unicorn/no-null': ['off'],\n // Formatting \u2014 candidate for stylistic tier; overlaps @stylistic formatting\n 'unicorn/number-literal-case': ['off'],\n 'unicorn/prefer-module': ['off'],\n 'unicorn/prefer-top-level-await': ['off'],\n 'unicorn/prevent-abbreviations': ['off'],\n 'unicorn/prefer-https': ['off'],\n 'unicorn/no-useless-undefined': 'warn',\n },\n}\n", "import type { ESLint, Linter } from 'eslint'\nimport workspacesPlugin from 'eslint-plugin-workspaces'\n\nexport const workspacesConfig: Linter.Config = {\n plugins: { workspaces: workspacesPlugin },\n rules: {\n ...((workspacesPlugin as unknown as { configs: { recommended: ESLint.ConfigData } }).configs.recommended).rules,\n // Tier 3 opinionated \u2014 enabled in opinionatedConfig\n 'workspaces/no-relative-imports': ['off'],\n 'workspaces/require-dependency': ['off'],\n },\n}\n", "import type { ESLint, Linter } from 'eslint'\nimport importPlugin from 'eslint-plugin-import-x'\nimport simpleImportSort from 'eslint-plugin-simple-import-sort'\n\nimport {\n scopeConfig, scriptFiles, scriptLanguageOptions,\n} from '../shared.ts'\n\nconst importFlatConfigs = importPlugin.flatConfigs as {\n recommended: Linter.Config\n typescript: Linter.Config\n}\n\nexport const importConfig: Linter.Config[] = [\n scopeConfig(importFlatConfigs.recommended, { files: scriptFiles, languageOptions: scriptLanguageOptions }),\n scopeConfig(importFlatConfigs.typescript, { files: scriptFiles, languageOptions: scriptLanguageOptions }),\n {\n files: scriptFiles,\n languageOptions: scriptLanguageOptions,\n plugins: {\n 'import-x': importPlugin as unknown as ESLint.Plugin,\n 'simple-import-sort': simpleImportSort,\n },\n settings: { 'import-x/resolver': { typescript: { alwaysTryTypes: true, project: './tsconfig.json' } } },\n rules: {\n // Owned by simple-import-sort/imports\n 'simple-import-sort/imports': ['warn'],\n 'simple-import-sort/exports': ['warn'],\n // Type-aware resolution is slow and requires per-repo resolver setup\n 'import-x/default': ['off'],\n 'import-x/named': ['off'],\n 'import-x/namespace': ['off'],\n 'import-x/no-unresolved': ['off'],\n 'import-x/no-absolute-path': ['warn'],\n 'import-x/no-cycle': [\n 'warn',\n { maxDepth: 5 },\n ],\n 'import-x/no-deprecated': ['off'],\n 'import-x/no-named-as-default-member': ['off'],\n 'import-x/no-named-as-default': ['off'],\n 'import-x/no-restricted-paths': ['warn'],\n 'import-x/no-self-import': ['warn'],\n 'import-x/no-useless-path-segments': ['warn'],\n },\n },\n]\n", "import type { Linter } from 'eslint'\nimport sonarjs from 'eslint-plugin-sonarjs'\n\nimport { ignores } from '../ignores.ts'\n\nexport const sonarConfig: Linter.Config = {\n plugins: { sonarjs },\n ignores,\n rules: {\n 'sonarjs/no-small-switch': ['off'],\n 'sonarjs/os-command': ['off'],\n 'sonarjs/no-os-command-from-path': ['off'],\n 'sonarjs/no-nested-conditional': ['off'],\n 'sonarjs/todo-tag': ['off'],\n 'sonarjs/deprecation': ['warn'],\n 'sonarjs/no-nested-functions': ['off'],\n 'sonarjs/function-return-type': ['off'],\n 'sonarjs/pseudo-random': ['off'],\n 'sonarjs/public-static-readonly': ['warn'],\n 'sonarjs/post-message': ['off'],\n 'sonarjs/different-types-comparison': ['off'],\n // Owned by simple-import-sort/imports\n 'sonarjs/no-alphabetical-sort': ['off'],\n 'sonarjs/no-identical-functions': ['warn'],\n 'sonarjs/no-empty-test-file': ['off'],\n 'sonarjs/no-dead-store': ['warn'],\n 'sonarjs/no-redundant-jump': ['warn'],\n 'sonarjs/void-use': ['off'],\n\n // Owned by complexity\n 'sonarjs/cognitive-complexity': ['off'],\n\n // Owned by @typescript-eslint/no-unused-vars\n 'sonarjs/unused-import': ['off'],\n 'sonarjs/no-unused-vars': ['off'],\n\n 'sonarjs/no-commented-code': ['off'],\n 'sonarjs/prefer-single-boolean-return': ['off'],\n 'sonarjs/redundant-type-aliases': ['off'],\n },\n}\n", "import type { Linter } from 'eslint'\n\nexport interface RuleOwnershipGroup {\n readonly description: string\n readonly disabled: readonly string[]\n readonly owner: string\n}\n\nexport const RULE_OWNERSHIP_GROUPS: readonly RuleOwnershipGroup[] = [\n {\n description: 'Class member ordering with alphabetical within-group sorting',\n owner: '@typescript-eslint/member-ordering',\n disabled: ['unicorn/consistent-class-member-order'],\n },\n {\n description: 'Callback nesting depth limit',\n owner: 'max-nested-callbacks',\n disabled: ['unicorn/max-nested-calls'],\n },\n {\n description: 'Spread over Function.prototype.apply',\n owner: 'unicorn/prefer-spread',\n disabled: ['prefer-spread'],\n },\n {\n description: 'Semicolon style',\n owner: '@stylistic/semi',\n disabled: ['semi'],\n },\n {\n description: 'Quote style',\n owner: '@stylistic/quotes',\n disabled: ['quotes'],\n },\n {\n description: 'Unused variable detection with TypeScript support',\n owner: '@typescript-eslint/no-unused-vars',\n disabled: ['no-unused-vars', 'sonarjs/no-unused-vars'],\n },\n {\n description: 'Escape sequence casing in strings and regexes',\n owner: 'unicorn/escape-case',\n disabled: ['no-useless-escape'],\n },\n {\n description: 'Negated condition style',\n owner: 'unicorn/no-negated-condition',\n disabled: ['no-negated-condition'],\n },\n {\n description: 'Nested ternary restrictions',\n owner: 'unicorn/no-unnecessary-nested-ternary',\n disabled: ['no-nested-ternary', 'unicorn/no-nested-ternary'],\n },\n {\n description: 'Cyclomatic complexity per function',\n owner: 'complexity',\n disabled: ['sonarjs/cognitive-complexity'],\n },\n {\n description: 'Unused import detection',\n owner: '@typescript-eslint/no-unused-vars',\n disabled: ['sonarjs/unused-import'],\n },\n {\n description: 'Import statement ordering',\n owner: 'simple-import-sort/imports',\n disabled: ['import-x/order', 'sonarjs/no-alphabetical-sort'],\n },\n] as const\n\ntype RuleSetting = Linter.RuleEntry<unknown[]> | undefined\n\nfunction isRuleEnabled(setting: RuleSetting): boolean {\n if (setting === undefined) {\n return false\n }\n\n if (setting === 'off' || setting === 0) {\n return false\n }\n\n if (Array.isArray(setting) && setting[0] === 'off') {\n return false\n }\n\n return true\n}\n\nexport function mergeConfigRules(configs: readonly Linter.Config[]): Record<string, RuleSetting> {\n const merged: Record<string, RuleSetting> = {}\n\n for (const entry of configs) {\n if (!entry.rules) {\n continue\n }\n\n Object.assign(merged, entry.rules)\n }\n\n return merged\n}\n\nexport interface RuleOwnershipConflict {\n readonly conflictingRule: string\n readonly conflictingSetting: RuleSetting\n readonly description: string\n readonly owner: string\n readonly ownerSetting: RuleSetting\n}\n\nexport function findRuleOwnershipConflicts(\n rules: Record<string, RuleSetting>,\n): RuleOwnershipConflict[] {\n const conflicts: RuleOwnershipConflict[] = []\n\n for (const group of RULE_OWNERSHIP_GROUPS) {\n const ownerSetting = rules[group.owner]\n if (!isRuleEnabled(ownerSetting)) {\n continue\n }\n\n for (const conflictingRule of group.disabled) {\n if (isRuleEnabled(rules[conflictingRule])) {\n conflicts.push({\n description: group.description,\n owner: group.owner,\n conflictingRule,\n ownerSetting,\n conflictingSetting: rules[conflictingRule],\n })\n }\n }\n }\n\n return conflicts\n}\n\nexport function assertNoRuleOwnershipConflicts(configs: readonly Linter.Config[]): void {\n const conflicts = findRuleOwnershipConflicts(mergeConfigRules(configs))\n\n if (conflicts.length === 0) {\n return\n }\n\n const details = conflicts.map(conflict => (\n `${conflict.owner} conflicts with ${conflict.conflictingRule} (${conflict.description})`\n )).join('\\n')\n\n throw new Error(`ESLint rule ownership conflicts detected:\\n${details}`)\n}\n", "import esStylistic from '@stylistic/eslint-plugin'\nimport tsPlugin from '@typescript-eslint/eslint-plugin'\nimport type { ESLint, Linter } from 'eslint'\n\nimport {\n scopeConfigs,\n scriptFiles,\n scriptLanguageOptions,\n typeCheckedLanguageOptions,\n} from '../shared.ts'\n\nconst flatConfigs = tsPlugin.configs as Record<string, Linter.Config[]>\n\nconst memberOrderingRule: Linter.RuleEntry = [\n 'warn',\n {\n default: {\n memberTypes: [\n 'signature',\n 'call-signature',\n 'public-static-field',\n 'protected-static-field',\n 'private-static-field',\n 'public-decorated-field',\n 'protected-decorated-field',\n 'private-decorated-field',\n 'public-instance-field',\n 'protected-instance-field',\n 'private-instance-field',\n 'public-abstract-field',\n 'protected-abstract-field',\n 'public-field',\n 'protected-field',\n 'private-field',\n 'static-field',\n 'instance-field',\n 'abstract-field',\n 'decorated-field',\n 'field',\n 'public-constructor',\n 'protected-constructor',\n 'private-constructor',\n 'constructor',\n ['public-static-get', 'public-static-set'],\n ['protected-static-get', 'protected-static-set'],\n ['private-static-get', 'private-static-set'],\n ['public-decorated-get', 'public-decorated-set'],\n ['protected-decorated-get', 'protected-decorated-set'],\n ['private-decorated-get', 'private-decorated-set'],\n ['public-instance-get', 'public-instance-set'],\n ['protected-instance-get', 'protected-instance-set'],\n ['private-instance-get', 'private-instance-set'],\n ['public-abstract-get', 'public-abstract-set'],\n ['protected-abstract-get', 'protected-abstract-set'],\n ['public-get', 'public-set'],\n ['protected-get', 'protected-set'],\n ['private-get', 'private-set'],\n ['static-get', 'static-set'],\n ['instance-get', 'instance-set'],\n ['abstract-get', 'abstract-set'],\n ['decorated-get', 'decorated-set'],\n 'get',\n 'set',\n 'public-static-method',\n 'protected-static-method',\n 'private-static-method',\n 'public-decorated-method',\n 'protected-decorated-method',\n 'private-decorated-method',\n 'public-instance-method',\n 'protected-instance-method',\n 'private-instance-method',\n 'public-abstract-method',\n 'protected-abstract-method',\n 'public-method',\n 'protected-method',\n 'private-method',\n 'static-method',\n 'instance-method',\n 'abstract-method',\n 'decorated-method',\n 'method',\n ],\n order: 'alphabetically',\n },\n },\n]\n\nfunction createCorrectnessOverride(languageOptions: Linter.LanguageOptions): Linter.Config {\n return {\n files: scriptFiles,\n languageOptions,\n rules: {\n '@typescript-eslint/no-unused-vars': [\n 'warn',\n {\n argsIgnorePattern: '^_', varsIgnorePattern: '^_', ignoreRestSiblings: true,\n },\n ],\n '@typescript-eslint/require-await': 'off',\n '@typescript-eslint/explicit-module-boundary-types': 'off',\n '@typescript-eslint/no-empty-object-type': ['off'],\n '@typescript-eslint/triple-slash-reference': ['off'],\n // Tier 3 opinionated \u2014 enabled in opinionatedConfig\n '@typescript-eslint/strict-boolean-expressions': ['off'],\n // Owned by @stylistic/quotes\n 'quotes': ['off'],\n // Owned by @stylistic/semi\n 'semi': ['off'],\n // Owned by unicorn/prefer-spread\n 'prefer-spread': ['off'],\n 'require-await': 'off',\n },\n }\n}\n\nfunction createConsistencyOverride(languageOptions: Linter.LanguageOptions): Linter.Config {\n return {\n files: scriptFiles,\n languageOptions,\n plugins: { '@stylistic': esStylistic as unknown as ESLint.Plugin },\n rules: {\n ...esStylistic.configs.recommended.rules,\n '@typescript-eslint/no-empty-function': 'warn',\n '@stylistic/eol-last': 'warn',\n '@typescript-eslint/explicit-member-accessibility': ['warn', { accessibility: 'no-public' }],\n '@stylistic/brace-style': ['warn', '1tbs', { allowSingleLine: true }],\n '@stylistic/quotes': ['warn', 'single', { avoidEscape: true }],\n '@typescript-eslint/consistent-type-imports': ['warn', { fixStyle: 'separate-type-imports', prefer: 'type-imports' }],\n '@stylistic/object-property-newline': ['warn', { allowAllPropertiesOnSameLine: true }],\n '@stylistic/function-call-argument-newline': ['warn', 'consistent'],\n '@stylistic/function-paren-newline': ['warn', 'multiline-arguments'],\n '@stylistic/member-delimiter-style': [\n 'error',\n {\n multiline: {\n delimiter: 'none',\n requireLast: true,\n },\n singleline: {\n delimiter: 'semi',\n requireLast: false,\n },\n },\n ],\n '@stylistic/object-curly-newline': ['warn', {\n ObjectExpression: {\n multiline: true, minProperties: 3, consistent: false,\n },\n ObjectPattern: {\n multiline: true, minProperties: 3, consistent: false,\n },\n ImportDeclaration: {\n multiline: true, minProperties: 3, consistent: false,\n },\n ExportDeclaration: {\n multiline: true, minProperties: 3, consistent: false,\n },\n }],\n '@stylistic/max-len': ['warn', { code: 200 }],\n 'no-restricted-syntax': [\n 'warn',\n {\n selector: 'TSEnumDeclaration',\n message: 'Enums are disallowed. Consider using a union of string literals or a `const` object instead.',\n },\n ],\n '@typescript-eslint/member-ordering': memberOrderingRule,\n },\n }\n}\n\nexport const typescriptDelegationConfig: Linter.Config = {\n files: scriptFiles,\n rules: {\n // Owned by unicorn/prefer-spread \u2014 stylistic presets may re-enable the core rule\n 'prefer-spread': 'off',\n // Owned by @stylistic/semi\n 'semi': 'off',\n // Owned by @stylistic/quotes\n 'quotes': 'off',\n },\n}\n\nexport const typescriptCorrectnessConfig: Linter.Config[] = [\n ...scopeConfigs(flatConfigs['flat/recommended'], { files: scriptFiles, languageOptions: scriptLanguageOptions }),\n createCorrectnessOverride(scriptLanguageOptions),\n]\n\nexport const typescriptConsistencyConfig: Linter.Config[] = [\n ...scopeConfigs(flatConfigs['flat/stylistic'], { files: scriptFiles, languageOptions: scriptLanguageOptions }),\n createConsistencyOverride(scriptLanguageOptions),\n]\n\nexport const typescriptTypeCheckedCorrectnessConfig: Linter.Config[] = [\n ...scopeConfigs(flatConfigs['flat/recommended-type-checked'], { files: scriptFiles, languageOptions: typeCheckedLanguageOptions }),\n createCorrectnessOverride(typeCheckedLanguageOptions),\n {\n files: scriptFiles,\n languageOptions: typeCheckedLanguageOptions,\n rules: { '@typescript-eslint/no-deprecated': 'warn' },\n },\n]\n\nexport const typescriptTypeCheckedConsistencyConfig: Linter.Config[] = [\n ...scopeConfigs(flatConfigs['flat/stylistic-type-checked'], { files: scriptFiles, languageOptions: typeCheckedLanguageOptions }),\n createConsistencyOverride(typeCheckedLanguageOptions),\n]\n\nexport const typescriptConfig: Linter.Config[] = [\n ...typescriptCorrectnessConfig,\n ...typescriptConsistencyConfig,\n typescriptDelegationConfig,\n]\n\nexport const typescriptTypeCheckedConfig: Linter.Config[] = [\n ...typescriptTypeCheckedCorrectnessConfig,\n ...typescriptTypeCheckedConsistencyConfig,\n typescriptDelegationConfig,\n]\n", "import type { Linter } from 'eslint'\n\nimport { scriptFiles } from '../shared.ts'\nimport { unicornV66MigrationQueue } from '../unicorn/index.ts'\n\nexport const opinionatedLayerConfig: Linter.Config = {\n files: scriptFiles,\n rules: {\n '@typescript-eslint/strict-boolean-expressions': 'warn',\n 'unicorn/filename-case': ['warn', { case: 'kebabCase' }],\n 'unicorn/no-await-expression-member': 'warn',\n 'unicorn/number-literal-case': 'warn',\n 'workspaces/no-relative-imports': 'warn',\n 'workspaces/require-dependency': 'warn',\n },\n}\n\nexport const strictPromotionRules: Linter.Config['rules'] = {\n '@stylistic/eol-last': 'error',\n '@typescript-eslint/no-empty-function': 'error',\n '@typescript-eslint/no-deprecated': 'error',\n 'array-element-newline': 'error',\n 'import-x/no-absolute-path': 'error',\n 'import-x/no-cycle': 'error',\n 'import-x/no-restricted-paths': 'error',\n 'import-x/no-self-import': 'error',\n 'import-x/no-useless-path-segments': 'error',\n 'no-restricted-syntax': 'error',\n 'simple-import-sort/exports': 'error',\n 'simple-import-sort/imports': 'error',\n 'sonarjs/deprecation': 'error',\n\n 'sonarjs/no-dead-store': 'error',\n 'sonarjs/no-identical-functions': 'error',\n 'sonarjs/no-redundant-jump': 'error',\n 'sonarjs/public-static-readonly': 'error',\n 'unicorn/no-useless-undefined': 'error',\n ...Object.fromEntries(unicornV66MigrationQueue.map(rule => [rule, 'error'])),\n ...Object.fromEntries([\n '@typescript-eslint/consistent-type-imports',\n '@typescript-eslint/explicit-member-accessibility',\n '@typescript-eslint/member-ordering',\n '@stylistic/brace-style',\n '@stylistic/function-call-argument-newline',\n '@stylistic/function-paren-newline',\n '@stylistic/object-curly-newline',\n '@stylistic/object-property-newline',\n '@stylistic/quotes',\n '@stylistic/max-len',\n 'unicorn/filename-case',\n 'unicorn/no-await-expression-member',\n 'unicorn/number-literal-case',\n 'workspaces/no-relative-imports',\n 'workspaces/require-dependency',\n '@typescript-eslint/strict-boolean-expressions',\n ].map(rule => [rule, 'error'])),\n}\n\nexport const strictLayerConfig: Linter.Config = {\n files: scriptFiles,\n rules: strictPromotionRules,\n}\n", "import type { Linter } from 'eslint'\n\nimport {\n bestPracticesCoreConfig,\n correctnessCoreConfig,\n} from '../core/index.ts'\nimport { importConfig } from '../import/index.ts'\nimport { markdownConfig } from '../markdown/index.ts'\nimport { consistencyRulesConfig } from '../rules/index.ts'\nimport { sonarConfig } from '../sonar/index.ts'\nimport {\n typescriptConsistencyConfig,\n typescriptCorrectnessConfig,\n typescriptDelegationConfig,\n typescriptTypeCheckedConsistencyConfig,\n typescriptTypeCheckedCorrectnessConfig,\n} from '../typescript/index.ts'\nimport { opinionatedLayerConfig, strictLayerConfig } from './opinionated.ts'\n\nfunction mergeTierConfigs(...parts: readonly Linter.Config[][]): Linter.Config[] {\n return parts.flat()\n}\n\n/**\n * Tier 0 \u2014 correctness: type safety, bug prevention, import restrictions.\n * Each subsequent tier is a superset of the previous tier.\n */\nexport const configTier0Correctness: Linter.Config[] = mergeTierConfigs(\n markdownConfig,\n correctnessCoreConfig,\n typescriptCorrectnessConfig,\n)\n\nexport const configTier0CorrectnessTypeChecked: Linter.Config[] = mergeTierConfigs(\n markdownConfig,\n correctnessCoreConfig,\n typescriptTypeCheckedCorrectnessConfig,\n)\n\n/**\n * Tier 1 \u2014 consistency: Tier 0 plus formatting, member ordering, and complexity limits.\n */\nexport const configTier1Consistency: Linter.Config[] = mergeTierConfigs(\n configTier0Correctness,\n [consistencyRulesConfig],\n typescriptConsistencyConfig,\n [typescriptDelegationConfig],\n)\n\nexport const configTier1ConsistencyTypeChecked: Linter.Config[] = mergeTierConfigs(\n configTier0CorrectnessTypeChecked,\n [consistencyRulesConfig],\n typescriptTypeCheckedConsistencyConfig,\n [typescriptDelegationConfig],\n)\n\n/**\n * Tier 2 \u2014 best practices: Tier 1 plus unicorn and import validation.\n * This is the recommended default for XY Labs repositories.\n */\nexport const configTier2BestPractices: Linter.Config[] = mergeTierConfigs(\n configTier1Consistency,\n bestPracticesCoreConfig,\n importConfig,\n)\n\nexport const configTier2BestPracticesTypeChecked: Linter.Config[] = mergeTierConfigs(\n configTier1ConsistencyTypeChecked,\n bestPracticesCoreConfig,\n importConfig,\n)\n\n/**\n * Tier 3 \u2014 opinionated: Tier 2 plus stricter optional rules (still mostly warnings).\n */\nexport const configTier3Opinionated: Linter.Config[] = mergeTierConfigs(\n configTier2BestPractices,\n [opinionatedLayerConfig],\n)\n\nexport const configTier3OpinionatedTypeChecked: Linter.Config[] = mergeTierConfigs(\n configTier2BestPracticesTypeChecked,\n [opinionatedLayerConfig],\n)\n\n/**\n * Tier 4 \u2014 strict: Tier 3 plus SonarJS and promotion of warnings to errors.\n */\nexport const configTier4Strict: Linter.Config[] = mergeTierConfigs(\n configTier3Opinionated,\n [sonarConfig, strictLayerConfig],\n)\n\nexport const configTier4StrictTypeChecked: Linter.Config[] = mergeTierConfigs(\n configTier3OpinionatedTypeChecked,\n [sonarConfig, strictLayerConfig],\n)\n\n/** @deprecated Use `configTier2BestPractices` instead. */\nexport const recommendedConfig: Linter.Config[] = configTier2BestPractices\n\n/** @deprecated Use `configTier2BestPracticesTypeChecked` instead. */\nexport const recommendedTypeCheckedConfig: Linter.Config[] = configTier2BestPracticesTypeChecked\n\n/** Compatibility alias \u2014 identical to `configTier2BestPracticesTypeChecked`. */\nexport const config: Linter.Config[] = configTier2BestPracticesTypeChecked\n", "import js from '@eslint/js'\nimport json from '@eslint/json'\nimport markdown from '@eslint/markdown'\nimport esStylistic from '@stylistic/eslint-plugin'\nimport tsPlugin from '@typescript-eslint/eslint-plugin'\nimport type { ESLint } from 'eslint'\nimport importPlugin from 'eslint-plugin-import-x'\nimport simpleImportSort from 'eslint-plugin-simple-import-sort'\nimport sonarjs from 'eslint-plugin-sonarjs'\nimport unicornPlugin from 'eslint-plugin-unicorn'\nimport workspacesPlugin from 'eslint-plugin-workspaces'\n\nconst compareStrings = (left: string, right: string): number => left.localeCompare(right)\n\nexport interface PluginRuleSnapshot {\n readonly plugin: string\n readonly rules: readonly string[]\n readonly source: string\n}\n\nfunction sortedRuleNames(rules: Record<string, unknown> | undefined): string[] {\n if (!rules) {\n return []\n }\n\n return Object.keys(rules).toSorted(compareStrings)\n}\n\nfunction sortedRuleNamesFromConfigs(\n configs: { rules?: Record<string, unknown> }[] | undefined,\n): string[] {\n if (!configs) {\n return []\n }\n\n const merged: Record<string, unknown> = {}\n for (const entry of configs) {\n if (entry.rules) {\n Object.assign(merged, entry.rules)\n }\n }\n\n return sortedRuleNames(merged)\n}\n\nfunction pluginRuleNames(plugin: ESLint.Plugin): string[] {\n if (!plugin.rules) {\n return []\n }\n\n const prefix = typeof plugin.meta?.name === 'string'\n ? plugin.meta.name.replace(/^eslint-plugin-/, '').replace(/^@eslint\\//, '')\n : 'unknown'\n\n return Object.keys(plugin.rules)\n .toSorted(compareStrings)\n .map(ruleName => `${prefix}/${ruleName}`)\n}\n\nexport function collectPluginRuleSnapshots(): PluginRuleSnapshot[] {\n const unicornRecommended = unicornPlugin.configs['flat/recommended'] as undefined | { rules?: Record<string, unknown> }\n const importRecommended = importPlugin.flatConfigs.recommended as { rules?: Record<string, unknown> }\n const flatConfigs = tsPlugin.configs as Record<string, { rules?: Record<string, unknown> }[]>\n const workspacesRecommended = (\n workspacesPlugin as { configs: { recommended: { rules?: Record<string, unknown> } } }\n ).configs.recommended\n\n return [\n {\n plugin: '@eslint/js',\n rules: sortedRuleNames(js.configs.recommended.rules),\n source: 'configs.recommended',\n },\n {\n plugin: '@eslint/json',\n rules: pluginRuleNames(json),\n source: 'plugin.rules',\n },\n {\n plugin: '@eslint/markdown',\n rules: sortedRuleNames(\n (markdown.configs.recommended as { rules?: Record<string, unknown> }[])[0]?.rules,\n ),\n source: 'configs.recommended',\n },\n {\n plugin: '@stylistic/eslint-plugin',\n rules: sortedRuleNames(esStylistic.configs.recommended.rules),\n source: 'configs.recommended',\n },\n {\n plugin: '@typescript-eslint/eslint-plugin',\n rules: sortedRuleNamesFromConfigs(flatConfigs['flat/recommended-type-checked']),\n source: 'configs.flat/recommended-type-checked',\n },\n {\n plugin: '@typescript-eslint/eslint-plugin',\n rules: sortedRuleNamesFromConfigs(flatConfigs['flat/stylistic-type-checked']),\n source: 'configs.flat/stylistic-type-checked',\n },\n {\n plugin: 'eslint-plugin-import-x',\n rules: sortedRuleNames(importRecommended.rules),\n source: 'flatConfigs.recommended',\n },\n {\n plugin: 'eslint-plugin-import-x',\n rules: sortedRuleNames(importPlugin.flatConfigs.typescript.rules),\n source: 'flatConfigs.typescript',\n },\n {\n plugin: 'eslint-plugin-simple-import-sort',\n rules: pluginRuleNames(simpleImportSort),\n source: 'plugin.rules',\n },\n {\n plugin: 'eslint-plugin-sonarjs',\n rules: pluginRuleNames(sonarjs),\n source: 'plugin.rules',\n },\n {\n plugin: 'eslint-plugin-unicorn',\n rules: sortedRuleNames(unicornRecommended?.rules),\n source: 'configs.flat/recommended',\n },\n {\n plugin: 'eslint-plugin-workspaces',\n rules: sortedRuleNames(workspacesRecommended.rules),\n source: 'configs.recommended',\n },\n ]\n}\n\nexport function serializePluginRuleSnapshots(snapshots: readonly PluginRuleSnapshot[]): string {\n return `${JSON.stringify(snapshots, null, 2)}\\n`\n}\n", "import type { Linter } from 'eslint'\n\nimport {\n json5Config, jsoncConfig,\n jsonConfig,\n} from './json/index.ts'\nimport { markdownConfig } from './markdown/index.ts'\n\nexport const docsConfig: Linter.Config[] = [\n ...markdownConfig,\n jsonConfig,\n jsoncConfig,\n json5Config,\n]\n\nexport {\n bestPracticesCoreConfig,\n coreConfig,\n correctnessCoreConfig,\n} from './core/index.ts'\nexport { ignores } from './ignores.ts'\nexport { importConfig } from './import/index.ts'\nexport {\n json5Config, jsoncConfig,\n jsonConfig,\n} from './json/index.ts'\nexport { markdownConfig } from './markdown/index.ts'\nexport {\n consistencyRulesConfig,\n correctnessRulesConfig,\n rulesConfig,\n srcImportsConfig,\n} from './rules/index.ts'\nexport { sonarConfig } from './sonar/index.ts'\nexport {\n assertNoRuleOwnershipConflicts,\n findRuleOwnershipConflicts,\n mergeConfigRules,\n RULE_OWNERSHIP_GROUPS,\n} from './tiers/conflicts.ts'\nexport * from './tiers/index.ts'\nexport {\n opinionatedLayerConfig,\n strictLayerConfig,\n strictPromotionRules,\n} from './tiers/opinionated.ts'\nexport {\n collectPluginRuleSnapshots,\n serializePluginRuleSnapshots,\n} from './tiers/plugin-rules.ts'\nexport {\n typescriptConfig,\n typescriptConsistencyConfig,\n typescriptCorrectnessConfig,\n typescriptDelegationConfig,\n typescriptTypeCheckedConfig,\n typescriptTypeCheckedConsistencyConfig,\n typescriptTypeCheckedCorrectnessConfig,\n} from './typescript/index.ts'\nexport {\n unicornConfig,\n unicornV66MigrationQueue,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n unicornV66NewRules,\n} from './unicorn/index.ts'\nexport { workspacesConfig } from './workspaces/index.ts'\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import json from '@eslint/json'\nimport type { ESLint, Linter } from 'eslint'\n\nimport { ignores } from '../ignores.ts'\n\nexport const jsonConfig: Linter.Config = {\n ignores,\n files: ['**/*.json'],\n plugins: { json: json as unknown as ESLint.Plugin },\n language: 'json/json',\n rules: { 'json/no-duplicate-keys': ['error'] },\n}\n\nexport const jsoncConfig: Linter.Config = {\n ignores,\n files: ['**/*.jsonc'],\n plugins: { json: json as unknown as ESLint.Plugin },\n language: 'json/jsonc',\n rules: { 'json/no-duplicate-keys': ['error'] },\n}\n\nexport const json5Config: Linter.Config = {\n ignores,\n files: ['**/*.json5'],\n plugins: { json: json as unknown as ESLint.Plugin },\n language: 'json/json5',\n rules: { 'json/no-duplicate-keys': ['error'] },\n}\n", "export const ignores = [\n '.eslintcache',\n '.github',\n '.husky',\n '.jest',\n '.next',\n '.vscode',\n '.yarn',\n '**/dist',\n '**/docs',\n '**/node_modules',\n 'coverage',\n 'cypress',\n 'public',\n 'storybook-static',\n 'tmp',\n 'yarn-error.log',\n 'yarn.lock',\n]\n", "import markdown from '@eslint/markdown'\nimport type { Linter } from 'eslint'\n\nimport { scopeConfigs } from '../shared.ts'\n\nexport const markdownConfig: Linter.Config[] = scopeConfigs(markdown.configs.recommended)\n", "import tsParser from '@typescript-eslint/parser'\nimport type { Linter } from 'eslint'\n\nimport { ignores } from './ignores.ts'\n\nexport const scriptFiles = [\n '**/*.ts',\n '**/*.tsx',\n '**/*.mts',\n '**/*.cts',\n '**/*.js',\n '**/*.jsx',\n '**/*.cjs',\n '**/*.mjs',\n '**/*.d.ts',\n '**/*.d.tsx',\n '**/*.d.jsx',\n '**/*.d.mts',\n '**/*.d.cts',\n]\n\nexport const scriptLanguageOptions: Linter.LanguageOptions = {\n ecmaVersion: 'latest',\n parser: tsParser,\n parserOptions: { ecmaFeatures: { jsx: true } },\n sourceType: 'module',\n}\n\nexport const typeCheckedLanguageOptions: Linter.LanguageOptions = {\n ...scriptLanguageOptions,\n parserOptions: {\n ...scriptLanguageOptions.parserOptions,\n projectService: true,\n tsconfigRootDir: process.cwd(),\n },\n}\n\nfunction unique(values: (string | undefined)[]): string[] {\n return [...new Set(values.filter((value): value is string => value !== undefined))]\n}\n\nfunction mergeLanguageOptions(\n base: Linter.LanguageOptions | undefined,\n next: Linter.LanguageOptions | undefined,\n): Linter.LanguageOptions | undefined {\n if (!base) return next\n if (!next) return base\n\n return {\n ...base,\n ...next,\n globals: {\n ...base.globals,\n ...next.globals,\n },\n parserOptions: {\n ...base.parserOptions,\n ...next.parserOptions,\n },\n }\n}\n\nexport function scopeConfig(\n config: Linter.Config,\n {\n files,\n languageOptions,\n }: {\n files?: string[]\n languageOptions?: Linter.LanguageOptions\n } = {},\n): Linter.Config {\n const merged = mergeLanguageOptions(languageOptions, config.languageOptions)\n const result: Linter.Config = {\n ...config,\n files: files ?? config.files,\n ignores: unique([...(config.ignores ?? []), ...ignores]),\n }\n if (merged) {\n result.languageOptions = merged\n }\n return result\n}\n\nexport function scopeConfigs(\n configs: Linter.Config | Linter.Config[],\n options: {\n files?: string[]\n languageOptions?: Linter.LanguageOptions\n } = {},\n): Linter.Config[] {\n return (Array.isArray(configs) ? configs : [configs]).map(config => scopeConfig(config, options))\n}\n", "import js from '@eslint/js'\nimport type { Linter } from 'eslint'\n\nimport {\n consistencyRulesConfig,\n correctnessRulesConfig,\n srcImportsConfig,\n} from '../rules/index.ts'\nimport {\n scopeConfig, scriptFiles, scriptLanguageOptions,\n} from '../shared.ts'\nimport { unicornConfig } from '../unicorn/index.ts'\nimport { workspacesConfig } from '../workspaces/index.ts'\n\nexport const correctnessCoreConfig: Linter.Config[] = [\n scopeConfig(js.configs.recommended, { files: scriptFiles, languageOptions: scriptLanguageOptions }),\n correctnessRulesConfig,\n srcImportsConfig,\n workspacesConfig,\n]\n\nexport const bestPracticesCoreConfig: Linter.Config[] = [\n scopeConfig(unicornConfig, { files: scriptFiles }),\n]\n\nexport const coreConfig: Linter.Config[] = [\n ...correctnessCoreConfig,\n consistencyRulesConfig,\n ...bestPracticesCoreConfig,\n]\n", "import type { Linter } from 'eslint'\n\nimport { ignores } from '../ignores.ts'\n\nexport const consistencyRulesConfig: Linter.Config = {\n ignores,\n rules: {\n 'complexity': ['error', 18],\n 'max-depth': ['error', 6],\n 'max-lines': [\n 'error',\n {\n max: 512,\n skipBlankLines: true,\n },\n ],\n 'array-element-newline': ['warn', 'consistent'],\n // Owned by max-nested-callbacks \u2014 measures callback nesting, not call depth\n 'max-nested-callbacks': ['error', 6],\n 'max-statements': ['error', 32],\n 'no-tabs': ['error'],\n },\n}\n", "import type { Linter } from 'eslint'\n\nimport { ignores } from '../ignores.ts'\n\nconst restrictedImportPaths = [\n './index.ts',\n '../index.ts',\n '../../index.ts',\n '../../../index.ts',\n '../../../../index.ts',\n '../../../../../index.ts',\n '../../../../../../index.ts',\n '../../../../../../../index.ts',\n]\n\nexport const correctnessRulesConfig: Linter.Config = {\n ignores,\n rules: {\n // Owned by @typescript-eslint/no-unused-vars\n 'no-unused-vars': 'off',\n // Owned by unicorn/escape-case\n 'no-useless-escape': 'off',\n // Owned by unicorn/prefer-spread\n 'prefer-spread': 'off',\n 'no-restricted-imports': [\n 'error',\n { paths: restrictedImportPaths },\n ],\n },\n}\n", "import type { Linter } from 'eslint'\n\nimport { ignores } from '../ignores.ts'\nimport { scriptFiles } from '../shared.ts'\nimport { consistencyRulesConfig } from './consistency.ts'\nimport { correctnessRulesConfig } from './correctness.ts'\n\nconst restrictedImportPaths = [\n './index.ts',\n '../index.ts',\n '../../index.ts',\n '../../../index.ts',\n '../../../../index.ts',\n '../../../../../index.ts',\n '../../../../../../index.ts',\n '../../../../../../../index.ts',\n]\n\nconst restrictedSrcImportPatterns = [\n {\n group: [\n '**/src/**',\n '**/src',\n 'src/**',\n ],\n message: 'Do not import from another package\\'s src folder. Import the package by its public entry point instead.',\n },\n]\n\nexport { consistencyRulesConfig } from './consistency.ts'\nexport { correctnessRulesConfig } from './correctness.ts'\n\nexport const rulesConfig: Linter.Config = {\n ignores,\n rules: {\n ...correctnessRulesConfig.rules,\n ...consistencyRulesConfig.rules,\n },\n}\n\n// Source files (under src/) should never reference a src/ path \u2014 own-package files\n// are reached via ./ or ../, and other packages via their published name. Scoped to\n// src/ so test specs (which legitimately import their own ../../src/...) are unaffected.\nexport const srcImportsConfig: Linter.Config = {\n files: scriptFiles.map(pattern => `**/src/${pattern}`),\n ignores,\n rules: {\n 'no-restricted-imports': [\n 'error',\n {\n paths: restrictedImportPaths,\n patterns: restrictedSrcImportPatterns,\n },\n ],\n },\n}\n", "import type { ESLint, Linter } from 'eslint'\nimport unicornPlugin from 'eslint-plugin-unicorn'\n\n// New recommended rules in eslint-plugin-unicorn v66 \u2014 warnings during adoption.\n// Promote individual rules to 'error' once the org has cleared existing violations.\n// Rules permanently disabled for ownership conflicts are listed separately below.\nexport const unicornV66MigrationQueue = [\n 'unicorn/class-reference-in-static-methods',\n 'unicorn/comment-content',\n 'unicorn/consistent-export-decorator-position',\n 'unicorn/consistent-optional-chaining',\n 'unicorn/explicit-timer-delay',\n 'unicorn/no-array-reverse',\n 'unicorn/no-array-sort',\n 'unicorn/no-break-in-nested-loop',\n 'unicorn/no-computed-property-existence-check',\n 'unicorn/no-confusing-array-with',\n 'unicorn/no-declarations-before-early-exit',\n 'unicorn/no-duplicate-loops',\n 'unicorn/no-error-property-assignment',\n 'unicorn/no-for-each',\n 'unicorn/no-global-object-property-assignment',\n 'unicorn/no-incorrect-template-string-interpolation',\n 'unicorn/no-invalid-argument-count',\n 'unicorn/no-mismatched-map-key',\n 'unicorn/no-negated-array-predicate',\n 'unicorn/no-negated-comparison',\n 'unicorn/no-object-methods-with-collections',\n 'unicorn/no-optional-chaining-on-undeclared-variable',\n 'unicorn/no-redundant-comparison',\n 'unicorn/no-return-array-push',\n 'unicorn/no-subtraction-comparison',\n 'unicorn/no-top-level-side-effects',\n 'unicorn/no-undeclared-class-members',\n 'unicorn/no-unnecessary-global-this',\n 'unicorn/no-unnecessary-splice',\n 'unicorn/no-unreadable-new-expression',\n 'unicorn/no-unreadable-object-destructuring',\n 'unicorn/no-unsafe-buffer-conversion',\n 'unicorn/no-unsafe-property-key',\n 'unicorn/no-unsafe-string-replacement',\n 'unicorn/no-useless-boolean-cast',\n 'unicorn/no-useless-concat',\n 'unicorn/no-useless-else',\n 'unicorn/no-useless-recursion',\n 'unicorn/no-useless-template-literals',\n 'unicorn/prefer-add-event-listener-options',\n 'unicorn/prefer-array-from-map',\n 'unicorn/prefer-await',\n 'unicorn/prefer-direct-iteration',\n 'unicorn/prefer-early-return',\n 'unicorn/prefer-global-number-constants',\n 'unicorn/prefer-identifier-import-export-specifiers',\n 'unicorn/prefer-iterable-in-constructor',\n 'unicorn/prefer-iterator-to-array',\n 'unicorn/prefer-location-assign',\n 'unicorn/prefer-minimal-ternary',\n 'unicorn/prefer-number-coercion',\n 'unicorn/prefer-number-is-safe-integer',\n 'unicorn/prefer-object-define-properties',\n 'unicorn/prefer-object-destructuring-defaults',\n 'unicorn/prefer-object-iterable-methods',\n 'unicorn/prefer-path2d',\n 'unicorn/prefer-private-class-fields',\n 'unicorn/prefer-scoped-selector',\n 'unicorn/prefer-short-arrow-method',\n 'unicorn/prefer-simple-sort-comparator',\n 'unicorn/prefer-single-array-predicate',\n 'unicorn/prefer-single-object-destructuring',\n 'unicorn/prefer-smaller-scope',\n 'unicorn/prefer-type-literal-last',\n 'unicorn/prefer-uint8array-base64',\n 'unicorn/prefer-unicode-code-point-escapes',\n 'unicorn/prefer-url-href',\n 'unicorn/require-array-sort-compare',\n 'unicorn/require-proxy-trap-boolean-return',\n] as const\n\n/** @deprecated Use `unicornV66MigrationQueue` instead. */\nexport const unicornV66NewRules = unicornV66MigrationQueue\n\nexport const unicornConfig: Linter.Config = {\n ...(unicornPlugin.configs.recommended as Linter.Config),\n plugins: { unicorn: unicornPlugin as ESLint.Plugin },\n rules: {\n ...(unicornPlugin.configs.recommended as ESLint.ConfigData).rules,\n ...Object.fromEntries(unicornV66MigrationQueue.map(rule => [rule, 'warn'])),\n // Owned by @typescript-eslint/member-ordering\n 'unicorn/consistent-class-member-order': ['off'],\n // Owned by max-nested-callbacks\n 'unicorn/max-nested-calls': ['off'],\n // Naming preference \u2014 too disruptive for org-wide enforcement\n 'unicorn/catch-error-name': ['off'],\n // Closure patterns are valid in our codebase\n 'unicorn/consistent-function-scoping': ['off'],\n // Tier 3 opinionated \u2014 enabled in opinionatedConfig\n 'unicorn/filename-case': ['off'],\n 'unicorn/new-for-builtins': ['off'],\n 'unicorn/no-array-callback-reference': ['off'],\n // Tier 3 opinionated \u2014 enabled in opinionatedConfig\n 'unicorn/no-await-expression-member': ['off'],\n // Owned by unicorn/no-unnecessary-nested-ternary\n 'unicorn/no-nested-ternary': ['off'],\n // Org uses null alongside undefined\n 'unicorn/no-null': ['off'],\n // Formatting \u2014 candidate for stylistic tier; overlaps @stylistic formatting\n 'unicorn/number-literal-case': ['off'],\n 'unicorn/prefer-module': ['off'],\n 'unicorn/prefer-top-level-await': ['off'],\n 'unicorn/prevent-abbreviations': ['off'],\n 'unicorn/prefer-https': ['off'],\n 'unicorn/no-useless-undefined': 'warn',\n },\n}\n", "import type { ESLint, Linter } from 'eslint'\nimport workspacesPlugin from 'eslint-plugin-workspaces'\n\nexport const workspacesConfig: Linter.Config = {\n plugins: { workspaces: workspacesPlugin },\n rules: {\n ...((workspacesPlugin as unknown as { configs: { recommended: ESLint.ConfigData } }).configs.recommended).rules,\n // Tier 3 opinionated \u2014 enabled in opinionatedConfig\n 'workspaces/no-relative-imports': ['off'],\n 'workspaces/require-dependency': ['off'],\n },\n}\n", "import type { ESLint, Linter } from 'eslint'\nimport importPlugin from 'eslint-plugin-import-x'\nimport simpleImportSort from 'eslint-plugin-simple-import-sort'\n\nimport {\n scopeConfig, scriptFiles, scriptLanguageOptions,\n} from '../shared.ts'\n\nconst importFlatConfigs = importPlugin.flatConfigs as {\n recommended: Linter.Config\n typescript: Linter.Config\n}\n\nexport const importConfig: Linter.Config[] = [\n scopeConfig(importFlatConfigs.recommended, { files: scriptFiles, languageOptions: scriptLanguageOptions }),\n scopeConfig(importFlatConfigs.typescript, { files: scriptFiles, languageOptions: scriptLanguageOptions }),\n {\n files: scriptFiles,\n languageOptions: scriptLanguageOptions,\n plugins: {\n 'import-x': importPlugin as unknown as ESLint.Plugin,\n 'simple-import-sort': simpleImportSort,\n },\n settings: { 'import-x/resolver': { typescript: { alwaysTryTypes: true, project: './tsconfig.json' } } },\n rules: {\n // Owned by simple-import-sort/imports\n 'simple-import-sort/imports': ['warn'],\n 'simple-import-sort/exports': ['warn'],\n // Type-aware resolution is slow and requires per-repo resolver setup\n 'import-x/default': ['off'],\n 'import-x/named': ['off'],\n 'import-x/namespace': ['off'],\n 'import-x/no-unresolved': ['off'],\n 'import-x/no-absolute-path': ['warn'],\n 'import-x/no-cycle': [\n 'warn',\n { maxDepth: 5 },\n ],\n 'import-x/no-deprecated': ['off'],\n 'import-x/no-named-as-default-member': ['off'],\n 'import-x/no-named-as-default': ['off'],\n 'import-x/no-restricted-paths': ['warn'],\n 'import-x/no-self-import': ['warn'],\n 'import-x/no-useless-path-segments': ['warn'],\n },\n },\n]\n", "import type { Linter } from 'eslint'\nimport sonarjs from 'eslint-plugin-sonarjs'\n\nimport { ignores } from '../ignores.ts'\n\nexport const sonarConfig: Linter.Config = {\n plugins: { sonarjs },\n ignores,\n rules: {\n 'sonarjs/no-small-switch': ['off'],\n 'sonarjs/os-command': ['off'],\n 'sonarjs/no-os-command-from-path': ['off'],\n 'sonarjs/no-nested-conditional': ['off'],\n 'sonarjs/todo-tag': ['off'],\n 'sonarjs/deprecation': ['warn'],\n 'sonarjs/no-nested-functions': ['off'],\n 'sonarjs/function-return-type': ['off'],\n 'sonarjs/pseudo-random': ['off'],\n 'sonarjs/public-static-readonly': ['warn'],\n 'sonarjs/post-message': ['off'],\n 'sonarjs/different-types-comparison': ['off'],\n // Owned by simple-import-sort/imports\n 'sonarjs/no-alphabetical-sort': ['off'],\n 'sonarjs/no-identical-functions': ['warn'],\n 'sonarjs/no-empty-test-file': ['off'],\n 'sonarjs/no-dead-store': ['warn'],\n 'sonarjs/no-redundant-jump': ['warn'],\n 'sonarjs/void-use': ['off'],\n\n // Owned by complexity\n 'sonarjs/cognitive-complexity': ['off'],\n\n // Owned by @typescript-eslint/no-unused-vars\n 'sonarjs/unused-import': ['off'],\n 'sonarjs/no-unused-vars': ['off'],\n\n 'sonarjs/no-commented-code': ['off'],\n 'sonarjs/prefer-single-boolean-return': ['off'],\n 'sonarjs/redundant-type-aliases': ['off'],\n },\n}\n", "import type { Linter } from 'eslint'\n\nexport interface RuleOwnershipGroup {\n readonly description: string\n readonly disabled: readonly string[]\n readonly owner: string\n}\n\nexport const RULE_OWNERSHIP_GROUPS: readonly RuleOwnershipGroup[] = [\n {\n description: 'Class member ordering with alphabetical within-group sorting',\n owner: '@typescript-eslint/member-ordering',\n disabled: ['unicorn/consistent-class-member-order'],\n },\n {\n description: 'Callback nesting depth limit',\n owner: 'max-nested-callbacks',\n disabled: ['unicorn/max-nested-calls'],\n },\n {\n description: 'Spread over Function.prototype.apply',\n owner: 'unicorn/prefer-spread',\n disabled: ['prefer-spread'],\n },\n {\n description: 'Semicolon style',\n owner: '@stylistic/semi',\n disabled: ['semi'],\n },\n {\n description: 'Quote style',\n owner: '@stylistic/quotes',\n disabled: ['quotes'],\n },\n {\n description: 'Unused variable detection with TypeScript support',\n owner: '@typescript-eslint/no-unused-vars',\n disabled: ['no-unused-vars', 'sonarjs/no-unused-vars'],\n },\n {\n description: 'Escape sequence casing in strings and regexes',\n owner: 'unicorn/escape-case',\n disabled: ['no-useless-escape'],\n },\n {\n description: 'Negated condition style',\n owner: 'unicorn/no-negated-condition',\n disabled: ['no-negated-condition'],\n },\n {\n description: 'Nested ternary restrictions',\n owner: 'unicorn/no-unnecessary-nested-ternary',\n disabled: ['no-nested-ternary', 'unicorn/no-nested-ternary'],\n },\n {\n description: 'Cyclomatic complexity per function',\n owner: 'complexity',\n disabled: ['sonarjs/cognitive-complexity'],\n },\n {\n description: 'Unused import detection',\n owner: '@typescript-eslint/no-unused-vars',\n disabled: ['sonarjs/unused-import'],\n },\n {\n description: 'Import statement ordering',\n owner: 'simple-import-sort/imports',\n disabled: ['import-x/order', 'sonarjs/no-alphabetical-sort'],\n },\n] as const\n\ntype RuleSetting = Linter.RuleEntry<unknown[]> | undefined\n\nfunction isRuleEnabled(setting: RuleSetting): boolean {\n if (setting === undefined) {\n return false\n }\n\n if (setting === 'off' || setting === 0) {\n return false\n }\n\n if (Array.isArray(setting) && setting[0] === 'off') {\n return false\n }\n\n return true\n}\n\nexport function mergeConfigRules(configs: readonly Linter.Config[]): Record<string, RuleSetting> {\n const merged: Record<string, RuleSetting> = {}\n\n for (const entry of configs) {\n if (!entry.rules) {\n continue\n }\n\n Object.assign(merged, entry.rules)\n }\n\n return merged\n}\n\nexport interface RuleOwnershipConflict {\n readonly conflictingRule: string\n readonly conflictingSetting: RuleSetting\n readonly description: string\n readonly owner: string\n readonly ownerSetting: RuleSetting\n}\n\nexport function findRuleOwnershipConflicts(\n rules: Record<string, RuleSetting>,\n): RuleOwnershipConflict[] {\n const conflicts: RuleOwnershipConflict[] = []\n\n for (const group of RULE_OWNERSHIP_GROUPS) {\n const ownerSetting = rules[group.owner]\n if (!isRuleEnabled(ownerSetting)) {\n continue\n }\n\n for (const conflictingRule of group.disabled) {\n if (isRuleEnabled(rules[conflictingRule])) {\n conflicts.push({\n description: group.description,\n owner: group.owner,\n conflictingRule,\n ownerSetting,\n conflictingSetting: rules[conflictingRule],\n })\n }\n }\n }\n\n return conflicts\n}\n\nexport function assertNoRuleOwnershipConflicts(configs: readonly Linter.Config[]): void {\n const conflicts = findRuleOwnershipConflicts(mergeConfigRules(configs))\n\n if (conflicts.length === 0) {\n return\n }\n\n const details = conflicts.map(conflict => (\n `${conflict.owner} conflicts with ${conflict.conflictingRule} (${conflict.description})`\n )).join('\\n')\n\n throw new Error(`ESLint rule ownership conflicts detected:\\n${details}`)\n}\n", "import esStylistic from '@stylistic/eslint-plugin'\nimport tsPlugin from '@typescript-eslint/eslint-plugin'\nimport type { ESLint, Linter } from 'eslint'\n\nimport {\n scopeConfigs,\n scriptFiles,\n scriptLanguageOptions,\n typeCheckedLanguageOptions,\n} from '../shared.ts'\n\nconst flatConfigs = tsPlugin.configs as Record<string, Linter.Config[]>\n\nconst memberOrderingRule: Linter.RuleEntry = [\n 'warn',\n {\n default: {\n memberTypes: [\n 'signature',\n 'call-signature',\n 'public-static-field',\n 'protected-static-field',\n 'private-static-field',\n 'public-decorated-field',\n 'protected-decorated-field',\n 'private-decorated-field',\n 'public-instance-field',\n 'protected-instance-field',\n 'private-instance-field',\n 'public-abstract-field',\n 'protected-abstract-field',\n 'public-field',\n 'protected-field',\n 'private-field',\n 'static-field',\n 'instance-field',\n 'abstract-field',\n 'decorated-field',\n 'field',\n 'public-constructor',\n 'protected-constructor',\n 'private-constructor',\n 'constructor',\n ['public-static-get', 'public-static-set'],\n ['protected-static-get', 'protected-static-set'],\n ['private-static-get', 'private-static-set'],\n ['public-decorated-get', 'public-decorated-set'],\n ['protected-decorated-get', 'protected-decorated-set'],\n ['private-decorated-get', 'private-decorated-set'],\n ['public-instance-get', 'public-instance-set'],\n ['protected-instance-get', 'protected-instance-set'],\n ['private-instance-get', 'private-instance-set'],\n ['public-abstract-get', 'public-abstract-set'],\n ['protected-abstract-get', 'protected-abstract-set'],\n ['public-get', 'public-set'],\n ['protected-get', 'protected-set'],\n ['private-get', 'private-set'],\n ['static-get', 'static-set'],\n ['instance-get', 'instance-set'],\n ['abstract-get', 'abstract-set'],\n ['decorated-get', 'decorated-set'],\n 'get',\n 'set',\n 'public-static-method',\n 'protected-static-method',\n 'private-static-method',\n 'public-decorated-method',\n 'protected-decorated-method',\n 'private-decorated-method',\n 'public-instance-method',\n 'protected-instance-method',\n 'private-instance-method',\n 'public-abstract-method',\n 'protected-abstract-method',\n 'public-method',\n 'protected-method',\n 'private-method',\n 'static-method',\n 'instance-method',\n 'abstract-method',\n 'decorated-method',\n 'method',\n ],\n order: 'alphabetically',\n },\n },\n]\n\nfunction createCorrectnessOverride(languageOptions: Linter.LanguageOptions): Linter.Config {\n return {\n files: scriptFiles,\n languageOptions,\n rules: {\n '@typescript-eslint/no-unused-vars': [\n 'warn',\n {\n argsIgnorePattern: '^_', varsIgnorePattern: '^_', ignoreRestSiblings: true,\n },\n ],\n '@typescript-eslint/require-await': 'off',\n '@typescript-eslint/explicit-module-boundary-types': 'off',\n '@typescript-eslint/no-empty-object-type': ['off'],\n '@typescript-eslint/triple-slash-reference': ['off'],\n // Tier 3 opinionated \u2014 enabled in opinionatedConfig\n '@typescript-eslint/strict-boolean-expressions': ['off'],\n // Owned by @stylistic/quotes\n 'quotes': ['off'],\n // Owned by @stylistic/semi\n 'semi': ['off'],\n // Owned by unicorn/prefer-spread\n 'prefer-spread': ['off'],\n 'require-await': 'off',\n },\n }\n}\n\nfunction createConsistencyOverride(languageOptions: Linter.LanguageOptions): Linter.Config {\n return {\n files: scriptFiles,\n languageOptions,\n plugins: { '@stylistic': esStylistic as unknown as ESLint.Plugin },\n rules: {\n ...esStylistic.configs.recommended.rules,\n '@typescript-eslint/no-empty-function': 'warn',\n '@stylistic/eol-last': 'warn',\n '@typescript-eslint/explicit-member-accessibility': ['warn', { accessibility: 'no-public' }],\n '@stylistic/brace-style': ['warn', '1tbs', { allowSingleLine: true }],\n '@stylistic/quotes': ['warn', 'single', { avoidEscape: true }],\n '@typescript-eslint/consistent-type-imports': ['warn', { fixStyle: 'separate-type-imports', prefer: 'type-imports' }],\n '@stylistic/object-property-newline': ['warn', { allowAllPropertiesOnSameLine: true }],\n '@stylistic/function-call-argument-newline': ['warn', 'consistent'],\n '@stylistic/function-paren-newline': ['warn', 'multiline-arguments'],\n '@stylistic/member-delimiter-style': [\n 'error',\n {\n multiline: {\n delimiter: 'none',\n requireLast: true,\n },\n singleline: {\n delimiter: 'semi',\n requireLast: false,\n },\n },\n ],\n '@stylistic/object-curly-newline': ['warn', {\n ObjectExpression: {\n multiline: true, minProperties: 3, consistent: false,\n },\n ObjectPattern: {\n multiline: true, minProperties: 3, consistent: false,\n },\n ImportDeclaration: {\n multiline: true, minProperties: 3, consistent: false,\n },\n ExportDeclaration: {\n multiline: true, minProperties: 3, consistent: false,\n },\n }],\n '@stylistic/max-len': ['warn', { code: 200 }],\n 'no-restricted-syntax': [\n 'warn',\n {\n selector: 'TSEnumDeclaration',\n message: 'Enums are disallowed. Consider using a union of string literals or a `const` object instead.',\n },\n ],\n '@typescript-eslint/member-ordering': memberOrderingRule,\n },\n }\n}\n\nexport const typescriptDelegationConfig: Linter.Config = {\n files: scriptFiles,\n rules: {\n // Owned by unicorn/prefer-spread \u2014 stylistic presets may re-enable the core rule\n 'prefer-spread': 'off',\n // Owned by @stylistic/semi\n 'semi': 'off',\n // Owned by @stylistic/quotes\n 'quotes': 'off',\n },\n}\n\nexport const typescriptCorrectnessConfig: Linter.Config[] = [\n ...scopeConfigs(flatConfigs['flat/recommended'], { files: scriptFiles, languageOptions: scriptLanguageOptions }),\n createCorrectnessOverride(scriptLanguageOptions),\n]\n\nexport const typescriptConsistencyConfig: Linter.Config[] = [\n ...scopeConfigs(flatConfigs['flat/stylistic'], { files: scriptFiles, languageOptions: scriptLanguageOptions }),\n createConsistencyOverride(scriptLanguageOptions),\n]\n\nexport const typescriptTypeCheckedCorrectnessConfig: Linter.Config[] = [\n ...scopeConfigs(flatConfigs['flat/recommended-type-checked'], { files: scriptFiles, languageOptions: typeCheckedLanguageOptions }),\n createCorrectnessOverride(typeCheckedLanguageOptions),\n {\n files: scriptFiles,\n languageOptions: typeCheckedLanguageOptions,\n rules: { '@typescript-eslint/no-deprecated': 'warn' },\n },\n]\n\nexport const typescriptTypeCheckedConsistencyConfig: Linter.Config[] = [\n ...scopeConfigs(flatConfigs['flat/stylistic-type-checked'], { files: scriptFiles, languageOptions: typeCheckedLanguageOptions }),\n createConsistencyOverride(typeCheckedLanguageOptions),\n]\n\nexport const typescriptConfig: Linter.Config[] = [\n ...typescriptCorrectnessConfig,\n ...typescriptConsistencyConfig,\n typescriptDelegationConfig,\n]\n\nexport const typescriptTypeCheckedConfig: Linter.Config[] = [\n ...typescriptTypeCheckedCorrectnessConfig,\n ...typescriptTypeCheckedConsistencyConfig,\n typescriptDelegationConfig,\n]\n", "import type { Linter } from 'eslint'\n\nimport { scriptFiles } from '../shared.ts'\nimport { unicornV66MigrationQueue } from '../unicorn/index.ts'\n\nconst filenameCaseRuleOptions = {\n cases: {\n kebabCase: true,\n pascalCase: true,\n },\n}\n\nfunction filenameCaseRule(severity: 'error' | 'warn'): Linter.RuleEntry {\n return [severity, filenameCaseRuleOptions]\n}\n\nexport const opinionatedLayerConfig: Linter.Config = {\n files: scriptFiles,\n rules: {\n '@typescript-eslint/strict-boolean-expressions': 'warn',\n 'unicorn/filename-case': filenameCaseRule('warn'),\n 'unicorn/no-await-expression-member': 'warn',\n 'unicorn/number-literal-case': 'warn',\n 'workspaces/no-relative-imports': 'warn',\n 'workspaces/require-dependency': 'warn',\n },\n}\n\nexport const strictPromotionRules: Linter.Config['rules'] = {\n '@stylistic/eol-last': 'error',\n '@typescript-eslint/no-empty-function': 'error',\n '@typescript-eslint/no-deprecated': 'error',\n 'array-element-newline': 'error',\n 'import-x/no-absolute-path': 'error',\n 'import-x/no-cycle': 'error',\n 'import-x/no-restricted-paths': 'error',\n 'import-x/no-self-import': 'error',\n 'import-x/no-useless-path-segments': 'error',\n 'no-restricted-syntax': 'error',\n 'simple-import-sort/exports': 'error',\n 'simple-import-sort/imports': 'error',\n 'sonarjs/deprecation': 'error',\n\n 'sonarjs/no-dead-store': 'error',\n 'sonarjs/no-identical-functions': 'error',\n 'sonarjs/no-redundant-jump': 'error',\n 'sonarjs/public-static-readonly': 'error',\n 'unicorn/no-useless-undefined': 'error',\n ...Object.fromEntries(unicornV66MigrationQueue.map(rule => [rule, 'error'])),\n 'unicorn/filename-case': filenameCaseRule('error'),\n ...Object.fromEntries([\n '@typescript-eslint/consistent-type-imports',\n '@typescript-eslint/explicit-member-accessibility',\n '@typescript-eslint/member-ordering',\n '@stylistic/brace-style',\n '@stylistic/function-call-argument-newline',\n '@stylistic/function-paren-newline',\n '@stylistic/object-curly-newline',\n '@stylistic/object-property-newline',\n '@stylistic/quotes',\n '@stylistic/max-len',\n 'unicorn/no-await-expression-member',\n 'unicorn/number-literal-case',\n 'workspaces/no-relative-imports',\n 'workspaces/require-dependency',\n '@typescript-eslint/strict-boolean-expressions',\n ].map(rule => [rule, 'error'])),\n}\n\nexport const strictLayerConfig: Linter.Config = {\n files: scriptFiles,\n rules: strictPromotionRules,\n}\n", "import type { Linter } from 'eslint'\n\nimport {\n bestPracticesCoreConfig,\n correctnessCoreConfig,\n} from '../core/index.ts'\nimport { importConfig } from '../import/index.ts'\nimport { markdownConfig } from '../markdown/index.ts'\nimport { consistencyRulesConfig } from '../rules/index.ts'\nimport { sonarConfig } from '../sonar/index.ts'\nimport {\n typescriptConsistencyConfig,\n typescriptCorrectnessConfig,\n typescriptDelegationConfig,\n typescriptTypeCheckedConsistencyConfig,\n typescriptTypeCheckedCorrectnessConfig,\n} from '../typescript/index.ts'\nimport { opinionatedLayerConfig, strictLayerConfig } from './opinionated.ts'\n\nfunction mergeTierConfigs(...parts: readonly Linter.Config[][]): Linter.Config[] {\n return parts.flat()\n}\n\n/**\n * Tier 0 \u2014 correctness: type safety, bug prevention, import restrictions.\n * Each subsequent tier is a superset of the previous tier.\n */\nexport const configTier0Correctness: Linter.Config[] = mergeTierConfigs(\n markdownConfig,\n correctnessCoreConfig,\n typescriptCorrectnessConfig,\n)\n\nexport const configTier0CorrectnessTypeChecked: Linter.Config[] = mergeTierConfigs(\n markdownConfig,\n correctnessCoreConfig,\n typescriptTypeCheckedCorrectnessConfig,\n)\n\n/**\n * Tier 1 \u2014 consistency: Tier 0 plus formatting, member ordering, and complexity limits.\n */\nexport const configTier1Consistency: Linter.Config[] = mergeTierConfigs(\n configTier0Correctness,\n [consistencyRulesConfig],\n typescriptConsistencyConfig,\n [typescriptDelegationConfig],\n)\n\nexport const configTier1ConsistencyTypeChecked: Linter.Config[] = mergeTierConfigs(\n configTier0CorrectnessTypeChecked,\n [consistencyRulesConfig],\n typescriptTypeCheckedConsistencyConfig,\n [typescriptDelegationConfig],\n)\n\n/**\n * Tier 2 \u2014 best practices: Tier 1 plus unicorn and import validation.\n * This is the recommended default for XY Labs repositories.\n */\nexport const configTier2BestPractices: Linter.Config[] = mergeTierConfigs(\n configTier1Consistency,\n bestPracticesCoreConfig,\n importConfig,\n)\n\nexport const configTier2BestPracticesTypeChecked: Linter.Config[] = mergeTierConfigs(\n configTier1ConsistencyTypeChecked,\n bestPracticesCoreConfig,\n importConfig,\n)\n\n/**\n * Tier 3 \u2014 opinionated: Tier 2 plus stricter optional rules (still mostly warnings).\n */\nexport const configTier3Opinionated: Linter.Config[] = mergeTierConfigs(\n configTier2BestPractices,\n [opinionatedLayerConfig],\n)\n\nexport const configTier3OpinionatedTypeChecked: Linter.Config[] = mergeTierConfigs(\n configTier2BestPracticesTypeChecked,\n [opinionatedLayerConfig],\n)\n\n/**\n * Tier 4 \u2014 strict: Tier 3 plus SonarJS and promotion of warnings to errors.\n */\nexport const configTier4Strict: Linter.Config[] = mergeTierConfigs(\n configTier3Opinionated,\n [sonarConfig, strictLayerConfig],\n)\n\nexport const configTier4StrictTypeChecked: Linter.Config[] = mergeTierConfigs(\n configTier3OpinionatedTypeChecked,\n [sonarConfig, strictLayerConfig],\n)\n\n/** @deprecated Use `configTier2BestPractices` instead. */\nexport const recommendedConfig: Linter.Config[] = configTier2BestPractices\n\n/** @deprecated Use `configTier2BestPracticesTypeChecked` instead. */\nexport const recommendedTypeCheckedConfig: Linter.Config[] = configTier2BestPracticesTypeChecked\n\n/** Compatibility alias \u2014 identical to `configTier2BestPracticesTypeChecked`. */\nexport const config: Linter.Config[] = configTier2BestPracticesTypeChecked\n", "import js from '@eslint/js'\nimport json from '@eslint/json'\nimport markdown from '@eslint/markdown'\nimport esStylistic from '@stylistic/eslint-plugin'\nimport tsPlugin from '@typescript-eslint/eslint-plugin'\nimport type { ESLint } from 'eslint'\nimport importPlugin from 'eslint-plugin-import-x'\nimport simpleImportSort from 'eslint-plugin-simple-import-sort'\nimport sonarjs from 'eslint-plugin-sonarjs'\nimport unicornPlugin from 'eslint-plugin-unicorn'\nimport workspacesPlugin from 'eslint-plugin-workspaces'\n\nconst compareStrings = (left: string, right: string): number => left.localeCompare(right)\n\nexport interface PluginRuleSnapshot {\n readonly plugin: string\n readonly rules: readonly string[]\n readonly source: string\n}\n\nfunction sortedRuleNames(rules: Record<string, unknown> | undefined): string[] {\n if (!rules) {\n return []\n }\n\n return Object.keys(rules).toSorted(compareStrings)\n}\n\nfunction sortedRuleNamesFromConfigs(\n configs: { rules?: Record<string, unknown> }[] | undefined,\n): string[] {\n if (!configs) {\n return []\n }\n\n const merged: Record<string, unknown> = {}\n for (const entry of configs) {\n if (entry.rules) {\n Object.assign(merged, entry.rules)\n }\n }\n\n return sortedRuleNames(merged)\n}\n\nfunction pluginRuleNames(plugin: ESLint.Plugin): string[] {\n if (!plugin.rules) {\n return []\n }\n\n const prefix = typeof plugin.meta?.name === 'string'\n ? plugin.meta.name.replace(/^eslint-plugin-/, '').replace(/^@eslint\\//, '')\n : 'unknown'\n\n return Object.keys(plugin.rules)\n .toSorted(compareStrings)\n .map(ruleName => `${prefix}/${ruleName}`)\n}\n\nexport function collectPluginRuleSnapshots(): PluginRuleSnapshot[] {\n const unicornRecommended = unicornPlugin.configs['flat/recommended'] as undefined | { rules?: Record<string, unknown> }\n const importRecommended = importPlugin.flatConfigs.recommended as { rules?: Record<string, unknown> }\n const flatConfigs = tsPlugin.configs as Record<string, { rules?: Record<string, unknown> }[]>\n const workspacesRecommended = (\n workspacesPlugin as { configs: { recommended: { rules?: Record<string, unknown> } } }\n ).configs.recommended\n\n return [\n {\n plugin: '@eslint/js',\n rules: sortedRuleNames(js.configs.recommended.rules),\n source: 'configs.recommended',\n },\n {\n plugin: '@eslint/json',\n rules: pluginRuleNames(json),\n source: 'plugin.rules',\n },\n {\n plugin: '@eslint/markdown',\n rules: sortedRuleNames(\n (markdown.configs.recommended as { rules?: Record<string, unknown> }[])[0]?.rules,\n ),\n source: 'configs.recommended',\n },\n {\n plugin: '@stylistic/eslint-plugin',\n rules: sortedRuleNames(esStylistic.configs.recommended.rules),\n source: 'configs.recommended',\n },\n {\n plugin: '@typescript-eslint/eslint-plugin',\n rules: sortedRuleNamesFromConfigs(flatConfigs['flat/recommended-type-checked']),\n source: 'configs.flat/recommended-type-checked',\n },\n {\n plugin: '@typescript-eslint/eslint-plugin',\n rules: sortedRuleNamesFromConfigs(flatConfigs['flat/stylistic-type-checked']),\n source: 'configs.flat/stylistic-type-checked',\n },\n {\n plugin: 'eslint-plugin-import-x',\n rules: sortedRuleNames(importRecommended.rules),\n source: 'flatConfigs.recommended',\n },\n {\n plugin: 'eslint-plugin-import-x',\n rules: sortedRuleNames(importPlugin.flatConfigs.typescript.rules),\n source: 'flatConfigs.typescript',\n },\n {\n plugin: 'eslint-plugin-simple-import-sort',\n rules: pluginRuleNames(simpleImportSort),\n source: 'plugin.rules',\n },\n {\n plugin: 'eslint-plugin-sonarjs',\n rules: pluginRuleNames(sonarjs),\n source: 'plugin.rules',\n },\n {\n plugin: 'eslint-plugin-unicorn',\n rules: sortedRuleNames(unicornRecommended?.rules),\n source: 'configs.flat/recommended',\n },\n {\n plugin: 'eslint-plugin-workspaces',\n rules: sortedRuleNames(workspacesRecommended.rules),\n source: 'configs.recommended',\n },\n ]\n}\n\nexport function serializePluginRuleSnapshots(snapshots: readonly PluginRuleSnapshot[]): string {\n return `${JSON.stringify(snapshots, null, 2)}\\n`\n}\n", "import type { Linter } from 'eslint'\n\nimport {\n json5Config, jsoncConfig,\n jsonConfig,\n} from './json/index.ts'\nimport { markdownConfig } from './markdown/index.ts'\n\nexport const docsConfig: Linter.Config[] = [\n ...markdownConfig,\n jsonConfig,\n jsoncConfig,\n json5Config,\n]\n\nexport {\n bestPracticesCoreConfig,\n coreConfig,\n correctnessCoreConfig,\n} from './core/index.ts'\nexport { ignores } from './ignores.ts'\nexport { importConfig } from './import/index.ts'\nexport {\n json5Config, jsoncConfig,\n jsonConfig,\n} from './json/index.ts'\nexport { markdownConfig } from './markdown/index.ts'\nexport {\n consistencyRulesConfig,\n correctnessRulesConfig,\n rulesConfig,\n srcImportsConfig,\n} from './rules/index.ts'\nexport { sonarConfig } from './sonar/index.ts'\nexport {\n assertNoRuleOwnershipConflicts,\n findRuleOwnershipConflicts,\n mergeConfigRules,\n RULE_OWNERSHIP_GROUPS,\n} from './tiers/conflicts.ts'\nexport * from './tiers/index.ts'\nexport {\n opinionatedLayerConfig,\n strictLayerConfig,\n strictPromotionRules,\n} from './tiers/opinionated.ts'\nexport {\n collectPluginRuleSnapshots,\n serializePluginRuleSnapshots,\n} from './tiers/plugin-rules.ts'\nexport {\n typescriptConfig,\n typescriptConsistencyConfig,\n typescriptCorrectnessConfig,\n typescriptDelegationConfig,\n typescriptTypeCheckedConfig,\n typescriptTypeCheckedConsistencyConfig,\n typescriptTypeCheckedCorrectnessConfig,\n} from './typescript/index.ts'\nexport {\n unicornConfig,\n unicornV66MigrationQueue,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n unicornV66NewRules,\n} from './unicorn/index.ts'\nexport { workspacesConfig } from './workspaces/index.ts'\n"],
5
+ "mappings": "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",
6
6
  "names": ["config", "restrictedImportPaths", "js", "json", "markdown", "esStylistic", "tsPlugin", "importPlugin", "simpleImportSort", "sonarjs", "unicornPlugin", "workspacesPlugin", "flatConfigs"]
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"opinionated.d.ts","sourceRoot":"","sources":["../../../src/tiers/opinionated.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAKpC,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAU3C,CAAA;AAED,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAuCvD,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAGtC,CAAA"}
1
+ {"version":3,"file":"opinionated.d.ts","sourceRoot":"","sources":["../../../src/tiers/opinionated.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAgBpC,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAU3C,CAAA;AAED,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAuCvD,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAGtC,CAAA"}
@@ -754,11 +754,20 @@ var typescriptTypeCheckedConfig = [
754
754
  ];
755
755
 
756
756
  // src/tiers/opinionated.ts
757
+ var filenameCaseRuleOptions = {
758
+ cases: {
759
+ kebabCase: true,
760
+ pascalCase: true
761
+ }
762
+ };
763
+ function filenameCaseRule(severity) {
764
+ return [severity, filenameCaseRuleOptions];
765
+ }
757
766
  var opinionatedLayerConfig = {
758
767
  files: scriptFiles,
759
768
  rules: {
760
769
  "@typescript-eslint/strict-boolean-expressions": "warn",
761
- "unicorn/filename-case": ["warn", { case: "kebabCase" }],
770
+ "unicorn/filename-case": filenameCaseRule("warn"),
762
771
  "unicorn/no-await-expression-member": "warn",
763
772
  "unicorn/number-literal-case": "warn",
764
773
  "workspaces/no-relative-imports": "warn",
@@ -785,6 +794,7 @@ var strictPromotionRules = {
785
794
  "sonarjs/public-static-readonly": "error",
786
795
  "unicorn/no-useless-undefined": "error",
787
796
  ...Object.fromEntries(unicornV66MigrationQueue.map((rule) => [rule, "error"])),
797
+ "unicorn/filename-case": filenameCaseRule("error"),
788
798
  ...Object.fromEntries([
789
799
  "@typescript-eslint/consistent-type-imports",
790
800
  "@typescript-eslint/explicit-member-accessibility",
@@ -796,7 +806,6 @@ var strictPromotionRules = {
796
806
  "@stylistic/object-property-newline",
797
807
  "@stylistic/quotes",
798
808
  "@stylistic/max-len",
799
- "unicorn/filename-case",
800
809
  "unicorn/no-await-expression-member",
801
810
  "unicorn/number-literal-case",
802
811
  "workspaces/no-relative-imports",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/json/index.ts", "../../src/ignores.ts", "../../src/markdown/index.ts", "../../src/shared.ts", "../../src/core/index.ts", "../../src/rules/consistency.ts", "../../src/rules/correctness.ts", "../../src/rules/index.ts", "../../src/unicorn/index.ts", "../../src/workspaces/index.ts", "../../src/import/index.ts", "../../src/sonar/index.ts", "../../src/tiers/conflicts.ts", "../../src/typescript/index.ts", "../../src/tiers/opinionated.ts", "../../src/tiers/index.ts", "../../src/tiers/plugin-rules.ts", "../../src/index.ts"],
4
- "sourcesContent": ["import json from '@eslint/json'\nimport type { ESLint, Linter } from 'eslint'\n\nimport { ignores } from '../ignores.ts'\n\nexport const jsonConfig: Linter.Config = {\n ignores,\n files: ['**/*.json'],\n plugins: { json: json as unknown as ESLint.Plugin },\n language: 'json/json',\n rules: { 'json/no-duplicate-keys': ['error'] },\n}\n\nexport const jsoncConfig: Linter.Config = {\n ignores,\n files: ['**/*.jsonc'],\n plugins: { json: json as unknown as ESLint.Plugin },\n language: 'json/jsonc',\n rules: { 'json/no-duplicate-keys': ['error'] },\n}\n\nexport const json5Config: Linter.Config = {\n ignores,\n files: ['**/*.json5'],\n plugins: { json: json as unknown as ESLint.Plugin },\n language: 'json/json5',\n rules: { 'json/no-duplicate-keys': ['error'] },\n}\n", "export const ignores = [\n '.eslintcache',\n '.github',\n '.husky',\n '.jest',\n '.next',\n '.vscode',\n '.yarn',\n '**/dist',\n '**/docs',\n '**/node_modules',\n 'coverage',\n 'cypress',\n 'public',\n 'storybook-static',\n 'tmp',\n 'yarn-error.log',\n 'yarn.lock',\n]\n", "import markdown from '@eslint/markdown'\nimport type { Linter } from 'eslint'\n\nimport { scopeConfigs } from '../shared.ts'\n\nexport const markdownConfig: Linter.Config[] = scopeConfigs(markdown.configs.recommended)\n", "import tsParser from '@typescript-eslint/parser'\nimport type { Linter } from 'eslint'\n\nimport { ignores } from './ignores.ts'\n\nexport const scriptFiles = [\n '**/*.ts',\n '**/*.tsx',\n '**/*.mts',\n '**/*.cts',\n '**/*.js',\n '**/*.jsx',\n '**/*.cjs',\n '**/*.mjs',\n '**/*.d.ts',\n '**/*.d.tsx',\n '**/*.d.jsx',\n '**/*.d.mts',\n '**/*.d.cts',\n]\n\nexport const scriptLanguageOptions: Linter.LanguageOptions = {\n ecmaVersion: 'latest',\n parser: tsParser,\n parserOptions: { ecmaFeatures: { jsx: true } },\n sourceType: 'module',\n}\n\nexport const typeCheckedLanguageOptions: Linter.LanguageOptions = {\n ...scriptLanguageOptions,\n parserOptions: {\n ...scriptLanguageOptions.parserOptions,\n projectService: true,\n tsconfigRootDir: process.cwd(),\n },\n}\n\nfunction unique(values: (string | undefined)[]): string[] {\n return [...new Set(values.filter((value): value is string => value !== undefined))]\n}\n\nfunction mergeLanguageOptions(\n base: Linter.LanguageOptions | undefined,\n next: Linter.LanguageOptions | undefined,\n): Linter.LanguageOptions | undefined {\n if (!base) return next\n if (!next) return base\n\n return {\n ...base,\n ...next,\n globals: {\n ...base.globals,\n ...next.globals,\n },\n parserOptions: {\n ...base.parserOptions,\n ...next.parserOptions,\n },\n }\n}\n\nexport function scopeConfig(\n config: Linter.Config,\n {\n files,\n languageOptions,\n }: {\n files?: string[]\n languageOptions?: Linter.LanguageOptions\n } = {},\n): Linter.Config {\n const merged = mergeLanguageOptions(languageOptions, config.languageOptions)\n const result: Linter.Config = {\n ...config,\n files: files ?? config.files,\n ignores: unique([...(config.ignores ?? []), ...ignores]),\n }\n if (merged) {\n result.languageOptions = merged\n }\n return result\n}\n\nexport function scopeConfigs(\n configs: Linter.Config | Linter.Config[],\n options: {\n files?: string[]\n languageOptions?: Linter.LanguageOptions\n } = {},\n): Linter.Config[] {\n return (Array.isArray(configs) ? configs : [configs]).map(config => scopeConfig(config, options))\n}\n", "import js from '@eslint/js'\nimport type { Linter } from 'eslint'\n\nimport {\n consistencyRulesConfig,\n correctnessRulesConfig,\n srcImportsConfig,\n} from '../rules/index.ts'\nimport {\n scopeConfig, scriptFiles, scriptLanguageOptions,\n} from '../shared.ts'\nimport { unicornConfig } from '../unicorn/index.ts'\nimport { workspacesConfig } from '../workspaces/index.ts'\n\nexport const correctnessCoreConfig: Linter.Config[] = [\n scopeConfig(js.configs.recommended, { files: scriptFiles, languageOptions: scriptLanguageOptions }),\n correctnessRulesConfig,\n srcImportsConfig,\n workspacesConfig,\n]\n\nexport const bestPracticesCoreConfig: Linter.Config[] = [\n scopeConfig(unicornConfig, { files: scriptFiles }),\n]\n\nexport const coreConfig: Linter.Config[] = [\n ...correctnessCoreConfig,\n consistencyRulesConfig,\n ...bestPracticesCoreConfig,\n]\n", "import type { Linter } from 'eslint'\n\nimport { ignores } from '../ignores.ts'\n\nexport const consistencyRulesConfig: Linter.Config = {\n ignores,\n rules: {\n 'complexity': ['error', 18],\n 'max-depth': ['error', 6],\n 'max-lines': [\n 'error',\n {\n max: 512,\n skipBlankLines: true,\n },\n ],\n 'array-element-newline': ['warn', 'consistent'],\n // Owned by max-nested-callbacks \u2014 measures callback nesting, not call depth\n 'max-nested-callbacks': ['error', 6],\n 'max-statements': ['error', 32],\n 'no-tabs': ['error'],\n },\n}\n", "import type { Linter } from 'eslint'\n\nimport { ignores } from '../ignores.ts'\n\nconst restrictedImportPaths = [\n './index.ts',\n '../index.ts',\n '../../index.ts',\n '../../../index.ts',\n '../../../../index.ts',\n '../../../../../index.ts',\n '../../../../../../index.ts',\n '../../../../../../../index.ts',\n]\n\nexport const correctnessRulesConfig: Linter.Config = {\n ignores,\n rules: {\n // Owned by @typescript-eslint/no-unused-vars\n 'no-unused-vars': 'off',\n // Owned by unicorn/escape-case\n 'no-useless-escape': 'off',\n // Owned by unicorn/prefer-spread\n 'prefer-spread': 'off',\n 'no-restricted-imports': [\n 'error',\n { paths: restrictedImportPaths },\n ],\n },\n}\n", "import type { Linter } from 'eslint'\n\nimport { ignores } from '../ignores.ts'\nimport { scriptFiles } from '../shared.ts'\nimport { consistencyRulesConfig } from './consistency.ts'\nimport { correctnessRulesConfig } from './correctness.ts'\n\nconst restrictedImportPaths = [\n './index.ts',\n '../index.ts',\n '../../index.ts',\n '../../../index.ts',\n '../../../../index.ts',\n '../../../../../index.ts',\n '../../../../../../index.ts',\n '../../../../../../../index.ts',\n]\n\nconst restrictedSrcImportPatterns = [\n {\n group: [\n '**/src/**',\n '**/src',\n 'src/**',\n ],\n message: 'Do not import from another package\\'s src folder. Import the package by its public entry point instead.',\n },\n]\n\nexport { consistencyRulesConfig } from './consistency.ts'\nexport { correctnessRulesConfig } from './correctness.ts'\n\nexport const rulesConfig: Linter.Config = {\n ignores,\n rules: {\n ...correctnessRulesConfig.rules,\n ...consistencyRulesConfig.rules,\n },\n}\n\n// Source files (under src/) should never reference a src/ path \u2014 own-package files\n// are reached via ./ or ../, and other packages via their published name. Scoped to\n// src/ so test specs (which legitimately import their own ../../src/...) are unaffected.\nexport const srcImportsConfig: Linter.Config = {\n files: scriptFiles.map(pattern => `**/src/${pattern}`),\n ignores,\n rules: {\n 'no-restricted-imports': [\n 'error',\n {\n paths: restrictedImportPaths,\n patterns: restrictedSrcImportPatterns,\n },\n ],\n },\n}\n", "import type { ESLint, Linter } from 'eslint'\nimport unicornPlugin from 'eslint-plugin-unicorn'\n\n// New recommended rules in eslint-plugin-unicorn v66 \u2014 warnings during adoption.\n// Promote individual rules to 'error' once the org has cleared existing violations.\n// Rules permanently disabled for ownership conflicts are listed separately below.\nexport const unicornV66MigrationQueue = [\n 'unicorn/class-reference-in-static-methods',\n 'unicorn/comment-content',\n 'unicorn/consistent-export-decorator-position',\n 'unicorn/consistent-optional-chaining',\n 'unicorn/explicit-timer-delay',\n 'unicorn/no-array-reverse',\n 'unicorn/no-array-sort',\n 'unicorn/no-break-in-nested-loop',\n 'unicorn/no-computed-property-existence-check',\n 'unicorn/no-confusing-array-with',\n 'unicorn/no-declarations-before-early-exit',\n 'unicorn/no-duplicate-loops',\n 'unicorn/no-error-property-assignment',\n 'unicorn/no-for-each',\n 'unicorn/no-global-object-property-assignment',\n 'unicorn/no-incorrect-template-string-interpolation',\n 'unicorn/no-invalid-argument-count',\n 'unicorn/no-mismatched-map-key',\n 'unicorn/no-negated-array-predicate',\n 'unicorn/no-negated-comparison',\n 'unicorn/no-object-methods-with-collections',\n 'unicorn/no-optional-chaining-on-undeclared-variable',\n 'unicorn/no-redundant-comparison',\n 'unicorn/no-return-array-push',\n 'unicorn/no-subtraction-comparison',\n 'unicorn/no-top-level-side-effects',\n 'unicorn/no-undeclared-class-members',\n 'unicorn/no-unnecessary-global-this',\n 'unicorn/no-unnecessary-splice',\n 'unicorn/no-unreadable-new-expression',\n 'unicorn/no-unreadable-object-destructuring',\n 'unicorn/no-unsafe-buffer-conversion',\n 'unicorn/no-unsafe-property-key',\n 'unicorn/no-unsafe-string-replacement',\n 'unicorn/no-useless-boolean-cast',\n 'unicorn/no-useless-concat',\n 'unicorn/no-useless-else',\n 'unicorn/no-useless-recursion',\n 'unicorn/no-useless-template-literals',\n 'unicorn/prefer-add-event-listener-options',\n 'unicorn/prefer-array-from-map',\n 'unicorn/prefer-await',\n 'unicorn/prefer-direct-iteration',\n 'unicorn/prefer-early-return',\n 'unicorn/prefer-global-number-constants',\n 'unicorn/prefer-identifier-import-export-specifiers',\n 'unicorn/prefer-iterable-in-constructor',\n 'unicorn/prefer-iterator-to-array',\n 'unicorn/prefer-location-assign',\n 'unicorn/prefer-minimal-ternary',\n 'unicorn/prefer-number-coercion',\n 'unicorn/prefer-number-is-safe-integer',\n 'unicorn/prefer-object-define-properties',\n 'unicorn/prefer-object-destructuring-defaults',\n 'unicorn/prefer-object-iterable-methods',\n 'unicorn/prefer-path2d',\n 'unicorn/prefer-private-class-fields',\n 'unicorn/prefer-scoped-selector',\n 'unicorn/prefer-short-arrow-method',\n 'unicorn/prefer-simple-sort-comparator',\n 'unicorn/prefer-single-array-predicate',\n 'unicorn/prefer-single-object-destructuring',\n 'unicorn/prefer-smaller-scope',\n 'unicorn/prefer-type-literal-last',\n 'unicorn/prefer-uint8array-base64',\n 'unicorn/prefer-unicode-code-point-escapes',\n 'unicorn/prefer-url-href',\n 'unicorn/require-array-sort-compare',\n 'unicorn/require-proxy-trap-boolean-return',\n] as const\n\n/** @deprecated Use `unicornV66MigrationQueue` instead. */\nexport const unicornV66NewRules = unicornV66MigrationQueue\n\nexport const unicornConfig: Linter.Config = {\n ...(unicornPlugin.configs.recommended as Linter.Config),\n plugins: { unicorn: unicornPlugin as ESLint.Plugin },\n rules: {\n ...(unicornPlugin.configs.recommended as ESLint.ConfigData).rules,\n ...Object.fromEntries(unicornV66MigrationQueue.map(rule => [rule, 'warn'])),\n // Owned by @typescript-eslint/member-ordering\n 'unicorn/consistent-class-member-order': ['off'],\n // Owned by max-nested-callbacks\n 'unicorn/max-nested-calls': ['off'],\n // Naming preference \u2014 too disruptive for org-wide enforcement\n 'unicorn/catch-error-name': ['off'],\n // Closure patterns are valid in our codebase\n 'unicorn/consistent-function-scoping': ['off'],\n // Tier 3 opinionated \u2014 enabled in opinionatedConfig\n 'unicorn/filename-case': ['off'],\n 'unicorn/new-for-builtins': ['off'],\n 'unicorn/no-array-callback-reference': ['off'],\n // Tier 3 opinionated \u2014 enabled in opinionatedConfig\n 'unicorn/no-await-expression-member': ['off'],\n // Owned by unicorn/no-unnecessary-nested-ternary\n 'unicorn/no-nested-ternary': ['off'],\n // Org uses null alongside undefined\n 'unicorn/no-null': ['off'],\n // Formatting \u2014 candidate for stylistic tier; overlaps @stylistic formatting\n 'unicorn/number-literal-case': ['off'],\n 'unicorn/prefer-module': ['off'],\n 'unicorn/prefer-top-level-await': ['off'],\n 'unicorn/prevent-abbreviations': ['off'],\n 'unicorn/prefer-https': ['off'],\n 'unicorn/no-useless-undefined': 'warn',\n },\n}\n", "import type { ESLint, Linter } from 'eslint'\nimport workspacesPlugin from 'eslint-plugin-workspaces'\n\nexport const workspacesConfig: Linter.Config = {\n plugins: { workspaces: workspacesPlugin },\n rules: {\n ...((workspacesPlugin as unknown as { configs: { recommended: ESLint.ConfigData } }).configs.recommended).rules,\n // Tier 3 opinionated \u2014 enabled in opinionatedConfig\n 'workspaces/no-relative-imports': ['off'],\n 'workspaces/require-dependency': ['off'],\n },\n}\n", "import type { ESLint, Linter } from 'eslint'\nimport importPlugin from 'eslint-plugin-import-x'\nimport simpleImportSort from 'eslint-plugin-simple-import-sort'\n\nimport {\n scopeConfig, scriptFiles, scriptLanguageOptions,\n} from '../shared.ts'\n\nconst importFlatConfigs = importPlugin.flatConfigs as {\n recommended: Linter.Config\n typescript: Linter.Config\n}\n\nexport const importConfig: Linter.Config[] = [\n scopeConfig(importFlatConfigs.recommended, { files: scriptFiles, languageOptions: scriptLanguageOptions }),\n scopeConfig(importFlatConfigs.typescript, { files: scriptFiles, languageOptions: scriptLanguageOptions }),\n {\n files: scriptFiles,\n languageOptions: scriptLanguageOptions,\n plugins: {\n 'import-x': importPlugin as unknown as ESLint.Plugin,\n 'simple-import-sort': simpleImportSort,\n },\n settings: { 'import-x/resolver': { typescript: { alwaysTryTypes: true, project: './tsconfig.json' } } },\n rules: {\n // Owned by simple-import-sort/imports\n 'simple-import-sort/imports': ['warn'],\n 'simple-import-sort/exports': ['warn'],\n // Type-aware resolution is slow and requires per-repo resolver setup\n 'import-x/default': ['off'],\n 'import-x/named': ['off'],\n 'import-x/namespace': ['off'],\n 'import-x/no-unresolved': ['off'],\n 'import-x/no-absolute-path': ['warn'],\n 'import-x/no-cycle': [\n 'warn',\n { maxDepth: 5 },\n ],\n 'import-x/no-deprecated': ['off'],\n 'import-x/no-named-as-default-member': ['off'],\n 'import-x/no-named-as-default': ['off'],\n 'import-x/no-restricted-paths': ['warn'],\n 'import-x/no-self-import': ['warn'],\n 'import-x/no-useless-path-segments': ['warn'],\n },\n },\n]\n", "import type { Linter } from 'eslint'\nimport sonarjs from 'eslint-plugin-sonarjs'\n\nimport { ignores } from '../ignores.ts'\n\nexport const sonarConfig: Linter.Config = {\n plugins: { sonarjs },\n ignores,\n rules: {\n 'sonarjs/no-small-switch': ['off'],\n 'sonarjs/os-command': ['off'],\n 'sonarjs/no-os-command-from-path': ['off'],\n 'sonarjs/no-nested-conditional': ['off'],\n 'sonarjs/todo-tag': ['off'],\n 'sonarjs/deprecation': ['warn'],\n 'sonarjs/no-nested-functions': ['off'],\n 'sonarjs/function-return-type': ['off'],\n 'sonarjs/pseudo-random': ['off'],\n 'sonarjs/public-static-readonly': ['warn'],\n 'sonarjs/post-message': ['off'],\n 'sonarjs/different-types-comparison': ['off'],\n // Owned by simple-import-sort/imports\n 'sonarjs/no-alphabetical-sort': ['off'],\n 'sonarjs/no-identical-functions': ['warn'],\n 'sonarjs/no-empty-test-file': ['off'],\n 'sonarjs/no-dead-store': ['warn'],\n 'sonarjs/no-redundant-jump': ['warn'],\n 'sonarjs/void-use': ['off'],\n\n // Owned by complexity\n 'sonarjs/cognitive-complexity': ['off'],\n\n // Owned by @typescript-eslint/no-unused-vars\n 'sonarjs/unused-import': ['off'],\n 'sonarjs/no-unused-vars': ['off'],\n\n 'sonarjs/no-commented-code': ['off'],\n 'sonarjs/prefer-single-boolean-return': ['off'],\n 'sonarjs/redundant-type-aliases': ['off'],\n },\n}\n", "import type { Linter } from 'eslint'\n\nexport interface RuleOwnershipGroup {\n readonly description: string\n readonly disabled: readonly string[]\n readonly owner: string\n}\n\nexport const RULE_OWNERSHIP_GROUPS: readonly RuleOwnershipGroup[] = [\n {\n description: 'Class member ordering with alphabetical within-group sorting',\n owner: '@typescript-eslint/member-ordering',\n disabled: ['unicorn/consistent-class-member-order'],\n },\n {\n description: 'Callback nesting depth limit',\n owner: 'max-nested-callbacks',\n disabled: ['unicorn/max-nested-calls'],\n },\n {\n description: 'Spread over Function.prototype.apply',\n owner: 'unicorn/prefer-spread',\n disabled: ['prefer-spread'],\n },\n {\n description: 'Semicolon style',\n owner: '@stylistic/semi',\n disabled: ['semi'],\n },\n {\n description: 'Quote style',\n owner: '@stylistic/quotes',\n disabled: ['quotes'],\n },\n {\n description: 'Unused variable detection with TypeScript support',\n owner: '@typescript-eslint/no-unused-vars',\n disabled: ['no-unused-vars', 'sonarjs/no-unused-vars'],\n },\n {\n description: 'Escape sequence casing in strings and regexes',\n owner: 'unicorn/escape-case',\n disabled: ['no-useless-escape'],\n },\n {\n description: 'Negated condition style',\n owner: 'unicorn/no-negated-condition',\n disabled: ['no-negated-condition'],\n },\n {\n description: 'Nested ternary restrictions',\n owner: 'unicorn/no-unnecessary-nested-ternary',\n disabled: ['no-nested-ternary', 'unicorn/no-nested-ternary'],\n },\n {\n description: 'Cyclomatic complexity per function',\n owner: 'complexity',\n disabled: ['sonarjs/cognitive-complexity'],\n },\n {\n description: 'Unused import detection',\n owner: '@typescript-eslint/no-unused-vars',\n disabled: ['sonarjs/unused-import'],\n },\n {\n description: 'Import statement ordering',\n owner: 'simple-import-sort/imports',\n disabled: ['import-x/order', 'sonarjs/no-alphabetical-sort'],\n },\n] as const\n\ntype RuleSetting = Linter.RuleEntry<unknown[]> | undefined\n\nfunction isRuleEnabled(setting: RuleSetting): boolean {\n if (setting === undefined) {\n return false\n }\n\n if (setting === 'off' || setting === 0) {\n return false\n }\n\n if (Array.isArray(setting) && setting[0] === 'off') {\n return false\n }\n\n return true\n}\n\nexport function mergeConfigRules(configs: readonly Linter.Config[]): Record<string, RuleSetting> {\n const merged: Record<string, RuleSetting> = {}\n\n for (const entry of configs) {\n if (!entry.rules) {\n continue\n }\n\n Object.assign(merged, entry.rules)\n }\n\n return merged\n}\n\nexport interface RuleOwnershipConflict {\n readonly conflictingRule: string\n readonly conflictingSetting: RuleSetting\n readonly description: string\n readonly owner: string\n readonly ownerSetting: RuleSetting\n}\n\nexport function findRuleOwnershipConflicts(\n rules: Record<string, RuleSetting>,\n): RuleOwnershipConflict[] {\n const conflicts: RuleOwnershipConflict[] = []\n\n for (const group of RULE_OWNERSHIP_GROUPS) {\n const ownerSetting = rules[group.owner]\n if (!isRuleEnabled(ownerSetting)) {\n continue\n }\n\n for (const conflictingRule of group.disabled) {\n if (isRuleEnabled(rules[conflictingRule])) {\n conflicts.push({\n description: group.description,\n owner: group.owner,\n conflictingRule,\n ownerSetting,\n conflictingSetting: rules[conflictingRule],\n })\n }\n }\n }\n\n return conflicts\n}\n\nexport function assertNoRuleOwnershipConflicts(configs: readonly Linter.Config[]): void {\n const conflicts = findRuleOwnershipConflicts(mergeConfigRules(configs))\n\n if (conflicts.length === 0) {\n return\n }\n\n const details = conflicts.map(conflict => (\n `${conflict.owner} conflicts with ${conflict.conflictingRule} (${conflict.description})`\n )).join('\\n')\n\n throw new Error(`ESLint rule ownership conflicts detected:\\n${details}`)\n}\n", "import esStylistic from '@stylistic/eslint-plugin'\nimport tsPlugin from '@typescript-eslint/eslint-plugin'\nimport type { ESLint, Linter } from 'eslint'\n\nimport {\n scopeConfigs,\n scriptFiles,\n scriptLanguageOptions,\n typeCheckedLanguageOptions,\n} from '../shared.ts'\n\nconst flatConfigs = tsPlugin.configs as Record<string, Linter.Config[]>\n\nconst memberOrderingRule: Linter.RuleEntry = [\n 'warn',\n {\n default: {\n memberTypes: [\n 'signature',\n 'call-signature',\n 'public-static-field',\n 'protected-static-field',\n 'private-static-field',\n 'public-decorated-field',\n 'protected-decorated-field',\n 'private-decorated-field',\n 'public-instance-field',\n 'protected-instance-field',\n 'private-instance-field',\n 'public-abstract-field',\n 'protected-abstract-field',\n 'public-field',\n 'protected-field',\n 'private-field',\n 'static-field',\n 'instance-field',\n 'abstract-field',\n 'decorated-field',\n 'field',\n 'public-constructor',\n 'protected-constructor',\n 'private-constructor',\n 'constructor',\n ['public-static-get', 'public-static-set'],\n ['protected-static-get', 'protected-static-set'],\n ['private-static-get', 'private-static-set'],\n ['public-decorated-get', 'public-decorated-set'],\n ['protected-decorated-get', 'protected-decorated-set'],\n ['private-decorated-get', 'private-decorated-set'],\n ['public-instance-get', 'public-instance-set'],\n ['protected-instance-get', 'protected-instance-set'],\n ['private-instance-get', 'private-instance-set'],\n ['public-abstract-get', 'public-abstract-set'],\n ['protected-abstract-get', 'protected-abstract-set'],\n ['public-get', 'public-set'],\n ['protected-get', 'protected-set'],\n ['private-get', 'private-set'],\n ['static-get', 'static-set'],\n ['instance-get', 'instance-set'],\n ['abstract-get', 'abstract-set'],\n ['decorated-get', 'decorated-set'],\n 'get',\n 'set',\n 'public-static-method',\n 'protected-static-method',\n 'private-static-method',\n 'public-decorated-method',\n 'protected-decorated-method',\n 'private-decorated-method',\n 'public-instance-method',\n 'protected-instance-method',\n 'private-instance-method',\n 'public-abstract-method',\n 'protected-abstract-method',\n 'public-method',\n 'protected-method',\n 'private-method',\n 'static-method',\n 'instance-method',\n 'abstract-method',\n 'decorated-method',\n 'method',\n ],\n order: 'alphabetically',\n },\n },\n]\n\nfunction createCorrectnessOverride(languageOptions: Linter.LanguageOptions): Linter.Config {\n return {\n files: scriptFiles,\n languageOptions,\n rules: {\n '@typescript-eslint/no-unused-vars': [\n 'warn',\n {\n argsIgnorePattern: '^_', varsIgnorePattern: '^_', ignoreRestSiblings: true,\n },\n ],\n '@typescript-eslint/require-await': 'off',\n '@typescript-eslint/explicit-module-boundary-types': 'off',\n '@typescript-eslint/no-empty-object-type': ['off'],\n '@typescript-eslint/triple-slash-reference': ['off'],\n // Tier 3 opinionated \u2014 enabled in opinionatedConfig\n '@typescript-eslint/strict-boolean-expressions': ['off'],\n // Owned by @stylistic/quotes\n 'quotes': ['off'],\n // Owned by @stylistic/semi\n 'semi': ['off'],\n // Owned by unicorn/prefer-spread\n 'prefer-spread': ['off'],\n 'require-await': 'off',\n },\n }\n}\n\nfunction createConsistencyOverride(languageOptions: Linter.LanguageOptions): Linter.Config {\n return {\n files: scriptFiles,\n languageOptions,\n plugins: { '@stylistic': esStylistic as unknown as ESLint.Plugin },\n rules: {\n ...esStylistic.configs.recommended.rules,\n '@typescript-eslint/no-empty-function': 'warn',\n '@stylistic/eol-last': 'warn',\n '@typescript-eslint/explicit-member-accessibility': ['warn', { accessibility: 'no-public' }],\n '@stylistic/brace-style': ['warn', '1tbs', { allowSingleLine: true }],\n '@stylistic/quotes': ['warn', 'single', { avoidEscape: true }],\n '@typescript-eslint/consistent-type-imports': ['warn', { fixStyle: 'separate-type-imports', prefer: 'type-imports' }],\n '@stylistic/object-property-newline': ['warn', { allowAllPropertiesOnSameLine: true }],\n '@stylistic/function-call-argument-newline': ['warn', 'consistent'],\n '@stylistic/function-paren-newline': ['warn', 'multiline-arguments'],\n '@stylistic/member-delimiter-style': [\n 'error',\n {\n multiline: {\n delimiter: 'none',\n requireLast: true,\n },\n singleline: {\n delimiter: 'semi',\n requireLast: false,\n },\n },\n ],\n '@stylistic/object-curly-newline': ['warn', {\n ObjectExpression: {\n multiline: true, minProperties: 3, consistent: false,\n },\n ObjectPattern: {\n multiline: true, minProperties: 3, consistent: false,\n },\n ImportDeclaration: {\n multiline: true, minProperties: 3, consistent: false,\n },\n ExportDeclaration: {\n multiline: true, minProperties: 3, consistent: false,\n },\n }],\n '@stylistic/max-len': ['warn', { code: 200 }],\n 'no-restricted-syntax': [\n 'warn',\n {\n selector: 'TSEnumDeclaration',\n message: 'Enums are disallowed. Consider using a union of string literals or a `const` object instead.',\n },\n ],\n '@typescript-eslint/member-ordering': memberOrderingRule,\n },\n }\n}\n\nexport const typescriptDelegationConfig: Linter.Config = {\n files: scriptFiles,\n rules: {\n // Owned by unicorn/prefer-spread \u2014 stylistic presets may re-enable the core rule\n 'prefer-spread': 'off',\n // Owned by @stylistic/semi\n 'semi': 'off',\n // Owned by @stylistic/quotes\n 'quotes': 'off',\n },\n}\n\nexport const typescriptCorrectnessConfig: Linter.Config[] = [\n ...scopeConfigs(flatConfigs['flat/recommended'], { files: scriptFiles, languageOptions: scriptLanguageOptions }),\n createCorrectnessOverride(scriptLanguageOptions),\n]\n\nexport const typescriptConsistencyConfig: Linter.Config[] = [\n ...scopeConfigs(flatConfigs['flat/stylistic'], { files: scriptFiles, languageOptions: scriptLanguageOptions }),\n createConsistencyOverride(scriptLanguageOptions),\n]\n\nexport const typescriptTypeCheckedCorrectnessConfig: Linter.Config[] = [\n ...scopeConfigs(flatConfigs['flat/recommended-type-checked'], { files: scriptFiles, languageOptions: typeCheckedLanguageOptions }),\n createCorrectnessOverride(typeCheckedLanguageOptions),\n {\n files: scriptFiles,\n languageOptions: typeCheckedLanguageOptions,\n rules: { '@typescript-eslint/no-deprecated': 'warn' },\n },\n]\n\nexport const typescriptTypeCheckedConsistencyConfig: Linter.Config[] = [\n ...scopeConfigs(flatConfigs['flat/stylistic-type-checked'], { files: scriptFiles, languageOptions: typeCheckedLanguageOptions }),\n createConsistencyOverride(typeCheckedLanguageOptions),\n]\n\nexport const typescriptConfig: Linter.Config[] = [\n ...typescriptCorrectnessConfig,\n ...typescriptConsistencyConfig,\n typescriptDelegationConfig,\n]\n\nexport const typescriptTypeCheckedConfig: Linter.Config[] = [\n ...typescriptTypeCheckedCorrectnessConfig,\n ...typescriptTypeCheckedConsistencyConfig,\n typescriptDelegationConfig,\n]\n", "import type { Linter } from 'eslint'\n\nimport { scriptFiles } from '../shared.ts'\nimport { unicornV66MigrationQueue } from '../unicorn/index.ts'\n\nexport const opinionatedLayerConfig: Linter.Config = {\n files: scriptFiles,\n rules: {\n '@typescript-eslint/strict-boolean-expressions': 'warn',\n 'unicorn/filename-case': ['warn', { case: 'kebabCase' }],\n 'unicorn/no-await-expression-member': 'warn',\n 'unicorn/number-literal-case': 'warn',\n 'workspaces/no-relative-imports': 'warn',\n 'workspaces/require-dependency': 'warn',\n },\n}\n\nexport const strictPromotionRules: Linter.Config['rules'] = {\n '@stylistic/eol-last': 'error',\n '@typescript-eslint/no-empty-function': 'error',\n '@typescript-eslint/no-deprecated': 'error',\n 'array-element-newline': 'error',\n 'import-x/no-absolute-path': 'error',\n 'import-x/no-cycle': 'error',\n 'import-x/no-restricted-paths': 'error',\n 'import-x/no-self-import': 'error',\n 'import-x/no-useless-path-segments': 'error',\n 'no-restricted-syntax': 'error',\n 'simple-import-sort/exports': 'error',\n 'simple-import-sort/imports': 'error',\n 'sonarjs/deprecation': 'error',\n\n 'sonarjs/no-dead-store': 'error',\n 'sonarjs/no-identical-functions': 'error',\n 'sonarjs/no-redundant-jump': 'error',\n 'sonarjs/public-static-readonly': 'error',\n 'unicorn/no-useless-undefined': 'error',\n ...Object.fromEntries(unicornV66MigrationQueue.map(rule => [rule, 'error'])),\n ...Object.fromEntries([\n '@typescript-eslint/consistent-type-imports',\n '@typescript-eslint/explicit-member-accessibility',\n '@typescript-eslint/member-ordering',\n '@stylistic/brace-style',\n '@stylistic/function-call-argument-newline',\n '@stylistic/function-paren-newline',\n '@stylistic/object-curly-newline',\n '@stylistic/object-property-newline',\n '@stylistic/quotes',\n '@stylistic/max-len',\n 'unicorn/filename-case',\n 'unicorn/no-await-expression-member',\n 'unicorn/number-literal-case',\n 'workspaces/no-relative-imports',\n 'workspaces/require-dependency',\n '@typescript-eslint/strict-boolean-expressions',\n ].map(rule => [rule, 'error'])),\n}\n\nexport const strictLayerConfig: Linter.Config = {\n files: scriptFiles,\n rules: strictPromotionRules,\n}\n", "import type { Linter } from 'eslint'\n\nimport {\n bestPracticesCoreConfig,\n correctnessCoreConfig,\n} from '../core/index.ts'\nimport { importConfig } from '../import/index.ts'\nimport { markdownConfig } from '../markdown/index.ts'\nimport { consistencyRulesConfig } from '../rules/index.ts'\nimport { sonarConfig } from '../sonar/index.ts'\nimport {\n typescriptConsistencyConfig,\n typescriptCorrectnessConfig,\n typescriptDelegationConfig,\n typescriptTypeCheckedConsistencyConfig,\n typescriptTypeCheckedCorrectnessConfig,\n} from '../typescript/index.ts'\nimport { opinionatedLayerConfig, strictLayerConfig } from './opinionated.ts'\n\nfunction mergeTierConfigs(...parts: readonly Linter.Config[][]): Linter.Config[] {\n return parts.flat()\n}\n\n/**\n * Tier 0 \u2014 correctness: type safety, bug prevention, import restrictions.\n * Each subsequent tier is a superset of the previous tier.\n */\nexport const configTier0Correctness: Linter.Config[] = mergeTierConfigs(\n markdownConfig,\n correctnessCoreConfig,\n typescriptCorrectnessConfig,\n)\n\nexport const configTier0CorrectnessTypeChecked: Linter.Config[] = mergeTierConfigs(\n markdownConfig,\n correctnessCoreConfig,\n typescriptTypeCheckedCorrectnessConfig,\n)\n\n/**\n * Tier 1 \u2014 consistency: Tier 0 plus formatting, member ordering, and complexity limits.\n */\nexport const configTier1Consistency: Linter.Config[] = mergeTierConfigs(\n configTier0Correctness,\n [consistencyRulesConfig],\n typescriptConsistencyConfig,\n [typescriptDelegationConfig],\n)\n\nexport const configTier1ConsistencyTypeChecked: Linter.Config[] = mergeTierConfigs(\n configTier0CorrectnessTypeChecked,\n [consistencyRulesConfig],\n typescriptTypeCheckedConsistencyConfig,\n [typescriptDelegationConfig],\n)\n\n/**\n * Tier 2 \u2014 best practices: Tier 1 plus unicorn and import validation.\n * This is the recommended default for XY Labs repositories.\n */\nexport const configTier2BestPractices: Linter.Config[] = mergeTierConfigs(\n configTier1Consistency,\n bestPracticesCoreConfig,\n importConfig,\n)\n\nexport const configTier2BestPracticesTypeChecked: Linter.Config[] = mergeTierConfigs(\n configTier1ConsistencyTypeChecked,\n bestPracticesCoreConfig,\n importConfig,\n)\n\n/**\n * Tier 3 \u2014 opinionated: Tier 2 plus stricter optional rules (still mostly warnings).\n */\nexport const configTier3Opinionated: Linter.Config[] = mergeTierConfigs(\n configTier2BestPractices,\n [opinionatedLayerConfig],\n)\n\nexport const configTier3OpinionatedTypeChecked: Linter.Config[] = mergeTierConfigs(\n configTier2BestPracticesTypeChecked,\n [opinionatedLayerConfig],\n)\n\n/**\n * Tier 4 \u2014 strict: Tier 3 plus SonarJS and promotion of warnings to errors.\n */\nexport const configTier4Strict: Linter.Config[] = mergeTierConfigs(\n configTier3Opinionated,\n [sonarConfig, strictLayerConfig],\n)\n\nexport const configTier4StrictTypeChecked: Linter.Config[] = mergeTierConfigs(\n configTier3OpinionatedTypeChecked,\n [sonarConfig, strictLayerConfig],\n)\n\n/** @deprecated Use `configTier2BestPractices` instead. */\nexport const recommendedConfig: Linter.Config[] = configTier2BestPractices\n\n/** @deprecated Use `configTier2BestPracticesTypeChecked` instead. */\nexport const recommendedTypeCheckedConfig: Linter.Config[] = configTier2BestPracticesTypeChecked\n\n/** Compatibility alias \u2014 identical to `configTier2BestPracticesTypeChecked`. */\nexport const config: Linter.Config[] = configTier2BestPracticesTypeChecked\n", "import js from '@eslint/js'\nimport json from '@eslint/json'\nimport markdown from '@eslint/markdown'\nimport esStylistic from '@stylistic/eslint-plugin'\nimport tsPlugin from '@typescript-eslint/eslint-plugin'\nimport type { ESLint } from 'eslint'\nimport importPlugin from 'eslint-plugin-import-x'\nimport simpleImportSort from 'eslint-plugin-simple-import-sort'\nimport sonarjs from 'eslint-plugin-sonarjs'\nimport unicornPlugin from 'eslint-plugin-unicorn'\nimport workspacesPlugin from 'eslint-plugin-workspaces'\n\nconst compareStrings = (left: string, right: string): number => left.localeCompare(right)\n\nexport interface PluginRuleSnapshot {\n readonly plugin: string\n readonly rules: readonly string[]\n readonly source: string\n}\n\nfunction sortedRuleNames(rules: Record<string, unknown> | undefined): string[] {\n if (!rules) {\n return []\n }\n\n return Object.keys(rules).toSorted(compareStrings)\n}\n\nfunction sortedRuleNamesFromConfigs(\n configs: { rules?: Record<string, unknown> }[] | undefined,\n): string[] {\n if (!configs) {\n return []\n }\n\n const merged: Record<string, unknown> = {}\n for (const entry of configs) {\n if (entry.rules) {\n Object.assign(merged, entry.rules)\n }\n }\n\n return sortedRuleNames(merged)\n}\n\nfunction pluginRuleNames(plugin: ESLint.Plugin): string[] {\n if (!plugin.rules) {\n return []\n }\n\n const prefix = typeof plugin.meta?.name === 'string'\n ? plugin.meta.name.replace(/^eslint-plugin-/, '').replace(/^@eslint\\//, '')\n : 'unknown'\n\n return Object.keys(plugin.rules)\n .toSorted(compareStrings)\n .map(ruleName => `${prefix}/${ruleName}`)\n}\n\nexport function collectPluginRuleSnapshots(): PluginRuleSnapshot[] {\n const unicornRecommended = unicornPlugin.configs['flat/recommended'] as undefined | { rules?: Record<string, unknown> }\n const importRecommended = importPlugin.flatConfigs.recommended as { rules?: Record<string, unknown> }\n const flatConfigs = tsPlugin.configs as Record<string, { rules?: Record<string, unknown> }[]>\n const workspacesRecommended = (\n workspacesPlugin as { configs: { recommended: { rules?: Record<string, unknown> } } }\n ).configs.recommended\n\n return [\n {\n plugin: '@eslint/js',\n rules: sortedRuleNames(js.configs.recommended.rules),\n source: 'configs.recommended',\n },\n {\n plugin: '@eslint/json',\n rules: pluginRuleNames(json),\n source: 'plugin.rules',\n },\n {\n plugin: '@eslint/markdown',\n rules: sortedRuleNames(\n (markdown.configs.recommended as { rules?: Record<string, unknown> }[])[0]?.rules,\n ),\n source: 'configs.recommended',\n },\n {\n plugin: '@stylistic/eslint-plugin',\n rules: sortedRuleNames(esStylistic.configs.recommended.rules),\n source: 'configs.recommended',\n },\n {\n plugin: '@typescript-eslint/eslint-plugin',\n rules: sortedRuleNamesFromConfigs(flatConfigs['flat/recommended-type-checked']),\n source: 'configs.flat/recommended-type-checked',\n },\n {\n plugin: '@typescript-eslint/eslint-plugin',\n rules: sortedRuleNamesFromConfigs(flatConfigs['flat/stylistic-type-checked']),\n source: 'configs.flat/stylistic-type-checked',\n },\n {\n plugin: 'eslint-plugin-import-x',\n rules: sortedRuleNames(importRecommended.rules),\n source: 'flatConfigs.recommended',\n },\n {\n plugin: 'eslint-plugin-import-x',\n rules: sortedRuleNames(importPlugin.flatConfigs.typescript.rules),\n source: 'flatConfigs.typescript',\n },\n {\n plugin: 'eslint-plugin-simple-import-sort',\n rules: pluginRuleNames(simpleImportSort),\n source: 'plugin.rules',\n },\n {\n plugin: 'eslint-plugin-sonarjs',\n rules: pluginRuleNames(sonarjs),\n source: 'plugin.rules',\n },\n {\n plugin: 'eslint-plugin-unicorn',\n rules: sortedRuleNames(unicornRecommended?.rules),\n source: 'configs.flat/recommended',\n },\n {\n plugin: 'eslint-plugin-workspaces',\n rules: sortedRuleNames(workspacesRecommended.rules),\n source: 'configs.recommended',\n },\n ]\n}\n\nexport function serializePluginRuleSnapshots(snapshots: readonly PluginRuleSnapshot[]): string {\n return `${JSON.stringify(snapshots, null, 2)}\\n`\n}\n", "import type { Linter } from 'eslint'\n\nimport {\n json5Config, jsoncConfig,\n jsonConfig,\n} from './json/index.ts'\nimport { markdownConfig } from './markdown/index.ts'\n\nexport const docsConfig: Linter.Config[] = [\n ...markdownConfig,\n jsonConfig,\n jsoncConfig,\n json5Config,\n]\n\nexport {\n bestPracticesCoreConfig,\n coreConfig,\n correctnessCoreConfig,\n} from './core/index.ts'\nexport { ignores } from './ignores.ts'\nexport { importConfig } from './import/index.ts'\nexport {\n json5Config, jsoncConfig,\n jsonConfig,\n} from './json/index.ts'\nexport { markdownConfig } from './markdown/index.ts'\nexport {\n consistencyRulesConfig,\n correctnessRulesConfig,\n rulesConfig,\n srcImportsConfig,\n} from './rules/index.ts'\nexport { sonarConfig } from './sonar/index.ts'\nexport {\n assertNoRuleOwnershipConflicts,\n findRuleOwnershipConflicts,\n mergeConfigRules,\n RULE_OWNERSHIP_GROUPS,\n} from './tiers/conflicts.ts'\nexport * from './tiers/index.ts'\nexport {\n opinionatedLayerConfig,\n strictLayerConfig,\n strictPromotionRules,\n} from './tiers/opinionated.ts'\nexport {\n collectPluginRuleSnapshots,\n serializePluginRuleSnapshots,\n} from './tiers/plugin-rules.ts'\nexport {\n typescriptConfig,\n typescriptConsistencyConfig,\n typescriptCorrectnessConfig,\n typescriptDelegationConfig,\n typescriptTypeCheckedConfig,\n typescriptTypeCheckedConsistencyConfig,\n typescriptTypeCheckedCorrectnessConfig,\n} from './typescript/index.ts'\nexport {\n unicornConfig,\n unicornV66MigrationQueue,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n unicornV66NewRules,\n} from './unicorn/index.ts'\nexport { workspacesConfig } from './workspaces/index.ts'\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import json from '@eslint/json'\nimport type { ESLint, Linter } from 'eslint'\n\nimport { ignores } from '../ignores.ts'\n\nexport const jsonConfig: Linter.Config = {\n ignores,\n files: ['**/*.json'],\n plugins: { json: json as unknown as ESLint.Plugin },\n language: 'json/json',\n rules: { 'json/no-duplicate-keys': ['error'] },\n}\n\nexport const jsoncConfig: Linter.Config = {\n ignores,\n files: ['**/*.jsonc'],\n plugins: { json: json as unknown as ESLint.Plugin },\n language: 'json/jsonc',\n rules: { 'json/no-duplicate-keys': ['error'] },\n}\n\nexport const json5Config: Linter.Config = {\n ignores,\n files: ['**/*.json5'],\n plugins: { json: json as unknown as ESLint.Plugin },\n language: 'json/json5',\n rules: { 'json/no-duplicate-keys': ['error'] },\n}\n", "export const ignores = [\n '.eslintcache',\n '.github',\n '.husky',\n '.jest',\n '.next',\n '.vscode',\n '.yarn',\n '**/dist',\n '**/docs',\n '**/node_modules',\n 'coverage',\n 'cypress',\n 'public',\n 'storybook-static',\n 'tmp',\n 'yarn-error.log',\n 'yarn.lock',\n]\n", "import markdown from '@eslint/markdown'\nimport type { Linter } from 'eslint'\n\nimport { scopeConfigs } from '../shared.ts'\n\nexport const markdownConfig: Linter.Config[] = scopeConfigs(markdown.configs.recommended)\n", "import tsParser from '@typescript-eslint/parser'\nimport type { Linter } from 'eslint'\n\nimport { ignores } from './ignores.ts'\n\nexport const scriptFiles = [\n '**/*.ts',\n '**/*.tsx',\n '**/*.mts',\n '**/*.cts',\n '**/*.js',\n '**/*.jsx',\n '**/*.cjs',\n '**/*.mjs',\n '**/*.d.ts',\n '**/*.d.tsx',\n '**/*.d.jsx',\n '**/*.d.mts',\n '**/*.d.cts',\n]\n\nexport const scriptLanguageOptions: Linter.LanguageOptions = {\n ecmaVersion: 'latest',\n parser: tsParser,\n parserOptions: { ecmaFeatures: { jsx: true } },\n sourceType: 'module',\n}\n\nexport const typeCheckedLanguageOptions: Linter.LanguageOptions = {\n ...scriptLanguageOptions,\n parserOptions: {\n ...scriptLanguageOptions.parserOptions,\n projectService: true,\n tsconfigRootDir: process.cwd(),\n },\n}\n\nfunction unique(values: (string | undefined)[]): string[] {\n return [...new Set(values.filter((value): value is string => value !== undefined))]\n}\n\nfunction mergeLanguageOptions(\n base: Linter.LanguageOptions | undefined,\n next: Linter.LanguageOptions | undefined,\n): Linter.LanguageOptions | undefined {\n if (!base) return next\n if (!next) return base\n\n return {\n ...base,\n ...next,\n globals: {\n ...base.globals,\n ...next.globals,\n },\n parserOptions: {\n ...base.parserOptions,\n ...next.parserOptions,\n },\n }\n}\n\nexport function scopeConfig(\n config: Linter.Config,\n {\n files,\n languageOptions,\n }: {\n files?: string[]\n languageOptions?: Linter.LanguageOptions\n } = {},\n): Linter.Config {\n const merged = mergeLanguageOptions(languageOptions, config.languageOptions)\n const result: Linter.Config = {\n ...config,\n files: files ?? config.files,\n ignores: unique([...(config.ignores ?? []), ...ignores]),\n }\n if (merged) {\n result.languageOptions = merged\n }\n return result\n}\n\nexport function scopeConfigs(\n configs: Linter.Config | Linter.Config[],\n options: {\n files?: string[]\n languageOptions?: Linter.LanguageOptions\n } = {},\n): Linter.Config[] {\n return (Array.isArray(configs) ? configs : [configs]).map(config => scopeConfig(config, options))\n}\n", "import js from '@eslint/js'\nimport type { Linter } from 'eslint'\n\nimport {\n consistencyRulesConfig,\n correctnessRulesConfig,\n srcImportsConfig,\n} from '../rules/index.ts'\nimport {\n scopeConfig, scriptFiles, scriptLanguageOptions,\n} from '../shared.ts'\nimport { unicornConfig } from '../unicorn/index.ts'\nimport { workspacesConfig } from '../workspaces/index.ts'\n\nexport const correctnessCoreConfig: Linter.Config[] = [\n scopeConfig(js.configs.recommended, { files: scriptFiles, languageOptions: scriptLanguageOptions }),\n correctnessRulesConfig,\n srcImportsConfig,\n workspacesConfig,\n]\n\nexport const bestPracticesCoreConfig: Linter.Config[] = [\n scopeConfig(unicornConfig, { files: scriptFiles }),\n]\n\nexport const coreConfig: Linter.Config[] = [\n ...correctnessCoreConfig,\n consistencyRulesConfig,\n ...bestPracticesCoreConfig,\n]\n", "import type { Linter } from 'eslint'\n\nimport { ignores } from '../ignores.ts'\n\nexport const consistencyRulesConfig: Linter.Config = {\n ignores,\n rules: {\n 'complexity': ['error', 18],\n 'max-depth': ['error', 6],\n 'max-lines': [\n 'error',\n {\n max: 512,\n skipBlankLines: true,\n },\n ],\n 'array-element-newline': ['warn', 'consistent'],\n // Owned by max-nested-callbacks \u2014 measures callback nesting, not call depth\n 'max-nested-callbacks': ['error', 6],\n 'max-statements': ['error', 32],\n 'no-tabs': ['error'],\n },\n}\n", "import type { Linter } from 'eslint'\n\nimport { ignores } from '../ignores.ts'\n\nconst restrictedImportPaths = [\n './index.ts',\n '../index.ts',\n '../../index.ts',\n '../../../index.ts',\n '../../../../index.ts',\n '../../../../../index.ts',\n '../../../../../../index.ts',\n '../../../../../../../index.ts',\n]\n\nexport const correctnessRulesConfig: Linter.Config = {\n ignores,\n rules: {\n // Owned by @typescript-eslint/no-unused-vars\n 'no-unused-vars': 'off',\n // Owned by unicorn/escape-case\n 'no-useless-escape': 'off',\n // Owned by unicorn/prefer-spread\n 'prefer-spread': 'off',\n 'no-restricted-imports': [\n 'error',\n { paths: restrictedImportPaths },\n ],\n },\n}\n", "import type { Linter } from 'eslint'\n\nimport { ignores } from '../ignores.ts'\nimport { scriptFiles } from '../shared.ts'\nimport { consistencyRulesConfig } from './consistency.ts'\nimport { correctnessRulesConfig } from './correctness.ts'\n\nconst restrictedImportPaths = [\n './index.ts',\n '../index.ts',\n '../../index.ts',\n '../../../index.ts',\n '../../../../index.ts',\n '../../../../../index.ts',\n '../../../../../../index.ts',\n '../../../../../../../index.ts',\n]\n\nconst restrictedSrcImportPatterns = [\n {\n group: [\n '**/src/**',\n '**/src',\n 'src/**',\n ],\n message: 'Do not import from another package\\'s src folder. Import the package by its public entry point instead.',\n },\n]\n\nexport { consistencyRulesConfig } from './consistency.ts'\nexport { correctnessRulesConfig } from './correctness.ts'\n\nexport const rulesConfig: Linter.Config = {\n ignores,\n rules: {\n ...correctnessRulesConfig.rules,\n ...consistencyRulesConfig.rules,\n },\n}\n\n// Source files (under src/) should never reference a src/ path \u2014 own-package files\n// are reached via ./ or ../, and other packages via their published name. Scoped to\n// src/ so test specs (which legitimately import their own ../../src/...) are unaffected.\nexport const srcImportsConfig: Linter.Config = {\n files: scriptFiles.map(pattern => `**/src/${pattern}`),\n ignores,\n rules: {\n 'no-restricted-imports': [\n 'error',\n {\n paths: restrictedImportPaths,\n patterns: restrictedSrcImportPatterns,\n },\n ],\n },\n}\n", "import type { ESLint, Linter } from 'eslint'\nimport unicornPlugin from 'eslint-plugin-unicorn'\n\n// New recommended rules in eslint-plugin-unicorn v66 \u2014 warnings during adoption.\n// Promote individual rules to 'error' once the org has cleared existing violations.\n// Rules permanently disabled for ownership conflicts are listed separately below.\nexport const unicornV66MigrationQueue = [\n 'unicorn/class-reference-in-static-methods',\n 'unicorn/comment-content',\n 'unicorn/consistent-export-decorator-position',\n 'unicorn/consistent-optional-chaining',\n 'unicorn/explicit-timer-delay',\n 'unicorn/no-array-reverse',\n 'unicorn/no-array-sort',\n 'unicorn/no-break-in-nested-loop',\n 'unicorn/no-computed-property-existence-check',\n 'unicorn/no-confusing-array-with',\n 'unicorn/no-declarations-before-early-exit',\n 'unicorn/no-duplicate-loops',\n 'unicorn/no-error-property-assignment',\n 'unicorn/no-for-each',\n 'unicorn/no-global-object-property-assignment',\n 'unicorn/no-incorrect-template-string-interpolation',\n 'unicorn/no-invalid-argument-count',\n 'unicorn/no-mismatched-map-key',\n 'unicorn/no-negated-array-predicate',\n 'unicorn/no-negated-comparison',\n 'unicorn/no-object-methods-with-collections',\n 'unicorn/no-optional-chaining-on-undeclared-variable',\n 'unicorn/no-redundant-comparison',\n 'unicorn/no-return-array-push',\n 'unicorn/no-subtraction-comparison',\n 'unicorn/no-top-level-side-effects',\n 'unicorn/no-undeclared-class-members',\n 'unicorn/no-unnecessary-global-this',\n 'unicorn/no-unnecessary-splice',\n 'unicorn/no-unreadable-new-expression',\n 'unicorn/no-unreadable-object-destructuring',\n 'unicorn/no-unsafe-buffer-conversion',\n 'unicorn/no-unsafe-property-key',\n 'unicorn/no-unsafe-string-replacement',\n 'unicorn/no-useless-boolean-cast',\n 'unicorn/no-useless-concat',\n 'unicorn/no-useless-else',\n 'unicorn/no-useless-recursion',\n 'unicorn/no-useless-template-literals',\n 'unicorn/prefer-add-event-listener-options',\n 'unicorn/prefer-array-from-map',\n 'unicorn/prefer-await',\n 'unicorn/prefer-direct-iteration',\n 'unicorn/prefer-early-return',\n 'unicorn/prefer-global-number-constants',\n 'unicorn/prefer-identifier-import-export-specifiers',\n 'unicorn/prefer-iterable-in-constructor',\n 'unicorn/prefer-iterator-to-array',\n 'unicorn/prefer-location-assign',\n 'unicorn/prefer-minimal-ternary',\n 'unicorn/prefer-number-coercion',\n 'unicorn/prefer-number-is-safe-integer',\n 'unicorn/prefer-object-define-properties',\n 'unicorn/prefer-object-destructuring-defaults',\n 'unicorn/prefer-object-iterable-methods',\n 'unicorn/prefer-path2d',\n 'unicorn/prefer-private-class-fields',\n 'unicorn/prefer-scoped-selector',\n 'unicorn/prefer-short-arrow-method',\n 'unicorn/prefer-simple-sort-comparator',\n 'unicorn/prefer-single-array-predicate',\n 'unicorn/prefer-single-object-destructuring',\n 'unicorn/prefer-smaller-scope',\n 'unicorn/prefer-type-literal-last',\n 'unicorn/prefer-uint8array-base64',\n 'unicorn/prefer-unicode-code-point-escapes',\n 'unicorn/prefer-url-href',\n 'unicorn/require-array-sort-compare',\n 'unicorn/require-proxy-trap-boolean-return',\n] as const\n\n/** @deprecated Use `unicornV66MigrationQueue` instead. */\nexport const unicornV66NewRules = unicornV66MigrationQueue\n\nexport const unicornConfig: Linter.Config = {\n ...(unicornPlugin.configs.recommended as Linter.Config),\n plugins: { unicorn: unicornPlugin as ESLint.Plugin },\n rules: {\n ...(unicornPlugin.configs.recommended as ESLint.ConfigData).rules,\n ...Object.fromEntries(unicornV66MigrationQueue.map(rule => [rule, 'warn'])),\n // Owned by @typescript-eslint/member-ordering\n 'unicorn/consistent-class-member-order': ['off'],\n // Owned by max-nested-callbacks\n 'unicorn/max-nested-calls': ['off'],\n // Naming preference \u2014 too disruptive for org-wide enforcement\n 'unicorn/catch-error-name': ['off'],\n // Closure patterns are valid in our codebase\n 'unicorn/consistent-function-scoping': ['off'],\n // Tier 3 opinionated \u2014 enabled in opinionatedConfig\n 'unicorn/filename-case': ['off'],\n 'unicorn/new-for-builtins': ['off'],\n 'unicorn/no-array-callback-reference': ['off'],\n // Tier 3 opinionated \u2014 enabled in opinionatedConfig\n 'unicorn/no-await-expression-member': ['off'],\n // Owned by unicorn/no-unnecessary-nested-ternary\n 'unicorn/no-nested-ternary': ['off'],\n // Org uses null alongside undefined\n 'unicorn/no-null': ['off'],\n // Formatting \u2014 candidate for stylistic tier; overlaps @stylistic formatting\n 'unicorn/number-literal-case': ['off'],\n 'unicorn/prefer-module': ['off'],\n 'unicorn/prefer-top-level-await': ['off'],\n 'unicorn/prevent-abbreviations': ['off'],\n 'unicorn/prefer-https': ['off'],\n 'unicorn/no-useless-undefined': 'warn',\n },\n}\n", "import type { ESLint, Linter } from 'eslint'\nimport workspacesPlugin from 'eslint-plugin-workspaces'\n\nexport const workspacesConfig: Linter.Config = {\n plugins: { workspaces: workspacesPlugin },\n rules: {\n ...((workspacesPlugin as unknown as { configs: { recommended: ESLint.ConfigData } }).configs.recommended).rules,\n // Tier 3 opinionated \u2014 enabled in opinionatedConfig\n 'workspaces/no-relative-imports': ['off'],\n 'workspaces/require-dependency': ['off'],\n },\n}\n", "import type { ESLint, Linter } from 'eslint'\nimport importPlugin from 'eslint-plugin-import-x'\nimport simpleImportSort from 'eslint-plugin-simple-import-sort'\n\nimport {\n scopeConfig, scriptFiles, scriptLanguageOptions,\n} from '../shared.ts'\n\nconst importFlatConfigs = importPlugin.flatConfigs as {\n recommended: Linter.Config\n typescript: Linter.Config\n}\n\nexport const importConfig: Linter.Config[] = [\n scopeConfig(importFlatConfigs.recommended, { files: scriptFiles, languageOptions: scriptLanguageOptions }),\n scopeConfig(importFlatConfigs.typescript, { files: scriptFiles, languageOptions: scriptLanguageOptions }),\n {\n files: scriptFiles,\n languageOptions: scriptLanguageOptions,\n plugins: {\n 'import-x': importPlugin as unknown as ESLint.Plugin,\n 'simple-import-sort': simpleImportSort,\n },\n settings: { 'import-x/resolver': { typescript: { alwaysTryTypes: true, project: './tsconfig.json' } } },\n rules: {\n // Owned by simple-import-sort/imports\n 'simple-import-sort/imports': ['warn'],\n 'simple-import-sort/exports': ['warn'],\n // Type-aware resolution is slow and requires per-repo resolver setup\n 'import-x/default': ['off'],\n 'import-x/named': ['off'],\n 'import-x/namespace': ['off'],\n 'import-x/no-unresolved': ['off'],\n 'import-x/no-absolute-path': ['warn'],\n 'import-x/no-cycle': [\n 'warn',\n { maxDepth: 5 },\n ],\n 'import-x/no-deprecated': ['off'],\n 'import-x/no-named-as-default-member': ['off'],\n 'import-x/no-named-as-default': ['off'],\n 'import-x/no-restricted-paths': ['warn'],\n 'import-x/no-self-import': ['warn'],\n 'import-x/no-useless-path-segments': ['warn'],\n },\n },\n]\n", "import type { Linter } from 'eslint'\nimport sonarjs from 'eslint-plugin-sonarjs'\n\nimport { ignores } from '../ignores.ts'\n\nexport const sonarConfig: Linter.Config = {\n plugins: { sonarjs },\n ignores,\n rules: {\n 'sonarjs/no-small-switch': ['off'],\n 'sonarjs/os-command': ['off'],\n 'sonarjs/no-os-command-from-path': ['off'],\n 'sonarjs/no-nested-conditional': ['off'],\n 'sonarjs/todo-tag': ['off'],\n 'sonarjs/deprecation': ['warn'],\n 'sonarjs/no-nested-functions': ['off'],\n 'sonarjs/function-return-type': ['off'],\n 'sonarjs/pseudo-random': ['off'],\n 'sonarjs/public-static-readonly': ['warn'],\n 'sonarjs/post-message': ['off'],\n 'sonarjs/different-types-comparison': ['off'],\n // Owned by simple-import-sort/imports\n 'sonarjs/no-alphabetical-sort': ['off'],\n 'sonarjs/no-identical-functions': ['warn'],\n 'sonarjs/no-empty-test-file': ['off'],\n 'sonarjs/no-dead-store': ['warn'],\n 'sonarjs/no-redundant-jump': ['warn'],\n 'sonarjs/void-use': ['off'],\n\n // Owned by complexity\n 'sonarjs/cognitive-complexity': ['off'],\n\n // Owned by @typescript-eslint/no-unused-vars\n 'sonarjs/unused-import': ['off'],\n 'sonarjs/no-unused-vars': ['off'],\n\n 'sonarjs/no-commented-code': ['off'],\n 'sonarjs/prefer-single-boolean-return': ['off'],\n 'sonarjs/redundant-type-aliases': ['off'],\n },\n}\n", "import type { Linter } from 'eslint'\n\nexport interface RuleOwnershipGroup {\n readonly description: string\n readonly disabled: readonly string[]\n readonly owner: string\n}\n\nexport const RULE_OWNERSHIP_GROUPS: readonly RuleOwnershipGroup[] = [\n {\n description: 'Class member ordering with alphabetical within-group sorting',\n owner: '@typescript-eslint/member-ordering',\n disabled: ['unicorn/consistent-class-member-order'],\n },\n {\n description: 'Callback nesting depth limit',\n owner: 'max-nested-callbacks',\n disabled: ['unicorn/max-nested-calls'],\n },\n {\n description: 'Spread over Function.prototype.apply',\n owner: 'unicorn/prefer-spread',\n disabled: ['prefer-spread'],\n },\n {\n description: 'Semicolon style',\n owner: '@stylistic/semi',\n disabled: ['semi'],\n },\n {\n description: 'Quote style',\n owner: '@stylistic/quotes',\n disabled: ['quotes'],\n },\n {\n description: 'Unused variable detection with TypeScript support',\n owner: '@typescript-eslint/no-unused-vars',\n disabled: ['no-unused-vars', 'sonarjs/no-unused-vars'],\n },\n {\n description: 'Escape sequence casing in strings and regexes',\n owner: 'unicorn/escape-case',\n disabled: ['no-useless-escape'],\n },\n {\n description: 'Negated condition style',\n owner: 'unicorn/no-negated-condition',\n disabled: ['no-negated-condition'],\n },\n {\n description: 'Nested ternary restrictions',\n owner: 'unicorn/no-unnecessary-nested-ternary',\n disabled: ['no-nested-ternary', 'unicorn/no-nested-ternary'],\n },\n {\n description: 'Cyclomatic complexity per function',\n owner: 'complexity',\n disabled: ['sonarjs/cognitive-complexity'],\n },\n {\n description: 'Unused import detection',\n owner: '@typescript-eslint/no-unused-vars',\n disabled: ['sonarjs/unused-import'],\n },\n {\n description: 'Import statement ordering',\n owner: 'simple-import-sort/imports',\n disabled: ['import-x/order', 'sonarjs/no-alphabetical-sort'],\n },\n] as const\n\ntype RuleSetting = Linter.RuleEntry<unknown[]> | undefined\n\nfunction isRuleEnabled(setting: RuleSetting): boolean {\n if (setting === undefined) {\n return false\n }\n\n if (setting === 'off' || setting === 0) {\n return false\n }\n\n if (Array.isArray(setting) && setting[0] === 'off') {\n return false\n }\n\n return true\n}\n\nexport function mergeConfigRules(configs: readonly Linter.Config[]): Record<string, RuleSetting> {\n const merged: Record<string, RuleSetting> = {}\n\n for (const entry of configs) {\n if (!entry.rules) {\n continue\n }\n\n Object.assign(merged, entry.rules)\n }\n\n return merged\n}\n\nexport interface RuleOwnershipConflict {\n readonly conflictingRule: string\n readonly conflictingSetting: RuleSetting\n readonly description: string\n readonly owner: string\n readonly ownerSetting: RuleSetting\n}\n\nexport function findRuleOwnershipConflicts(\n rules: Record<string, RuleSetting>,\n): RuleOwnershipConflict[] {\n const conflicts: RuleOwnershipConflict[] = []\n\n for (const group of RULE_OWNERSHIP_GROUPS) {\n const ownerSetting = rules[group.owner]\n if (!isRuleEnabled(ownerSetting)) {\n continue\n }\n\n for (const conflictingRule of group.disabled) {\n if (isRuleEnabled(rules[conflictingRule])) {\n conflicts.push({\n description: group.description,\n owner: group.owner,\n conflictingRule,\n ownerSetting,\n conflictingSetting: rules[conflictingRule],\n })\n }\n }\n }\n\n return conflicts\n}\n\nexport function assertNoRuleOwnershipConflicts(configs: readonly Linter.Config[]): void {\n const conflicts = findRuleOwnershipConflicts(mergeConfigRules(configs))\n\n if (conflicts.length === 0) {\n return\n }\n\n const details = conflicts.map(conflict => (\n `${conflict.owner} conflicts with ${conflict.conflictingRule} (${conflict.description})`\n )).join('\\n')\n\n throw new Error(`ESLint rule ownership conflicts detected:\\n${details}`)\n}\n", "import esStylistic from '@stylistic/eslint-plugin'\nimport tsPlugin from '@typescript-eslint/eslint-plugin'\nimport type { ESLint, Linter } from 'eslint'\n\nimport {\n scopeConfigs,\n scriptFiles,\n scriptLanguageOptions,\n typeCheckedLanguageOptions,\n} from '../shared.ts'\n\nconst flatConfigs = tsPlugin.configs as Record<string, Linter.Config[]>\n\nconst memberOrderingRule: Linter.RuleEntry = [\n 'warn',\n {\n default: {\n memberTypes: [\n 'signature',\n 'call-signature',\n 'public-static-field',\n 'protected-static-field',\n 'private-static-field',\n 'public-decorated-field',\n 'protected-decorated-field',\n 'private-decorated-field',\n 'public-instance-field',\n 'protected-instance-field',\n 'private-instance-field',\n 'public-abstract-field',\n 'protected-abstract-field',\n 'public-field',\n 'protected-field',\n 'private-field',\n 'static-field',\n 'instance-field',\n 'abstract-field',\n 'decorated-field',\n 'field',\n 'public-constructor',\n 'protected-constructor',\n 'private-constructor',\n 'constructor',\n ['public-static-get', 'public-static-set'],\n ['protected-static-get', 'protected-static-set'],\n ['private-static-get', 'private-static-set'],\n ['public-decorated-get', 'public-decorated-set'],\n ['protected-decorated-get', 'protected-decorated-set'],\n ['private-decorated-get', 'private-decorated-set'],\n ['public-instance-get', 'public-instance-set'],\n ['protected-instance-get', 'protected-instance-set'],\n ['private-instance-get', 'private-instance-set'],\n ['public-abstract-get', 'public-abstract-set'],\n ['protected-abstract-get', 'protected-abstract-set'],\n ['public-get', 'public-set'],\n ['protected-get', 'protected-set'],\n ['private-get', 'private-set'],\n ['static-get', 'static-set'],\n ['instance-get', 'instance-set'],\n ['abstract-get', 'abstract-set'],\n ['decorated-get', 'decorated-set'],\n 'get',\n 'set',\n 'public-static-method',\n 'protected-static-method',\n 'private-static-method',\n 'public-decorated-method',\n 'protected-decorated-method',\n 'private-decorated-method',\n 'public-instance-method',\n 'protected-instance-method',\n 'private-instance-method',\n 'public-abstract-method',\n 'protected-abstract-method',\n 'public-method',\n 'protected-method',\n 'private-method',\n 'static-method',\n 'instance-method',\n 'abstract-method',\n 'decorated-method',\n 'method',\n ],\n order: 'alphabetically',\n },\n },\n]\n\nfunction createCorrectnessOverride(languageOptions: Linter.LanguageOptions): Linter.Config {\n return {\n files: scriptFiles,\n languageOptions,\n rules: {\n '@typescript-eslint/no-unused-vars': [\n 'warn',\n {\n argsIgnorePattern: '^_', varsIgnorePattern: '^_', ignoreRestSiblings: true,\n },\n ],\n '@typescript-eslint/require-await': 'off',\n '@typescript-eslint/explicit-module-boundary-types': 'off',\n '@typescript-eslint/no-empty-object-type': ['off'],\n '@typescript-eslint/triple-slash-reference': ['off'],\n // Tier 3 opinionated \u2014 enabled in opinionatedConfig\n '@typescript-eslint/strict-boolean-expressions': ['off'],\n // Owned by @stylistic/quotes\n 'quotes': ['off'],\n // Owned by @stylistic/semi\n 'semi': ['off'],\n // Owned by unicorn/prefer-spread\n 'prefer-spread': ['off'],\n 'require-await': 'off',\n },\n }\n}\n\nfunction createConsistencyOverride(languageOptions: Linter.LanguageOptions): Linter.Config {\n return {\n files: scriptFiles,\n languageOptions,\n plugins: { '@stylistic': esStylistic as unknown as ESLint.Plugin },\n rules: {\n ...esStylistic.configs.recommended.rules,\n '@typescript-eslint/no-empty-function': 'warn',\n '@stylistic/eol-last': 'warn',\n '@typescript-eslint/explicit-member-accessibility': ['warn', { accessibility: 'no-public' }],\n '@stylistic/brace-style': ['warn', '1tbs', { allowSingleLine: true }],\n '@stylistic/quotes': ['warn', 'single', { avoidEscape: true }],\n '@typescript-eslint/consistent-type-imports': ['warn', { fixStyle: 'separate-type-imports', prefer: 'type-imports' }],\n '@stylistic/object-property-newline': ['warn', { allowAllPropertiesOnSameLine: true }],\n '@stylistic/function-call-argument-newline': ['warn', 'consistent'],\n '@stylistic/function-paren-newline': ['warn', 'multiline-arguments'],\n '@stylistic/member-delimiter-style': [\n 'error',\n {\n multiline: {\n delimiter: 'none',\n requireLast: true,\n },\n singleline: {\n delimiter: 'semi',\n requireLast: false,\n },\n },\n ],\n '@stylistic/object-curly-newline': ['warn', {\n ObjectExpression: {\n multiline: true, minProperties: 3, consistent: false,\n },\n ObjectPattern: {\n multiline: true, minProperties: 3, consistent: false,\n },\n ImportDeclaration: {\n multiline: true, minProperties: 3, consistent: false,\n },\n ExportDeclaration: {\n multiline: true, minProperties: 3, consistent: false,\n },\n }],\n '@stylistic/max-len': ['warn', { code: 200 }],\n 'no-restricted-syntax': [\n 'warn',\n {\n selector: 'TSEnumDeclaration',\n message: 'Enums are disallowed. Consider using a union of string literals or a `const` object instead.',\n },\n ],\n '@typescript-eslint/member-ordering': memberOrderingRule,\n },\n }\n}\n\nexport const typescriptDelegationConfig: Linter.Config = {\n files: scriptFiles,\n rules: {\n // Owned by unicorn/prefer-spread \u2014 stylistic presets may re-enable the core rule\n 'prefer-spread': 'off',\n // Owned by @stylistic/semi\n 'semi': 'off',\n // Owned by @stylistic/quotes\n 'quotes': 'off',\n },\n}\n\nexport const typescriptCorrectnessConfig: Linter.Config[] = [\n ...scopeConfigs(flatConfigs['flat/recommended'], { files: scriptFiles, languageOptions: scriptLanguageOptions }),\n createCorrectnessOverride(scriptLanguageOptions),\n]\n\nexport const typescriptConsistencyConfig: Linter.Config[] = [\n ...scopeConfigs(flatConfigs['flat/stylistic'], { files: scriptFiles, languageOptions: scriptLanguageOptions }),\n createConsistencyOverride(scriptLanguageOptions),\n]\n\nexport const typescriptTypeCheckedCorrectnessConfig: Linter.Config[] = [\n ...scopeConfigs(flatConfigs['flat/recommended-type-checked'], { files: scriptFiles, languageOptions: typeCheckedLanguageOptions }),\n createCorrectnessOverride(typeCheckedLanguageOptions),\n {\n files: scriptFiles,\n languageOptions: typeCheckedLanguageOptions,\n rules: { '@typescript-eslint/no-deprecated': 'warn' },\n },\n]\n\nexport const typescriptTypeCheckedConsistencyConfig: Linter.Config[] = [\n ...scopeConfigs(flatConfigs['flat/stylistic-type-checked'], { files: scriptFiles, languageOptions: typeCheckedLanguageOptions }),\n createConsistencyOverride(typeCheckedLanguageOptions),\n]\n\nexport const typescriptConfig: Linter.Config[] = [\n ...typescriptCorrectnessConfig,\n ...typescriptConsistencyConfig,\n typescriptDelegationConfig,\n]\n\nexport const typescriptTypeCheckedConfig: Linter.Config[] = [\n ...typescriptTypeCheckedCorrectnessConfig,\n ...typescriptTypeCheckedConsistencyConfig,\n typescriptDelegationConfig,\n]\n", "import type { Linter } from 'eslint'\n\nimport { scriptFiles } from '../shared.ts'\nimport { unicornV66MigrationQueue } from '../unicorn/index.ts'\n\nconst filenameCaseRuleOptions = {\n cases: {\n kebabCase: true,\n pascalCase: true,\n },\n}\n\nfunction filenameCaseRule(severity: 'error' | 'warn'): Linter.RuleEntry {\n return [severity, filenameCaseRuleOptions]\n}\n\nexport const opinionatedLayerConfig: Linter.Config = {\n files: scriptFiles,\n rules: {\n '@typescript-eslint/strict-boolean-expressions': 'warn',\n 'unicorn/filename-case': filenameCaseRule('warn'),\n 'unicorn/no-await-expression-member': 'warn',\n 'unicorn/number-literal-case': 'warn',\n 'workspaces/no-relative-imports': 'warn',\n 'workspaces/require-dependency': 'warn',\n },\n}\n\nexport const strictPromotionRules: Linter.Config['rules'] = {\n '@stylistic/eol-last': 'error',\n '@typescript-eslint/no-empty-function': 'error',\n '@typescript-eslint/no-deprecated': 'error',\n 'array-element-newline': 'error',\n 'import-x/no-absolute-path': 'error',\n 'import-x/no-cycle': 'error',\n 'import-x/no-restricted-paths': 'error',\n 'import-x/no-self-import': 'error',\n 'import-x/no-useless-path-segments': 'error',\n 'no-restricted-syntax': 'error',\n 'simple-import-sort/exports': 'error',\n 'simple-import-sort/imports': 'error',\n 'sonarjs/deprecation': 'error',\n\n 'sonarjs/no-dead-store': 'error',\n 'sonarjs/no-identical-functions': 'error',\n 'sonarjs/no-redundant-jump': 'error',\n 'sonarjs/public-static-readonly': 'error',\n 'unicorn/no-useless-undefined': 'error',\n ...Object.fromEntries(unicornV66MigrationQueue.map(rule => [rule, 'error'])),\n 'unicorn/filename-case': filenameCaseRule('error'),\n ...Object.fromEntries([\n '@typescript-eslint/consistent-type-imports',\n '@typescript-eslint/explicit-member-accessibility',\n '@typescript-eslint/member-ordering',\n '@stylistic/brace-style',\n '@stylistic/function-call-argument-newline',\n '@stylistic/function-paren-newline',\n '@stylistic/object-curly-newline',\n '@stylistic/object-property-newline',\n '@stylistic/quotes',\n '@stylistic/max-len',\n 'unicorn/no-await-expression-member',\n 'unicorn/number-literal-case',\n 'workspaces/no-relative-imports',\n 'workspaces/require-dependency',\n '@typescript-eslint/strict-boolean-expressions',\n ].map(rule => [rule, 'error'])),\n}\n\nexport const strictLayerConfig: Linter.Config = {\n files: scriptFiles,\n rules: strictPromotionRules,\n}\n", "import type { Linter } from 'eslint'\n\nimport {\n bestPracticesCoreConfig,\n correctnessCoreConfig,\n} from '../core/index.ts'\nimport { importConfig } from '../import/index.ts'\nimport { markdownConfig } from '../markdown/index.ts'\nimport { consistencyRulesConfig } from '../rules/index.ts'\nimport { sonarConfig } from '../sonar/index.ts'\nimport {\n typescriptConsistencyConfig,\n typescriptCorrectnessConfig,\n typescriptDelegationConfig,\n typescriptTypeCheckedConsistencyConfig,\n typescriptTypeCheckedCorrectnessConfig,\n} from '../typescript/index.ts'\nimport { opinionatedLayerConfig, strictLayerConfig } from './opinionated.ts'\n\nfunction mergeTierConfigs(...parts: readonly Linter.Config[][]): Linter.Config[] {\n return parts.flat()\n}\n\n/**\n * Tier 0 \u2014 correctness: type safety, bug prevention, import restrictions.\n * Each subsequent tier is a superset of the previous tier.\n */\nexport const configTier0Correctness: Linter.Config[] = mergeTierConfigs(\n markdownConfig,\n correctnessCoreConfig,\n typescriptCorrectnessConfig,\n)\n\nexport const configTier0CorrectnessTypeChecked: Linter.Config[] = mergeTierConfigs(\n markdownConfig,\n correctnessCoreConfig,\n typescriptTypeCheckedCorrectnessConfig,\n)\n\n/**\n * Tier 1 \u2014 consistency: Tier 0 plus formatting, member ordering, and complexity limits.\n */\nexport const configTier1Consistency: Linter.Config[] = mergeTierConfigs(\n configTier0Correctness,\n [consistencyRulesConfig],\n typescriptConsistencyConfig,\n [typescriptDelegationConfig],\n)\n\nexport const configTier1ConsistencyTypeChecked: Linter.Config[] = mergeTierConfigs(\n configTier0CorrectnessTypeChecked,\n [consistencyRulesConfig],\n typescriptTypeCheckedConsistencyConfig,\n [typescriptDelegationConfig],\n)\n\n/**\n * Tier 2 \u2014 best practices: Tier 1 plus unicorn and import validation.\n * This is the recommended default for XY Labs repositories.\n */\nexport const configTier2BestPractices: Linter.Config[] = mergeTierConfigs(\n configTier1Consistency,\n bestPracticesCoreConfig,\n importConfig,\n)\n\nexport const configTier2BestPracticesTypeChecked: Linter.Config[] = mergeTierConfigs(\n configTier1ConsistencyTypeChecked,\n bestPracticesCoreConfig,\n importConfig,\n)\n\n/**\n * Tier 3 \u2014 opinionated: Tier 2 plus stricter optional rules (still mostly warnings).\n */\nexport const configTier3Opinionated: Linter.Config[] = mergeTierConfigs(\n configTier2BestPractices,\n [opinionatedLayerConfig],\n)\n\nexport const configTier3OpinionatedTypeChecked: Linter.Config[] = mergeTierConfigs(\n configTier2BestPracticesTypeChecked,\n [opinionatedLayerConfig],\n)\n\n/**\n * Tier 4 \u2014 strict: Tier 3 plus SonarJS and promotion of warnings to errors.\n */\nexport const configTier4Strict: Linter.Config[] = mergeTierConfigs(\n configTier3Opinionated,\n [sonarConfig, strictLayerConfig],\n)\n\nexport const configTier4StrictTypeChecked: Linter.Config[] = mergeTierConfigs(\n configTier3OpinionatedTypeChecked,\n [sonarConfig, strictLayerConfig],\n)\n\n/** @deprecated Use `configTier2BestPractices` instead. */\nexport const recommendedConfig: Linter.Config[] = configTier2BestPractices\n\n/** @deprecated Use `configTier2BestPracticesTypeChecked` instead. */\nexport const recommendedTypeCheckedConfig: Linter.Config[] = configTier2BestPracticesTypeChecked\n\n/** Compatibility alias \u2014 identical to `configTier2BestPracticesTypeChecked`. */\nexport const config: Linter.Config[] = configTier2BestPracticesTypeChecked\n", "import js from '@eslint/js'\nimport json from '@eslint/json'\nimport markdown from '@eslint/markdown'\nimport esStylistic from '@stylistic/eslint-plugin'\nimport tsPlugin from '@typescript-eslint/eslint-plugin'\nimport type { ESLint } from 'eslint'\nimport importPlugin from 'eslint-plugin-import-x'\nimport simpleImportSort from 'eslint-plugin-simple-import-sort'\nimport sonarjs from 'eslint-plugin-sonarjs'\nimport unicornPlugin from 'eslint-plugin-unicorn'\nimport workspacesPlugin from 'eslint-plugin-workspaces'\n\nconst compareStrings = (left: string, right: string): number => left.localeCompare(right)\n\nexport interface PluginRuleSnapshot {\n readonly plugin: string\n readonly rules: readonly string[]\n readonly source: string\n}\n\nfunction sortedRuleNames(rules: Record<string, unknown> | undefined): string[] {\n if (!rules) {\n return []\n }\n\n return Object.keys(rules).toSorted(compareStrings)\n}\n\nfunction sortedRuleNamesFromConfigs(\n configs: { rules?: Record<string, unknown> }[] | undefined,\n): string[] {\n if (!configs) {\n return []\n }\n\n const merged: Record<string, unknown> = {}\n for (const entry of configs) {\n if (entry.rules) {\n Object.assign(merged, entry.rules)\n }\n }\n\n return sortedRuleNames(merged)\n}\n\nfunction pluginRuleNames(plugin: ESLint.Plugin): string[] {\n if (!plugin.rules) {\n return []\n }\n\n const prefix = typeof plugin.meta?.name === 'string'\n ? plugin.meta.name.replace(/^eslint-plugin-/, '').replace(/^@eslint\\//, '')\n : 'unknown'\n\n return Object.keys(plugin.rules)\n .toSorted(compareStrings)\n .map(ruleName => `${prefix}/${ruleName}`)\n}\n\nexport function collectPluginRuleSnapshots(): PluginRuleSnapshot[] {\n const unicornRecommended = unicornPlugin.configs['flat/recommended'] as undefined | { rules?: Record<string, unknown> }\n const importRecommended = importPlugin.flatConfigs.recommended as { rules?: Record<string, unknown> }\n const flatConfigs = tsPlugin.configs as Record<string, { rules?: Record<string, unknown> }[]>\n const workspacesRecommended = (\n workspacesPlugin as { configs: { recommended: { rules?: Record<string, unknown> } } }\n ).configs.recommended\n\n return [\n {\n plugin: '@eslint/js',\n rules: sortedRuleNames(js.configs.recommended.rules),\n source: 'configs.recommended',\n },\n {\n plugin: '@eslint/json',\n rules: pluginRuleNames(json),\n source: 'plugin.rules',\n },\n {\n plugin: '@eslint/markdown',\n rules: sortedRuleNames(\n (markdown.configs.recommended as { rules?: Record<string, unknown> }[])[0]?.rules,\n ),\n source: 'configs.recommended',\n },\n {\n plugin: '@stylistic/eslint-plugin',\n rules: sortedRuleNames(esStylistic.configs.recommended.rules),\n source: 'configs.recommended',\n },\n {\n plugin: '@typescript-eslint/eslint-plugin',\n rules: sortedRuleNamesFromConfigs(flatConfigs['flat/recommended-type-checked']),\n source: 'configs.flat/recommended-type-checked',\n },\n {\n plugin: '@typescript-eslint/eslint-plugin',\n rules: sortedRuleNamesFromConfigs(flatConfigs['flat/stylistic-type-checked']),\n source: 'configs.flat/stylistic-type-checked',\n },\n {\n plugin: 'eslint-plugin-import-x',\n rules: sortedRuleNames(importRecommended.rules),\n source: 'flatConfigs.recommended',\n },\n {\n plugin: 'eslint-plugin-import-x',\n rules: sortedRuleNames(importPlugin.flatConfigs.typescript.rules),\n source: 'flatConfigs.typescript',\n },\n {\n plugin: 'eslint-plugin-simple-import-sort',\n rules: pluginRuleNames(simpleImportSort),\n source: 'plugin.rules',\n },\n {\n plugin: 'eslint-plugin-sonarjs',\n rules: pluginRuleNames(sonarjs),\n source: 'plugin.rules',\n },\n {\n plugin: 'eslint-plugin-unicorn',\n rules: sortedRuleNames(unicornRecommended?.rules),\n source: 'configs.flat/recommended',\n },\n {\n plugin: 'eslint-plugin-workspaces',\n rules: sortedRuleNames(workspacesRecommended.rules),\n source: 'configs.recommended',\n },\n ]\n}\n\nexport function serializePluginRuleSnapshots(snapshots: readonly PluginRuleSnapshot[]): string {\n return `${JSON.stringify(snapshots, null, 2)}\\n`\n}\n", "import type { Linter } from 'eslint'\n\nimport {\n json5Config, jsoncConfig,\n jsonConfig,\n} from './json/index.ts'\nimport { markdownConfig } from './markdown/index.ts'\n\nexport const docsConfig: Linter.Config[] = [\n ...markdownConfig,\n jsonConfig,\n jsoncConfig,\n json5Config,\n]\n\nexport {\n bestPracticesCoreConfig,\n coreConfig,\n correctnessCoreConfig,\n} from './core/index.ts'\nexport { ignores } from './ignores.ts'\nexport { importConfig } from './import/index.ts'\nexport {\n json5Config, jsoncConfig,\n jsonConfig,\n} from './json/index.ts'\nexport { markdownConfig } from './markdown/index.ts'\nexport {\n consistencyRulesConfig,\n correctnessRulesConfig,\n rulesConfig,\n srcImportsConfig,\n} from './rules/index.ts'\nexport { sonarConfig } from './sonar/index.ts'\nexport {\n assertNoRuleOwnershipConflicts,\n findRuleOwnershipConflicts,\n mergeConfigRules,\n RULE_OWNERSHIP_GROUPS,\n} from './tiers/conflicts.ts'\nexport * from './tiers/index.ts'\nexport {\n opinionatedLayerConfig,\n strictLayerConfig,\n strictPromotionRules,\n} from './tiers/opinionated.ts'\nexport {\n collectPluginRuleSnapshots,\n serializePluginRuleSnapshots,\n} from './tiers/plugin-rules.ts'\nexport {\n typescriptConfig,\n typescriptConsistencyConfig,\n typescriptCorrectnessConfig,\n typescriptDelegationConfig,\n typescriptTypeCheckedConfig,\n typescriptTypeCheckedConsistencyConfig,\n typescriptTypeCheckedCorrectnessConfig,\n} from './typescript/index.ts'\nexport {\n unicornConfig,\n unicornV66MigrationQueue,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n unicornV66NewRules,\n} from './unicorn/index.ts'\nexport { workspacesConfig } from './workspaces/index.ts'\n"],
5
+ "mappings": "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",
6
6
  "names": ["config", "restrictedImportPaths", "js", "json", "markdown", "esStylistic", "tsPlugin", "importPlugin", "simpleImportSort", "sonarjs", "unicornPlugin", "workspacesPlugin", "flatConfigs"]
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"opinionated.d.ts","sourceRoot":"","sources":["../../../src/tiers/opinionated.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAKpC,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAU3C,CAAA;AAED,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAuCvD,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAGtC,CAAA"}
1
+ {"version":3,"file":"opinionated.d.ts","sourceRoot":"","sources":["../../../src/tiers/opinionated.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAgBpC,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAU3C,CAAA;AAED,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAuCvD,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAGtC,CAAA"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "http://json.schemastore.org/package.json",
3
3
  "name": "@xylabs/eslint-config-flat",
4
- "version": "8.2.2",
4
+ "version": "8.2.3",
5
5
  "description": "ESLint Config used throughout XY Labs TypeScript/JavaScript libraries and react projects",
6
6
  "keywords": [
7
7
  "xylabs",
@@ -59,8 +59,8 @@
59
59
  "typescript": "^6.0.3",
60
60
  "vite": "^8.0.16",
61
61
  "vitest": "~4.1.8",
62
- "@xylabs/tsconfig": "~8.2.2",
63
- "@xylabs/toolchain": "~8.2.2"
62
+ "@xylabs/tsconfig": "~8.2.3",
63
+ "@xylabs/toolchain": "~8.2.3"
64
64
  },
65
65
  "peerDependencies": {
66
66
  "browserslist": ">= 4.21.0",