eslint-plugin-ts-fortress 1.2.2 → 1.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -6
- package/dist/rules/prefer-canonical-length-constrained-type.d.mts.map +1 -1
- package/dist/rules/prefer-canonical-length-constrained-type.mjs +3 -2
- package/dist/rules/prefer-canonical-length-constrained-type.mjs.map +1 -1
- package/package.json +13 -11
- package/src/rules/prefer-canonical-length-constrained-type.mts +5 -6
package/README.md
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
# eslint-plugin-ts-fortress
|
|
2
2
|
|
|
3
3
|
ESLint rules that steer schema definitions toward
|
|
4
|
-
[`ts-fortress`](https://www.npmjs.com/package/ts-fortress) idioms. Every rule
|
|
5
|
-
auto-fixable, and every
|
|
4
|
+
[`ts-fortress`](https://www.npmjs.com/package/ts-fortress) idioms. Every rule except
|
|
5
|
+
`prefer-schema-over-guard-chain` (which only reports) is auto-fixable, and every
|
|
6
|
+
rewrite is **type-preserving**.
|
|
6
7
|
|
|
7
8
|
## Installation
|
|
8
9
|
|
|
@@ -93,12 +94,12 @@ import * as t from 'ts-fortress';
|
|
|
93
94
|
// ❌
|
|
94
95
|
const Tags = t.minLengthArray(1, t.string());
|
|
95
96
|
const Rgb = t.boundedLengthTuple(3, 3, t.number());
|
|
96
|
-
const Page = t.boundedLengthTuple(0,
|
|
97
|
+
const Page = t.boundedLengthTuple(0, 10, t.string());
|
|
97
98
|
|
|
98
99
|
// ✅
|
|
99
100
|
const Tags = t.nonEmptyArray(t.string());
|
|
100
101
|
const Rgb = t.fixedLengthTuple(3, t.number());
|
|
101
|
-
const Page = t.maxLengthTuple(
|
|
102
|
+
const Page = t.maxLengthTuple(10, t.string());
|
|
102
103
|
```
|
|
103
104
|
|
|
104
105
|
Each rewrite keeps the accepted values, the `defaultValue`, and the options
|
|
@@ -265,8 +266,8 @@ almost all of what a function-scoped count reports.
|
|
|
265
266
|
'ts-fortress/prefer-schema-over-guard-chain': ['error', { threshold: 4 }],
|
|
266
267
|
```
|
|
267
268
|
|
|
268
|
-
- `threshold` (default `5`) —
|
|
269
|
-
|
|
269
|
+
- `threshold` (default `5`) — the number of guards on one value at which a
|
|
270
|
+
single chain is reported.
|
|
270
271
|
- `guards` (default: the `ts-data-forge` narrowing helpers — `hasKey`,
|
|
271
272
|
`isRecord`, `isString`, `isNumber`, `isBoolean`, `isBigint`, `isSymbol`,
|
|
272
273
|
`isArray`, `isNonEmpty`, `isNonNullish`, `isNotNull`, `isNotUndefined`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prefer-canonical-length-constrained-type.d.mts","sourceRoot":"","sources":["../../src/rules/prefer-canonical-length-constrained-type.mts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EAEd,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"prefer-canonical-length-constrained-type.d.mts","sourceRoot":"","sources":["../../src/rules/prefer-canonical-length-constrained-type.mts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EAEd,MAAM,0BAA0B,CAAC;AAoBlC,KAAK,OAAO,GAAG,SAAS,EAAE,CAAC;AAE3B,KAAK,UAAU,GAAG,kBAAkB,CAAC;AAyFrC,eAAO,MAAM,oCAAoC,EAAE,QAAQ,CAAC,UAAU,CACpE,UAAU,EACV,OAAO,CA6HC,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { AST_NODE_TYPES, } from '@typescript-eslint/utils';
|
|
2
|
+
import { Arr } from 'ts-data-forge';
|
|
2
3
|
import { ARRAY_FN, BOUNDED_LENGTH_TUPLE_FN, FIXED_LENGTH_TUPLE_FN, MAX_LENGTH_TUPLE_FN, MIN_LENGTH_ARRAY_FN, MIN_LENGTH_TUPLE_FN, NON_EMPTY_ARRAY_FN, STRUCTURAL_PREFIX_CAP, } from './constants.mjs';
|
|
3
4
|
import { buildCalleeResolver, buildImportsFix, getImportedLocalName, getTsFortressImports, hasForeignBinding, } from './import-utils.mjs';
|
|
4
5
|
|
|
@@ -123,9 +124,9 @@ export const preferCanonicalLengthConstrainedType = {
|
|
|
123
124
|
},
|
|
124
125
|
'Program:exit': () => {
|
|
125
126
|
const reportable = mut_matches.filter((match) => match.localName !== undefined);
|
|
126
|
-
const namesNeedingImport =
|
|
127
|
+
const namesNeedingImport = Arr.uniq(reportable
|
|
127
128
|
.filter((match) => match.needsImport)
|
|
128
|
-
.map((match) => match.rewrite.to))
|
|
129
|
+
.map((match) => match.rewrite.to));
|
|
129
130
|
|
|
130
131
|
const importFixIndex = reportable.findIndex((match) => match.needsImport);
|
|
131
132
|
for (const [index, { node, propertyNode, rewrite, localName },] of reportable.entries()) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prefer-canonical-length-constrained-type.mjs","sourceRoot":"","sources":["../../src/rules/prefer-canonical-length-constrained-type.mts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"prefer-canonical-length-constrained-type.mjs","sourceRoot":"","sources":["../../src/rules/prefer-canonical-length-constrained-type.mts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eslint-plugin-ts-fortress",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.3",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "ESLint rules that steer schema definitions toward ts-fortress idioms.",
|
|
6
6
|
"keywords": [
|
|
@@ -35,21 +35,22 @@
|
|
|
35
35
|
"LICENSE"
|
|
36
36
|
],
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@typescript-eslint/utils": "8.
|
|
39
|
-
"ts-data-forge": "~14.7.
|
|
38
|
+
"@typescript-eslint/utils": "8.70.0",
|
|
39
|
+
"ts-data-forge": "~14.7.1",
|
|
40
40
|
"ts-type-forge": "~9.2.2"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
|
-
"@typescript-eslint/parser": "8.
|
|
44
|
-
"@typescript-eslint/rule-tester": "8.
|
|
43
|
+
"@typescript-eslint/parser": "8.70.0",
|
|
44
|
+
"@typescript-eslint/rule-tester": "8.70.0",
|
|
45
45
|
"dedent": "1.7.2",
|
|
46
|
-
"eslint-config-typed": "5.11.
|
|
47
|
-
"eslint-plugin-ts-data-forge": "0.
|
|
48
|
-
"eslint-plugin-ts-type-forge": "0.8.
|
|
46
|
+
"eslint-config-typed": "5.11.9",
|
|
47
|
+
"eslint-plugin-ts-data-forge": "0.8.1",
|
|
48
|
+
"eslint-plugin-ts-type-forge": "0.8.4",
|
|
49
49
|
"prettier": "3.9.6",
|
|
50
50
|
"prettier-plugin-organize-imports": "4.3.0",
|
|
51
51
|
"prettier-plugin-packagejson": "3.0.2",
|
|
52
|
-
"ts-
|
|
52
|
+
"ts-fortress": "12.1.3",
|
|
53
|
+
"ts-repo-utils": "10.6.2"
|
|
53
54
|
},
|
|
54
55
|
"peerDependencies": {
|
|
55
56
|
"eslint": ">=9.0.0",
|
|
@@ -65,18 +66,19 @@
|
|
|
65
66
|
},
|
|
66
67
|
"scripts": {
|
|
67
68
|
"build": "tsx --tsconfig ../../tools/configs/tsconfig.tsx.json ./scripts/cmd/build.mts",
|
|
68
|
-
"build:min": "tsx --tsconfig ../../tools/configs/tsconfig.tsx.json ./scripts/cmd/build.mts --skip-check",
|
|
69
69
|
"check:ext": "tsx --tsconfig ../../tools/configs/tsconfig.tsx.json ./scripts/cmd/check-ext.mts",
|
|
70
|
+
"doc": "pnpm run doc:embed",
|
|
71
|
+
"doc:embed": "tsx --tsconfig ../../tools/configs/tsconfig.tsx.json ./scripts/cmd/embed-examples.mts",
|
|
70
72
|
"fmt": "tsx --tsconfig ../../tools/configs/tsconfig.tsx.json ../../libs/ts-repo-utils/src/cmd/format-uncommitted.mts --cwd .",
|
|
71
73
|
"fmt:diff": "tsx --tsconfig ../../tools/configs/tsconfig.tsx.json ../../libs/ts-repo-utils/src/cmd/format-diff-from.mts origin/main --cwd .",
|
|
72
74
|
"fmt:full": "pnpm run z:prettier .",
|
|
73
75
|
"gen:rule-types": "tsx --tsconfig ../../tools/configs/tsconfig.tsx.json ./scripts/cmd/gen-rule-types.mts",
|
|
76
|
+
"gen:src": "pnpm run gen:rule-types",
|
|
74
77
|
"lint": "eslint .",
|
|
75
78
|
"lint:fix": "eslint . --fix",
|
|
76
79
|
"test": "pnpm run z:vitest run",
|
|
77
80
|
"test:cov": "pnpm run z:vitest run --coverage",
|
|
78
81
|
"testw": "pnpm run z:vitest",
|
|
79
|
-
"tsc": "node ../../node_modules/typescript-native/bin/tsc --noEmit",
|
|
80
82
|
"tscw": "node ../../node_modules/typescript-native/bin/tsc --noEmit --watch -p ./tsconfig.json",
|
|
81
83
|
"type-check": "node ../../node_modules/typescript-native/bin/tsc --noEmit",
|
|
82
84
|
"z:prettier": "prettier --config ../../.prettierrc --ignore-path ../../.prettierignore --ignore-path ../../.gitignore --ignore-unknown --no-error-on-unmatched-pattern --write",
|
|
@@ -3,6 +3,7 @@ import {
|
|
|
3
3
|
type TSESLint,
|
|
4
4
|
type TSESTree,
|
|
5
5
|
} from '@typescript-eslint/utils';
|
|
6
|
+
import { Arr } from 'ts-data-forge';
|
|
6
7
|
import {
|
|
7
8
|
ARRAY_FN,
|
|
8
9
|
BOUNDED_LENGTH_TUPLE_FN,
|
|
@@ -201,12 +202,10 @@ export const preferCanonicalLengthConstrainedType: TSESLint.RuleModule<
|
|
|
201
202
|
(match) => match.localName !== undefined,
|
|
202
203
|
);
|
|
203
204
|
|
|
204
|
-
const namesNeedingImport =
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
.map((match) => match.rewrite.to),
|
|
209
|
-
),
|
|
205
|
+
const namesNeedingImport = Arr.uniq(
|
|
206
|
+
reportable
|
|
207
|
+
.filter((match) => match.needsImport)
|
|
208
|
+
.map((match) => match.rewrite.to),
|
|
210
209
|
);
|
|
211
210
|
|
|
212
211
|
// Every missing import rides on a single report; see `buildImportsFix`.
|