@xylabs/eslint-config-flat 8.2.1 → 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.
- package/dist/neutral/index.d.ts +1 -1
- package/dist/neutral/index.d.ts.map +1 -1
- package/dist/neutral/index.mjs +42 -33
- package/dist/neutral/index.mjs.map +2 -2
- package/dist/neutral/tiers/index.d.ts +13 -13
- package/dist/neutral/tiers/index.d.ts.map +1 -1
- package/dist/neutral/tiers/opinionated.d.ts.map +1 -1
- package/dist/node/index.d.ts +1 -1
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.mjs +42 -33
- package/dist/node/index.mjs.map +2 -2
- package/dist/node/tiers/index.d.ts +13 -13
- package/dist/node/tiers/index.d.ts.map +1 -1
- package/dist/node/tiers/opinionated.d.ts.map +1 -1
- package/package.json +3 -3
package/dist/neutral/index.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ export { markdownConfig } from './markdown/index.ts';
|
|
|
8
8
|
export { consistencyRulesConfig, correctnessRulesConfig, rulesConfig, srcImportsConfig, } from './rules/index.ts';
|
|
9
9
|
export { sonarConfig } from './sonar/index.ts';
|
|
10
10
|
export { assertNoRuleOwnershipConflicts, findRuleOwnershipConflicts, mergeConfigRules, RULE_OWNERSHIP_GROUPS, } from './tiers/conflicts.ts';
|
|
11
|
-
export
|
|
11
|
+
export * from './tiers/index.ts';
|
|
12
12
|
export { opinionatedLayerConfig, strictLayerConfig, strictPromotionRules, } from './tiers/opinionated.ts';
|
|
13
13
|
export { collectPluginRuleSnapshots, serializePluginRuleSnapshots, } from './tiers/plugin-rules.ts';
|
|
14
14
|
export { typescriptConfig, typescriptConsistencyConfig, typescriptCorrectnessConfig, typescriptDelegationConfig, typescriptTypeCheckedConfig, typescriptTypeCheckedConsistencyConfig, typescriptTypeCheckedCorrectnessConfig, } from './typescript/index.ts';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAQpC,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAKrC,CAAA;AAED,OAAO,EACL,uBAAuB,EACvB,UAAU,EACV,qBAAqB,GACtB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EACL,WAAW,EAAE,WAAW,EACxB,UAAU,GACX,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,WAAW,EACX,gBAAgB,GACjB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EACL,8BAA8B,EAC9B,0BAA0B,EAC1B,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,sBAAsB,CAAA;AAC7B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAQpC,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAKrC,CAAA;AAED,OAAO,EACL,uBAAuB,EACvB,UAAU,EACV,qBAAqB,GACtB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EACL,WAAW,EAAE,WAAW,EACxB,UAAU,GACX,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,WAAW,EACX,gBAAgB,GACjB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EACL,8BAA8B,EAC9B,0BAA0B,EAC1B,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,sBAAsB,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAChC,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACL,gBAAgB,EAChB,2BAA2B,EAC3B,2BAA2B,EAC3B,0BAA0B,EAC1B,2BAA2B,EAC3B,sCAAsC,EACtC,sCAAsC,GACvC,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,aAAa,EACb,wBAAwB,EAExB,kBAAkB,GACnB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA"}
|
package/dist/neutral/index.mjs
CHANGED
|
@@ -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":
|
|
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",
|
|
@@ -813,57 +822,57 @@ var strictLayerConfig = {
|
|
|
813
822
|
function mergeTierConfigs(...parts) {
|
|
814
823
|
return parts.flat();
|
|
815
824
|
}
|
|
816
|
-
var
|
|
825
|
+
var configTier0Correctness = mergeTierConfigs(
|
|
817
826
|
markdownConfig,
|
|
818
827
|
correctnessCoreConfig,
|
|
819
828
|
typescriptCorrectnessConfig
|
|
820
829
|
);
|
|
821
|
-
var
|
|
830
|
+
var configTier0CorrectnessTypeChecked = mergeTierConfigs(
|
|
822
831
|
markdownConfig,
|
|
823
832
|
correctnessCoreConfig,
|
|
824
833
|
typescriptTypeCheckedCorrectnessConfig
|
|
825
834
|
);
|
|
826
|
-
var
|
|
827
|
-
|
|
835
|
+
var configTier1Consistency = mergeTierConfigs(
|
|
836
|
+
configTier0Correctness,
|
|
828
837
|
[consistencyRulesConfig],
|
|
829
838
|
typescriptConsistencyConfig,
|
|
830
839
|
[typescriptDelegationConfig]
|
|
831
840
|
);
|
|
832
|
-
var
|
|
833
|
-
|
|
841
|
+
var configTier1ConsistencyTypeChecked = mergeTierConfigs(
|
|
842
|
+
configTier0CorrectnessTypeChecked,
|
|
834
843
|
[consistencyRulesConfig],
|
|
835
844
|
typescriptTypeCheckedConsistencyConfig,
|
|
836
845
|
[typescriptDelegationConfig]
|
|
837
846
|
);
|
|
838
|
-
var
|
|
839
|
-
|
|
847
|
+
var configTier2BestPractices = mergeTierConfigs(
|
|
848
|
+
configTier1Consistency,
|
|
840
849
|
bestPracticesCoreConfig,
|
|
841
850
|
importConfig
|
|
842
851
|
);
|
|
843
|
-
var
|
|
844
|
-
|
|
852
|
+
var configTier2BestPracticesTypeChecked = mergeTierConfigs(
|
|
853
|
+
configTier1ConsistencyTypeChecked,
|
|
845
854
|
bestPracticesCoreConfig,
|
|
846
855
|
importConfig
|
|
847
856
|
);
|
|
848
|
-
var
|
|
849
|
-
|
|
857
|
+
var configTier3Opinionated = mergeTierConfigs(
|
|
858
|
+
configTier2BestPractices,
|
|
850
859
|
[opinionatedLayerConfig]
|
|
851
860
|
);
|
|
852
|
-
var
|
|
853
|
-
|
|
861
|
+
var configTier3OpinionatedTypeChecked = mergeTierConfigs(
|
|
862
|
+
configTier2BestPracticesTypeChecked,
|
|
854
863
|
[opinionatedLayerConfig]
|
|
855
864
|
);
|
|
856
|
-
var
|
|
857
|
-
|
|
865
|
+
var configTier4Strict = mergeTierConfigs(
|
|
866
|
+
configTier3Opinionated,
|
|
858
867
|
[sonarConfig, strictLayerConfig]
|
|
859
868
|
);
|
|
860
|
-
var
|
|
861
|
-
|
|
869
|
+
var configTier4StrictTypeChecked = mergeTierConfigs(
|
|
870
|
+
configTier3OpinionatedTypeChecked,
|
|
862
871
|
[sonarConfig, strictLayerConfig]
|
|
863
872
|
);
|
|
864
|
-
var recommendedConfig =
|
|
865
|
-
var recommendedTypeCheckedConfig =
|
|
866
|
-
var config =
|
|
873
|
+
var recommendedConfig = configTier2BestPractices;
|
|
874
|
+
var recommendedTypeCheckedConfig = configTier2BestPracticesTypeChecked;
|
|
875
|
+
var config = configTier2BestPracticesTypeChecked;
|
|
867
876
|
|
|
868
877
|
// src/tiers/plugin-rules.ts
|
|
869
878
|
import js2 from "@eslint/js";
|
|
@@ -987,19 +996,23 @@ var docsConfig = [
|
|
|
987
996
|
export {
|
|
988
997
|
RULE_OWNERSHIP_GROUPS,
|
|
989
998
|
assertNoRuleOwnershipConflicts,
|
|
990
|
-
bestPracticesConfig,
|
|
991
999
|
bestPracticesCoreConfig,
|
|
992
|
-
bestPracticesTypeCheckedConfig,
|
|
993
1000
|
collectPluginRuleSnapshots,
|
|
994
1001
|
config,
|
|
995
|
-
|
|
1002
|
+
configTier0Correctness,
|
|
1003
|
+
configTier0CorrectnessTypeChecked,
|
|
1004
|
+
configTier1Consistency,
|
|
1005
|
+
configTier1ConsistencyTypeChecked,
|
|
1006
|
+
configTier2BestPractices,
|
|
1007
|
+
configTier2BestPracticesTypeChecked,
|
|
1008
|
+
configTier3Opinionated,
|
|
1009
|
+
configTier3OpinionatedTypeChecked,
|
|
1010
|
+
configTier4Strict,
|
|
1011
|
+
configTier4StrictTypeChecked,
|
|
996
1012
|
consistencyRulesConfig,
|
|
997
|
-
consistencyTypeCheckedConfig,
|
|
998
1013
|
coreConfig,
|
|
999
|
-
correctnessConfig,
|
|
1000
1014
|
correctnessCoreConfig,
|
|
1001
1015
|
correctnessRulesConfig,
|
|
1002
|
-
correctnessTypeCheckedConfig,
|
|
1003
1016
|
docsConfig,
|
|
1004
1017
|
findRuleOwnershipConflicts,
|
|
1005
1018
|
ignores,
|
|
@@ -1009,19 +1022,15 @@ export {
|
|
|
1009
1022
|
jsoncConfig,
|
|
1010
1023
|
markdownConfig,
|
|
1011
1024
|
mergeConfigRules,
|
|
1012
|
-
opinionatedConfig,
|
|
1013
1025
|
opinionatedLayerConfig,
|
|
1014
|
-
opinionatedTypeCheckedConfig,
|
|
1015
1026
|
recommendedConfig,
|
|
1016
1027
|
recommendedTypeCheckedConfig,
|
|
1017
1028
|
rulesConfig,
|
|
1018
1029
|
serializePluginRuleSnapshots,
|
|
1019
1030
|
sonarConfig,
|
|
1020
1031
|
srcImportsConfig,
|
|
1021
|
-
strictConfig,
|
|
1022
1032
|
strictLayerConfig,
|
|
1023
1033
|
strictPromotionRules,
|
|
1024
|
-
strictTypeCheckedConfig,
|
|
1025
1034
|
typescriptConfig,
|
|
1026
1035
|
typescriptConsistencyConfig,
|
|
1027
1036
|
typescriptCorrectnessConfig,
|
|
@@ -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 correctnessConfig: Linter.Config[] = mergeTierConfigs(\n markdownConfig,\n correctnessCoreConfig,\n typescriptCorrectnessConfig,\n)\n\nexport const correctnessTypeCheckedConfig: 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 consistencyConfig: Linter.Config[] = mergeTierConfigs(\n correctnessConfig,\n [consistencyRulesConfig],\n typescriptConsistencyConfig,\n [typescriptDelegationConfig],\n)\n\nexport const consistencyTypeCheckedConfig: Linter.Config[] = mergeTierConfigs(\n correctnessTypeCheckedConfig,\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 bestPracticesConfig: Linter.Config[] = mergeTierConfigs(\n consistencyConfig,\n bestPracticesCoreConfig,\n importConfig,\n)\n\nexport const bestPracticesTypeCheckedConfig: Linter.Config[] = mergeTierConfigs(\n consistencyTypeCheckedConfig,\n bestPracticesCoreConfig,\n importConfig,\n)\n\n/**\n * Tier 3 \u2014 opinionated: Tier 2 plus stricter optional rules (still mostly warnings).\n */\nexport const opinionatedConfig: Linter.Config[] = mergeTierConfigs(\n bestPracticesConfig,\n [opinionatedLayerConfig],\n)\n\nexport const opinionatedTypeCheckedConfig: Linter.Config[] = mergeTierConfigs(\n bestPracticesTypeCheckedConfig,\n [opinionatedLayerConfig],\n)\n\n/**\n * Tier 4 \u2014 strict: Tier 3 plus SonarJS and promotion of warnings to errors.\n */\nexport const strictConfig: Linter.Config[] = mergeTierConfigs(\n opinionatedConfig,\n [sonarConfig, strictLayerConfig],\n)\n\nexport const strictTypeCheckedConfig: Linter.Config[] = mergeTierConfigs(\n opinionatedTypeCheckedConfig,\n [sonarConfig, strictLayerConfig],\n)\n\n/** @deprecated Use `bestPracticesConfig` instead. */\nexport const recommendedConfig: Linter.Config[] = bestPracticesConfig\n\n/** @deprecated Use `bestPracticesTypeCheckedConfig` instead. */\nexport const recommendedTypeCheckedConfig: Linter.Config[] = bestPracticesTypeCheckedConfig\n\n/** Compatibility alias \u2014 identical to `bestPracticesTypeCheckedConfig`. */\nexport const config: Linter.Config[] = bestPracticesTypeCheckedConfig\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 {\n bestPracticesConfig,\n bestPracticesTypeCheckedConfig,\n config,\n consistencyConfig,\n consistencyTypeCheckedConfig,\n correctnessConfig,\n correctnessTypeCheckedConfig,\n opinionatedConfig,\n opinionatedTypeCheckedConfig,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n recommendedConfig,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n recommendedTypeCheckedConfig,\n strictConfig,\n strictTypeCheckedConfig,\n} 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 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
|
}
|
|
@@ -3,33 +3,33 @@ import type { Linter } from 'eslint';
|
|
|
3
3
|
* Tier 0 — correctness: type safety, bug prevention, import restrictions.
|
|
4
4
|
* Each subsequent tier is a superset of the previous tier.
|
|
5
5
|
*/
|
|
6
|
-
export declare const
|
|
7
|
-
export declare const
|
|
6
|
+
export declare const configTier0Correctness: Linter.Config[];
|
|
7
|
+
export declare const configTier0CorrectnessTypeChecked: Linter.Config[];
|
|
8
8
|
/**
|
|
9
9
|
* Tier 1 — consistency: Tier 0 plus formatting, member ordering, and complexity limits.
|
|
10
10
|
*/
|
|
11
|
-
export declare const
|
|
12
|
-
export declare const
|
|
11
|
+
export declare const configTier1Consistency: Linter.Config[];
|
|
12
|
+
export declare const configTier1ConsistencyTypeChecked: Linter.Config[];
|
|
13
13
|
/**
|
|
14
14
|
* Tier 2 — best practices: Tier 1 plus unicorn and import validation.
|
|
15
15
|
* This is the recommended default for XY Labs repositories.
|
|
16
16
|
*/
|
|
17
|
-
export declare const
|
|
18
|
-
export declare const
|
|
17
|
+
export declare const configTier2BestPractices: Linter.Config[];
|
|
18
|
+
export declare const configTier2BestPracticesTypeChecked: Linter.Config[];
|
|
19
19
|
/**
|
|
20
20
|
* Tier 3 — opinionated: Tier 2 plus stricter optional rules (still mostly warnings).
|
|
21
21
|
*/
|
|
22
|
-
export declare const
|
|
23
|
-
export declare const
|
|
22
|
+
export declare const configTier3Opinionated: Linter.Config[];
|
|
23
|
+
export declare const configTier3OpinionatedTypeChecked: Linter.Config[];
|
|
24
24
|
/**
|
|
25
25
|
* Tier 4 — strict: Tier 3 plus SonarJS and promotion of warnings to errors.
|
|
26
26
|
*/
|
|
27
|
-
export declare const
|
|
28
|
-
export declare const
|
|
29
|
-
/** @deprecated Use `
|
|
27
|
+
export declare const configTier4Strict: Linter.Config[];
|
|
28
|
+
export declare const configTier4StrictTypeChecked: Linter.Config[];
|
|
29
|
+
/** @deprecated Use `configTier2BestPractices` instead. */
|
|
30
30
|
export declare const recommendedConfig: Linter.Config[];
|
|
31
|
-
/** @deprecated Use `
|
|
31
|
+
/** @deprecated Use `configTier2BestPracticesTypeChecked` instead. */
|
|
32
32
|
export declare const recommendedTypeCheckedConfig: Linter.Config[];
|
|
33
|
-
/** Compatibility alias — identical to `
|
|
33
|
+
/** Compatibility alias — identical to `configTier2BestPracticesTypeChecked`. */
|
|
34
34
|
export declare const config: Linter.Config[];
|
|
35
35
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tiers/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAuBpC;;;GAGG;AACH,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tiers/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAuBpC;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAIjD,CAAA;AAED,eAAO,MAAM,iCAAiC,EAAE,MAAM,CAAC,MAAM,EAI5D,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAKjD,CAAA;AAED,eAAO,MAAM,iCAAiC,EAAE,MAAM,CAAC,MAAM,EAK5D,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAInD,CAAA;AAED,eAAO,MAAM,mCAAmC,EAAE,MAAM,CAAC,MAAM,EAI9D,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAGjD,CAAA;AAED,eAAO,MAAM,iCAAiC,EAAE,MAAM,CAAC,MAAM,EAG5D,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAG5C,CAAA;AAED,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAGvD,CAAA;AAED,0DAA0D;AAC1D,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAA6B,CAAA;AAE1E,qEAAqE;AACrE,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAAwC,CAAA;AAEhG,gFAAgF;AAChF,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAwC,CAAA"}
|
|
@@ -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;
|
|
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/dist/node/index.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ export { markdownConfig } from './markdown/index.ts';
|
|
|
8
8
|
export { consistencyRulesConfig, correctnessRulesConfig, rulesConfig, srcImportsConfig, } from './rules/index.ts';
|
|
9
9
|
export { sonarConfig } from './sonar/index.ts';
|
|
10
10
|
export { assertNoRuleOwnershipConflicts, findRuleOwnershipConflicts, mergeConfigRules, RULE_OWNERSHIP_GROUPS, } from './tiers/conflicts.ts';
|
|
11
|
-
export
|
|
11
|
+
export * from './tiers/index.ts';
|
|
12
12
|
export { opinionatedLayerConfig, strictLayerConfig, strictPromotionRules, } from './tiers/opinionated.ts';
|
|
13
13
|
export { collectPluginRuleSnapshots, serializePluginRuleSnapshots, } from './tiers/plugin-rules.ts';
|
|
14
14
|
export { typescriptConfig, typescriptConsistencyConfig, typescriptCorrectnessConfig, typescriptDelegationConfig, typescriptTypeCheckedConfig, typescriptTypeCheckedConsistencyConfig, typescriptTypeCheckedCorrectnessConfig, } from './typescript/index.ts';
|
package/dist/node/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAQpC,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAKrC,CAAA;AAED,OAAO,EACL,uBAAuB,EACvB,UAAU,EACV,qBAAqB,GACtB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EACL,WAAW,EAAE,WAAW,EACxB,UAAU,GACX,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,WAAW,EACX,gBAAgB,GACjB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EACL,8BAA8B,EAC9B,0BAA0B,EAC1B,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,sBAAsB,CAAA;AAC7B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAQpC,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAKrC,CAAA;AAED,OAAO,EACL,uBAAuB,EACvB,UAAU,EACV,qBAAqB,GACtB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EACL,WAAW,EAAE,WAAW,EACxB,UAAU,GACX,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,WAAW,EACX,gBAAgB,GACjB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EACL,8BAA8B,EAC9B,0BAA0B,EAC1B,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,sBAAsB,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAChC,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACL,gBAAgB,EAChB,2BAA2B,EAC3B,2BAA2B,EAC3B,0BAA0B,EAC1B,2BAA2B,EAC3B,sCAAsC,EACtC,sCAAsC,GACvC,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,aAAa,EACb,wBAAwB,EAExB,kBAAkB,GACnB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA"}
|
package/dist/node/index.mjs
CHANGED
|
@@ -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":
|
|
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",
|
|
@@ -813,57 +822,57 @@ var strictLayerConfig = {
|
|
|
813
822
|
function mergeTierConfigs(...parts) {
|
|
814
823
|
return parts.flat();
|
|
815
824
|
}
|
|
816
|
-
var
|
|
825
|
+
var configTier0Correctness = mergeTierConfigs(
|
|
817
826
|
markdownConfig,
|
|
818
827
|
correctnessCoreConfig,
|
|
819
828
|
typescriptCorrectnessConfig
|
|
820
829
|
);
|
|
821
|
-
var
|
|
830
|
+
var configTier0CorrectnessTypeChecked = mergeTierConfigs(
|
|
822
831
|
markdownConfig,
|
|
823
832
|
correctnessCoreConfig,
|
|
824
833
|
typescriptTypeCheckedCorrectnessConfig
|
|
825
834
|
);
|
|
826
|
-
var
|
|
827
|
-
|
|
835
|
+
var configTier1Consistency = mergeTierConfigs(
|
|
836
|
+
configTier0Correctness,
|
|
828
837
|
[consistencyRulesConfig],
|
|
829
838
|
typescriptConsistencyConfig,
|
|
830
839
|
[typescriptDelegationConfig]
|
|
831
840
|
);
|
|
832
|
-
var
|
|
833
|
-
|
|
841
|
+
var configTier1ConsistencyTypeChecked = mergeTierConfigs(
|
|
842
|
+
configTier0CorrectnessTypeChecked,
|
|
834
843
|
[consistencyRulesConfig],
|
|
835
844
|
typescriptTypeCheckedConsistencyConfig,
|
|
836
845
|
[typescriptDelegationConfig]
|
|
837
846
|
);
|
|
838
|
-
var
|
|
839
|
-
|
|
847
|
+
var configTier2BestPractices = mergeTierConfigs(
|
|
848
|
+
configTier1Consistency,
|
|
840
849
|
bestPracticesCoreConfig,
|
|
841
850
|
importConfig
|
|
842
851
|
);
|
|
843
|
-
var
|
|
844
|
-
|
|
852
|
+
var configTier2BestPracticesTypeChecked = mergeTierConfigs(
|
|
853
|
+
configTier1ConsistencyTypeChecked,
|
|
845
854
|
bestPracticesCoreConfig,
|
|
846
855
|
importConfig
|
|
847
856
|
);
|
|
848
|
-
var
|
|
849
|
-
|
|
857
|
+
var configTier3Opinionated = mergeTierConfigs(
|
|
858
|
+
configTier2BestPractices,
|
|
850
859
|
[opinionatedLayerConfig]
|
|
851
860
|
);
|
|
852
|
-
var
|
|
853
|
-
|
|
861
|
+
var configTier3OpinionatedTypeChecked = mergeTierConfigs(
|
|
862
|
+
configTier2BestPracticesTypeChecked,
|
|
854
863
|
[opinionatedLayerConfig]
|
|
855
864
|
);
|
|
856
|
-
var
|
|
857
|
-
|
|
865
|
+
var configTier4Strict = mergeTierConfigs(
|
|
866
|
+
configTier3Opinionated,
|
|
858
867
|
[sonarConfig, strictLayerConfig]
|
|
859
868
|
);
|
|
860
|
-
var
|
|
861
|
-
|
|
869
|
+
var configTier4StrictTypeChecked = mergeTierConfigs(
|
|
870
|
+
configTier3OpinionatedTypeChecked,
|
|
862
871
|
[sonarConfig, strictLayerConfig]
|
|
863
872
|
);
|
|
864
|
-
var recommendedConfig =
|
|
865
|
-
var recommendedTypeCheckedConfig =
|
|
866
|
-
var config =
|
|
873
|
+
var recommendedConfig = configTier2BestPractices;
|
|
874
|
+
var recommendedTypeCheckedConfig = configTier2BestPracticesTypeChecked;
|
|
875
|
+
var config = configTier2BestPracticesTypeChecked;
|
|
867
876
|
|
|
868
877
|
// src/tiers/plugin-rules.ts
|
|
869
878
|
import js2 from "@eslint/js";
|
|
@@ -987,19 +996,23 @@ var docsConfig = [
|
|
|
987
996
|
export {
|
|
988
997
|
RULE_OWNERSHIP_GROUPS,
|
|
989
998
|
assertNoRuleOwnershipConflicts,
|
|
990
|
-
bestPracticesConfig,
|
|
991
999
|
bestPracticesCoreConfig,
|
|
992
|
-
bestPracticesTypeCheckedConfig,
|
|
993
1000
|
collectPluginRuleSnapshots,
|
|
994
1001
|
config,
|
|
995
|
-
|
|
1002
|
+
configTier0Correctness,
|
|
1003
|
+
configTier0CorrectnessTypeChecked,
|
|
1004
|
+
configTier1Consistency,
|
|
1005
|
+
configTier1ConsistencyTypeChecked,
|
|
1006
|
+
configTier2BestPractices,
|
|
1007
|
+
configTier2BestPracticesTypeChecked,
|
|
1008
|
+
configTier3Opinionated,
|
|
1009
|
+
configTier3OpinionatedTypeChecked,
|
|
1010
|
+
configTier4Strict,
|
|
1011
|
+
configTier4StrictTypeChecked,
|
|
996
1012
|
consistencyRulesConfig,
|
|
997
|
-
consistencyTypeCheckedConfig,
|
|
998
1013
|
coreConfig,
|
|
999
|
-
correctnessConfig,
|
|
1000
1014
|
correctnessCoreConfig,
|
|
1001
1015
|
correctnessRulesConfig,
|
|
1002
|
-
correctnessTypeCheckedConfig,
|
|
1003
1016
|
docsConfig,
|
|
1004
1017
|
findRuleOwnershipConflicts,
|
|
1005
1018
|
ignores,
|
|
@@ -1009,19 +1022,15 @@ export {
|
|
|
1009
1022
|
jsoncConfig,
|
|
1010
1023
|
markdownConfig,
|
|
1011
1024
|
mergeConfigRules,
|
|
1012
|
-
opinionatedConfig,
|
|
1013
1025
|
opinionatedLayerConfig,
|
|
1014
|
-
opinionatedTypeCheckedConfig,
|
|
1015
1026
|
recommendedConfig,
|
|
1016
1027
|
recommendedTypeCheckedConfig,
|
|
1017
1028
|
rulesConfig,
|
|
1018
1029
|
serializePluginRuleSnapshots,
|
|
1019
1030
|
sonarConfig,
|
|
1020
1031
|
srcImportsConfig,
|
|
1021
|
-
strictConfig,
|
|
1022
1032
|
strictLayerConfig,
|
|
1023
1033
|
strictPromotionRules,
|
|
1024
|
-
strictTypeCheckedConfig,
|
|
1025
1034
|
typescriptConfig,
|
|
1026
1035
|
typescriptConsistencyConfig,
|
|
1027
1036
|
typescriptCorrectnessConfig,
|
package/dist/node/index.mjs.map
CHANGED
|
@@ -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 correctnessConfig: Linter.Config[] = mergeTierConfigs(\n markdownConfig,\n correctnessCoreConfig,\n typescriptCorrectnessConfig,\n)\n\nexport const correctnessTypeCheckedConfig: 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 consistencyConfig: Linter.Config[] = mergeTierConfigs(\n correctnessConfig,\n [consistencyRulesConfig],\n typescriptConsistencyConfig,\n [typescriptDelegationConfig],\n)\n\nexport const consistencyTypeCheckedConfig: Linter.Config[] = mergeTierConfigs(\n correctnessTypeCheckedConfig,\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 bestPracticesConfig: Linter.Config[] = mergeTierConfigs(\n consistencyConfig,\n bestPracticesCoreConfig,\n importConfig,\n)\n\nexport const bestPracticesTypeCheckedConfig: Linter.Config[] = mergeTierConfigs(\n consistencyTypeCheckedConfig,\n bestPracticesCoreConfig,\n importConfig,\n)\n\n/**\n * Tier 3 \u2014 opinionated: Tier 2 plus stricter optional rules (still mostly warnings).\n */\nexport const opinionatedConfig: Linter.Config[] = mergeTierConfigs(\n bestPracticesConfig,\n [opinionatedLayerConfig],\n)\n\nexport const opinionatedTypeCheckedConfig: Linter.Config[] = mergeTierConfigs(\n bestPracticesTypeCheckedConfig,\n [opinionatedLayerConfig],\n)\n\n/**\n * Tier 4 \u2014 strict: Tier 3 plus SonarJS and promotion of warnings to errors.\n */\nexport const strictConfig: Linter.Config[] = mergeTierConfigs(\n opinionatedConfig,\n [sonarConfig, strictLayerConfig],\n)\n\nexport const strictTypeCheckedConfig: Linter.Config[] = mergeTierConfigs(\n opinionatedTypeCheckedConfig,\n [sonarConfig, strictLayerConfig],\n)\n\n/** @deprecated Use `bestPracticesConfig` instead. */\nexport const recommendedConfig: Linter.Config[] = bestPracticesConfig\n\n/** @deprecated Use `bestPracticesTypeCheckedConfig` instead. */\nexport const recommendedTypeCheckedConfig: Linter.Config[] = bestPracticesTypeCheckedConfig\n\n/** Compatibility alias \u2014 identical to `bestPracticesTypeCheckedConfig`. */\nexport const config: Linter.Config[] = bestPracticesTypeCheckedConfig\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 {\n bestPracticesConfig,\n bestPracticesTypeCheckedConfig,\n config,\n consistencyConfig,\n consistencyTypeCheckedConfig,\n correctnessConfig,\n correctnessTypeCheckedConfig,\n opinionatedConfig,\n opinionatedTypeCheckedConfig,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n recommendedConfig,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n recommendedTypeCheckedConfig,\n strictConfig,\n strictTypeCheckedConfig,\n} 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 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
|
}
|
|
@@ -3,33 +3,33 @@ import type { Linter } from 'eslint';
|
|
|
3
3
|
* Tier 0 — correctness: type safety, bug prevention, import restrictions.
|
|
4
4
|
* Each subsequent tier is a superset of the previous tier.
|
|
5
5
|
*/
|
|
6
|
-
export declare const
|
|
7
|
-
export declare const
|
|
6
|
+
export declare const configTier0Correctness: Linter.Config[];
|
|
7
|
+
export declare const configTier0CorrectnessTypeChecked: Linter.Config[];
|
|
8
8
|
/**
|
|
9
9
|
* Tier 1 — consistency: Tier 0 plus formatting, member ordering, and complexity limits.
|
|
10
10
|
*/
|
|
11
|
-
export declare const
|
|
12
|
-
export declare const
|
|
11
|
+
export declare const configTier1Consistency: Linter.Config[];
|
|
12
|
+
export declare const configTier1ConsistencyTypeChecked: Linter.Config[];
|
|
13
13
|
/**
|
|
14
14
|
* Tier 2 — best practices: Tier 1 plus unicorn and import validation.
|
|
15
15
|
* This is the recommended default for XY Labs repositories.
|
|
16
16
|
*/
|
|
17
|
-
export declare const
|
|
18
|
-
export declare const
|
|
17
|
+
export declare const configTier2BestPractices: Linter.Config[];
|
|
18
|
+
export declare const configTier2BestPracticesTypeChecked: Linter.Config[];
|
|
19
19
|
/**
|
|
20
20
|
* Tier 3 — opinionated: Tier 2 plus stricter optional rules (still mostly warnings).
|
|
21
21
|
*/
|
|
22
|
-
export declare const
|
|
23
|
-
export declare const
|
|
22
|
+
export declare const configTier3Opinionated: Linter.Config[];
|
|
23
|
+
export declare const configTier3OpinionatedTypeChecked: Linter.Config[];
|
|
24
24
|
/**
|
|
25
25
|
* Tier 4 — strict: Tier 3 plus SonarJS and promotion of warnings to errors.
|
|
26
26
|
*/
|
|
27
|
-
export declare const
|
|
28
|
-
export declare const
|
|
29
|
-
/** @deprecated Use `
|
|
27
|
+
export declare const configTier4Strict: Linter.Config[];
|
|
28
|
+
export declare const configTier4StrictTypeChecked: Linter.Config[];
|
|
29
|
+
/** @deprecated Use `configTier2BestPractices` instead. */
|
|
30
30
|
export declare const recommendedConfig: Linter.Config[];
|
|
31
|
-
/** @deprecated Use `
|
|
31
|
+
/** @deprecated Use `configTier2BestPracticesTypeChecked` instead. */
|
|
32
32
|
export declare const recommendedTypeCheckedConfig: Linter.Config[];
|
|
33
|
-
/** Compatibility alias — identical to `
|
|
33
|
+
/** Compatibility alias — identical to `configTier2BestPracticesTypeChecked`. */
|
|
34
34
|
export declare const config: Linter.Config[];
|
|
35
35
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tiers/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAuBpC;;;GAGG;AACH,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tiers/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAuBpC;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAIjD,CAAA;AAED,eAAO,MAAM,iCAAiC,EAAE,MAAM,CAAC,MAAM,EAI5D,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAKjD,CAAA;AAED,eAAO,MAAM,iCAAiC,EAAE,MAAM,CAAC,MAAM,EAK5D,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAInD,CAAA;AAED,eAAO,MAAM,mCAAmC,EAAE,MAAM,CAAC,MAAM,EAI9D,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAGjD,CAAA;AAED,eAAO,MAAM,iCAAiC,EAAE,MAAM,CAAC,MAAM,EAG5D,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAG5C,CAAA;AAED,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAGvD,CAAA;AAED,0DAA0D;AAC1D,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAA6B,CAAA;AAE1E,qEAAqE;AACrE,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAAwC,CAAA;AAEhG,gFAAgF;AAChF,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAwC,CAAA"}
|
|
@@ -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;
|
|
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.
|
|
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/
|
|
63
|
-
"@xylabs/
|
|
62
|
+
"@xylabs/tsconfig": "~8.2.3",
|
|
63
|
+
"@xylabs/toolchain": "~8.2.3"
|
|
64
64
|
},
|
|
65
65
|
"peerDependencies": {
|
|
66
66
|
"browserslist": ">= 4.21.0",
|