eslint-plugin-ts-data-forge 0.8.1 → 0.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/plugin.d.mts +1 -1
- package/dist/plugin.d.mts.map +1 -1
- package/dist/plugin.mjs +1 -0
- package/dist/plugin.mjs.map +1 -1
- package/dist/rule-types.d.mts +3 -3
- package/dist/rule-types.d.mts.map +1 -1
- package/dist/rules/ast-utils.d.mts +59 -3
- package/dist/rules/ast-utils.d.mts.map +1 -1
- package/dist/rules/ast-utils.mjs +142 -31
- package/dist/rules/ast-utils.mjs.map +1 -1
- package/dist/rules/branded-number-types.mjs.map +1 -1
- package/dist/rules/import-utils.d.mts +1 -1
- package/dist/rules/import-utils.d.mts.map +1 -1
- package/dist/rules/import-utils.mjs +26 -13
- package/dist/rules/import-utils.mjs.map +1 -1
- package/dist/rules/no-side-effect-import.d.mts +1 -1
- package/dist/rules/no-side-effect-import.d.mts.map +1 -1
- package/dist/rules/no-unnecessary-type-guard.d.mts.map +1 -1
- package/dist/rules/no-unnecessary-type-guard.mjs +161 -101
- package/dist/rules/no-unnecessary-type-guard.mjs.map +1 -1
- package/dist/rules/prefer-arr-is-array.d.mts.map +1 -1
- package/dist/rules/prefer-arr-is-array.mjs +25 -11
- package/dist/rules/prefer-arr-is-array.mjs.map +1 -1
- package/dist/rules/prefer-arr-is-bounded-length-array.d.mts +1 -1
- package/dist/rules/prefer-arr-is-bounded-length-array.d.mts.map +1 -1
- package/dist/rules/prefer-arr-is-bounded-length-array.mjs +11 -21
- package/dist/rules/prefer-arr-is-bounded-length-array.mjs.map +1 -1
- package/dist/rules/prefer-arr-is-fixed-length-array.d.mts +1 -1
- package/dist/rules/prefer-arr-is-fixed-length-array.d.mts.map +1 -1
- package/dist/rules/prefer-arr-is-fixed-length-array.mjs +16 -28
- package/dist/rules/prefer-arr-is-fixed-length-array.mjs.map +1 -1
- package/dist/rules/prefer-arr-is-max-length-array.d.mts +1 -1
- package/dist/rules/prefer-arr-is-max-length-array.d.mts.map +1 -1
- package/dist/rules/prefer-arr-is-max-length-array.mjs +16 -24
- package/dist/rules/prefer-arr-is-max-length-array.mjs.map +1 -1
- package/dist/rules/prefer-arr-is-min-length-array.d.mts +1 -1
- package/dist/rules/prefer-arr-is-min-length-array.d.mts.map +1 -1
- package/dist/rules/prefer-arr-is-min-length-array.mjs +16 -24
- package/dist/rules/prefer-arr-is-min-length-array.mjs.map +1 -1
- package/dist/rules/prefer-arr-is-non-empty.d.mts.map +1 -1
- package/dist/rules/prefer-arr-is-non-empty.mjs +9 -22
- package/dist/rules/prefer-arr-is-non-empty.mjs.map +1 -1
- package/dist/rules/prefer-arr-scan.d.mts +6 -5
- package/dist/rules/prefer-arr-scan.d.mts.map +1 -1
- package/dist/rules/prefer-arr-scan.mjs +68 -31
- package/dist/rules/prefer-arr-scan.mjs.map +1 -1
- package/dist/rules/prefer-arr-sum.d.mts.map +1 -1
- package/dist/rules/prefer-arr-sum.mjs +57 -40
- package/dist/rules/prefer-arr-sum.mjs.map +1 -1
- package/dist/rules/prefer-arr-uniq.d.mts.map +1 -1
- package/dist/rules/prefer-arr-uniq.mjs +59 -30
- package/dist/rules/prefer-arr-uniq.mjs.map +1 -1
- package/dist/rules/prefer-as-int.d.mts.map +1 -1
- package/dist/rules/prefer-as-int.mjs +27 -24
- package/dist/rules/prefer-as-int.mjs.map +1 -1
- package/dist/rules/prefer-canonical-array-slicing.d.mts.map +1 -1
- package/dist/rules/prefer-canonical-array-slicing.mjs +59 -28
- package/dist/rules/prefer-canonical-array-slicing.mjs.map +1 -1
- package/dist/rules/prefer-canonical-length-cast.d.mts.map +1 -1
- package/dist/rules/prefer-canonical-length-cast.mjs +41 -16
- package/dist/rules/prefer-canonical-length-cast.mjs.map +1 -1
- package/dist/rules/prefer-canonical-length-guard.d.mts.map +1 -1
- package/dist/rules/prefer-canonical-length-guard.mjs +18 -8
- package/dist/rules/prefer-canonical-length-guard.mjs.map +1 -1
- package/dist/rules/prefer-comparison-over-nullish-guard.d.mts.map +1 -1
- package/dist/rules/prefer-comparison-over-nullish-guard.mjs +31 -6
- package/dist/rules/prefer-comparison-over-nullish-guard.mjs.map +1 -1
- package/dist/rules/prefer-is-non-null-object.d.mts.map +1 -1
- package/dist/rules/prefer-is-non-null-object.mjs +56 -40
- package/dist/rules/prefer-is-non-null-object.mjs.map +1 -1
- package/dist/rules/prefer-is-record-and-has-key.d.mts.map +1 -1
- package/dist/rules/prefer-is-record-and-has-key.mjs +18 -8
- package/dist/rules/prefer-is-record-and-has-key.mjs.map +1 -1
- package/dist/rules/prefer-num-safe-parse-float.d.mts +3 -1
- package/dist/rules/prefer-num-safe-parse-float.d.mts.map +1 -1
- package/dist/rules/prefer-num-safe-parse-float.mjs +27 -10
- package/dist/rules/prefer-num-safe-parse-float.mjs.map +1 -1
- package/dist/rules/prefer-num-safe-parse-int.d.mts.map +1 -1
- package/dist/rules/prefer-num-safe-parse-int.mjs +24 -11
- package/dist/rules/prefer-num-safe-parse-int.mjs.map +1 -1
- package/dist/rules/prefer-obj-over-entries-round-trip.d.mts.map +1 -1
- package/dist/rules/prefer-obj-over-entries-round-trip.mjs +22 -11
- package/dist/rules/prefer-obj-over-entries-round-trip.mjs.map +1 -1
- package/dist/rules/prefer-range-for-loop.d.mts.map +1 -1
- package/dist/rules/prefer-range-for-loop.mjs +15 -8
- package/dist/rules/prefer-range-for-loop.mjs.map +1 -1
- package/dist/types.d.mts +2 -2
- package/dist/types.d.mts.map +1 -1
- package/package.json +25 -23
- package/src/plugin.mts +5 -4
- package/src/plugin.test.mts +0 -13
- package/src/rule-types.mts +3 -3
- package/src/rules/ast-utils.mts +192 -37
- package/src/rules/branded-number-types.mts +1 -1
- package/src/rules/import-utils.mts +41 -17
- package/src/rules/no-side-effect-import.mts +1 -1
- package/src/rules/no-unnecessary-type-guard.mts +249 -148
- package/src/rules/no-unnecessary-type-guard.test.mts +100 -0
- package/src/rules/prefer-arr-is-array.mts +32 -13
- package/src/rules/prefer-arr-is-array.test.mts +40 -0
- package/src/rules/prefer-arr-is-bounded-length-array.mts +22 -26
- package/src/rules/prefer-arr-is-bounded-length-array.test.mts +68 -0
- package/src/rules/prefer-arr-is-fixed-length-array.mts +26 -38
- package/src/rules/prefer-arr-is-fixed-length-array.test.mts +63 -0
- package/src/rules/prefer-arr-is-max-length-array.mts +26 -27
- package/src/rules/prefer-arr-is-max-length-array.test.mts +67 -0
- package/src/rules/prefer-arr-is-min-length-array.mts +26 -27
- package/src/rules/prefer-arr-is-min-length-array.test.mts +70 -0
- package/src/rules/prefer-arr-is-non-empty.mts +19 -24
- package/src/rules/prefer-arr-is-non-empty.test.mts +79 -0
- package/src/rules/prefer-arr-scan.mts +107 -37
- package/src/rules/prefer-arr-scan.test.mts +149 -0
- package/src/rules/prefer-arr-sum.mts +87 -50
- package/src/rules/prefer-arr-sum.test.mts +97 -0
- package/src/rules/prefer-arr-uniq.mts +83 -33
- package/src/rules/prefer-arr-uniq.test.mts +71 -0
- package/src/rules/prefer-as-int.mts +38 -38
- package/src/rules/prefer-as-int.test.mts +51 -0
- package/src/rules/prefer-canonical-array-slicing.mts +84 -29
- package/src/rules/prefer-canonical-array-slicing.test.mts +92 -0
- package/src/rules/prefer-canonical-length-cast.mts +56 -18
- package/src/rules/prefer-canonical-length-cast.test.mts +111 -0
- package/src/rules/prefer-canonical-length-guard.mts +25 -11
- package/src/rules/prefer-canonical-length-guard.test.mts +99 -0
- package/src/rules/prefer-comparison-over-nullish-guard.mts +42 -9
- package/src/rules/prefer-comparison-over-nullish-guard.test.mts +136 -0
- package/src/rules/prefer-is-non-null-object.mts +57 -33
- package/src/rules/prefer-is-non-null-object.test.mts +42 -0
- package/src/rules/prefer-is-record-and-has-key.mts +27 -12
- package/src/rules/prefer-is-record-and-has-key.test.mts +34 -0
- package/src/rules/prefer-num-safe-parse-float.mts +37 -13
- package/src/rules/prefer-num-safe-parse-float.test.mts +79 -0
- package/src/rules/prefer-num-safe-parse-int.mts +41 -15
- package/src/rules/prefer-num-safe-parse-int.test.mts +64 -0
- package/src/rules/prefer-obj-over-entries-round-trip.mts +34 -12
- package/src/rules/prefer-range-for-loop.mts +21 -9
- package/src/rules/prefer-range-for-loop.test.mts +75 -0
- package/src/rules/rules.mts +1 -1
- package/src/types.mts +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prefer-canonical-length-cast.d.mts","sourceRoot":"","sources":["../../src/rules/prefer-canonical-length-cast.mts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"prefer-canonical-length-cast.d.mts","sourceRoot":"","sources":["../../src/rules/prefer-canonical-length-cast.mts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,QAAQ,EAEd,MAAM,0BAA0B,CAAC;AAIlC,KAAK,OAAO,GAAG,SAAS,EAAE,CAAC;AAE3B,KAAK,UAAU,GAAG,kBAAkB,CAAC;AAgHrC,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,UAAU,CACzD,UAAU,EACV,OAAO,CAuEC,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { AST_NODE_TYPES, } from '@typescript-eslint/utils';
|
|
1
|
+
import { AST_NODE_TYPES, ASTUtils, } from '@typescript-eslint/utils';
|
|
2
|
+
import { skipTypeWrappers } from './ast-utils.mjs';
|
|
2
3
|
import { getImportedLocalName, getTsDataForgeImport } from './import-utils.mjs';
|
|
3
4
|
|
|
4
5
|
|
|
@@ -110,16 +111,19 @@ export const preferCanonicalLengthCast = {
|
|
|
110
111
|
create: (context) => {
|
|
111
112
|
const sourceCode = context.sourceCode;
|
|
112
113
|
const arrLocalName = getImportedLocalName(getTsDataForgeImport(sourceCode.ast), 'Arr');
|
|
113
|
-
if (arrLocalName === undefined)
|
|
114
|
+
if (arrLocalName === undefined) {
|
|
114
115
|
return {};
|
|
116
|
+
}
|
|
115
117
|
return {
|
|
116
118
|
CallExpression: (node) => {
|
|
117
119
|
const castName = getCastName(node, arrLocalName);
|
|
118
|
-
if (castName === undefined)
|
|
120
|
+
if (castName === undefined) {
|
|
119
121
|
return;
|
|
122
|
+
}
|
|
120
123
|
const rewrite = CAST_REWRITES.find((candidate) => candidate.cast === castName && matchesBounds(node, candidate));
|
|
121
|
-
if (rewrite === undefined)
|
|
124
|
+
if (rewrite === undefined) {
|
|
122
125
|
return;
|
|
126
|
+
}
|
|
123
127
|
const boundsText = node.arguments
|
|
124
128
|
.slice(0, rewrite.bounds.length)
|
|
125
129
|
.map((arg) => sourceCode.getText(arg))
|
|
@@ -135,7 +139,7 @@ export const preferCanonicalLengthCast = {
|
|
|
135
139
|
},
|
|
136
140
|
fix: (fixer) => [
|
|
137
141
|
fixer.replaceText(node.callee, `${arrLocalName}.${rewrite.replacement}`),
|
|
138
|
-
...dropBoundsFix(fixer, node, rewrite),
|
|
142
|
+
...dropBoundsFix(fixer, sourceCode, node, rewrite),
|
|
139
143
|
],
|
|
140
144
|
});
|
|
141
145
|
},
|
|
@@ -180,8 +184,9 @@ node, rewrite) => {
|
|
|
180
184
|
const [first] = bounds;
|
|
181
185
|
return rewrite.bounds.every((matcher, index) => {
|
|
182
186
|
const value = bounds[index];
|
|
183
|
-
if (value === undefined)
|
|
187
|
+
if (value === undefined) {
|
|
184
188
|
return false;
|
|
189
|
+
}
|
|
185
190
|
switch (matcher) {
|
|
186
191
|
case 'anyLength':
|
|
187
192
|
return true;
|
|
@@ -197,8 +202,13 @@ node, rewrite) => {
|
|
|
197
202
|
|
|
198
203
|
|
|
199
204
|
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
|
|
200
208
|
const dropBoundsFix = (fixer,
|
|
201
209
|
|
|
210
|
+
sourceCode,
|
|
211
|
+
|
|
202
212
|
|
|
203
213
|
node, rewrite) => rewrite.bounds.flatMap((_, index) => {
|
|
204
214
|
|
|
@@ -209,20 +219,35 @@ node, rewrite) => rewrite.bounds.flatMap((_, index) => {
|
|
|
209
219
|
|
|
210
220
|
|
|
211
221
|
const dropped = node.arguments[index];
|
|
212
|
-
const
|
|
213
|
-
if (rewrite.keep.includes(index))
|
|
222
|
+
const previous = node.arguments[index - 1];
|
|
223
|
+
if (dropped === undefined || rewrite.keep.includes(index)) {
|
|
214
224
|
return [];
|
|
215
|
-
|
|
225
|
+
}
|
|
226
|
+
const delimiterBefore = previous === undefined
|
|
227
|
+
? sourceCode.getTokenAfter(node.callee, ASTUtils.isOpeningParenToken)
|
|
228
|
+
: sourceCode.getTokenAfter(previous, ASTUtils.isCommaToken);
|
|
229
|
+
const start = delimiterBefore === null
|
|
230
|
+
? null
|
|
231
|
+
: sourceCode.getTokenAfter(delimiterBefore);
|
|
232
|
+
const commaAfter = sourceCode.getTokenAfter(dropped, ASTUtils.isCommaToken);
|
|
233
|
+
const end = commaAfter === null ? null : sourceCode.getTokenAfter(commaAfter);
|
|
234
|
+
return start === null || end === null
|
|
216
235
|
? []
|
|
217
|
-
: [fixer.removeRange([
|
|
236
|
+
: [fixer.removeRange([start.range[0], end.range[0]])];
|
|
218
237
|
});
|
|
219
238
|
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
|
|
220
242
|
const getLengthLiteral = (
|
|
221
243
|
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
244
|
+
wrapped) => {
|
|
245
|
+
const node = skipTypeWrappers(wrapped);
|
|
246
|
+
return node.type === AST_NODE_TYPES.Literal &&
|
|
247
|
+
typeof node.value === 'number' &&
|
|
248
|
+
Number.isSafeInteger(node.value) &&
|
|
249
|
+
node.value >= 0
|
|
250
|
+
? node.value
|
|
251
|
+
: undefined;
|
|
252
|
+
};
|
|
228
253
|
//# sourceMappingURL=prefer-canonical-length-cast.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prefer-canonical-length-cast.mjs","sourceRoot":"","sources":["../../src/rules/prefer-canonical-length-cast.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,
|
|
1
|
+
{"version":3,"file":"prefer-canonical-length-cast.mjs","sourceRoot":"","sources":["../../src/rules/prefer-canonical-length-cast.mts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prefer-canonical-length-guard.d.mts","sourceRoot":"","sources":["../../src/rules/prefer-canonical-length-guard.mts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EAEd,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"prefer-canonical-length-guard.d.mts","sourceRoot":"","sources":["../../src/rules/prefer-canonical-length-guard.mts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EAEd,MAAM,0BAA0B,CAAC;AAUlC,KAAK,OAAO,GAAG,SAAS,EAAE,CAAC;AAE3B,KAAK,UAAU,GACX,mBAAmB,GACnB,yBAAyB,GACzB,uBAAuB,GACvB,qBAAqB,GACrB,qBAAqB,GACrB,eAAe,CAAC;AA8EpB,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,UAAU,CAC1D,UAAU,EACV,OAAO,CA4EC,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { AST_NODE_TYPES, } from '@typescript-eslint/utils';
|
|
2
|
+
import { skipTypeWrappers, toArgumentText } from './ast-utils.mjs';
|
|
2
3
|
import { getImportedLocalName, getTsDataForgeImport } from './import-utils.mjs';
|
|
3
4
|
import { preferArrIsBoundedLengthArray } from './prefer-arr-is-bounded-length-array.mjs';
|
|
4
5
|
import { preferArrIsFixedLengthArray } from './prefer-arr-is-fixed-length-array.mjs';
|
|
@@ -83,24 +84,27 @@ export const preferCanonicalLengthGuard = {
|
|
|
83
84
|
const sourceCode = context.sourceCode;
|
|
84
85
|
const arrLocalName = getImportedLocalName(getTsDataForgeImport(sourceCode.ast), 'Arr');
|
|
85
86
|
const comparisonVisitors = COMPARISON_RULES.map((rule) => rule.create(context));
|
|
86
|
-
if (arrLocalName === undefined)
|
|
87
|
+
if (arrLocalName === undefined) {
|
|
87
88
|
return mergeVisitors(comparisonVisitors);
|
|
89
|
+
}
|
|
88
90
|
return mergeVisitors([
|
|
89
91
|
...comparisonVisitors,
|
|
90
92
|
{
|
|
91
93
|
CallExpression: (node) => {
|
|
92
94
|
const guardName = getGuardName(node, arrLocalName);
|
|
93
|
-
if (guardName === undefined)
|
|
95
|
+
if (guardName === undefined) {
|
|
94
96
|
return;
|
|
97
|
+
}
|
|
95
98
|
const rewrite = GUARD_REWRITES.find((entry) => entry.guard === guardName);
|
|
96
99
|
if (rewrite === undefined || !matchesBounds(node, rewrite.bounds)) {
|
|
97
100
|
return;
|
|
98
101
|
}
|
|
99
102
|
|
|
100
103
|
const array = node.arguments[rewrite.bounds.length];
|
|
101
|
-
if (array === undefined)
|
|
104
|
+
if (array === undefined) {
|
|
102
105
|
return;
|
|
103
|
-
|
|
106
|
+
}
|
|
107
|
+
const arrayText = toArgumentText(array, sourceCode);
|
|
104
108
|
context.report({
|
|
105
109
|
node,
|
|
106
110
|
messageId: 'useCanonicalGuard',
|
|
@@ -130,8 +134,9 @@ visitors) => {
|
|
|
130
134
|
const mut_merged = {};
|
|
131
135
|
for (const visitor of visitors) {
|
|
132
136
|
for (const [selector, handler] of Object.entries(visitor)) {
|
|
133
|
-
if (typeof handler !== 'function')
|
|
137
|
+
if (typeof handler !== 'function') {
|
|
134
138
|
continue;
|
|
139
|
+
}
|
|
135
140
|
const mut_handlers = mut_merged[selector] ?? [];
|
|
136
141
|
mut_handlers.push(handler);
|
|
137
142
|
mut_merged[selector] = mut_handlers;
|
|
@@ -166,6 +171,7 @@ node, arrLocalName) => {
|
|
|
166
171
|
|
|
167
172
|
|
|
168
173
|
|
|
174
|
+
|
|
169
175
|
const matchesBounds = (
|
|
170
176
|
|
|
171
177
|
node, bounds) => {
|
|
@@ -173,8 +179,12 @@ node, bounds) => {
|
|
|
173
179
|
if (args.length !== bounds.length + 1 || node.typeArguments !== undefined) {
|
|
174
180
|
return false;
|
|
175
181
|
}
|
|
176
|
-
return args.every((arg, index) =>
|
|
177
|
-
|
|
178
|
-
|
|
182
|
+
return args.every((arg, index) => {
|
|
183
|
+
const bound = skipTypeWrappers(arg);
|
|
184
|
+
return (arg.type !== AST_NODE_TYPES.SpreadElement &&
|
|
185
|
+
(index === bounds.length ||
|
|
186
|
+
(bound.type === AST_NODE_TYPES.Literal &&
|
|
187
|
+
bound.value === bounds[index])));
|
|
188
|
+
});
|
|
179
189
|
};
|
|
180
190
|
//# sourceMappingURL=prefer-canonical-length-guard.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prefer-canonical-length-guard.mjs","sourceRoot":"","sources":["../../src/rules/prefer-canonical-length-guard.mts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"prefer-canonical-length-guard.mjs","sourceRoot":"","sources":["../../src/rules/prefer-canonical-length-guard.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,GAGf,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,6BAA6B,EAAE,MAAM,0CAA0C,CAAC;AACzF,OAAO,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAC;AACrF,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAYpE;;;;;;;;GAQG;AACH,MAAM,gBAAgB,GAAG;IACvB,mBAAmB;IACnB,yBAAyB;IACzB,yBAAyB;IACzB,6BAA6B;IAC7B,2BAA2B;CACnB,CAAC;AAEX,MAAM,QAAQ,GAAG;IACf,iBAAiB,EACf,qIAAqI;IACvI,aAAa,EAAE,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa;IAC9D,mBAAmB,EACjB,yBAAyB,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB;IAC7D,mBAAmB,EACjB,yBAAyB,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB;IAC7D,uBAAuB,EACrB,6BAA6B,CAAC,IAAI,CAAC,QAAQ,CAAC,uBAAuB;IACrE,qBAAqB,EACnB,2BAA2B,CAAC,IAAI,CAAC,QAAQ,CAAC,qBAAqB;CACZ,CAAC;AAExD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,cAAc,GAAG;IACrB,EAAE,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE;IACpE,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE;IAClE,EAAE,KAAK,EAAE,sBAAsB,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE;IACzE,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE;IACrE,EAAE,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE;IACzE,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE;IACvE;QACE,KAAK,EAAE,sBAAsB;QAC7B,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACd,WAAW,EAAE,cAAc;KAC5B;IACD,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,iBAAiB,EAAE;CAKxE,CAAC;AAEL,MAAM,CAAC,MAAM,0BAA0B,GAGnC;IACF,IAAI,EAAE;QACJ,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE;YACJ,WAAW,EACT,6RAA6R;SAChS;QACD,OAAO,EAAE,MAAM;QACf,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE,QAAQ;KACnB;IAED,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE;QAClB,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QAEtC,MAAM,YAAY,GAAG,oBAAoB,CACvC,oBAAoB,CAAC,UAAU,CAAC,GAAG,CAAC,EACpC,KAAK,CACN,CAAC;QAEF,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACvD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CACrB,CAAC;QAEF,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,aAAa,CAAC,kBAAkB,CAAC,CAAC;QAC3C,CAAC;QAED,OAAO,aAAa,CAAC;YACnB,GAAG,kBAAkB;YACrB;gBACE,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE;oBACvB,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;oBAEnD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;wBAC5B,OAAO;oBACT,CAAC;oBAED,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CACjC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CACrC,CAAC;oBAEF,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;wBAClE,OAAO;oBACT,CAAC;oBAED,yDAAyD;oBACzD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBAEpD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;wBACxB,OAAO;oBACT,CAAC;oBAED,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;oBAEpD,OAAO,CAAC,MAAM,CAAC;wBACb,IAAI;wBACJ,SAAS,EAAE,mBAAmB;wBAC9B,IAAI,EAAE;4BACJ,OAAO,EAAE,YAAY;4BACrB,KAAK,EAAE,SAAS;4BAChB,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;4BAC3D,WAAW,EAAE,OAAO,CAAC,WAAW;yBACjC;wBACD,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,CACb,KAAK,CAAC,WAAW,CACf,IAAI,EACJ,GAAG,YAAY,IAAI,OAAO,CAAC,WAAW,IAAI,SAAS,GAAG,CACvD;qBACJ,CAAC,CAAC;gBACL,CAAC;aACF;SACF,CAAC,CAAC;IACL,CAAC;IACD,cAAc,EAAE,EAAE;CACV,CAAC;AAEX;;;GAGG;AACH,MAAM,aAAa,GAAG;AACpB,2EAA2E;AAC3E,YAAY;AACZ,8EAA8E;AAC9E,QAA0C,EACnB,EAAE;IACzB,MAAM,UAAU,GAAqD,EAAE,CAAC;IAExE,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1D,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;gBAClC,SAAS;YACX,CAAC;YAED,MAAM,YAAY,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAEhD,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAE3B,UAAU,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC;QACtC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC;QACvD,QAAQ;QACR,CAAC,IAAW,EAAE,EAAE;YACd,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC;QACH,CAAC;KACF,CAAC,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,+EAA+E;AAC/E,MAAM,YAAY,GAAG;AACnB,8EAA8E;AAC9E,IAA6B,EAC7B,YAAoB,EACA,EAAE;IACtB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAExB,OAAO,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,gBAAgB;QACpD,CAAC,MAAM,CAAC,QAAQ;QAChB,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU;QAChD,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY;QACnC,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU;QAClD,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI;QACtB,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,aAAa,GAAG;AACpB,8EAA8E;AAC9E,IAA6B,EAC7B,MAAyB,EAChB,EAAE;IACX,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;IAE5B,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QAC1E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QAC/B,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAEpC,OAAO,CACL,GAAG,CAAC,IAAI,KAAK,cAAc,CAAC,aAAa;YACzC,CAAC,KAAK,KAAK,MAAM,CAAC,MAAM;gBACtB,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC,OAAO;oBACpC,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CACpC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prefer-comparison-over-nullish-guard.d.mts","sourceRoot":"","sources":["../../src/rules/prefer-comparison-over-nullish-guard.mts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EAEd,MAAM,0BAA0B,CAAC;AAIlC,KAAK,OAAO,GAAG,SAAS,EAAE,CAAC;AAE3B,KAAK,UAAU,GAAG,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"prefer-comparison-over-nullish-guard.d.mts","sourceRoot":"","sources":["../../src/rules/prefer-comparison-over-nullish-guard.mts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EAEd,MAAM,0BAA0B,CAAC;AAIlC,KAAK,OAAO,GAAG,SAAS,EAAE,CAAC;AAE3B,KAAK,UAAU,GAAG,kBAAkB,CAAC;AA2FrC,eAAO,MAAM,gCAAgC,EAAE,QAAQ,CAAC,UAAU,CAChE,UAAU,EACV,OAAO,CAsEC,CAAC"}
|
|
@@ -15,6 +15,10 @@ const COMPARISON_GUARDS = {
|
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
18
22
|
const ARG_NEEDS_PARENS = new Set([
|
|
19
23
|
AST_NODE_TYPES.LogicalExpression,
|
|
20
24
|
AST_NODE_TYPES.ConditionalExpression,
|
|
@@ -22,7 +26,24 @@ const ARG_NEEDS_PARENS = new Set([
|
|
|
22
26
|
AST_NODE_TYPES.SequenceExpression,
|
|
23
27
|
AST_NODE_TYPES.ArrowFunctionExpression,
|
|
24
28
|
AST_NODE_TYPES.YieldExpression,
|
|
29
|
+
AST_NODE_TYPES.TSAsExpression,
|
|
30
|
+
AST_NODE_TYPES.TSSatisfiesExpression,
|
|
31
|
+
]);
|
|
32
|
+
|
|
33
|
+
const LOOSE_BINARY_OPERATORS = new Set([
|
|
34
|
+
'|',
|
|
35
|
+
'^',
|
|
36
|
+
'&',
|
|
37
|
+
'==',
|
|
38
|
+
'!=',
|
|
39
|
+
'===',
|
|
40
|
+
'!==',
|
|
25
41
|
]);
|
|
42
|
+
const argumentNeedsParens = (argument) => ARG_NEEDS_PARENS.has(argument.type) ||
|
|
43
|
+
(argument.type === AST_NODE_TYPES.BinaryExpression &&
|
|
44
|
+
LOOSE_BINARY_OPERATORS.has(argument.operator));
|
|
45
|
+
|
|
46
|
+
|
|
26
47
|
|
|
27
48
|
|
|
28
49
|
|
|
@@ -36,6 +57,9 @@ const needsWrappingInParent = (node) => {
|
|
|
36
57
|
case AST_NODE_TYPES.AwaitExpression:
|
|
37
58
|
case AST_NODE_TYPES.BinaryExpression:
|
|
38
59
|
case AST_NODE_TYPES.TSNonNullExpression:
|
|
60
|
+
case AST_NODE_TYPES.TSAsExpression:
|
|
61
|
+
case AST_NODE_TYPES.TSSatisfiesExpression:
|
|
62
|
+
case AST_NODE_TYPES.TSTypeAssertion:
|
|
39
63
|
return true;
|
|
40
64
|
case AST_NODE_TYPES.MemberExpression:
|
|
41
65
|
return parent.object === node;
|
|
@@ -63,23 +87,24 @@ export const preferComparisonOverNullishGuard = {
|
|
|
63
87
|
const resolveGuard = buildCalleeResolver(getTsDataForgeImport(sourceCode.ast));
|
|
64
88
|
return {
|
|
65
89
|
CallExpression: (node) => {
|
|
66
|
-
if (node.arguments.length !== 1)
|
|
90
|
+
if (node.arguments.length !== 1) {
|
|
67
91
|
return;
|
|
92
|
+
}
|
|
68
93
|
const argument = node.arguments[0];
|
|
69
94
|
if (argument === undefined ||
|
|
70
95
|
argument.type === AST_NODE_TYPES.SpreadElement) {
|
|
71
96
|
return;
|
|
72
97
|
}
|
|
73
98
|
const resolved = resolveGuard(node.callee);
|
|
74
|
-
if (resolved === undefined)
|
|
99
|
+
if (resolved === undefined) {
|
|
75
100
|
return;
|
|
101
|
+
}
|
|
76
102
|
const spec = COMPARISON_GUARDS[resolved.canonicalName];
|
|
77
|
-
if (spec === undefined)
|
|
103
|
+
if (spec === undefined) {
|
|
78
104
|
return;
|
|
105
|
+
}
|
|
79
106
|
const argRaw = sourceCode.getText(argument);
|
|
80
|
-
const argText =
|
|
81
|
-
? `(${argRaw})`
|
|
82
|
-
: argRaw;
|
|
107
|
+
const argText = argumentNeedsParens(argument) ? `(${argRaw})` : argRaw;
|
|
83
108
|
const comparison = `${argText} ${spec.op} ${spec.literal}`;
|
|
84
109
|
const replacement = needsWrappingInParent(node)
|
|
85
110
|
? `(${comparison})`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prefer-comparison-over-nullish-guard.mjs","sourceRoot":"","sources":["../../src/rules/prefer-comparison-over-nullish-guard.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,GAGf,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAW/E;;;;GAIG;AACH,MAAM,iBAAiB,GAA2C;IAChE,WAAW,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE;IAChD,cAAc,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE;IACnD,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE;IACtC,SAAS,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE;CACjC,CAAC;AAEX
|
|
1
|
+
{"version":3,"file":"prefer-comparison-over-nullish-guard.mjs","sourceRoot":"","sources":["../../src/rules/prefer-comparison-over-nullish-guard.mts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prefer-is-non-null-object.d.mts","sourceRoot":"","sources":["../../src/rules/prefer-is-non-null-object.mts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EAEd,MAAM,0BAA0B,CAAC;AAQlC,KAAK,OAAO,GAAG,SAAS,EAAE,CAAC;AAE3B,KAAK,UAAU,GAAG,oBAAoB,CAAC;AAEvC,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"prefer-is-non-null-object.d.mts","sourceRoot":"","sources":["../../src/rules/prefer-is-non-null-object.mts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EAEd,MAAM,0BAA0B,CAAC;AAQlC,KAAK,OAAO,GAAG,SAAS,EAAE,CAAC;AAE3B,KAAK,UAAU,GAAG,oBAAoB,CAAC;AAEvC,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CAwEjE,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { AST_NODE_TYPES, } from '@typescript-eslint/utils';
|
|
2
|
+
import { skipTypeWrappers } from './ast-utils.mjs';
|
|
2
3
|
import { buildImportFixes, getNamedImports, getTsDataForgeImport, } from './import-utils.mjs';
|
|
3
4
|
export const preferIsNonNullObject = {
|
|
4
5
|
meta: {
|
|
@@ -20,8 +21,9 @@ export const preferIsNonNullObject = {
|
|
|
20
21
|
return {
|
|
21
22
|
LogicalExpression: (node) => {
|
|
22
23
|
const identifierName = getNonNullObjectIdentifierName(node);
|
|
23
|
-
if (identifierName === undefined)
|
|
24
|
+
if (identifierName === undefined) {
|
|
24
25
|
return;
|
|
26
|
+
}
|
|
25
27
|
mut_nodesToFix.push({ node, identifierName });
|
|
26
28
|
},
|
|
27
29
|
'Program:exit': () => {
|
|
@@ -52,49 +54,63 @@ export const preferIsNonNullObject = {
|
|
|
52
54
|
},
|
|
53
55
|
defaultOptions: [],
|
|
54
56
|
};
|
|
55
|
-
|
|
56
|
-
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
const getNonNullObjectIdentifierName = (
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
node) => {
|
|
66
|
+
if (node.operator !== '&&') {
|
|
57
67
|
return undefined;
|
|
68
|
+
}
|
|
58
69
|
const leftIdentifierName = getTypeofObjectIdentifierName(node.left);
|
|
59
70
|
const rightIdentifierName = getNonNullCheckIdentifierName(node.right);
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
return undefined;
|
|
66
|
-
return leftIdentifierName;
|
|
71
|
+
return leftIdentifierName === undefined ||
|
|
72
|
+
rightIdentifierName === undefined ||
|
|
73
|
+
leftIdentifierName !== rightIdentifierName
|
|
74
|
+
? undefined
|
|
75
|
+
: leftIdentifierName;
|
|
67
76
|
};
|
|
68
|
-
const getTypeofObjectIdentifierName = (
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
if (node.
|
|
72
|
-
return undefined;
|
|
73
|
-
|
|
74
|
-
if (
|
|
75
|
-
return undefined;
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
return undefined;
|
|
84
|
-
|
|
77
|
+
const getTypeofObjectIdentifierName = (
|
|
78
|
+
|
|
79
|
+
node) => {
|
|
80
|
+
if (node.type !== AST_NODE_TYPES.BinaryExpression) {
|
|
81
|
+
return undefined;
|
|
82
|
+
}
|
|
83
|
+
if (node.operator !== '===') {
|
|
84
|
+
return undefined;
|
|
85
|
+
}
|
|
86
|
+
const left = skipTypeWrappers(node.left);
|
|
87
|
+
const right = skipTypeWrappers(node.right);
|
|
88
|
+
if (left.type !== AST_NODE_TYPES.UnaryExpression ||
|
|
89
|
+
left.operator !== 'typeof' ||
|
|
90
|
+
right.type !== AST_NODE_TYPES.Literal ||
|
|
91
|
+
right.value !== 'object') {
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
const argument = skipTypeWrappers(left.argument);
|
|
95
|
+
return argument.type === AST_NODE_TYPES.Identifier
|
|
96
|
+
? argument.name
|
|
97
|
+
: undefined;
|
|
85
98
|
};
|
|
86
|
-
const getNonNullCheckIdentifierName = (
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
if (node.
|
|
90
|
-
return undefined;
|
|
91
|
-
|
|
92
|
-
if (
|
|
93
|
-
return undefined;
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
+
const getNonNullCheckIdentifierName = (
|
|
100
|
+
|
|
101
|
+
node) => {
|
|
102
|
+
if (node.type !== AST_NODE_TYPES.BinaryExpression) {
|
|
103
|
+
return undefined;
|
|
104
|
+
}
|
|
105
|
+
if (node.operator !== '!==') {
|
|
106
|
+
return undefined;
|
|
107
|
+
}
|
|
108
|
+
const left = skipTypeWrappers(node.left);
|
|
109
|
+
const right = skipTypeWrappers(node.right);
|
|
110
|
+
return left.type !== AST_NODE_TYPES.Identifier ||
|
|
111
|
+
right.type !== AST_NODE_TYPES.Literal ||
|
|
112
|
+
right.value !== null
|
|
113
|
+
? undefined
|
|
114
|
+
: left.name;
|
|
99
115
|
};
|
|
100
116
|
//# sourceMappingURL=prefer-is-non-null-object.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prefer-is-non-null-object.mjs","sourceRoot":"","sources":["../../src/rules/prefer-is-non-null-object.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,GAGf,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"prefer-is-non-null-object.mjs","sourceRoot":"","sources":["../../src/rules/prefer-is-non-null-object.mts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prefer-is-record-and-has-key.d.mts","sourceRoot":"","sources":["../../src/rules/prefer-is-record-and-has-key.mts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EAEd,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"prefer-is-record-and-has-key.d.mts","sourceRoot":"","sources":["../../src/rules/prefer-is-record-and-has-key.mts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EAEd,MAAM,0BAA0B,CAAC;AAUlC,KAAK,OAAO,GAAG,SAAS,EAAE,CAAC;AAE3B,KAAK,UAAU,GAAG,sBAAsB,GAAG,WAAW,CAAC;AAEvD,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CA0LjE,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { AST_NODE_TYPES, } from '@typescript-eslint/utils';
|
|
2
2
|
import { Arr } from 'ts-data-forge';
|
|
3
3
|
import * as ts from 'typescript';
|
|
4
|
+
import { typeWrapperLayers } from './ast-utils.mjs';
|
|
4
5
|
import { buildImportFixes, getNamedImports, getTsDataForgeImport, } from './import-utils.mjs';
|
|
5
6
|
export const preferIsRecordAndHasKey = {
|
|
6
7
|
meta: {
|
|
@@ -30,11 +31,16 @@ export const preferIsRecordAndHasKey = {
|
|
|
30
31
|
const isKnownRecord = (
|
|
31
32
|
|
|
32
33
|
expression) => {
|
|
33
|
-
if (checker === undefined)
|
|
34
|
+
if (checker === undefined) {
|
|
34
35
|
return false;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
return typeWrapperLayers(expression).every((layer) => {
|
|
40
|
+
const tsNode = services?.esTreeNodeToTSNodeMap?.get(layer);
|
|
41
|
+
return (tsNode !== undefined &&
|
|
42
|
+
isAlreadyRecordType(checker, checker.getTypeAtLocation(tsNode)));
|
|
43
|
+
});
|
|
38
44
|
};
|
|
39
45
|
const mut_nodesToFix = [];
|
|
40
46
|
return {
|
|
@@ -48,12 +54,14 @@ export const preferIsRecordAndHasKey = {
|
|
|
48
54
|
return;
|
|
49
55
|
}
|
|
50
56
|
|
|
51
|
-
if (node.arguments.length !== 2)
|
|
57
|
+
if (node.arguments.length !== 2) {
|
|
52
58
|
return;
|
|
59
|
+
}
|
|
53
60
|
const objArg = node.arguments[0];
|
|
54
61
|
const keyArg = node.arguments[1];
|
|
55
|
-
if (objArg === undefined || keyArg === undefined)
|
|
62
|
+
if (objArg === undefined || keyArg === undefined) {
|
|
56
63
|
return;
|
|
64
|
+
}
|
|
57
65
|
|
|
58
66
|
if (objArg.type === AST_NODE_TYPES.SpreadElement ||
|
|
59
67
|
keyArg.type === AST_NODE_TYPES.SpreadElement) {
|
|
@@ -67,13 +75,15 @@ export const preferIsRecordAndHasKey = {
|
|
|
67
75
|
},
|
|
68
76
|
|
|
69
77
|
BinaryExpression: (node) => {
|
|
70
|
-
if (node.operator !== 'in')
|
|
78
|
+
if (node.operator !== 'in') {
|
|
71
79
|
return;
|
|
80
|
+
}
|
|
72
81
|
const keyExpression = node.left;
|
|
73
82
|
const objExpression = node.right;
|
|
74
83
|
|
|
75
|
-
if (keyExpression.type === AST_NODE_TYPES.PrivateIdentifier)
|
|
84
|
+
if (keyExpression.type === AST_NODE_TYPES.PrivateIdentifier) {
|
|
76
85
|
return;
|
|
86
|
+
}
|
|
77
87
|
mut_nodesToFix.push({
|
|
78
88
|
node,
|
|
79
89
|
objExpression,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prefer-is-record-and-has-key.mjs","sourceRoot":"","sources":["../../src/rules/prefer-is-record-and-has-key.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,GAGf,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAM5B,MAAM,CAAC,MAAM,uBAAuB,GAClC;IACE,IAAI,EAAE;QACJ,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE;YACJ,WAAW,EACT,+GAA+G;SAClH;QACD,OAAO,EAAE,MAAM;QACf,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE;YACR,oBAAoB,EAClB,6GAA6G;YAC/G,SAAS,EACP,oFAAoF;SACvF;KACF;IAED,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE;QAClB,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QAEtC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC;QAE/B,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAExD,MAAM,QAAQ,GAAG,UAAU,CAAC,cAAc,CAAC;QAE3C,MAAM,OAAO,GAAG,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;QAEpD;;;;;WAKG;QACH,MAAM,aAAa,GAAG;QACpB,8EAA8E;QAC9E,UAA+B,EACtB,EAAE;YACX,IAAI,OAAO,KAAK,SAAS;
|
|
1
|
+
{"version":3,"file":"prefer-is-record-and-has-key.mjs","sourceRoot":"","sources":["../../src/rules/prefer-is-record-and-has-key.mts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,9 @@ type MessageIds = 'useSafeParseFloat';
|
|
|
7
7
|
* `Result.unwrapOkOr(Num.safeParseFloat(x), Number.NaN)` (ts-data-forge).
|
|
8
8
|
*
|
|
9
9
|
* `Number(x)` is only flagged when x is purely a string type to avoid false
|
|
10
|
-
* positives for `Number(someBoolean)` or `Number(someNumber)` uses.
|
|
10
|
+
* positives for `Number(someBoolean)` or `Number(someNumber)` uses. The type is
|
|
11
|
+
* asked of the value under any `as` / `!` / `satisfies` too, so a cast does not
|
|
12
|
+
* vouch for a string that is not one.
|
|
11
13
|
*/
|
|
12
14
|
export declare const preferNumSafeParseFloat: TSESLint.RuleModule<MessageIds, Options>;
|
|
13
15
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prefer-num-safe-parse-float.d.mts","sourceRoot":"","sources":["../../src/rules/prefer-num-safe-parse-float.mts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EAEd,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"prefer-num-safe-parse-float.d.mts","sourceRoot":"","sources":["../../src/rules/prefer-num-safe-parse-float.mts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EAEd,MAAM,0BAA0B,CAAC;AASlC,KAAK,OAAO,GAAG,SAAS,EAAE,CAAC;AAE3B,KAAK,UAAU,GAAG,mBAAmB,CAAC;AAkBtC;;;;;;;;;GASG;AACH,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CAkJjE,CAAC"}
|