eslint-config-typed 5.4.2 → 5.5.0

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 (80) hide show
  1. package/dist/plugins/strict-dependencies/rules/strict-dependencies.mjs +1 -1
  2. package/dist/plugins/strict-dependencies/rules/strict-dependencies.mjs.map +1 -1
  3. package/dist/plugins/ts-data-forge/rules/ast-utils.d.mts +25 -0
  4. package/dist/plugins/ts-data-forge/rules/ast-utils.d.mts.map +1 -1
  5. package/dist/plugins/ts-data-forge/rules/ast-utils.mjs +62 -1
  6. package/dist/plugins/ts-data-forge/rules/ast-utils.mjs.map +1 -1
  7. package/dist/plugins/ts-data-forge/rules/no-unnecessary-type-guard.d.mts.map +1 -1
  8. package/dist/plugins/ts-data-forge/rules/no-unnecessary-type-guard.mjs +25 -8
  9. package/dist/plugins/ts-data-forge/rules/no-unnecessary-type-guard.mjs.map +1 -1
  10. package/dist/plugins/ts-data-forge/rules/prefer-arr-is-bounded-length-array.d.mts +6 -0
  11. package/dist/plugins/ts-data-forge/rules/prefer-arr-is-bounded-length-array.d.mts.map +1 -0
  12. package/dist/plugins/ts-data-forge/rules/prefer-arr-is-bounded-length-array.mjs +98 -0
  13. package/dist/plugins/ts-data-forge/rules/prefer-arr-is-bounded-length-array.mjs.map +1 -0
  14. package/dist/plugins/ts-data-forge/rules/prefer-arr-is-fixed-length-array.d.mts +6 -0
  15. package/dist/plugins/ts-data-forge/rules/prefer-arr-is-fixed-length-array.d.mts.map +1 -0
  16. package/dist/plugins/ts-data-forge/rules/{prefer-arr-is-array-of-length.mjs → prefer-arr-is-fixed-length-array.mjs} +7 -7
  17. package/dist/plugins/ts-data-forge/rules/prefer-arr-is-fixed-length-array.mjs.map +1 -0
  18. package/dist/plugins/ts-data-forge/rules/prefer-arr-is-max-length-array.d.mts +6 -0
  19. package/dist/plugins/ts-data-forge/rules/prefer-arr-is-max-length-array.d.mts.map +1 -0
  20. package/dist/plugins/ts-data-forge/rules/prefer-arr-is-max-length-array.mjs +98 -0
  21. package/dist/plugins/ts-data-forge/rules/prefer-arr-is-max-length-array.mjs.map +1 -0
  22. package/dist/plugins/ts-data-forge/rules/prefer-arr-is-min-length-array.d.mts +6 -0
  23. package/dist/plugins/ts-data-forge/rules/prefer-arr-is-min-length-array.d.mts.map +1 -0
  24. package/dist/plugins/ts-data-forge/rules/{prefer-arr-is-array-at-least-length.mjs → prefer-arr-is-min-length-array.mjs} +12 -12
  25. package/dist/plugins/ts-data-forge/rules/prefer-arr-is-min-length-array.mjs.map +1 -0
  26. package/dist/plugins/ts-data-forge/rules/prefer-arr-sum.mjs +2 -2
  27. package/dist/plugins/ts-data-forge/rules/prefer-arr-sum.mjs.map +1 -1
  28. package/dist/plugins/ts-data-forge/rules/prefer-canonical-array-slicing.d.mts.map +1 -1
  29. package/dist/plugins/ts-data-forge/rules/prefer-canonical-array-slicing.mjs +5 -1
  30. package/dist/plugins/ts-data-forge/rules/prefer-canonical-array-slicing.mjs.map +1 -1
  31. package/dist/plugins/ts-data-forge/rules/prefer-range-for-loop.mjs +1 -1
  32. package/dist/plugins/ts-data-forge/rules/prefer-range-for-loop.mjs.map +1 -1
  33. package/dist/plugins/ts-data-forge/rules/rules.d.mts +4 -2
  34. package/dist/plugins/ts-data-forge/rules/rules.d.mts.map +1 -1
  35. package/dist/plugins/ts-data-forge/rules/rules.mjs +8 -4
  36. package/dist/plugins/ts-data-forge/rules/rules.mjs.map +1 -1
  37. package/dist/plugins/vitest-coding-style/rules/prefer-assert-is-false-over-assert-negation.mjs +1 -1
  38. package/dist/plugins/vitest-coding-style/rules/prefer-assert-is-false-over-assert-negation.mjs.map +1 -1
  39. package/dist/plugins/vitest-coding-style/rules/prefer-assert-is-false-over-expect-false.mjs +1 -1
  40. package/dist/plugins/vitest-coding-style/rules/prefer-assert-is-false-over-expect-false.mjs.map +1 -1
  41. package/dist/plugins/vitest-coding-style/rules/prefer-assert-is-true-over-assert-negated-is-false.mjs +1 -1
  42. package/dist/plugins/vitest-coding-style/rules/prefer-assert-is-true-over-assert-negated-is-false.mjs.map +1 -1
  43. package/dist/plugins/vitest-coding-style/rules/prefer-assert-is-true-over-expect-true.mjs +1 -1
  44. package/dist/plugins/vitest-coding-style/rules/prefer-assert-is-true-over-expect-true.mjs.map +1 -1
  45. package/dist/rules/eslint-ts-data-forge-rules.d.mts +4 -2
  46. package/dist/rules/eslint-ts-data-forge-rules.d.mts.map +1 -1
  47. package/dist/rules/eslint-ts-data-forge-rules.mjs +4 -2
  48. package/dist/rules/eslint-ts-data-forge-rules.mjs.map +1 -1
  49. package/dist/types/rules/eslint-ts-data-forge-rules.d.mts +36 -6
  50. package/dist/types/rules/eslint-ts-data-forge-rules.d.mts.map +1 -1
  51. package/package.json +4 -4
  52. package/src/plugins/strict-dependencies/rules/strict-dependencies.mts +1 -1
  53. package/src/plugins/ts-data-forge/rules/ast-utils.mts +94 -0
  54. package/src/plugins/ts-data-forge/rules/no-unnecessary-type-guard.mts +32 -9
  55. package/src/plugins/ts-data-forge/rules/prefer-arr-is-bounded-length-array.mts +143 -0
  56. package/src/plugins/ts-data-forge/rules/prefer-arr-is-bounded-length-array.test.mts +154 -0
  57. package/src/plugins/ts-data-forge/rules/{prefer-arr-is-array-of-length.mts → prefer-arr-is-fixed-length-array.mts} +7 -7
  58. package/src/plugins/ts-data-forge/rules/{prefer-arr-is-array-of-length.test.mts → prefer-arr-is-fixed-length-array.test.mts} +29 -29
  59. package/src/plugins/ts-data-forge/rules/prefer-arr-is-max-length-array.mts +141 -0
  60. package/src/plugins/ts-data-forge/rules/prefer-arr-is-max-length-array.test.mts +188 -0
  61. package/src/plugins/ts-data-forge/rules/{prefer-arr-is-array-at-least-length.mts → prefer-arr-is-min-length-array.mts} +16 -20
  62. package/src/plugins/ts-data-forge/rules/prefer-arr-is-min-length-array.test.mts +202 -0
  63. package/src/plugins/ts-data-forge/rules/prefer-arr-sum.mts +2 -2
  64. package/src/plugins/ts-data-forge/rules/prefer-canonical-array-slicing.mts +8 -1
  65. package/src/plugins/ts-data-forge/rules/prefer-canonical-array-slicing.test.mts +6 -6
  66. package/src/plugins/ts-data-forge/rules/prefer-range-for-loop.mts +1 -1
  67. package/src/plugins/ts-data-forge/rules/rules.mts +8 -4
  68. package/src/plugins/vitest-coding-style/rules/prefer-assert-is-false-over-assert-negation.mts +1 -1
  69. package/src/plugins/vitest-coding-style/rules/prefer-assert-is-false-over-expect-false.mts +1 -1
  70. package/src/plugins/vitest-coding-style/rules/prefer-assert-is-true-over-assert-negated-is-false.mts +1 -1
  71. package/src/plugins/vitest-coding-style/rules/prefer-assert-is-true-over-expect-true.mts +1 -1
  72. package/src/rules/eslint-ts-data-forge-rules.mts +4 -2
  73. package/src/types/rules/eslint-ts-data-forge-rules.mts +38 -6
  74. package/dist/plugins/ts-data-forge/rules/prefer-arr-is-array-at-least-length.d.mts +0 -6
  75. package/dist/plugins/ts-data-forge/rules/prefer-arr-is-array-at-least-length.d.mts.map +0 -1
  76. package/dist/plugins/ts-data-forge/rules/prefer-arr-is-array-at-least-length.mjs.map +0 -1
  77. package/dist/plugins/ts-data-forge/rules/prefer-arr-is-array-of-length.d.mts +0 -6
  78. package/dist/plugins/ts-data-forge/rules/prefer-arr-is-array-of-length.d.mts.map +0 -1
  79. package/dist/plugins/ts-data-forge/rules/prefer-arr-is-array-of-length.mjs.map +0 -1
  80. package/src/plugins/ts-data-forge/rules/prefer-arr-is-array-at-least-length.test.mts +0 -206
@@ -63,7 +63,7 @@ const strictDependenciesRule = {
63
63
  create: (context) => {
64
64
  const ruleOptions = context.options;
65
65
  const dependencies = ruleOptions[0];
66
- const options = Arr.isArrayAtLeastLength(ruleOptions, 2)
66
+ const options = Arr.isMinLengthTuple(ruleOptions, 2)
67
67
  ? ruleOptions[1]
68
68
  : {};
69
69
  const resolveRelativeImport = options.resolveRelativeImport;
@@ -1 +1 @@
1
- {"version":3,"file":"strict-dependencies.mjs","sources":["../../../../src/plugins/strict-dependencies/rules/strict-dependencies.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"strict-dependencies.mjs","sources":["../../../../src/plugins/strict-dependencies/rules/strict-dependencies.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -1,4 +1,29 @@
1
1
  import { type TSESLint, type TSESTree } from '@typescript-eslint/utils';
2
2
  import { type DeepReadonly } from 'ts-type-forge';
3
3
  export declare const isIntegerLiteralOrConstant: (node: DeepReadonly<TSESTree.Expression>, sourceCode: TSESLint.SourceCode) => boolean;
4
+ export declare const isLengthAccess: (node: DeepReadonly<TSESTree.Expression>) => node is TSESTree.MemberExpression;
5
+ type LengthComparison = Readonly<{
6
+ array: TSESTree.Expression;
7
+ bound: TSESTree.Expression;
8
+ kind: 'max' | 'min';
9
+ }>;
10
+ /**
11
+ * Parses a `<array>.length <op> <bound>` comparison (in either operand order)
12
+ * into its array expression, integer-literal/`const` `bound`, and whether it is
13
+ * a lower (`min`) or upper (`max`) length bound. Returns `undefined` for
14
+ * anything else.
15
+ *
16
+ * - `xs.length >= n` / `n <= xs.length` → `min`
17
+ * - `xs.length <= n` / `n >= xs.length` → `max`
18
+ */
19
+ export declare const parseLengthComparison: (node: TSESTree.Expression, sourceCode: TSESLint.SourceCode) => LengthComparison | undefined;
20
+ /**
21
+ * `true` when `node` is one operand of an `a && b` whose other operand is the
22
+ * complementary length bound (`min` vs `max`) on the same array — i.e. the two
23
+ * together form the `Arr.isBoundedLengthArray` pattern handled by
24
+ * `prefer-arr-is-bounded-length-array`. The single-bound rules skip such
25
+ * operands so the bounded rule rewrites the whole `&&` instead of the parts.
26
+ */
27
+ export declare const isPartOfBoundedLengthCheck: (node: TSESTree.BinaryExpression, sourceCode: TSESLint.SourceCode) => boolean;
28
+ export {};
4
29
  //# sourceMappingURL=ast-utils.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ast-utils.d.mts","sourceRoot":"","sources":["../../../../src/plugins/ts-data-forge/rules/ast-utils.mts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,QAAQ,EACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAOlD,eAAO,MAAM,0BAA0B,GACrC,MAAM,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,EAEvC,YAAY,QAAQ,CAAC,UAAU,KAC9B,OAgCF,CAAC"}
1
+ {"version":3,"file":"ast-utils.d.mts","sourceRoot":"","sources":["../../../../src/plugins/ts-data-forge/rules/ast-utils.mts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,QAAQ,EACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAOlD,eAAO,MAAM,0BAA0B,GACrC,MAAM,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,EAEvC,YAAY,QAAQ,CAAC,UAAU,KAC9B,OAgCF,CAAC;AAEF,eAAO,MAAM,cAAc,GACzB,MAAM,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,KACtC,IAAI,IAAI,QAAQ,CAAC,gBAGa,CAAC;AAElC,KAAK,gBAAgB,GAAG,QAAQ,CAAC;IAC/B,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC;IAC3B,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC;IAC3B,IAAI,EAAE,KAAK,GAAG,KAAK,CAAC;CACrB,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,GAEhC,MAAM,QAAQ,CAAC,UAAU,EAEzB,YAAY,QAAQ,CAAC,UAAU,KAC9B,gBAAgB,GAAG,SA2BrB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,GAErC,MAAM,QAAQ,CAAC,gBAAgB,EAE/B,YAAY,QAAQ,CAAC,UAAU,KAC9B,OAwBF,CAAC"}
@@ -35,6 +35,67 @@ sourceCode) => {
35
35
  return false;
36
36
  return isIntegerLiteral(def.node.init);
37
37
  };
38
+ const isLengthAccess = (node) => node.type === AST_NODE_TYPES.MemberExpression &&
39
+ node.property.type === AST_NODE_TYPES.Identifier &&
40
+ node.property.name === 'length';
41
+ /**
42
+ * Parses a `<array>.length <op> <bound>` comparison (in either operand order)
43
+ * into its array expression, integer-literal/`const` `bound`, and whether it is
44
+ * a lower (`min`) or upper (`max`) length bound. Returns `undefined` for
45
+ * anything else.
46
+ *
47
+ * - `xs.length >= n` / `n <= xs.length` → `min`
48
+ * - `xs.length <= n` / `n >= xs.length` → `max`
49
+ */
50
+ const parseLengthComparison = (
51
+ // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
52
+ node,
53
+ // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
54
+ sourceCode) => {
55
+ if (node.type !== AST_NODE_TYPES.BinaryExpression ||
56
+ (node.operator !== '>=' && node.operator !== '<=')) {
57
+ return undefined;
58
+ }
59
+ const { left, right, operator } = node;
60
+ const lengthOnLeft = isLengthAccess(left);
61
+ const lengthSide = lengthOnLeft ? left : right;
62
+ const boundSide = lengthOnLeft ? right : left;
63
+ if (!isLengthAccess(lengthSide))
64
+ return undefined;
65
+ if (!isIntegerLiteralOrConstant(boundSide, sourceCode))
66
+ return undefined;
67
+ const kind = (lengthOnLeft ? operator === '>=' : operator === '<=')
68
+ ? 'min'
69
+ : 'max';
70
+ return { array: lengthSide.object, bound: boundSide, kind };
71
+ };
72
+ /**
73
+ * `true` when `node` is one operand of an `a && b` whose other operand is the
74
+ * complementary length bound (`min` vs `max`) on the same array — i.e. the two
75
+ * together form the `Arr.isBoundedLengthArray` pattern handled by
76
+ * `prefer-arr-is-bounded-length-array`. The single-bound rules skip such
77
+ * operands so the bounded rule rewrites the whole `&&` instead of the parts.
78
+ */
79
+ const isPartOfBoundedLengthCheck = (
80
+ // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
81
+ node,
82
+ // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
83
+ sourceCode) => {
84
+ const { parent } = node;
85
+ if (parent.type !== AST_NODE_TYPES.LogicalExpression ||
86
+ parent.operator !== '&&') {
87
+ return false;
88
+ }
89
+ const self = parseLengthComparison(node, sourceCode);
90
+ if (self === undefined)
91
+ return false;
92
+ const sibling = parent.left === node ? parent.right : parent.left;
93
+ const other = parseLengthComparison(sibling, sourceCode);
94
+ if (other === undefined)
95
+ return false;
96
+ return (self.kind !== other.kind &&
97
+ sourceCode.getText(self.array) === sourceCode.getText(other.array));
98
+ };
38
99
  const isVariableDefinition = (
39
100
  // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
40
101
  def) => def.type === 'Variable';
@@ -49,5 +110,5 @@ scope, name) => {
49
110
  return findVariable(scope.upper, name);
50
111
  };
51
112
 
52
- export { isIntegerLiteralOrConstant };
113
+ export { isIntegerLiteralOrConstant, isLengthAccess, isPartOfBoundedLengthCheck, parseLengthComparison };
53
114
  //# sourceMappingURL=ast-utils.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ast-utils.mjs","sources":["../../../../src/plugins/ts-data-forge/rules/ast-utils.mts"],"sourcesContent":[null],"names":[],"mappings":";;AAOA,MAAM,gBAAgB,GAAG,CAAC,IAAuC,KAC/D,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,OAAO;AACpC,IAAA,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;AAC9B,IAAA,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;AAEvB,MAAM,0BAA0B,GAAG,CACxC,IAAuC;AACvC;AACA,UAA+B,KACpB;;IAEX,IAAI,gBAAgB,CAAC,IAAI,CAAC;AAAE,QAAA,OAAO,IAAI;;AAGvC,IAAA,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU;AAAE,QAAA,OAAO,KAAK;;IAGzD,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAqB,CAAC;IAExD,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC;IAE/C,IAAI,QAAQ,KAAK,SAAS;AAAE,QAAA,OAAO,KAAK;;AAGxC,IAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,KAAK;IAE5C,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAE5B,IAAI,GAAG,KAAK,SAAS;AAAE,QAAA,OAAO,KAAK;AAEnC,IAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC;AAAE,QAAA,OAAO,KAAK;AAE5C,IAAA,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO;AAAE,QAAA,OAAO,KAAK;AAE7C,IAAA,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI;AAAE,QAAA,OAAO,KAAK;;;IAIvC,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,KAAK,SAAS;AAAE,QAAA,OAAO,KAAK;IAE1D,OAAO,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;AACxC;AAQA,MAAM,oBAAoB,GAAG;AAC3B;AACA,GAA8B,KAE7B,GAAG,CAAC,IAAe,KAAK,UAAU;AAErC,MAAM,YAAY,GAAG;AACnB;AACA,KAA2B,EAC3B,IAAY,KAC2B;IACvC,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;IAEpC,IAAI,QAAQ,KAAK,SAAS;AAAE,QAAA,OAAO,QAAQ;AAE3C,IAAA,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI;AAAE,QAAA,OAAO,SAAS;IAE1C,OAAO,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC;AACxC,CAAC;;;;"}
1
+ {"version":3,"file":"ast-utils.mjs","sources":["../../../../src/plugins/ts-data-forge/rules/ast-utils.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"no-unnecessary-type-guard.d.mts","sourceRoot":"","sources":["../../../../src/plugins/ts-data-forge/rules/no-unnecessary-type-guard.mts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,QAAQ,EAEd,MAAM,0BAA0B,CAAC;AAUlC,KAAK,OAAO,GAAG,SAAS;IACtB,QAAQ,CAAC;QACP,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;KAC5B,CAAC,CAAC;CACJ,CAAC;AAEF,KAAK,UAAU,GAAG,YAAY,GAAG,aAAa,GAAG,kBAAkB,CAAC;AAyFpE,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CAgRhE,CAAC"}
1
+ {"version":3,"file":"no-unnecessary-type-guard.d.mts","sourceRoot":"","sources":["../../../../src/plugins/ts-data-forge/rules/no-unnecessary-type-guard.mts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,QAAQ,EAEd,MAAM,0BAA0B,CAAC;AAUlC,KAAK,OAAO,GAAG,SAAS;IACtB,QAAQ,CAAC;QACP,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;KAC5B,CAAC,CAAC;CACJ,CAAC;AAEF,KAAK,UAAU,GAAG,YAAY,GAAG,aAAa,GAAG,kBAAkB,CAAC;AA+FpE,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CAoRhE,CAAC"}
@@ -4,11 +4,17 @@ import { getTsDataForgeImport, buildCalleeResolver, getImportedLocalName, buildI
4
4
 
5
5
  /**
6
6
  * Internal marker property attached to every `ts-type-forge` branded type. Its
7
- * presence (together with the brand key) lets us recognize a `NonEmptyString`
8
- * without holding a reference to the type itself.
7
+ * presence (together with the `MinLength` brand key) lets us recognize a
8
+ * `NonEmptyString` without holding a reference to the type itself.
9
9
  */
10
10
  const BRAND_MARKER_PROPERTY = 'TSTypeForgeInternals--edd2f9ce-7ca5-45b0-9d1a-bd61b9b5d9c3';
11
- const NON_EMPTY_STRING_BRAND_KEY = 'NonEmptyString';
11
+ /**
12
+ * Brand key carried by `MinLengthString<N>` — and therefore by
13
+ * `NonEmptyString = MinLengthString<1>`. Its value is `MinLengthTuple<N, 0>`, a
14
+ * tuple of `0`s with at least `N` elements, so a required first element means
15
+ * `N >= 1` (the string cannot be empty).
16
+ */
17
+ const MIN_LENGTH_BRAND_KEY = 'MinLength';
12
18
  const NULLISH_REPLACEMENTS_EXCLUDE = {
13
19
  undefined: 'isNotUndefined',
14
20
  null: 'isNotNull',
@@ -217,7 +223,7 @@ const noUnnecessaryTypeGuard = {
217
223
  reportConstant(node, canonicalName, false, argument);
218
224
  break;
219
225
  }
220
- if (!nonNullishParts.every(isGuaranteedNonEmptyString)) {
226
+ if (nonNullishParts.some((p) => !isGuaranteedNonEmptyString(p, checker))) {
221
227
  break; // still does real string/empty work
222
228
  }
223
229
  if (hasNullish) {
@@ -290,14 +296,25 @@ const ATOM_ORDER = [
290
296
  const joinAtoms = (atoms) => ATOM_ORDER.filter((atom) => atoms.includes(atom)).join('|');
291
297
  /**
292
298
  * Returns `true` when the type is guaranteed to be a non-empty string: either a
293
- * non-empty string literal or a value branded as `NonEmptyString`.
299
+ * non-empty string literal or a value branded as `NonEmptyString`
300
+ * (`MinLengthString<N>` with `N >= 1`).
294
301
  */
302
+ const isGuaranteedNonEmptyString = (
303
+ // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
304
+ type,
295
305
  // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
296
- const isGuaranteedNonEmptyString = (type) => {
306
+ checker) => {
297
307
  if (type.isStringLiteral())
298
308
  return type.value !== '';
299
- return (type.getProperty(NON_EMPTY_STRING_BRAND_KEY) !== undefined &&
300
- type.getProperty(BRAND_MARKER_PROPERTY) !== undefined);
309
+ if (type.getProperty(BRAND_MARKER_PROPERTY) === undefined)
310
+ return false;
311
+ const minLengthSymbol = type.getProperty(MIN_LENGTH_BRAND_KEY);
312
+ if (minLengthSymbol === undefined)
313
+ return false;
314
+ // The `MinLength` brand value is `MinLengthTuple<N, 0>`; it has a required
315
+ // first element (`'0'`) exactly when `N >= 1`, i.e. the string is non-empty.
316
+ // `MinLengthString<0>` brands with a plain array and has no such element.
317
+ return (checker.getTypeOfSymbol(minLengthSymbol).getProperty('0') !== undefined);
301
318
  };
302
319
  /**
303
320
  * Returns `true` when the type can possibly be a non-empty string (a general
@@ -1 +1 @@
1
- {"version":3,"file":"no-unnecessary-type-guard.mjs","sources":["../../../../src/plugins/ts-data-forge/rules/no-unnecessary-type-guard.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"no-unnecessary-type-guard.mjs","sources":["../../../../src/plugins/ts-data-forge/rules/no-unnecessary-type-guard.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { type TSESLint } from '@typescript-eslint/utils';
2
+ type Options = readonly [];
3
+ type MessageIds = 'useIsBoundedLengthArray';
4
+ export declare const preferArrIsBoundedLengthArray: TSESLint.RuleModule<MessageIds, Options>;
5
+ export {};
6
+ //# sourceMappingURL=prefer-arr-is-bounded-length-array.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prefer-arr-is-bounded-length-array.d.mts","sourceRoot":"","sources":["../../../../src/plugins/ts-data-forge/rules/prefer-arr-is-bounded-length-array.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAiB,MAAM,0BAA0B,CAAC;AAQxE,KAAK,OAAO,GAAG,SAAS,EAAE,CAAC;AAE3B,KAAK,UAAU,GAAG,yBAAyB,CAAC;AAE5C,eAAO,MAAM,6BAA6B,EAAE,QAAQ,CAAC,UAAU,CAC7D,UAAU,EACV,OAAO,CAgIC,CAAC"}
@@ -0,0 +1,98 @@
1
+ import { parseLengthComparison } from './ast-utils.mjs';
2
+ import { getTsDataForgeImport, getNamedImports, buildImportFixes } from './import-utils.mjs';
3
+
4
+ const preferArrIsBoundedLengthArray = {
5
+ meta: {
6
+ type: 'suggestion',
7
+ docs: {
8
+ description: 'Replace `xs.length >= min && xs.length <= max` with `Arr.isBoundedLengthArray(xs, min, max)` from ts-data-forge.',
9
+ },
10
+ fixable: 'code',
11
+ schema: [],
12
+ messages: {
13
+ useIsBoundedLengthArray: 'Replace `{{original}}` with `Arr.isBoundedLengthArray({{arrayName}}, {{min}}, {{max}})` from ts-data-forge.',
14
+ },
15
+ },
16
+ create: (context) => {
17
+ const sourceCode = context.sourceCode;
18
+ const program = sourceCode.ast;
19
+ const tsDataForgeImport = getTsDataForgeImport(program);
20
+ const services = context.sourceCode.parserServices;
21
+ const mut_nodesToFix = [];
22
+ return {
23
+ LogicalExpression: (node) => {
24
+ // Only `a && b` can encode a `min && max` length range.
25
+ if (node.operator !== '&&')
26
+ return;
27
+ const left = parseLengthComparison(node.left, sourceCode);
28
+ const right = parseLengthComparison(node.right, sourceCode);
29
+ if (left === undefined || right === undefined)
30
+ return;
31
+ // Need one lower bound and one upper bound on the same array.
32
+ if (left.kind === right.kind)
33
+ return;
34
+ if (sourceCode.getText(left.array) !== sourceCode.getText(right.array)) {
35
+ return;
36
+ }
37
+ const min = left.kind === 'min' ? left : right;
38
+ const max = left.kind === 'min' ? right : left;
39
+ const arrayExpression = min.array;
40
+ // Check if arrayExpression is actually an array type
41
+ if (services?.program !== undefined && services.program !== null) {
42
+ const checker = services.program.getTypeChecker();
43
+ const tsNode = services.esTreeNodeToTSNodeMap?.get(arrayExpression);
44
+ if (tsNode !== undefined) {
45
+ const type = checker.getTypeAtLocation(tsNode);
46
+ // Check if it's an array type or tuple type
47
+ const isArrayType = checker.isArrayType(type) || checker.isTupleType(type);
48
+ if (!isArrayType)
49
+ return;
50
+ }
51
+ else {
52
+ return;
53
+ }
54
+ }
55
+ else {
56
+ return;
57
+ }
58
+ mut_nodesToFix.push({
59
+ node,
60
+ arrayExpression,
61
+ minExpression: min.bound,
62
+ maxExpression: max.bound,
63
+ });
64
+ },
65
+ 'Program:exit': () => {
66
+ const namedImports = getNamedImports(tsDataForgeImport);
67
+ const hasArrImport = namedImports.includes('Arr');
68
+ for (const [index, { node, arrayExpression, minExpression, maxExpression },] of mut_nodesToFix.entries()) {
69
+ const arrayText = sourceCode.getText(arrayExpression);
70
+ const minText = sourceCode.getText(minExpression);
71
+ const maxText = sourceCode.getText(maxExpression);
72
+ const originalText = sourceCode.getText(node);
73
+ context.report({
74
+ node,
75
+ messageId: 'useIsBoundedLengthArray',
76
+ data: {
77
+ original: originalText,
78
+ arrayName: arrayText,
79
+ min: minText,
80
+ max: maxText,
81
+ },
82
+ fix: (fixer) => {
83
+ const replacement = `Arr.isBoundedLengthArray(${arrayText}, ${minText}, ${maxText})`;
84
+ const importFixes = index === 0 && !hasArrImport
85
+ ? buildImportFixes(fixer, program, tsDataForgeImport, ['Arr'])
86
+ : [];
87
+ return [...importFixes, fixer.replaceText(node, replacement)];
88
+ },
89
+ });
90
+ }
91
+ },
92
+ };
93
+ },
94
+ defaultOptions: [],
95
+ };
96
+
97
+ export { preferArrIsBoundedLengthArray };
98
+ //# sourceMappingURL=prefer-arr-is-bounded-length-array.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prefer-arr-is-bounded-length-array.mjs","sources":["../../../../src/plugins/ts-data-forge/rules/prefer-arr-is-bounded-length-array.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { type TSESLint } from '@typescript-eslint/utils';
2
+ type Options = readonly [];
3
+ type MessageIds = 'useIsFixedLengthArray';
4
+ export declare const preferArrIsFixedLengthArray: TSESLint.RuleModule<MessageIds, Options>;
5
+ export {};
6
+ //# sourceMappingURL=prefer-arr-is-fixed-length-array.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prefer-arr-is-fixed-length-array.d.mts","sourceRoot":"","sources":["../../../../src/plugins/ts-data-forge/rules/prefer-arr-is-fixed-length-array.mts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EAEd,MAAM,0BAA0B,CAAC;AASlC,KAAK,OAAO,GAAG,SAAS,EAAE,CAAC;AAE3B,KAAK,UAAU,GAAG,uBAAuB,CAAC;AAE1C,eAAO,MAAM,2BAA2B,EAAE,QAAQ,CAAC,UAAU,CAC3D,UAAU,EACV,OAAO,CA0HC,CAAC"}
@@ -2,16 +2,16 @@ import { AST_NODE_TYPES } from '@typescript-eslint/utils';
2
2
  import { isIntegerLiteralOrConstant } from './ast-utils.mjs';
3
3
  import { getTsDataForgeImport, getNamedImports, buildImportFixes } from './import-utils.mjs';
4
4
 
5
- const preferArrIsArrayOfLength = {
5
+ const preferArrIsFixedLengthArray = {
6
6
  meta: {
7
7
  type: 'suggestion',
8
8
  docs: {
9
- description: 'Replace `xs.length === n` with `Arr.isArrayOfLength(xs, n)` from ts-data-forge.',
9
+ description: 'Replace `xs.length === n` with `Arr.isFixedLengthArray(xs, n)` from ts-data-forge.',
10
10
  },
11
11
  fixable: 'code',
12
12
  schema: [],
13
13
  messages: {
14
- useIsArrayOfLength: 'Replace `{{original}}` with `Arr.isArrayOfLength({{arrayName}}, {{length}})` from ts-data-forge.',
14
+ useIsFixedLengthArray: 'Replace `{{original}}` with `Arr.isFixedLengthArray({{arrayName}}, {{length}})` from ts-data-forge.',
15
15
  },
16
16
  },
17
17
  create: (context) => {
@@ -70,14 +70,14 @@ const preferArrIsArrayOfLength = {
70
70
  const originalText = sourceCode.getText(node);
71
71
  context.report({
72
72
  node,
73
- messageId: 'useIsArrayOfLength',
73
+ messageId: 'useIsFixedLengthArray',
74
74
  data: {
75
75
  original: originalText,
76
76
  arrayName: arrayText,
77
77
  length: lengthText,
78
78
  },
79
79
  fix: (fixer) => {
80
- const baseCall = `Arr.isArrayOfLength(${arrayText}, ${lengthText})`;
80
+ const baseCall = `Arr.isFixedLengthArray(${arrayText}, ${lengthText})`;
81
81
  const replacement = isNegated ? `!${baseCall}` : baseCall;
82
82
  const importFixes = index === 0 && !hasArrImport
83
83
  ? buildImportFixes(fixer, program, tsDataForgeImport, ['Arr'])
@@ -95,5 +95,5 @@ const isLengthAccess = (node) => node.type === AST_NODE_TYPES.MemberExpression &
95
95
  node.property.type === AST_NODE_TYPES.Identifier &&
96
96
  node.property.name === 'length';
97
97
 
98
- export { preferArrIsArrayOfLength };
99
- //# sourceMappingURL=prefer-arr-is-array-of-length.mjs.map
98
+ export { preferArrIsFixedLengthArray };
99
+ //# sourceMappingURL=prefer-arr-is-fixed-length-array.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prefer-arr-is-fixed-length-array.mjs","sources":["../../../../src/plugins/ts-data-forge/rules/prefer-arr-is-fixed-length-array.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { type TSESLint } from '@typescript-eslint/utils';
2
+ type Options = readonly [];
3
+ type MessageIds = 'useIsMaxLengthArray';
4
+ export declare const preferArrIsMaxLengthArray: TSESLint.RuleModule<MessageIds, Options>;
5
+ export {};
6
+ //# sourceMappingURL=prefer-arr-is-max-length-array.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prefer-arr-is-max-length-array.d.mts","sourceRoot":"","sources":["../../../../src/plugins/ts-data-forge/rules/prefer-arr-is-max-length-array.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAiB,MAAM,0BAA0B,CAAC;AAYxE,KAAK,OAAO,GAAG,SAAS,EAAE,CAAC;AAE3B,KAAK,UAAU,GAAG,qBAAqB,CAAC;AAExC,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,UAAU,CACzD,UAAU,EACV,OAAO,CA0HC,CAAC"}
@@ -0,0 +1,98 @@
1
+ import { isPartOfBoundedLengthCheck, isLengthAccess, isIntegerLiteralOrConstant } from './ast-utils.mjs';
2
+ import { getTsDataForgeImport, getNamedImports, buildImportFixes } from './import-utils.mjs';
3
+
4
+ const preferArrIsMaxLengthArray = {
5
+ meta: {
6
+ type: 'suggestion',
7
+ docs: {
8
+ description: 'Replace `xs.length <= n` with `Arr.isMaxLengthArray(xs, n)` from ts-data-forge.',
9
+ },
10
+ fixable: 'code',
11
+ schema: [],
12
+ messages: {
13
+ useIsMaxLengthArray: 'Replace `{{original}}` with `Arr.isMaxLengthArray({{arrayName}}, {{length}})` from ts-data-forge.',
14
+ },
15
+ },
16
+ create: (context) => {
17
+ const sourceCode = context.sourceCode;
18
+ const program = sourceCode.ast;
19
+ const tsDataForgeImport = getTsDataForgeImport(program);
20
+ const services = context.sourceCode.parserServices;
21
+ const mut_nodesToFix = [];
22
+ return {
23
+ BinaryExpression: (node) => {
24
+ // Check for `xs.length <= n` or `n >= xs.length`
25
+ if (node.operator !== '>=' && node.operator !== '<=')
26
+ return;
27
+ // Defer to `prefer-arr-is-bounded-length-array` when this comparison is
28
+ // the upper bound of a `min && max` pair on the same array.
29
+ if (isPartOfBoundedLengthCheck(node, sourceCode))
30
+ return;
31
+ // xs.length <= n or n >= xs.length
32
+ const isLengthOnLeft = node.operator === '<=';
33
+ const lengthSide = node[isLengthOnLeft ? 'left' : 'right'];
34
+ const valueSide = node[isLengthOnLeft ? 'right' : 'left'];
35
+ // Check if lengthSide is accessing .length
36
+ if (!isLengthAccess(lengthSide))
37
+ return;
38
+ // Only match integer literals or const variables initialized with integer literals
39
+ if (!isIntegerLiteralOrConstant(valueSide, sourceCode))
40
+ return;
41
+ // lengthSide is MemberExpression accessing .length
42
+ const arrayExpression = lengthSide.object;
43
+ // Check if arrayExpression is actually an array type
44
+ if (services?.program !== undefined && services.program !== null) {
45
+ const checker = services.program.getTypeChecker();
46
+ const tsNode = services.esTreeNodeToTSNodeMap?.get(arrayExpression);
47
+ if (tsNode !== undefined) {
48
+ const type = checker.getTypeAtLocation(tsNode);
49
+ // Check if it's an array type or tuple type
50
+ const isArrayType = checker.isArrayType(type) || checker.isTupleType(type);
51
+ if (!isArrayType)
52
+ return;
53
+ }
54
+ else {
55
+ return;
56
+ }
57
+ }
58
+ else {
59
+ return;
60
+ }
61
+ mut_nodesToFix.push({
62
+ node,
63
+ arrayExpression,
64
+ lengthExpression: valueSide,
65
+ });
66
+ },
67
+ 'Program:exit': () => {
68
+ const namedImports = getNamedImports(tsDataForgeImport);
69
+ const hasArrImport = namedImports.includes('Arr');
70
+ for (const [index, { node, arrayExpression, lengthExpression },] of mut_nodesToFix.entries()) {
71
+ const arrayText = sourceCode.getText(arrayExpression);
72
+ const lengthText = sourceCode.getText(lengthExpression);
73
+ const originalText = sourceCode.getText(node);
74
+ context.report({
75
+ node,
76
+ messageId: 'useIsMaxLengthArray',
77
+ data: {
78
+ original: originalText,
79
+ arrayName: arrayText,
80
+ length: lengthText,
81
+ },
82
+ fix: (fixer) => {
83
+ const replacement = `Arr.isMaxLengthArray(${arrayText}, ${lengthText})`;
84
+ const importFixes = index === 0 && !hasArrImport
85
+ ? buildImportFixes(fixer, program, tsDataForgeImport, ['Arr'])
86
+ : [];
87
+ return [...importFixes, fixer.replaceText(node, replacement)];
88
+ },
89
+ });
90
+ }
91
+ },
92
+ };
93
+ },
94
+ defaultOptions: [],
95
+ };
96
+
97
+ export { preferArrIsMaxLengthArray };
98
+ //# sourceMappingURL=prefer-arr-is-max-length-array.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prefer-arr-is-max-length-array.mjs","sources":["../../../../src/plugins/ts-data-forge/rules/prefer-arr-is-max-length-array.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { type TSESLint } from '@typescript-eslint/utils';
2
+ type Options = readonly [];
3
+ type MessageIds = 'useIsMinLengthArray';
4
+ export declare const preferArrIsMinLengthArray: TSESLint.RuleModule<MessageIds, Options>;
5
+ export {};
6
+ //# sourceMappingURL=prefer-arr-is-min-length-array.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prefer-arr-is-min-length-array.d.mts","sourceRoot":"","sources":["../../../../src/plugins/ts-data-forge/rules/prefer-arr-is-min-length-array.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAiB,MAAM,0BAA0B,CAAC;AAYxE,KAAK,OAAO,GAAG,SAAS,EAAE,CAAC;AAE3B,KAAK,UAAU,GAAG,qBAAqB,CAAC;AAExC,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,UAAU,CACzD,UAAU,EACV,OAAO,CA0HC,CAAC"}