eslint-plugin-ts-std-forge 0.1.3 → 0.1.5
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 +1 -1
- package/dist/rule-types.d.mts.map +1 -1
- package/dist/rules/ast-utils.d.mts +41 -0
- package/dist/rules/ast-utils.d.mts.map +1 -0
- package/dist/rules/ast-utils.mjs +101 -0
- package/dist/rules/ast-utils.mjs.map +1 -0
- 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 +2 -1
- package/dist/rules/import-utils.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 +55 -43
- 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 +22 -17
- package/dist/rules/prefer-is-record-and-has-key.mjs.map +1 -1
- package/dist/rules/prefer-safe-array-is-array.d.mts.map +1 -1
- package/dist/rules/prefer-safe-array-is-array.mjs +23 -14
- package/dist/rules/prefer-safe-array-is-array.mjs.map +1 -1
- package/dist/rules/prefer-safe-array-length-guard.d.mts.map +1 -1
- package/dist/rules/prefer-safe-array-length-guard.mjs +19 -15
- package/dist/rules/prefer-safe-array-length-guard.mjs.map +1 -1
- package/dist/rules/prefer-safe-number-parse-integer.d.mts.map +1 -1
- package/dist/rules/prefer-safe-number-parse-integer.mjs +16 -17
- package/dist/rules/prefer-safe-number-parse-integer.mjs.map +1 -1
- package/dist/rules/prefer-safe-number-parse.d.mts.map +1 -1
- package/dist/rules/prefer-safe-number-parse.mjs +14 -16
- package/dist/rules/prefer-safe-number-parse.mjs.map +1 -1
- package/dist/types.d.mts +2 -2
- package/dist/types.d.mts.map +1 -1
- package/package.json +24 -22
- package/src/plugin.mts +5 -4
- package/src/plugin.test.mts +0 -13
- package/src/rule-types.mts +2 -2
- package/src/rules/ast-utils.mts +147 -0
- package/src/rules/import-utils.mts +4 -2
- package/src/rules/prefer-is-non-null-object.mts +63 -38
- package/src/rules/prefer-is-non-null-object.test.mts +54 -0
- package/src/rules/prefer-is-record-and-has-key.mts +34 -21
- package/src/rules/prefer-is-record-and-has-key.test.mts +128 -0
- package/src/rules/prefer-safe-array-is-array.mts +34 -16
- package/src/rules/prefer-safe-array-is-array.test.mts +93 -0
- package/src/rules/prefer-safe-array-length-guard.mts +32 -19
- package/src/rules/prefer-safe-array-length-guard.test.mts +98 -0
- package/src/rules/prefer-safe-number-parse-integer.mts +29 -23
- package/src/rules/prefer-safe-number-parse-integer.test.mts +104 -0
- package/src/rules/prefer-safe-number-parse.mts +25 -21
- package/src/rules/prefer-safe-number-parse.test.mts +97 -0
- package/src/rules/rules.mts +1 -1
- package/src/types.mts +2 -2
package/dist/plugin.d.mts
CHANGED
package/dist/plugin.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.mts","sourceRoot":"","sources":["../src/plugin.mts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"plugin.d.mts","sourceRoot":"","sources":["../src/plugin.mts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAoB,YAAY,EAAE,MAAM,aAAa,CAAC;AAqClE,eAAO,MAAM,sBAAsB;;iBAE/B,IAAI,EAAE,4BAA4B;;;;;;;;;;;QAIlC,oDAAoD;iBACpD,WAAW;2BAtBP,0BAA0B;;yBAQ1B,cAAc,EAAI,YAAY;;;mEApBM,OAAO;sEACJ,OAAO;oEACT,OAAO;wEACH,OAAO;kEACb,OAAO;0EACC,OAAO;;;;CA+BzB,CAAC"}
|
package/dist/plugin.mjs
CHANGED
package/dist/plugin.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.mjs","sourceRoot":"","sources":["../src/plugin.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD
|
|
1
|
+
{"version":3,"file":"plugin.mjs","sourceRoot":"","sources":["../src/plugin.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD;;;;;;GAMG;AACH,MAAM,gBAAgB,GAAG;IACvB,wCAAwC,EAAE,OAAO;IACjD,2CAA2C,EAAE,OAAO;IACpD,yCAAyC,EAAE,OAAO;IAClD,6CAA6C,EAAE,OAAO;IACtD,uCAAuC,EAAE,OAAO;IAChD,+CAA+C,EAAE,OAAO;CAIzD,CAAC;AAEF,MAAM,iBAAiB,GAAG;IACxB,IAAI,EAAE,0BAA0B;IAChC,OAAO,EAAE;QACP,uEAAuE;QACvE,wEAAwE;QACxE,wEAAwE;QACxE,mDAAmD;QACnD,wEAAwE;QACxE,wDAAwD;QACxD,IAAI,cAAc;YAChB,OAAO,sBAAsB,CAAC;QAChC,CAAC;KACF;IACD,KAAK,EAAE,gBAAgB;CACY,CAAC;AAEtC,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,IAAI,EAAE;QACJ,IAAI,EAAE,4BAA4B;KACnC;IACD,KAAK,EAAE,eAAe;IACtB,OAAO,EAAE;QACP,oDAAoD;QACpD,WAAW,EAAE,iBAAiB;KAC/B;CAC8B,CAAC"}
|
package/dist/rule-types.d.mts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-types.d.mts","sourceRoot":"","sources":["../src/rule-types.mts"],"names":[],"mappings":"AAKA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"rule-types.d.mts","sourceRoot":"","sources":["../src/rule-types.mts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIrC;;;;;;;;;;GAUG;AACH,kBAAU,qBAAqB,CAAC;IAC9B,KAAY,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC;CAC/C;AAED;;;;;;;;;;GAUG;AACH,kBAAU,uBAAuB,CAAC;IAChC,KAAY,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC;CAC/C;AAED;;;;;;;;;;GAUG;AACH,kBAAU,sBAAsB,CAAC;IAC/B,KAAY,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC;CAC/C;AAED;;;;;;;;;;GAUG;AACH,kBAAU,0BAA0B,CAAC;IACnC,KAAY,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC;CAC/C;AAED;;;;;;;;;;GAUG;AACH,kBAAU,qBAAqB,CAAC;IAC9B,KAAY,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC;CAC/C;AAED;;;;;;;;;;GAUG;AACH,kBAAU,4BAA4B,CAAC;IACrC,KAAY,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC;CAC/C;AAED,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC;IAC3C,wCAAwC,EAAE,qBAAqB,CAAC,SAAS,CAAC;IAC1E,2CAA2C,EAAE,uBAAuB,CAAC,SAAS,CAAC;IAC/E,yCAAyC,EAAE,sBAAsB,CAAC,SAAS,CAAC;IAC5E,6CAA6C,EAAE,0BAA0B,CAAC,SAAS,CAAC;IACpF,uCAAuC,EAAE,qBAAqB,CAAC,SAAS,CAAC;IACzE,+CAA+C,EAAE,4BAA4B,CAAC,SAAS,CAAC;CACzF,CAAC,CAAC;AAEH,MAAM,MAAM,2BAA2B,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type TSESLint, type TSESTree } from '@typescript-eslint/utils';
|
|
2
|
+
import type * as ts from 'typescript';
|
|
3
|
+
/**
|
|
4
|
+
* `node` with every `as`, `satisfies`, `!` and `<T>` around it taken off: the
|
|
5
|
+
* expression whose value it is. Judge syntax and ask types on what this
|
|
6
|
+
* returns, so that a wrapper neither hides a pattern (`xs.length > (0 as
|
|
7
|
+
* const)`) nor vouches for a type (`Number(b as unknown as string)`, whose
|
|
8
|
+
* value is still a boolean), and keep the original node for fix text. See
|
|
9
|
+
* `docs/writing-lint-rules.md` at the repository root.
|
|
10
|
+
*
|
|
11
|
+
* A copy of the helper in `eslint-config-typed`, which this package, published
|
|
12
|
+
* on its own, cannot import.
|
|
13
|
+
*/
|
|
14
|
+
export declare const skipTypeWrappers: (node: TSESTree.Node) => TSESTree.Node;
|
|
15
|
+
export declare const isTypeWrapper: (node: TSESTree.Node) => node is TypeWrapper;
|
|
16
|
+
/**
|
|
17
|
+
* Whether `node`, read through its type wrappers, is the identifier `name`:
|
|
18
|
+
* `Number`, `(Number as NumberConstructor)` and `Number!` are the same object.
|
|
19
|
+
*/
|
|
20
|
+
export declare const isIdentifierNamed: (node: TSESTree.Node, name: string) => boolean;
|
|
21
|
+
export type TypeWrapper = TSESTree.TSAsExpression | TSESTree.TSNonNullExpression | TSESTree.TSSatisfiesExpression | TSESTree.TSTypeAssertion;
|
|
22
|
+
/**
|
|
23
|
+
* The type of the value `node` evaluates to, asked of the expression inside
|
|
24
|
+
* its type wrappers rather than of the cast, or `undefined` without type
|
|
25
|
+
* information. A `!` among the wrappers still takes `null` and `undefined`
|
|
26
|
+
* out, since that much the source asserts about the value itself.
|
|
27
|
+
*/
|
|
28
|
+
export declare const getValueType: (sourceCode: TSESLint.SourceCode, node: TSESTree.Node) => ts.Type | undefined;
|
|
29
|
+
/**
|
|
30
|
+
* The source text of `node` to put in a call's argument list. `getText`
|
|
31
|
+
* leaves out the parentheses the source puts around a node, and a sequence
|
|
32
|
+
* `(a, b)` without them would be read as two arguments.
|
|
33
|
+
*/
|
|
34
|
+
export declare const getArgumentText: (sourceCode: TSESLint.SourceCode, node: TSESTree.Node) => string;
|
|
35
|
+
/**
|
|
36
|
+
* The range of `node` together with the parentheses the source puts around it,
|
|
37
|
+
* which `node.range` leaves out: all of `((Array.isArray))` for the member
|
|
38
|
+
* expression inside.
|
|
39
|
+
*/
|
|
40
|
+
export declare const getRangeWithParens: (sourceCode: TSESLint.SourceCode, node: TSESTree.Node) => TSESTree.Range;
|
|
41
|
+
//# sourceMappingURL=ast-utils.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ast-utils.d.mts","sourceRoot":"","sources":["../../src/rules/ast-utils.mts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,QAAQ,EACb,KAAK,QAAQ,EACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAEtC;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gBAAgB,SAErB,QAAQ,CAAC,IAAI,KAClB,QAAQ,CAAC,IACoD,CAAC;AAEjE,eAAO,MAAM,aAAa,SAElB,QAAQ,CAAC,IAAI,KAClB,IAAI,IAAI,WAA2C,CAAC;AAEvD;;;GAGG;AACH,eAAO,MAAM,iBAAiB,SAEtB,QAAQ,CAAC,IAAI,QACb,MAAM,KACX,OAMF,CAAC;AAEF,MAAM,MAAM,WAAW,GACnB,QAAQ,CAAC,cAAc,GACvB,QAAQ,CAAC,mBAAmB,GAC5B,QAAQ,CAAC,qBAAqB,GAC9B,QAAQ,CAAC,eAAe,CAAC;AAE7B;;;;;GAKG;AACH,eAAO,MAAM,YAAY,eAEX,QAAQ,CAAC,UAAU,QAEzB,QAAQ,CAAC,IAAI,KAClB,EAAE,CAAC,IAAI,GAAG,SAcZ,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,eAEd,QAAQ,CAAC,UAAU,QAEzB,QAAQ,CAAC,IAAI,KAClB,MAIF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,eAEjB,QAAQ,CAAC,UAAU,QAEzB,QAAQ,CAAC,IAAI,KAClB,QAAQ,CAAC,KAcX,CAAC"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { AST_NODE_TYPES, ASTUtils, } from '@typescript-eslint/utils';
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
export const skipTypeWrappers = (
|
|
14
|
+
|
|
15
|
+
node) => isTypeWrapper(node) ? skipTypeWrappers(node.expression) : node;
|
|
16
|
+
export const isTypeWrapper = (
|
|
17
|
+
|
|
18
|
+
node) => TYPE_WRAPPERS.has(node.type);
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
export const isIdentifierNamed = (
|
|
24
|
+
|
|
25
|
+
node, name) => {
|
|
26
|
+
const unwrapped = skipTypeWrappers(node);
|
|
27
|
+
return (unwrapped.type === AST_NODE_TYPES.Identifier && unwrapped.name === name);
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
export const getValueType = (
|
|
36
|
+
|
|
37
|
+
sourceCode,
|
|
38
|
+
|
|
39
|
+
node) => {
|
|
40
|
+
const services = sourceCode.parserServices;
|
|
41
|
+
const checker = services?.program?.getTypeChecker();
|
|
42
|
+
const tsNode = services?.esTreeNodeToTSNodeMap?.get(skipTypeWrappers(node));
|
|
43
|
+
if (checker === undefined || tsNode === undefined) {
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
const type = checker.getTypeAtLocation(tsNode);
|
|
47
|
+
return hasNonNullAssertion(node) ? checker.getNonNullableType(type) : type;
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
export const getArgumentText = (
|
|
55
|
+
|
|
56
|
+
sourceCode,
|
|
57
|
+
|
|
58
|
+
node) => {
|
|
59
|
+
const text = sourceCode.getText(node);
|
|
60
|
+
return node.type === AST_NODE_TYPES.SequenceExpression ? `(${text})` : text;
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
export const getRangeWithParens = (
|
|
68
|
+
|
|
69
|
+
sourceCode,
|
|
70
|
+
|
|
71
|
+
node) => {
|
|
72
|
+
const depth = parenthesesDepth(sourceCode, node);
|
|
73
|
+
if (depth === 0) {
|
|
74
|
+
return node.range;
|
|
75
|
+
}
|
|
76
|
+
const opening = sourceCode.getTokenBefore(node, { skip: depth - 1 });
|
|
77
|
+
const closing = sourceCode.getTokenAfter(node, { skip: depth - 1 });
|
|
78
|
+
return opening === null || closing === null
|
|
79
|
+
? node.range
|
|
80
|
+
: [opening.range[0], closing.range[1]];
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
const parenthesesDepth = (
|
|
84
|
+
|
|
85
|
+
sourceCode,
|
|
86
|
+
|
|
87
|
+
node, depth = 0) => ASTUtils.isParenthesized(depth + 1, node, sourceCode)
|
|
88
|
+
? parenthesesDepth(sourceCode, node, depth + 1)
|
|
89
|
+
: depth;
|
|
90
|
+
const hasNonNullAssertion = (
|
|
91
|
+
|
|
92
|
+
node) => isTypeWrapper(node) &&
|
|
93
|
+
(node.type === AST_NODE_TYPES.TSNonNullExpression ||
|
|
94
|
+
hasNonNullAssertion(node.expression));
|
|
95
|
+
const TYPE_WRAPPERS = new Set([
|
|
96
|
+
AST_NODE_TYPES.TSAsExpression,
|
|
97
|
+
AST_NODE_TYPES.TSNonNullExpression,
|
|
98
|
+
AST_NODE_TYPES.TSSatisfiesExpression,
|
|
99
|
+
AST_NODE_TYPES.TSTypeAssertion,
|
|
100
|
+
]);
|
|
101
|
+
//# sourceMappingURL=ast-utils.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ast-utils.mjs","sourceRoot":"","sources":["../../src/rules/ast-utils.mts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type TSESLint, type TSESTree } from '@typescript-eslint/utils';
|
|
2
|
-
import {
|
|
2
|
+
import type { DeepReadonly } from 'ts-type-forge';
|
|
3
3
|
export declare const getTsStdForgeImport: (program: TSESTree.Program) => TSESTree.ImportDeclaration | undefined;
|
|
4
4
|
export declare const getNamedImports: (node: DeepReadonly<TSESTree.ImportDeclaration> | undefined) => readonly string[];
|
|
5
5
|
export declare const buildImportFixes: (fixer: TSESLint.RuleFixer, program: TSESTree.Program, requiredNames: readonly string[]) => readonly TSESLint.RuleFix[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-utils.d.mts","sourceRoot":"","sources":["../../src/rules/import-utils.mts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,QAAQ,EACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"import-utils.d.mts","sourceRoot":"","sources":["../../src/rules/import-utils.mts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,QAAQ,EACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAKlD,eAAO,MAAM,mBAAmB,YACrB,QAAQ,CAAC,OAAO,KACxB,QAAQ,CAAC,iBAAiB,GAAG,SAK7B,CAAC;AAEJ,eAAO,MAAM,eAAe,SACpB,YAAY,CAAC,QAAQ,CAAC,iBAAiB,CAAC,GAAG,SAAS,KACzD,SAAS,MAAM,EAiBjB,CAAC;AAEF,eAAO,MAAM,gBAAgB,UACpB,QAAQ,CAAC,SAAS,WAChB,QAAQ,CAAC,OAAO,iBACV,SAAS,MAAM,EAAE,KAC/B,SAAS,QAAQ,CAAC,OAAO,EAa3B,CAAC"}
|
|
@@ -4,8 +4,9 @@ import { TS_STD_FORGE_MODULE } from './constants.mjs';
|
|
|
4
4
|
export const getTsStdForgeImport = (program) => program.body.find((node) => node.type === AST_NODE_TYPES.ImportDeclaration &&
|
|
5
5
|
node.source.value === TS_STD_FORGE_MODULE);
|
|
6
6
|
export const getNamedImports = (node) => {
|
|
7
|
-
if (node === undefined)
|
|
7
|
+
if (node === undefined) {
|
|
8
8
|
return [];
|
|
9
|
+
}
|
|
9
10
|
return node.specifiers.flatMap((specifier) => specifier.type === AST_NODE_TYPES.ImportSpecifier
|
|
10
11
|
? (() => {
|
|
11
12
|
const importedName = specifier.imported.type === AST_NODE_TYPES.Identifier
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-utils.mjs","sourceRoot":"","sources":["../../src/rules/import-utils.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,GAGf,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,uEAAuE;AAEvE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,OAAyB,EACe,EAAE,CAC1C,OAAO,CAAC,IAAI,CAAC,IAAI,CACf,CAAC,IAAI,EAAsC,EAAE,CAC3C,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,iBAAiB;IAC9C,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,mBAAmB,CAC5C,CAAC;AAEJ,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,IAA0D,EACvC,EAAE;IACrB,IAAI,IAAI,KAAK,SAAS;
|
|
1
|
+
{"version":3,"file":"import-utils.mjs","sourceRoot":"","sources":["../../src/rules/import-utils.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,GAGf,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,uEAAuE;AAEvE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,OAAyB,EACe,EAAE,CAC1C,OAAO,CAAC,IAAI,CAAC,IAAI,CACf,CAAC,IAAI,EAAsC,EAAE,CAC3C,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,iBAAiB;IAC9C,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,mBAAmB,CAC5C,CAAC;AAEJ,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,IAA0D,EACvC,EAAE;IACrB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,CAC3C,SAAS,CAAC,IAAI,KAAK,cAAc,CAAC,eAAe;QAC/C,CAAC,CAAC,CAAC,GAAG,EAAE;YACJ,MAAM,YAAY,GAChB,SAAS,CAAC,QAAQ,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU;gBACnD,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI;gBACzB,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;YAE/B,OAAO,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,CAAC,CAAC,EAAE;QACN,CAAC,CAAC,EAAE,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,KAAyB,EACzB,OAAyB,EACzB,aAAgC,EACH,EAAE;IAC/B,MAAM,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE/C,MAAM,eAAe,GACnB,YAAY,aAAa,YAAY,mBAAmB,IAAa,CAAC;IAExE,MAAM,OAAO,GAAG,IAAI,CAAC;IAErB,MAAM,aAAa,GAAG,GAAG,eAAe,GAAG,OAAO,EAAW,CAAC;IAE9D,6CAA6C;IAC7C,uDAAuD;IACvD,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;AAC1D,CAAC,CAAC"}
|
|
@@ -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,CAqEjE,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, getTsStdForgeImport, } 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': () => {
|
|
@@ -49,49 +51,59 @@ export const preferIsNonNullObject = {
|
|
|
49
51
|
},
|
|
50
52
|
defaultOptions: [],
|
|
51
53
|
};
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
if (
|
|
58
|
-
return undefined;
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
const getNonNullObjectIdentifierName = (
|
|
57
|
+
|
|
58
|
+
node) => {
|
|
59
|
+
if (node.operator !== '&&') {
|
|
60
|
+
return undefined;
|
|
61
|
+
}
|
|
62
|
+
const leftIdentifierName = getTypeofObjectIdentifierName(skipTypeWrappers(node.left));
|
|
63
|
+
const rightIdentifierName = getNonNullCheckIdentifierName(skipTypeWrappers(node.right));
|
|
64
|
+
return leftIdentifierName === undefined ||
|
|
65
|
+
rightIdentifierName === undefined ||
|
|
66
|
+
leftIdentifierName !== rightIdentifierName
|
|
67
|
+
? undefined
|
|
68
|
+
: leftIdentifierName;
|
|
64
69
|
};
|
|
65
|
-
const getTypeofObjectIdentifierName = (
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
if (node.
|
|
69
|
-
return undefined;
|
|
70
|
-
|
|
71
|
-
if (
|
|
72
|
-
return undefined;
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
return undefined;
|
|
81
|
-
|
|
70
|
+
const getTypeofObjectIdentifierName = (
|
|
71
|
+
|
|
72
|
+
node) => {
|
|
73
|
+
if (node.type !== AST_NODE_TYPES.BinaryExpression) {
|
|
74
|
+
return undefined;
|
|
75
|
+
}
|
|
76
|
+
if (node.operator !== '===') {
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
const left = skipTypeWrappers(node.left);
|
|
80
|
+
const right = skipTypeWrappers(node.right);
|
|
81
|
+
if (left.type !== AST_NODE_TYPES.UnaryExpression ||
|
|
82
|
+
left.operator !== 'typeof' ||
|
|
83
|
+
right.type !== AST_NODE_TYPES.Literal ||
|
|
84
|
+
right.value !== 'object') {
|
|
85
|
+
return undefined;
|
|
86
|
+
}
|
|
87
|
+
const argument = skipTypeWrappers(left.argument);
|
|
88
|
+
return argument.type === AST_NODE_TYPES.Identifier
|
|
89
|
+
? argument.name
|
|
90
|
+
: undefined;
|
|
82
91
|
};
|
|
83
|
-
const getNonNullCheckIdentifierName = (
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
if (node.
|
|
87
|
-
return undefined;
|
|
88
|
-
|
|
89
|
-
if (
|
|
90
|
-
return undefined;
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
92
|
+
const getNonNullCheckIdentifierName = (
|
|
93
|
+
|
|
94
|
+
node) => {
|
|
95
|
+
if (node.type !== AST_NODE_TYPES.BinaryExpression) {
|
|
96
|
+
return undefined;
|
|
97
|
+
}
|
|
98
|
+
if (node.operator !== '!==') {
|
|
99
|
+
return undefined;
|
|
100
|
+
}
|
|
101
|
+
const left = skipTypeWrappers(node.left);
|
|
102
|
+
const right = skipTypeWrappers(node.right);
|
|
103
|
+
return left.type !== AST_NODE_TYPES.Identifier ||
|
|
104
|
+
right.type !== AST_NODE_TYPES.Literal ||
|
|
105
|
+
right.value !== null
|
|
106
|
+
? undefined
|
|
107
|
+
: left.name;
|
|
96
108
|
};
|
|
97
109
|
//# 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;AAelC,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,CA8KjE,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { AST_NODE_TYPES, } from '@typescript-eslint/utils';
|
|
2
2
|
import { SafeArray } from 'ts-std-forge';
|
|
3
3
|
import * as ts from 'typescript';
|
|
4
|
+
import { getArgumentText, getValueType, isIdentifierNamed, skipTypeWrappers, } from './ast-utils.mjs';
|
|
4
5
|
import { buildImportFixes, getNamedImports, getTsStdForgeImport, } from './import-utils.mjs';
|
|
5
6
|
export const preferIsRecordAndHasKey = {
|
|
6
7
|
meta: {
|
|
@@ -19,8 +20,8 @@ export const preferIsRecordAndHasKey = {
|
|
|
19
20
|
const sourceCode = context.sourceCode;
|
|
20
21
|
const program = sourceCode.ast;
|
|
21
22
|
const tsStdForgeImport = getTsStdForgeImport(program);
|
|
22
|
-
const
|
|
23
|
-
|
|
23
|
+
const checker = sourceCode.parserServices?.program?.getTypeChecker();
|
|
24
|
+
|
|
24
25
|
|
|
25
26
|
|
|
26
27
|
|
|
@@ -30,30 +31,32 @@ 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
|
+
const type = getValueType(sourceCode, expression);
|
|
38
|
+
return type !== undefined && isAlreadyRecordType(checker, type);
|
|
38
39
|
};
|
|
39
40
|
const mut_nodesToFix = [];
|
|
40
41
|
return {
|
|
41
42
|
|
|
42
43
|
CallExpression: (node) => {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
44
|
+
const callee = skipTypeWrappers(node.callee);
|
|
45
|
+
if (callee.type !== AST_NODE_TYPES.MemberExpression ||
|
|
46
|
+
!isIdentifierNamed(callee.object, 'Object') ||
|
|
47
|
+
callee.property.type !== AST_NODE_TYPES.Identifier ||
|
|
48
|
+
callee.property.name !== 'hasOwn') {
|
|
48
49
|
return;
|
|
49
50
|
}
|
|
50
51
|
|
|
51
|
-
if (node.arguments.length !== 2)
|
|
52
|
+
if (node.arguments.length !== 2) {
|
|
52
53
|
return;
|
|
54
|
+
}
|
|
53
55
|
const objArg = node.arguments[0];
|
|
54
56
|
const keyArg = node.arguments[1];
|
|
55
|
-
if (objArg === undefined || keyArg === undefined)
|
|
57
|
+
if (objArg === undefined || keyArg === undefined) {
|
|
56
58
|
return;
|
|
59
|
+
}
|
|
57
60
|
|
|
58
61
|
if (objArg.type === AST_NODE_TYPES.SpreadElement ||
|
|
59
62
|
keyArg.type === AST_NODE_TYPES.SpreadElement) {
|
|
@@ -67,13 +70,15 @@ export const preferIsRecordAndHasKey = {
|
|
|
67
70
|
},
|
|
68
71
|
|
|
69
72
|
BinaryExpression: (node) => {
|
|
70
|
-
if (node.operator !== 'in')
|
|
73
|
+
if (node.operator !== 'in') {
|
|
71
74
|
return;
|
|
75
|
+
}
|
|
72
76
|
const keyExpression = node.left;
|
|
73
77
|
const objExpression = node.right;
|
|
74
78
|
|
|
75
|
-
if (keyExpression.type === AST_NODE_TYPES.PrivateIdentifier)
|
|
79
|
+
if (keyExpression.type === AST_NODE_TYPES.PrivateIdentifier) {
|
|
76
80
|
return;
|
|
81
|
+
}
|
|
77
82
|
mut_nodesToFix.push({
|
|
78
83
|
node,
|
|
79
84
|
objExpression,
|
|
@@ -96,8 +101,8 @@ export const preferIsRecordAndHasKey = {
|
|
|
96
101
|
...(namedImports.includes('hasKey') ? [] : ['hasKey']),
|
|
97
102
|
];
|
|
98
103
|
for (const [index, { node, objExpression, keyExpression, needsIsRecord },] of rewrites.entries()) {
|
|
99
|
-
const objText = sourceCode
|
|
100
|
-
const keyText = sourceCode
|
|
104
|
+
const objText = getArgumentText(sourceCode, objExpression);
|
|
105
|
+
const keyText = getArgumentText(sourceCode, keyExpression);
|
|
101
106
|
const originalText = sourceCode.getText(node);
|
|
102
107
|
context.report({
|
|
103
108
|
node,
|
|
@@ -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,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAM5B,MAAM,CAAC,MAAM,uBAAuB,GAClC;IACE,IAAI,EAAE;QACJ,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE;YACJ,WAAW,EACT,8GAA8G;SACjH;QACD,OAAO,EAAE,MAAM;QACf,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE;YACR,oBAAoB,EAClB,4GAA4G;YAC9G,SAAS,EACP,mFAAmF;SACtF;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,gBAAgB,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAEtD,MAAM,
|
|
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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prefer-safe-array-is-array.d.mts","sourceRoot":"","sources":["../../src/rules/prefer-safe-array-is-array.mts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EAEd,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"prefer-safe-array-is-array.d.mts","sourceRoot":"","sources":["../../src/rules/prefer-safe-array-is-array.mts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EAEd,MAAM,0BAA0B,CAAC;AAYlC,KAAK,OAAO,GAAG,SAAS,EAAE,CAAC;AAE3B,KAAK,UAAU,GAAG,qBAAqB,CAAC;AAExC,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CAqEhE,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { AST_NODE_TYPES, } from '@typescript-eslint/utils';
|
|
2
|
+
import { getRangeWithParens, isIdentifierNamed, skipTypeWrappers, } from './ast-utils.mjs';
|
|
2
3
|
import { buildImportFixes, getNamedImports, getTsStdForgeImport, } from './import-utils.mjs';
|
|
3
4
|
export const preferSafeArrayIsArray = {
|
|
4
5
|
meta: {
|
|
@@ -19,8 +20,9 @@ export const preferSafeArrayIsArray = {
|
|
|
19
20
|
const mut_nodesToFix = [];
|
|
20
21
|
return {
|
|
21
22
|
CallExpression: (node) => {
|
|
22
|
-
if (!isArrayIsArrayCall(node))
|
|
23
|
+
if (!isArrayIsArrayCall(node)) {
|
|
23
24
|
return;
|
|
25
|
+
}
|
|
24
26
|
mut_nodesToFix.push(node);
|
|
25
27
|
},
|
|
26
28
|
'Program:exit': () => {
|
|
@@ -35,14 +37,16 @@ export const preferSafeArrayIsArray = {
|
|
|
35
37
|
node,
|
|
36
38
|
messageId: 'useSafeArrayIsArray',
|
|
37
39
|
fix: (fixer) => {
|
|
38
|
-
const callee = node.callee;
|
|
39
|
-
if (callee.type !== AST_NODE_TYPES.MemberExpression)
|
|
40
|
-
return [];
|
|
41
|
-
const replacement = `SafeArray.isArray${sourceCode.getText(node).slice(sourceCode.getText(callee).length)}`;
|
|
42
40
|
const importFixes = index === 0 && !hasSafeArrayImport
|
|
43
41
|
? buildImportFixes(fixer, program, ['SafeArray'])
|
|
44
42
|
: [];
|
|
45
|
-
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
return [
|
|
47
|
+
...importFixes,
|
|
48
|
+
fixer.replaceTextRange(getRangeWithParens(sourceCode, node.callee), 'SafeArray.isArray'),
|
|
49
|
+
];
|
|
46
50
|
},
|
|
47
51
|
});
|
|
48
52
|
}
|
|
@@ -51,18 +55,23 @@ export const preferSafeArrayIsArray = {
|
|
|
51
55
|
},
|
|
52
56
|
defaultOptions: [],
|
|
53
57
|
};
|
|
54
|
-
const isArrayIsArrayCall = (
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
const
|
|
58
|
-
if (
|
|
58
|
+
const isArrayIsArrayCall = (
|
|
59
|
+
|
|
60
|
+
node) => {
|
|
61
|
+
const callee = skipTypeWrappers(node.callee);
|
|
62
|
+
if (callee.type !== AST_NODE_TYPES.MemberExpression) {
|
|
59
63
|
return false;
|
|
60
|
-
|
|
64
|
+
}
|
|
65
|
+
const { object, property } = callee;
|
|
66
|
+
if (!isIdentifierNamed(object, 'Array')) {
|
|
61
67
|
return false;
|
|
62
|
-
|
|
68
|
+
}
|
|
69
|
+
if (property.type !== AST_NODE_TYPES.Identifier) {
|
|
63
70
|
return false;
|
|
64
|
-
|
|
71
|
+
}
|
|
72
|
+
if (property.name !== 'isArray') {
|
|
65
73
|
return false;
|
|
74
|
+
}
|
|
66
75
|
return true;
|
|
67
76
|
};
|
|
68
77
|
//# sourceMappingURL=prefer-safe-array-is-array.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prefer-safe-array-is-array.mjs","sourceRoot":"","sources":["../../src/rules/prefer-safe-array-is-array.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,GAGf,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"prefer-safe-array-is-array.mjs","sourceRoot":"","sources":["../../src/rules/prefer-safe-array-is-array.mts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prefer-safe-array-length-guard.d.mts","sourceRoot":"","sources":["../../src/rules/prefer-safe-array-length-guard.mts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EAEd,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"prefer-safe-array-length-guard.d.mts","sourceRoot":"","sources":["../../src/rules/prefer-safe-array-length-guard.mts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EAEd,MAAM,0BAA0B,CAAC;AAalC,KAAK,OAAO,GAAG,SAAS,EAAE,CAAC;AAE3B,KAAK,UAAU,GAAG,YAAY,GAAG,eAAe,CAAC;AAwCjD,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,UAAU,CAC1D,UAAU,EACV,OAAO,CA2GC,CAAC"}
|