eslint-plugin-typefest 1.0.6 → 1.0.8

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 (92) hide show
  1. package/README.md +107 -91
  2. package/dist/_internal/constrained-type-at-location.d.ts.map +1 -1
  3. package/dist/_internal/constrained-type-at-location.js.map +1 -1
  4. package/dist/_internal/function-type-reference-patterns.d.ts +34 -0
  5. package/dist/_internal/function-type-reference-patterns.d.ts.map +1 -0
  6. package/dist/_internal/function-type-reference-patterns.js +103 -0
  7. package/dist/_internal/function-type-reference-patterns.js.map +1 -0
  8. package/dist/_internal/rule-catalog.d.ts.map +1 -1
  9. package/dist/_internal/rule-catalog.js +11 -0
  10. package/dist/_internal/rule-catalog.js.map +1 -1
  11. package/dist/_internal/rules-registry.d.ts.map +1 -1
  12. package/dist/_internal/rules-registry.js +22 -0
  13. package/dist/_internal/rules-registry.js.map +1 -1
  14. package/dist/_internal/set-membership.d.ts.map +1 -1
  15. package/dist/_internal/set-membership.js.map +1 -1
  16. package/dist/_internal/type-checker-compat.d.ts.map +1 -1
  17. package/dist/_internal/type-checker-compat.js.map +1 -1
  18. package/dist/_internal/type-reference-node.d.ts +8 -0
  19. package/dist/_internal/type-reference-node.d.ts.map +1 -1
  20. package/dist/_internal/type-reference-node.js +14 -0
  21. package/dist/_internal/type-reference-node.js.map +1 -1
  22. package/dist/_internal/typefest-config-references.d.ts +2 -1
  23. package/dist/_internal/typefest-config-references.d.ts.map +1 -1
  24. package/dist/_internal/typefest-config-references.js +11 -2
  25. package/dist/_internal/typefest-config-references.js.map +1 -1
  26. package/dist/_internal/typescript-eslint-node-autofix.js.map +1 -1
  27. package/dist/plugin.cjs +1077 -124
  28. package/dist/plugin.cjs.map +4 -4
  29. package/dist/plugin.d.ts.map +1 -1
  30. package/dist/plugin.js +5 -0
  31. package/dist/plugin.js.map +1 -1
  32. package/dist/rules/prefer-ts-extras-object-map-values.d.ts +14 -0
  33. package/dist/rules/prefer-ts-extras-object-map-values.d.ts.map +1 -0
  34. package/dist/rules/prefer-ts-extras-object-map-values.js +227 -0
  35. package/dist/rules/prefer-ts-extras-object-map-values.js.map +1 -0
  36. package/dist/rules/prefer-type-fest-asyncify.d.ts +7 -0
  37. package/dist/rules/prefer-type-fest-asyncify.d.ts.map +1 -0
  38. package/dist/rules/prefer-type-fest-asyncify.js +79 -0
  39. package/dist/rules/prefer-type-fest-asyncify.js.map +1 -0
  40. package/dist/rules/prefer-type-fest-conditional-except.d.ts +7 -0
  41. package/dist/rules/prefer-type-fest-conditional-except.d.ts.map +1 -0
  42. package/dist/rules/prefer-type-fest-conditional-except.js +94 -0
  43. package/dist/rules/prefer-type-fest-conditional-except.js.map +1 -0
  44. package/dist/rules/prefer-type-fest-conditional-keys.d.ts +7 -0
  45. package/dist/rules/prefer-type-fest-conditional-keys.d.ts.map +1 -0
  46. package/dist/rules/prefer-type-fest-conditional-keys.js +78 -0
  47. package/dist/rules/prefer-type-fest-conditional-keys.js.map +1 -0
  48. package/dist/rules/prefer-type-fest-distributed-omit.d.ts +7 -0
  49. package/dist/rules/prefer-type-fest-distributed-omit.d.ts.map +1 -0
  50. package/dist/rules/prefer-type-fest-distributed-omit.js +67 -0
  51. package/dist/rules/prefer-type-fest-distributed-omit.js.map +1 -0
  52. package/dist/rules/prefer-type-fest-distributed-pick.d.ts +7 -0
  53. package/dist/rules/prefer-type-fest-distributed-pick.d.ts.map +1 -0
  54. package/dist/rules/prefer-type-fest-distributed-pick.js +95 -0
  55. package/dist/rules/prefer-type-fest-distributed-pick.js.map +1 -0
  56. package/dist/rules/prefer-type-fest-merge.d.ts +7 -0
  57. package/dist/rules/prefer-type-fest-merge.d.ts.map +1 -0
  58. package/dist/rules/prefer-type-fest-merge.js +93 -0
  59. package/dist/rules/prefer-type-fest-merge.js.map +1 -0
  60. package/dist/rules/prefer-type-fest-pick-index-signature.d.ts +7 -0
  61. package/dist/rules/prefer-type-fest-pick-index-signature.d.ts.map +1 -0
  62. package/dist/rules/prefer-type-fest-pick-index-signature.js +98 -0
  63. package/dist/rules/prefer-type-fest-pick-index-signature.js.map +1 -0
  64. package/dist/rules/prefer-type-fest-set-return-type.d.ts +7 -0
  65. package/dist/rules/prefer-type-fest-set-return-type.d.ts.map +1 -0
  66. package/dist/rules/prefer-type-fest-set-return-type.js +53 -0
  67. package/dist/rules/prefer-type-fest-set-return-type.js.map +1 -0
  68. package/dist/rules/prefer-type-fest-stringified.d.ts +7 -0
  69. package/dist/rules/prefer-type-fest-stringified.d.ts.map +1 -0
  70. package/dist/rules/prefer-type-fest-stringified.js +73 -0
  71. package/dist/rules/prefer-type-fest-stringified.js.map +1 -0
  72. package/dist/rules/prefer-type-fest-union-to-intersection.d.ts +7 -0
  73. package/dist/rules/prefer-type-fest-union-to-intersection.d.ts.map +1 -0
  74. package/dist/rules/prefer-type-fest-union-to-intersection.js +114 -0
  75. package/dist/rules/prefer-type-fest-union-to-intersection.js.map +1 -0
  76. package/docs/rules/getting-started.md +2 -1
  77. package/docs/rules/guides/preset-selection-strategy.md +7 -0
  78. package/docs/rules/overview.md +1 -0
  79. package/docs/rules/prefer-ts-extras-object-map-values.md +146 -0
  80. package/docs/rules/prefer-type-fest-asyncify.md +93 -0
  81. package/docs/rules/prefer-type-fest-conditional-except.md +141 -0
  82. package/docs/rules/prefer-type-fest-conditional-keys.md +93 -0
  83. package/docs/rules/prefer-type-fest-distributed-omit.md +92 -0
  84. package/docs/rules/prefer-type-fest-distributed-pick.md +92 -0
  85. package/docs/rules/prefer-type-fest-merge.md +161 -0
  86. package/docs/rules/prefer-type-fest-pick-index-signature.md +93 -0
  87. package/docs/rules/prefer-type-fest-set-return-type.md +93 -0
  88. package/docs/rules/prefer-type-fest-stringified.md +134 -0
  89. package/docs/rules/prefer-type-fest-union-to-intersection.md +118 -0
  90. package/docs/rules/presets/experimental.md +163 -0
  91. package/docs/rules/presets/index.md +13 -0
  92. package/package.json +33 -34
@@ -0,0 +1,118 @@
1
+ # prefer-type-fest-union-to-intersection
2
+
3
+ Prefer [`UnionToIntersection`](https://github.com/sindresorhus/type-fest/blob/main/source/union-to-intersection.d.ts) from `type-fest` over custom distributive conditional helpers that convert unions into intersections.
4
+
5
+ This rule lives only in the experimental preset and reports without autofixing.
6
+
7
+ ## Targeted pattern scope
8
+
9
+ This rule focuses on the canonical conditional-type recipe that turns a union into an intersection by distributing a function wrapper over the union and then inferring the merged parameter type.
10
+
11
+ - `(Union extends unknown ? (value: Union) => void : never) extends (value: infer Intersection) => void ? Intersection : never`
12
+ - the common assignable variant that returns `Intersection & Union`
13
+
14
+ It intentionally skips unrelated conditional helpers and non-canonical extraction tricks to keep reporting narrow.
15
+
16
+ ## What this rule reports
17
+
18
+ This rule reports conditional helpers when all of the following are true:
19
+
20
+ - the inner conditional distributes over the same `Union` type with `extends unknown` or `extends any`
21
+ - the inner true branch wraps that union in a single-parameter function type
22
+ - the outer conditional infers the merged parameter type from a single-parameter function type
23
+ - the outer true branch returns either the inferred type alone or the inferred type intersected with the original union
24
+
25
+ The rule is currently **report-only**. It does not autofix or suggest a replacement yet.
26
+
27
+ ## Why this rule exists
28
+
29
+ `UnionToIntersection<Union>` states the intent directly.
30
+
31
+ - Readers do not need to unpack a dense conditional-type trick.
32
+ - The canonical helper is easier to search for across a codebase.
33
+ - Type-Fest owns the edge cases and maintenance burden for the pattern.
34
+
35
+ ## ❌ Incorrect
36
+
37
+ ```ts
38
+ type MergeUnion<Union> =
39
+ (Union extends unknown ? (value: Union) => void : never) extends
40
+ (value: infer Intersection) => void
41
+ ? Intersection
42
+ : never;
43
+ ```
44
+
45
+ ## ✅ Correct
46
+
47
+ ```ts
48
+ import type {UnionToIntersection} from "type-fest";
49
+
50
+ type MergeUnion<Union> = UnionToIntersection<Union>;
51
+ ```
52
+
53
+ ## Behavior and migration notes
54
+
55
+ - This rule only reports the narrow distributive function-wrapper pattern.
56
+ - It also accepts the `Intersection & Union` variant because that still expresses the same underlying conversion.
57
+ - It ignores unrelated conditionals and other custom extraction helpers that do not match the canonical structure closely enough.
58
+
59
+ ## Additional examples
60
+
61
+ ### ❌ Incorrect — Additional example
62
+
63
+ ```ts
64
+ type MergeUnion<Union> =
65
+ (Union extends any ? (value: Union) => void : never) extends
66
+ (value: infer Intersection) => void
67
+ ? Intersection & Union
68
+ : never;
69
+ ```
70
+
71
+ ### ✅ Correct — Additional example
72
+
73
+ ```ts
74
+ import type {UnionToIntersection} from "type-fest";
75
+
76
+ type MergeUnion<Union> = UnionToIntersection<Union>;
77
+ ```
78
+
79
+ ## ESLint flat config example
80
+
81
+ ```ts
82
+ import typefest from "eslint-plugin-typefest";
83
+
84
+ export default [typefest.configs.experimental];
85
+ ```
86
+
87
+ ## When not to use it
88
+
89
+ Disable this rule if your project intentionally prefers hand-written conditional-type recipes for educational reasons or if you are using a different local utility type and do not want to standardize on Type-Fest.
90
+
91
+ ## Package documentation
92
+
93
+ TypeFest package documentation:
94
+
95
+ Source file: [`source/union-to-intersection.d.ts`](https://github.com/sindresorhus/type-fest/blob/main/source/union-to-intersection.d.ts)
96
+
97
+ ```ts
98
+ import type {UnionToIntersection} from "type-fest";
99
+
100
+ type Union = {a: string} | {b: number};
101
+
102
+ type Combined = UnionToIntersection<Union>;
103
+ //=> {a: string} & {b: number}
104
+ ```
105
+
106
+ > **Rule catalog ID:** R089
107
+
108
+ ## Further reading
109
+
110
+ - [`type-fest` README](https://github.com/sindresorhus/type-fest)
111
+ - [`type-fest` package reference](https://www.npmjs.com/package/type-fest)
112
+ - [TypeScript Handbook: Distributive Conditional Types](https://www.typescriptlang.org/docs/handbook/2/conditional-types.html)
113
+
114
+ ## Adoption resources
115
+
116
+ - [Rule adoption checklist](./guides/adoption-checklist.md)
117
+ - [Rollout and fix safety](./guides/rollout-and-fix-safety.md)
118
+ - [Preset selection strategy](./guides/preset-selection-strategy.md)
@@ -0,0 +1,163 @@
1
+ ---
2
+ title: Experimental preset
3
+ ---
4
+
5
+ # 🧪 Experimental
6
+
7
+ Use this preset when you want every stable rule from `all` plus lower-confidence candidate rules that are still being evaluated.
8
+
9
+ ## Config key
10
+
11
+ ```ts
12
+ typefest.configs.experimental
13
+ ```
14
+
15
+ ## Flat Config example
16
+
17
+ ```ts
18
+ import typefest from "eslint-plugin-typefest";
19
+
20
+ export default [typefest.configs.experimental];
21
+ ```
22
+
23
+ This preset **does** require type information, because it layers experimental rules on top of `all`.
24
+
25
+ Use it when you want to trial report-only or still-maturing rules before they graduate into stable presets.
26
+
27
+ ## When to use this preset
28
+
29
+ - You want every stable rule from `all`.
30
+ - You are comfortable reviewing noisier report-only diagnostics.
31
+ - You want early visibility into candidate migrations such as `objectMapValues`.
32
+
33
+ ## Rollout advice
34
+
35
+ Treat this preset as a proving ground:
36
+
37
+ 1. Start with `warn` in one package or folder.
38
+ 2. Measure noise and collect false-positive feedback.
39
+ 3. Promote only the rules your team finds consistently useful.
40
+
41
+ ## Why some candidates were skipped
42
+
43
+ Not every uncovered `type-fest` or `ts-extras` helper becomes an experimental rule immediately.
44
+
45
+ - Some candidates have a clear canonical matcher and are good fits for report-only experimentation.
46
+ - Others are intentionally skipped because their hand-written equivalents are too varied or too semantic to lint accurately yet.
47
+
48
+ Current intentionally skipped examples include `SetParameterType`, `Jsonify`, `SimplifyDeep`, `Entry`, `Entries`, `isPropertyDefined`, and `isPropertyPresent`.
49
+
50
+ Maintainer policy for that decision is documented in [ADR 0016: Experimental rule admission and skip criteria](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/developer/adr/0016-experimental-rule-admission-and-skip-criteria).
51
+
52
+ ## Rules in this preset
53
+
54
+ - `Fix` legend:
55
+ - `🔧` = autofixable
56
+ - `💡` = suggestions available
57
+ - `—` = report only
58
+
59
+ ### Experimental additions over `all`
60
+
61
+ | Rule | Fix |
62
+ | ------------------------------------------------------------------------------------------------------------------------------------------------- | :-: |
63
+ | [`prefer-ts-extras-object-map-values`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-object-map-values) | — |
64
+ | [`prefer-type-fest-asyncify`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-asyncify) | — |
65
+ | [`prefer-type-fest-conditional-except`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-conditional-except) | — |
66
+ | [`prefer-type-fest-conditional-keys`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-conditional-keys) | — |
67
+ | [`prefer-type-fest-distributed-omit`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-distributed-omit) | — |
68
+ | [`prefer-type-fest-distributed-pick`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-distributed-pick) | — |
69
+ | [`prefer-type-fest-merge`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-merge) | — |
70
+ | [`prefer-type-fest-pick-index-signature`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-pick-index-signature) | — |
71
+ | [`prefer-type-fest-set-return-type`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-set-return-type) | — |
72
+ | [`prefer-type-fest-stringified`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-stringified) | — |
73
+ | [`prefer-type-fest-union-to-intersection`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-union-to-intersection) | — |
74
+
75
+ ### Baseline rules inherited from `all`
76
+
77
+ | Rule | Fix |
78
+ | ------------------------------------------------------------------------------------------------------------------------------------------------- | :---: |
79
+ | [`prefer-ts-extras-array-at`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-array-at) | 🔧 |
80
+ | [`prefer-ts-extras-array-concat`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-array-concat) | 🔧 |
81
+ | [`prefer-ts-extras-array-find`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-array-find) | 🔧 |
82
+ | [`prefer-ts-extras-array-find-last`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-array-find-last) | 🔧 |
83
+ | [`prefer-ts-extras-array-find-last-index`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-array-find-last-index) | 🔧 |
84
+ | [`prefer-ts-extras-array-first`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-array-first) | 🔧 💡 |
85
+ | [`prefer-ts-extras-array-includes`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-array-includes) | 🔧 💡 |
86
+ | [`prefer-ts-extras-array-join`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-array-join) | 🔧 |
87
+ | [`prefer-ts-extras-array-last`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-array-last) | 🔧 💡 |
88
+ | [`prefer-ts-extras-as-writable`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-as-writable) | 🔧 |
89
+ | [`prefer-ts-extras-assert-defined`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-assert-defined) | 🔧 💡 |
90
+ | [`prefer-ts-extras-assert-error`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-assert-error) | 💡 |
91
+ | [`prefer-ts-extras-assert-present`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-assert-present) | 🔧 💡 |
92
+ | [`prefer-ts-extras-is-defined`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-defined) | 🔧 |
93
+ | [`prefer-ts-extras-is-defined-filter`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-defined-filter) | 🔧 |
94
+ | [`prefer-ts-extras-is-empty`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-empty) | 🔧 |
95
+ | [`prefer-ts-extras-is-equal-type`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-equal-type) | 💡 |
96
+ | [`prefer-ts-extras-is-finite`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-finite) | 🔧 |
97
+ | [`prefer-ts-extras-is-infinite`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-infinite) | 🔧 |
98
+ | [`prefer-ts-extras-is-integer`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-integer) | 🔧 |
99
+ | [`prefer-ts-extras-is-present`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-present) | 🔧 |
100
+ | [`prefer-ts-extras-is-present-filter`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-present-filter) | 🔧 |
101
+ | [`prefer-ts-extras-is-safe-integer`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-is-safe-integer) | 🔧 |
102
+ | [`prefer-ts-extras-key-in`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-key-in) | 🔧 |
103
+ | [`prefer-ts-extras-not`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-not) | 🔧 |
104
+ | [`prefer-ts-extras-object-entries`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-object-entries) | 🔧 |
105
+ | [`prefer-ts-extras-object-from-entries`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-object-from-entries) | 🔧 |
106
+ | [`prefer-ts-extras-object-has-in`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-object-has-in) | 🔧 💡 |
107
+ | [`prefer-ts-extras-object-has-own`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-object-has-own) | 🔧 💡 |
108
+ | [`prefer-ts-extras-object-keys`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-object-keys) | 🔧 |
109
+ | [`prefer-ts-extras-object-values`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-object-values) | 🔧 |
110
+ | [`prefer-ts-extras-safe-cast-to`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-safe-cast-to) | 🔧 |
111
+ | [`prefer-ts-extras-set-has`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-set-has) | 🔧 💡 |
112
+ | [`prefer-ts-extras-string-split`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-string-split) | 🔧 |
113
+ | [`prefer-type-fest-abstract-constructor`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-abstract-constructor) | 🔧 |
114
+ | [`prefer-type-fest-and-all`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-and-all) | 🔧 |
115
+ | [`prefer-type-fest-array-length`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-array-length) | 🔧 |
116
+ | [`prefer-type-fest-arrayable`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-arrayable) | 🔧 |
117
+ | [`prefer-type-fest-async-return-type`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-async-return-type) | 🔧 |
118
+ | [`prefer-type-fest-conditional-pick`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-conditional-pick) | 🔧 |
119
+ | [`prefer-type-fest-conditional-pick-deep`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-conditional-pick-deep) | 🔧 |
120
+ | [`prefer-type-fest-constructor`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-constructor) | 🔧 |
121
+ | [`prefer-type-fest-except`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-except) | 🔧 |
122
+ | [`prefer-type-fest-if`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-if) | 🔧 |
123
+ | [`prefer-type-fest-iterable-element`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-iterable-element) | 🔧 |
124
+ | [`prefer-type-fest-json-array`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-json-array) | 🔧 |
125
+ | [`prefer-type-fest-json-object`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-json-object) | 🔧 |
126
+ | [`prefer-type-fest-json-primitive`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-json-primitive) | 🔧 |
127
+ | [`prefer-type-fest-json-value`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-json-value) | 💡 |
128
+ | [`prefer-type-fest-keys-of-union`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-keys-of-union) | 🔧 |
129
+ | [`prefer-type-fest-less-than`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-less-than) | 🔧 |
130
+ | [`prefer-type-fest-less-than-or-equal`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-less-than-or-equal) | 🔧 |
131
+ | [`prefer-type-fest-literal-union`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-literal-union) | 🔧 |
132
+ | [`prefer-type-fest-merge-exclusive`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-merge-exclusive) | 🔧 |
133
+ | [`prefer-type-fest-non-empty-tuple`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-non-empty-tuple) | 🔧 |
134
+ | [`prefer-type-fest-omit-index-signature`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-omit-index-signature) | 🔧 |
135
+ | [`prefer-type-fest-optional`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-optional) | 🔧 |
136
+ | [`prefer-type-fest-or-all`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-or-all) | 🔧 |
137
+ | [`prefer-type-fest-partial-deep`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-partial-deep) | 🔧 |
138
+ | [`prefer-type-fest-primitive`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-primitive) | 🔧 |
139
+ | [`prefer-type-fest-promisable`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-promisable) | 🔧 |
140
+ | [`prefer-type-fest-readonly-deep`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-readonly-deep) | 🔧 |
141
+ | [`prefer-type-fest-require-all-or-none`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-require-all-or-none) | 🔧 |
142
+ | [`prefer-type-fest-require-at-least-one`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-require-at-least-one) | 🔧 |
143
+ | [`prefer-type-fest-require-exactly-one`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-require-exactly-one) | 🔧 |
144
+ | [`prefer-type-fest-require-one-or-none`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-require-one-or-none) | 🔧 |
145
+ | [`prefer-type-fest-required-deep`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-required-deep) | 🔧 |
146
+ | [`prefer-type-fest-schema`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-schema) | 🔧 |
147
+ | [`prefer-type-fest-set-non-nullable`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-set-non-nullable) | 🔧 |
148
+ | [`prefer-type-fest-set-optional`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-set-optional) | 🔧 |
149
+ | [`prefer-type-fest-set-readonly`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-set-readonly) | 🔧 |
150
+ | [`prefer-type-fest-set-required`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-set-required) | 🔧 |
151
+ | [`prefer-type-fest-simplify`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-simplify) | 🔧 |
152
+ | [`prefer-type-fest-tagged-brands`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-tagged-brands) | 🔧 |
153
+ | [`prefer-type-fest-tuple-of`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-tuple-of) | 🔧 |
154
+ | [`prefer-type-fest-union-member`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-union-member) | 🔧 |
155
+ | [`prefer-type-fest-union-to-tuple`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-union-to-tuple) | 🔧 |
156
+ | [`prefer-type-fest-unknown-array`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-unknown-array) | 🔧 |
157
+ | [`prefer-type-fest-unknown-map`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-unknown-map) | 🔧 |
158
+ | [`prefer-type-fest-unknown-record`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-unknown-record) | 🔧 |
159
+ | [`prefer-type-fest-unknown-set`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-unknown-set) | 🔧 |
160
+ | [`prefer-type-fest-unwrap-tagged`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-unwrap-tagged) | 🔧 |
161
+ | [`prefer-type-fest-value-of`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-value-of) | 🔧 |
162
+ | [`prefer-type-fest-writable`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-writable) | 🔧 |
163
+ | [`prefer-type-fest-writable-deep`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-writable-deep) | 🔧 |
@@ -13,6 +13,7 @@ Use one of these presets based on how aggressively you want to enforce plugin ru
13
13
  - [🟠](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/recommended-type-checked) — [`typefest.configs["recommended-type-checked"]`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/recommended-type-checked)
14
14
  - [🔴](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/strict) — [`typefest.configs.strict`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/strict)
15
15
  - [🟣](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/all) — [`typefest.configs.all`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/all)
16
+ - [🧪](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/experimental) — [`typefest.configs.experimental`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/experimental)
16
17
  - [💠](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/type-fest-types) — [`typefest.configs["type-fest/types"]`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/type-fest-types)
17
18
  - [✴️](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/ts-extras-type-guards) — [`typefest.configs["ts-extras/type-guards"]`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/ts-extras-type-guards)
18
19
 
@@ -41,6 +42,7 @@ Related guides:
41
42
  - [🟠](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/recommended-type-checked) — [`typefest.configs["recommended-type-checked"]`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/recommended-type-checked)
42
43
  - [🔴](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/strict) — [`typefest.configs.strict`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/strict)
43
44
  - [🟣](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/all) — [`typefest.configs.all`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/all)
45
+ - [🧪](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/experimental) — [`typefest.configs.experimental`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/experimental)
44
46
  - [💠](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/type-fest-types) — [`typefest.configs["type-fest/types"]`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/type-fest-types)
45
47
  - [✴️](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/ts-extras-type-guards) — [`typefest.configs["ts-extras/type-guards"]`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/ts-extras-type-guards)
46
48
 
@@ -76,6 +78,7 @@ Related guides:
76
78
  | [`prefer-ts-extras-object-has-in`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-object-has-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) |
77
79
  | [`prefer-ts-extras-object-has-own`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-object-has-own) | 🔧 💡 | [🟡](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) |
78
80
  | [`prefer-ts-extras-object-keys`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-object-keys) | 🔧 | [🔴](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/strict) [🟣](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/all) |
81
+ | [`prefer-ts-extras-object-map-values`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-object-map-values) | — | [🧪](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/experimental) |
79
82
  | [`prefer-ts-extras-object-values`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-ts-extras-object-values) | 🔧 | [🔴](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/strict) [🟣](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/all) |
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) |
@@ -85,9 +88,14 @@ Related guides:
85
88
  | [`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) |
86
89
  | [`prefer-type-fest-arrayable`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-arrayable) | 🔧 | [🟢](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/type-fest-types) |
87
90
  | [`prefer-type-fest-async-return-type`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-async-return-type) | 🔧 | [🟡](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) |
91
+ | [`prefer-type-fest-asyncify`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-asyncify) | — | [🧪](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/experimental) |
92
+ | [`prefer-type-fest-conditional-except`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-conditional-except) | — | [🧪](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/experimental) |
93
+ | [`prefer-type-fest-conditional-keys`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-conditional-keys) | — | [🧪](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/experimental) |
88
94
  | [`prefer-type-fest-conditional-pick`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-conditional-pick) | 🔧 | [🟡](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) |
89
95
  | [`prefer-type-fest-conditional-pick-deep`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-conditional-pick-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) |
90
96
  | [`prefer-type-fest-constructor`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-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) |
97
+ | [`prefer-type-fest-distributed-omit`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-distributed-omit) | — | [🧪](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/experimental) |
98
+ | [`prefer-type-fest-distributed-pick`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-distributed-pick) | — | [🧪](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/experimental) |
91
99
  | [`prefer-type-fest-except`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-except) | 🔧 | [🟢](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/type-fest-types) |
92
100
  | [`prefer-type-fest-if`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-if) | 🔧 | [🟡](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) |
93
101
  | [`prefer-type-fest-iterable-element`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-iterable-element) | 🔧 | [🟡](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) |
@@ -99,12 +107,14 @@ Related guides:
99
107
  | [`prefer-type-fest-less-than`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-less-than) | 🔧 | [🟡](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) |
100
108
  | [`prefer-type-fest-less-than-or-equal`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-less-than-or-equal) | 🔧 | [🟡](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) |
101
109
  | [`prefer-type-fest-literal-union`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-literal-union) | 🔧 | [🟡](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
+ | [`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) |
102
111
  | [`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) |
103
112
  | [`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) |
104
113
  | [`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) |
105
114
  | [`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) |
106
115
  | [`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) |
107
116
  | [`prefer-type-fest-partial-deep`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-partial-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) |
117
+ | [`prefer-type-fest-pick-index-signature`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-pick-index-signature) | — | [🧪](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/experimental) |
108
118
  | [`prefer-type-fest-primitive`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-primitive) | 🔧 | [🟢](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/type-fest-types) |
109
119
  | [`prefer-type-fest-promisable`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-promisable) | 🔧 | [🟢](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/type-fest-types) |
110
120
  | [`prefer-type-fest-readonly-deep`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-readonly-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) |
@@ -118,10 +128,13 @@ Related guides:
118
128
  | [`prefer-type-fest-set-optional`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-set-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) |
119
129
  | [`prefer-type-fest-set-readonly`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-set-readonly) | 🔧 | [🟡](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) |
120
130
  | [`prefer-type-fest-set-required`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-set-required) | 🔧 | [🟡](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) |
131
+ | [`prefer-type-fest-set-return-type`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-set-return-type) | — | [🧪](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/presets/experimental) |
121
132
  | [`prefer-type-fest-simplify`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-simplify) | 🔧 | [🟡](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
+ | [`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) |
122
134
  | [`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) |
123
135
  | [`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) |
124
136
  | [`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) |
137
+ | [`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) |
125
138
  | [`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) |
126
139
  | [`prefer-type-fest-unknown-array`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-unknown-array) | 🔧 | [🟡](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) |
127
140
  | [`prefer-type-fest-unknown-map`](https://nick2bad4u.github.io/eslint-plugin-typefest/docs/rules/prefer-type-fest-unknown-map) | 🔧 | [🟡](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) |
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://www.schemastore.org/package.json",
3
3
  "name": "eslint-plugin-typefest",
4
- "version": "1.0.6",
4
+ "version": "1.0.8",
5
5
  "private": false,
6
6
  "description": "ESLint rules for adopting type-fest and ts-extras conventions.",
7
7
  "keywords": [
@@ -215,10 +215,10 @@
215
215
  "jsonc-eslint-parser": "$jsonc-eslint-parser"
216
216
  },
217
217
  "dependencies": {
218
- "@typescript-eslint/parser": "^8.57.1",
219
- "@typescript-eslint/type-utils": "^8.57.1",
220
- "@typescript-eslint/utils": "^8.57.1",
221
- "ts-extras": "^0.17.0",
218
+ "@typescript-eslint/parser": "^8.57.2",
219
+ "@typescript-eslint/type-utils": "^8.57.2",
220
+ "@typescript-eslint/utils": "^8.57.2",
221
+ "ts-extras": "^0.19.0",
222
222
  "type-fest": "^5.5.0"
223
223
  },
224
224
  "devDependencies": {
@@ -226,7 +226,7 @@
226
226
  "@csstools/stylelint-formatter-github": "^2.0.0",
227
227
  "@docusaurus/eslint-plugin": "^3.9.2",
228
228
  "@double-great/remark-lint-alt-text": "^1.1.1",
229
- "@double-great/stylelint-a11y": "^3.4.6",
229
+ "@double-great/stylelint-a11y": "^3.4.8",
230
230
  "@eslint-community/eslint-plugin-eslint-comments": "^4.7.1",
231
231
  "@eslint-react/eslint-plugin": "^3.0.0",
232
232
  "@eslint/compat": "^2.0.3",
@@ -235,7 +235,7 @@
235
235
  "@eslint/css": "^1.0.0",
236
236
  "@eslint/js": "^10.0.1",
237
237
  "@eslint/json": "^1.2.0",
238
- "@eslint/markdown": "^7.5.1",
238
+ "@eslint/markdown": "^8.0.0",
239
239
  "@html-eslint/eslint-plugin": "^0.58.1",
240
240
  "@html-eslint/parser": "^0.58.1",
241
241
  "@microsoft/eslint-plugin-sdl": "^1.1.0",
@@ -276,11 +276,12 @@
276
276
  "@types/postcss-normalize": "^9.0.4",
277
277
  "@types/postcss-reporter": "^7.0.5",
278
278
  "@types/sloc": "^0.2.3",
279
- "@typescript-eslint/eslint-plugin": "^8.57.1",
280
- "@typescript-eslint/rule-tester": "^8.57.1",
281
- "@vitest/coverage-v8": "^4.1.0",
282
- "@vitest/eslint-plugin": "^1.6.12",
283
- "@vitest/ui": "^4.1.0",
279
+ "@typescript-eslint/eslint-plugin": "^8.57.2",
280
+ "@typescript-eslint/rule-tester": "^8.57.2",
281
+ "@typpi/eslint-plugin-vite": "^1.0.11",
282
+ "@vitest/coverage-v8": "^4.1.2",
283
+ "@vitest/eslint-plugin": "^1.6.13",
284
+ "@vitest/ui": "^4.1.2",
284
285
  "actionlint": "^2.0.6",
285
286
  "all-contributors-cli": "^6.26.1",
286
287
  "cognitive-complexity-ts": "^0.8.1",
@@ -290,7 +291,7 @@
290
291
  "depcheck": "^1.4.7",
291
292
  "detect-secrets": "^1.0.6",
292
293
  "eslint": "^10.1.0",
293
- "eslint-config-flat-gitignore": "^2.2.1",
294
+ "eslint-config-flat-gitignore": "^2.3.0",
294
295
  "eslint-config-prettier": "^10.1.8",
295
296
  "eslint-formatter-unix": "^9.0.1",
296
297
  "eslint-import-resolver-typescript": "^4.4.4",
@@ -306,20 +307,19 @@
306
307
  "eslint-plugin-etc": "^2.0.3",
307
308
  "eslint-plugin-etc-misc": "^1.0.4",
308
309
  "eslint-plugin-file-progress-2": "^3.4.3",
310
+ "eslint-plugin-github-actions-2": "^1.0.1",
309
311
  "eslint-plugin-html": "^8.1.4",
310
- "eslint-plugin-immutable-2": "^1.0.5",
312
+ "eslint-plugin-immutable-2": "^1.0.6",
311
313
  "eslint-plugin-import-x": "^4.16.2",
312
- "eslint-plugin-jsdoc": "^62.8.0",
314
+ "eslint-plugin-jsdoc": "^62.8.1",
313
315
  "eslint-plugin-jsonc": "^3.1.2",
314
316
  "eslint-plugin-jsx-a11y": "^6.10.2",
315
317
  "eslint-plugin-listeners": "^1.5.1",
316
- "eslint-plugin-loadable-imports": "^1.0.1",
317
318
  "eslint-plugin-math": "^0.13.1",
318
319
  "eslint-plugin-module-interop": "^0.3.1",
319
320
  "eslint-plugin-n": "^17.24.0",
320
321
  "eslint-plugin-nitpick": "^0.12.0",
321
322
  "eslint-plugin-no-barrel-files": "^1.2.2",
322
- "eslint-plugin-no-explicit-type-exports": "^0.12.1",
323
323
  "eslint-plugin-no-function-declare-after-return": "^1.1.0",
324
324
  "eslint-plugin-no-lookahead-lookbehind-regexp": "^0.4.0",
325
325
  "eslint-plugin-no-only-tests": "^3.3.0",
@@ -329,7 +329,6 @@
329
329
  "eslint-plugin-node-dependencies": "^2.2.0",
330
330
  "eslint-plugin-package-json": "^0.91.0",
331
331
  "eslint-plugin-perfectionist": "^5.7.0",
332
- "eslint-plugin-prefer-arrow": "^1.2.3",
333
332
  "eslint-plugin-prettier": "^5.5.5",
334
333
  "eslint-plugin-promise": "^7.2.1",
335
334
  "eslint-plugin-redos": "^4.5.0",
@@ -339,12 +338,12 @@
339
338
  "eslint-plugin-security": "^4.0.0",
340
339
  "eslint-plugin-sonarjs": "^4.0.2",
341
340
  "eslint-plugin-sort-class-members": "^1.21.0",
342
- "eslint-plugin-testing-library": "^7.16.1",
341
+ "eslint-plugin-testing-library": "^7.16.2",
343
342
  "eslint-plugin-toml": "^1.3.1",
344
343
  "eslint-plugin-total-functions": "^7.1.0",
345
344
  "eslint-plugin-tsdoc": "^0.5.2",
346
345
  "eslint-plugin-tsdoc-require-2": "^1.0.6",
347
- "eslint-plugin-typefest": "^1.0.5",
346
+ "eslint-plugin-typefest": "^1.0.7",
348
347
  "eslint-plugin-undefined-css-classes": "^0.1.5",
349
348
  "eslint-plugin-unicorn": "^63.0.0",
350
349
  "eslint-plugin-unused-imports": "^4.4.1",
@@ -359,11 +358,11 @@
359
358
  "htmlhint": "^1.9.2",
360
359
  "jscpd": "^4.0.8",
361
360
  "jsonc-eslint-parser": "^3.1.0",
362
- "knip": "^6.0.1",
361
+ "knip": "^6.0.6",
363
362
  "leasot": "^14.4.0",
364
363
  "madge": "^8.0.0",
365
364
  "markdown-link-check": "^3.14.2",
366
- "npm-check-updates": "^19.6.5",
365
+ "npm-check-updates": "^19.6.6",
367
366
  "npm-package-json-lint": "^9.1.0",
368
367
  "picocolors": "^1.1.1",
369
368
  "postcss": "^8.5.8",
@@ -379,7 +378,7 @@
379
378
  "postcss-reporter": "^7.1.0",
380
379
  "postcss-round-subpixels": "^2.0.0",
381
380
  "postcss-scss": "^4.0.9",
382
- "postcss-sort-media-queries": "^6.3.2",
381
+ "postcss-sort-media-queries": "^6.3.3",
383
382
  "postcss-styled-jsx": "^1.0.1",
384
383
  "postcss-styled-syntax": "^0.7.1",
385
384
  "postcss-viewport-height-correction": "^1.1.1",
@@ -388,7 +387,7 @@
388
387
  "prettier-plugin-interpolated-html-tags": "^2.0.1",
389
388
  "prettier-plugin-jsdoc": "^1.8.0",
390
389
  "prettier-plugin-jsdoc-type": "^0.2.0",
391
- "prettier-plugin-merge": "^0.10.0",
390
+ "prettier-plugin-merge": "^0.10.1",
392
391
  "prettier-plugin-multiline-arrays": "^4.1.5",
393
392
  "prettier-plugin-packagejson": "^3.0.2",
394
393
  "prettier-plugin-properties": "^0.3.1",
@@ -506,13 +505,13 @@
506
505
  "secretlint": "^11.4.0",
507
506
  "sloc": "^0.3.2",
508
507
  "sort-package-json": "^3.6.1",
509
- "stylelint": "^17.5.0",
508
+ "stylelint": "^17.6.0",
510
509
  "stylelint-actions-formatters": "^16.3.1",
511
510
  "stylelint-checkstyle-formatter": "^0.1.2",
512
511
  "stylelint-codeframe-formatter": "^1.2.0",
513
512
  "stylelint-config-alphabetical-order": "^2.0.0",
514
513
  "stylelint-config-idiomatic-order": "^10.0.0",
515
- "stylelint-config-inspector": "^2.0.2",
514
+ "stylelint-config-inspector": "^2.0.3",
516
515
  "stylelint-config-recess-order": "^7.7.0",
517
516
  "stylelint-config-recommended": "^18.0.0",
518
517
  "stylelint-config-sass-guidelines": "^13.0.0",
@@ -537,7 +536,7 @@
537
536
  "stylelint-order": "^8.1.1",
538
537
  "stylelint-plugin-defensive-css": "^2.8.0",
539
538
  "stylelint-plugin-logical-css": "^2.0.2",
540
- "stylelint-plugin-use-baseline": "^1.4.0",
539
+ "stylelint-plugin-use-baseline": "^1.4.1",
541
540
  "stylelint-prettier": "^5.0.3",
542
541
  "stylelint-react-native": "^2.7.0",
543
542
  "stylelint-scales": "^5.0.0",
@@ -546,22 +545,22 @@
546
545
  "stylelint-value-no-unknown-custom-properties": "^6.1.1",
547
546
  "toml-eslint-parser": "^1.0.3",
548
547
  "ts-unused-exports": "^11.0.1",
549
- "typedoc": "^0.28.17",
550
- "typescript": "^5.9.3",
551
- "typescript-eslint": "^8.57.1",
548
+ "typedoc": "^0.28.18",
549
+ "typescript": "^6.0.2",
550
+ "typescript-eslint": "^8.57.2",
552
551
  "typesync": "^0.14.3",
553
552
  "vfile": "^6.0.3",
554
- "vite": "^8.0.1",
553
+ "vite": "^8.0.3",
555
554
  "vite-tsconfig-paths": "^6.1.1",
556
- "vitest": "^4.1.0",
555
+ "vitest": "^4.1.2",
557
556
  "yaml-eslint-parser": "^2.0.0",
558
557
  "yamllint-js": "^0.2.4"
559
558
  },
560
559
  "peerDependencies": {
561
560
  "eslint": "^9.0.0 || ^10.1.0",
562
- "typescript": ">=5.0.0"
561
+ "typescript": "^5.0.0 || ^6.0.0"
563
562
  },
564
- "packageManager": "npm@11.12.0",
563
+ "packageManager": "npm@11.12.1",
565
564
  "engines": {
566
565
  "node": ">=22.0.0"
567
566
  },