@xylabs/eslint-config-flat 8.2.0 → 8.2.2
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 +30 -2
- package/dist/neutral/core/index.d.ts +2 -0
- package/dist/neutral/core/index.d.ts.map +1 -1
- package/dist/neutral/import/index.d.ts.map +1 -1
- package/dist/neutral/index.d.ts +9 -8
- package/dist/neutral/index.d.ts.map +1 -1
- package/dist/neutral/index.mjs +648 -195
- package/dist/neutral/index.mjs.map +4 -4
- package/dist/neutral/rules/consistency.d.ts +3 -0
- package/dist/neutral/rules/consistency.d.ts.map +1 -0
- package/dist/neutral/rules/correctness.d.ts +3 -0
- package/dist/neutral/rules/correctness.d.ts.map +1 -0
- package/dist/neutral/rules/index.d.ts +2 -0
- package/dist/neutral/rules/index.d.ts.map +1 -1
- package/dist/neutral/sonar/index.d.ts.map +1 -1
- package/dist/neutral/tiers/conflicts.d.ts +20 -0
- package/dist/neutral/tiers/conflicts.d.ts.map +1 -0
- package/dist/neutral/tiers/index.d.ts +35 -0
- package/dist/neutral/tiers/index.d.ts.map +1 -0
- package/dist/neutral/tiers/opinionated.d.ts +5 -0
- package/dist/neutral/tiers/opinionated.d.ts.map +1 -0
- package/dist/neutral/tiers/plugin-rules.d.ts +8 -0
- package/dist/neutral/tiers/plugin-rules.d.ts.map +1 -0
- package/dist/neutral/typescript/index.d.ts +5 -0
- package/dist/neutral/typescript/index.d.ts.map +1 -1
- package/dist/neutral/unicorn/index.d.ts +3 -1
- package/dist/neutral/unicorn/index.d.ts.map +1 -1
- package/dist/neutral/workspaces/index.d.ts.map +1 -1
- package/dist/node/core/index.d.ts +2 -0
- package/dist/node/core/index.d.ts.map +1 -1
- package/dist/node/import/index.d.ts.map +1 -1
- package/dist/node/index.d.ts +9 -8
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.mjs +648 -195
- package/dist/node/index.mjs.map +4 -4
- package/dist/node/rules/consistency.d.ts +3 -0
- package/dist/node/rules/consistency.d.ts.map +1 -0
- package/dist/node/rules/correctness.d.ts +3 -0
- package/dist/node/rules/correctness.d.ts.map +1 -0
- package/dist/node/rules/index.d.ts +2 -0
- package/dist/node/rules/index.d.ts.map +1 -1
- package/dist/node/sonar/index.d.ts.map +1 -1
- package/dist/node/tiers/conflicts.d.ts +20 -0
- package/dist/node/tiers/conflicts.d.ts.map +1 -0
- package/dist/node/tiers/index.d.ts +35 -0
- package/dist/node/tiers/index.d.ts.map +1 -0
- package/dist/node/tiers/opinionated.d.ts +5 -0
- package/dist/node/tiers/opinionated.d.ts.map +1 -0
- package/dist/node/tiers/plugin-rules.d.ts +8 -0
- package/dist/node/tiers/plugin-rules.d.ts.map +1 -0
- package/dist/node/typescript/index.d.ts +5 -0
- package/dist/node/typescript/index.d.ts.map +1 -1
- package/dist/node/unicorn/index.d.ts +3 -1
- package/dist/node/unicorn/index.d.ts.map +1 -1
- package/dist/node/workspaces/index.d.ts.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -49,6 +49,28 @@ const eslintConfig: Linter.Config[] = [
|
|
|
49
49
|
export default eslintConfig
|
|
50
50
|
```
|
|
51
51
|
|
|
52
|
+
### Tiered presets
|
|
53
|
+
|
|
54
|
+
Each tier is a **superset** of the previous tier. Pick the strictness level that fits your project.
|
|
55
|
+
|
|
56
|
+
| Export | Tier | Description |
|
|
57
|
+
|--------|------|-------------|
|
|
58
|
+
| `correctnessConfig` | 0 | Type safety, bug prevention, import restrictions |
|
|
59
|
+
| `consistencyConfig` | 1 | Tier 0 + formatting, member ordering, complexity limits |
|
|
60
|
+
| `bestPracticesConfig` | 2 | Tier 1 + unicorn and import validation (**default**) |
|
|
61
|
+
| `opinionatedConfig` | 3 | Tier 2 + optional stricter rules (mostly warnings) |
|
|
62
|
+
| `strictConfig` | 4 | Tier 3 + SonarJS and warnings promoted to errors |
|
|
63
|
+
|
|
64
|
+
Type-checked variants append `TypeChecked` (for example `bestPracticesTypeCheckedConfig`).
|
|
65
|
+
|
|
66
|
+
```ts
|
|
67
|
+
import { strictTypeCheckedConfig } from '@xylabs/eslint-config-flat'
|
|
68
|
+
|
|
69
|
+
export default [...strictTypeCheckedConfig]
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
`config` and `recommendedTypeCheckedConfig` are compatibility aliases for `bestPracticesTypeCheckedConfig`.
|
|
73
|
+
|
|
52
74
|
### Extending with custom rules
|
|
53
75
|
|
|
54
76
|
```ts
|
|
@@ -85,7 +107,7 @@ import {
|
|
|
85
107
|
|
|
86
108
|
- TypeScript strict linting via `@typescript-eslint`
|
|
87
109
|
- Import sorting and validation via `eslint-plugin-import-x`
|
|
88
|
-
- Code quality checks via `eslint-plugin-sonarjs`
|
|
110
|
+
- Code quality checks via `eslint-plugin-sonarjs` (strict tier)
|
|
89
111
|
- Best practices via `eslint-plugin-unicorn`
|
|
90
112
|
- Monorepo workspace rules via `eslint-plugin-workspaces`
|
|
91
113
|
- Markdown linting via `eslint-plugin-markdown`
|
|
@@ -93,6 +115,12 @@ import {
|
|
|
93
115
|
|
|
94
116
|
For React projects, use [`@xylabs/eslint-config-react-flat`](https://www.npmjs.com/package/@xylabs/eslint-config-react-flat) instead.
|
|
95
117
|
|
|
118
|
+
## Rule ownership
|
|
119
|
+
|
|
120
|
+
Some plugins cover similar territory. This config assigns a single canonical owner per concern and disables overlapping rules. See `RULE_OWNERSHIP_GROUPS` and `assertNoRuleOwnershipConflicts` exported from this package.
|
|
121
|
+
|
|
122
|
+
When upgrading ESLint plugins, run tests in this package — `spec/plugin-rules.spec.ts` snapshots each plugin's rule list and fails when new rules appear.
|
|
123
|
+
|
|
96
124
|
|
|
97
125
|
## License
|
|
98
126
|
|
|
@@ -106,4 +134,4 @@ See the [LICENSE](LICENSE) file for license rights and limitations (LGPL-3.0-onl
|
|
|
106
134
|
[npm-link]: https://www.npmjs.com/package/@xylabs/eslint-config-flat
|
|
107
135
|
[license-badge]: https://img.shields.io/npm/l/@xylabs/eslint-config-flat.svg
|
|
108
136
|
[license-link]: https://github.com/xylabs/sdk-js/blob/main/LICENSE
|
|
109
|
-
[logo]: https://cdn.xy.company/img/brand/XYPersistentCompany_Logo_Icon_Colored.svg
|
|
137
|
+
[logo]: https://cdn.xy.company/img/brand/XYPersistentCompany_Logo_Icon_Colored.svg
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAapC,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAKhD,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAElD,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAIrC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/import/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAA;AAa5C,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/import/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAA;AAa5C,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAiCvC,CAAA"}
|
package/dist/neutral/index.d.ts
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import type { Linter } from 'eslint';
|
|
2
|
-
export declare const recommendedConfig: Linter.Config[];
|
|
3
|
-
export declare const recommendedTypeCheckedConfig: Linter.Config[];
|
|
4
2
|
export declare const docsConfig: Linter.Config[];
|
|
5
|
-
export
|
|
6
|
-
export {
|
|
7
|
-
export * from './ignores.ts';
|
|
3
|
+
export { bestPracticesCoreConfig, coreConfig, correctnessCoreConfig, } from './core/index.ts';
|
|
4
|
+
export { ignores } from './ignores.ts';
|
|
8
5
|
export { importConfig } from './import/index.ts';
|
|
9
6
|
export { json5Config, jsoncConfig, jsonConfig, } from './json/index.ts';
|
|
10
7
|
export { markdownConfig } from './markdown/index.ts';
|
|
11
|
-
export { rulesConfig, srcImportsConfig } from './rules/index.ts';
|
|
8
|
+
export { consistencyRulesConfig, correctnessRulesConfig, rulesConfig, srcImportsConfig, } from './rules/index.ts';
|
|
12
9
|
export { sonarConfig } from './sonar/index.ts';
|
|
13
|
-
export {
|
|
14
|
-
export
|
|
10
|
+
export { assertNoRuleOwnershipConflicts, findRuleOwnershipConflicts, mergeConfigRules, RULE_OWNERSHIP_GROUPS, } from './tiers/conflicts.ts';
|
|
11
|
+
export * from './tiers/index.ts';
|
|
12
|
+
export { opinionatedLayerConfig, strictLayerConfig, strictPromotionRules, } from './tiers/opinionated.ts';
|
|
13
|
+
export { collectPluginRuleSnapshots, serializePluginRuleSnapshots, } from './tiers/plugin-rules.ts';
|
|
14
|
+
export { typescriptConfig, typescriptConsistencyConfig, typescriptCorrectnessConfig, typescriptDelegationConfig, typescriptTypeCheckedConfig, typescriptTypeCheckedConsistencyConfig, typescriptTypeCheckedCorrectnessConfig, } from './typescript/index.ts';
|
|
15
|
+
export { unicornConfig, unicornV66MigrationQueue, unicornV66NewRules, } from './unicorn/index.ts';
|
|
15
16
|
export { workspacesConfig } from './workspaces/index.ts';
|
|
16
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;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAQpC,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAKrC,CAAA;AAED,OAAO,EACL,uBAAuB,EACvB,UAAU,EACV,qBAAqB,GACtB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EACL,WAAW,EAAE,WAAW,EACxB,UAAU,GACX,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,WAAW,EACX,gBAAgB,GACjB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EACL,8BAA8B,EAC9B,0BAA0B,EAC1B,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,sBAAsB,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAChC,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACL,gBAAgB,EAChB,2BAA2B,EAC3B,2BAA2B,EAC3B,0BAA0B,EAC1B,2BAA2B,EAC3B,sCAAsC,EACtC,sCAAsC,GACvC,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,aAAa,EACb,wBAAwB,EAExB,kBAAkB,GACnB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA"}
|