eslint-plugin-runtime-cleanup 1.2.9 → 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/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 +2 -1
- 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 +565 -656
- 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/package.json +7 -4
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isDefined, objectHasOwn } from "ts-extras";
|
|
1
2
|
import { getProgramNode } from "./ast-node.js";
|
|
2
3
|
/** Top-level `settings` key for this plugin. */
|
|
3
4
|
const RUNTIME_CLEANUP_SETTINGS_KEY = "runtime-cleanup";
|
|
@@ -37,7 +38,7 @@ const getRuntimeCleanupSettings = (settings) => {
|
|
|
37
38
|
*
|
|
38
39
|
* @returns `true` only when the key exists and equals literal `true`.
|
|
39
40
|
*/
|
|
40
|
-
const readBooleanFlag = (object, key) =>
|
|
41
|
+
const readBooleanFlag = (object, key) => objectHasOwn(object, key) && object[key] === true;
|
|
41
42
|
/**
|
|
42
43
|
* Reads the global autofix disable flag from plugin settings.
|
|
43
44
|
*
|
|
@@ -65,7 +66,7 @@ export const registerProgramSettingsForContext = (context) => {
|
|
|
65
66
|
disableAllAutofixes: readDisableAllAutofixesFromSettings(context.settings),
|
|
66
67
|
});
|
|
67
68
|
const existingProgramSettings = settingsByProgram.get(programNode);
|
|
68
|
-
if (existingProgramSettings
|
|
69
|
+
if (isDefined(existingProgramSettings)) {
|
|
69
70
|
return existingProgramSettings;
|
|
70
71
|
}
|
|
71
72
|
settingsByProgram.set(programNode, parsedSettings);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-settings.js","sourceRoot":"","sources":["../../src/_internal/plugin-settings.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plugin-settings.js","sourceRoot":"","sources":["../../src/_internal/plugin-settings.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEpD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,gDAAgD;AAChD,MAAM,4BAA4B,GAAG,iBAAiB,CAAC;AAEvD,sDAAsD;AACtD,MAAM,yBAAyB,GAAG,qBAAqB,CAAC;AASxD;;GAEG;AACH,MAAM,iBAAiB,GAAG,IAAI,OAAO,EAAqC,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,QAAQ,GAAG,CACb,KAAc,EACkB,EAAE,CAClC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,yBAAyB,GAAG,CAC9B,QAAiB,EACa,EAAE;IAChC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,cAAc,GAAG,QAAQ,CAAC,4BAA4B,CAAC,CAAC;IAE9D,OAAO,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5D,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,eAAe,GAAG,CACpB,MAA+B,EAC/B,GAAW,EACJ,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,mCAAmC,GAAG,CAAC,QAAiB,EAAW,EAAE;IACvE,MAAM,cAAc,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IAC3D,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,eAAe,CAAC,cAAc,EAAE,yBAAyB,CAAC,CAAC;AACtE,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAC7C,OAAuE,EAC9C,EAAE;IAC3B,MAAM,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;IAE3C,MAAM,cAAc,GAA8B,MAAM,CAAC,MAAM,CAAC;QAC5D,mBAAmB,EAAE,mCAAmC,CACpD,OAAO,CAAC,QAAQ,CACnB;KACJ,CAAC,CAAC;IAEH,MAAM,uBAAuB,GAAG,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACnE,IAAI,SAAS,CAAC,uBAAuB,CAAC,EAAE,CAAC;QACrC,OAAO,uBAAuB,CAAC;IACnC,CAAC;IAED,iBAAiB,CAAC,GAAG,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAEnD,OAAO,cAAc,CAAC;AAC1B,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACvC,IAA6B,EACtB,EAAE;IACT,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAEpD,OAAO,QAAQ,EAAE,mBAAmB,KAAK,IAAI,CAAC;AAClD,CAAC,CAAC"}
|
|
@@ -3,22 +3,23 @@
|
|
|
3
3
|
* Explicit report-adapter utilities for rule-level autofix policy handling.
|
|
4
4
|
*/
|
|
5
5
|
import type { TSESLint } from "@typescript-eslint/utils";
|
|
6
|
+
import type { UnknownArray } from "type-fest";
|
|
6
7
|
/**
|
|
7
8
|
* Report callback type for a given message/options pair.
|
|
8
9
|
*/
|
|
9
|
-
type ReportCallback<MessageIds extends string, Options extends
|
|
10
|
+
type ReportCallback<MessageIds extends string, Options extends Readonly<UnknownArray>> = TSESLint.RuleContext<MessageIds, Options>["report"];
|
|
10
11
|
/**
|
|
11
12
|
* Canonical report descriptor type for a given message/options pair.
|
|
12
13
|
*/
|
|
13
|
-
type ReportDescriptor<MessageIds extends string, Options extends
|
|
14
|
+
type ReportDescriptor<MessageIds extends string, Options extends Readonly<UnknownArray>> = Parameters<ReportCallback<MessageIds, Options>>[0];
|
|
14
15
|
/**
|
|
15
16
|
* Remove top-level autofix from a report descriptor while preserving all other
|
|
16
17
|
* fields (including suggestions).
|
|
17
18
|
*/
|
|
18
|
-
export declare const omitAutofixFromReportDescriptor: <MessageIds extends string, Options extends
|
|
19
|
+
export declare const omitAutofixFromReportDescriptor: <MessageIds extends string, Options extends Readonly<UnknownArray>>(descriptor: Readonly<ReportDescriptor<MessageIds, Options>>) => ReportDescriptor<MessageIds, Options>;
|
|
19
20
|
/**
|
|
20
21
|
* Build a report callback that enforces no-top-level-autofix semantics.
|
|
21
22
|
*/
|
|
22
|
-
export declare const createReportWithoutAutofixes: <MessageIds extends string, Options extends
|
|
23
|
+
export declare const createReportWithoutAutofixes: <MessageIds extends string, Options extends Readonly<UnknownArray>>(report: ReportCallback<MessageIds, Options>) => ReportCallback<MessageIds, Options>;
|
|
23
24
|
export {};
|
|
24
25
|
//# sourceMappingURL=report-adapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report-adapter.d.ts","sourceRoot":"","sources":["../../src/_internal/report-adapter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"report-adapter.d.ts","sourceRoot":"","sources":["../../src/_internal/report-adapter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAI9C;;GAEG;AACH,KAAK,cAAc,CACf,UAAU,SAAS,MAAM,EACzB,OAAO,SAAS,QAAQ,CAAC,YAAY,CAAC,IACtC,QAAQ,CAAC,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;AAExD;;GAEG;AACH,KAAK,gBAAgB,CACjB,UAAU,SAAS,MAAM,EACzB,OAAO,SAAS,QAAQ,CAAC,YAAY,CAAC,IACtC,UAAU,CAAC,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAwBvD;;;GAGG;AACH,eAAO,MAAM,+BAA+B,GACxC,UAAU,SAAS,MAAM,EACzB,OAAO,SAAS,QAAQ,CAAC,YAAY,CAAC,EAEtC,YAAY,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,KAC5D,gBAAgB,CAAC,UAAU,EAAE,OAAO,CAYtC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,4BAA4B,GACpC,UAAU,SAAS,MAAM,EAAE,OAAO,SAAS,QAAQ,CAAC,YAAY,CAAC,EAC9D,QAAQ,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,KAC5C,cAAc,CAAC,UAAU,EAAE,OAAO,CAGpC,CAAC"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
+
import { isDefined, objectHasOwn } from "ts-extras";
|
|
1
2
|
/**
|
|
2
3
|
* Determine whether a report descriptor has a callable own data-property `fix`
|
|
3
4
|
* value that can be safely omitted.
|
|
4
5
|
*/
|
|
5
6
|
const hasCallableOwnFixDataProperty = (descriptor) => {
|
|
6
7
|
const ownFixDescriptor = Object.getOwnPropertyDescriptor(descriptor, "fix");
|
|
7
|
-
if (ownFixDescriptor
|
|
8
|
+
if (!isDefined(ownFixDescriptor)) {
|
|
8
9
|
return false;
|
|
9
10
|
}
|
|
10
|
-
if (!
|
|
11
|
+
if (!objectHasOwn(ownFixDescriptor, "value")) {
|
|
11
12
|
return false;
|
|
12
13
|
}
|
|
13
14
|
return typeof ownFixDescriptor.value === "function";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report-adapter.js","sourceRoot":"","sources":["../../src/_internal/report-adapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"report-adapter.js","sourceRoot":"","sources":["../../src/_internal/report-adapter.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAkBpD;;;GAGG;AACH,MAAM,6BAA6B,GAAG,CAIlC,UAA2D,EACpD,EAAE;IACT,MAAM,gBAAgB,GAAG,MAAM,CAAC,wBAAwB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC5E,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,EAAE,CAAC;QAC3C,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,OAAO,gBAAgB,CAAC,KAAK,KAAK,UAAU,CAAC;AACxD,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAI3C,UAA2D,EACtB,EAAE;IACvC,IAAI,CAAC,6BAA6B,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7C,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,MAAM,oBAAoB,GAAG;QACzB,GAAG,UAAU;KAChB,CAAC;IAEF,OAAO,oBAAoB,CAAC,GAAG,CAAC;IAEhC,OAAO,oBAAoB,CAAC;AAChC,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GACrC,CACI,MAA2C,EACR,EAAE,CACzC,CAAC,UAAU,EAAE,EAAE;IACX,MAAM,CAAC,+BAA+B,CAAC,UAAU,CAAC,CAAC,CAAC;AACxD,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-catalog.d.ts","sourceRoot":"","sources":["../../src/_internal/rule-catalog.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"rule-catalog.d.ts","sourceRoot":"","sources":["../../src/_internal/rule-catalog.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;GAEG;AACH,MAAM,MAAM,8BAA8B,GAAG,QAAQ,CAAC;IAClD,MAAM,EAAE,2BAA2B,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,2BAA2B,GAAG,IAAI,MAAM,EAAE,CAAC;AAqCvD;;GAEG;AACH,eAAO,MAAM,gCAAgC,EAAE,SAAS,8BAA8B,EAShF,CAAC;AAEP;;GAEG;AACH,eAAO,MAAM,mCAAmC,EAAE,QAAQ,CACtD,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,8BAA8B,CAAC,CAAC,CAG1D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oCAAoC,GAC7C,UAAU,MAAM,KACjB,IAAI,GAAG,8BAC+C,CAAC;AAE1D;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,GACvC,UAAU,MAAM,KACjB,8BAUF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iCAAiC,EAAE,WAAW,CACvD,2BAA2B,EAC3B,8BAA8B,CAGjC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,4BAA4B,GACrC,QAAQ,2BAA2B,KACpC,8BAA8B,GAAG,SACa,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,4BAA4B,QAAO,OAsB/C,CAAC"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* @packageDocumentation
|
|
3
3
|
* Stable catalog IDs for all plugin rules.
|
|
4
4
|
*/
|
|
5
|
+
import { objectFromEntries, setHas } from "ts-extras";
|
|
5
6
|
/**
|
|
6
7
|
* Stable global ordering used for rule catalog IDs.
|
|
7
8
|
*
|
|
@@ -48,7 +49,7 @@ export const runtimeCleanupRuleCatalogEntries = orderedRuleNames.map((ruleName,
|
|
|
48
49
|
/**
|
|
49
50
|
* Fast lookup map for rule catalog metadata by rule name.
|
|
50
51
|
*/
|
|
51
|
-
export const runtimeCleanupRuleCatalogByRuleName =
|
|
52
|
+
export const runtimeCleanupRuleCatalogByRuleName = objectFromEntries(runtimeCleanupRuleCatalogEntries.map((entry) => [entry.ruleName, entry]));
|
|
52
53
|
/**
|
|
53
54
|
* Resolve stable catalog metadata for a rule name when available.
|
|
54
55
|
*/
|
|
@@ -80,7 +81,7 @@ export const validateRuleCatalogIntegrity = () => {
|
|
|
80
81
|
const entries = runtimeCleanupRuleCatalogEntries;
|
|
81
82
|
const seenRuleIds = new Set();
|
|
82
83
|
for (const [index, entry] of entries.entries()) {
|
|
83
|
-
if (seenRuleIds
|
|
84
|
+
if (setHas(seenRuleIds, entry.ruleId)) {
|
|
84
85
|
return false;
|
|
85
86
|
}
|
|
86
87
|
seenRuleIds.add(entry.ruleId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-catalog.js","sourceRoot":"","sources":["../../src/_internal/rule-catalog.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"rule-catalog.js","sourceRoot":"","sources":["../../src/_internal/rule-catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Derivation helpers for canonical rule docs metadata.
|
|
4
4
|
*/
|
|
5
5
|
import type { TSESLint } from "@typescript-eslint/utils";
|
|
6
|
+
import type { UnknownArray } from "type-fest";
|
|
6
7
|
import { type RuntimeCleanupConfigName, type RuntimeCleanupConfigReference } from "./runtime-cleanup-config-references.js";
|
|
7
8
|
/** Normalized docs metadata derived for each rule. */
|
|
8
9
|
export type RuleDocsMetadata = Readonly<{
|
|
@@ -18,7 +19,7 @@ export type RuleDocsMetadata = Readonly<{
|
|
|
18
19
|
/** Rule-name keyed metadata map derived from static docs contracts. */
|
|
19
20
|
export type RuleDocsMetadataByName = Readonly<Record<string, RuleDocsMetadata>>;
|
|
20
21
|
/** Rule-map contract accepted by docs metadata derivation helpers. */
|
|
21
|
-
type RuleMap = Readonly<Record<string, TSESLint.RuleModule<string,
|
|
22
|
+
type RuleMap = Readonly<Record<string, TSESLint.RuleModule<string, Readonly<UnknownArray>>>>;
|
|
22
23
|
/**
|
|
23
24
|
* Derive normalized docs metadata for all plugin rules.
|
|
24
25
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-docs-metadata.d.ts","sourceRoot":"","sources":["../../src/_internal/rule-docs-metadata.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"rule-docs-metadata.d.ts","sourceRoot":"","sources":["../../src/_internal/rule-docs-metadata.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,WAAW,CAAC;AAW9D,OAAO,EAEH,KAAK,wBAAwB,EAC7B,KAAK,6BAA6B,EAErC,MAAM,wCAAwC,CAAC;AAEhD,sDAAsD;AACtD,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,yBAAyB,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAC/D,8BAA8B,EAAE,SAAS,6BAA6B,EAAE,CAAC;IACzE,GAAG,EAAE,MAAM,CAAC;CACf,CAAC,CAAC;AAEH,uEAAuE;AACvE,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CACzC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CACnC,CAAC;AAEF,sEAAsE;AACtE,KAAK,OAAO,GAAG,QAAQ,CACnB,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CACtE,CAAC;AAuOF;;GAEG;AACH,eAAO,MAAM,4BAA4B,GACrC,OAAO,OAAO,KACf,sBA8BF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,4BAA4B,GACrC,wBAAwB,sBAAsB,KAC/C,WAAW,CAAC,MAAM,CAYpB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oCAAoC,GAC7C,wBAAwB,sBAAsB,KAC/C,QAAQ,CACP,MAAM,CAAC,MAAM,EAAE,SAAS,wBAAwB,EAAE,CAAC,CActD,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { arrayIncludes, isDefined, isEmpty, isInteger, objectEntries, } from "ts-extras";
|
|
1
2
|
import { createRuleDocsUrl } from "./rule-docs-url.js";
|
|
2
3
|
import { isRuntimeCleanupConfigReference, runtimeCleanupConfigReferenceToName, } from "./runtime-cleanup-config-references.js";
|
|
3
4
|
const RULE_ID_PREFIX = "R";
|
|
@@ -14,7 +15,7 @@ const isRuleIdInCanonicalFormat = (value) => {
|
|
|
14
15
|
}
|
|
15
16
|
for (const character of value.slice(RULE_ID_DIGIT_START_INDEX)) {
|
|
16
17
|
const codePoint = character.codePointAt(0);
|
|
17
|
-
if (codePoint
|
|
18
|
+
if (!isDefined(codePoint)) {
|
|
18
19
|
return false;
|
|
19
20
|
}
|
|
20
21
|
if (codePoint < ASCII_ZERO_CODE_POINT ||
|
|
@@ -41,16 +42,27 @@ const normalizeRuntimeCleanupConfigReferences = (ruleName, runtimeCleanupConfigs
|
|
|
41
42
|
if (!isRuntimeCleanupConfigReference(candidate)) {
|
|
42
43
|
throw new TypeError(`Rule '${ruleName}' has invalid docs.runtimeCleanupConfigs reference '${String(candidate)}'.`);
|
|
43
44
|
}
|
|
44
|
-
if (references
|
|
45
|
-
|
|
45
|
+
if (!arrayIncludes(references, candidate)) {
|
|
46
|
+
references.push(candidate);
|
|
46
47
|
}
|
|
47
|
-
references.push(candidate);
|
|
48
48
|
}
|
|
49
|
-
if (references
|
|
49
|
+
if (isEmpty(references)) {
|
|
50
50
|
throw new TypeError(`Rule '${ruleName}' must declare at least one docs.runtimeCleanupConfigs reference.`);
|
|
51
51
|
}
|
|
52
52
|
return references;
|
|
53
53
|
};
|
|
54
|
+
const getRequiredNonEmptyString = (ruleName, value, propertyName) => {
|
|
55
|
+
if (typeof value === "string" && value.trim().length > 0) {
|
|
56
|
+
return value;
|
|
57
|
+
}
|
|
58
|
+
throw new TypeError(`Rule '${ruleName}' must declare a non-empty docs.${propertyName}.`);
|
|
59
|
+
};
|
|
60
|
+
const getRequiredBoolean = (ruleName, value, propertyName) => {
|
|
61
|
+
if (typeof value === "boolean") {
|
|
62
|
+
return value;
|
|
63
|
+
}
|
|
64
|
+
throw new TypeError(`Rule '${ruleName}' must declare boolean docs.${propertyName}.`);
|
|
65
|
+
};
|
|
54
66
|
/**
|
|
55
67
|
* Validate and narrow dynamic `meta.docs` values to the plugin docs contract.
|
|
56
68
|
*/
|
|
@@ -65,29 +77,21 @@ const getRuleDocsContract = (ruleName, docs) => {
|
|
|
65
77
|
const ruleNumber = docs["ruleNumber"];
|
|
66
78
|
const runtimeCleanupConfigs = docs["runtimeCleanupConfigs"];
|
|
67
79
|
const url = docs["url"];
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
71
|
-
if (typeof url !== "string" || url.trim().length === 0) {
|
|
72
|
-
throw new TypeError(`Rule '${ruleName}' must declare a non-empty docs.url.`);
|
|
73
|
-
}
|
|
80
|
+
const checkedDescription = getRequiredNonEmptyString(ruleName, description, "description");
|
|
81
|
+
const checkedUrl = getRequiredNonEmptyString(ruleName, url, "url");
|
|
74
82
|
const expectedRuleDocsUrl = createRuleDocsUrl(ruleName);
|
|
75
|
-
if (
|
|
83
|
+
if (checkedUrl !== expectedRuleDocsUrl) {
|
|
76
84
|
throw new TypeError(`Rule '${ruleName}' must declare docs.url as '${expectedRuleDocsUrl}'.`);
|
|
77
85
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
}
|
|
81
|
-
if (typeof requiresTypeChecking !== "boolean") {
|
|
82
|
-
throw new TypeError(`Rule '${ruleName}' must declare boolean docs.requiresTypeChecking.`);
|
|
83
|
-
}
|
|
86
|
+
const checkedRecommended = getRequiredBoolean(ruleName, recommended, "recommended");
|
|
87
|
+
const checkedRequiresTypeChecking = getRequiredBoolean(ruleName, requiresTypeChecking, "requiresTypeChecking");
|
|
84
88
|
if (typeof ruleId !== "string" ||
|
|
85
89
|
!isRuleIdInCanonicalFormat(ruleId) ||
|
|
86
90
|
ruleId.trim().length === 0) {
|
|
87
91
|
throw new TypeError(`Rule '${ruleName}' must declare docs.ruleId using the 'R###' format.`);
|
|
88
92
|
}
|
|
89
93
|
if (typeof ruleNumber !== "number" ||
|
|
90
|
-
!
|
|
94
|
+
!isInteger(ruleNumber) ||
|
|
91
95
|
ruleNumber < 1) {
|
|
92
96
|
throw new TypeError(`Rule '${ruleName}' must declare positive integer docs.ruleNumber.`);
|
|
93
97
|
}
|
|
@@ -96,13 +100,13 @@ const getRuleDocsContract = (ruleName, docs) => {
|
|
|
96
100
|
throw new TypeError(`Rule '${ruleName}' has invalid docs.runtimeCleanupConfigs reference '${runtimeCleanupConfigs}'.`);
|
|
97
101
|
}
|
|
98
102
|
return {
|
|
99
|
-
description,
|
|
100
|
-
recommended,
|
|
101
|
-
requiresTypeChecking,
|
|
103
|
+
description: checkedDescription,
|
|
104
|
+
recommended: checkedRecommended,
|
|
105
|
+
requiresTypeChecking: checkedRequiresTypeChecking,
|
|
102
106
|
ruleId,
|
|
103
107
|
ruleNumber,
|
|
104
108
|
runtimeCleanupConfigs,
|
|
105
|
-
url,
|
|
109
|
+
url: checkedUrl,
|
|
106
110
|
};
|
|
107
111
|
}
|
|
108
112
|
if (!Array.isArray(runtimeCleanupConfigs)) {
|
|
@@ -115,13 +119,13 @@ const getRuleDocsContract = (ruleName, docs) => {
|
|
|
115
119
|
}
|
|
116
120
|
}
|
|
117
121
|
return {
|
|
118
|
-
description,
|
|
119
|
-
recommended,
|
|
120
|
-
requiresTypeChecking,
|
|
122
|
+
description: checkedDescription,
|
|
123
|
+
recommended: checkedRecommended,
|
|
124
|
+
requiresTypeChecking: checkedRequiresTypeChecking,
|
|
121
125
|
ruleId,
|
|
122
126
|
ruleNumber,
|
|
123
127
|
runtimeCleanupConfigs,
|
|
124
|
-
url,
|
|
128
|
+
url: checkedUrl,
|
|
125
129
|
};
|
|
126
130
|
};
|
|
127
131
|
/**
|
|
@@ -129,7 +133,7 @@ const getRuleDocsContract = (ruleName, docs) => {
|
|
|
129
133
|
*/
|
|
130
134
|
export const deriveRuleDocsMetadataByName = (rules) => {
|
|
131
135
|
const metadataByRuleName = {};
|
|
132
|
-
for (const [ruleName, ruleModule] of
|
|
136
|
+
for (const [ruleName, ruleModule] of objectEntries(rules)) {
|
|
133
137
|
const ruleDocs = getRuleDocsContract(ruleName, ruleModule.meta.docs);
|
|
134
138
|
const runtimeCleanupConfigReferences = normalizeRuntimeCleanupConfigReferences(ruleName, ruleDocs.runtimeCleanupConfigs);
|
|
135
139
|
const runtimeCleanupConfigNames = runtimeCleanupConfigReferences.map((reference) => runtimeCleanupConfigReferenceToName[reference]);
|
|
@@ -151,11 +155,10 @@ export const deriveRuleDocsMetadataByName = (rules) => {
|
|
|
151
155
|
*/
|
|
152
156
|
export const deriveTypeCheckedRuleNameSet = (ruleDocsMetadataByName) => {
|
|
153
157
|
const ruleNames = [];
|
|
154
|
-
for (const [ruleName, metadata] of
|
|
155
|
-
if (
|
|
156
|
-
|
|
158
|
+
for (const [ruleName, metadata] of objectEntries(ruleDocsMetadataByName)) {
|
|
159
|
+
if (metadata.requiresTypeChecking) {
|
|
160
|
+
ruleNames.push(ruleName);
|
|
157
161
|
}
|
|
158
|
-
ruleNames.push(ruleName);
|
|
159
162
|
}
|
|
160
163
|
return new Set(ruleNames);
|
|
161
164
|
};
|
|
@@ -164,7 +167,7 @@ export const deriveTypeCheckedRuleNameSet = (ruleDocsMetadataByName) => {
|
|
|
164
167
|
*/
|
|
165
168
|
export const deriveRulePresetMembershipByRuleName = (ruleDocsMetadataByName) => {
|
|
166
169
|
const membershipByRuleName = {};
|
|
167
|
-
for (const [ruleName, metadata] of
|
|
170
|
+
for (const [ruleName, metadata] of objectEntries(ruleDocsMetadataByName)) {
|
|
168
171
|
membershipByRuleName[ruleName] = metadata.runtimeCleanupConfigNames;
|
|
169
172
|
}
|
|
170
173
|
return membershipByRuleName;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-docs-metadata.js","sourceRoot":"","sources":["../../src/_internal/rule-docs-metadata.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rule-docs-metadata.js","sourceRoot":"","sources":["../../src/_internal/rule-docs-metadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
* Canonical runtime registry of all rule modules shipped by eslint-plugin-runtime-cleanup.
|
|
4
4
|
*/
|
|
5
5
|
import type { TSESLint } from "@typescript-eslint/utils";
|
|
6
|
+
import type { UnknownArray } from "type-fest";
|
|
6
7
|
/** Runtime rule module shape used by registry/preset builders. */
|
|
7
|
-
export type RuleWithDocs = TSESLint.RuleModule<string,
|
|
8
|
+
export type RuleWithDocs = TSESLint.RuleModule<string, Readonly<UnknownArray>>;
|
|
8
9
|
/** Exported typed view consumed by the plugin entrypoint. */
|
|
9
10
|
export declare const runtimeCleanupRules: Readonly<Record<string, RuleWithDocs>>;
|
|
10
11
|
export default runtimeCleanupRules;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules-registry.d.ts","sourceRoot":"","sources":["../../src/_internal/rules-registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"rules-registry.d.ts","sourceRoot":"","sources":["../../src/_internal/rules-registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAuB9C,kEAAkE;AAClE,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;AA4B/E,6DAA6D;AAC7D,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CACzC,CAAC;AAE/B,eAAe,mBAAmB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules-registry.js","sourceRoot":"","sources":["../../src/_internal/rules-registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"rules-registry.js","sourceRoot":"","sources":["../../src/_internal/rules-registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,0BAA0B,MAAM,2CAA2C,CAAC;AACnF,OAAO,uBAAuB,MAAM,wCAAwC,CAAC;AAC7E,OAAO,2BAA2B,MAAM,4CAA4C,CAAC;AACrF,OAAO,wBAAwB,MAAM,yCAAyC,CAAC;AAC/E,OAAO,0BAA0B,MAAM,2CAA2C,CAAC;AACnF,OAAO,sBAAsB,MAAM,uCAAuC,CAAC;AAC3E,OAAO,4BAA4B,MAAM,6CAA6C,CAAC;AACvF,OAAO,4BAA4B,MAAM,6CAA6C,CAAC;AACvF,OAAO,sBAAsB,MAAM,uCAAuC,CAAC;AAC3E,OAAO,yBAAyB,MAAM,0CAA0C,CAAC;AACjF,OAAO,4BAA4B,MAAM,6CAA6C,CAAC;AACvF,OAAO,oBAAoB,MAAM,qCAAqC,CAAC;AACvE,OAAO,mBAAmB,MAAM,mCAAmC,CAAC;AACpE,OAAO,iBAAiB,MAAM,iCAAiC,CAAC;AAChE,OAAO,iBAAiB,MAAM,iCAAiC,CAAC;AAChE,OAAO,gBAAgB,MAAM,gCAAgC,CAAC;AAC9D,OAAO,mBAAmB,MAAM,oCAAoC,CAAC;AACrE,OAAO,wBAAwB,MAAM,0CAA0C,CAAC;AAChF,OAAO,iBAAiB,MAAM,iCAAiC,CAAC;AAChE,OAAO,yBAAyB,MAAM,0CAA0C,CAAC;AAKjF;;GAEG;AACH,MAAM,0BAA0B,GAA2C;IACvE,+BAA+B,EAAE,0BAA0B;IAC3D,4BAA4B,EAAE,uBAAuB;IACrD,gCAAgC,EAAE,2BAA2B;IAC7D,6BAA6B,EAAE,wBAAwB;IACvD,+BAA+B,EAAE,0BAA0B;IAC3D,2BAA2B,EAAE,sBAAsB;IACnD,iCAAiC,EAAE,4BAA4B;IAC/D,iCAAiC,EAAE,4BAA4B;IAC/D,2BAA2B,EAAE,sBAAsB;IACnD,8BAA8B,EAAE,yBAAyB;IACzD,iCAAiC,EAAE,4BAA4B;IAC/D,yBAAyB,EAAE,oBAAoB;IAC/C,uBAAuB,EAAE,mBAAmB;IAC5C,qBAAqB,EAAE,iBAAiB;IACxC,qBAAqB,EAAE,iBAAiB;IACxC,oBAAoB,EAAE,gBAAgB;IACtC,wBAAwB,EAAE,mBAAmB;IAC7C,8BAA8B,EAAE,wBAAwB;IACxD,qBAAqB,EAAE,iBAAiB;IACxC,8BAA8B,EAAE,yBAAyB;CAC5D,CAAC;AAEF,6DAA6D;AAC7D,MAAM,CAAC,MAAM,mBAAmB,GAC5B,0BAA0B,CAAC;AAE/B,eAAe,mBAAmB,CAAC"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* @packageDocumentation
|
|
3
3
|
* Shared runtime-cleanup preset/config reference constants and type guards.
|
|
4
4
|
*/
|
|
5
|
+
import type { ArrayValues } from "type-fest";
|
|
5
6
|
/** Canonical flat-config preset keys exposed through `plugin.configs`. */
|
|
6
7
|
export declare const runtimeCleanupConfigNames: readonly ["all", "experimental", "minimal", "recommended", "recommended-type-checked", "strict"];
|
|
7
8
|
/** Metadata contract shared across preset wiring, docs, and README rendering. */
|
|
@@ -12,7 +13,7 @@ export type RuntimeCleanupConfigMetadata = Readonly<{
|
|
|
12
13
|
requiresTypeChecking: boolean;
|
|
13
14
|
}>;
|
|
14
15
|
/** Canonical flat-config preset key type exposed through `plugin.configs`. */
|
|
15
|
-
export type RuntimeCleanupConfigName =
|
|
16
|
+
export type RuntimeCleanupConfigName = ArrayValues<typeof runtimeCleanupConfigNames>;
|
|
16
17
|
/**
|
|
17
18
|
* Canonical metadata for every exported `runtime-cleanup` preset key.
|
|
18
19
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-cleanup-config-references.d.ts","sourceRoot":"","sources":["../../src/_internal/runtime-cleanup-config-references.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,0EAA0E;AAC1E,eAAO,MAAM,yBAAyB,kGAO5B,CAAC;AAEX,iFAAiF;AACjF,MAAM,MAAM,4BAA4B,GAAG,QAAQ,CAAC;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,mBAAmB,wBAAwB,EAAE,CAAC;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB,EAAE,OAAO,CAAC;CACjC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,MAAM,MAAM,wBAAwB,GAChC,CAAC,OAAO,yBAAyB,CAAC,CAAC
|
|
1
|
+
{"version":3,"file":"runtime-cleanup-config-references.d.ts","sourceRoot":"","sources":["../../src/_internal/runtime-cleanup-config-references.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAI7C,0EAA0E;AAC1E,eAAO,MAAM,yBAAyB,kGAO5B,CAAC;AAEX,iFAAiF;AACjF,MAAM,MAAM,4BAA4B,GAAG,QAAQ,CAAC;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,mBAAmB,wBAAwB,EAAE,CAAC;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB,EAAE,OAAO,CAAC;CACjC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,MAAM,MAAM,wBAAwB,GAChC,WAAW,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,kCAAkC,EAAE,QAAQ,CACrD,MAAM,CAAC,wBAAwB,EAAE,4BAA4B,CAAC,CAsCjE,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,sCAAsC,EAAE,SAAS,wBAAwB,EAQjF,CAAC;AAEN,+EAA+E;AAC/E,eAAO,MAAM,mCAAmC,EAAE,QAAQ,CAAC;IACvD,6BAA6B,EAAE,KAAK,CAAC;IACrC,sCAAsC,EAAE,cAAc,CAAC;IACvD,iCAAiC,EAAE,SAAS,CAAC;IAC7C,qCAAqC,EAAE,aAAa,CAAC;IACrD,kDAAkD,EAAE,0BAA0B,CAAC;IAC/E,gCAAgC,EAAE,QAAQ,CAAC;IAC3C,qDAAqD,EAAE,0BAA0B,CAAC;CACrF,CAUA,CAAC;AAEF,4EAA4E;AAC5E,MAAM,MAAM,6BAA6B,GACrC,MAAM,OAAO,mCAAmC,CAAC;AAErD;;GAEG;AACH,eAAO,MAAM,+BAA+B,GACxC,OAAO,MAAM,KACd,KAAK,IAAI,6BACgD,CAAC"}
|
|
@@ -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",
|
|
@@ -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"}
|