eslint-plugin-runtime-cleanup 1.2.8 → 1.2.10
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/README.md +29 -29
- package/dist/_internal/ast-node.d.ts +5 -1
- package/dist/_internal/ast-node.d.ts.map +1 -1
- package/dist/_internal/ast-node.js +2 -1
- package/dist/_internal/ast-node.js.map +1 -1
- package/dist/_internal/bounded-cache.d.ts.map +1 -1
- package/dist/_internal/bounded-cache.js +2 -1
- package/dist/_internal/bounded-cache.js.map +1 -1
- package/dist/_internal/expression-boolean-memoizer.d.ts.map +1 -1
- package/dist/_internal/expression-boolean-memoizer.js +2 -1
- package/dist/_internal/expression-boolean-memoizer.js.map +1 -1
- package/dist/_internal/filter-callback.d.ts +5 -1
- package/dist/_internal/filter-callback.d.ts.map +1 -1
- package/dist/_internal/filter-callback.js +9 -10
- package/dist/_internal/filter-callback.js.map +1 -1
- package/dist/_internal/floating-resource.d.ts +8 -0
- package/dist/_internal/floating-resource.d.ts.map +1 -1
- package/dist/_internal/floating-resource.js +42 -36
- package/dist/_internal/floating-resource.js.map +1 -1
- package/dist/_internal/normalize-expression-text.d.ts +6 -1
- package/dist/_internal/normalize-expression-text.d.ts.map +1 -1
- package/dist/_internal/normalize-expression-text.js +30 -28
- package/dist/_internal/normalize-expression-text.js.map +1 -1
- package/dist/_internal/nullish-comparison.d.ts +1 -1
- package/dist/_internal/nullish-comparison.d.ts.map +1 -1
- package/dist/_internal/nullish-comparison.js +16 -11
- package/dist/_internal/nullish-comparison.js.map +1 -1
- package/dist/_internal/plugin-settings.d.ts +2 -1
- package/dist/_internal/plugin-settings.d.ts.map +1 -1
- package/dist/_internal/plugin-settings.js +3 -2
- package/dist/_internal/plugin-settings.js.map +1 -1
- package/dist/_internal/report-adapter.d.ts +5 -4
- package/dist/_internal/report-adapter.d.ts.map +1 -1
- package/dist/_internal/report-adapter.js +3 -2
- package/dist/_internal/report-adapter.js.map +1 -1
- package/dist/_internal/rule-catalog.d.ts.map +1 -1
- package/dist/_internal/rule-catalog.js +3 -2
- package/dist/_internal/rule-catalog.js.map +1 -1
- package/dist/_internal/rule-docs-metadata.d.ts +2 -1
- package/dist/_internal/rule-docs-metadata.d.ts.map +1 -1
- package/dist/_internal/rule-docs-metadata.js +36 -33
- package/dist/_internal/rule-docs-metadata.js.map +1 -1
- package/dist/_internal/rules-registry.d.ts +2 -1
- package/dist/_internal/rules-registry.d.ts.map +1 -1
- package/dist/_internal/rules-registry.js.map +1 -1
- package/dist/_internal/runtime-cleanup-config-references.d.ts +2 -1
- package/dist/_internal/runtime-cleanup-config-references.d.ts.map +1 -1
- package/dist/_internal/runtime-cleanup-config-references.js +8 -7
- package/dist/_internal/runtime-cleanup-config-references.js.map +1 -1
- package/dist/_internal/scope-variable.d.ts.map +1 -1
- package/dist/_internal/scope-variable.js +5 -4
- package/dist/_internal/scope-variable.js.map +1 -1
- package/dist/_internal/type-checker.d.ts +2 -2
- package/dist/_internal/type-checker.d.ts.map +1 -1
- package/dist/_internal/type-checker.js +10 -8
- package/dist/_internal/type-checker.js.map +1 -1
- package/dist/_internal/type-predicate-autofix-safety.d.ts +5 -1
- package/dist/_internal/type-predicate-autofix-safety.d.ts.map +1 -1
- package/dist/_internal/type-predicate-autofix-safety.js +9 -10
- package/dist/_internal/type-predicate-autofix-safety.js.map +1 -1
- package/dist/_internal/type-reference-node.d.ts +7 -5
- package/dist/_internal/type-reference-node.d.ts.map +1 -1
- package/dist/_internal/type-reference-node.js +6 -6
- package/dist/_internal/type-reference-node.js.map +1 -1
- package/dist/_internal/typed-rule.d.ts +2 -1
- package/dist/_internal/typed-rule.d.ts.map +1 -1
- package/dist/_internal/typed-rule.js +6 -5
- package/dist/_internal/typed-rule.js.map +1 -1
- package/dist/_internal/value-rewrite-autofix-safety.d.ts +5 -1
- package/dist/_internal/value-rewrite-autofix-safety.d.ts.map +1 -1
- package/dist/_internal/value-rewrite-autofix-safety.js +10 -18
- package/dist/_internal/value-rewrite-autofix-safety.js.map +1 -1
- package/dist/plugin.cjs +571 -662
- package/dist/plugin.cjs.map +4 -4
- package/dist/plugin.d.cts +2 -1
- package/dist/plugin.d.ts +2 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +8 -7
- package/dist/plugin.js.map +1 -1
- package/dist/rules/no-floating-abort-controllers.d.ts.map +1 -1
- package/dist/rules/no-floating-abort-controllers.js +24 -52
- package/dist/rules/no-floating-abort-controllers.js.map +1 -1
- package/dist/rules/no-floating-audio-contexts.d.ts.map +1 -1
- package/dist/rules/no-floating-audio-contexts.js +7 -6
- package/dist/rules/no-floating-audio-contexts.js.map +1 -1
- package/dist/rules/no-floating-broadcast-channels.d.ts.map +1 -1
- package/dist/rules/no-floating-broadcast-channels.js +31 -59
- package/dist/rules/no-floating-broadcast-channels.js.map +1 -1
- package/dist/rules/no-floating-child-processes.d.ts.map +1 -1
- package/dist/rules/no-floating-child-processes.js +43 -45
- package/dist/rules/no-floating-child-processes.js.map +1 -1
- package/dist/rules/no-floating-disposable-stacks.d.ts.map +1 -1
- package/dist/rules/no-floating-disposable-stacks.js +37 -38
- package/dist/rules/no-floating-disposable-stacks.js.map +1 -1
- package/dist/rules/no-floating-file-watchers.d.ts.map +1 -1
- package/dist/rules/no-floating-file-watchers.js +40 -42
- package/dist/rules/no-floating-file-watchers.js.map +1 -1
- package/dist/rules/no-floating-geolocation-watches.js +20 -20
- package/dist/rules/no-floating-geolocation-watches.js.map +1 -1
- package/dist/rules/no-floating-infinite-animations.d.ts.map +1 -1
- package/dist/rules/no-floating-infinite-animations.js +4 -3
- package/dist/rules/no-floating-infinite-animations.js.map +1 -1
- package/dist/rules/no-floating-media-streams.d.ts.map +1 -1
- package/dist/rules/no-floating-media-streams.js +24 -24
- package/dist/rules/no-floating-media-streams.js.map +1 -1
- package/dist/rules/no-floating-message-channels.js +30 -30
- package/dist/rules/no-floating-message-channels.js.map +1 -1
- package/dist/rules/no-floating-network-connections.d.ts.map +1 -1
- package/dist/rules/no-floating-network-connections.js +36 -36
- package/dist/rules/no-floating-network-connections.js.map +1 -1
- package/dist/rules/no-floating-object-urls.d.ts.map +1 -1
- package/dist/rules/no-floating-object-urls.js +4 -3
- package/dist/rules/no-floating-object-urls.js.map +1 -1
- package/dist/rules/no-floating-observers.d.ts.map +1 -1
- package/dist/rules/no-floating-observers.js +33 -34
- package/dist/rules/no-floating-observers.js.map +1 -1
- package/dist/rules/no-floating-servers.d.ts.map +1 -1
- package/dist/rules/no-floating-servers.js +50 -52
- package/dist/rules/no-floating-servers.js.map +1 -1
- package/dist/rules/no-floating-streams.d.ts.map +1 -1
- package/dist/rules/no-floating-streams.js +28 -29
- package/dist/rules/no-floating-streams.js.map +1 -1
- package/dist/rules/no-floating-timers.d.ts.map +1 -1
- package/dist/rules/no-floating-timers.js +7 -47
- package/dist/rules/no-floating-timers.js.map +1 -1
- package/dist/rules/no-floating-wake-locks.js +20 -20
- package/dist/rules/no-floating-wake-locks.js.map +1 -1
- package/dist/rules/no-floating-web-stream-locks.d.ts.map +1 -1
- package/dist/rules/no-floating-web-stream-locks.js +4 -3
- package/dist/rules/no-floating-web-stream-locks.js.map +1 -1
- package/dist/rules/no-floating-workers.d.ts.map +1 -1
- package/dist/rules/no-floating-workers.js +39 -40
- package/dist/rules/no-floating-workers.js.map +1 -1
- package/dist/rules/no-unmanaged-event-listeners.d.ts.map +1 -1
- package/dist/rules/no-unmanaged-event-listeners.js +23 -23
- package/dist/rules/no-unmanaged-event-listeners.js.map +1 -1
- package/docs/rules/no-floating-audio-contexts.md +1 -2
- package/docs/rules/no-floating-media-streams.md +1 -1
- package/docs/rules/no-floating-object-urls.md +3 -3
- package/docs/rules/no-floating-observers.md +1 -1
- package/docs/rules/no-floating-servers.md +1 -1
- package/docs/rules/no-floating-wake-locks.md +1 -1
- package/docs/rules/no-floating-web-stream-locks.md +1 -2
- package/docs/rules/presets/index.md +28 -28
- package/package.json +7 -4
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* @packageDocumentation
|
|
3
3
|
* Shared runtime-cleanup preset/config reference constants and type guards.
|
|
4
4
|
*/
|
|
5
|
+
import { objectHasOwn } from "ts-extras";
|
|
5
6
|
/** Canonical flat-config preset keys exposed through `plugin.configs`. */
|
|
6
7
|
export const runtimeCleanupConfigNames = [
|
|
7
8
|
"all",
|
|
@@ -16,37 +17,37 @@ export const runtimeCleanupConfigNames = [
|
|
|
16
17
|
*/
|
|
17
18
|
export const runtimeCleanupConfigMetadataByName = {
|
|
18
19
|
all: {
|
|
19
|
-
icon: "
|
|
20
|
+
icon: "🟣",
|
|
20
21
|
presetName: "runtime-cleanup:all",
|
|
21
22
|
readmeOrder: 5,
|
|
22
23
|
requiresTypeChecking: true,
|
|
23
24
|
},
|
|
24
25
|
experimental: {
|
|
25
|
-
icon: "
|
|
26
|
+
icon: "🧪",
|
|
26
27
|
presetName: "runtime-cleanup:experimental",
|
|
27
28
|
readmeOrder: 6,
|
|
28
29
|
requiresTypeChecking: false,
|
|
29
30
|
},
|
|
30
31
|
minimal: {
|
|
31
|
-
icon: "
|
|
32
|
+
icon: "🟢",
|
|
32
33
|
presetName: "runtime-cleanup:minimal",
|
|
33
34
|
readmeOrder: 1,
|
|
34
35
|
requiresTypeChecking: false,
|
|
35
36
|
},
|
|
36
37
|
recommended: {
|
|
37
|
-
icon: "
|
|
38
|
+
icon: "🟡",
|
|
38
39
|
presetName: "runtime-cleanup:recommended",
|
|
39
40
|
readmeOrder: 2,
|
|
40
41
|
requiresTypeChecking: false,
|
|
41
42
|
},
|
|
42
43
|
"recommended-type-checked": {
|
|
43
|
-
icon: "
|
|
44
|
+
icon: "🧬",
|
|
44
45
|
presetName: "runtime-cleanup:recommended-type-checked",
|
|
45
46
|
readmeOrder: 3,
|
|
46
47
|
requiresTypeChecking: true,
|
|
47
48
|
},
|
|
48
49
|
strict: {
|
|
49
|
-
icon: "
|
|
50
|
+
icon: "🔴",
|
|
50
51
|
presetName: "runtime-cleanup:strict",
|
|
51
52
|
readmeOrder: 4,
|
|
52
53
|
requiresTypeChecking: true,
|
|
@@ -74,5 +75,5 @@ export const runtimeCleanupConfigReferenceToName = {
|
|
|
74
75
|
/**
|
|
75
76
|
* Check whether a string is a supported rule docs preset reference.
|
|
76
77
|
*/
|
|
77
|
-
export const isRuntimeCleanupConfigReference = (value) =>
|
|
78
|
+
export const isRuntimeCleanupConfigReference = (value) => objectHasOwn(runtimeCleanupConfigReferenceToName, value);
|
|
78
79
|
//# sourceMappingURL=runtime-cleanup-config-references.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-cleanup-config-references.js","sourceRoot":"","sources":["../../src/_internal/runtime-cleanup-config-references.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"runtime-cleanup-config-references.js","sourceRoot":"","sources":["../../src/_internal/runtime-cleanup-config-references.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,0EAA0E;AAC1E,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACrC,KAAK;IACL,cAAc;IACd,SAAS;IACT,aAAa;IACb,0BAA0B;IAC1B,QAAQ;CACF,CAAC;AAcX;;GAEG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAE3C;IACA,GAAG,EAAE;QACD,IAAI,EAAE,IAAI;QACV,UAAU,EAAE,qBAAqB;QACjC,WAAW,EAAE,CAAC;QACd,oBAAoB,EAAE,IAAI;KAC7B;IACD,YAAY,EAAE;QACV,IAAI,EAAE,IAAI;QACV,UAAU,EAAE,8BAA8B;QAC1C,WAAW,EAAE,CAAC;QACd,oBAAoB,EAAE,KAAK;KAC9B;IACD,OAAO,EAAE;QACL,IAAI,EAAE,IAAI;QACV,UAAU,EAAE,yBAAyB;QACrC,WAAW,EAAE,CAAC;QACd,oBAAoB,EAAE,KAAK;KAC9B;IACD,WAAW,EAAE;QACT,IAAI,EAAE,IAAI;QACV,UAAU,EAAE,6BAA6B;QACzC,WAAW,EAAE,CAAC;QACd,oBAAoB,EAAE,KAAK;KAC9B;IACD,0BAA0B,EAAE;QACxB,IAAI,EAAE,IAAI;QACV,UAAU,EAAE,0CAA0C;QACtD,WAAW,EAAE,CAAC;QACd,oBAAoB,EAAE,IAAI;KAC7B;IACD,MAAM,EAAE;QACJ,IAAI,EAAE,IAAI;QACV,UAAU,EAAE,wBAAwB;QACpC,WAAW,EAAE,CAAC;QACd,oBAAoB,EAAE,IAAI;KAC7B;CACJ,CAAC;AAEF,6DAA6D;AAC7D,MAAM,CAAC,MAAM,sCAAsC,GAC/C;IACI,SAAS;IACT,aAAa;IACb,0BAA0B;IAC1B,QAAQ;IACR,KAAK;IACL,cAAc;CACjB,CAAC;AAEN,+EAA+E;AAC/E,MAAM,CAAC,MAAM,mCAAmC,GAQ3C;IACD,6BAA6B,EAAE,KAAK;IACpC,sCAAsC,EAAE,cAAc;IACtD,iCAAiC,EAAE,SAAS;IAC5C,qCAAqC,EAAE,aAAa;IACpD,kDAAkD,EAC9C,0BAA0B;IAC9B,gCAAgC,EAAE,QAAQ;IAC1C,qDAAqD,EACjD,0BAA0B;CACjC,CAAC;AAMF;;GAEG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAC3C,KAAa,EACyB,EAAE,CACxC,YAAY,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scope-variable.d.ts","sourceRoot":"","sources":["../../src/_internal/scope-variable.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"scope-variable.d.ts","sourceRoot":"","sources":["../../src/_internal/scope-variable.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAMzD;;;;;;;;;GASG;AACH,eAAO,MAAM,uBAAuB,GAChC,OAAO,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EACtD,cAAc,MAAM,KACrB,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,QAwBxB,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isDefined } from "ts-extras";
|
|
1
2
|
import { resolveFirstValueInLinkedStructure } from "./cycle-safe-linked-search.js";
|
|
2
3
|
/**
|
|
3
4
|
* Resolve a variable binding by walking the current scope and all parent
|
|
@@ -14,13 +15,13 @@ export const getVariableInScopeChain = (scope, variableName) => {
|
|
|
14
15
|
getNextNode: (currentScope) => currentScope.upper,
|
|
15
16
|
resolveValue: (currentScope) => {
|
|
16
17
|
const variable = currentScope.set.get(variableName);
|
|
17
|
-
return variable
|
|
18
|
+
return isDefined(variable)
|
|
18
19
|
? {
|
|
19
|
-
found: false,
|
|
20
|
-
}
|
|
21
|
-
: {
|
|
22
20
|
found: true,
|
|
23
21
|
value: variable,
|
|
22
|
+
}
|
|
23
|
+
: {
|
|
24
|
+
found: false,
|
|
24
25
|
};
|
|
25
26
|
},
|
|
26
27
|
startNode: scope,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scope-variable.js","sourceRoot":"","sources":["../../src/_internal/scope-variable.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kCAAkC,EAAE,MAAM,+BAA+B,CAAC;AAEnF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACnC,KAAsD,EACtD,YAAoB,EACU,EAAE;IAChC,MAAM,YAAY,GAAG,kCAAkC,CAGrD;QACE,WAAW,EAAE,CACT,YAA4C,EACP,EAAE,CAAC,YAAY,CAAC,KAAK;QAC9D,YAAY,EAAE,CAAC,YAA4C,EAAE,EAAE;YAC3D,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAEpD,OAAO,QAAQ,
|
|
1
|
+
{"version":3,"file":"scope-variable.js","sourceRoot":"","sources":["../../src/_internal/scope-variable.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,kCAAkC,EAAE,MAAM,+BAA+B,CAAC;AAEnF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACnC,KAAsD,EACtD,YAAoB,EACU,EAAE;IAChC,MAAM,YAAY,GAAG,kCAAkC,CAGrD;QACE,WAAW,EAAE,CACT,YAA4C,EACP,EAAE,CAAC,YAAY,CAAC,KAAK;QAC9D,YAAY,EAAE,CAAC,YAA4C,EAAE,EAAE;YAC3D,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAEpD,OAAO,SAAS,CAAC,QAAQ,CAAC;gBACtB,CAAC,CAAC;oBACI,KAAK,EAAE,IAAI;oBACX,KAAK,EAAE,QAAQ;iBAClB;gBACH,CAAC,CAAC;oBACI,KAAK,EAAE,KAAK;iBACf,CAAC;QACZ,CAAC;QACD,SAAS,EAAE,KAAK;KACnB,CAAC,CAAC;IAEH,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1D,CAAC,CAAC"}
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
* @packageDocumentation
|
|
3
3
|
* Shared TypeScript checker helpers for low-noise type-aware rules.
|
|
4
4
|
*/
|
|
5
|
-
import type
|
|
5
|
+
import type { Type, TypeChecker } from "typescript";
|
|
6
6
|
/**
|
|
7
7
|
* Check whether a type or any type in its base hierarchy has a given symbol
|
|
8
8
|
* name.
|
|
9
9
|
*/
|
|
10
|
-
export declare const hasTypeNameInHierarchy: (checker:
|
|
10
|
+
export declare const hasTypeNameInHierarchy: (checker: TypeChecker, candidate: Type, expectedTypeName: string, seenTypes?: ReadonlySet<Type>) => boolean;
|
|
11
11
|
//# sourceMappingURL=type-checker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-checker.d.ts","sourceRoot":"","sources":["../../src/_internal/type-checker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"type-checker.d.ts","sourceRoot":"","sources":["../../src/_internal/type-checker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAIpD;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GAC/B,SAAS,WAAW,EACpB,WAAW,IAAI,EACf,kBAAkB,MAAM,EACxB,YAAW,WAAW,CAAC,IAAI,CAAa,KACzC,OAyCF,CAAC"}
|
|
@@ -1,19 +1,21 @@
|
|
|
1
|
+
import { setHas } from "ts-extras";
|
|
1
2
|
/**
|
|
2
3
|
* Check whether a type or any type in its base hierarchy has a given symbol
|
|
3
4
|
* name.
|
|
4
5
|
*/
|
|
5
|
-
export const hasTypeNameInHierarchy = (checker,
|
|
6
|
-
|
|
6
|
+
export const hasTypeNameInHierarchy = (checker, candidate, expectedTypeName, seenTypes = new Set()) => {
|
|
7
|
+
const seenCandidate = candidate;
|
|
8
|
+
if (setHas(seenTypes, seenCandidate)) {
|
|
7
9
|
return false;
|
|
8
10
|
}
|
|
9
11
|
const nextSeenTypes = new Set(seenTypes);
|
|
10
|
-
nextSeenTypes.add(
|
|
11
|
-
if (
|
|
12
|
-
return
|
|
12
|
+
nextSeenTypes.add(candidate);
|
|
13
|
+
if (candidate.isUnionOrIntersection()) {
|
|
14
|
+
return candidate.types.some((entry) => hasTypeNameInHierarchy(checker, entry, expectedTypeName, nextSeenTypes));
|
|
13
15
|
}
|
|
14
|
-
const apparentType = checker.getApparentType(
|
|
15
|
-
const
|
|
16
|
-
if (
|
|
16
|
+
const apparentType = checker.getApparentType(candidate);
|
|
17
|
+
const candidateName = apparentType.symbol.getName();
|
|
18
|
+
if (candidateName === expectedTypeName) {
|
|
17
19
|
return true;
|
|
18
20
|
}
|
|
19
21
|
if (!apparentType.isClassOrInterface()) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-checker.js","sourceRoot":"","sources":["../../src/_internal/type-checker.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAClC,
|
|
1
|
+
{"version":3,"file":"type-checker.js","sourceRoot":"","sources":["../../src/_internal/type-checker.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAClC,OAAoB,EACpB,SAAe,EACf,gBAAwB,EACxB,YAA+B,IAAI,GAAG,EAAE,EACjC,EAAE;IACT,MAAM,aAAa,GAAY,SAAS,CAAC;IACzC,IAAI,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;IACzC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAE7B,IAAI,SAAS,CAAC,qBAAqB,EAAE,EAAE,CAAC;QACpC,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAW,EAAE,EAAE,CACxC,sBAAsB,CAClB,OAAO,EACP,KAAK,EACL,gBAAgB,EAChB,aAAa,CAChB,CACJ,CAAC;IACN,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IACxD,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IAEpD,IAAI,aAAa,KAAK,gBAAgB,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IAErD,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC/B,sBAAsB,CAClB,OAAO,EACP,QAAQ,EACR,gBAAgB,EAChB,aAAa,CAChB,CACJ,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* Conservative safety checks for autofixes that introduce type predicates.
|
|
4
|
+
*/
|
|
5
|
+
import { type TSESTree } from "@typescript-eslint/utils";
|
|
2
6
|
/**
|
|
3
7
|
* Determine whether a call-expression replacement to a type-predicate helper is
|
|
4
8
|
* safe to apply as an autofix.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-predicate-autofix-safety.d.ts","sourceRoot":"","sources":["../../src/_internal/type-predicate-autofix-safety.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"type-predicate-autofix-safety.d.ts","sourceRoot":"","sources":["../../src/_internal/type-predicate-autofix-safety.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAwDzE;;;;;;;;GAQG;AACH,eAAO,MAAM,oCAAoC,GAC7C,MAAM,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,KACpC,OAgBF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,0BAA0B,GACnC,MAAM,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,KACxC,OAAqD,CAAC"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Conservative safety checks for autofixes that introduce type predicates.
|
|
4
4
|
*/
|
|
5
5
|
import { AST_NODE_TYPES } from "@typescript-eslint/utils";
|
|
6
|
+
import { isDefined } from "ts-extras";
|
|
6
7
|
import { getParentNode } from "./ast-node.js";
|
|
7
8
|
import { isTransparentExpressionWrapper } from "./value-rewrite-autofix-safety.js";
|
|
8
9
|
const isLogicalExpressionOperand = (parentNode, currentNode) => parentNode.type === AST_NODE_TYPES.LogicalExpression &&
|
|
@@ -35,17 +36,15 @@ const isBooleanGuardContext = (parentNode, currentNode) => isUnaryNotArgument(pa
|
|
|
35
36
|
*/
|
|
36
37
|
export const isTypePredicateExpressionAutofixSafe = (node) => {
|
|
37
38
|
let currentNode = node;
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
if (isTransparentExpressionWrapper(parentNode, currentNode)) {
|
|
44
|
-
currentNode = parentNode;
|
|
45
|
-
continue;
|
|
46
|
-
}
|
|
47
|
-
return !isBooleanGuardContext(parentNode, currentNode);
|
|
39
|
+
let parentNode = getParentNode(currentNode);
|
|
40
|
+
while (isDefined(parentNode) &&
|
|
41
|
+
isTransparentExpressionWrapper(parentNode, currentNode)) {
|
|
42
|
+
currentNode = parentNode;
|
|
43
|
+
parentNode = getParentNode(currentNode);
|
|
48
44
|
}
|
|
45
|
+
return isDefined(parentNode)
|
|
46
|
+
? !isBooleanGuardContext(parentNode, currentNode)
|
|
47
|
+
: true;
|
|
49
48
|
};
|
|
50
49
|
/**
|
|
51
50
|
* Backward-compatible alias for call-expression-based callers.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-predicate-autofix-safety.js","sourceRoot":"","sources":["../../src/_internal/type-predicate-autofix-safety.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"type-predicate-autofix-safety.js","sourceRoot":"","sources":["../../src/_internal/type-predicate-autofix-safety.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,cAAc,EAAiB,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,8BAA8B,EAAE,MAAM,mCAAmC,CAAC;AAGnF,MAAM,0BAA0B,GAAG,CAC/B,UAAmC,EACnC,WAAoC,EAC7B,EAAE,CACT,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC,iBAAiB;IACpD,CAAC,UAAU,CAAC,IAAI,KAAK,WAAW,IAAI,UAAU,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC;AAE1E,MAAM,iBAAiB,GAAG,CACtB,UAAmC,EACnC,WAAoC,EAC7B,EAAE,CACT,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC,qBAAqB;IACxD,UAAU,CAAC,IAAI,KAAK,WAAW,CAAC;AAEpC,MAAM,cAAc,GAAG,CACnB,UAAmC,EACnC,WAAoC,EAC7B,EAAE,CACT,CAAC,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC,gBAAgB;IAChD,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC,YAAY;IAC/C,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC,WAAW;IAC9C,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC,cAAc,CAAC;IACtD,UAAU,CAAC,IAAI,KAAK,WAAW,CAAC;AAEpC,MAAM,gBAAgB,GAAG,CACrB,UAAmC,EACnC,WAAoC,EAC7B,EAAE,CACT,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU;IAC7C,UAAU,CAAC,IAAI,KAAK,WAAW,CAAC;AAEpC,MAAM,kBAAkB,GAAG,CACvB,UAAmC,EACnC,WAAoC,EAC7B,EAAE,CACT,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC,eAAe;IAClD,UAAU,CAAC,QAAQ,KAAK,GAAG;IAC3B,UAAU,CAAC,QAAQ,KAAK,WAAW,CAAC;AAExC,MAAM,qBAAqB,GAAG,CAC1B,UAAmC,EACnC,WAAoC,EAC7B,EAAE,CACT,kBAAkB,CAAC,UAAU,EAAE,WAAW,CAAC;IAC3C,0BAA0B,CAAC,UAAU,EAAE,WAAW,CAAC;IACnD,iBAAiB,CAAC,UAAU,EAAE,WAAW,CAAC;IAC1C,cAAc,CAAC,UAAU,EAAE,WAAW,CAAC;IACvC,gBAAgB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AAE9C;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,CAChD,IAAmC,EAC5B,EAAE;IACT,IAAI,WAAW,GAA4B,IAAI,CAAC;IAEhD,IAAI,UAAU,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAE5C,OACI,SAAS,CAAC,UAAU,CAAC;QACrB,8BAA8B,CAAC,UAAU,EAAE,WAAW,CAAC,EACzD,CAAC;QACC,WAAW,GAAG,UAAU,CAAC;QACzB,UAAU,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,SAAS,CAAC,UAAU,CAAC;QACxB,CAAC,CAAC,CAAC,qBAAqB,CAAC,UAAU,EAAE,WAAW,CAAC;QACjD,CAAC,CAAC,IAAI,CAAC;AACf,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACtC,IAAuC,EAChC,EAAE,CAAC,oCAAoC,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -1,17 +1,19 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* Predicate helpers for narrowing `TSTypeReference` nodes by identifier name.
|
|
4
|
+
*/
|
|
5
|
+
import { type TSESTree } from "@typescript-eslint/utils";
|
|
2
6
|
/**
|
|
3
7
|
* Checks whether a type node is an identifier-based type reference with a
|
|
4
8
|
* specific symbol name.
|
|
5
9
|
*
|
|
6
10
|
* @param node - Type node candidate.
|
|
7
|
-
* @param
|
|
11
|
+
* @param expectedIdentifierName - Expected referenced identifier name.
|
|
8
12
|
*
|
|
9
13
|
* @returns `true` when the node is `TSTypeReference` and the referenced
|
|
10
14
|
* `typeName` identifier matches exactly.
|
|
11
15
|
*/
|
|
12
|
-
export declare const isIdentifierTypeReference: (node: Readonly<TSESTree.TypeNode>,
|
|
13
|
-
typeName: TSESTree.Identifier;
|
|
14
|
-
};
|
|
16
|
+
export declare const isIdentifierTypeReference: (node: Readonly<TSESTree.TypeNode>, expectedIdentifierName: string) => node is TSESTree.TSTypeReference;
|
|
15
17
|
/**
|
|
16
18
|
* Unwrap transparent parenthesized type nodes.
|
|
17
19
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-reference-node.d.ts","sourceRoot":"","sources":["../../src/_internal/type-reference-node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"type-reference-node.d.ts","sourceRoot":"","sources":["../../src/_internal/type-reference-node.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AASzE;;;;;;;;;GASG;AACH,eAAO,MAAM,yBAAyB,GAClC,MAAM,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EACjC,wBAAwB,MAAM,KAC/B,IAAI,IAAI,QAAQ,CAAC,eAG6B,CAAC;AAElD;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,GACpC,MAAM,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAClC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAa5B,CAAC"}
|
|
@@ -12,14 +12,14 @@ const isTypeNodeLike = (value) => typeof value === "object" &&
|
|
|
12
12
|
* specific symbol name.
|
|
13
13
|
*
|
|
14
14
|
* @param node - Type node candidate.
|
|
15
|
-
* @param
|
|
15
|
+
* @param expectedIdentifierName - Expected referenced identifier name.
|
|
16
16
|
*
|
|
17
17
|
* @returns `true` when the node is `TSTypeReference` and the referenced
|
|
18
18
|
* `typeName` identifier matches exactly.
|
|
19
19
|
*/
|
|
20
|
-
export const isIdentifierTypeReference = (node,
|
|
20
|
+
export const isIdentifierTypeReference = (node, expectedIdentifierName) => node.type === AST_NODE_TYPES.TSTypeReference &&
|
|
21
21
|
node.typeName.type === AST_NODE_TYPES.Identifier &&
|
|
22
|
-
node.typeName.name ===
|
|
22
|
+
node.typeName.name === expectedIdentifierName;
|
|
23
23
|
/**
|
|
24
24
|
* Unwrap transparent parenthesized type nodes.
|
|
25
25
|
*
|
|
@@ -33,9 +33,9 @@ export const unwrapParenthesizedTypeNode = (node) => {
|
|
|
33
33
|
if (nodeType !== TS_PARENTHESIZED_TYPE) {
|
|
34
34
|
return node;
|
|
35
35
|
}
|
|
36
|
-
const
|
|
37
|
-
return isTypeNodeLike(
|
|
38
|
-
? unwrapParenthesizedTypeNode(
|
|
36
|
+
const annotation = Reflect.get(nodeObject, "typeAnnotation");
|
|
37
|
+
return isTypeNodeLike(annotation)
|
|
38
|
+
? unwrapParenthesizedTypeNode(annotation)
|
|
39
39
|
: node;
|
|
40
40
|
};
|
|
41
41
|
//# sourceMappingURL=type-reference-node.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-reference-node.js","sourceRoot":"","sources":["../../src/_internal/type-reference-node.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"type-reference-node.js","sourceRoot":"","sources":["../../src/_internal/type-reference-node.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,cAAc,EAAiB,MAAM,0BAA0B,CAAC;AAEzE,MAAM,qBAAqB,GAAG,qBAAqB,CAAC;AAEpD,MAAM,cAAc,GAAG,CAAC,KAAc,EAAwC,EAAE,CAC5E,OAAO,KAAK,KAAK,QAAQ;IACzB,KAAK,KAAK,IAAI;IACd,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,QAAQ,CAAC;AAEnD;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACrC,IAAiC,EACjC,sBAA8B,EACE,EAAE,CAClC,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,eAAe;IAC5C,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU;IAChD,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,sBAAsB,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACvC,IAAiC,EACN,EAAE;IAC7B,MAAM,UAAU,GAAW,IAAI,CAAC;IAChC,MAAM,QAAQ,GAAY,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAE1D,IAAI,QAAQ,KAAK,qBAAqB,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,UAAU,GAAY,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;IAEtE,OAAO,cAAc,CAAC,UAAU,CAAC;QAC7B,CAAC,CAAC,2BAA2B,CAAC,UAAU,CAAC;QACzC,CAAC,CAAC,IAAI,CAAC;AACf,CAAC,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { UnknownArray } from "type-fest";
|
|
1
2
|
/**
|
|
2
3
|
* @packageDocumentation
|
|
3
4
|
* Internal shared utilities used by eslint-plugin-runtime-cleanup rule modules
|
|
@@ -30,7 +31,7 @@ interface RuntimeCleanupRuleDocs {
|
|
|
30
31
|
runtimeCleanupConfigs?: readonly RuntimeCleanupConfigReference[] | RuntimeCleanupConfigReference;
|
|
31
32
|
}
|
|
32
33
|
/** Shared typed-rule context contract used by helper utilities. */
|
|
33
|
-
type TypedRuleContext = Readonly<TSESLint.RuleContext<string,
|
|
34
|
+
type TypedRuleContext = Readonly<TSESLint.RuleContext<string, Readonly<UnknownArray>>>;
|
|
34
35
|
export type { TypedRuleContext };
|
|
35
36
|
/**
|
|
36
37
|
* Rule-creator wrapper used by plugin rules.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typed-rule.d.ts","sourceRoot":"","sources":["../../src/_internal/typed-rule.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,EAAE,WAAW,EAAE,KAAK,QAAQ,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"typed-rule.d.ts","sourceRoot":"","sources":["../../src/_internal/typed-rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C;;;;GAIG;AACH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,EAAE,WAAW,EAAE,KAAK,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGtE,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,wCAAwC,CAAC;AAO5F;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC;IACxB,cAAc,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,iBAAiB,CAAC,CAAC;CACpE;AAED,KAAK,yBAAyB,GAAG,UAAU,CACvC,OAAO,WAAW,CAAC,WAAW,CAAC,sBAAsB,CAAC,CACzD,CAAC;AAEF;;;;;;;GAOG;AACH,UAAU,sBAAsB;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qBAAqB,CAAC,EAChB,SAAS,6BAA6B,EAAE,GACxC,6BAA6B,CAAC;CACvC;AAED,mEAAmE;AACnE,KAAK,gBAAgB,GAAG,QAAQ,CAC5B,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CACvD,CAAC;AAEF,YAAY,EAAE,gBAAgB,EAAE,CAAC;AAEjC;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,eAAe,EAAE,yBAyD7B,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,GAC7B,SAAS,gBAAgB,KAC1B,iBAcF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAI,SAAS,gBAAgB,KAAG,OAS3D,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,+BAA+B,GACxC,SAAS,gBAAgB,KAC1B,iBAAiB,GAAG,SACiD,CAAC;AAEzE;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,GACpC,SAAS,QAAQ,CAAC;IACd,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC;IAClB,SAAS,EAAE,IAAI,GAAG,EAAE,CAAC,SAAS,GAAG,SAAS,CAAC;CAC9C,CAAC,KACH,EAAE,CAAC,IAAI,GAAG,SASZ,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ESLintUtils } from "@typescript-eslint/utils";
|
|
2
|
+
import { isDefined } from "ts-extras";
|
|
2
3
|
import { registerProgramSettingsForContext } from "./plugin-settings.js";
|
|
3
4
|
import { getRuleCatalogEntryForRuleNameOrNull } from "./rule-catalog.js";
|
|
4
5
|
import { createRuleDocsUrl } from "./rule-docs-url.js";
|
|
@@ -21,7 +22,7 @@ export const createTypedRule = (ruleDefinition) => {
|
|
|
21
22
|
const catalogEntry = getRuleCatalogEntryForRuleNameOrNull(ruleDefinition.name);
|
|
22
23
|
const createdRule = ESLintUtils.RuleCreator.withoutDocs(ruleDefinition);
|
|
23
24
|
const ruleDocs = createdRule.meta.docs;
|
|
24
|
-
if (ruleDocs
|
|
25
|
+
if (!isDefined(ruleDocs)) {
|
|
25
26
|
throw new TypeError(`Rule '${ruleDefinition.name}' must declare meta.docs.`);
|
|
26
27
|
}
|
|
27
28
|
const canonicalDocsUrl = createRuleDocsUrl(ruleDefinition.name);
|
|
@@ -51,9 +52,9 @@ export const createTypedRule = (ruleDefinition) => {
|
|
|
51
52
|
},
|
|
52
53
|
meta: {
|
|
53
54
|
...createdRule.meta,
|
|
54
|
-
...(metaDefaultOptions
|
|
55
|
-
? {}
|
|
56
|
-
: {
|
|
55
|
+
...(isDefined(metaDefaultOptions)
|
|
56
|
+
? { defaultOptions: metaDefaultOptions }
|
|
57
|
+
: {}),
|
|
57
58
|
docs: docsWithCatalog,
|
|
58
59
|
},
|
|
59
60
|
name: ruleDefinition.name,
|
|
@@ -113,7 +114,7 @@ export const getTypedRuleServicesOrUndefined = (context) => hasTypeServices(cont
|
|
|
113
114
|
export const getSignatureParameterTypeAt = (options) => {
|
|
114
115
|
const { checker, index, location, signature } = options;
|
|
115
116
|
const symbol = signature?.parameters[index];
|
|
116
|
-
if (symbol
|
|
117
|
+
if (!isDefined(symbol)) {
|
|
117
118
|
return undefined;
|
|
118
119
|
}
|
|
119
120
|
return checker.getTypeOfSymbolAtLocation(symbol, location);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typed-rule.js","sourceRoot":"","sources":["../../src/_internal/typed-rule.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"typed-rule.js","sourceRoot":"","sources":["../../src/_internal/typed-rule.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* Shared safety checks for value-expression autofixes.
|
|
4
|
+
*/
|
|
5
|
+
import { type TSESTree } from "@typescript-eslint/utils";
|
|
2
6
|
/**
|
|
3
7
|
* Check whether a parent node is a transparent expression wrapper for `child`.
|
|
4
8
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"value-rewrite-autofix-safety.d.ts","sourceRoot":"","sources":["../../src/_internal/value-rewrite-autofix-safety.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"value-rewrite-autofix-safety.d.ts","sourceRoot":"","sources":["../../src/_internal/value-rewrite-autofix-safety.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAMzE;;GAEG;AACH,eAAO,MAAM,8BAA8B,GACvC,QAAQ,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAC/B,OAAO,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAC/B,OAsBF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,GAClC,MAAM,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,KACpC,OAGmB,CAAC;AAEvB;;GAEG;AACH,eAAO,MAAM,oCAAoC,GAC7C,MAAM,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,KACpC,OAmBF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,2BAA2B,GACpC,MAAM,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAC1C,OAUF,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,+BAA+B,GACxC,MAAM,QAAQ,CAAC,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAC,iBAAiB,CAAC,KACjE,IAAI,IAAI,QAAQ,CAAC,UAmCnB,CAAC"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Shared safety checks for value-expression autofixes.
|
|
4
4
|
*/
|
|
5
5
|
import { AST_NODE_TYPES } from "@typescript-eslint/utils";
|
|
6
|
+
import { isDefined } from "ts-extras";
|
|
6
7
|
import { getParentNode } from "./ast-node.js";
|
|
7
8
|
/**
|
|
8
9
|
* Check whether a parent node is a transparent expression wrapper for `child`.
|
|
@@ -36,25 +37,16 @@ export const isOptionalChainExpression = (node) => node.type === AST_NODE_TYPES.
|
|
|
36
37
|
*/
|
|
37
38
|
export const isDirectReturnLikeExpressionPosition = (node) => {
|
|
38
39
|
let currentNode = node;
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
if (isTransparentExpressionWrapper(parentNode, currentNode)) {
|
|
45
|
-
currentNode = parentNode;
|
|
46
|
-
continue;
|
|
47
|
-
}
|
|
48
|
-
if (parentNode.type === AST_NODE_TYPES.ReturnStatement &&
|
|
49
|
-
parentNode.argument === currentNode) {
|
|
50
|
-
return true;
|
|
51
|
-
}
|
|
52
|
-
if (parentNode.type === AST_NODE_TYPES.ArrowFunctionExpression &&
|
|
53
|
-
parentNode.body === currentNode) {
|
|
54
|
-
return true;
|
|
55
|
-
}
|
|
56
|
-
return false;
|
|
40
|
+
let parentNode = getParentNode(currentNode);
|
|
41
|
+
while (isDefined(parentNode) &&
|
|
42
|
+
isTransparentExpressionWrapper(parentNode, currentNode)) {
|
|
43
|
+
currentNode = parentNode;
|
|
44
|
+
parentNode = getParentNode(currentNode);
|
|
57
45
|
}
|
|
46
|
+
return ((parentNode?.type === AST_NODE_TYPES.ReturnStatement &&
|
|
47
|
+
parentNode.argument === currentNode) ||
|
|
48
|
+
(parentNode?.type === AST_NODE_TYPES.ArrowFunctionExpression &&
|
|
49
|
+
parentNode.body === currentNode));
|
|
58
50
|
};
|
|
59
51
|
/**
|
|
60
52
|
* Guard array index-to-helper rewrites known to be type-sensitive.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"value-rewrite-autofix-safety.js","sourceRoot":"","sources":["../../src/_internal/value-rewrite-autofix-safety.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"value-rewrite-autofix-safety.js","sourceRoot":"","sources":["../../src/_internal/value-rewrite-autofix-safety.ts"],"names":[],"mappings":"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"}
|