eslint-plugin-typefest 1.2.0 → 1.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.
Files changed (49) hide show
  1. package/README.md +6 -0
  2. package/dist/_internal/rule-catalog.d.ts.map +1 -1
  3. package/dist/_internal/rule-catalog.js +6 -0
  4. package/dist/_internal/rule-catalog.js.map +1 -1
  5. package/dist/_internal/rules-registry.d.ts.map +1 -1
  6. package/dist/_internal/rules-registry.js +12 -0
  7. package/dist/_internal/rules-registry.js.map +1 -1
  8. package/dist/plugin.cjs +488 -53
  9. package/dist/plugin.cjs.map +4 -4
  10. package/dist/rules/prefer-ts-extras-assert-never.d.ts +13 -0
  11. package/dist/rules/prefer-ts-extras-assert-never.d.ts.map +1 -0
  12. package/dist/rules/prefer-ts-extras-assert-never.js +116 -0
  13. package/dist/rules/prefer-ts-extras-assert-never.js.map +1 -0
  14. package/dist/rules/prefer-ts-extras-is-property-defined.d.ts +13 -0
  15. package/dist/rules/prefer-ts-extras-is-property-defined.d.ts.map +1 -0
  16. package/dist/rules/prefer-ts-extras-is-property-defined.js +160 -0
  17. package/dist/rules/prefer-ts-extras-is-property-defined.js.map +1 -0
  18. package/dist/rules/prefer-ts-extras-is-property-present.d.ts +13 -0
  19. package/dist/rules/prefer-ts-extras-is-property-present.d.ts.map +1 -0
  20. package/dist/rules/prefer-ts-extras-is-property-present.js +114 -0
  21. package/dist/rules/prefer-ts-extras-is-property-present.js.map +1 -0
  22. package/dist/rules/prefer-type-fest-absolute.d.ts +13 -0
  23. package/dist/rules/prefer-type-fest-absolute.d.ts.map +1 -0
  24. package/dist/rules/prefer-type-fest-absolute.js +67 -0
  25. package/dist/rules/prefer-type-fest-absolute.js.map +1 -0
  26. package/dist/rules/prefer-type-fest-non-nullable-deep.d.ts +13 -0
  27. package/dist/rules/prefer-type-fest-non-nullable-deep.d.ts.map +1 -0
  28. package/dist/rules/prefer-type-fest-non-nullable-deep.js +58 -0
  29. package/dist/rules/prefer-type-fest-non-nullable-deep.js.map +1 -0
  30. package/dist/rules/prefer-type-fest-union-length.d.ts +13 -0
  31. package/dist/rules/prefer-type-fest-union-length.d.ts.map +1 -0
  32. package/dist/rules/prefer-type-fest-union-length.js +75 -0
  33. package/dist/rules/prefer-type-fest-union-length.js.map +1 -0
  34. package/docs/rules/prefer-ts-extras-assert-never.md +112 -0
  35. package/docs/rules/prefer-ts-extras-is-property-defined.md +119 -0
  36. package/docs/rules/prefer-ts-extras-is-property-present.md +118 -0
  37. package/docs/rules/prefer-type-fest-absolute.md +99 -0
  38. package/docs/rules/prefer-type-fest-non-nullable-deep.md +105 -0
  39. package/docs/rules/prefer-type-fest-union-length.md +100 -0
  40. package/docs/rules/presets/all.md +6 -0
  41. package/docs/rules/presets/experimental.md +6 -0
  42. package/docs/rules/presets/index.md +6 -0
  43. package/docs/rules/presets/minimal.md +2 -0
  44. package/docs/rules/presets/recommended-type-checked.md +6 -0
  45. package/docs/rules/presets/recommended.md +6 -0
  46. package/docs/rules/presets/strict.md +6 -0
  47. package/docs/rules/presets/ts-extras-type-guards.md +3 -0
  48. package/docs/rules/presets/type-fest-types.md +3 -0
  49. package/package.json +26 -21
@@ -0,0 +1,100 @@
1
+ # prefer-type-fest-union-length
2
+
3
+ Require TypeFest [`UnionLength`](https://github.com/sindresorhus/type-fest/blob/main/source/union-length.d.ts) over `UnionToTuple<T>['length']`.
4
+
5
+ ## Targeted pattern scope
6
+
7
+ This rule reports `UnionToTuple<T>['length']` indexed-access type patterns and prefers the canonical `UnionLength<T>` from type-fest, which encapsulates the same intent with less visual noise.
8
+
9
+ ## What this rule reports
10
+
11
+ - `TSIndexedAccessType` nodes of the shape `UnionToTuple<T>['length']`.
12
+
13
+ ### Detection boundaries
14
+
15
+ - ✅ Reports `UnionToTuple<T>['length']` with exactly one type argument forwarded.
16
+ - ✅ Autofixes by replacing the indexed-access type with `UnionLength<T>` and inserting a `type-fest` import when absent.
17
+ - ❌ Does not auto-fix where the `UnionLength` identifier is shadowed by a type parameter in scope.
18
+ - ❌ Does not flag `UnionToTuple<T>[0]` or other non-`'length'` index expressions.
19
+ - ❌ Does not flag `UnionToTuple<T>` used without an index type.
20
+
21
+ ## Why this rule exists
22
+
23
+ `UnionLength<T>` is the canonical TypeFest utility for computing the number of members in a union type.
24
+
25
+ The pattern `UnionToTuple<T>['length']` is functionally equivalent but requires two chained operations and knowledge that `UnionToTuple` produces a tuple. Using the dedicated `UnionLength<T>` utility is more declarative, easier to read, and signals intent without requiring knowledge of the intermediate tuple form.
26
+
27
+ ## ❌ Incorrect
28
+
29
+ ```ts
30
+ type ColorCount = UnionToTuple<Colors>['length'];
31
+ ```
32
+
33
+ ## ✅ Correct
34
+
35
+ ```ts
36
+ import type { UnionLength } from "type-fest";
37
+
38
+ type ColorCount = UnionLength<Colors>;
39
+ ```
40
+
41
+ ## Behavior and migration notes
42
+
43
+ - `UnionLength<T>` returns the numeric literal type representing the number of members in the union `T`.
44
+ - Both `UnionToTuple<T>['length']` and `UnionLength<T>` are structurally equivalent — the autofix is safe.
45
+ - The type argument forwarded to `UnionLength<T>` is taken directly from `UnionToTuple<T>`.
46
+
47
+ ## ESLint flat config example
48
+
49
+ ```ts
50
+ import typefest from "eslint-plugin-typefest";
51
+
52
+ export default [
53
+ {
54
+ plugins: { typefest },
55
+ rules: {
56
+ "typefest/prefer-type-fest-union-length": "error",
57
+ },
58
+ },
59
+ ];
60
+ ```
61
+
62
+ ## When not to use it
63
+
64
+ Disable this rule if your codebase uses `UnionToTuple<T>['length']` intentionally for clarity (e.g., in tightly-scoped local type algebra where both operations are discussed together).
65
+
66
+ ## Package documentation
67
+
68
+ TypeFest package documentation:
69
+
70
+ Source file: [`source/union-length.d.ts`](https://github.com/sindresorhus/type-fest/blob/main/source/union-length.d.ts)
71
+
72
+ ````ts
73
+ /**
74
+ Get the number of elements in a union type.
75
+
76
+ @example
77
+ ```
78
+ import type {UnionLength} from 'type-fest';
79
+
80
+ type Colors = 'red' | 'green' | 'blue';
81
+ type Count = UnionLength<Colors>;
82
+ //=> 3
83
+ ```
84
+
85
+ @category Union
86
+ @category Numeric
87
+ */
88
+ ````
89
+
90
+ > **Rule catalog ID:** R099
91
+
92
+ ## Further reading
93
+
94
+ - [TypeFest README](https://github.com/sindresorhus/type-fest)
95
+ - [TypeScript Handbook: Mapped Types](https://www.typescriptlang.org/docs/handbook/2/mapped-types.html)
96
+
97
+ ## Adoption resources
98
+
99
+ - [Rule adoption checklist](./guides/adoption-checklist.md)
100
+ - [Rollout and fix safety](./guides/rollout-and-fix-safety.md)
@@ -38,6 +38,7 @@ export default [typefest.configs.all];
38
38
  | [`prefer-ts-extras-as-writable`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-as-writable) | 🔧 |
39
39
  | [`prefer-ts-extras-assert-defined`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-assert-defined) | 🔧 💡 |
40
40
  | [`prefer-ts-extras-assert-error`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-assert-error) | 💡 |
41
+ | [`prefer-ts-extras-assert-never`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-assert-never) | 💡 |
41
42
  | [`prefer-ts-extras-assert-present`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-assert-present) | 🔧 💡 |
42
43
  | [`prefer-ts-extras-is-defined`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-defined) | 🔧 |
43
44
  | [`prefer-ts-extras-is-defined-filter`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-defined-filter) | 🔧 |
@@ -48,6 +49,8 @@ export default [typefest.configs.all];
48
49
  | [`prefer-ts-extras-is-integer`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-integer) | 🔧 |
49
50
  | [`prefer-ts-extras-is-present`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-present) | 🔧 |
50
51
  | [`prefer-ts-extras-is-present-filter`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-present-filter) | 🔧 |
52
+ | [`prefer-ts-extras-is-property-defined`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-property-defined) | 🔧 |
53
+ | [`prefer-ts-extras-is-property-present`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-property-present) | 🔧 |
51
54
  | [`prefer-ts-extras-is-safe-integer`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-safe-integer) | 🔧 |
52
55
  | [`prefer-ts-extras-key-in`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-key-in) | 🔧 |
53
56
  | [`prefer-ts-extras-not`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-not) | 🔧 |
@@ -60,6 +63,7 @@ export default [typefest.configs.all];
60
63
  | [`prefer-ts-extras-safe-cast-to`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-safe-cast-to) | 🔧 |
61
64
  | [`prefer-ts-extras-set-has`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-set-has) | 🔧 💡 |
62
65
  | [`prefer-ts-extras-string-split`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-string-split) | 🔧 |
66
+ | [`prefer-type-fest-absolute`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-absolute) | 🔧 |
63
67
  | [`prefer-type-fest-abstract-constructor`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-abstract-constructor) | 🔧 |
64
68
  | [`prefer-type-fest-and-all`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-and-all) | 🔧 |
65
69
  | [`prefer-type-fest-array-length`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-array-length) | 🔧 |
@@ -81,6 +85,7 @@ export default [typefest.configs.all];
81
85
  | [`prefer-type-fest-literal-union`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-literal-union) | 🔧 |
82
86
  | [`prefer-type-fest-merge-exclusive`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-merge-exclusive) | 🔧 |
83
87
  | [`prefer-type-fest-non-empty-tuple`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-non-empty-tuple) | 🔧 |
88
+ | [`prefer-type-fest-non-nullable-deep`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-non-nullable-deep) | 🔧 |
84
89
  | [`prefer-type-fest-omit-index-signature`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-omit-index-signature) | 🔧 |
85
90
  | [`prefer-type-fest-optional`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-optional) | 🔧 |
86
91
  | [`prefer-type-fest-or-all`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-or-all) | 🔧 |
@@ -101,6 +106,7 @@ export default [typefest.configs.all];
101
106
  | [`prefer-type-fest-simplify`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-simplify) | 🔧 |
102
107
  | [`prefer-type-fest-tagged-brands`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-tagged-brands) | 🔧 |
103
108
  | [`prefer-type-fest-tuple-of`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-tuple-of) | 🔧 |
109
+ | [`prefer-type-fest-union-length`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-union-length) | 🔧 |
104
110
  | [`prefer-type-fest-union-member`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-union-member) | 🔧 |
105
111
  | [`prefer-type-fest-union-to-tuple`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-union-to-tuple) | 🔧 |
106
112
  | [`prefer-type-fest-unknown-array`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-unknown-array) | 🔧 |
@@ -85,6 +85,7 @@ Maintainer policy for that decision is documented in [ADR 0016: Experimental rul
85
85
  | [`prefer-ts-extras-as-writable`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-as-writable) | 🔧 |
86
86
  | [`prefer-ts-extras-assert-defined`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-assert-defined) | 🔧 💡 |
87
87
  | [`prefer-ts-extras-assert-error`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-assert-error) | 💡 |
88
+ | [`prefer-ts-extras-assert-never`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-assert-never) | 💡 |
88
89
  | [`prefer-ts-extras-assert-present`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-assert-present) | 🔧 💡 |
89
90
  | [`prefer-ts-extras-is-defined`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-defined) | 🔧 |
90
91
  | [`prefer-ts-extras-is-defined-filter`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-defined-filter) | 🔧 |
@@ -95,6 +96,8 @@ Maintainer policy for that decision is documented in [ADR 0016: Experimental rul
95
96
  | [`prefer-ts-extras-is-integer`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-integer) | 🔧 |
96
97
  | [`prefer-ts-extras-is-present`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-present) | 🔧 |
97
98
  | [`prefer-ts-extras-is-present-filter`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-present-filter) | 🔧 |
99
+ | [`prefer-ts-extras-is-property-defined`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-property-defined) | 🔧 |
100
+ | [`prefer-ts-extras-is-property-present`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-property-present) | 🔧 |
98
101
  | [`prefer-ts-extras-is-safe-integer`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-safe-integer) | 🔧 |
99
102
  | [`prefer-ts-extras-key-in`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-key-in) | 🔧 |
100
103
  | [`prefer-ts-extras-not`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-not) | 🔧 |
@@ -107,6 +110,7 @@ Maintainer policy for that decision is documented in [ADR 0016: Experimental rul
107
110
  | [`prefer-ts-extras-safe-cast-to`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-safe-cast-to) | 🔧 |
108
111
  | [`prefer-ts-extras-set-has`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-set-has) | 🔧 💡 |
109
112
  | [`prefer-ts-extras-string-split`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-string-split) | 🔧 |
113
+ | [`prefer-type-fest-absolute`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-absolute) | 🔧 |
110
114
  | [`prefer-type-fest-abstract-constructor`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-abstract-constructor) | 🔧 |
111
115
  | [`prefer-type-fest-and-all`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-and-all) | 🔧 |
112
116
  | [`prefer-type-fest-array-length`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-array-length) | 🔧 |
@@ -128,6 +132,7 @@ Maintainer policy for that decision is documented in [ADR 0016: Experimental rul
128
132
  | [`prefer-type-fest-literal-union`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-literal-union) | 🔧 |
129
133
  | [`prefer-type-fest-merge-exclusive`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-merge-exclusive) | 🔧 |
130
134
  | [`prefer-type-fest-non-empty-tuple`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-non-empty-tuple) | 🔧 |
135
+ | [`prefer-type-fest-non-nullable-deep`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-non-nullable-deep) | 🔧 |
131
136
  | [`prefer-type-fest-omit-index-signature`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-omit-index-signature) | 🔧 |
132
137
  | [`prefer-type-fest-optional`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-optional) | 🔧 |
133
138
  | [`prefer-type-fest-or-all`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-or-all) | 🔧 |
@@ -148,6 +153,7 @@ Maintainer policy for that decision is documented in [ADR 0016: Experimental rul
148
153
  | [`prefer-type-fest-simplify`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-simplify) | 🔧 |
149
154
  | [`prefer-type-fest-tagged-brands`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-tagged-brands) | 🔧 |
150
155
  | [`prefer-type-fest-tuple-of`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-tuple-of) | 🔧 |
156
+ | [`prefer-type-fest-union-length`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-union-length) | 🔧 |
151
157
  | [`prefer-type-fest-union-member`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-union-member) | 🔧 |
152
158
  | [`prefer-type-fest-union-to-tuple`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-union-to-tuple) | 🔧 |
153
159
  | [`prefer-type-fest-unknown-array`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-unknown-array) | 🔧 |
@@ -57,6 +57,7 @@ Related guides:
57
57
  | [`prefer-ts-extras-as-writable`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-as-writable) | 🔧 | [🔴](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/strict) [🟣](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/all) |
58
58
  | [`prefer-ts-extras-assert-defined`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-assert-defined) | 🔧 💡 | [🟡](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/recommended) [🔴](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/strict) [🟣](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/all) [✴️](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/ts-extras-type-guards) |
59
59
  | [`prefer-ts-extras-assert-error`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-assert-error) | 💡 | [🟡](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/recommended) [🔴](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/strict) [🟣](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/all) [✴️](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/ts-extras-type-guards) |
60
+ | [`prefer-ts-extras-assert-never`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-assert-never) | 💡 | [🟡](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/recommended) [🔴](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/strict) [🟣](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/all) [✴️](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/ts-extras-type-guards) |
60
61
  | [`prefer-ts-extras-assert-present`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-assert-present) | 🔧 💡 | [🟡](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/recommended) [🔴](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/strict) [🟣](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/all) [✴️](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/ts-extras-type-guards) |
61
62
  | [`prefer-ts-extras-is-defined`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-defined) | 🔧 | [🟡](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/recommended) [🔴](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/strict) [🟣](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/all) [✴️](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/ts-extras-type-guards) |
62
63
  | [`prefer-ts-extras-is-defined-filter`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-defined-filter) | 🔧 | [🟢](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/minimal) [🟡](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/recommended) [🔴](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/strict) [🟣](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/all) [✴️](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/ts-extras-type-guards) |
@@ -67,6 +68,8 @@ Related guides:
67
68
  | [`prefer-ts-extras-is-integer`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-integer) | 🔧 | [🟡](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/recommended) [🔴](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/strict) [🟣](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/all) [✴️](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/ts-extras-type-guards) |
68
69
  | [`prefer-ts-extras-is-present`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-present) | 🔧 | [🟡](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/recommended) [🔴](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/strict) [🟣](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/all) [✴️](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/ts-extras-type-guards) |
69
70
  | [`prefer-ts-extras-is-present-filter`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-present-filter) | 🔧 | [🟢](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/minimal) [🟡](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/recommended) [🔴](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/strict) [🟣](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/all) [✴️](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/ts-extras-type-guards) |
71
+ | [`prefer-ts-extras-is-property-defined`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-property-defined) | 🔧 | [🟢](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/minimal) [🟡](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/recommended) [🔴](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/strict) [🟣](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/all) [✴️](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/ts-extras-type-guards) |
72
+ | [`prefer-ts-extras-is-property-present`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-property-present) | 🔧 | [🟢](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/minimal) [🟡](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/recommended) [🔴](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/strict) [🟣](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/all) [✴️](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/ts-extras-type-guards) |
70
73
  | [`prefer-ts-extras-is-safe-integer`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-safe-integer) | 🔧 | [🟡](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/recommended) [🔴](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/strict) [🟣](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/all) [✴️](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/ts-extras-type-guards) |
71
74
  | [`prefer-ts-extras-key-in`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-key-in) | 🔧 | [🟡](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/recommended) [🔴](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/strict) [🟣](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/all) [✴️](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/ts-extras-type-guards) |
72
75
  | [`prefer-ts-extras-not`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-not) | 🔧 | [🟡](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/recommended) [🔴](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/strict) [🟣](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/all) [✴️](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/ts-extras-type-guards) |
@@ -80,6 +83,7 @@ Related guides:
80
83
  | [`prefer-ts-extras-safe-cast-to`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-safe-cast-to) | 🔧 | [🟠](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/recommended-type-checked) [🔴](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/strict) [🟣](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/all) [✴️](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/ts-extras-type-guards) |
81
84
  | [`prefer-ts-extras-set-has`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-set-has) | 🔧 💡 | [🟠](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/recommended-type-checked) [🔴](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/strict) [🟣](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/all) [✴️](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/ts-extras-type-guards) |
82
85
  | [`prefer-ts-extras-string-split`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-string-split) | 🔧 | [🔴](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/strict) [🟣](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/all) |
86
+ | [`prefer-type-fest-absolute`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-absolute) | 🔧 | [🟡](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/recommended) [🔴](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/strict) [🟣](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/all) [💠](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/type-fest-types) |
83
87
  | [`prefer-type-fest-abstract-constructor`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-abstract-constructor) | 🔧 | [🟡](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/recommended) [🔴](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/strict) [🟣](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/all) [💠](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/type-fest-types) |
84
88
  | [`prefer-type-fest-and-all`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-and-all) | 🔧 | [🟡](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/recommended) [🔴](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/strict) [🟣](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/all) [💠](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/type-fest-types) |
85
89
  | [`prefer-type-fest-array-length`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-array-length) | 🔧 | [🟠](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/recommended-type-checked) [🔴](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/strict) [🟣](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/all) |
@@ -107,6 +111,7 @@ Related guides:
107
111
  | [`prefer-type-fest-merge`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-merge) | — | [🧪](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/experimental) |
108
112
  | [`prefer-type-fest-merge-exclusive`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-merge-exclusive) | 🔧 | [🟡](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/recommended) [🔴](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/strict) [🟣](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/all) [💠](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/type-fest-types) |
109
113
  | [`prefer-type-fest-non-empty-tuple`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-non-empty-tuple) | 🔧 | [🟡](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/recommended) [🔴](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/strict) [🟣](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/all) [💠](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/type-fest-types) |
114
+ | [`prefer-type-fest-non-nullable-deep`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-non-nullable-deep) | 🔧 | [🟡](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/recommended) [🔴](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/strict) [🟣](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/all) [💠](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/type-fest-types) |
110
115
  | [`prefer-type-fest-omit-index-signature`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-omit-index-signature) | 🔧 | [🟡](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/recommended) [🔴](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/strict) [🟣](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/all) [💠](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/type-fest-types) |
111
116
  | [`prefer-type-fest-optional`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-optional) | 🔧 | [🟡](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/recommended) [🔴](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/strict) [🟣](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/all) [💠](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/type-fest-types) |
112
117
  | [`prefer-type-fest-or-all`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-or-all) | 🔧 | [🟡](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/recommended) [🔴](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/strict) [🟣](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/all) [💠](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/type-fest-types) |
@@ -130,6 +135,7 @@ Related guides:
130
135
  | [`prefer-type-fest-stringified`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-stringified) | — | [🧪](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/experimental) |
131
136
  | [`prefer-type-fest-tagged-brands`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-tagged-brands) | 🔧 | [🟡](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/recommended) [🔴](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/strict) [🟣](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/all) [💠](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/type-fest-types) |
132
137
  | [`prefer-type-fest-tuple-of`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-tuple-of) | 🔧 | [🟡](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/recommended) [🔴](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/strict) [🟣](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/all) [💠](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/type-fest-types) |
138
+ | [`prefer-type-fest-union-length`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-union-length) | 🔧 | [🟡](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/recommended) [🔴](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/strict) [🟣](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/all) [💠](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/type-fest-types) |
133
139
  | [`prefer-type-fest-union-member`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-union-member) | 🔧 | [🟡](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/recommended) [🔴](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/strict) [🟣](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/all) [💠](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/type-fest-types) |
134
140
  | [`prefer-type-fest-union-to-intersection`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-union-to-intersection) | — | [🧪](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/experimental) |
135
141
  | [`prefer-type-fest-union-to-tuple`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-union-to-tuple) | 🔧 | [🟡](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/recommended) [🔴](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/strict) [🟣](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/all) [💠](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/type-fest-types) |
@@ -31,6 +31,8 @@ export default [typefest.configs.minimal];
31
31
  | --- | :-: |
32
32
  | [`prefer-ts-extras-is-defined-filter`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-defined-filter) | 🔧 |
33
33
  | [`prefer-ts-extras-is-present-filter`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-present-filter) | 🔧 |
34
+ | [`prefer-ts-extras-is-property-defined`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-property-defined) | 🔧 |
35
+ | [`prefer-ts-extras-is-property-present`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-property-present) | 🔧 |
34
36
  | [`prefer-type-fest-arrayable`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-arrayable) | 🔧 |
35
37
  | [`prefer-type-fest-except`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-except) | 🔧 |
36
38
  | [`prefer-type-fest-json-array`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-json-array) | 🔧 |
@@ -48,6 +48,7 @@ This preset is type-aware and includes
48
48
  | --- | :-: |
49
49
  | [`prefer-ts-extras-assert-defined`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-assert-defined) | 🔧 💡 |
50
50
  | [`prefer-ts-extras-assert-error`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-assert-error) | 💡 |
51
+ | [`prefer-ts-extras-assert-never`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-assert-never) | 💡 |
51
52
  | [`prefer-ts-extras-assert-present`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-assert-present) | 🔧 💡 |
52
53
  | [`prefer-ts-extras-is-defined`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-defined) | 🔧 |
53
54
  | [`prefer-ts-extras-is-defined-filter`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-defined-filter) | 🔧 |
@@ -56,11 +57,14 @@ This preset is type-aware and includes
56
57
  | [`prefer-ts-extras-is-integer`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-integer) | 🔧 |
57
58
  | [`prefer-ts-extras-is-present`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-present) | 🔧 |
58
59
  | [`prefer-ts-extras-is-present-filter`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-present-filter) | 🔧 |
60
+ | [`prefer-ts-extras-is-property-defined`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-property-defined) | 🔧 |
61
+ | [`prefer-ts-extras-is-property-present`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-property-present) | 🔧 |
59
62
  | [`prefer-ts-extras-is-safe-integer`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-safe-integer) | 🔧 |
60
63
  | [`prefer-ts-extras-key-in`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-key-in) | 🔧 |
61
64
  | [`prefer-ts-extras-not`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-not) | 🔧 |
62
65
  | [`prefer-ts-extras-object-has-in`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-object-has-in) | 🔧 💡 |
63
66
  | [`prefer-ts-extras-object-has-own`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-object-has-own) | 🔧 💡 |
67
+ | [`prefer-type-fest-absolute`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-absolute) | 🔧 |
64
68
  | [`prefer-type-fest-abstract-constructor`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-abstract-constructor) | 🔧 |
65
69
  | [`prefer-type-fest-and-all`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-and-all) | 🔧 |
66
70
  | [`prefer-type-fest-arrayable`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-arrayable) | 🔧 |
@@ -81,6 +85,7 @@ This preset is type-aware and includes
81
85
  | [`prefer-type-fest-literal-union`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-literal-union) | 🔧 |
82
86
  | [`prefer-type-fest-merge-exclusive`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-merge-exclusive) | 🔧 |
83
87
  | [`prefer-type-fest-non-empty-tuple`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-non-empty-tuple) | 🔧 |
88
+ | [`prefer-type-fest-non-nullable-deep`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-non-nullable-deep) | 🔧 |
84
89
  | [`prefer-type-fest-omit-index-signature`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-omit-index-signature) | 🔧 |
85
90
  | [`prefer-type-fest-optional`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-optional) | 🔧 |
86
91
  | [`prefer-type-fest-or-all`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-or-all) | 🔧 |
@@ -101,6 +106,7 @@ This preset is type-aware and includes
101
106
  | [`prefer-type-fest-simplify`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-simplify) | 🔧 |
102
107
  | [`prefer-type-fest-tagged-brands`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-tagged-brands) | 🔧 |
103
108
  | [`prefer-type-fest-tuple-of`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-tuple-of) | 🔧 |
109
+ | [`prefer-type-fest-union-length`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-union-length) | 🔧 |
104
110
  | [`prefer-type-fest-union-member`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-union-member) | 🔧 |
105
111
  | [`prefer-type-fest-union-to-tuple`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-union-to-tuple) | 🔧 |
106
112
  | [`prefer-type-fest-unknown-array`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-unknown-array) | 🔧 |
@@ -64,6 +64,7 @@ This option is useful when you want the recommended rule set, but only for speci
64
64
  | --- | :-: |
65
65
  | [`prefer-ts-extras-assert-defined`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-assert-defined) | 🔧 💡 |
66
66
  | [`prefer-ts-extras-assert-error`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-assert-error) | 💡 |
67
+ | [`prefer-ts-extras-assert-never`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-assert-never) | 💡 |
67
68
  | [`prefer-ts-extras-assert-present`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-assert-present) | 🔧 💡 |
68
69
  | [`prefer-ts-extras-is-defined`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-defined) | 🔧 |
69
70
  | [`prefer-ts-extras-is-defined-filter`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-defined-filter) | 🔧 |
@@ -72,11 +73,14 @@ This option is useful when you want the recommended rule set, but only for speci
72
73
  | [`prefer-ts-extras-is-integer`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-integer) | 🔧 |
73
74
  | [`prefer-ts-extras-is-present`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-present) | 🔧 |
74
75
  | [`prefer-ts-extras-is-present-filter`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-present-filter) | 🔧 |
76
+ | [`prefer-ts-extras-is-property-defined`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-property-defined) | 🔧 |
77
+ | [`prefer-ts-extras-is-property-present`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-property-present) | 🔧 |
75
78
  | [`prefer-ts-extras-is-safe-integer`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-safe-integer) | 🔧 |
76
79
  | [`prefer-ts-extras-key-in`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-key-in) | 🔧 |
77
80
  | [`prefer-ts-extras-not`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-not) | 🔧 |
78
81
  | [`prefer-ts-extras-object-has-in`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-object-has-in) | 🔧 💡 |
79
82
  | [`prefer-ts-extras-object-has-own`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-object-has-own) | 🔧 💡 |
83
+ | [`prefer-type-fest-absolute`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-absolute) | 🔧 |
80
84
  | [`prefer-type-fest-abstract-constructor`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-abstract-constructor) | 🔧 |
81
85
  | [`prefer-type-fest-and-all`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-and-all) | 🔧 |
82
86
  | [`prefer-type-fest-arrayable`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-arrayable) | 🔧 |
@@ -97,6 +101,7 @@ This option is useful when you want the recommended rule set, but only for speci
97
101
  | [`prefer-type-fest-literal-union`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-literal-union) | 🔧 |
98
102
  | [`prefer-type-fest-merge-exclusive`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-merge-exclusive) | 🔧 |
99
103
  | [`prefer-type-fest-non-empty-tuple`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-non-empty-tuple) | 🔧 |
104
+ | [`prefer-type-fest-non-nullable-deep`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-non-nullable-deep) | 🔧 |
100
105
  | [`prefer-type-fest-omit-index-signature`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-omit-index-signature) | 🔧 |
101
106
  | [`prefer-type-fest-optional`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-optional) | 🔧 |
102
107
  | [`prefer-type-fest-or-all`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-or-all) | 🔧 |
@@ -117,6 +122,7 @@ This option is useful when you want the recommended rule set, but only for speci
117
122
  | [`prefer-type-fest-simplify`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-simplify) | 🔧 |
118
123
  | [`prefer-type-fest-tagged-brands`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-tagged-brands) | 🔧 |
119
124
  | [`prefer-type-fest-tuple-of`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-tuple-of) | 🔧 |
125
+ | [`prefer-type-fest-union-length`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-union-length) | 🔧 |
120
126
  | [`prefer-type-fest-union-member`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-union-member) | 🔧 |
121
127
  | [`prefer-type-fest-union-to-tuple`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-union-to-tuple) | 🔧 |
122
128
  | [`prefer-type-fest-unknown-array`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-unknown-array) | 🔧 |
@@ -38,6 +38,7 @@ export default [typefest.configs.strict];
38
38
  | [`prefer-ts-extras-as-writable`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-as-writable) | 🔧 |
39
39
  | [`prefer-ts-extras-assert-defined`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-assert-defined) | 🔧 💡 |
40
40
  | [`prefer-ts-extras-assert-error`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-assert-error) | 💡 |
41
+ | [`prefer-ts-extras-assert-never`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-assert-never) | 💡 |
41
42
  | [`prefer-ts-extras-assert-present`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-assert-present) | 🔧 💡 |
42
43
  | [`prefer-ts-extras-is-defined`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-defined) | 🔧 |
43
44
  | [`prefer-ts-extras-is-defined-filter`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-defined-filter) | 🔧 |
@@ -47,6 +48,8 @@ export default [typefest.configs.strict];
47
48
  | [`prefer-ts-extras-is-integer`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-integer) | 🔧 |
48
49
  | [`prefer-ts-extras-is-present`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-present) | 🔧 |
49
50
  | [`prefer-ts-extras-is-present-filter`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-present-filter) | 🔧 |
51
+ | [`prefer-ts-extras-is-property-defined`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-property-defined) | 🔧 |
52
+ | [`prefer-ts-extras-is-property-present`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-property-present) | 🔧 |
50
53
  | [`prefer-ts-extras-is-safe-integer`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-safe-integer) | 🔧 |
51
54
  | [`prefer-ts-extras-key-in`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-key-in) | 🔧 |
52
55
  | [`prefer-ts-extras-not`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-not) | 🔧 |
@@ -59,6 +62,7 @@ export default [typefest.configs.strict];
59
62
  | [`prefer-ts-extras-safe-cast-to`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-safe-cast-to) | 🔧 |
60
63
  | [`prefer-ts-extras-set-has`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-set-has) | 🔧 💡 |
61
64
  | [`prefer-ts-extras-string-split`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-string-split) | 🔧 |
65
+ | [`prefer-type-fest-absolute`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-absolute) | 🔧 |
62
66
  | [`prefer-type-fest-abstract-constructor`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-abstract-constructor) | 🔧 |
63
67
  | [`prefer-type-fest-and-all`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-and-all) | 🔧 |
64
68
  | [`prefer-type-fest-array-length`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-array-length) | 🔧 |
@@ -80,6 +84,7 @@ export default [typefest.configs.strict];
80
84
  | [`prefer-type-fest-literal-union`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-literal-union) | 🔧 |
81
85
  | [`prefer-type-fest-merge-exclusive`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-merge-exclusive) | 🔧 |
82
86
  | [`prefer-type-fest-non-empty-tuple`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-non-empty-tuple) | 🔧 |
87
+ | [`prefer-type-fest-non-nullable-deep`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-non-nullable-deep) | 🔧 |
83
88
  | [`prefer-type-fest-omit-index-signature`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-omit-index-signature) | 🔧 |
84
89
  | [`prefer-type-fest-optional`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-optional) | 🔧 |
85
90
  | [`prefer-type-fest-or-all`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-or-all) | 🔧 |
@@ -100,6 +105,7 @@ export default [typefest.configs.strict];
100
105
  | [`prefer-type-fest-simplify`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-simplify) | 🔧 |
101
106
  | [`prefer-type-fest-tagged-brands`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-tagged-brands) | 🔧 |
102
107
  | [`prefer-type-fest-tuple-of`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-tuple-of) | 🔧 |
108
+ | [`prefer-type-fest-union-length`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-union-length) | 🔧 |
103
109
  | [`prefer-type-fest-union-member`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-union-member) | 🔧 |
104
110
  | [`prefer-type-fest-union-to-tuple`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-union-to-tuple) | 🔧 |
105
111
  | [`prefer-type-fest-unknown-array`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-unknown-array) | 🔧 |
@@ -32,6 +32,7 @@ export default [typefest.configs["ts-extras/type-guards"]];
32
32
  | [`prefer-ts-extras-array-includes`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-array-includes) | 🔧 💡 |
33
33
  | [`prefer-ts-extras-assert-defined`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-assert-defined) | 🔧 💡 |
34
34
  | [`prefer-ts-extras-assert-error`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-assert-error) | 💡 |
35
+ | [`prefer-ts-extras-assert-never`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-assert-never) | 💡 |
35
36
  | [`prefer-ts-extras-assert-present`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-assert-present) | 🔧 💡 |
36
37
  | [`prefer-ts-extras-is-defined`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-defined) | 🔧 |
37
38
  | [`prefer-ts-extras-is-defined-filter`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-defined-filter) | 🔧 |
@@ -41,6 +42,8 @@ export default [typefest.configs["ts-extras/type-guards"]];
41
42
  | [`prefer-ts-extras-is-integer`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-integer) | 🔧 |
42
43
  | [`prefer-ts-extras-is-present`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-present) | 🔧 |
43
44
  | [`prefer-ts-extras-is-present-filter`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-present-filter) | 🔧 |
45
+ | [`prefer-ts-extras-is-property-defined`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-property-defined) | 🔧 |
46
+ | [`prefer-ts-extras-is-property-present`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-property-present) | 🔧 |
44
47
  | [`prefer-ts-extras-is-safe-integer`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-safe-integer) | 🔧 |
45
48
  | [`prefer-ts-extras-key-in`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-key-in) | 🔧 |
46
49
  | [`prefer-ts-extras-not`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-not) | 🔧 |
@@ -29,6 +29,7 @@ export default [typefest.configs["type-fest/types"]];
29
29
 
30
30
  | Rule | Fix |
31
31
  | --- | :-: |
32
+ | [`prefer-type-fest-absolute`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-absolute) | 🔧 |
32
33
  | [`prefer-type-fest-abstract-constructor`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-abstract-constructor) | 🔧 |
33
34
  | [`prefer-type-fest-and-all`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-and-all) | 🔧 |
34
35
  | [`prefer-type-fest-arrayable`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-arrayable) | 🔧 |
@@ -49,6 +50,7 @@ export default [typefest.configs["type-fest/types"]];
49
50
  | [`prefer-type-fest-literal-union`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-literal-union) | 🔧 |
50
51
  | [`prefer-type-fest-merge-exclusive`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-merge-exclusive) | 🔧 |
51
52
  | [`prefer-type-fest-non-empty-tuple`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-non-empty-tuple) | 🔧 |
53
+ | [`prefer-type-fest-non-nullable-deep`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-non-nullable-deep) | 🔧 |
52
54
  | [`prefer-type-fest-omit-index-signature`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-omit-index-signature) | 🔧 |
53
55
  | [`prefer-type-fest-optional`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-optional) | 🔧 |
54
56
  | [`prefer-type-fest-or-all`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-or-all) | 🔧 |
@@ -69,6 +71,7 @@ export default [typefest.configs["type-fest/types"]];
69
71
  | [`prefer-type-fest-simplify`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-simplify) | 🔧 |
70
72
  | [`prefer-type-fest-tagged-brands`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-tagged-brands) | 🔧 |
71
73
  | [`prefer-type-fest-tuple-of`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-tuple-of) | 🔧 |
74
+ | [`prefer-type-fest-union-length`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-union-length) | 🔧 |
72
75
  | [`prefer-type-fest-union-member`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-union-member) | 🔧 |
73
76
  | [`prefer-type-fest-union-to-tuple`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-union-to-tuple) | 🔧 |
74
77
  | [`prefer-type-fest-unknown-array`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-unknown-array) | 🔧 |