eslint-plugin-ts-std-forge 0.1.13 → 0.1.15

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.
@@ -42,6 +42,7 @@ export const preferSafeArrayLengthGuard = {
42
42
  useIsEmpty: 'Replace `{{original}}` with `SafeArray.isEmpty({{arrayName}})` from ts-std-forge: the comparison narrows nothing, the guard narrows to `readonly []`.',
43
43
  useIsNonEmpty: 'Replace `{{original}}` with `SafeArray.isNonEmpty({{arrayName}})` from ts-std-forge: the comparison narrows nothing, so `{{arrayName}}[0]` stays `| undefined`.',
44
44
  },
45
+ defaultOptions: [],
45
46
  },
46
47
  create: (context) => {
47
48
  const sourceCode = context.sourceCode;
@@ -100,7 +101,6 @@ export const preferSafeArrayLengthGuard = {
100
101
  },
101
102
  };
102
103
  },
103
- defaultOptions: [],
104
104
  };
105
105
 
106
106
 
@@ -1 +1 @@
1
- {"version":3,"file":"prefer-safe-array-length-guard.mjs","sourceRoot":"","sources":["../../src/rules/prefer-safe-array-length-guard.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prefer-safe-array-length-guard.mjs","sourceRoot":"","sources":["../../src/rules/prefer-safe-array-length-guard.mts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eslint-plugin-ts-std-forge",
3
- "version": "0.1.13",
3
+ "version": "0.1.15",
4
4
  "private": false,
5
5
  "description": "ESLint rules that steer code toward ts-std-forge idioms.",
6
6
  "keywords": [
@@ -34,18 +34,18 @@
34
34
  "LICENSE"
35
35
  ],
36
36
  "dependencies": {
37
- "@typescript-eslint/utils": "^8.71.2",
38
- "eslint-rule-forge": "^0.3.1",
37
+ "@typescript-eslint/utils": "^8.72.0",
38
+ "eslint-rule-forge": "^0.4.0",
39
39
  "ts-std-forge": "0.5.2",
40
40
  "ts-type-forge": "~9.2.2"
41
41
  },
42
42
  "devDependencies": {
43
- "@typescript-eslint/parser": "8.71.2",
44
- "@typescript-eslint/rule-tester": "8.71.2",
43
+ "@typescript-eslint/parser": "8.72.0",
44
+ "@typescript-eslint/rule-tester": "8.72.0",
45
45
  "dedent": "1.7.2",
46
- "eslint-config-typed": "5.19.2",
47
- "eslint-plugin-ts-fortress": "1.3.8",
48
- "eslint-plugin-ts-type-forge": "0.8.13",
46
+ "eslint-config-typed": "7.1.0",
47
+ "eslint-plugin-ts-fortress": "1.3.10",
48
+ "eslint-plugin-ts-type-forge": "0.8.15",
49
49
  "prettier": "3.9.10",
50
50
  "prettier-plugin-organize-imports": "4.3.0",
51
51
  "prettier-plugin-packagejson": "3.0.2",
@@ -56,7 +56,7 @@
56
56
  "typescript": ">=5.0.0 <7.0.0"
57
57
  },
58
58
  "engines": {
59
- "node": ">=22.22.2",
59
+ "node": ">=22.23.4",
60
60
  "pnpm": ">=9.0.0"
61
61
  },
62
62
  "publishConfig": {
@@ -180,14 +180,24 @@ describe('prefer-is-non-null-object in other forms', () => {
180
180
  const y = a && typeof u === 'object' && u !== null;
181
181
  const z = a && u !== null && (typeof u === 'object') && b;
182
182
  `,
183
- output: dedent`
184
- import { isNonNullObject } from 'ts-std-forge';
185
- declare const a: boolean;
186
- declare const b: boolean;
187
- const x = isNonNullObject(u) && 'k' in u;
188
- const y = a && isNonNullObject(u);
189
- const z = a && isNonNullObject(u) && b;
190
- `,
183
+ output: [
184
+ dedent`
185
+ import { isNonNullObject } from 'ts-std-forge';
186
+ declare const a: boolean;
187
+ declare const b: boolean;
188
+ const x = isNonNullObject(u) && 'k' in u;
189
+ const y = a && typeof u === 'object' && u !== null;
190
+ const z = a && u !== null && (typeof u === 'object') && b;
191
+ `,
192
+ dedent`
193
+ import { isNonNullObject } from 'ts-std-forge';
194
+ declare const a: boolean;
195
+ declare const b: boolean;
196
+ const x = isNonNullObject(u) && 'k' in u;
197
+ const y = a && isNonNullObject(u);
198
+ const z = a && isNonNullObject(u) && b;
199
+ `,
200
+ ],
191
201
  errors: [
192
202
  { messageId: 'useIsNonNullObject' },
193
203
  { messageId: 'useIsNonNullObject' },
@@ -200,11 +210,18 @@ describe('prefer-is-non-null-object in other forms', () => {
200
210
  declare const v: unknown;
201
211
  const ok = typeof u === 'object' && u !== null && v !== null && typeof v === 'object';
202
212
  `,
203
- output: dedent`
204
- import { isNonNullObject } from 'ts-std-forge';
205
- declare const v: unknown;
206
- const ok = isNonNullObject(u) && isNonNullObject(v);
207
- `,
213
+ output: [
214
+ dedent`
215
+ import { isNonNullObject } from 'ts-std-forge';
216
+ declare const v: unknown;
217
+ const ok = isNonNullObject(u) && v !== null && typeof v === 'object';
218
+ `,
219
+ dedent`
220
+ import { isNonNullObject } from 'ts-std-forge';
221
+ declare const v: unknown;
222
+ const ok = isNonNullObject(u) && isNonNullObject(v);
223
+ `,
224
+ ],
208
225
  errors: [
209
226
  { messageId: 'useIsNonNullObject' },
210
227
  { messageId: 'useIsNonNullObject' },
@@ -85,13 +85,22 @@ describe('prefer-is-record-and-has-key', () => {
85
85
  const a = Object.hasOwn(rec, 'a');
86
86
  const b = Object.hasOwn(unk, 'b');
87
87
  `,
88
- output: dedent`
89
- import { isRecord, hasKey } from 'ts-std-forge';
90
- declare const rec: Record<string, unknown>;
91
- declare const unk: unknown;
92
- const a = hasKey(rec, 'a');
93
- const b = (isRecord(unk) && hasKey(unk, 'b'));
94
- `,
88
+ output: [
89
+ dedent`
90
+ import { hasKey } from 'ts-std-forge';
91
+ declare const rec: Record<string, unknown>;
92
+ declare const unk: unknown;
93
+ const a = hasKey(rec, 'a');
94
+ const b = Object.hasOwn(unk, 'b');
95
+ `,
96
+ dedent`
97
+ import { hasKey, isRecord } from 'ts-std-forge';
98
+ declare const rec: Record<string, unknown>;
99
+ declare const unk: unknown;
100
+ const a = hasKey(rec, 'a');
101
+ const b = (isRecord(unk) && hasKey(unk, 'b'));
102
+ `,
103
+ ],
95
104
  errors: [
96
105
  { messageId: 'useHasKey' },
97
106
  { messageId: 'useIsRecordAndHasKey' },
@@ -67,16 +67,23 @@ ruleTester.run('prefer-safe-array-is-array', preferSafeArrayIsArray, {
67
67
  errors: [{ messageId: 'useIsArray' }],
68
68
  },
69
69
  {
70
- name: 'Replace multiple Array.isArray calls, importing once',
70
+ name: 'Replace multiple Array.isArray calls, each fix importing',
71
71
  code: dedent`
72
72
  const result1 = Array.isArray(value1);
73
73
  const result2 = Array.isArray(value2);
74
74
  `,
75
- output: dedent`
76
- import { SafeArray } from 'ts-std-forge';
77
- const result1 = SafeArray.isArray(value1);
78
- const result2 = SafeArray.isArray(value2);
79
- `,
75
+ output: [
76
+ dedent`
77
+ import { SafeArray } from 'ts-std-forge';
78
+ const result1 = SafeArray.isArray(value1);
79
+ const result2 = Array.isArray(value2);
80
+ `,
81
+ dedent`
82
+ import { SafeArray } from 'ts-std-forge';
83
+ const result1 = SafeArray.isArray(value1);
84
+ const result2 = SafeArray.isArray(value2);
85
+ `,
86
+ ],
80
87
  errors: [{ messageId: 'useIsArray' }, { messageId: 'useIsArray' }],
81
88
  },
82
89
  ],
@@ -74,6 +74,7 @@ export const preferSafeArrayLengthGuard: TSESLint.RuleModule<
74
74
  useIsNonEmpty:
75
75
  'Replace `{{original}}` with `SafeArray.isNonEmpty({{arrayName}})` from ts-std-forge: the comparison narrows nothing, so `{{arrayName}}[0]` stays `| undefined`.',
76
76
  },
77
+ defaultOptions: [],
77
78
  },
78
79
 
79
80
  create: (context) => {
@@ -164,7 +165,6 @@ export const preferSafeArrayLengthGuard: TSESLint.RuleModule<
164
165
  },
165
166
  };
166
167
  },
167
- defaultOptions: [],
168
168
  } as const;
169
169
 
170
170
  /**
@@ -147,12 +147,20 @@ describe('prefer-safe-number-parse-integer through type wrappers', () => {
147
147
  const a = (parseInt as typeof parseInt)(s);
148
148
  const b = (Number as NumberConstructor)!.parseInt(s, 10);
149
149
  `,
150
- output: dedent`
151
- import { Result, SafeNumber } from 'ts-std-forge';
152
- declare const s: string;
153
- const a = Result.unwrapOkOr(SafeNumber.parseInteger(s), Number.NaN);
154
- const b = Result.unwrapOkOr(SafeNumber.parseInteger(s), Number.NaN);
155
- `,
150
+ output: [
151
+ dedent`
152
+ import { Result, SafeNumber } from 'ts-std-forge';
153
+ declare const s: string;
154
+ const a = Result.unwrapOkOr(SafeNumber.parseInteger(s), Number.NaN);
155
+ const b = (Number as NumberConstructor)!.parseInt(s, 10);
156
+ `,
157
+ dedent`
158
+ import { Result, SafeNumber } from 'ts-std-forge';
159
+ declare const s: string;
160
+ const a = Result.unwrapOkOr(SafeNumber.parseInteger(s), Number.NaN);
161
+ const b = Result.unwrapOkOr(SafeNumber.parseInteger(s), Number.NaN);
162
+ `,
163
+ ],
156
164
  errors: [
157
165
  { messageId: 'useSafeParseInt' },
158
166
  { messageId: 'useSafeParseInt' },
@@ -118,8 +118,7 @@ describe('prefer-safe-number-parse', () => {
118
118
  const n = parseFloat(s);
119
119
  `,
120
120
  output: dedent`
121
- import { SafeNumber } from 'ts-std-forge';
122
- import { Result } from 'ts-std-forge';
121
+ import { Result, SafeNumber } from 'ts-std-forge';
123
122
  declare const s: string;
124
123
  const n = Result.unwrapOkOr(SafeNumber.parse(s), Number.NaN);
125
124
  `,
@@ -189,12 +188,20 @@ describe('prefer-safe-number-parse through type wrappers', () => {
189
188
  const a = (Number as NumberConstructor)(s);
190
189
  const b = Number!.parseFloat(s);
191
190
  `,
192
- output: dedent`
193
- import { Result, SafeNumber } from 'ts-std-forge';
194
- declare const s: string;
195
- const a = Result.unwrapOkOr(SafeNumber.parse(s), Number.NaN);
196
- const b = Result.unwrapOkOr(SafeNumber.parse(s), Number.NaN);
197
- `,
191
+ output: [
192
+ dedent`
193
+ import { Result, SafeNumber } from 'ts-std-forge';
194
+ declare const s: string;
195
+ const a = Result.unwrapOkOr(SafeNumber.parse(s), Number.NaN);
196
+ const b = Number!.parseFloat(s);
197
+ `,
198
+ dedent`
199
+ import { Result, SafeNumber } from 'ts-std-forge';
200
+ declare const s: string;
201
+ const a = Result.unwrapOkOr(SafeNumber.parse(s), Number.NaN);
202
+ const b = Result.unwrapOkOr(SafeNumber.parse(s), Number.NaN);
203
+ `,
204
+ ],
198
205
  errors: [
199
206
  { messageId: 'useSafeParseFloat' },
200
207
  { messageId: 'useSafeParseFloat' },