@xylabs/eslint-config-flat 8.2.10 → 8.2.12
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/README.md +7 -5
- package/dist/neutral/index.d.ts +2 -2
- package/dist/neutral/index.d.ts.map +1 -1
- package/dist/neutral/index.mjs +57 -13
- package/dist/neutral/index.mjs.map +3 -3
- package/dist/neutral/tiers/index.d.ts +5 -4
- package/dist/neutral/tiers/index.d.ts.map +1 -1
- package/dist/neutral/tiers/opinionated.d.ts +13 -0
- package/dist/neutral/tiers/opinionated.d.ts.map +1 -1
- package/dist/neutral/unicorn/index.d.ts +3 -0
- package/dist/neutral/unicorn/index.d.ts.map +1 -1
- package/dist/node/index.d.ts +2 -2
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.mjs +57 -13
- package/dist/node/index.mjs.map +3 -3
- package/dist/node/tiers/index.d.ts +5 -4
- package/dist/node/tiers/index.d.ts.map +1 -1
- package/dist/node/tiers/opinionated.d.ts +13 -0
- package/dist/node/tiers/opinionated.d.ts.map +1 -1
- package/dist/node/unicorn/index.d.ts +3 -0
- package/dist/node/unicorn/index.d.ts.map +1 -1
- package/package.json +9 -9
package/README.md
CHANGED
|
@@ -56,15 +56,17 @@ Each tier is a **superset** of the previous tier. Pick the strictness level that
|
|
|
56
56
|
| `configTier0Correctness` | 0 | Type safety, bug prevention, import restrictions |
|
|
57
57
|
| `configTier1Consistency` | 1 | Tier 0 + formatting, member ordering, complexity limits |
|
|
58
58
|
| `configTier2BestPractices` | 2 | Tier 1 + unicorn and import validation |
|
|
59
|
-
| `configTier3Opinionated` | 3 | Tier 2 +
|
|
60
|
-
| `
|
|
59
|
+
| `configTier3Opinionated` | 3 | Tier 2 + SonarJS, unicorn v66 warnings, and optional rules promoted to errors |
|
|
60
|
+
| `configTier4Experimental` | 4 | Tier 3 + unicorn v67 warnings (v66 remain warnings; canary tier) |
|
|
61
61
|
|
|
62
62
|
Type-checked variants append `TypeChecked` (for example `configTier3OpinionatedTypeChecked`).
|
|
63
63
|
|
|
64
|
+
Rules introduced only at tier 3 or 4 default to **warnings**. Use `xy lint --strict` (or `XY_STRICT=1`) to treat warnings as errors in CI.
|
|
65
|
+
|
|
64
66
|
```ts
|
|
65
|
-
import {
|
|
67
|
+
import { configTier4ExperimentalTypeChecked } from '@xylabs/eslint-config-flat'
|
|
66
68
|
|
|
67
|
-
export default [...
|
|
69
|
+
export default [...configTier4ExperimentalTypeChecked]
|
|
68
70
|
```
|
|
69
71
|
|
|
70
72
|
`config` is deprecated. Use `configTier3OpinionatedTypeChecked` instead.
|
|
@@ -104,7 +106,7 @@ import {
|
|
|
104
106
|
|
|
105
107
|
- TypeScript strict linting via `@typescript-eslint`
|
|
106
108
|
- Import sorting and validation via `eslint-plugin-import-x`
|
|
107
|
-
- Code quality checks via `eslint-plugin-sonarjs` (
|
|
109
|
+
- Code quality checks via `eslint-plugin-sonarjs` (opinionated tier)
|
|
108
110
|
- Best practices via `eslint-plugin-unicorn`
|
|
109
111
|
- Monorepo workspace rules via `eslint-plugin-workspaces`
|
|
110
112
|
- Markdown linting via `eslint-plugin-markdown`
|
package/dist/neutral/index.d.ts
CHANGED
|
@@ -9,9 +9,9 @@ export { consistencyRulesConfig, correctnessRulesConfig, rulesConfig, srcImports
|
|
|
9
9
|
export { sonarConfig } from './sonar/index.ts';
|
|
10
10
|
export { assertNoRuleOwnershipConflicts, findRuleOwnershipConflicts, mergeConfigRules, RULE_OWNERSHIP_GROUPS, } from './tiers/conflicts.ts';
|
|
11
11
|
export * from './tiers/index.ts';
|
|
12
|
-
export { opinionatedLayerConfig, strictLayerConfig, strictPromotionRules, } from './tiers/opinionated.ts';
|
|
12
|
+
export { experimentalLayerConfig, experimentalPromotionRules, experimentalUnicornLayerConfig, opinionatedLayerConfig, opinionatedPromotionLayerConfig, opinionatedPromotionRules, opinionatedUnicornV66LayerConfig, 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';
|
|
15
|
-
export { unicornConfig, unicornV66MigrationQueue, unicornV66NewRules, } from './unicorn/index.ts';
|
|
15
|
+
export { unicornConfig, unicornExperimentalMigrationQueue, unicornV66MigrationQueue, unicornV66NewRules, unicornV67MigrationQueue, } from './unicorn/index.ts';
|
|
16
16
|
export { workspacesConfig } from './workspaces/index.ts';
|
|
17
17
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -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,cAAc,kBAAkB,CAAA;AAChC,OAAO,
|
|
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,EAEL,uBAAuB,EAEvB,0BAA0B,EAC1B,8BAA8B,EAC9B,sBAAsB,EACtB,+BAA+B,EAC/B,yBAAyB,EACzB,gCAAgC,EAEhC,iBAAiB,EAEjB,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,EAEb,iCAAiC,EACjC,wBAAwB,EAExB,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA"}
|
package/dist/neutral/index.mjs
CHANGED
|
@@ -297,13 +297,35 @@ var unicornV66MigrationQueue = [
|
|
|
297
297
|
"unicorn/require-array-sort-compare",
|
|
298
298
|
"unicorn/require-proxy-trap-boolean-return"
|
|
299
299
|
];
|
|
300
|
+
var unicornV67MigrationQueue = [
|
|
301
|
+
"unicorn/consistent-boolean-name",
|
|
302
|
+
"unicorn/logical-assignment-operators",
|
|
303
|
+
"unicorn/no-array-splice",
|
|
304
|
+
"unicorn/no-non-function-verb-prefix",
|
|
305
|
+
"unicorn/no-top-level-assignment-in-function",
|
|
306
|
+
"unicorn/no-uncalled-method",
|
|
307
|
+
"unicorn/no-unreadable-for-of-expression",
|
|
308
|
+
"unicorn/no-useless-coercion",
|
|
309
|
+
"unicorn/no-useless-continue",
|
|
310
|
+
"unicorn/no-useless-override",
|
|
311
|
+
"unicorn/operator-assignment",
|
|
312
|
+
"unicorn/prefer-array-slice",
|
|
313
|
+
"unicorn/prefer-else-if",
|
|
314
|
+
"unicorn/prefer-has-check",
|
|
315
|
+
"unicorn/prefer-map-from-entries"
|
|
316
|
+
];
|
|
317
|
+
var unicornExperimentalMigrationQueue = unicornV67MigrationQueue;
|
|
300
318
|
var unicornV66NewRules = unicornV66MigrationQueue;
|
|
319
|
+
function unicornQueueRules(queue, severity) {
|
|
320
|
+
return Object.fromEntries(queue.map((rule) => [rule, severity]));
|
|
321
|
+
}
|
|
301
322
|
var unicornConfig = {
|
|
302
323
|
...unicornPlugin.configs.recommended,
|
|
303
324
|
plugins: { unicorn: unicornPlugin },
|
|
304
325
|
rules: {
|
|
305
326
|
...unicornPlugin.configs.recommended.rules,
|
|
306
|
-
...
|
|
327
|
+
...unicornQueueRules(unicornV66MigrationQueue, "off"),
|
|
328
|
+
...unicornQueueRules(unicornV67MigrationQueue, "off"),
|
|
307
329
|
// Owned by @typescript-eslint/member-ordering
|
|
308
330
|
"unicorn/consistent-class-member-order": ["off"],
|
|
309
331
|
// Owned by max-nested-callbacks
|
|
@@ -780,6 +802,9 @@ var filenameCaseRuleOptions = {
|
|
|
780
802
|
function filenameCaseRule(severity) {
|
|
781
803
|
return [severity, filenameCaseRuleOptions];
|
|
782
804
|
}
|
|
805
|
+
function unicornQueueRules2(queue, severity) {
|
|
806
|
+
return Object.fromEntries(queue.map((rule) => [rule, severity]));
|
|
807
|
+
}
|
|
783
808
|
var opinionatedLayerConfig = {
|
|
784
809
|
files: scriptFiles,
|
|
785
810
|
rules: {
|
|
@@ -793,7 +818,11 @@ var opinionatedLayerConfig = {
|
|
|
793
818
|
"workspaces/require-dependency": "warn"
|
|
794
819
|
}
|
|
795
820
|
};
|
|
796
|
-
var
|
|
821
|
+
var opinionatedUnicornV66LayerConfig = {
|
|
822
|
+
files: scriptFiles,
|
|
823
|
+
rules: unicornQueueRules2(unicornV66MigrationQueue, "warn")
|
|
824
|
+
};
|
|
825
|
+
var opinionatedPromotionRules = {
|
|
797
826
|
"@stylistic/eol-last": "error",
|
|
798
827
|
"@typescript-eslint/no-empty-function": "error",
|
|
799
828
|
"@typescript-eslint/no-deprecated": "error",
|
|
@@ -812,7 +841,6 @@ var strictPromotionRules = {
|
|
|
812
841
|
"sonarjs/no-redundant-jump": "error",
|
|
813
842
|
"sonarjs/public-static-readonly": "error",
|
|
814
843
|
"unicorn/no-useless-undefined": "error",
|
|
815
|
-
...Object.fromEntries(unicornV66MigrationQueue.map((rule) => [rule, "error"])),
|
|
816
844
|
"no-extra-boolean-cast": "off",
|
|
817
845
|
"unicorn/no-useless-boolean-cast": "off",
|
|
818
846
|
"unicorn/filename-case": filenameCaseRule("error"),
|
|
@@ -834,10 +862,18 @@ var strictPromotionRules = {
|
|
|
834
862
|
"@typescript-eslint/strict-boolean-expressions"
|
|
835
863
|
].map((rule) => [rule, "error"]))
|
|
836
864
|
};
|
|
837
|
-
var
|
|
865
|
+
var opinionatedPromotionLayerConfig = {
|
|
866
|
+
files: scriptFiles,
|
|
867
|
+
rules: opinionatedPromotionRules
|
|
868
|
+
};
|
|
869
|
+
var strictPromotionRules = opinionatedPromotionRules;
|
|
870
|
+
var strictLayerConfig = opinionatedPromotionLayerConfig;
|
|
871
|
+
var experimentalUnicornLayerConfig = {
|
|
838
872
|
files: scriptFiles,
|
|
839
|
-
rules:
|
|
873
|
+
rules: unicornQueueRules2(unicornV67MigrationQueue, "warn")
|
|
840
874
|
};
|
|
875
|
+
var experimentalLayerConfig = experimentalUnicornLayerConfig;
|
|
876
|
+
var experimentalPromotionRules = experimentalUnicornLayerConfig.rules;
|
|
841
877
|
|
|
842
878
|
// src/tiers/index.ts
|
|
843
879
|
function mergeTierConfigs(...parts) {
|
|
@@ -877,19 +913,19 @@ var configTier2BestPracticesTypeChecked = mergeTierConfigs(
|
|
|
877
913
|
);
|
|
878
914
|
var configTier3Opinionated = mergeTierConfigs(
|
|
879
915
|
configTier2BestPractices,
|
|
880
|
-
[
|
|
916
|
+
[sonarConfig, opinionatedUnicornV66LayerConfig, opinionatedPromotionLayerConfig]
|
|
881
917
|
);
|
|
882
918
|
var configTier3OpinionatedTypeChecked = mergeTierConfigs(
|
|
883
919
|
configTier2BestPracticesTypeChecked,
|
|
884
|
-
[
|
|
920
|
+
[sonarConfig, opinionatedUnicornV66LayerConfig, opinionatedPromotionLayerConfig]
|
|
885
921
|
);
|
|
886
|
-
var
|
|
922
|
+
var configTier4Experimental = mergeTierConfigs(
|
|
887
923
|
configTier3Opinionated,
|
|
888
|
-
[
|
|
924
|
+
[experimentalUnicornLayerConfig]
|
|
889
925
|
);
|
|
890
|
-
var
|
|
926
|
+
var configTier4ExperimentalTypeChecked = mergeTierConfigs(
|
|
891
927
|
configTier3OpinionatedTypeChecked,
|
|
892
|
-
[
|
|
928
|
+
[experimentalUnicornLayerConfig]
|
|
893
929
|
);
|
|
894
930
|
var recommendedConfig = configTier2BestPractices;
|
|
895
931
|
var recommendedTypeCheckedConfig = configTier2BestPracticesTypeChecked;
|
|
@@ -1028,13 +1064,16 @@ export {
|
|
|
1028
1064
|
configTier2BestPracticesTypeChecked,
|
|
1029
1065
|
configTier3Opinionated,
|
|
1030
1066
|
configTier3OpinionatedTypeChecked,
|
|
1031
|
-
|
|
1032
|
-
|
|
1067
|
+
configTier4Experimental,
|
|
1068
|
+
configTier4ExperimentalTypeChecked,
|
|
1033
1069
|
consistencyRulesConfig,
|
|
1034
1070
|
coreConfig,
|
|
1035
1071
|
correctnessCoreConfig,
|
|
1036
1072
|
correctnessRulesConfig,
|
|
1037
1073
|
docsConfig,
|
|
1074
|
+
experimentalLayerConfig,
|
|
1075
|
+
experimentalPromotionRules,
|
|
1076
|
+
experimentalUnicornLayerConfig,
|
|
1038
1077
|
findRuleOwnershipConflicts,
|
|
1039
1078
|
ignores,
|
|
1040
1079
|
importConfig,
|
|
@@ -1044,6 +1083,9 @@ export {
|
|
|
1044
1083
|
markdownConfig,
|
|
1045
1084
|
mergeConfigRules,
|
|
1046
1085
|
opinionatedLayerConfig,
|
|
1086
|
+
opinionatedPromotionLayerConfig,
|
|
1087
|
+
opinionatedPromotionRules,
|
|
1088
|
+
opinionatedUnicornV66LayerConfig,
|
|
1047
1089
|
recommendedConfig,
|
|
1048
1090
|
recommendedTypeCheckedConfig,
|
|
1049
1091
|
rulesConfig,
|
|
@@ -1060,8 +1102,10 @@ export {
|
|
|
1060
1102
|
typescriptTypeCheckedConsistencyConfig,
|
|
1061
1103
|
typescriptTypeCheckedCorrectnessConfig,
|
|
1062
1104
|
unicornConfig,
|
|
1105
|
+
unicornExperimentalMigrationQueue,
|
|
1063
1106
|
unicornV66MigrationQueue,
|
|
1064
1107
|
unicornV66NewRules,
|
|
1108
|
+
unicornV67MigrationQueue,
|
|
1065
1109
|
workspacesConfig
|
|
1066
1110
|
};
|
|
1067
1111
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -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 { scopeConfig, scopeConfigs } from '../shared.ts'\n\nconst markdownFiles = ['**/*.md']\n\nexport const markdownConfig: Linter.Config[] = [\n ...scopeConfigs(markdown.configs.recommended),\n scopeConfig({ rules: { 'markdown/fenced-code-language': 'off' } }, { files: markdownFiles }),\n]\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\nfunction currentWorkingDirectory(): string | undefined {\n return (globalThis as { process?: { cwd?: () => string } }).process?.cwd?.()\n}\n\nconst tsconfigRootDir = currentWorkingDirectory()\nconst typeCheckedParserOptions: Record<string, unknown> = {\n ...scriptLanguageOptions.parserOptions,\n projectService: true,\n}\n\nif (tsconfigRootDir !== undefined) {\n typeCheckedParserOptions.tsconfigRootDir = tsconfigRootDir\n}\n\nexport const typeCheckedLanguageOptions: Linter.LanguageOptions = {\n ...scriptLanguageOptions,\n parserOptions: typeCheckedParserOptions,\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 {\n description: 'Explicit boolean coercion for non-boolean values',\n owner: '@typescript-eslint/strict-boolean-expressions',\n disabled: ['no-extra-boolean-cast', 'unicorn/no-useless-boolean-cast'],\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 camelCase: true,\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 'no-extra-boolean-cast': 'off',\n 'unicorn/filename-case': filenameCaseRule('warn'),\n 'unicorn/no-await-expression-member': 'warn',\n 'unicorn/no-useless-boolean-cast': 'off',\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 'no-extra-boolean-cast': 'off',\n 'unicorn/no-useless-boolean-cast': 'off',\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/** @deprecated Use `configTier3OpinionatedTypeChecked` instead. */\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
|
-
"names": ["config", "restrictedImportPaths", "js", "json", "markdown", "esStylistic", "tsPlugin", "importPlugin", "simpleImportSort", "sonarjs", "unicornPlugin", "workspacesPlugin", "flatConfigs"]
|
|
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 { scopeConfig, scopeConfigs } from '../shared.ts'\n\nconst markdownFiles = ['**/*.md']\n\nexport const markdownConfig: Linter.Config[] = [\n ...scopeConfigs(markdown.configs.recommended),\n scopeConfig({ rules: { 'markdown/fenced-code-language': 'off' } }, { files: markdownFiles }),\n]\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\nfunction currentWorkingDirectory(): string | undefined {\n return (globalThis as { process?: { cwd?: () => string } }).process?.cwd?.()\n}\n\nconst tsconfigRootDir = currentWorkingDirectory()\nconst typeCheckedParserOptions: Record<string, unknown> = {\n ...scriptLanguageOptions.parserOptions,\n projectService: true,\n}\n\nif (tsconfigRootDir !== undefined) {\n typeCheckedParserOptions.tsconfigRootDir = tsconfigRootDir\n}\n\nexport const typeCheckedLanguageOptions: Linter.LanguageOptions = {\n ...scriptLanguageOptions,\n parserOptions: typeCheckedParserOptions,\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 enabled as warnings at tier 3.\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// New recommended rules in eslint-plugin-unicorn v67 \u2014 enabled as warnings at tier 4.\nexport const unicornV67MigrationQueue = [\n 'unicorn/consistent-boolean-name',\n 'unicorn/logical-assignment-operators',\n 'unicorn/no-array-splice',\n 'unicorn/no-non-function-verb-prefix',\n 'unicorn/no-top-level-assignment-in-function',\n 'unicorn/no-uncalled-method',\n 'unicorn/no-unreadable-for-of-expression',\n 'unicorn/no-useless-coercion',\n 'unicorn/no-useless-continue',\n 'unicorn/no-useless-override',\n 'unicorn/operator-assignment',\n 'unicorn/prefer-array-slice',\n 'unicorn/prefer-else-if',\n 'unicorn/prefer-has-check',\n 'unicorn/prefer-map-from-entries',\n] as const\n\n/** @deprecated Use `unicornV67MigrationQueue` instead. */\nexport const unicornExperimentalMigrationQueue = unicornV67MigrationQueue\n\n/** @deprecated Use `unicornV66MigrationQueue` instead. */\nexport const unicornV66NewRules = unicornV66MigrationQueue\n\nfunction unicornQueueRules(\n queue: readonly string[],\n severity: 'off' | 'warn',\n): NonNullable<Linter.Config['rules']> {\n return Object.fromEntries(queue.map(rule => [rule, severity]))\n}\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 ...unicornQueueRules(unicornV66MigrationQueue, 'off'),\n ...unicornQueueRules(unicornV67MigrationQueue, 'off'),\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 {\n description: 'Explicit boolean coercion for non-boolean values',\n owner: '@typescript-eslint/strict-boolean-expressions',\n disabled: ['no-extra-boolean-cast', 'unicorn/no-useless-boolean-cast'],\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 {\n unicornV66MigrationQueue,\n unicornV67MigrationQueue,\n} from '../unicorn/index.ts'\n\nconst filenameCaseRuleOptions = {\n cases: {\n camelCase: true,\n kebabCase: true,\n pascalCase: true,\n },\n}\n\nfunction filenameCaseRule(severity: 'error' | 'warn'): Linter.RuleEntry {\n return [severity, filenameCaseRuleOptions]\n}\n\nfunction unicornQueueRules(\n queue: readonly string[],\n severity: 'off' | 'warn',\n): NonNullable<Linter.Config['rules']> {\n return Object.fromEntries(queue.map(rule => [rule, severity]))\n}\n\n/** Optional rules at warning severity before tier 3 promotion. */\nexport const opinionatedLayerConfig: Linter.Config = {\n files: scriptFiles,\n rules: {\n '@typescript-eslint/strict-boolean-expressions': 'warn',\n 'no-extra-boolean-cast': 'off',\n 'unicorn/filename-case': filenameCaseRule('warn'),\n 'unicorn/no-await-expression-member': 'warn',\n 'unicorn/no-useless-boolean-cast': 'off',\n 'unicorn/number-literal-case': 'warn',\n 'workspaces/no-relative-imports': 'warn',\n 'workspaces/require-dependency': 'warn',\n },\n}\n\n/** Tier 3 \u2014 eslint-plugin-unicorn v66 rules introduced as warnings. */\nexport const opinionatedUnicornV66LayerConfig: Linter.Config = {\n files: scriptFiles,\n rules: unicornQueueRules(unicornV66MigrationQueue, 'warn'),\n}\n\nexport const opinionatedPromotionRules: 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 'no-extra-boolean-cast': 'off',\n 'unicorn/no-useless-boolean-cast': 'off',\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 opinionatedPromotionLayerConfig: Linter.Config = {\n files: scriptFiles,\n rules: opinionatedPromotionRules,\n}\n\n/** @deprecated Use `opinionatedPromotionRules` instead. */\nexport const strictPromotionRules: Linter.Config['rules'] = opinionatedPromotionRules\n\n/** @deprecated Use `opinionatedPromotionLayerConfig` instead. */\nexport const strictLayerConfig: Linter.Config = opinionatedPromotionLayerConfig\n\n/** Tier 4 \u2014 eslint-plugin-unicorn v67 rules introduced as warnings (v66 inherited from tier 3). */\nexport const experimentalUnicornLayerConfig: Linter.Config = {\n files: scriptFiles,\n rules: unicornQueueRules(unicornV67MigrationQueue, 'warn'),\n}\n\n/** @deprecated Use `experimentalUnicornLayerConfig` instead. */\nexport const experimentalLayerConfig: Linter.Config = experimentalUnicornLayerConfig\n\n/** @deprecated Use `experimentalUnicornLayerConfig` instead. */\nexport const experimentalPromotionRules: Linter.Config['rules'] = experimentalUnicornLayerConfig.rules\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 {\n experimentalUnicornLayerConfig,\n opinionatedPromotionLayerConfig,\n opinionatedUnicornV66LayerConfig,\n} 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 SonarJS, unicorn v66 warnings, and promotion of optional rules to errors.\n */\nexport const configTier3Opinionated: Linter.Config[] = mergeTierConfigs(\n configTier2BestPractices,\n [sonarConfig, opinionatedUnicornV66LayerConfig, opinionatedPromotionLayerConfig],\n)\n\nexport const configTier3OpinionatedTypeChecked: Linter.Config[] = mergeTierConfigs(\n configTier2BestPracticesTypeChecked,\n [sonarConfig, opinionatedUnicornV66LayerConfig, opinionatedPromotionLayerConfig],\n)\n\n/**\n * Tier 4 \u2014 experimental: Tier 3 plus unicorn v67 warnings (v66 remain warnings).\n * New tier-only rules default to warnings; use `xy lint --strict` to treat them as errors.\n */\nexport const configTier4Experimental: Linter.Config[] = mergeTierConfigs(\n configTier3Opinionated,\n [experimentalUnicornLayerConfig],\n)\n\nexport const configTier4ExperimentalTypeChecked: Linter.Config[] = mergeTierConfigs(\n configTier3OpinionatedTypeChecked,\n [experimentalUnicornLayerConfig],\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/** @deprecated Use `configTier3OpinionatedTypeChecked` instead. */\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 // eslint-disable-next-line @typescript-eslint/no-deprecated -- backward-compatible re-exports\n experimentalLayerConfig,\n // eslint-disable-next-line @typescript-eslint/no-deprecated -- backward-compatible re-exports\n experimentalPromotionRules,\n experimentalUnicornLayerConfig,\n opinionatedLayerConfig,\n opinionatedPromotionLayerConfig,\n opinionatedPromotionRules,\n opinionatedUnicornV66LayerConfig,\n // eslint-disable-next-line @typescript-eslint/no-deprecated -- backward-compatible re-exports\n strictLayerConfig,\n // eslint-disable-next-line @typescript-eslint/no-deprecated -- backward-compatible re-exports\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 // eslint-disable-next-line @typescript-eslint/no-deprecated -- backward-compatible re-exports\n unicornExperimentalMigrationQueue,\n unicornV66MigrationQueue,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n unicornV66NewRules,\n unicornV67MigrationQueue,\n} from './unicorn/index.ts'\nexport { workspacesConfig } from './workspaces/index.ts'\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["config", "restrictedImportPaths", "unicornQueueRules", "js", "json", "markdown", "esStylistic", "tsPlugin", "importPlugin", "simpleImportSort", "sonarjs", "unicornPlugin", "workspacesPlugin", "flatConfigs"]
|
|
7
7
|
}
|
|
@@ -17,15 +17,16 @@ export declare const configTier1ConsistencyTypeChecked: Linter.Config[];
|
|
|
17
17
|
export declare const configTier2BestPractices: Linter.Config[];
|
|
18
18
|
export declare const configTier2BestPracticesTypeChecked: Linter.Config[];
|
|
19
19
|
/**
|
|
20
|
-
* Tier 3 — opinionated: Tier 2 plus
|
|
20
|
+
* Tier 3 — opinionated: Tier 2 plus SonarJS, unicorn v66 warnings, and promotion of optional rules to errors.
|
|
21
21
|
*/
|
|
22
22
|
export declare const configTier3Opinionated: Linter.Config[];
|
|
23
23
|
export declare const configTier3OpinionatedTypeChecked: Linter.Config[];
|
|
24
24
|
/**
|
|
25
|
-
* Tier 4 —
|
|
25
|
+
* Tier 4 — experimental: Tier 3 plus unicorn v67 warnings (v66 remain warnings).
|
|
26
|
+
* New tier-only rules default to warnings; use `xy lint --strict` to treat them as errors.
|
|
26
27
|
*/
|
|
27
|
-
export declare const
|
|
28
|
-
export declare const
|
|
28
|
+
export declare const configTier4Experimental: Linter.Config[];
|
|
29
|
+
export declare const configTier4ExperimentalTypeChecked: Linter.Config[];
|
|
29
30
|
/** @deprecated Use `configTier2BestPractices` instead. */
|
|
30
31
|
export declare const recommendedConfig: Linter.Config[];
|
|
31
32
|
/** @deprecated Use `configTier2BestPracticesTypeChecked` instead. */
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tiers/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AA2BpC;;;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;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAGlD,CAAA;AAED,eAAO,MAAM,kCAAkC,EAAE,MAAM,CAAC,MAAM,EAG7D,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,mEAAmE;AACnE,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAwC,CAAA"}
|
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
import type { Linter } from 'eslint';
|
|
2
|
+
/** Optional rules at warning severity before tier 3 promotion. */
|
|
2
3
|
export declare const opinionatedLayerConfig: Linter.Config;
|
|
4
|
+
/** Tier 3 — eslint-plugin-unicorn v66 rules introduced as warnings. */
|
|
5
|
+
export declare const opinionatedUnicornV66LayerConfig: Linter.Config;
|
|
6
|
+
export declare const opinionatedPromotionRules: Linter.Config['rules'];
|
|
7
|
+
export declare const opinionatedPromotionLayerConfig: Linter.Config;
|
|
8
|
+
/** @deprecated Use `opinionatedPromotionRules` instead. */
|
|
3
9
|
export declare const strictPromotionRules: Linter.Config['rules'];
|
|
10
|
+
/** @deprecated Use `opinionatedPromotionLayerConfig` instead. */
|
|
4
11
|
export declare const strictLayerConfig: Linter.Config;
|
|
12
|
+
/** Tier 4 — eslint-plugin-unicorn v67 rules introduced as warnings (v66 inherited from tier 3). */
|
|
13
|
+
export declare const experimentalUnicornLayerConfig: Linter.Config;
|
|
14
|
+
/** @deprecated Use `experimentalUnicornLayerConfig` instead. */
|
|
15
|
+
export declare const experimentalLayerConfig: Linter.Config;
|
|
16
|
+
/** @deprecated Use `experimentalUnicornLayerConfig` instead. */
|
|
17
|
+
export declare const experimentalPromotionRules: Linter.Config['rules'];
|
|
5
18
|
//# sourceMappingURL=opinionated.d.ts.map
|
|
@@ -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;AA2BpC,kEAAkE;AAClE,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAY3C,CAAA;AAED,uEAAuE;AACvE,eAAO,MAAM,gCAAgC,EAAE,MAAM,CAAC,MAGrD,CAAA;AAED,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAwC5D,CAAA;AAED,eAAO,MAAM,+BAA+B,EAAE,MAAM,CAAC,MAGpD,CAAA;AAED,2DAA2D;AAC3D,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAA6B,CAAA;AAErF,iEAAiE;AACjE,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAwC,CAAA;AAE/E,mGAAmG;AACnG,eAAO,MAAM,8BAA8B,EAAE,MAAM,CAAC,MAGnD,CAAA;AAED,gEAAgE;AAChE,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAuC,CAAA;AAEpF,gEAAgE;AAChE,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAwC,CAAA"}
|