{
  "version": 3,
  "sources": ["../src/plugin.ts", "../package.json", "../src/rules/no-floating-abort-controllers.ts", "../src/_internal/ast-node.ts", "../src/_internal/cycle-safe-linked-search.ts", "../src/_internal/floating-resource.ts", "../src/_internal/rule-docs-url.ts", "../src/_internal/scope-variable.ts", "../src/_internal/typed-rule.ts", "../src/_internal/plugin-settings.ts", "../src/_internal/rule-catalog.ts", "../src/rules/no-floating-audio-contexts.ts", "../src/rules/no-floating-broadcast-channels.ts", "../src/rules/no-floating-child-processes.ts", "../src/rules/no-floating-disposable-stacks.ts", "../src/rules/no-floating-file-watchers.ts", "../src/rules/no-floating-geolocation-watches.ts", "../src/rules/no-floating-infinite-animations.ts", "../src/_internal/type-checker.ts", "../src/rules/no-floating-media-streams.ts", "../src/rules/no-floating-message-channels.ts", "../src/rules/no-floating-network-connections.ts", "../src/rules/no-floating-object-urls.ts", "../src/rules/no-floating-observers.ts", "../src/rules/no-floating-servers.ts", "../src/rules/no-floating-streams.ts", "../src/rules/no-floating-timers.ts", "../src/rules/no-floating-wake-locks.ts", "../src/rules/no-floating-web-stream-locks.ts", "../src/rules/no-floating-workers.ts", "../src/rules/no-unmanaged-event-listeners.ts", "../src/_internal/rules-registry.ts", "../src/_internal/runtime-cleanup-config-references.ts"],
  "sourcesContent": ["/**\n * @packageDocumentation\n * Public plugin entrypoint for eslint-plugin-runtime-cleanup exports and preset wiring.\n */\nimport type { ESLint, Linter } from \"eslint\";\nimport type { Except } from \"type-fest\";\n\nimport tsParser from \"@typescript-eslint/parser\";\nimport { objectFromEntries } from \"ts-extras\";\n\n// eslint-disable-next-line import-x/extensions -- Avoid importing from the ESM entrypoint to preserve CJS compatibility\nimport packageJson from \"../package.json\" with { type: \"json\" };\nimport { runtimeCleanupRules } from \"./_internal/rules-registry.js\";\nimport {\n    type RuntimeCleanupConfigName as InternalRuntimeCleanupConfigName,\n    runtimeCleanupConfigMetadataByName,\n    runtimeCleanupConfigNames,\n} from \"./_internal/runtime-cleanup-config-references.js\";\n\n/** Default JS/TS file globs targeted by non-type-aware plugin presets. */\nconst JS_AND_TS_FILES = [\"**/*.{js,mjs,cjs,ts,tsx,mts,cts}\"] as const;\n\n/**\n * Default file globs targeted by type-aware plugin presets.\n *\n * @remarks\n * Type-aware presets intentionally do not enable\n * `parserOptions.projectService`. Project-service ownership belongs in the\n * consuming flat config because it depends on tsconfig roots, monorepo layout,\n * generated files, and performance tradeoffs.\n */\nconst TYPE_CHECKED_FILES = [\"**/*.{ts,tsx,mts,cts}\"] as const;\n\n/**\n * Canonical flat-config preset keys exposed through `plugin.configs`.\n *\n * @remarks\n * These names are used by consumers when composing presets in ESLint flat\n * config arrays.\n */\nexport type RuntimeCleanupConfigName = InternalRuntimeCleanupConfigName;\n\n/**\n * Flat-config preset shape produced by this plugin.\n *\n * @remarks\n * The `rules` map is required so preset composition can always merge concrete\n * rule severity entries without additional null checks.\n */\nexport type RuntimeCleanupPresetConfig = Linter.Config & {\n    rules: NonNullable<Linter.Config[\"rules\"]>;\n};\n\n/** Internal alias for flat config objects handled by preset builders. */\ntype FlatConfig = Linter.Config;\n\n/** Normalized language-options shape for preset composition helpers. */\ntype FlatLanguageOptions = NonNullable<FlatConfig[\"languageOptions\"]>;\n\n/** Normalized parser-options shape for preset composition helpers. */\ntype FlatParserOptions = NonNullable<FlatLanguageOptions[\"parserOptions\"]>;\n\n/** Contract for the `configs` object exported by this plugin. */\ntype RuntimeCleanupConfigsContract = Record<\n    RuntimeCleanupConfigName,\n    RuntimeCleanupPresetConfig\n>;\n\n/** Fully assembled plugin contract used by the runtime default export. */\ntype RuntimeCleanupPluginContract = Except<\n    ESLint.Plugin,\n    \"configs\" | \"rules\"\n> & {\n    configs: RuntimeCleanupConfigsContract;\n    meta: {\n        name: string;\n        namespace: string;\n        version: string;\n    };\n    processors: NonNullable<ESLint.Plugin[\"processors\"]>;\n    rules: NonNullable<ESLint.Plugin[\"rules\"]>;\n};\n\n/**\n * Resolve package version from package.json data.\n *\n * @param pkg - Parsed package metadata value.\n *\n * @returns The package version, or `0.0.0` when unavailable.\n */\nfunction getPackageVersion(pkg: unknown): string {\n    if (typeof pkg !== \"object\" || pkg === null) {\n        return \"0.0.0\";\n    }\n\n    const version: unknown = Reflect.get(pkg, \"version\");\n\n    return typeof version === \"string\" ? version : \"0.0.0\";\n}\n\n/** Parser module reused across preset construction. */\nconst tsParserValue: FlatLanguageOptions[\"parser\"] = tsParser;\n\n/** Default parser options applied when a preset omits parser options. */\nconst defaultParserOptions = {\n    ecmaVersion: \"latest\",\n    sourceType: \"module\",\n} satisfies FlatParserOptions;\n\n/**\n * Normalize unknown parser options into a mutable parser-options object.\n */\nconst normalizeParserOptions = (\n    parserOptions: FlatLanguageOptions[\"parserOptions\"]\n): FlatParserOptions =>\n    parserOptions !== null &&\n    typeof parserOptions === \"object\" &&\n    !Array.isArray(parserOptions)\n        ? { ...parserOptions }\n        : { ...defaultParserOptions };\n\n/**\n * Fully-qualified ESLint rule id used by this plugin.\n *\n * @remarks\n * Consumers typically use this when building strongly typed rule maps or helper\n * utilities that require namespaced rule identifiers.\n */\nexport type RuntimeCleanupRuleId = `runtime-cleanup/${RuntimeCleanupRuleName}`;\n\n/** Unqualified rule name supported by `eslint-plugin-runtime-cleanup`. */\nexport type RuntimeCleanupRuleName = keyof typeof runtimeCleanupRules;\n\n/**\n * ESLint-compatible rule map view of the strongly typed internal rule record.\n */\nconst runtimeCleanupEslintRules: NonNullable<ESLint.Plugin[\"rules\"]> &\n    typeof runtimeCleanupRules =\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Internal registry is intentionally narrowed to ESLint's plugin rule map contract.\n    runtimeCleanupRules as NonNullable<ESLint.Plugin[\"rules\"]> &\n        typeof runtimeCleanupRules;\n\n/**\n * Build an ESLint rules map that enables each provided rule at error level.\n *\n * @param ruleNames - Rule names to enable.\n *\n * @returns Rules config object compatible with flat config.\n */\nfunction errorRulesFor(\n    ruleNames: readonly RuntimeCleanupRuleName[]\n): RuntimeCleanupPresetConfig[\"rules\"] {\n    const rules: RuntimeCleanupPresetConfig[\"rules\"] = {};\n\n    for (const ruleName of ruleNames) {\n        rules[`runtime-cleanup/${ruleName}`] = \"error\";\n    }\n\n    return rules;\n}\n\n/** Effective per-preset rule lists after applying derived policy overlays. */\nconst effectivePresetRuleNamesByConfig: Readonly<\n    Record<RuntimeCleanupConfigName, readonly RuntimeCleanupRuleName[]>\n> = {\n    all: [\n        \"no-floating-abort-controllers\",\n        \"no-floating-audio-contexts\",\n        \"no-floating-broadcast-channels\",\n        \"no-floating-child-processes\",\n        \"no-floating-disposable-stacks\",\n        \"no-floating-file-watchers\",\n        \"no-floating-geolocation-watches\",\n        \"no-floating-infinite-animations\",\n        \"no-floating-media-streams\",\n        \"no-floating-message-channels\",\n        \"no-floating-network-connections\",\n        \"no-floating-object-urls\",\n        \"no-floating-observers\",\n        \"no-floating-servers\",\n        \"no-floating-streams\",\n        \"no-floating-timers\",\n        \"no-floating-wake-locks\",\n        \"no-floating-web-stream-locks\",\n        \"no-floating-workers\",\n        \"no-unmanaged-event-listeners\",\n    ],\n    experimental: [],\n    minimal: [],\n    recommended: [\n        \"no-floating-abort-controllers\",\n        \"no-floating-audio-contexts\",\n        \"no-floating-broadcast-channels\",\n        \"no-floating-child-processes\",\n        \"no-floating-disposable-stacks\",\n        \"no-floating-file-watchers\",\n        \"no-floating-geolocation-watches\",\n        \"no-floating-media-streams\",\n        \"no-floating-message-channels\",\n        \"no-floating-network-connections\",\n        \"no-floating-object-urls\",\n        \"no-floating-observers\",\n        \"no-floating-servers\",\n        \"no-floating-streams\",\n        \"no-floating-timers\",\n        \"no-floating-wake-locks\",\n        \"no-floating-workers\",\n        \"no-unmanaged-event-listeners\",\n    ],\n    \"recommended-type-checked\": [\n        \"no-floating-abort-controllers\",\n        \"no-floating-audio-contexts\",\n        \"no-floating-broadcast-channels\",\n        \"no-floating-child-processes\",\n        \"no-floating-disposable-stacks\",\n        \"no-floating-file-watchers\",\n        \"no-floating-geolocation-watches\",\n        \"no-floating-infinite-animations\",\n        \"no-floating-media-streams\",\n        \"no-floating-message-channels\",\n        \"no-floating-network-connections\",\n        \"no-floating-object-urls\",\n        \"no-floating-observers\",\n        \"no-floating-servers\",\n        \"no-floating-streams\",\n        \"no-floating-timers\",\n        \"no-floating-wake-locks\",\n        \"no-floating-web-stream-locks\",\n        \"no-floating-workers\",\n        \"no-unmanaged-event-listeners\",\n    ],\n    strict: [\n        \"no-floating-abort-controllers\",\n        \"no-floating-audio-contexts\",\n        \"no-floating-broadcast-channels\",\n        \"no-floating-child-processes\",\n        \"no-floating-disposable-stacks\",\n        \"no-floating-file-watchers\",\n        \"no-floating-geolocation-watches\",\n        \"no-floating-infinite-animations\",\n        \"no-floating-media-streams\",\n        \"no-floating-message-channels\",\n        \"no-floating-network-connections\",\n        \"no-floating-object-urls\",\n        \"no-floating-observers\",\n        \"no-floating-servers\",\n        \"no-floating-streams\",\n        \"no-floating-timers\",\n        \"no-floating-wake-locks\",\n        \"no-floating-web-stream-locks\",\n        \"no-floating-workers\",\n        \"no-unmanaged-event-listeners\",\n    ],\n};\n\n/**\n * Apply parser and plugin metadata required by all plugin presets.\n *\n * @param config - Preset-specific config fragment.\n * @param plugin - Plugin object registered under the `runtime-cleanup`\n *   namespace.\n * @param options - Preset-level wiring options.\n *\n * @returns Normalized preset config.\n */\nfunction withRuntimeCleanupPlugin(\n    config: Readonly<RuntimeCleanupPresetConfig>,\n    plugin: Readonly<ESLint.Plugin>,\n    options: Readonly<{ requiresTypeChecking: boolean }>\n): RuntimeCleanupPresetConfig {\n    const existingLanguageOptions = config.languageOptions ?? {};\n    const existingParserOptions = existingLanguageOptions[\"parserOptions\"];\n    const parserOptions = normalizeParserOptions(existingParserOptions);\n\n    const languageOptions: FlatLanguageOptions = {\n        ...existingLanguageOptions,\n        parser: existingLanguageOptions[\"parser\"] ?? tsParserValue,\n        parserOptions,\n    };\n\n    return {\n        ...config,\n        files:\n            config.files ??\n            (options.requiresTypeChecking\n                ? [...TYPE_CHECKED_FILES]\n                : [...JS_AND_TS_FILES]),\n        languageOptions,\n        plugins: {\n            ...config.plugins,\n            \"runtime-cleanup\": plugin,\n        },\n    };\n}\n\n/** Minimal plugin object used when assembling flat-config presets. */\nconst pluginForConfigs: ESLint.Plugin = {\n    rules: runtimeCleanupEslintRules,\n};\n\nconst createPresetConfig = (\n    configName: RuntimeCleanupConfigName\n): RuntimeCleanupPresetConfig => {\n    const configMetadata = runtimeCleanupConfigMetadataByName[configName];\n\n    return withRuntimeCleanupPlugin(\n        {\n            name: configMetadata.presetName,\n            rules: errorRulesFor(effectivePresetRuleNamesByConfig[configName]),\n        },\n        pluginForConfigs,\n        {\n            requiresTypeChecking: configMetadata.requiresTypeChecking,\n        }\n    );\n};\n\n/**\n * Flat config presets distributed by eslint-plugin-runtime-cleanup.\n */\nconst createRuntimeCleanupConfigsDefinition =\n    (): RuntimeCleanupConfigsContract =>\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Object.fromEntries cannot preserve the finite preset-key union.\n        objectFromEntries(\n            runtimeCleanupConfigNames.map((configName) => [\n                configName,\n                createPresetConfig(configName),\n            ])\n        ) as RuntimeCleanupConfigsContract;\n\nconst runtimeCleanupConfigsDefinition = createRuntimeCleanupConfigsDefinition();\n\n/** Finalized typed view of all exported preset configurations. */\nconst runtimeCleanupConfigs: RuntimeCleanupConfigsContract =\n    runtimeCleanupConfigsDefinition;\n\n/**\n * Runtime type for the plugin's generated config presets.\n *\n * @remarks\n * Mirrors `plugin.configs` and is useful when composing typed preset-aware\n * tooling in external integrations.\n */\nexport type RuntimeCleanupConfigs = typeof runtimeCleanupConfigs;\n\n/**\n * Main plugin object exported for ESLint consumption.\n */\nconst runtimeCleanupPlugin: RuntimeCleanupPluginContract = {\n    configs: runtimeCleanupConfigs,\n    meta: {\n        name: \"eslint-plugin-runtime-cleanup\",\n        namespace: \"runtime-cleanup\",\n        version: getPackageVersion(packageJson),\n    },\n    processors: {},\n    rules: runtimeCleanupEslintRules,\n};\n\n/**\n * Runtime type for the plugin object exported as default.\n *\n * @remarks\n * Includes resolved `meta`, `rules`, and `configs` contracts after plugin\n * assembly.\n */\nexport type RuntimeCleanupPlugin = typeof runtimeCleanupPlugin;\n\n/**\n * Default plugin export consumed by ESLint flat config.\n */\nexport default runtimeCleanupPlugin;\n", "{\n    \"$schema\": \"https://www.schemastore.org/package.json\",\n    \"name\": \"eslint-plugin-runtime-cleanup\",\n    \"version\": \"2.0.0\",\n    \"private\": false,\n    \"description\": \"ESLint rules for requiring cleanup of runtime resources.\",\n    \"keywords\": [\n        \"eslint\",\n        \"eslint-plugin\",\n        \"eslintplugin\",\n        \"cleanup\",\n        \"resources\",\n        \"runtime\",\n        \"typescript\"\n    ],\n    \"homepage\": \"https://nick2bad4u.github.io/eslint-plugin-runtime-cleanup/\",\n    \"bugs\": {\n        \"url\": \"https://github.com/Nick2bad4u/eslint-plugin-runtime-cleanup/issues\",\n        \"email\": \"20943337+Nick2bad4u@users.noreply.github.com\"\n    },\n    \"repository\": {\n        \"type\": \"git\",\n        \"url\": \"git+https://github.com/Nick2bad4u/eslint-plugin-runtime-cleanup.git\"\n    },\n    \"license\": \"MIT\",\n    \"author\": \"Nick2bad4u <20943337+Nick2bad4u@users.noreply.github.com> (https://github.com/Nick2bad4u)\",\n    \"contributors\": [\n        {\n            \"name\": \"Nick2bad4u\",\n            \"email\": \"20943337+Nick2bad4u@users.noreply.github.com\",\n            \"url\": \"https://github.com/Nick2bad4u\"\n        }\n    ],\n    \"sideEffects\": false,\n    \"type\": \"module\",\n    \"exports\": {\n        \".\": {\n            \"import\": {\n                \"types\": \"./dist/plugin.d.ts\",\n                \"default\": \"./dist/plugin.js\"\n            },\n            \"require\": {\n                \"types\": \"./dist/plugin.d.cts\",\n                \"default\": \"./dist/plugin.cjs\"\n            },\n            \"default\": \"./dist/plugin.js\"\n        },\n        \"./package.json\": \"./package.json\"\n    },\n    \"main\": \"./dist/plugin.cjs\",\n    \"types\": \"./dist/plugin.d.ts\",\n    \"files\": [\n        \"dist\",\n        \"docs/rules/**\",\n        \"CHANGELOG.md\"\n    ],\n    \"workspaces\": [\n        \"docs/docusaurus\"\n    ],\n    \"scripts\": {\n        \"prebench\": \"npm run build\",\n        \"bench\": \"node benchmarks/run-eslint-stats.mjs\",\n        \"prebench:compare\": \"npm run build\",\n        \"bench:compare\": \"node benchmarks/run-eslint-stats.mjs --iterations=6 --warmup=2 --compare=coverage/benchmarks/eslint-stats.json\",\n        \"prebench:eslint:stats\": \"npm run build\",\n        \"bench:eslint:stats\": \"node benchmarks/run-eslint-stats.mjs\",\n        \"prebench:eslint:timing\": \"npm run build\",\n        \"bench:eslint:timing\": \"cross-env TIMING=all eslint --config benchmarks/eslint-timing.config.mjs --stats \\\"test/fixtures/typed/*.invalid.ts\\\"\",\n        \"prebench:rule-benchmark\": \"npm run build\",\n        \"bench:rule-benchmark\": \"eslint-rule-benchmark run\",\n        \"prebench:ui\": \"npm run build\",\n        \"bench:ui\": \"vitest bench --ui\",\n        \"prebench:watch\": \"npm run build\",\n        \"bench:watch\": \"vitest bench\",\n        \"build\": \"tsc -b tsconfig.build.json --force && npm run build:types:cjs && npm run build:cjs\",\n        \"build:cjs\": \"esbuild dist/plugin.js --bundle --format=cjs --platform=node --packages=external --sourcemap --outfile=dist/plugin.cjs --footer:js=\\\"module.exports = module.exports.default;\\\"\",\n        \"build:clean\": \"node -e \\\"require('node:fs').rmSync('dist',{recursive:true,force:true})\\\"\",\n        \"build:eslint-inspector\": \"npx -y @eslint/config-inspector@latest build --outDir \\\"docs/docusaurus/static/eslint-inspector\\\" --base \\\"/eslint-plugin-runtime-cleanup/eslint-inspector/\\\"\",\n        \"build:eslint-inspector:local\": \"npx @eslint/config-inspector\",\n        \"build:stylelint-inspector\": \"npx -y stylelint-config-inspector@latest build --outDir \\\"docs/docusaurus/static/stylelint-inspector\\\" --base \\\"/eslint-plugin-runtime-cleanup/stylelint-inspector/\\\"\",\n        \"build:stylelint-inspector:local\": \"npx stylelint-config-inspector@latest\",\n        \"build:types:cjs\": \"node -e \\\"require('node:fs').copyFileSync('dist/plugin.d.ts','dist/plugin.d.cts')\\\"\",\n        \"changelog\": \"git-cliff --config cliff.toml --current\",\n        \"changelog:generate\": \"git-cliff --config cliff.toml --output CHANGELOG.md\",\n        \"changelog:preview\": \"git-cliff --config cliff.toml --unreleased\",\n        \"changelog:release-notes\": \"git-cliff --config cliff.toml --current --strip all\",\n        \"clean:cache\": \"del-cli dist coverage cache .cache .vite .turbo\",\n        \"clean:cache:coverage\": \"del-cli coverage .coverage\",\n        \"clean:cache:dist\": \"del-cli dist release\",\n        \"clean:cache:eslint\": \"del-cli .cache/.eslintcache\",\n        \"clean:cache:ncu\": \"del-cli .cache/.ncu-cache.json\",\n        \"clean:cache:prettier\": \"del-cli .cache/.prettier-cache .prettier-cache .prettiercache\",\n        \"clean:cache:stryker\": \"del-cli .stryker-tmp\",\n        \"clean:cache:stylelint\": \"del-cli .cache/stylelintcache stylelintcache .stylelintcache\",\n        \"clean:cache:temp\": \"del-cli \\\".temp/**\\\"\",\n        \"clean:cache:typescript\": \"del-cli .cache/**.tsbuildinfo .cache/builds\",\n        \"clean:cache:vite\": \"del-cli .cache/vite .cache/vitest .cache/vitest-zero-coverage .cache/vite-zero-coverage\",\n        \"clean:database\": \"del-cli %appdata%/uptime-watcher/uptime-watcher.sqlite\",\n        \"clean:docs\": \"del-cli docs/docusaurus/.docusaurus/** docs/docusaurus/build/** docs/docusaurus/site-docs/developer/api/**\",\n        \"clean:docusaurus\": \"npm run clean:docs && npm run --workspace docs/docusaurus clear\",\n        \"cognitive-complexity\": \"cognitive-complexity-ts --threshold 10\",\n        \"precommit\": \"npm run sync:rules:write\",\n        \"commit\": \"git-cz\",\n        \"contrib\": \"all-contributors\",\n        \"contrib:add\": \"all-contributors add\",\n        \"contrib:check\": \"all-contributors check\",\n        \"contrib:compare\": \"npm run contrib:check\",\n        \"contrib:generate\": \"all-contributors generate\",\n        \"coverage\": \"vitest run --coverage\",\n        \"docs:api\": \"npm run --workspace docs/docusaurus docs:api\",\n        \"docs:api:local\": \"npm run --workspace docs/docusaurus docs:api:local\",\n        \"docs:build\": \"npm run --workspace docs/docusaurus build\",\n        \"docs:build:local\": \"npm run --workspace docs/docusaurus build:local\",\n        \"docs:check-links\": \"npm run docs:api && node ./scripts/check-doc-links.mjs\",\n        \"docs:devtools:metadata\": \"node scripts/generate-devtools-workspace-metadata.mjs\",\n        \"docs:serve\": \"npm run --workspace docs/docusaurus serve\",\n        \"docs:start\": \"npm run --workspace docs/docusaurus start\",\n        \"docs:start:devtools\": \"npm run docs:devtools:metadata && npm run docs:api:local && npm run --workspace docs/docusaurus start:devtools\",\n        \"docs:toc\": \"remark docs --use remark-toc --output\",\n        \"docs:typecheck\": \"npm run --workspace docs/docusaurus typecheck\",\n        \"docs:typedoc\": \"npm run --workspace docs/docusaurus docs:api\",\n        \"docs:typedoc:local\": \"npm run --workspace docs/docusaurus docs:api:local\",\n        \"docs:validate-links\": \"remark docs --use remark-validate-links --frail\",\n        \"knip\": \"cross-env NODE_OPTIONS=--max_old_space_size=4096 NODE_NO_WARNINGS=1 npx knip -c knip.config.ts --cache --cache-location .cache/knip --tsConfig tsconfig.json\",\n        \"lint\": \"cross-env NODE_OPTIONS=--max_old_space_size=16384 eslint . --cache --cache-strategy content --cache-location .cache/.eslintcache\",\n        \"lint:action\": \"npm run lint:actions\",\n        \"lint:actions\": \"node scripts/lint-actionlint.mjs\",\n        \"lint:all\": \"npm run lint && npm run typecheck && npm run lint:css && npm run lint:prettier && npm run lint:remark && npm run lint:package && npm run lint:gitleaks && npm run lint:secretlint && npm run lint:yaml && npm run lint:yamllint && npm run lint:actions && npm run lint:circular && npm run sync:rules:check\",\n        \"lint:all:fix\": \"npm run lint:fix && npm run typecheck && npm run lint:css:fix && npm run lint:prettier:fix && npm run lint:remark && npm run lint:package && npm run lint:gitleaks && npm run lint:secretlint && npm run lint:yaml:fix && npm run lint:yamllint && npm run lint:actions && npm run lint:circular && npm run sync:rules:write\",\n        \"lint:all:fix:quiet\": \"npm run lint:fix:quiet && npm run typecheck && npm run lint:css:fix && npm run lint:prettier:fix && npm run lint:remark && npm run lint:package && npm run lint:gitleaks && npm run lint:secretlint && npm run lint:yaml:fix && npm run lint:yamllint && npm run lint:actions && npm run lint:circular && npm run sync:rules:write\",\n        \"lint:circular\": \"npm run madge:circular\",\n        \"lint:compat:eslint9\": \"node scripts/eslint9-compat-smoke.mjs\",\n        \"lint:config:build\": \"npm run build:eslint-inspector\",\n        \"lint:config:inspect\": \"npx eslint --inspect-config\",\n        \"lint:css\": \"stylelint --cache --config stylelint.config.mjs --cache-strategy content --cache-location .cache/stylelintcache src/ docs/ --custom-formatter stylelint-formatter-pretty && echo \\\"Stylelint done!\\\"\",\n        \"lint:css:fix\": \"stylelint --cache --config stylelint.config.mjs --cache-strategy content --cache-location .cache/stylelintcache src/ docs/ --custom-formatter stylelint-formatter-pretty --fix && echo \\\"Stylelint done!\\\"\",\n        \"lint:depcheck\": \"npm run knip -- --dependencies\",\n        \"lint:deps\": \"npm run knip -- --dependencies\",\n        \"lint:dupes\": \"jscpd src/ --config jscpd.json\",\n        \"lint:dupes:all\": \"jscpd src/ --config jscpd.json --min-lines 3\",\n        \"lint:dupes:skiplocal\": \"jscpd src/ --skipLocal --config jscpd.json\",\n        \"lint:dupes:skiplocal:all\": \"jscpd src/ --skipLocal --config jscpd.json --min-lines 3\",\n        \"lint:duplicates\": \"npm run lint:dupes\",\n        \"lint:exports\": \"ts-unused-exports tsconfig.json src/plugin.ts --excludePathsFromReport=plugin.ts\",\n        \"lint:fix\": \"cross-env NODE_OPTIONS=--max_old_space_size=16384 eslint . --cache --cache-strategy content --cache-location .cache/.eslintcache --fix\",\n        \"lint:fix:quiet\": \"cross-env ESLINT_PROGRESS=off NODE_OPTIONS=--max_old_space_size=16384 eslint . --cache --cache-strategy content --cache-location .cache/.eslintcache --fix && echo \\\"Eslint fix done!\\\"\",\n        \"lint:gitleaks\": \"gitleaks dir --config .gitleaks.toml .\",\n        \"lint:grype\": \"grype . -c .grype.yaml --name eslint-plugin-runtime-cleanup\",\n        \"lint:knip\": \"npm run knip\",\n        \"lint:knip:exports\": \"npm run knip -- --include exports,nsExports,classMembers,types,nsTypes,enumMembers,duplicates\",\n        \"lint:knip:unused:exports\": \"npm run knip -- --dependencies --exports\",\n        \"lint:leaves\": \"npm run madge:leaves\",\n        \"lint:metrics\": \"npm run sloc\",\n        \"lint:nocache\": \"cross-env NODE_OPTIONS=--max_old_space_size=16384 eslint .\",\n        \"lint:node-version-files\": \"node scripts/sync-node-version-files.mjs --check\",\n        \"lint:orphans\": \"npm run madge:orphans\",\n        \"lint:package\": \"npm run lint:node-version-files && npm run lint:package-sort && npm run lint:packagelintrc && echo \\\"Package.json lint done!\\\"\",\n        \"lint:package:strict\": \"npm run lint:node-version-files && npm run lint:package-sort && npm run lint:package-check:strict && npm run lint:packagelintrc && echo \\\"Package.json lint done!\\\"\",\n        \"lint:package-check\": \"publint && attw --pack .\",\n        \"lint:package-check:strict\": \"publint && node scripts/check-package-types.mjs\",\n        \"lint:package-sort\": \"sort-package-json \\\"./package.json\\\" \\\"./docs/docusaurus/package.json\\\"\",\n        \"lint:package-sort-check\": \"sort-package-json --check \\\"./package.json\\\" \\\"./docs/docusaurus/package.json\\\"\",\n        \"lint:packagelintrc\": \"npmPkgJsonLint . --config .npmpackagejsonlintrc.json\",\n        \"lint:prettier\": \"prettier . --log-level warn --cache --cache-location=.cache/.prettier-cache --cache-strategy=content --check\",\n        \"lint:prettier:fix\": \"prettier . --log-level warn --cache --cache-location=.cache/.prettier-cache --cache-strategy=content --write\",\n        \"lint:publint\": \"publint\",\n        \"lint:quiet\": \"cross-env ESLINT_PROGRESS=nofile NODE_OPTIONS=--max_old_space_size=16384 eslint . --cache --cache-strategy content --cache-location .cache/.eslintcache && echo \\\"Eslint done!\\\"\",\n        \"lint:remark\": \"remark --rc-path .remarkrc.mjs --silently-ignore --ignore-path .remarkignore --frail \\\"*.{md,mdx}\\\" \\\"docs/**/*.{md,mdx}\\\" --quiet\",\n        \"lint:remark:fix\": \"prettier --log-level warn --ignore-path prettierignore.remark --cache --cache-location=.cache/.prettier-cache --cache-strategy=content --no-error-on-unmatched-pattern --write \\\"*.{md,mdx}\\\" \\\"docs/**/*.{md,mdx}\\\" && npm run remark:fix\",\n        \"lint:secretlint\": \"secretlint --secretlintrc .secretlintrc.cjs --secretlintignore .secretlintignore \\\"./*\\\" \\\".vscode/**\\\" \\\"assets/**\\\" \\\"src/**\\\" \\\"electron/**\\\" \\\"shared/**\\\" \\\"config/**\\\" \\\"scripts/**\\\" \\\"playwright/**\\\" \\\"storybook/**\\\" \\\".storybook\\\" \\\"tests/**\\\" \\\"benchmarks/**\\\" \\\".devin/**\\\" \\\"public/**\\\" \\\".github/**\\\" \\\"docs/Architecture/**\\\" \\\"docs/*\\\" \\\"docs/assets/**\\\" \\\"docs/Guides/**\\\" \\\"docs/Testing/**\\\" \\\"docs/TSDoc/**\\\" \\\"docs/docusaurus/src/**\\\" \\\"docs/docusaurus/static/**\\\" \\\"docs/docusaurus/blog/**\\\" \\\"docs/docusaurus/docs/**\\\" \\\"docs/docusaurus/docs/*\\\"\",\n        \"lint:secrets\": \"detect-secrets scan\",\n        \"lint:unused\": \"npm run knip -- --include unlisted,unresolved,duplicates\",\n        \"lint:unused-deps\": \"npm run knip -- --dependencies\",\n        \"lint:yaml\": \"cross-env NODE_OPTIONS=--max_old_space_size=16384 eslint --cache --cache-strategy content --cache-location .cache/.eslintcache \\\"**/*.{yml,yaml}\\\" && echo \\\"YAML lint done!\\\"\",\n        \"lint:yaml:fix\": \"cross-env NODE_OPTIONS=--max_old_space_size=16384 eslint --cache --cache-strategy content --cache-location .cache/.eslintcache --fix \\\"**/*.{yml,yaml}\\\" && echo \\\"YAML lint (fix) done!\\\"\",\n        \"lint:yamllint\": \"yamllint .\",\n        \"madge:circular\": \"madge --circular --json --no-spinner --ts-config tsconfig.json --extensions ts,tsx,js,jsx,mjs,cjs,cts,mts ./src --exclude \\\"(^|[\\\\/])(test|dist|node_modules|cache|.cache|coverage|build|eslint-inspector|temp|.docusaurus)($|[\\\\/])|\\\\.css$\\\"\",\n        \"madge:leaves\": \"madge --leaves --no-spinner --ts-config tsconfig.json --extensions ts,tsx,js,jsx,mjs,cjs,cts,mts ./src --exclude \\\"(^|[\\\\/])(test|dist|node_modules|cache|.cache|coverage|build|eslint-inspector|temp|.docusaurus)($|[\\\\/])|\\\\.css$\\\"\",\n        \"madge:orphans\": \"madge --orphans --no-spinner --ts-config tsconfig.json --extensions ts,tsx,js,jsx,mjs,cjs,cts,mts ./src --exclude \\\"(^|[\\\\/])(test|dist|node_modules|cache|.cache|coverage|build|eslint-inspector|temp|.docusaurus)($|[\\\\/])|\\\\.css$\\\"\",\n        \"open:coverage\": \"open-cli coverage/index.html\",\n        \"prepublishOnly\": \"npm run release:check\",\n        \"release:check\": \"npm run release:verify\",\n        \"release:verify\": \"cross-env NODE_OPTIONS= npm run build && cross-env NODE_OPTIONS= npm run docs:api && cross-env NODE_OPTIONS= npm run lint:nocache && cross-env NODE_OPTIONS= npm run typecheck && cross-env NODE_OPTIONS= VITEST_TYPECHECK=false npm run test && cross-env NODE_OPTIONS= npm run sync:rules:check && cross-env NODE_OPTIONS= npm run docs:check-links && cross-env NODE_OPTIONS= npm run lint:package:strict\",\n        \"remark:fix\": \"remark --rc-path .remarkrc.mjs --silently-ignore --ignore-path .remarkignore --frail --quiet --output -- \\\"*.{md,mdx}\\\" \\\"docs/**/*.{md,mdx}\\\"\",\n        \"remark:test-config\": \"remark --rc-path .remarkrc.mjs --silently-ignore --ignore-path .remarkignore --frail \\\"README.md\\\"\",\n        \"size\": \"size-limit\",\n        \"sync:node-version-files\": \"node scripts/sync-node-version-files.mjs\",\n        \"sync:peer-eslint-range\": \"node scripts/sync-peer-eslint-range.mjs\",\n        \"sync:presets-rules-matrix\": \"node scripts/sync-presets-rules-matrix.mjs\",\n        \"sync:readme-rules-table\": \"node scripts/sync-readme-rules-table.mjs\",\n        \"sync:readme-rules-table:update\": \"npm run build && cross-env RUNTIME_CLEANUP_UPDATE_GENERATED_DOCS=1 vitest run test/readme-rules-table-sync.test.ts -u\",\n        \"sync:readme-rules-table:write\": \"node scripts/sync-readme-rules-table.mjs --write\",\n        \"sync:rules:check\": \"npm run sync:readme-rules-table && npm run sync:presets-rules-matrix\",\n        \"sync:rules:write\": \"npm run sync:readme-rules-table:write && node scripts/sync-presets-rules-matrix.mjs --write\",\n        \"pretest\": \"npm run build\",\n        \"test\": \"vitest run\",\n        \"test:autofix:fixtures\": \"node -e \\\"console.log('No autofix fixtures are defined yet.')\\\"\",\n        \"test:autofix:fixtures:typed\": \"node -e \\\"console.log('No typed autofix fixtures are defined yet.')\\\"\",\n        \"test:ci\": \"cross-env CI=true vitest run --reporter=default\",\n        \"test:coverage\": \"vitest run --coverage --reporter=default\",\n        \"test:coverage:detailed\": \"vitest run --coverage --reporter=verbose\",\n        \"test:coverage:minimal\": \"vitest run --coverage --reporter=dot\",\n        \"test:coverage:open\": \"npm run test:coverage && npm run open:coverage\",\n        \"test:coverage:quiet\": \"vitest run --coverage --reporter=default --silent\",\n        \"test:coverage:verbose\": \"vitest run --coverage --reporter=verbose\",\n        \"test:detailed\": \"vitest run --reporter=verbose\",\n        \"test:minimal\": \"vitest run --reporter=dot\",\n        \"test:open\": \"npm run test:coverage && npm run open:coverage\",\n        \"test:quiet\": \"vitest run --reporter=default --silent\",\n        \"test:serial\": \"cross-env MAX_THREADS=1 vitest run\",\n        \"test:stryker\": \"stryker run --ignoreStatic --concurrency 12 --incrementalFile .cache/stryker/incremental-fast.json\",\n        \"test:stryker:ci\": \"cross-env CI=true stryker run --ignoreStatic --concurrency 2 --incrementalFile .cache/stryker/incremental-fast-ci.json\",\n        \"test:stryker:full\": \"stryker run --concurrency 12 --incrementalFile .cache/stryker/incremental-full.json\",\n        \"test:stryker:full:ci\": \"cross-env CI=true stryker run --concurrency 2 --incrementalFile .cache/stryker/incremental-full-ci.json\",\n        \"test:verbose\": \"vitest run --reporter=verbose\",\n        \"test:watch\": \"vitest\",\n        \"typecheck\": \"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.build.json --noEmit && tsc -p tsconfig.eslint.json --noEmit && tsc -p tsconfig.js.json --noEmit && npm run --workspace docs/docusaurus typecheck\",\n        \"typecheck:all\": \"npm run typecheck\",\n        \"types:update\": \"typesync\",\n        \"update-actions\": \"npx actions-up --yes --style sha\",\n        \"update-deps\": \"npx ncu -i --install never && npm update --workspaces --force && npm install --force && npm run sync:peer-eslint-range && npm run sync:node-version-files && npm run sync:rules:write\",\n        \"verify:readme-rules-table\": \"npm run build && npm run sync:rules:write\"\n    },\n    \"overrides\": {\n        \"jsonc-eslint-parser\": \"$jsonc-eslint-parser\"\n    },\n    \"dependencies\": {\n        \"@typescript-eslint/parser\": \"^8.62.1\",\n        \"@typescript-eslint/type-utils\": \"^8.62.1\",\n        \"@typescript-eslint/utils\": \"^8.62.1\",\n        \"ts-extras\": \"^1.2.0\",\n        \"type-fest\": \"^5.7.0\"\n    },\n    \"devDependencies\": {\n        \"@arethetypeswrong/cli\": \"^0.18.4\",\n        \"@arethetypeswrong/core\": \"^0.18.4\",\n        \"@csstools/stylelint-formatter-github\": \"^2.0.0\",\n        \"@double-great/remark-lint-alt-text\": \"^1.1.1\",\n        \"@eslint/config-inspector\": \"^3.0.4\",\n        \"@microsoft/tsdoc-config\": \"^0.18.1\",\n        \"@size-limit/file\": \"^12.1.0\",\n        \"@stryker-ignorer/console-all\": \"^0.3.2\",\n        \"@stryker-mutator/core\": \"^9.6.1\",\n        \"@stryker-mutator/typescript-checker\": \"^9.6.1\",\n        \"@stryker-mutator/vitest-runner\": \"^9.6.1\",\n        \"@types/htmlhint\": \"^1.1.5\",\n        \"@types/madge\": \"^5.0.3\",\n        \"@types/node\": \"^26.1.0\",\n        \"@types/sloc\": \"^0.2.3\",\n        \"@typescript-eslint/rule-tester\": \"^8.62.1\",\n        \"@vitest/coverage-v8\": \"^4.1.9\",\n        \"@vitest/ui\": \"^4.1.9\",\n        \"actionlint\": \"^2.0.6\",\n        \"all-contributors-cli\": \"^6.26.1\",\n        \"cognitive-complexity-ts\": \"^0.8.2\",\n        \"commitlint\": \"^21.2.0\",\n        \"commitlint-config-gitmoji\": \"^2.3.1\",\n        \"cross-env\": \"^10.1.0\",\n        \"del-cli\": \"^7.0.0\",\n        \"detect-secrets\": \"^1.0.6\",\n        \"esbuild\": \"^0.28.1\",\n        \"eslint\": \"^10.6.0\",\n        \"eslint-config-nick2bad4u\": \"^3.3.1\",\n        \"eslint-formatter-unix\": \"^9.0.1\",\n        \"eslint-plugin-sonarjs\": \"^4.1.0\",\n        \"eslint-rule-benchmark\": \"^0.8.0\",\n        \"fast-check\": \"^4.8.0\",\n        \"git-cliff\": \"^2.13.1\",\n        \"gitleaks-config-nick2bad4u\": \"^1.0.3\",\n        \"gitleaks-secret-scanner\": \"^2.1.1\",\n        \"htmlhint\": \"^1.9.2\",\n        \"jscpd\": \"^5.0.11\",\n        \"knip\": \"^6.24.0\",\n        \"leasot\": \"^14.4.0\",\n        \"madge\": \"^8.0.0\",\n        \"markdown-link-check\": \"^3.14.2\",\n        \"npm-check-updates\": \"^22.2.9\",\n        \"npm-package-json-lint\": \"^10.4.1\",\n        \"npm-package-json-lint-config-nick2bad4u\": \"^1.0.4\",\n        \"picocolors\": \"^1.1.1\",\n        \"prettier\": \"^3.9.4\",\n        \"prettier-config-nick2bad4u\": \"^1.0.22\",\n        \"prettier-plugin-jsdoc-type\": \"^0.2.0\",\n        \"publint\": \"^0.3.21\",\n        \"rehype-katex\": \"^7.0.1\",\n        \"remark\": \"^15.0.1\",\n        \"remark-cli\": \"^12.0.1\",\n        \"remark-config-nick2bad4u\": \"^1.1.3\",\n        \"secretlint\": \"^13.0.2\",\n        \"secretlint-config-nick2bad4u\": \"^1.1.2\",\n        \"size-limit\": \"^12.1.0\",\n        \"sloc\": \"^0.3.2\",\n        \"sort-package-json\": \"^4.0.0\",\n        \"stylelint\": \"^17.14.0\",\n        \"stylelint-config-nick2bad4u\": \"^1.0.20\",\n        \"ts-unused-exports\": \"^11.0.1\",\n        \"tsdoc-config-nick2bad4u\": \"^1.0.6\",\n        \"typedoc\": \"^0.28.19\",\n        \"typedoc-config-nick2bad4u\": \"^2.0.1\",\n        \"typescript\": \"^6.0.3\",\n        \"typescript-eslint\": \"^8.62.1\",\n        \"typesync\": \"^0.14.3\",\n        \"vfile\": \"^6.0.3\",\n        \"vite\": \"^8.1.3\",\n        \"vite-tsconfig-paths\": \"^6.1.1\",\n        \"vitest\": \"^4.1.9\",\n        \"yamllint-config-nick2bad4u\": \"^1.1.1\",\n        \"yamllint-js\": \"^0.2.4\"\n    },\n    \"peerDependencies\": {\n        \"eslint\": \"^9.0.0 || ^10.6.0\",\n        \"typescript\": \"^5.0.0 || ^6.0.2\"\n    },\n    \"packageManager\": \"npm@11.18.0\",\n    \"engines\": {\n        \"node\": \">=22.0.0\"\n    },\n    \"devEngines\": {\n        \"runtime\": {\n            \"name\": \"node\",\n            \"version\": \">=22.0.0\",\n            \"onFail\": \"error\"\n        },\n        \"packageManager\": {\n            \"name\": \"npm\",\n            \"version\": \">=11.0.0\",\n            \"onFail\": \"error\"\n        }\n    },\n    \"publishConfig\": {\n        \"provenance\": true,\n        \"registry\": \"https://registry.npmjs.org/\"\n    },\n    \"readme\": \"README.md\"\n}\n", "/**\n * @packageDocumentation\n * Require AbortController handles to be retained so work can be aborted during cleanup.\n */\nimport {\n    AST_NODE_TYPES,\n    type TSESLint,\n    type TSESTree,\n} from \"@typescript-eslint/utils\";\nimport { isDefined, setHas } from \"ts-extras\";\n\nimport { getParentNode } from \"../_internal/ast-node.js\";\nimport { getFirstOpaqueParent } from \"../_internal/floating-resource.js\";\nimport { createRuleDocsUrl } from \"../_internal/rule-docs-url.js\";\nimport { getVariableInScopeChain } from \"../_internal/scope-variable.js\";\nimport {\n    createTypedRule,\n    type TypedRuleContext,\n} from \"../_internal/typed-rule.js\";\n\nconst abortControllerConstructorName = \"AbortController\";\nconst globalReceiverNames = [\n    \"globalThis\",\n    \"self\",\n    \"window\",\n] as const;\n\nconst globalReceiverNameSet: ReadonlySet<string> = new Set(globalReceiverNames);\n\nconst isGlobalReceiverName = (name: string): boolean =>\n    setHas(globalReceiverNameSet, name);\n\nconst getStaticPropertyName = (\n    node: Readonly<TSESTree.MemberExpression[\"property\"]>,\n    computed: boolean\n): string | undefined => {\n    if (!computed && node.type === AST_NODE_TYPES.Identifier) {\n        return node.name;\n    }\n\n    if (\n        computed &&\n        node.type === AST_NODE_TYPES.Literal &&\n        typeof node.value === \"string\"\n    ) {\n        return node.value;\n    }\n\n    return undefined;\n};\n\nconst isShadowedAbortControllerIdentifier = (\n    context: TypedRuleContext,\n    identifier: Readonly<TSESTree.Identifier>\n): boolean => {\n    const scope = context.sourceCode.getScope(identifier);\n    const variable = getVariableInScopeChain(scope, identifier.name);\n\n    return variable !== null && variable.defs.length > 0;\n};\n\nconst isDirectAbortControllerConstructor = (\n    context: TypedRuleContext,\n    callee: Readonly<TSESTree.NewExpression[\"callee\"]>\n): boolean =>\n    callee.type === AST_NODE_TYPES.Identifier &&\n    callee.name === abortControllerConstructorName &&\n    !isShadowedAbortControllerIdentifier(context, callee);\n\nconst isMemberAbortControllerConstructor = (\n    callee: Readonly<TSESTree.NewExpression[\"callee\"]>\n): boolean =>\n    callee.type === AST_NODE_TYPES.MemberExpression &&\n    !callee.optional &&\n    callee.object.type === AST_NODE_TYPES.Identifier &&\n    isGlobalReceiverName(callee.object.name) &&\n    getStaticPropertyName(callee.property, callee.computed) ===\n        abortControllerConstructorName;\n\nconst isAbortControllerConstructor = (\n    context: TypedRuleContext,\n    callee: Readonly<TSESTree.NewExpression[\"callee\"]>\n): boolean =>\n    isDirectAbortControllerConstructor(context, callee) ||\n    isMemberAbortControllerConstructor(callee);\n\nconst isDiscardedAbortControllerHandle = (\n    node: Readonly<TSESTree.NewExpression>\n): boolean => {\n    const opaqueParent = getFirstOpaqueParent(node);\n\n    if (!isDefined(opaqueParent)) {\n        return false;\n    }\n\n    const { current, parent } = opaqueParent;\n\n    if (\n        parent.type === AST_NODE_TYPES.ExpressionStatement &&\n        parent.expression === current\n    ) {\n        return true;\n    }\n\n    if (\n        parent.type === AST_NODE_TYPES.UnaryExpression &&\n        parent.operator === \"void\" &&\n        parent.argument === current\n    ) {\n        const unaryParent = getParentNode(parent);\n\n        return unaryParent?.type === AST_NODE_TYPES.ExpressionStatement;\n    }\n\n    return false;\n};\n\nconst isImmediateAbortSignalAccess = (\n    node: Readonly<TSESTree.NewExpression>\n): boolean => {\n    const opaqueParent = getFirstOpaqueParent(node);\n\n    if (!isDefined(opaqueParent)) {\n        return false;\n    }\n\n    const { current, parent } = opaqueParent;\n\n    return (\n        parent.type === AST_NODE_TYPES.MemberExpression &&\n        parent.object === current &&\n        !parent.optional &&\n        getStaticPropertyName(parent.property, parent.computed) === \"signal\"\n    );\n};\n\n/** Rule implementation for `runtime-cleanup/no-floating-abort-controllers`. */\nconst noFloatingAbortControllers: TSESLint.RuleModule<\n    \"floatingAbortController\",\n    readonly []\n> = createTypedRule({\n    create: (context) => ({\n        NewExpression(node: Readonly<TSESTree.NewExpression>) {\n            if (\n                !isAbortControllerConstructor(context, node.callee) ||\n                (!isDiscardedAbortControllerHandle(node) &&\n                    !isImmediateAbortSignalAccess(node))\n            ) {\n                return;\n            }\n\n            context.report({\n                messageId: \"floatingAbortController\",\n                node,\n            });\n        },\n    }),\n    defaultOptions: [],\n    meta: {\n        docs: {\n            description:\n                \"require AbortController handles to be retained so work can be aborted during cleanup.\",\n            recommended: true,\n            requiresTypeChecking: false,\n            runtimeCleanupConfigs: [\n                \"runtime-cleanup.configs.recommended\",\n                \"runtime-cleanup.configs.recommended-type-checked\",\n                \"runtime-cleanup.configs.strict\",\n                \"runtime-cleanup.configs.all\",\n            ],\n            url: createRuleDocsUrl(\"no-floating-abort-controllers\"),\n        },\n        messages: {\n            floatingAbortController:\n                \"Store or return the AbortController handle so abort() can cancel work during cleanup.\",\n        },\n        schema: [],\n        type: \"problem\",\n    },\n    name: \"no-floating-abort-controllers\",\n});\n\nexport default noFloatingAbortControllers;\n", "/**\n * @packageDocumentation\n * AST parent-chain traversal helpers used by multiple rule utilities.\n */\nimport { AST_NODE_TYPES, type TSESTree } from \"@typescript-eslint/utils\";\nimport { keyIn } from \"ts-extras\";\n\nimport { resolveFirstValueInLinkedStructure } from \"./cycle-safe-linked-search.js\";\n\n/**\n * AST node shape that may carry a parser-populated `parent` reference.\n */\ntype NodeWithOptionalParent = Readonly<TSESTree.Node> & {\n    parent?: Readonly<TSESTree.Node>;\n};\n\n/**\n * Determine whether a node exposes an optional `parent` property.\n */\nconst hasOptionalParentProperty = (\n    node: Readonly<TSESTree.Node>\n): node is NodeWithOptionalParent => keyIn(node, \"parent\");\n\n/**\n * Gets a node's parent reference when available.\n *\n * @param node - AST node whose parent should be read.\n *\n * @returns Parent node when present on parser output; otherwise `undefined`.\n */\nexport const getParentNode = (\n    node: Readonly<TSESTree.Node>\n): Readonly<TSESTree.Node> | undefined =>\n    hasOptionalParentProperty(node) ? node.parent : undefined;\n\n/**\n * Walks the parent chain to locate the enclosing `Program` node.\n *\n * @param node - Starting AST node.\n *\n * @returns Nearest enclosing `Program` node; otherwise `null` when no program\n *   boundary can be reached (including cycle-guard termination).\n */\nexport const getProgramNode = (\n    node: Readonly<TSESTree.Node>\n): null | Readonly<TSESTree.Program> => {\n    const lookupResult = resolveFirstValueInLinkedStructure<\n        Readonly<TSESTree.Node>,\n        Readonly<TSESTree.Program>\n    >({\n        getNextNode: (\n            currentNode: Readonly<TSESTree.Node>\n        ): null | Readonly<TSESTree.Node> => getParentNode(currentNode) ?? null,\n        resolveValue: (currentNode: Readonly<TSESTree.Node>) =>\n            currentNode.type === AST_NODE_TYPES.Program\n                ? {\n                      found: true,\n                      value: currentNode,\n                  }\n                : {\n                      found: false,\n                  },\n        startNode: node,\n    });\n\n    return lookupResult.found ? lookupResult.value : null;\n};\n", "/**\n * @packageDocumentation\n * Shared Floyd-cycle-guarded linked-structure traversal utilities.\n */\n\n/**\n * Result shape returned by linked-structure searches.\n */\nexport type LinkedStructureLookupResult<Value> =\n    | Readonly<{\n          found: false;\n      }>\n    | Readonly<{\n          found: true;\n          value: Value;\n      }>;\n\n/**\n * Fast-pointer hop count per iteration for Floyd cycle detection.\n */\nconst FLOYD_FAST_POINTER_ADVANCE_STEPS = 2 as const;\n\n/**\n * Resolve the first matching value while traversing a linked structure.\n *\n * @param options - Linked-structure traversal options.\n *\n *   - `startNode`: Initial node to inspect.\n *   - `getNextNode`: Function that returns the next node in the chain.\n *   - `resolveValue`: Function that returns a lookup result for the current node.\n *\n * @returns Lookup result for the first resolved value; otherwise a non-matching\n *   lookup result when traversal reaches the chain end or detects a\n *   parent-cycle.\n */\nexport const resolveFirstValueInLinkedStructure = <Node, Value>({\n    getNextNode,\n    resolveValue,\n    startNode,\n}: Readonly<{\n    getNextNode: (node: Node) => Node | null;\n    resolveValue: (node: Node) => LinkedStructureLookupResult<Value>;\n    startNode: Node | null;\n}>): LinkedStructureLookupResult<Value> => {\n    let slowNode = startNode;\n    let fastNode = startNode;\n\n    while (slowNode !== null) {\n        const resolvedValue = resolveValue(slowNode);\n\n        if (resolvedValue.found) {\n            return resolvedValue;\n        }\n\n        slowNode = getNextNode(slowNode);\n\n        for (let step = 0; step < FLOYD_FAST_POINTER_ADVANCE_STEPS; step += 1) {\n            if (fastNode === null) {\n                break;\n            }\n\n            fastNode = getNextNode(fastNode);\n        }\n\n        if (slowNode !== null && slowNode === fastNode) {\n            return {\n                found: false,\n            };\n        }\n    }\n\n    return {\n        found: false,\n    };\n};\n\n/**\n * Check whether any node in a linked structure satisfies a predicate.\n *\n * @param options - Linked-structure traversal options.\n *\n *   - `startNode`: Initial node to inspect.\n *   - `getNextNode`: Function that returns the next node in the chain.\n *   - `isMatch`: Predicate used to test each visited node.\n *\n * @returns `true` when any visited node matches; otherwise `false`.\n */\nexport const isAnyLinkedStructureNodeMatching = <Node>({\n    getNextNode,\n    isMatch,\n    startNode,\n}: Readonly<{\n    getNextNode: (node: Node) => Node | null;\n    isMatch: (node: Node) => boolean;\n    startNode: Node | null;\n}>): boolean =>\n    resolveFirstValueInLinkedStructure({\n        getNextNode,\n        resolveValue: (node): LinkedStructureLookupResult<boolean> =>\n            isMatch(node)\n                ? {\n                      found: true,\n                      value: true,\n                  }\n                : {\n                      found: false,\n                  },\n        startNode,\n    }).found;\n", "/**\n * @packageDocumentation\n * Shared AST helpers for rules that reject unowned cleanup handles.\n */\nimport { AST_NODE_TYPES, type TSESTree } from \"@typescript-eslint/utils\";\nimport { isDefined, setHas } from \"ts-extras\";\n\nimport { getParentNode } from \"./ast-node.js\";\n\n/**\n * Unwrap syntax that does not change whether a resource expression is owned.\n */\nexport const getTransparentWrappedExpression = (\n    node: Readonly<TSESTree.Node>\n): Readonly<TSESTree.Node> | undefined => {\n    if (node.type === AST_NODE_TYPES.AwaitExpression) {\n        return node.argument;\n    }\n\n    if (node.type === AST_NODE_TYPES.ChainExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSAsExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSNonNullExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSSatisfiesExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSTypeAssertion) {\n        return node.expression;\n    }\n\n    return undefined;\n};\n\n/**\n * Resolve a static property name from dot or string-literal member access.\n */\nexport const getStaticPropertyName = (\n    node: Readonly<TSESTree.MemberExpression[\"property\"]>,\n    computed: boolean\n): string | undefined => {\n    if (!computed && node.type === AST_NODE_TYPES.Identifier) {\n        return node.name;\n    }\n\n    if (\n        computed &&\n        node.type === AST_NODE_TYPES.Literal &&\n        typeof node.value === \"string\"\n    ) {\n        return node.value;\n    }\n\n    return undefined;\n};\n\n/**\n * Resolve a simple static member path such as `globalThis.URL.createObjectURL`.\n */\nexport const collectStaticMemberPath = (\n    node: Readonly<TSESTree.Expression>\n): readonly string[] | undefined => {\n    if (node.type === AST_NODE_TYPES.Identifier) {\n        return [node.name];\n    }\n\n    if (node.type !== AST_NODE_TYPES.MemberExpression || node.optional) {\n        return undefined;\n    }\n\n    const objectPath = collectStaticMemberPath(node.object);\n    const propertyName = getStaticPropertyName(node.property, node.computed);\n\n    return !isDefined(objectPath) || !isDefined(propertyName)\n        ? undefined\n        : [...objectPath, propertyName];\n};\n\n/**\n * Walk through transparent syntax wrappers and return the first parent that\n * changes ownership semantics.\n */\nexport const getFirstOpaqueParent = (\n    node: Readonly<TSESTree.Node>\n):\n    | Readonly<{\n          current: Readonly<TSESTree.Node>;\n          parent: Readonly<TSESTree.Node>;\n      }>\n    | undefined => {\n    let current: Readonly<TSESTree.Node> = node;\n    let parent = getParentNode(current);\n\n    while (isDefined(parent)) {\n        const wrappedExpression = getTransparentWrappedExpression(parent);\n\n        if (wrappedExpression !== current) {\n            return { current, parent };\n        }\n\n        current = parent;\n        parent = getParentNode(current);\n    }\n\n    return undefined;\n};\n\n/**\n * Check whether a resource-producing expression is discarded as a standalone\n * expression or explicitly voided.\n */\nexport const isDiscardedResourceExpression = (\n    node: Readonly<TSESTree.Node>\n): boolean => {\n    const opaqueParent = getFirstOpaqueParent(node);\n\n    if (!isDefined(opaqueParent)) {\n        return false;\n    }\n\n    const { current, parent } = opaqueParent;\n\n    if (\n        parent.type === AST_NODE_TYPES.ExpressionStatement &&\n        parent.expression === current\n    ) {\n        return true;\n    }\n\n    if (\n        parent.type === AST_NODE_TYPES.UnaryExpression &&\n        parent.operator === \"void\" &&\n        parent.argument === current\n    ) {\n        const unaryParent = getParentNode(parent);\n\n        return unaryParent?.type === AST_NODE_TYPES.ExpressionStatement;\n    }\n\n    return false;\n};\n\n/**\n * Check whether a resource handle is immediately used as a member receiver\n * instead of being retained. Cleanup members are excluded so immediate cleanup\n * calls such as `new AudioContext().close()` are not reported here.\n */\nexport const isImmediateUnownedMemberReceiver = (\n    node: Readonly<TSESTree.Node>,\n    cleanupMemberNames: ReadonlySet<string>\n): boolean => {\n    const opaqueParent = getFirstOpaqueParent(node);\n\n    if (!isDefined(opaqueParent)) {\n        return false;\n    }\n\n    const { current, parent } = opaqueParent;\n\n    if (\n        parent.type !== AST_NODE_TYPES.MemberExpression ||\n        parent.object !== current ||\n        parent.optional\n    ) {\n        return false;\n    }\n\n    const propertyName = getStaticPropertyName(\n        parent.property,\n        parent.computed\n    );\n\n    return (\n        !isDefined(propertyName) || !setHas(cleanupMemberNames, propertyName)\n    );\n};\n", "/**\n * @packageDocumentation\n * Canonical rule documentation URL helpers.\n */\n\n/** Stable docs host/prefix for generated rule docs links. */\nexport const RULE_DOCS_URL_BASE =\n    \"https://nick2bad4u.github.io/eslint-plugin-runtime-cleanup/docs/rules/\" as const;\n\n/**\n * Build the canonical documentation URL for one rule id.\n *\n * @param ruleName - Rule id (for example `require-timer-cleanup`).\n *\n * @returns Canonical docs URL for the rule page.\n */\nexport const createRuleDocsUrl = (ruleName: string): string =>\n    `${RULE_DOCS_URL_BASE}${ruleName}`;\n", "/**\n * @packageDocumentation\n * Scope-chain helpers for reliable variable-resolution checks.\n */\nimport type { TSESLint } from \"@typescript-eslint/utils\";\n\nimport { isDefined } from \"ts-extras\";\n\nimport { resolveFirstValueInLinkedStructure } from \"./cycle-safe-linked-search.js\";\n\n/**\n * Resolve a variable binding by walking the current scope and all parent\n * scopes.\n *\n * @param scope - Initial scope to inspect.\n * @param variableName - Identifier name to resolve.\n *\n * @returns Matched variable binding from the nearest scope chain; otherwise\n *   `null`.\n */\nexport const getVariableInScopeChain = (\n    scope: Readonly<null | Readonly<TSESLint.Scope.Scope>>,\n    variableName: string\n): null | TSESLint.Scope.Variable => {\n    const lookupResult = resolveFirstValueInLinkedStructure<\n        Readonly<TSESLint.Scope.Scope>,\n        TSESLint.Scope.Variable\n    >({\n        getNextNode: (\n            currentScope: Readonly<TSESLint.Scope.Scope>\n        ): null | Readonly<TSESLint.Scope.Scope> => currentScope.upper,\n        resolveValue: (currentScope: Readonly<TSESLint.Scope.Scope>) => {\n            const variable = currentScope.set.get(variableName);\n\n            return isDefined(variable)\n                ? {\n                      found: true,\n                      value: variable,\n                  }\n                : {\n                      found: false,\n                  };\n        },\n        startNode: scope,\n    });\n\n    return lookupResult.found ? lookupResult.value : null;\n};\n", "import type { UnknownArray } from \"type-fest\";\n/**\n * @packageDocumentation\n * Internal shared utilities used by eslint-plugin-runtime-cleanup rule modules\n * and plugin wiring.\n */\nimport type ts from \"typescript\";\n\nimport { ESLintUtils, type TSESLint } from \"@typescript-eslint/utils\";\nimport { isDefined } from \"ts-extras\";\n\nimport type { RuntimeCleanupConfigReference } from \"./runtime-cleanup-config-references.js\";\n\nimport { registerProgramSettingsForContext } from \"./plugin-settings.js\";\nimport { getRuleCatalogEntryForRuleNameOrNull } from \"./rule-catalog.js\";\nimport { createRuleDocsUrl } from \"./rule-docs-url.js\";\nimport { safeTypeOperation } from \"./safe-type-operation.js\";\n\n/**\n * Parser services and type checker bundle used by typed rules.\n */\nexport interface TypedRuleServices {\n    checker: ts.TypeChecker;\n    parserServices: ReturnType<typeof ESLintUtils.getParserServices>;\n}\n\ntype RuntimeCleanupRuleCreator = ReturnType<\n    typeof ESLintUtils.RuleCreator<RuntimeCleanupRuleDocs>\n>;\n\n/**\n * Plugin-specific metadata extensions for `meta.docs`.\n *\n * @remarks\n * `eslint-plugin/require-meta-docs-recommended` expects `meta.docs.recommended`\n * to be boolean. Preset membership is tracked separately via\n * `meta.docs.runtimeCleanupConfigs`.\n */\ninterface RuntimeCleanupRuleDocs {\n    recommended?: boolean;\n    requiresTypeChecking?: boolean;\n    ruleId?: string;\n    ruleNumber?: number;\n    runtimeCleanupConfigs?:\n        | readonly RuntimeCleanupConfigReference[]\n        | RuntimeCleanupConfigReference;\n}\n\n/** Shared typed-rule context contract used by helper utilities. */\ntype TypedRuleContext = Readonly<\n    TSESLint.RuleContext<string, Readonly<UnknownArray>>\n>;\n\nexport type { TypedRuleContext };\n\n/**\n * Rule-creator wrapper used by plugin rules.\n *\n * @remarks\n * This wrapper automatically registers per-program plugin settings and injects\n * canonical `meta.docs.ruleId` / `meta.docs.ruleNumber` values for cataloged\n * public rules.\n *\n * @param ruleDefinition - Rule module definition passed to\n *   `ESLintUtils.RuleCreator`.\n *\n * @returns Rule module factory output that auto-registers program settings and\n *   preserves the authored rule contract.\n */\nexport const createTypedRule: RuntimeCleanupRuleCreator = (ruleDefinition) => {\n    const catalogEntry = getRuleCatalogEntryForRuleNameOrNull(\n        ruleDefinition.name\n    );\n    const createdRule = ESLintUtils.RuleCreator.withoutDocs(ruleDefinition);\n    const ruleDocs = createdRule.meta.docs;\n    if (!isDefined(ruleDocs)) {\n        throw new TypeError(\n            `Rule '${ruleDefinition.name}' must declare meta.docs.`\n        );\n    }\n\n    const canonicalDocsUrl = createRuleDocsUrl(ruleDefinition.name);\n\n    if (typeof ruleDocs.url === \"string\" && ruleDocs.url !== canonicalDocsUrl) {\n        throw new TypeError(\n            `Rule '${ruleDefinition.name}' has non-canonical docs.url '${ruleDocs.url}'. Expected '${canonicalDocsUrl}'.`\n        );\n    }\n\n    if (catalogEntry === null && ruleDefinition.name.startsWith(\"require-\")) {\n        throw new TypeError(\n            `Rule '${ruleDefinition.name}' is missing from the stable rule catalog.`\n        );\n    }\n\n    const docsWithCatalog: RuntimeCleanupRuleDocs & TSESLint.RuleMetaDataDocs =\n        catalogEntry === null\n            ? {\n                  ...ruleDocs,\n                  url: canonicalDocsUrl,\n              }\n            : {\n                  ...ruleDocs,\n                  ruleId: catalogEntry.ruleId,\n                  ruleNumber: catalogEntry.ruleNumber,\n                  url: canonicalDocsUrl,\n              };\n    const metaDefaultOptions = createdRule.meta.defaultOptions;\n\n    return {\n        ...createdRule,\n        create(context) {\n            registerProgramSettingsForContext(context);\n\n            return createdRule.create(context);\n        },\n        meta: {\n            ...createdRule.meta,\n            ...(isDefined(metaDefaultOptions) && {\n                defaultOptions: metaDefaultOptions,\n            }),\n            docs: docsWithCatalog,\n        },\n        name: ruleDefinition.name,\n    };\n};\n\n/**\n * Retrieve parser services and type checker for typed rules.\n *\n * @param context - Rule context from the current lint evaluation.\n *\n * @returns Parser services and type checker references bound to the current\n *   program.\n *\n * @throws Throws when `parserServices.program` is unavailable, which indicates\n *   the current lint run is not configured for type-aware analysis.\n */\nexport const getTypedRuleServices = (\n    context: TypedRuleContext\n): TypedRuleServices => {\n    const parserServices = ESLintUtils.getParserServices(context, true);\n    const program = parserServices.program;\n\n    if (program === null) {\n        throw new Error(\n            \"Typed rule requires parserServices.program; ensure projectService is enabled for this lint run.\"\n        );\n    }\n\n    return {\n        checker: program.getTypeChecker(),\n        parserServices,\n    };\n};\n\n/**\n * Determine whether the current lint context has full type information.\n *\n * @param context - Rule context from the current lint evaluation.\n *\n * @returns `true` when parser services and `program` are available.\n */\nexport const hasTypeServices = (context: TypedRuleContext): boolean => {\n    const parserServicesResult = safeTypeOperation({\n        operation: () => ESLintUtils.getParserServices(context, true),\n        reason: \"typed-rule-services-check-failed\",\n    });\n\n    return (\n        parserServicesResult.ok && parserServicesResult.value.program !== null\n    );\n};\n\n/**\n * Retrieve typed services when available, otherwise return `undefined`.\n *\n * @param context - Rule context from the current lint evaluation.\n *\n * @returns Typed services when parser services include a TypeScript program.\n */\nexport const getTypedRuleServicesOrUndefined = (\n    context: TypedRuleContext\n): TypedRuleServices | undefined =>\n    hasTypeServices(context) ? getTypedRuleServices(context) : undefined;\n\n/**\n * Resolve the type of a signature parameter by index.\n *\n * @param options - Signature parameter lookup options.\n *\n * @returns Parameter type when available; otherwise `undefined`.\n */\nexport const getSignatureParameterTypeAt = (\n    options: Readonly<{\n        checker: ts.TypeChecker;\n        index: number;\n        location: ts.Node;\n        signature: null | ts.Signature | undefined;\n    }>\n): ts.Type | undefined => {\n    const { checker, index, location, signature } = options;\n\n    const symbol = signature?.parameters[index];\n    if (!isDefined(symbol)) {\n        return undefined;\n    }\n\n    return checker.getTypeOfSymbolAtLocation(symbol, location);\n};\n", "/**\n * @packageDocumentation\n * Parsing and memoization helpers for plugin-level runtime settings.\n */\nimport type { TSESLint, TSESTree } from \"@typescript-eslint/utils\";\nimport type { UnknownArray, UnknownRecord } from \"type-fest\";\n\nimport { isDefined, objectHasOwn } from \"ts-extras\";\n\nimport { getProgramNode } from \"./ast-node.js\";\n\n/** Top-level `settings` key for this plugin. */\nconst RUNTIME_CLEANUP_SETTINGS_KEY = \"runtime-cleanup\";\n\n/** Flag that disables all plugin autofix behavior. */\nconst DISABLE_ALL_AUTOFIXES_KEY = \"disableAllAutofixes\";\n\n/**\n * Normalized per-program settings consumed by fix-generation helpers.\n */\ninterface ProgramSettings {\n    disableAllAutofixes: boolean;\n}\n\n/**\n * Cache of parsed settings keyed by the Program node for the active file.\n */\nconst settingsByProgram = new WeakMap<TSESTree.Program, ProgramSettings>();\n\n/**\n * Narrow an unknown value to an object-like record.\n *\n * @param value - Value to narrow.\n *\n * @returns `true` when the value is a non-null, non-array object.\n */\nconst isObject = (value: unknown): value is Readonly<UnknownRecord> =>\n    typeof value === \"object\" && value !== null && !Array.isArray(value);\n\n/**\n * Extract the `settings[\"runtime-cleanup\"]` object when present and valid.\n *\n * @param settings - ESLint settings value from rule context.\n *\n * @returns Parsed plugin settings object when valid; otherwise `null`.\n */\nconst getRuntimeCleanupSettings = (\n    settings: unknown\n): null | Readonly<UnknownRecord> => {\n    if (!isObject(settings)) {\n        return null;\n    }\n\n    const pluginSettings = settings[RUNTIME_CLEANUP_SETTINGS_KEY];\n\n    return isObject(pluginSettings) ? pluginSettings : null;\n};\n\n/**\n * Read a strict boolean flag (`true`) from an object by key.\n *\n * @param object - Source settings object.\n * @param key - Flag key to read.\n *\n * @returns `true` only when the key exists and equals literal `true`.\n */\nconst readBooleanFlag = (\n    object: Readonly<UnknownRecord>,\n    key: string\n): boolean => objectHasOwn(object, key) && object[key] === true;\n\n/**\n * Reads the global autofix disable flag from plugin settings.\n *\n * @param settings - ESLint settings value from rule context.\n *\n * @returns `true` when all plugin autofixes are explicitly disabled.\n */\nconst readDisableAllAutofixesFromSettings = (settings: unknown): boolean => {\n    const pluginSettings = getRuntimeCleanupSettings(settings);\n    if (pluginSettings === null) {\n        return false;\n    }\n\n    return readBooleanFlag(pluginSettings, DISABLE_ALL_AUTOFIXES_KEY);\n};\n\n/**\n * Register parsed plugin settings for the current file program.\n *\n * @param context - Active ESLint rule context.\n *\n * @returns Memoized immutable settings for the context's program node.\n */\nexport const registerProgramSettingsForContext = (\n    context: Readonly<TSESLint.RuleContext<string, Readonly<UnknownArray>>>\n): Readonly<ProgramSettings> => {\n    const programNode = context.sourceCode.ast;\n\n    const parsedSettings: Readonly<ProgramSettings> = Object.freeze({\n        disableAllAutofixes: readDisableAllAutofixesFromSettings(\n            context.settings\n        ),\n    });\n\n    const existingProgramSettings = settingsByProgram.get(programNode);\n    if (isDefined(existingProgramSettings)) {\n        return existingProgramSettings;\n    }\n\n    settingsByProgram.set(programNode, parsedSettings);\n\n    return parsedSettings;\n};\n\n/**\n * Determine whether autofixes are globally disabled for the file containing the\n * provided node.\n *\n * @param node - AST node used to resolve the enclosing Program.\n *\n * @returns `true` when fixes should be suppressed.\n */\nexport const areAutofixesDisabledForNode = (\n    node: Readonly<TSESTree.Node>\n): boolean => {\n    const programNode = getProgramNode(node);\n    if (programNode === null) {\n        return false;\n    }\n\n    const settings = settingsByProgram.get(programNode);\n\n    return settings?.disableAllAutofixes === true;\n};\n", "/**\n * @packageDocumentation\n * Stable catalog IDs for all plugin rules.\n */\n\nimport { objectFromEntries, setHas } from \"ts-extras\";\n\n/**\n * Catalog metadata for a single rule.\n */\nexport type RuntimeCleanupRuleCatalogEntry = Readonly<{\n    ruleId: RuntimeCleanupRuleCatalogId;\n    ruleName: string;\n    ruleNumber: number;\n}>;\n\n/**\n * Stable machine-friendly rule id format (for example: `R001`).\n */\nexport type RuntimeCleanupRuleCatalogId = `R${string}`;\n\n/**\n * Stable global ordering used for rule catalog IDs.\n *\n * @remarks\n * Append new rules to preserve existing IDs once the first runtime-cleanup\n * rules are added.\n */\n\nconst orderedRuleNames = [\n    \"no-floating-timers\",\n    \"no-unmanaged-event-listeners\",\n    \"no-floating-observers\",\n    \"no-floating-workers\",\n    \"no-floating-child-processes\",\n    \"no-floating-abort-controllers\",\n    \"no-floating-streams\",\n    \"no-floating-disposable-stacks\",\n    \"no-floating-network-connections\",\n    \"no-floating-file-watchers\",\n    \"no-floating-broadcast-channels\",\n    \"no-floating-message-channels\",\n    \"no-floating-servers\",\n    \"no-floating-geolocation-watches\",\n    \"no-floating-media-streams\",\n    \"no-floating-wake-locks\",\n    \"no-floating-object-urls\",\n    \"no-floating-audio-contexts\",\n    \"no-floating-web-stream-locks\",\n    \"no-floating-infinite-animations\",\n] as const satisfies readonly string[];\n\nconst toRuleCatalogId = (ruleNumber: number): RuntimeCleanupRuleCatalogId =>\n    `R${String(ruleNumber).padStart(3, \"0\")}`;\n\n/**\n * Canonical catalog metadata entries in stable display/order form.\n */\nexport const runtimeCleanupRuleCatalogEntries: readonly RuntimeCleanupRuleCatalogEntry[] =\n    orderedRuleNames.map((ruleName, index) => {\n        const ruleNumber = index + 1;\n\n        return {\n            ruleId: toRuleCatalogId(ruleNumber),\n            ruleName,\n            ruleNumber,\n        };\n    });\n\n/**\n * Fast lookup map for rule catalog metadata by rule name.\n */\nexport const runtimeCleanupRuleCatalogByRuleName: Readonly<\n    Partial<Record<string, RuntimeCleanupRuleCatalogEntry>>\n> = objectFromEntries(\n    runtimeCleanupRuleCatalogEntries.map((entry) => [entry.ruleName, entry])\n);\n\n/**\n * Resolve stable catalog metadata for a rule name when available.\n */\nexport const getRuleCatalogEntryForRuleNameOrNull = (\n    ruleName: string\n): null | RuntimeCleanupRuleCatalogEntry =>\n    runtimeCleanupRuleCatalogByRuleName[ruleName] ?? null;\n\n/**\n * Resolve stable catalog metadata for a rule name.\n *\n * @throws When the rule is missing from the catalog.\n */\nexport const getRuleCatalogEntryForRuleName = (\n    ruleName: string\n): RuntimeCleanupRuleCatalogEntry => {\n    const catalogEntry = getRuleCatalogEntryForRuleNameOrNull(ruleName);\n\n    if (catalogEntry === null) {\n        throw new TypeError(\n            `Rule '${ruleName}' is missing from the stable rule catalog.`\n        );\n    }\n\n    return catalogEntry;\n};\n\n/**\n * Resolve stable catalog metadata by rule id.\n */\nexport const runtimeCleanupRuleCatalogByRuleId: ReadonlyMap<\n    RuntimeCleanupRuleCatalogId,\n    RuntimeCleanupRuleCatalogEntry\n> = new Map(\n    runtimeCleanupRuleCatalogEntries.map((entry) => [entry.ruleId, entry])\n);\n\n/**\n * Resolve stable catalog metadata for a catalog id.\n */\nexport const getRuleCatalogEntryForRuleId = (\n    ruleId: RuntimeCleanupRuleCatalogId\n): RuntimeCleanupRuleCatalogEntry | undefined =>\n    runtimeCleanupRuleCatalogByRuleId.get(ruleId);\n\n/**\n * Validate that catalog IDs are unique and sequential.\n */\nexport const validateRuleCatalogIntegrity = (): boolean => {\n    const entries = runtimeCleanupRuleCatalogEntries;\n    const seenRuleIds = new Set<RuntimeCleanupRuleCatalogId>();\n\n    for (const [index, entry] of entries.entries()) {\n        if (setHas(seenRuleIds, entry.ruleId)) {\n            return false;\n        }\n\n        seenRuleIds.add(entry.ruleId);\n\n        const expectedRuleNumber = index + 1;\n        if (entry.ruleNumber !== expectedRuleNumber) {\n            return false;\n        }\n\n        if (entry.ruleId !== toRuleCatalogId(expectedRuleNumber)) {\n            return false;\n        }\n    }\n\n    return true;\n};\n", "import type { ArrayValues } from \"type-fest\";\n\n/**\n * @packageDocumentation\n * Require AudioContext instances to be retained so they can be closed.\n */\nimport {\n    AST_NODE_TYPES,\n    type TSESLint,\n    type TSESTree,\n} from \"@typescript-eslint/utils\";\nimport { arrayFirst, isDefined, setHas } from \"ts-extras\";\n\nimport {\n    collectStaticMemberPath,\n    isDiscardedResourceExpression,\n    isImmediateUnownedMemberReceiver,\n} from \"../_internal/floating-resource.js\";\nimport { createRuleDocsUrl } from \"../_internal/rule-docs-url.js\";\nimport { getVariableInScopeChain } from \"../_internal/scope-variable.js\";\nimport {\n    createTypedRule,\n    type TypedRuleContext,\n} from \"../_internal/typed-rule.js\";\n\nconst audioContextConstructorNames = [\n    \"AudioContext\",\n    \"webkitAudioContext\",\n] as const;\nconst cleanupMemberNames: ReadonlySet<string> = new Set([\"close\"]);\nconst globalReceiverNames = [\n    \"globalThis\",\n    \"self\",\n    \"window\",\n] as const;\n\ntype AudioContextConstructorName = ArrayValues<\n    typeof audioContextConstructorNames\n>;\n\nconst audioContextConstructorNameSet: ReadonlySet<string> = new Set(\n    audioContextConstructorNames\n);\nconst globalReceiverNameSet: ReadonlySet<string> = new Set(globalReceiverNames);\n\nconst isAudioContextConstructorName = (\n    name: string\n): name is AudioContextConstructorName =>\n    setHas(audioContextConstructorNameSet, name);\n\nconst isShadowedIdentifier = (\n    context: TypedRuleContext,\n    identifier: Readonly<TSESTree.Identifier>\n): boolean => {\n    const scope = context.sourceCode.getScope(identifier);\n    const variable = getVariableInScopeChain(scope, identifier.name);\n\n    return variable !== null && variable.defs.length > 0;\n};\n\nconst getDirectAudioContextConstructorName = (\n    context: TypedRuleContext,\n    callee: Readonly<TSESTree.NewExpression[\"callee\"]>\n): AudioContextConstructorName | undefined => {\n    if (\n        callee.type !== AST_NODE_TYPES.Identifier ||\n        !isAudioContextConstructorName(callee.name) ||\n        isShadowedIdentifier(context, callee)\n    ) {\n        return undefined;\n    }\n\n    return callee.name;\n};\n\nconst getMemberAudioContextConstructorName = (\n    callee: Readonly<TSESTree.NewExpression[\"callee\"]>\n): AudioContextConstructorName | undefined => {\n    if (callee.type !== AST_NODE_TYPES.MemberExpression || callee.optional) {\n        return undefined;\n    }\n\n    const path = collectStaticMemberPath(callee);\n\n    if (path?.length !== 2) {\n        return undefined;\n    }\n\n    const receiverName = arrayFirst(path);\n\n    if (\n        !isDefined(receiverName) ||\n        !setHas(globalReceiverNameSet, receiverName)\n    ) {\n        return undefined;\n    }\n\n    const constructorName = path[1];\n\n    return isDefined(constructorName) &&\n        isAudioContextConstructorName(constructorName)\n        ? constructorName\n        : undefined;\n};\n\nconst getAudioContextConstructorName = (\n    context: TypedRuleContext,\n    callee: Readonly<TSESTree.NewExpression[\"callee\"]>\n): AudioContextConstructorName | undefined =>\n    getDirectAudioContextConstructorName(context, callee) ??\n    getMemberAudioContextConstructorName(callee);\n\n/** Rule implementation for `runtime-cleanup/no-floating-audio-contexts`. */\nconst noFloatingAudioContexts: TSESLint.RuleModule<\n    \"floatingAudioContext\",\n    readonly []\n> = createTypedRule({\n    create: (context) => ({\n        NewExpression(node: Readonly<TSESTree.NewExpression>) {\n            const constructorName = getAudioContextConstructorName(\n                context,\n                node.callee\n            );\n\n            if (\n                !isDefined(constructorName) ||\n                (!isDiscardedResourceExpression(node) &&\n                    !isImmediateUnownedMemberReceiver(node, cleanupMemberNames))\n            ) {\n                return;\n            }\n\n            context.report({\n                data: { constructorName },\n                messageId: \"floatingAudioContext\",\n                node,\n            });\n        },\n    }),\n    defaultOptions: [],\n    meta: {\n        docs: {\n            description:\n                \"require AudioContext instances to be retained so they can be closed.\",\n            recommended: true,\n            requiresTypeChecking: false,\n            runtimeCleanupConfigs: [\n                \"runtime-cleanup.configs.recommended\",\n                \"runtime-cleanup.configs.recommended-type-checked\",\n                \"runtime-cleanup.configs.strict\",\n                \"runtime-cleanup.configs.all\",\n            ],\n            url: createRuleDocsUrl(\"no-floating-audio-contexts\"),\n        },\n        messages: {\n            floatingAudioContext:\n                \"Store or return the {{constructorName}} instance so close() can release audio resources during cleanup.\",\n        },\n        schema: [],\n        type: \"problem\",\n    },\n    name: \"no-floating-audio-contexts\",\n});\n\nexport default noFloatingAudioContexts;\n", "/**\n * @packageDocumentation\n * Require BroadcastChannel handles to be retained so they can be closed.\n */\nimport {\n    AST_NODE_TYPES,\n    type TSESLint,\n    type TSESTree,\n} from \"@typescript-eslint/utils\";\nimport { isDefined, setHas } from \"ts-extras\";\n\nimport { getParentNode } from \"../_internal/ast-node.js\";\nimport { getFirstOpaqueParent } from \"../_internal/floating-resource.js\";\nimport { createRuleDocsUrl } from \"../_internal/rule-docs-url.js\";\nimport { getVariableInScopeChain } from \"../_internal/scope-variable.js\";\nimport {\n    createTypedRule,\n    type TypedRuleContext,\n} from \"../_internal/typed-rule.js\";\n\nconst broadcastChannelConstructorName = \"BroadcastChannel\";\nconst globalReceiverNames = [\n    \"globalThis\",\n    \"self\",\n    \"window\",\n] as const;\n\nconst globalReceiverNameSet: ReadonlySet<string> = new Set(globalReceiverNames);\n\nconst isGlobalReceiverName = (name: string): boolean =>\n    setHas(globalReceiverNameSet, name);\n\nconst getStaticPropertyName = (\n    node: Readonly<TSESTree.MemberExpression[\"property\"]>,\n    computed: boolean\n): string | undefined => {\n    if (!computed && node.type === AST_NODE_TYPES.Identifier) {\n        return node.name;\n    }\n\n    if (\n        computed &&\n        node.type === AST_NODE_TYPES.Literal &&\n        typeof node.value === \"string\"\n    ) {\n        return node.value;\n    }\n\n    return undefined;\n};\n\nconst isShadowedBroadcastChannelIdentifier = (\n    context: TypedRuleContext,\n    identifier: Readonly<TSESTree.Identifier>\n): boolean => {\n    const scope = context.sourceCode.getScope(identifier);\n    const variable = getVariableInScopeChain(scope, identifier.name);\n\n    return variable !== null && variable.defs.length > 0;\n};\n\nconst isDirectBroadcastChannelConstructor = (\n    context: TypedRuleContext,\n    callee: Readonly<TSESTree.NewExpression[\"callee\"]>\n): boolean =>\n    callee.type === AST_NODE_TYPES.Identifier &&\n    callee.name === broadcastChannelConstructorName &&\n    !isShadowedBroadcastChannelIdentifier(context, callee);\n\nconst isMemberBroadcastChannelConstructor = (\n    callee: Readonly<TSESTree.NewExpression[\"callee\"]>\n): boolean =>\n    callee.type === AST_NODE_TYPES.MemberExpression &&\n    !callee.optional &&\n    callee.object.type === AST_NODE_TYPES.Identifier &&\n    isGlobalReceiverName(callee.object.name) &&\n    getStaticPropertyName(callee.property, callee.computed) ===\n        broadcastChannelConstructorName;\n\nconst isBroadcastChannelConstructor = (\n    context: TypedRuleContext,\n    callee: Readonly<TSESTree.NewExpression[\"callee\"]>\n): boolean =>\n    isDirectBroadcastChannelConstructor(context, callee) ||\n    isMemberBroadcastChannelConstructor(callee);\n\nconst isDiscardedBroadcastChannel = (\n    node: Readonly<TSESTree.NewExpression>\n): boolean => {\n    const opaqueParent = getFirstOpaqueParent(node);\n\n    if (!isDefined(opaqueParent)) {\n        return false;\n    }\n\n    const { current, parent } = opaqueParent;\n\n    if (\n        parent.type === AST_NODE_TYPES.ExpressionStatement &&\n        parent.expression === current\n    ) {\n        return true;\n    }\n\n    if (\n        parent.type === AST_NODE_TYPES.UnaryExpression &&\n        parent.operator === \"void\" &&\n        parent.argument === current\n    ) {\n        const unaryParent = getParentNode(parent);\n\n        return unaryParent?.type === AST_NODE_TYPES.ExpressionStatement;\n    }\n\n    return false;\n};\n\nconst isImmediateBroadcastChannelMethodReceiver = (\n    node: Readonly<TSESTree.NewExpression>\n): boolean => {\n    const opaqueParent = getFirstOpaqueParent(node);\n\n    if (!isDefined(opaqueParent)) {\n        return false;\n    }\n\n    const { current, parent } = opaqueParent;\n\n    if (\n        parent.type !== AST_NODE_TYPES.MemberExpression ||\n        parent.object !== current ||\n        parent.optional\n    ) {\n        return false;\n    }\n\n    if (getStaticPropertyName(parent.property, parent.computed) === \"close\") {\n        return false;\n    }\n\n    const callExpression = getParentNode(parent);\n\n    return (\n        callExpression?.type === AST_NODE_TYPES.CallExpression &&\n        callExpression.callee === parent\n    );\n};\n\n/** Rule implementation for `runtime-cleanup/no-floating-broadcast-channels`. */\nconst noFloatingBroadcastChannels: TSESLint.RuleModule<\n    \"floatingBroadcastChannel\",\n    readonly []\n> = createTypedRule({\n    create: (context) => ({\n        NewExpression(node: Readonly<TSESTree.NewExpression>) {\n            if (\n                !isBroadcastChannelConstructor(context, node.callee) ||\n                (!isDiscardedBroadcastChannel(node) &&\n                    !isImmediateBroadcastChannelMethodReceiver(node))\n            ) {\n                return;\n            }\n\n            context.report({\n                messageId: \"floatingBroadcastChannel\",\n                node,\n            });\n        },\n    }),\n    defaultOptions: [],\n    meta: {\n        docs: {\n            description:\n                \"require BroadcastChannel handles to be retained so they can be closed.\",\n            recommended: true,\n            requiresTypeChecking: false,\n            runtimeCleanupConfigs: [\n                \"runtime-cleanup.configs.recommended\",\n                \"runtime-cleanup.configs.recommended-type-checked\",\n                \"runtime-cleanup.configs.strict\",\n                \"runtime-cleanup.configs.all\",\n            ],\n            url: createRuleDocsUrl(\"no-floating-broadcast-channels\"),\n        },\n        messages: {\n            floatingBroadcastChannel:\n                \"Store or return the BroadcastChannel handle so close() can release the channel during cleanup.\",\n        },\n        schema: [],\n        type: \"problem\",\n    },\n    name: \"no-floating-broadcast-channels\",\n});\n\nexport default noFloatingBroadcastChannels;\n", "import type { ArrayValues } from \"type-fest\";\n\n/**\n * @packageDocumentation\n * Require child process handles to be retained so they can be killed during cleanup.\n */\nimport {\n    AST_NODE_TYPES,\n    type TSESLint,\n    type TSESTree,\n} from \"@typescript-eslint/utils\";\nimport { arrayFirst, isDefined, setHas } from \"ts-extras\";\n\nimport { getParentNode } from \"../_internal/ast-node.js\";\nimport { createRuleDocsUrl } from \"../_internal/rule-docs-url.js\";\nimport { getVariableInScopeChain } from \"../_internal/scope-variable.js\";\nimport {\n    createTypedRule,\n    type TypedRuleContext,\n} from \"../_internal/typed-rule.js\";\n\nconst childProcessFactoryNames = [\n    \"exec\",\n    \"execFile\",\n    \"fork\",\n    \"spawn\",\n] as const;\nconst childProcessModuleNames = [\n    \"child_process\",\n    \"node:child_process\",\n] as const;\nconst immediateCleanupMethodNames = [\"disconnect\", \"kill\"] as const;\n\ntype ChildProcessFactoryName = ArrayValues<typeof childProcessFactoryNames>;\n\nconst childProcessFactoryNameSet: ReadonlySet<string> = new Set(\n    childProcessFactoryNames\n);\nconst childProcessModuleNameSet: ReadonlySet<string> = new Set(\n    childProcessModuleNames\n);\nconst immediateCleanupMethodNameSet: ReadonlySet<string> = new Set(\n    immediateCleanupMethodNames\n);\n\nconst isChildProcessFactoryName = (\n    name: string\n): name is ChildProcessFactoryName => setHas(childProcessFactoryNameSet, name);\n\nconst isImmediateCleanupMethodName = (name: string): boolean =>\n    setHas(immediateCleanupMethodNameSet, name);\n\nconst getTransparentWrappedExpression = (\n    node: Readonly<TSESTree.Node>\n): Readonly<TSESTree.Node> | undefined => {\n    if (node.type === AST_NODE_TYPES.ChainExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSAsExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSNonNullExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSSatisfiesExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSTypeAssertion) {\n        return node.expression;\n    }\n\n    return undefined;\n};\n\nconst getStaticPropertyName = (\n    node: Readonly<TSESTree.PropertyName>\n): string | undefined => {\n    if (node.type === AST_NODE_TYPES.Identifier) {\n        return node.name;\n    }\n\n    if (\n        node.type === AST_NODE_TYPES.Literal &&\n        typeof node.value === \"string\"\n    ) {\n        return node.value;\n    }\n\n    return undefined;\n};\n\nconst getImportSourceValue = (\n    node: Readonly<TSESTree.Node>\n): string | undefined => {\n    const parent = getParentNode(node);\n\n    if (\n        parent?.type === AST_NODE_TYPES.ImportDeclaration &&\n        typeof parent.source.value === \"string\"\n    ) {\n        return parent.source.value;\n    }\n\n    return undefined;\n};\n\nconst getRequireSourceValue = (\n    expression: Readonly<null | TSESTree.Expression>\n): string | undefined => {\n    if (\n        expression?.type !== AST_NODE_TYPES.CallExpression ||\n        expression.callee.type !== AST_NODE_TYPES.Identifier ||\n        expression.callee.name !== \"require\"\n    ) {\n        return undefined;\n    }\n\n    const [source] = expression.arguments;\n\n    return source?.type === AST_NODE_TYPES.Literal &&\n        typeof source.value === \"string\"\n        ? source.value\n        : undefined;\n};\n\nconst getDefinitionModuleSource = (\n    node: Readonly<TSESTree.Node>\n): string | undefined => {\n    if (\n        node.type === AST_NODE_TYPES.ImportDefaultSpecifier ||\n        node.type === AST_NODE_TYPES.ImportNamespaceSpecifier ||\n        node.type === AST_NODE_TYPES.ImportSpecifier\n    ) {\n        return getImportSourceValue(node);\n    }\n\n    if (node.type === AST_NODE_TYPES.VariableDeclarator) {\n        return getRequireSourceValue(node.init);\n    }\n\n    return undefined;\n};\n\nconst getImportedSpecifierName = (\n    node: Readonly<TSESTree.ImportSpecifier>\n): string | undefined => getStaticPropertyName(node.imported);\n\nconst getObjectPatternPropertyNameForIdentifier = (\n    objectPattern: Readonly<TSESTree.ObjectPattern>,\n    identifierName: string\n): string | undefined => {\n    for (const property of objectPattern.properties) {\n        if (\n            property.type === AST_NODE_TYPES.Property &&\n            property.value.type === AST_NODE_TYPES.Identifier &&\n            property.value.name === identifierName\n        ) {\n            return getStaticPropertyName(property.key);\n        }\n    }\n\n    return undefined;\n};\n\nconst isChildProcessModuleSource = (source: string | undefined): boolean =>\n    isDefined(source) && setHas(childProcessModuleNameSet, source);\n\nconst getDefinitionForIdentifier = (\n    context: TypedRuleContext,\n    identifier: Readonly<TSESTree.Identifier>\n) => {\n    const scope = context.sourceCode.getScope(identifier);\n    const variable = getVariableInScopeChain(scope, identifier.name);\n\n    return arrayFirst(variable?.defs ?? []);\n};\n\nconst isChildProcessModuleBinding = (\n    context: TypedRuleContext,\n    identifier: Readonly<TSESTree.Identifier>\n): boolean => {\n    const definition = getDefinitionForIdentifier(context, identifier);\n\n    if (!isDefined(definition)) {\n        return false;\n    }\n\n    return isChildProcessModuleSource(\n        getDefinitionModuleSource(definition.node)\n    );\n};\n\nconst getNamedChildProcessFactoryBindingName = (\n    context: TypedRuleContext,\n    identifier: Readonly<TSESTree.Identifier>\n): ChildProcessFactoryName | undefined => {\n    const definition = getDefinitionForIdentifier(context, identifier);\n\n    if (!isDefined(definition)) {\n        return undefined;\n    }\n\n    const source = getDefinitionModuleSource(definition.node);\n\n    if (!isChildProcessModuleSource(source)) {\n        return undefined;\n    }\n\n    if (definition.node.type === AST_NODE_TYPES.ImportSpecifier) {\n        const importedName = getImportedSpecifierName(definition.node);\n\n        return isDefined(importedName) &&\n            isChildProcessFactoryName(importedName)\n            ? importedName\n            : undefined;\n    }\n\n    if (\n        definition.node.type === AST_NODE_TYPES.VariableDeclarator &&\n        definition.node.id.type === AST_NODE_TYPES.ObjectPattern\n    ) {\n        const propertyName = getObjectPatternPropertyNameForIdentifier(\n            definition.node.id,\n            identifier.name\n        );\n\n        return isDefined(propertyName) &&\n            isChildProcessFactoryName(propertyName)\n            ? propertyName\n            : undefined;\n    }\n\n    return undefined;\n};\n\nconst getRequireMemberFactoryName = (\n    callee: Readonly<TSESTree.CallExpression[\"callee\"]>\n): ChildProcessFactoryName | undefined => {\n    if (\n        callee.type !== AST_NODE_TYPES.MemberExpression ||\n        callee.computed ||\n        callee.optional ||\n        callee.property.type !== AST_NODE_TYPES.Identifier ||\n        !isChildProcessFactoryName(callee.property.name) ||\n        callee.object.type !== AST_NODE_TYPES.CallExpression ||\n        !isChildProcessModuleSource(getRequireSourceValue(callee.object))\n    ) {\n        return undefined;\n    }\n\n    return callee.property.name;\n};\n\nconst getModuleMemberFactoryName = (\n    context: TypedRuleContext,\n    callee: Readonly<TSESTree.CallExpression[\"callee\"]>\n): ChildProcessFactoryName | undefined => {\n    if (\n        callee.type !== AST_NODE_TYPES.MemberExpression ||\n        callee.computed ||\n        callee.optional ||\n        callee.object.type !== AST_NODE_TYPES.Identifier ||\n        callee.property.type !== AST_NODE_TYPES.Identifier ||\n        !isChildProcessFactoryName(callee.property.name) ||\n        !isChildProcessModuleBinding(context, callee.object)\n    ) {\n        return undefined;\n    }\n\n    return callee.property.name;\n};\n\nconst getChildProcessFactoryName = (\n    context: TypedRuleContext,\n    callee: Readonly<TSESTree.CallExpression[\"callee\"]>\n): ChildProcessFactoryName | undefined => {\n    if (callee.type === AST_NODE_TYPES.Identifier) {\n        return getNamedChildProcessFactoryBindingName(context, callee);\n    }\n\n    return (\n        getModuleMemberFactoryName(context, callee) ??\n        getRequireMemberFactoryName(callee)\n    );\n};\n\nconst isDiscardedChildProcessHandle = (\n    node: Readonly<TSESTree.CallExpression>\n): boolean => {\n    let current: Readonly<TSESTree.Node> = node;\n    let parent = getParentNode(current);\n\n    while (isDefined(parent)) {\n        const wrappedExpression = getTransparentWrappedExpression(parent);\n\n        if (wrappedExpression !== current) {\n            if (\n                parent.type === AST_NODE_TYPES.ExpressionStatement &&\n                parent.expression === current\n            ) {\n                return true;\n            }\n\n            if (\n                parent.type === AST_NODE_TYPES.UnaryExpression &&\n                parent.operator === \"void\" &&\n                parent.argument === current\n            ) {\n                const unaryParent = getParentNode(parent);\n\n                return unaryParent?.type === AST_NODE_TYPES.ExpressionStatement;\n            }\n\n            return false;\n        }\n\n        current = parent;\n        parent = getParentNode(current);\n    }\n\n    return false;\n};\n\nconst isImmediateChildProcessMethodReceiver = (\n    node: Readonly<TSESTree.CallExpression>\n): boolean => {\n    let current: Readonly<TSESTree.Node> = node;\n    let parent = getParentNode(current);\n\n    while (isDefined(parent)) {\n        const wrappedExpression = getTransparentWrappedExpression(parent);\n\n        if (wrappedExpression !== current) {\n            if (\n                parent.type !== AST_NODE_TYPES.MemberExpression ||\n                parent.object !== current ||\n                parent.computed ||\n                parent.property.type !== AST_NODE_TYPES.Identifier ||\n                isImmediateCleanupMethodName(parent.property.name)\n            ) {\n                return false;\n            }\n\n            const callExpression = getParentNode(parent);\n\n            return (\n                callExpression?.type === AST_NODE_TYPES.CallExpression &&\n                callExpression.callee === parent\n            );\n        }\n\n        current = parent;\n        parent = getParentNode(current);\n    }\n\n    return false;\n};\n\n/** Rule implementation for `runtime-cleanup/no-floating-child-processes`. */\nconst noFloatingChildProcesses: TSESLint.RuleModule<\n    \"floatingChildProcess\",\n    readonly []\n> = createTypedRule({\n    create: (context) => ({\n        CallExpression(node: Readonly<TSESTree.CallExpression>) {\n            const factoryName = getChildProcessFactoryName(\n                context,\n                node.callee\n            );\n\n            if (\n                !isDefined(factoryName) ||\n                (!isDiscardedChildProcessHandle(node) &&\n                    !isImmediateChildProcessMethodReceiver(node))\n            ) {\n                return;\n            }\n\n            context.report({\n                data: { factoryName },\n                messageId: \"floatingChildProcess\",\n                node,\n            });\n        },\n    }),\n    defaultOptions: [],\n    meta: {\n        docs: {\n            description:\n                \"require child process handles to be retained so they can be killed during cleanup.\",\n            recommended: true,\n            requiresTypeChecking: false,\n            runtimeCleanupConfigs: [\n                \"runtime-cleanup.configs.recommended\",\n                \"runtime-cleanup.configs.recommended-type-checked\",\n                \"runtime-cleanup.configs.strict\",\n                \"runtime-cleanup.configs.all\",\n            ],\n            url: createRuleDocsUrl(\"no-floating-child-processes\"),\n        },\n        messages: {\n            floatingChildProcess:\n                \"Store or return the child process handle from {{factoryName}} so it can be killed during cleanup.\",\n        },\n        schema: [],\n        type: \"problem\",\n    },\n    name: \"no-floating-child-processes\",\n});\n\nexport default noFloatingChildProcesses;\n", "import type { ArrayValues } from \"type-fest\";\n\n/**\n * @packageDocumentation\n * Require DisposableStack handles to be retained so registered disposers run.\n */\nimport {\n    AST_NODE_TYPES,\n    type TSESLint,\n    type TSESTree,\n} from \"@typescript-eslint/utils\";\nimport { isDefined, setHas } from \"ts-extras\";\n\nimport { getParentNode } from \"../_internal/ast-node.js\";\nimport { createRuleDocsUrl } from \"../_internal/rule-docs-url.js\";\nimport { getVariableInScopeChain } from \"../_internal/scope-variable.js\";\nimport {\n    createTypedRule,\n    type TypedRuleContext,\n} from \"../_internal/typed-rule.js\";\n\nconst disposableStackConstructorNames = [\n    \"AsyncDisposableStack\",\n    \"DisposableStack\",\n] as const;\nconst cleanupMethodNames = [\"dispose\", \"disposeAsync\"] as const;\nconst globalReceiverNames = [\n    \"globalThis\",\n    \"self\",\n    \"window\",\n] as const;\n\ntype DisposableStackConstructorName = ArrayValues<\n    typeof disposableStackConstructorNames\n>;\n\nconst disposableStackConstructorNameSet: ReadonlySet<string> = new Set(\n    disposableStackConstructorNames\n);\nconst cleanupMethodNameSet: ReadonlySet<string> = new Set(cleanupMethodNames);\nconst globalReceiverNameSet: ReadonlySet<string> = new Set(globalReceiverNames);\n\nconst isDisposableStackConstructorName = (\n    name: string\n): name is DisposableStackConstructorName =>\n    setHas(disposableStackConstructorNameSet, name);\n\nconst isCleanupMethodName = (name: string): boolean =>\n    setHas(cleanupMethodNameSet, name);\n\nconst isGlobalReceiverName = (name: string): boolean =>\n    setHas(globalReceiverNameSet, name);\n\nconst getTransparentWrappedExpression = (\n    node: Readonly<TSESTree.Node>\n): Readonly<TSESTree.Node> | undefined => {\n    if (node.type === AST_NODE_TYPES.ChainExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSAsExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSNonNullExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSSatisfiesExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSTypeAssertion) {\n        return node.expression;\n    }\n\n    return undefined;\n};\n\nconst getStaticPropertyName = (\n    node: Readonly<TSESTree.MemberExpression[\"property\"]>,\n    computed: boolean\n): string | undefined => {\n    if (!computed && node.type === AST_NODE_TYPES.Identifier) {\n        return node.name;\n    }\n\n    if (\n        computed &&\n        node.type === AST_NODE_TYPES.Literal &&\n        typeof node.value === \"string\"\n    ) {\n        return node.value;\n    }\n\n    return undefined;\n};\n\nconst isShadowedDisposableStackIdentifier = (\n    context: TypedRuleContext,\n    identifier: Readonly<TSESTree.Identifier>\n): boolean => {\n    const scope = context.sourceCode.getScope(identifier);\n    const variable = getVariableInScopeChain(scope, identifier.name);\n\n    return variable !== null && variable.defs.length > 0;\n};\n\nconst getDirectDisposableStackConstructorName = (\n    context: TypedRuleContext,\n    callee: Readonly<TSESTree.NewExpression[\"callee\"]>\n): DisposableStackConstructorName | undefined => {\n    if (\n        callee.type !== AST_NODE_TYPES.Identifier ||\n        !isDisposableStackConstructorName(callee.name) ||\n        isShadowedDisposableStackIdentifier(context, callee)\n    ) {\n        return undefined;\n    }\n\n    return callee.name;\n};\n\nconst getMemberDisposableStackConstructorName = (\n    callee: Readonly<TSESTree.NewExpression[\"callee\"]>\n): DisposableStackConstructorName | undefined => {\n    if (\n        callee.type !== AST_NODE_TYPES.MemberExpression ||\n        callee.optional ||\n        callee.object.type !== AST_NODE_TYPES.Identifier ||\n        !isGlobalReceiverName(callee.object.name)\n    ) {\n        return undefined;\n    }\n\n    const constructorName = getStaticPropertyName(\n        callee.property,\n        callee.computed\n    );\n\n    return isDefined(constructorName) &&\n        isDisposableStackConstructorName(constructorName)\n        ? constructorName\n        : undefined;\n};\n\nconst getDisposableStackConstructorName = (\n    context: TypedRuleContext,\n    callee: Readonly<TSESTree.NewExpression[\"callee\"]>\n): DisposableStackConstructorName | undefined =>\n    getDirectDisposableStackConstructorName(context, callee) ??\n    getMemberDisposableStackConstructorName(callee);\n\nconst isDiscardedDisposableStack = (\n    node: Readonly<TSESTree.NewExpression>\n): boolean => {\n    let current: Readonly<TSESTree.Node> = node;\n    let parent = getParentNode(current);\n\n    while (isDefined(parent)) {\n        const wrappedExpression = getTransparentWrappedExpression(parent);\n\n        if (wrappedExpression !== current) {\n            if (\n                parent.type === AST_NODE_TYPES.ExpressionStatement &&\n                parent.expression === current\n            ) {\n                return true;\n            }\n\n            if (\n                parent.type === AST_NODE_TYPES.UnaryExpression &&\n                parent.operator === \"void\" &&\n                parent.argument === current\n            ) {\n                const unaryParent = getParentNode(parent);\n\n                return unaryParent?.type === AST_NODE_TYPES.ExpressionStatement;\n            }\n\n            return false;\n        }\n\n        current = parent;\n        parent = getParentNode(current);\n    }\n\n    return false;\n};\n\nconst isImmediateDisposableStackMethodReceiver = (\n    node: Readonly<TSESTree.NewExpression>\n): boolean => {\n    let current: Readonly<TSESTree.Node> = node;\n    let parent = getParentNode(current);\n\n    while (isDefined(parent)) {\n        const wrappedExpression = getTransparentWrappedExpression(parent);\n\n        if (wrappedExpression !== current) {\n            if (\n                parent.type !== AST_NODE_TYPES.MemberExpression ||\n                parent.object !== current ||\n                parent.optional\n            ) {\n                return false;\n            }\n\n            const methodName = getStaticPropertyName(\n                parent.property,\n                parent.computed\n            );\n\n            if (!isDefined(methodName) || isCleanupMethodName(methodName)) {\n                return false;\n            }\n\n            const callExpression = getParentNode(parent);\n\n            return (\n                callExpression?.type === AST_NODE_TYPES.CallExpression &&\n                callExpression.callee === parent\n            );\n        }\n\n        current = parent;\n        parent = getParentNode(current);\n    }\n\n    return false;\n};\n\n/** Rule implementation for `runtime-cleanup/no-floating-disposable-stacks`. */\nconst noFloatingDisposableStacks: TSESLint.RuleModule<\n    \"floatingDisposableStack\",\n    readonly []\n> = createTypedRule({\n    create: (context) => ({\n        NewExpression(node: Readonly<TSESTree.NewExpression>) {\n            const constructorName = getDisposableStackConstructorName(\n                context,\n                node.callee\n            );\n\n            if (\n                !isDefined(constructorName) ||\n                (!isDiscardedDisposableStack(node) &&\n                    !isImmediateDisposableStackMethodReceiver(node))\n            ) {\n                return;\n            }\n\n            context.report({\n                data: { constructorName },\n                messageId: \"floatingDisposableStack\",\n                node,\n            });\n        },\n    }),\n    defaultOptions: [],\n    meta: {\n        docs: {\n            description:\n                \"require DisposableStack handles to be retained so registered disposers run.\",\n            recommended: true,\n            requiresTypeChecking: false,\n            runtimeCleanupConfigs: [\n                \"runtime-cleanup.configs.recommended\",\n                \"runtime-cleanup.configs.recommended-type-checked\",\n                \"runtime-cleanup.configs.strict\",\n                \"runtime-cleanup.configs.all\",\n            ],\n            url: createRuleDocsUrl(\"no-floating-disposable-stacks\"),\n        },\n        messages: {\n            floatingDisposableStack:\n                \"Store, return, or use the {{constructorName}} handle so registered disposers run during cleanup.\",\n        },\n        schema: [],\n        type: \"problem\",\n    },\n    name: \"no-floating-disposable-stacks\",\n});\n\nexport default noFloatingDisposableStacks;\n", "/**\n * @packageDocumentation\n * Require Node.js file watcher handles to be retained so they can be closed.\n */\nimport {\n    AST_NODE_TYPES,\n    type TSESLint,\n    type TSESTree,\n} from \"@typescript-eslint/utils\";\nimport { arrayFirst, isDefined, setHas } from \"ts-extras\";\n\nimport { getParentNode } from \"../_internal/ast-node.js\";\nimport { createRuleDocsUrl } from \"../_internal/rule-docs-url.js\";\nimport { getVariableInScopeChain } from \"../_internal/scope-variable.js\";\nimport {\n    createTypedRule,\n    type TypedRuleContext,\n} from \"../_internal/typed-rule.js\";\n\nconst fileWatcherFactoryName = \"watch\";\nconst fsModuleNames = [\"fs\", \"node:fs\"] as const;\nconst immediateCleanupMethodNames = [\"close\"] as const;\n\nconst fsModuleNameSet: ReadonlySet<string> = new Set(fsModuleNames);\nconst immediateCleanupMethodNameSet: ReadonlySet<string> = new Set(\n    immediateCleanupMethodNames\n);\n\nconst isImmediateCleanupMethodName = (name: string): boolean =>\n    setHas(immediateCleanupMethodNameSet, name);\n\nconst getTransparentWrappedExpression = (\n    node: Readonly<TSESTree.Node>\n): Readonly<TSESTree.Node> | undefined => {\n    if (node.type === AST_NODE_TYPES.ChainExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSAsExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSNonNullExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSSatisfiesExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSTypeAssertion) {\n        return node.expression;\n    }\n\n    return undefined;\n};\n\nconst getStaticPropertyName = (\n    node: Readonly<TSESTree.PropertyName>\n): string | undefined => {\n    if (node.type === AST_NODE_TYPES.Identifier) {\n        return node.name;\n    }\n\n    if (\n        node.type === AST_NODE_TYPES.Literal &&\n        typeof node.value === \"string\"\n    ) {\n        return node.value;\n    }\n\n    return undefined;\n};\n\nconst getImportSourceValue = (\n    node: Readonly<TSESTree.Node>\n): string | undefined => {\n    const parent = getParentNode(node);\n\n    if (\n        parent?.type === AST_NODE_TYPES.ImportDeclaration &&\n        typeof parent.source.value === \"string\"\n    ) {\n        return parent.source.value;\n    }\n\n    return undefined;\n};\n\nconst getRequireSourceValue = (\n    expression: Readonly<null | TSESTree.Expression>\n): string | undefined => {\n    if (\n        expression?.type !== AST_NODE_TYPES.CallExpression ||\n        expression.callee.type !== AST_NODE_TYPES.Identifier ||\n        expression.callee.name !== \"require\"\n    ) {\n        return undefined;\n    }\n\n    const [source] = expression.arguments;\n\n    return source?.type === AST_NODE_TYPES.Literal &&\n        typeof source.value === \"string\"\n        ? source.value\n        : undefined;\n};\n\nconst getDefinitionModuleSource = (\n    node: Readonly<TSESTree.Node>\n): string | undefined => {\n    if (\n        node.type === AST_NODE_TYPES.ImportDefaultSpecifier ||\n        node.type === AST_NODE_TYPES.ImportNamespaceSpecifier ||\n        node.type === AST_NODE_TYPES.ImportSpecifier\n    ) {\n        return getImportSourceValue(node);\n    }\n\n    if (node.type === AST_NODE_TYPES.VariableDeclarator) {\n        return getRequireSourceValue(node.init);\n    }\n\n    return undefined;\n};\n\nconst isFsModuleSource = (source: string | undefined): boolean =>\n    isDefined(source) && setHas(fsModuleNameSet, source);\n\nconst getDefinitionForIdentifier = (\n    context: TypedRuleContext,\n    identifier: Readonly<TSESTree.Identifier>\n) => {\n    const scope = context.sourceCode.getScope(identifier);\n    const variable = getVariableInScopeChain(scope, identifier.name);\n\n    return arrayFirst(variable?.defs ?? []);\n};\n\nconst isFsModuleBinding = (\n    context: TypedRuleContext,\n    identifier: Readonly<TSESTree.Identifier>\n): boolean => {\n    const definition = getDefinitionForIdentifier(context, identifier);\n\n    return (\n        isDefined(definition) &&\n        isFsModuleSource(getDefinitionModuleSource(definition.node))\n    );\n};\n\nconst getImportedSpecifierName = (\n    node: Readonly<TSESTree.ImportSpecifier>\n): string | undefined => getStaticPropertyName(node.imported);\n\nconst getObjectPatternPropertyNameForIdentifier = (\n    objectPattern: Readonly<TSESTree.ObjectPattern>,\n    identifierName: string\n): string | undefined => {\n    for (const property of objectPattern.properties) {\n        if (\n            property.type === AST_NODE_TYPES.Property &&\n            property.value.type === AST_NODE_TYPES.Identifier &&\n            property.value.name === identifierName\n        ) {\n            return getStaticPropertyName(property.key);\n        }\n    }\n\n    return undefined;\n};\n\nconst getNamedFileWatcherBindingName = (\n    context: TypedRuleContext,\n    identifier: Readonly<TSESTree.Identifier>\n): string | undefined => {\n    const definition = getDefinitionForIdentifier(context, identifier);\n\n    if (!isDefined(definition)) {\n        return undefined;\n    }\n\n    const source = getDefinitionModuleSource(definition.node);\n\n    if (!isFsModuleSource(source)) {\n        return undefined;\n    }\n\n    if (definition.node.type === AST_NODE_TYPES.ImportSpecifier) {\n        return getImportedSpecifierName(definition.node) ===\n            fileWatcherFactoryName\n            ? fileWatcherFactoryName\n            : undefined;\n    }\n\n    if (\n        definition.node.type === AST_NODE_TYPES.VariableDeclarator &&\n        definition.node.id.type === AST_NODE_TYPES.ObjectPattern\n    ) {\n        return getObjectPatternPropertyNameForIdentifier(\n            definition.node.id,\n            identifier.name\n        ) === fileWatcherFactoryName\n            ? fileWatcherFactoryName\n            : undefined;\n    }\n\n    return undefined;\n};\n\nconst getRequireMemberFactoryName = (\n    callee: Readonly<TSESTree.CallExpression[\"callee\"]>\n): string | undefined => {\n    if (\n        callee.type !== AST_NODE_TYPES.MemberExpression ||\n        callee.computed ||\n        callee.optional ||\n        callee.property.type !== AST_NODE_TYPES.Identifier ||\n        callee.property.name !== fileWatcherFactoryName ||\n        callee.object.type !== AST_NODE_TYPES.CallExpression ||\n        !isFsModuleSource(getRequireSourceValue(callee.object))\n    ) {\n        return undefined;\n    }\n\n    return callee.property.name;\n};\n\nconst getModuleMemberFactoryName = (\n    context: TypedRuleContext,\n    callee: Readonly<TSESTree.CallExpression[\"callee\"]>\n): string | undefined => {\n    if (\n        callee.type !== AST_NODE_TYPES.MemberExpression ||\n        callee.computed ||\n        callee.optional ||\n        callee.object.type !== AST_NODE_TYPES.Identifier ||\n        callee.property.type !== AST_NODE_TYPES.Identifier ||\n        callee.property.name !== fileWatcherFactoryName ||\n        !isFsModuleBinding(context, callee.object)\n    ) {\n        return undefined;\n    }\n\n    return callee.property.name;\n};\n\nconst getFileWatcherFactoryName = (\n    context: TypedRuleContext,\n    callee: Readonly<TSESTree.CallExpression[\"callee\"]>\n): string | undefined => {\n    if (callee.type === AST_NODE_TYPES.Identifier) {\n        return getNamedFileWatcherBindingName(context, callee);\n    }\n\n    return (\n        getModuleMemberFactoryName(context, callee) ??\n        getRequireMemberFactoryName(callee)\n    );\n};\n\nconst isDiscardedFileWatcherHandle = (\n    node: Readonly<TSESTree.CallExpression>\n): boolean => {\n    let current: Readonly<TSESTree.Node> = node;\n    let parent = getParentNode(current);\n\n    while (isDefined(parent)) {\n        const wrappedExpression = getTransparentWrappedExpression(parent);\n\n        if (wrappedExpression !== current) {\n            if (\n                parent.type === AST_NODE_TYPES.ExpressionStatement &&\n                parent.expression === current\n            ) {\n                return true;\n            }\n\n            if (\n                parent.type === AST_NODE_TYPES.UnaryExpression &&\n                parent.operator === \"void\" &&\n                parent.argument === current\n            ) {\n                const unaryParent = getParentNode(parent);\n\n                return unaryParent?.type === AST_NODE_TYPES.ExpressionStatement;\n            }\n\n            return false;\n        }\n\n        current = parent;\n        parent = getParentNode(current);\n    }\n\n    return false;\n};\n\nconst isImmediateFileWatcherMethodReceiver = (\n    node: Readonly<TSESTree.CallExpression>\n): boolean => {\n    let current: Readonly<TSESTree.Node> = node;\n    let parent = getParentNode(current);\n\n    while (isDefined(parent)) {\n        const wrappedExpression = getTransparentWrappedExpression(parent);\n\n        if (wrappedExpression !== current) {\n            if (\n                parent.type !== AST_NODE_TYPES.MemberExpression ||\n                parent.object !== current ||\n                parent.computed ||\n                parent.property.type !== AST_NODE_TYPES.Identifier ||\n                isImmediateCleanupMethodName(parent.property.name)\n            ) {\n                return false;\n            }\n\n            const callExpression = getParentNode(parent);\n\n            return (\n                callExpression?.type === AST_NODE_TYPES.CallExpression &&\n                callExpression.callee === parent\n            );\n        }\n\n        current = parent;\n        parent = getParentNode(current);\n    }\n\n    return false;\n};\n\n/** Rule implementation for `runtime-cleanup/no-floating-file-watchers`. */\nconst noFloatingFileWatchers: TSESLint.RuleModule<\n    \"floatingFileWatcher\",\n    readonly []\n> = createTypedRule({\n    create: (context) => ({\n        CallExpression(node: Readonly<TSESTree.CallExpression>) {\n            const factoryName = getFileWatcherFactoryName(context, node.callee);\n\n            if (\n                !isDefined(factoryName) ||\n                (!isDiscardedFileWatcherHandle(node) &&\n                    !isImmediateFileWatcherMethodReceiver(node))\n            ) {\n                return;\n            }\n\n            context.report({\n                data: { factoryName },\n                messageId: \"floatingFileWatcher\",\n                node,\n            });\n        },\n    }),\n    defaultOptions: [],\n    meta: {\n        docs: {\n            description:\n                \"require Node.js file watcher handles to be retained so they can be closed.\",\n            recommended: true,\n            requiresTypeChecking: false,\n            runtimeCleanupConfigs: [\n                \"runtime-cleanup.configs.recommended\",\n                \"runtime-cleanup.configs.recommended-type-checked\",\n                \"runtime-cleanup.configs.strict\",\n                \"runtime-cleanup.configs.all\",\n            ],\n            url: createRuleDocsUrl(\"no-floating-file-watchers\"),\n        },\n        messages: {\n            floatingFileWatcher:\n                \"Store or return the file watcher from {{factoryName}} so close() can stop watching during cleanup.\",\n        },\n        schema: [],\n        type: \"problem\",\n    },\n    name: \"no-floating-file-watchers\",\n});\n\nexport default noFloatingFileWatchers;\n", "/**\n * @packageDocumentation\n * Require geolocation watch IDs to be retained so they can be cleared.\n */\nimport {\n    AST_NODE_TYPES,\n    type TSESLint,\n    type TSESTree,\n} from \"@typescript-eslint/utils\";\nimport { arrayFirst, isDefined, setHas } from \"ts-extras\";\n\nimport { getParentNode } from \"../_internal/ast-node.js\";\nimport { createRuleDocsUrl } from \"../_internal/rule-docs-url.js\";\nimport { getVariableInScopeChain } from \"../_internal/scope-variable.js\";\nimport {\n    createTypedRule,\n    type TypedRuleContext,\n} from \"../_internal/typed-rule.js\";\n\nconst geolocationWatchFunctionName = \"watchPosition\";\nconst globalNavigatorReceiverNames = [\"globalThis\", \"window\"] as const;\n\nconst globalNavigatorReceiverNameSet: ReadonlySet<string> = new Set(\n    globalNavigatorReceiverNames\n);\n\nconst getTransparentWrappedExpression = (\n    node: Readonly<TSESTree.Node>\n): Readonly<TSESTree.Node> | undefined => {\n    if (node.type === AST_NODE_TYPES.ChainExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSAsExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSNonNullExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSSatisfiesExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSTypeAssertion) {\n        return node.expression;\n    }\n\n    return undefined;\n};\n\nconst getStaticPropertyName = (\n    node: Readonly<TSESTree.MemberExpression[\"property\"]>,\n    computed: boolean\n): string | undefined => {\n    if (!computed && node.type === AST_NODE_TYPES.Identifier) {\n        return node.name;\n    }\n\n    if (\n        computed &&\n        node.type === AST_NODE_TYPES.Literal &&\n        typeof node.value === \"string\"\n    ) {\n        return node.value;\n    }\n\n    return undefined;\n};\n\nconst collectStaticMemberPath = (\n    node: Readonly<TSESTree.Expression>\n): readonly string[] | undefined => {\n    if (node.type === AST_NODE_TYPES.Identifier) {\n        return [node.name];\n    }\n\n    if (node.type !== AST_NODE_TYPES.MemberExpression || node.optional) {\n        return undefined;\n    }\n\n    const objectPath = collectStaticMemberPath(node.object);\n    const propertyName = getStaticPropertyName(node.property, node.computed);\n\n    return !isDefined(objectPath) || !isDefined(propertyName)\n        ? undefined\n        : [...objectPath, propertyName];\n};\n\nconst isShadowedNavigatorIdentifier = (\n    context: TypedRuleContext,\n    identifier: Readonly<TSESTree.Identifier>\n): boolean => {\n    const scope = context.sourceCode.getScope(identifier);\n    const variable = getVariableInScopeChain(scope, identifier.name);\n\n    return variable !== null && variable.defs.length > 0;\n};\n\nconst getRootIdentifier = (\n    node: Readonly<TSESTree.Expression>\n): TSESTree.Identifier | undefined => {\n    if (node.type === AST_NODE_TYPES.Identifier) {\n        return node;\n    }\n\n    return node.type === AST_NODE_TYPES.MemberExpression\n        ? getRootIdentifier(node.object)\n        : undefined;\n};\n\nconst isNavigatorPathShadowed = (\n    context: TypedRuleContext,\n    callee: Readonly<TSESTree.CallExpression[\"callee\"]>\n): boolean => {\n    if (callee.type !== AST_NODE_TYPES.MemberExpression) {\n        return false;\n    }\n\n    const rootIdentifier = getRootIdentifier(callee.object);\n\n    return (\n        rootIdentifier?.name === \"navigator\" &&\n        isShadowedNavigatorIdentifier(context, rootIdentifier)\n    );\n};\n\nconst isGeolocationWatchPath = (path: readonly string[]): boolean =>\n    (path.length === 3 &&\n        arrayFirst(path) === \"navigator\" &&\n        path[1] === \"geolocation\" &&\n        path[2] === geolocationWatchFunctionName) ||\n    (path.length === 4 &&\n        setHas(globalNavigatorReceiverNameSet, arrayFirst(path) ?? \"\") &&\n        path[1] === \"navigator\" &&\n        path[2] === \"geolocation\" &&\n        path[3] === geolocationWatchFunctionName);\n\nconst isGeolocationWatchCall = (\n    context: TypedRuleContext,\n    callee: Readonly<TSESTree.CallExpression[\"callee\"]>\n): boolean => {\n    if (\n        callee.type !== AST_NODE_TYPES.MemberExpression ||\n        isNavigatorPathShadowed(context, callee)\n    ) {\n        return false;\n    }\n\n    const path = collectStaticMemberPath(callee);\n\n    return isDefined(path) && isGeolocationWatchPath(path);\n};\n\nconst isDiscardedWatchId = (\n    node: Readonly<TSESTree.CallExpression>\n): boolean => {\n    let current: Readonly<TSESTree.Node> = node;\n    let parent = getParentNode(current);\n\n    while (isDefined(parent)) {\n        const wrappedExpression = getTransparentWrappedExpression(parent);\n\n        if (wrappedExpression !== current) {\n            if (\n                parent.type === AST_NODE_TYPES.ExpressionStatement &&\n                parent.expression === current\n            ) {\n                return true;\n            }\n\n            if (\n                parent.type === AST_NODE_TYPES.UnaryExpression &&\n                parent.operator === \"void\" &&\n                parent.argument === current\n            ) {\n                const unaryParent = getParentNode(parent);\n\n                return unaryParent?.type === AST_NODE_TYPES.ExpressionStatement;\n            }\n\n            return false;\n        }\n\n        current = parent;\n        parent = getParentNode(current);\n    }\n\n    return false;\n};\n\n/** Rule implementation for `runtime-cleanup/no-floating-geolocation-watches`. */\nconst noFloatingGeolocationWatches: TSESLint.RuleModule<\n    \"floatingGeolocationWatch\",\n    readonly []\n> = createTypedRule({\n    create: (context) => ({\n        CallExpression(node: Readonly<TSESTree.CallExpression>) {\n            if (\n                !isGeolocationWatchCall(context, node.callee) ||\n                !isDiscardedWatchId(node)\n            ) {\n                return;\n            }\n\n            context.report({\n                messageId: \"floatingGeolocationWatch\",\n                node,\n            });\n        },\n    }),\n    defaultOptions: [],\n    meta: {\n        docs: {\n            description:\n                \"require geolocation watch IDs to be retained so they can be cleared.\",\n            recommended: true,\n            requiresTypeChecking: false,\n            runtimeCleanupConfigs: [\n                \"runtime-cleanup.configs.recommended\",\n                \"runtime-cleanup.configs.recommended-type-checked\",\n                \"runtime-cleanup.configs.strict\",\n                \"runtime-cleanup.configs.all\",\n            ],\n            url: createRuleDocsUrl(\"no-floating-geolocation-watches\"),\n        },\n        messages: {\n            floatingGeolocationWatch:\n                \"Store or return the geolocation watch ID so navigator.geolocation.clearWatch() can remove the location watcher during cleanup.\",\n        },\n        schema: [],\n        type: \"problem\",\n    },\n    name: \"no-floating-geolocation-watches\",\n});\n\nexport default noFloatingGeolocationWatches;\n", "/**\n * @packageDocumentation\n * Require infinite Web Animations to be retained so they can be canceled.\n */\nimport {\n    AST_NODE_TYPES,\n    type TSESLint,\n    type TSESTree,\n} from \"@typescript-eslint/utils\";\nimport { arrayAt, isDefined } from \"ts-extras\";\n\nimport {\n    getStaticPropertyName,\n    isDiscardedResourceExpression,\n    isImmediateUnownedMemberReceiver,\n} from \"../_internal/floating-resource.js\";\nimport { createRuleDocsUrl } from \"../_internal/rule-docs-url.js\";\nimport { getVariableInScopeChain } from \"../_internal/scope-variable.js\";\nimport { hasTypeNameInHierarchy } from \"../_internal/type-checker.js\";\nimport {\n    createTypedRule,\n    getTypedRuleServices,\n    type TypedRuleContext,\n} from \"../_internal/typed-rule.js\";\n\nconst animationCleanupMemberNames: ReadonlySet<string> = new Set([\n    \"cancel\",\n    \"finish\",\n]);\n\nconst isShadowedIdentifier = (\n    context: TypedRuleContext,\n    identifier: Readonly<TSESTree.Identifier>\n): boolean => {\n    const scope = context.sourceCode.getScope(identifier);\n    const variable = getVariableInScopeChain(scope, identifier.name);\n\n    return variable !== null && variable.defs.length > 0;\n};\n\nconst isGlobalInfinityIdentifier = (\n    context: TypedRuleContext,\n    node: Readonly<TSESTree.Identifier>\n): boolean => node.name === \"Infinity\" && !isShadowedIdentifier(context, node);\n\nconst isNumberPositiveInfinity = (\n    node: Readonly<TSESTree.MemberExpression>\n): boolean => {\n    if (node.optional) {\n        return false;\n    }\n\n    const propertyName = getStaticPropertyName(node.property, node.computed);\n\n    if (propertyName !== \"POSITIVE_INFINITY\") {\n        return false;\n    }\n\n    if (node.object.type === AST_NODE_TYPES.Identifier) {\n        return node.object.name === \"Number\";\n    }\n\n    if (node.object.type !== AST_NODE_TYPES.MemberExpression) {\n        return false;\n    }\n\n    const objectPropertyName = getStaticPropertyName(\n        node.object.property,\n        node.object.computed\n    );\n\n    return (\n        objectPropertyName === \"Number\" &&\n        node.object.object.type === AST_NODE_TYPES.Identifier &&\n        (node.object.object.name === \"globalThis\" ||\n            node.object.object.name === \"window\")\n    );\n};\n\nconst isInfinityExpression = (\n    context: TypedRuleContext,\n    node: Readonly<TSESTree.Expression>\n): boolean => {\n    if (node.type === AST_NODE_TYPES.Identifier) {\n        return isGlobalInfinityIdentifier(context, node);\n    }\n\n    if (\n        node.type === AST_NODE_TYPES.UnaryExpression &&\n        node.operator === \"+\" &&\n        node.argument.type === AST_NODE_TYPES.Identifier\n    ) {\n        return isGlobalInfinityIdentifier(context, node.argument);\n    }\n\n    return (\n        node.type === AST_NODE_TYPES.MemberExpression &&\n        isNumberPositiveInfinity(node)\n    );\n};\n\nconst getPropertyKeyName = (\n    property: Readonly<TSESTree.Property>\n): string | undefined => getStaticPropertyName(property.key, property.computed);\n\nconst isExpressionPropertyValue = (\n    node: Readonly<TSESTree.Property[\"value\"]>\n): node is TSESTree.Expression =>\n    node.type !== AST_NODE_TYPES.ArrayPattern &&\n    node.type !== AST_NODE_TYPES.AssignmentPattern &&\n    node.type !== AST_NODE_TYPES.ObjectPattern &&\n    node.type !== AST_NODE_TYPES.TSEmptyBodyFunctionExpression;\n\nconst hasInfiniteIterationsOption = (\n    context: TypedRuleContext,\n    options: Readonly<TSESTree.CallExpressionArgument>\n): boolean => {\n    if (options.type !== AST_NODE_TYPES.ObjectExpression) {\n        return false;\n    }\n\n    return options.properties.some((property) => {\n        if (\n            property.type !== AST_NODE_TYPES.Property ||\n            property.kind !== \"init\" ||\n            !isExpressionPropertyValue(property.value) ||\n            getPropertyKeyName(property) !== \"iterations\"\n        ) {\n            return false;\n        }\n\n        return isInfinityExpression(context, property.value);\n    });\n};\n\nconst getAnimationReceiver = (\n    callee: Readonly<TSESTree.CallExpression[\"callee\"]>\n): TSESTree.MemberExpression[\"object\"] | undefined => {\n    if (callee.type !== AST_NODE_TYPES.MemberExpression || callee.optional) {\n        return undefined;\n    }\n\n    if (callee.object.type === AST_NODE_TYPES.Super) {\n        return undefined;\n    }\n\n    const propertyName = getStaticPropertyName(\n        callee.property,\n        callee.computed\n    );\n\n    return propertyName === \"animate\" ? callee.object : undefined;\n};\n\nconst isReceiverElement = (\n    context: TypedRuleContext,\n    receiver: Readonly<TSESTree.Expression>\n): boolean => {\n    const { checker, parserServices } = getTypedRuleServices(context);\n    const receiverType = checker.getTypeAtLocation(\n        parserServices.esTreeNodeToTSNodeMap.get(receiver)\n    );\n\n    return hasTypeNameInHierarchy(checker, receiverType, \"Element\");\n};\n\n/** Rule implementation for `runtime-cleanup/no-floating-infinite-animations`. */\nconst noFloatingInfiniteAnimations: TSESLint.RuleModule<\n    \"floatingInfiniteAnimation\",\n    readonly []\n> = createTypedRule({\n    create(context) {\n        return {\n            CallExpression(node: Readonly<TSESTree.CallExpression>) {\n                const receiver = getAnimationReceiver(node.callee);\n                const timingOptions = arrayAt(node.arguments, 1);\n\n                if (\n                    !isDefined(receiver) ||\n                    !isDefined(timingOptions) ||\n                    !hasInfiniteIterationsOption(context, timingOptions) ||\n                    !isReceiverElement(context, receiver) ||\n                    (!isDiscardedResourceExpression(node) &&\n                        !isImmediateUnownedMemberReceiver(\n                            node,\n                            animationCleanupMemberNames\n                        ))\n                ) {\n                    return;\n                }\n\n                context.report({\n                    messageId: \"floatingInfiniteAnimation\",\n                    node,\n                });\n            },\n        };\n    },\n    defaultOptions: [],\n    meta: {\n        docs: {\n            description:\n                \"require infinite Web Animations to be retained so they can be canceled.\",\n            recommended: true,\n            requiresTypeChecking: true,\n            runtimeCleanupConfigs: [\n                \"runtime-cleanup.configs.recommended-type-checked\",\n                \"runtime-cleanup.configs.strict\",\n                \"runtime-cleanup.configs.all\",\n            ],\n            url: createRuleDocsUrl(\"no-floating-infinite-animations\"),\n        },\n        messages: {\n            floatingInfiniteAnimation:\n                \"Store or return the infinite Animation so cancel() can stop it during cleanup.\",\n        },\n        schema: [],\n        type: \"problem\",\n    },\n    name: \"no-floating-infinite-animations\",\n});\n\nexport default noFloatingInfiniteAnimations;\n", "/**\n * @packageDocumentation\n * Shared TypeScript checker helpers for low-noise type-aware rules.\n */\nimport type { Type, TypeChecker } from \"typescript\";\n\nimport { setHas } from \"ts-extras\";\n\n/**\n * Check whether a type or any type in its base hierarchy has a given symbol\n * name.\n */\nexport const hasTypeNameInHierarchy = (\n    checker: TypeChecker,\n    candidate: Type,\n    expectedTypeName: string,\n    seenTypes: ReadonlySet<Type> = new Set()\n): boolean => {\n    const seenCandidate: unknown = candidate;\n    if (setHas(seenTypes, seenCandidate)) {\n        return false;\n    }\n\n    const nextSeenTypes = new Set(seenTypes);\n    nextSeenTypes.add(candidate);\n\n    if (candidate.isUnionOrIntersection()) {\n        return candidate.types.some((entry: Type) =>\n            hasTypeNameInHierarchy(\n                checker,\n                entry,\n                expectedTypeName,\n                nextSeenTypes\n            )\n        );\n    }\n\n    const apparentType = checker.getApparentType(candidate);\n    const candidateName = apparentType.symbol.getName();\n\n    if (candidateName === expectedTypeName) {\n        return true;\n    }\n\n    if (!apparentType.isClassOrInterface()) {\n        return false;\n    }\n\n    const baseTypes = checker.getBaseTypes(apparentType);\n\n    return baseTypes.some((baseType) =>\n        hasTypeNameInHierarchy(\n            checker,\n            baseType,\n            expectedTypeName,\n            nextSeenTypes\n        )\n    );\n};\n", "import type { ArrayValues } from \"type-fest\";\n\n/**\n * @packageDocumentation\n * Require captured MediaStream handles to be retained so their tracks can be stopped.\n */\nimport {\n    AST_NODE_TYPES,\n    type TSESLint,\n    type TSESTree,\n} from \"@typescript-eslint/utils\";\nimport { arrayAt, arrayFirst, isDefined, setHas } from \"ts-extras\";\n\nimport { getParentNode } from \"../_internal/ast-node.js\";\nimport { createRuleDocsUrl } from \"../_internal/rule-docs-url.js\";\nimport { getVariableInScopeChain } from \"../_internal/scope-variable.js\";\nimport {\n    createTypedRule,\n    type TypedRuleContext,\n} from \"../_internal/typed-rule.js\";\n\nconst mediaCaptureFunctionNames = [\"getDisplayMedia\", \"getUserMedia\"] as const;\nconst globalNavigatorReceiverNames = [\"globalThis\", \"window\"] as const;\n\ntype MediaCaptureFunctionName = ArrayValues<typeof mediaCaptureFunctionNames>;\n\nconst mediaCaptureFunctionNameSet: ReadonlySet<string> = new Set(\n    mediaCaptureFunctionNames\n);\nconst globalNavigatorReceiverNameSet: ReadonlySet<string> = new Set(\n    globalNavigatorReceiverNames\n);\n\nconst isMediaCaptureFunctionName = (\n    name: string\n): name is MediaCaptureFunctionName =>\n    setHas(mediaCaptureFunctionNameSet, name);\n\nconst getTransparentWrappedExpression = (\n    node: Readonly<TSESTree.Node>\n): Readonly<TSESTree.Node> | undefined => {\n    if (node.type === AST_NODE_TYPES.AwaitExpression) {\n        return node.argument;\n    }\n\n    if (node.type === AST_NODE_TYPES.ChainExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSAsExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSNonNullExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSSatisfiesExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSTypeAssertion) {\n        return node.expression;\n    }\n\n    return undefined;\n};\n\nconst getStaticPropertyName = (\n    node: Readonly<TSESTree.MemberExpression[\"property\"]>,\n    computed: boolean\n): string | undefined => {\n    if (!computed && node.type === AST_NODE_TYPES.Identifier) {\n        return node.name;\n    }\n\n    if (\n        computed &&\n        node.type === AST_NODE_TYPES.Literal &&\n        typeof node.value === \"string\"\n    ) {\n        return node.value;\n    }\n\n    return undefined;\n};\n\nconst collectStaticMemberPath = (\n    node: Readonly<TSESTree.Expression>\n): readonly string[] | undefined => {\n    if (node.type === AST_NODE_TYPES.Identifier) {\n        return [node.name];\n    }\n\n    if (node.type !== AST_NODE_TYPES.MemberExpression || node.optional) {\n        return undefined;\n    }\n\n    const objectPath = collectStaticMemberPath(node.object);\n    const propertyName = getStaticPropertyName(node.property, node.computed);\n\n    return !isDefined(objectPath) || !isDefined(propertyName)\n        ? undefined\n        : [...objectPath, propertyName];\n};\n\nconst isShadowedNavigatorIdentifier = (\n    context: TypedRuleContext,\n    identifier: Readonly<TSESTree.Identifier>\n): boolean => {\n    const scope = context.sourceCode.getScope(identifier);\n    const variable = getVariableInScopeChain(scope, identifier.name);\n\n    return variable !== null && variable.defs.length > 0;\n};\n\nconst getRootIdentifier = (\n    node: Readonly<TSESTree.Expression>\n): TSESTree.Identifier | undefined => {\n    if (node.type === AST_NODE_TYPES.Identifier) {\n        return node;\n    }\n\n    return node.type === AST_NODE_TYPES.MemberExpression\n        ? getRootIdentifier(node.object)\n        : undefined;\n};\n\nconst isNavigatorPathShadowed = (\n    context: TypedRuleContext,\n    callee: Readonly<TSESTree.CallExpression[\"callee\"]>\n): boolean => {\n    if (callee.type !== AST_NODE_TYPES.MemberExpression) {\n        return false;\n    }\n\n    const rootIdentifier = getRootIdentifier(callee.object);\n\n    return (\n        rootIdentifier?.name === \"navigator\" &&\n        isShadowedNavigatorIdentifier(context, rootIdentifier)\n    );\n};\n\nconst getMediaCaptureNameFromPath = (\n    path: readonly string[]\n): MediaCaptureFunctionName | undefined => {\n    const captureName = arrayAt(path, -1);\n\n    if (!isDefined(captureName) || !isMediaCaptureFunctionName(captureName)) {\n        return undefined;\n    }\n\n    if (\n        path.length === 3 &&\n        arrayFirst(path) === \"navigator\" &&\n        path[1] === \"mediaDevices\"\n    ) {\n        return captureName;\n    }\n\n    if (\n        path.length === 4 &&\n        setHas(globalNavigatorReceiverNameSet, arrayFirst(path) ?? \"\") &&\n        path[1] === \"navigator\" &&\n        path[2] === \"mediaDevices\"\n    ) {\n        return captureName;\n    }\n\n    return undefined;\n};\n\nconst getMediaCaptureFunctionName = (\n    context: TypedRuleContext,\n    callee: Readonly<TSESTree.CallExpression[\"callee\"]>\n): MediaCaptureFunctionName | undefined => {\n    if (\n        callee.type !== AST_NODE_TYPES.MemberExpression ||\n        isNavigatorPathShadowed(context, callee)\n    ) {\n        return undefined;\n    }\n\n    const path = collectStaticMemberPath(callee);\n\n    return isDefined(path) ? getMediaCaptureNameFromPath(path) : undefined;\n};\n\nconst isDiscardedMediaStreamRequest = (\n    node: Readonly<TSESTree.CallExpression>\n): boolean => {\n    let current: Readonly<TSESTree.Node> = node;\n    let parent = getParentNode(current);\n\n    while (isDefined(parent)) {\n        const wrappedExpression = getTransparentWrappedExpression(parent);\n\n        if (wrappedExpression !== current) {\n            if (\n                parent.type === AST_NODE_TYPES.ExpressionStatement &&\n                parent.expression === current\n            ) {\n                return true;\n            }\n\n            if (\n                parent.type === AST_NODE_TYPES.UnaryExpression &&\n                parent.operator === \"void\" &&\n                parent.argument === current\n            ) {\n                const unaryParent = getParentNode(parent);\n\n                return unaryParent?.type === AST_NODE_TYPES.ExpressionStatement;\n            }\n\n            return false;\n        }\n\n        current = parent;\n        parent = getParentNode(current);\n    }\n\n    return false;\n};\n\n/** Rule implementation for `runtime-cleanup/no-floating-media-streams`. */\nconst noFloatingMediaStreams: TSESLint.RuleModule<\n    \"floatingMediaStream\",\n    readonly []\n> = createTypedRule({\n    create: (context) => ({\n        CallExpression(node: Readonly<TSESTree.CallExpression>) {\n            const captureName = getMediaCaptureFunctionName(\n                context,\n                node.callee\n            );\n\n            if (\n                !isDefined(captureName) ||\n                !isDiscardedMediaStreamRequest(node)\n            ) {\n                return;\n            }\n\n            context.report({\n                data: { captureName },\n                messageId: \"floatingMediaStream\",\n                node,\n            });\n        },\n    }),\n    defaultOptions: [],\n    meta: {\n        docs: {\n            description:\n                \"require captured MediaStream handles to be retained so their tracks can be stopped.\",\n            recommended: true,\n            requiresTypeChecking: false,\n            runtimeCleanupConfigs: [\n                \"runtime-cleanup.configs.recommended\",\n                \"runtime-cleanup.configs.recommended-type-checked\",\n                \"runtime-cleanup.configs.strict\",\n                \"runtime-cleanup.configs.all\",\n            ],\n            url: createRuleDocsUrl(\"no-floating-media-streams\"),\n        },\n        messages: {\n            floatingMediaStream:\n                \"Store or return the MediaStream from {{captureName}} so its tracks can be stopped during cleanup.\",\n        },\n        schema: [],\n        type: \"problem\",\n    },\n    name: \"no-floating-media-streams\",\n});\n\nexport default noFloatingMediaStreams;\n", "/**\n * @packageDocumentation\n * Require MessageChannel ports to be retained so they can be closed.\n */\nimport {\n    AST_NODE_TYPES,\n    type TSESLint,\n    type TSESTree,\n} from \"@typescript-eslint/utils\";\nimport { isDefined, setHas } from \"ts-extras\";\n\nimport { getParentNode } from \"../_internal/ast-node.js\";\nimport { createRuleDocsUrl } from \"../_internal/rule-docs-url.js\";\nimport { getVariableInScopeChain } from \"../_internal/scope-variable.js\";\nimport {\n    createTypedRule,\n    type TypedRuleContext,\n} from \"../_internal/typed-rule.js\";\n\nconst messageChannelConstructorName = \"MessageChannel\";\nconst messagePortPropertyNames = [\"port1\", \"port2\"] as const;\nconst globalReceiverNames = [\n    \"globalThis\",\n    \"self\",\n    \"window\",\n] as const;\n\nconst globalReceiverNameSet: ReadonlySet<string> = new Set(globalReceiverNames);\nconst messagePortPropertyNameSet: ReadonlySet<string> = new Set(\n    messagePortPropertyNames\n);\n\nconst isGlobalReceiverName = (name: string): boolean =>\n    setHas(globalReceiverNameSet, name);\n\nconst isMessagePortPropertyName = (name: string): boolean =>\n    setHas(messagePortPropertyNameSet, name);\n\nconst getTransparentWrappedExpression = (\n    node: Readonly<TSESTree.Node>\n): Readonly<TSESTree.Node> | undefined => {\n    if (node.type === AST_NODE_TYPES.ChainExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSAsExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSNonNullExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSSatisfiesExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSTypeAssertion) {\n        return node.expression;\n    }\n\n    return undefined;\n};\n\nconst getStaticPropertyName = (\n    node: Readonly<TSESTree.MemberExpression[\"property\"]>,\n    computed: boolean\n): string | undefined => {\n    if (!computed && node.type === AST_NODE_TYPES.Identifier) {\n        return node.name;\n    }\n\n    if (\n        computed &&\n        node.type === AST_NODE_TYPES.Literal &&\n        typeof node.value === \"string\"\n    ) {\n        return node.value;\n    }\n\n    return undefined;\n};\n\nconst isShadowedMessageChannelIdentifier = (\n    context: TypedRuleContext,\n    identifier: Readonly<TSESTree.Identifier>\n): boolean => {\n    const scope = context.sourceCode.getScope(identifier);\n    const variable = getVariableInScopeChain(scope, identifier.name);\n\n    return variable !== null && variable.defs.length > 0;\n};\n\nconst isDirectMessageChannelConstructor = (\n    context: TypedRuleContext,\n    callee: Readonly<TSESTree.NewExpression[\"callee\"]>\n): boolean =>\n    callee.type === AST_NODE_TYPES.Identifier &&\n    callee.name === messageChannelConstructorName &&\n    !isShadowedMessageChannelIdentifier(context, callee);\n\nconst isMemberMessageChannelConstructor = (\n    callee: Readonly<TSESTree.NewExpression[\"callee\"]>\n): boolean =>\n    callee.type === AST_NODE_TYPES.MemberExpression &&\n    !callee.optional &&\n    callee.object.type === AST_NODE_TYPES.Identifier &&\n    isGlobalReceiverName(callee.object.name) &&\n    getStaticPropertyName(callee.property, callee.computed) ===\n        messageChannelConstructorName;\n\nconst isMessageChannelConstructor = (\n    context: TypedRuleContext,\n    callee: Readonly<TSESTree.NewExpression[\"callee\"]>\n): boolean =>\n    isDirectMessageChannelConstructor(context, callee) ||\n    isMemberMessageChannelConstructor(callee);\n\nconst isDiscardedMessageChannel = (\n    node: Readonly<TSESTree.NewExpression>\n): boolean => {\n    let current: Readonly<TSESTree.Node> = node;\n    let parent = getParentNode(current);\n\n    while (isDefined(parent)) {\n        const wrappedExpression = getTransparentWrappedExpression(parent);\n\n        if (wrappedExpression !== current) {\n            if (\n                parent.type === AST_NODE_TYPES.ExpressionStatement &&\n                parent.expression === current\n            ) {\n                return true;\n            }\n\n            if (\n                parent.type === AST_NODE_TYPES.UnaryExpression &&\n                parent.operator === \"void\" &&\n                parent.argument === current\n            ) {\n                const unaryParent = getParentNode(parent);\n\n                return unaryParent?.type === AST_NODE_TYPES.ExpressionStatement;\n            }\n\n            return false;\n        }\n\n        current = parent;\n        parent = getParentNode(current);\n    }\n\n    return false;\n};\n\nconst isImmediateMessagePortAccess = (\n    node: Readonly<TSESTree.NewExpression>\n): boolean => {\n    let current: Readonly<TSESTree.Node> = node;\n    let parent = getParentNode(current);\n\n    while (isDefined(parent)) {\n        const wrappedExpression = getTransparentWrappedExpression(parent);\n\n        if (wrappedExpression !== current) {\n            if (\n                parent.type !== AST_NODE_TYPES.MemberExpression ||\n                parent.object !== current ||\n                parent.optional\n            ) {\n                return false;\n            }\n\n            const propertyName = getStaticPropertyName(\n                parent.property,\n                parent.computed\n            );\n\n            return (\n                isDefined(propertyName) &&\n                isMessagePortPropertyName(propertyName)\n            );\n        }\n\n        current = parent;\n        parent = getParentNode(current);\n    }\n\n    return false;\n};\n\n/** Rule implementation for `runtime-cleanup/no-floating-message-channels`. */\nconst noFloatingMessageChannels: TSESLint.RuleModule<\n    \"floatingMessageChannel\",\n    readonly []\n> = createTypedRule({\n    create: (context) => ({\n        NewExpression(node: Readonly<TSESTree.NewExpression>) {\n            if (\n                !isMessageChannelConstructor(context, node.callee) ||\n                (!isDiscardedMessageChannel(node) &&\n                    !isImmediateMessagePortAccess(node))\n            ) {\n                return;\n            }\n\n            context.report({\n                messageId: \"floatingMessageChannel\",\n                node,\n            });\n        },\n    }),\n    defaultOptions: [],\n    meta: {\n        docs: {\n            description:\n                \"require MessageChannel ports to be retained so they can be closed.\",\n            recommended: true,\n            requiresTypeChecking: false,\n            runtimeCleanupConfigs: [\n                \"runtime-cleanup.configs.recommended\",\n                \"runtime-cleanup.configs.recommended-type-checked\",\n                \"runtime-cleanup.configs.strict\",\n                \"runtime-cleanup.configs.all\",\n            ],\n            url: createRuleDocsUrl(\"no-floating-message-channels\"),\n        },\n        messages: {\n            floatingMessageChannel:\n                \"Store or return the MessageChannel handle or both MessagePort handles so the ports can be closed during cleanup.\",\n        },\n        schema: [],\n        type: \"problem\",\n    },\n    name: \"no-floating-message-channels\",\n});\n\nexport default noFloatingMessageChannels;\n", "import type { ArrayValues } from \"type-fest\";\n\n/**\n * @packageDocumentation\n * Require browser network connection handles to be retained so they can be closed.\n */\nimport {\n    AST_NODE_TYPES,\n    type TSESLint,\n    type TSESTree,\n} from \"@typescript-eslint/utils\";\nimport { isDefined, setHas } from \"ts-extras\";\n\nimport { getParentNode } from \"../_internal/ast-node.js\";\nimport { createRuleDocsUrl } from \"../_internal/rule-docs-url.js\";\nimport { getVariableInScopeChain } from \"../_internal/scope-variable.js\";\nimport {\n    createTypedRule,\n    type TypedRuleContext,\n} from \"../_internal/typed-rule.js\";\n\nconst networkConnectionConstructorNames = [\"EventSource\", \"WebSocket\"] as const;\nconst globalReceiverNames = [\n    \"globalThis\",\n    \"self\",\n    \"window\",\n] as const;\n\ntype NetworkConnectionConstructorName = ArrayValues<\n    typeof networkConnectionConstructorNames\n>;\n\nconst networkConnectionConstructorNameSet: ReadonlySet<string> = new Set(\n    networkConnectionConstructorNames\n);\nconst globalReceiverNameSet: ReadonlySet<string> = new Set(globalReceiverNames);\n\nconst isNetworkConnectionConstructorName = (\n    name: string\n): name is NetworkConnectionConstructorName =>\n    setHas(networkConnectionConstructorNameSet, name);\n\nconst isGlobalReceiverName = (name: string): boolean =>\n    setHas(globalReceiverNameSet, name);\n\nconst getTransparentWrappedExpression = (\n    node: Readonly<TSESTree.Node>\n): Readonly<TSESTree.Node> | undefined => {\n    if (node.type === AST_NODE_TYPES.ChainExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSAsExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSNonNullExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSSatisfiesExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSTypeAssertion) {\n        return node.expression;\n    }\n\n    return undefined;\n};\n\nconst getStaticPropertyName = (\n    node: Readonly<TSESTree.MemberExpression[\"property\"]>,\n    computed: boolean\n): string | undefined => {\n    if (!computed && node.type === AST_NODE_TYPES.Identifier) {\n        return node.name;\n    }\n\n    if (\n        computed &&\n        node.type === AST_NODE_TYPES.Literal &&\n        typeof node.value === \"string\"\n    ) {\n        return node.value;\n    }\n\n    return undefined;\n};\n\nconst isShadowedNetworkConnectionIdentifier = (\n    context: TypedRuleContext,\n    identifier: Readonly<TSESTree.Identifier>\n): boolean => {\n    const scope = context.sourceCode.getScope(identifier);\n    const variable = getVariableInScopeChain(scope, identifier.name);\n\n    return variable !== null && variable.defs.length > 0;\n};\n\nconst getDirectNetworkConnectionConstructorName = (\n    context: TypedRuleContext,\n    callee: Readonly<TSESTree.NewExpression[\"callee\"]>\n): NetworkConnectionConstructorName | undefined => {\n    if (\n        callee.type !== AST_NODE_TYPES.Identifier ||\n        !isNetworkConnectionConstructorName(callee.name) ||\n        isShadowedNetworkConnectionIdentifier(context, callee)\n    ) {\n        return undefined;\n    }\n\n    return callee.name;\n};\n\nconst getMemberNetworkConnectionConstructorName = (\n    callee: Readonly<TSESTree.NewExpression[\"callee\"]>\n): NetworkConnectionConstructorName | undefined => {\n    if (\n        callee.type !== AST_NODE_TYPES.MemberExpression ||\n        callee.optional ||\n        callee.object.type !== AST_NODE_TYPES.Identifier ||\n        !isGlobalReceiverName(callee.object.name)\n    ) {\n        return undefined;\n    }\n\n    const constructorName = getStaticPropertyName(\n        callee.property,\n        callee.computed\n    );\n\n    return isDefined(constructorName) &&\n        isNetworkConnectionConstructorName(constructorName)\n        ? constructorName\n        : undefined;\n};\n\nconst getNetworkConnectionConstructorName = (\n    context: TypedRuleContext,\n    callee: Readonly<TSESTree.NewExpression[\"callee\"]>\n): NetworkConnectionConstructorName | undefined =>\n    getDirectNetworkConnectionConstructorName(context, callee) ??\n    getMemberNetworkConnectionConstructorName(callee);\n\nconst isDiscardedNetworkConnection = (\n    node: Readonly<TSESTree.NewExpression>\n): boolean => {\n    let current: Readonly<TSESTree.Node> = node;\n    let parent = getParentNode(current);\n\n    while (isDefined(parent)) {\n        const wrappedExpression = getTransparentWrappedExpression(parent);\n\n        if (wrappedExpression !== current) {\n            if (\n                parent.type === AST_NODE_TYPES.ExpressionStatement &&\n                parent.expression === current\n            ) {\n                return true;\n            }\n\n            if (\n                parent.type === AST_NODE_TYPES.UnaryExpression &&\n                parent.operator === \"void\" &&\n                parent.argument === current\n            ) {\n                const unaryParent = getParentNode(parent);\n\n                return unaryParent?.type === AST_NODE_TYPES.ExpressionStatement;\n            }\n\n            return false;\n        }\n\n        current = parent;\n        parent = getParentNode(current);\n    }\n\n    return false;\n};\n\nconst isImmediateNetworkConnectionMethodReceiver = (\n    node: Readonly<TSESTree.NewExpression>\n): boolean => {\n    let current: Readonly<TSESTree.Node> = node;\n    let parent = getParentNode(current);\n\n    while (isDefined(parent)) {\n        const wrappedExpression = getTransparentWrappedExpression(parent);\n\n        if (wrappedExpression !== current) {\n            if (\n                parent.type !== AST_NODE_TYPES.MemberExpression ||\n                parent.object !== current ||\n                parent.optional\n            ) {\n                return false;\n            }\n\n            if (\n                getStaticPropertyName(parent.property, parent.computed) ===\n                \"close\"\n            ) {\n                return false;\n            }\n\n            const callExpression = getParentNode(parent);\n\n            return (\n                callExpression?.type === AST_NODE_TYPES.CallExpression &&\n                callExpression.callee === parent\n            );\n        }\n\n        current = parent;\n        parent = getParentNode(current);\n    }\n\n    return false;\n};\n\n/** Rule implementation for `runtime-cleanup/no-floating-network-connections`. */\nconst noFloatingNetworkConnections: TSESLint.RuleModule<\n    \"floatingNetworkConnection\",\n    readonly []\n> = createTypedRule({\n    create: (context) => ({\n        NewExpression(node: Readonly<TSESTree.NewExpression>) {\n            const connectionName = getNetworkConnectionConstructorName(\n                context,\n                node.callee\n            );\n\n            if (\n                !isDefined(connectionName) ||\n                (!isDiscardedNetworkConnection(node) &&\n                    !isImmediateNetworkConnectionMethodReceiver(node))\n            ) {\n                return;\n            }\n\n            context.report({\n                data: { connectionName },\n                messageId: \"floatingNetworkConnection\",\n                node,\n            });\n        },\n    }),\n    defaultOptions: [],\n    meta: {\n        docs: {\n            description:\n                \"require browser network connection handles to be retained so they can be closed.\",\n            recommended: true,\n            requiresTypeChecking: false,\n            runtimeCleanupConfigs: [\n                \"runtime-cleanup.configs.recommended\",\n                \"runtime-cleanup.configs.recommended-type-checked\",\n                \"runtime-cleanup.configs.strict\",\n                \"runtime-cleanup.configs.all\",\n            ],\n            url: createRuleDocsUrl(\"no-floating-network-connections\"),\n        },\n        messages: {\n            floatingNetworkConnection:\n                \"Store or return the {{connectionName}} handle so close() can release the connection during cleanup.\",\n        },\n        schema: [],\n        type: \"problem\",\n    },\n    name: \"no-floating-network-connections\",\n});\n\nexport default noFloatingNetworkConnections;\n", "/**\n * @packageDocumentation\n * Require object URLs to be retained so they can be revoked.\n */\nimport {\n    AST_NODE_TYPES,\n    type TSESLint,\n    type TSESTree,\n} from \"@typescript-eslint/utils\";\nimport { arrayFirst, isDefined, setHas } from \"ts-extras\";\n\nimport {\n    collectStaticMemberPath,\n    isDiscardedResourceExpression,\n} from \"../_internal/floating-resource.js\";\nimport { createRuleDocsUrl } from \"../_internal/rule-docs-url.js\";\nimport { getVariableInScopeChain } from \"../_internal/scope-variable.js\";\nimport {\n    createTypedRule,\n    type TypedRuleContext,\n} from \"../_internal/typed-rule.js\";\n\nconst globalUrlReceiverNames = [\n    \"globalThis\",\n    \"self\",\n    \"window\",\n] as const;\nconst globalUrlReceiverNameSet: ReadonlySet<string> = new Set(\n    globalUrlReceiverNames\n);\n\nconst getRootIdentifier = (\n    node: Readonly<TSESTree.Expression>\n): TSESTree.Identifier | undefined => {\n    if (node.type === AST_NODE_TYPES.Identifier) {\n        return node;\n    }\n\n    return node.type === AST_NODE_TYPES.MemberExpression\n        ? getRootIdentifier(node.object)\n        : undefined;\n};\n\nconst isShadowedIdentifier = (\n    context: TypedRuleContext,\n    identifier: Readonly<TSESTree.Identifier>\n): boolean => {\n    const scope = context.sourceCode.getScope(identifier);\n    const variable = getVariableInScopeChain(scope, identifier.name);\n\n    return variable !== null && variable.defs.length > 0;\n};\n\nconst isDirectUrlPath = (path: readonly string[]): boolean =>\n    path.length === 2 &&\n    arrayFirst(path) === \"URL\" &&\n    path[1] === \"createObjectURL\";\n\nconst isGlobalUrlPath = (path: readonly string[]): boolean =>\n    path.length === 3 &&\n    setHas(globalUrlReceiverNameSet, arrayFirst(path) ?? \"\") &&\n    path[1] === \"URL\" &&\n    path[2] === \"createObjectURL\";\n\nconst isObjectUrlCreateCall = (\n    context: TypedRuleContext,\n    callee: Readonly<TSESTree.CallExpression[\"callee\"]>\n): boolean => {\n    if (callee.type !== AST_NODE_TYPES.MemberExpression || callee.optional) {\n        return false;\n    }\n\n    const path = collectStaticMemberPath(callee);\n\n    if (\n        !isDefined(path) ||\n        (!isDirectUrlPath(path) && !isGlobalUrlPath(path))\n    ) {\n        return false;\n    }\n\n    const rootIdentifier = getRootIdentifier(callee.object);\n\n    return (\n        rootIdentifier?.name !== \"URL\" ||\n        !isShadowedIdentifier(context, rootIdentifier)\n    );\n};\n\n/** Rule implementation for `runtime-cleanup/no-floating-object-urls`. */\nconst noFloatingObjectUrls: TSESLint.RuleModule<\n    \"floatingObjectUrl\",\n    readonly []\n> = createTypedRule({\n    create: (context) => ({\n        CallExpression(node: Readonly<TSESTree.CallExpression>) {\n            if (\n                !isObjectUrlCreateCall(context, node.callee) ||\n                !isDiscardedResourceExpression(node)\n            ) {\n                return;\n            }\n\n            context.report({\n                messageId: \"floatingObjectUrl\",\n                node,\n            });\n        },\n    }),\n    defaultOptions: [],\n    meta: {\n        docs: {\n            description:\n                \"require object URLs to be retained so they can be revoked.\",\n            recommended: true,\n            requiresTypeChecking: false,\n            runtimeCleanupConfigs: [\n                \"runtime-cleanup.configs.recommended\",\n                \"runtime-cleanup.configs.recommended-type-checked\",\n                \"runtime-cleanup.configs.strict\",\n                \"runtime-cleanup.configs.all\",\n            ],\n            url: createRuleDocsUrl(\"no-floating-object-urls\"),\n        },\n        messages: {\n            floatingObjectUrl:\n                \"Store or return the object URL so URL.revokeObjectURL() can release the Blob or File when cleanup runs.\",\n        },\n        schema: [],\n        type: \"problem\",\n    },\n    name: \"no-floating-object-urls\",\n});\n\nexport default noFloatingObjectUrls;\n", "import type { ArrayValues } from \"type-fest\";\n\n/**\n * @packageDocumentation\n * Require observer instances to be retained so they can be disconnected.\n */\nimport {\n    AST_NODE_TYPES,\n    type TSESLint,\n    type TSESTree,\n} from \"@typescript-eslint/utils\";\nimport { isDefined, setHas } from \"ts-extras\";\n\nimport { getParentNode } from \"../_internal/ast-node.js\";\nimport { createRuleDocsUrl } from \"../_internal/rule-docs-url.js\";\nimport { getVariableInScopeChain } from \"../_internal/scope-variable.js\";\nimport {\n    createTypedRule,\n    type TypedRuleContext,\n} from \"../_internal/typed-rule.js\";\n\nconst observerConstructorNames = [\n    \"IntersectionObserver\",\n    \"MutationObserver\",\n    \"PerformanceObserver\",\n    \"ReportingObserver\",\n    \"ResizeObserver\",\n] as const;\n\nconst globalReceiverNames = [\n    \"globalThis\",\n    \"self\",\n    \"window\",\n] as const;\n\ntype ObserverConstructorName = ArrayValues<typeof observerConstructorNames>;\n\nconst globalReceiverNameSet: ReadonlySet<string> = new Set(globalReceiverNames);\nconst observerConstructorNameSet: ReadonlySet<string> = new Set(\n    observerConstructorNames\n);\n\nconst isGlobalReceiverName = (name: string): boolean =>\n    setHas(globalReceiverNameSet, name);\n\nconst isObserverConstructorName = (\n    name: string\n): name is ObserverConstructorName => setHas(observerConstructorNameSet, name);\n\nconst getTransparentWrappedExpression = (\n    node: Readonly<TSESTree.Node>\n): Readonly<TSESTree.Node> | undefined => {\n    if (node.type === AST_NODE_TYPES.ChainExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSAsExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSNonNullExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSSatisfiesExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSTypeAssertion) {\n        return node.expression;\n    }\n\n    return undefined;\n};\n\nconst isShadowedIdentifier = (\n    context: TypedRuleContext,\n    identifier: Readonly<TSESTree.Identifier>\n): boolean => {\n    const scope = context.sourceCode.getScope(identifier);\n    const variable = getVariableInScopeChain(scope, identifier.name);\n\n    return variable !== null && variable.defs.length > 0;\n};\n\nconst getDirectObserverConstructorName = (\n    context: TypedRuleContext,\n    callee: Readonly<TSESTree.NewExpression[\"callee\"]>\n): ObserverConstructorName | undefined => {\n    if (\n        callee.type !== AST_NODE_TYPES.Identifier ||\n        !isObserverConstructorName(callee.name) ||\n        isShadowedIdentifier(context, callee)\n    ) {\n        return undefined;\n    }\n\n    return callee.name;\n};\n\nconst getMemberObserverConstructorName = (\n    callee: Readonly<TSESTree.NewExpression[\"callee\"]>\n): ObserverConstructorName | undefined => {\n    if (\n        callee.type !== AST_NODE_TYPES.MemberExpression ||\n        callee.computed ||\n        callee.optional ||\n        callee.object.type !== AST_NODE_TYPES.Identifier ||\n        callee.property.type !== AST_NODE_TYPES.Identifier ||\n        !isGlobalReceiverName(callee.object.name) ||\n        !isObserverConstructorName(callee.property.name)\n    ) {\n        return undefined;\n    }\n\n    return callee.property.name;\n};\n\nconst getObserverConstructorName = (\n    context: TypedRuleContext,\n    callee: Readonly<TSESTree.NewExpression[\"callee\"]>\n): ObserverConstructorName | undefined =>\n    getDirectObserverConstructorName(context, callee) ??\n    getMemberObserverConstructorName(callee);\n\nconst isObserveMethodCallReceiver = (\n    node: Readonly<TSESTree.NewExpression>\n): boolean => {\n    let current: Readonly<TSESTree.Node> = node;\n    let parent = getParentNode(current);\n\n    while (isDefined(parent)) {\n        const wrappedExpression = getTransparentWrappedExpression(parent);\n\n        if (wrappedExpression !== current) {\n            if (\n                parent.type !== AST_NODE_TYPES.MemberExpression ||\n                parent.object !== current ||\n                parent.computed ||\n                parent.property.type !== AST_NODE_TYPES.Identifier ||\n                parent.property.name !== \"observe\"\n            ) {\n                return false;\n            }\n\n            const callExpression = getParentNode(parent);\n\n            return (\n                callExpression?.type === AST_NODE_TYPES.CallExpression &&\n                callExpression.callee === parent\n            );\n        }\n\n        current = parent;\n        parent = getParentNode(current);\n    }\n\n    return false;\n};\n\nconst isDiscardedObserverInstance = (\n    node: Readonly<TSESTree.NewExpression>\n): boolean => {\n    let current: Readonly<TSESTree.Node> = node;\n    let parent = getParentNode(current);\n\n    while (isDefined(parent)) {\n        const wrappedExpression = getTransparentWrappedExpression(parent);\n\n        if (wrappedExpression !== current) {\n            if (\n                parent.type === AST_NODE_TYPES.ExpressionStatement &&\n                parent.expression === current\n            ) {\n                return true;\n            }\n\n            if (\n                parent.type === AST_NODE_TYPES.UnaryExpression &&\n                parent.operator === \"void\" &&\n                parent.argument === current\n            ) {\n                const unaryParent = getParentNode(parent);\n\n                return unaryParent?.type === AST_NODE_TYPES.ExpressionStatement;\n            }\n\n            return false;\n        }\n\n        current = parent;\n        parent = getParentNode(current);\n    }\n\n    return false;\n};\n\n/** Rule implementation for `runtime-cleanup/no-floating-observers`. */\nconst noFloatingObservers: TSESLint.RuleModule<\n    \"floatingObserver\",\n    readonly []\n> = createTypedRule({\n    create: (context) => ({\n        NewExpression(node: Readonly<TSESTree.NewExpression>) {\n            const observerName = getObserverConstructorName(\n                context,\n                node.callee\n            );\n\n            if (\n                !isDefined(observerName) ||\n                (!isDiscardedObserverInstance(node) &&\n                    !isObserveMethodCallReceiver(node))\n            ) {\n                return;\n            }\n\n            context.report({\n                data: { observerName },\n                messageId: \"floatingObserver\",\n                node,\n            });\n        },\n    }),\n    defaultOptions: [],\n    meta: {\n        docs: {\n            description:\n                \"require observer instances to be retained so they can be disconnected during cleanup.\",\n            recommended: true,\n            requiresTypeChecking: false,\n            runtimeCleanupConfigs: [\n                \"runtime-cleanup.configs.recommended\",\n                \"runtime-cleanup.configs.recommended-type-checked\",\n                \"runtime-cleanup.configs.strict\",\n                \"runtime-cleanup.configs.all\",\n            ],\n            url: createRuleDocsUrl(\"no-floating-observers\"),\n        },\n        messages: {\n            floatingObserver:\n                \"Store or return the {{observerName}} instance so it can be disconnected during cleanup.\",\n        },\n        schema: [],\n        type: \"problem\",\n    },\n    name: \"no-floating-observers\",\n});\n\nexport default noFloatingObservers;\n", "import type { ArrayValues } from \"type-fest\";\n\n/**\n * @packageDocumentation\n * Require Node.js server handles to be retained so they can be closed.\n */\nimport {\n    AST_NODE_TYPES,\n    type TSESLint,\n    type TSESTree,\n} from \"@typescript-eslint/utils\";\nimport { arrayFirst, isDefined, setHas } from \"ts-extras\";\n\nimport { getParentNode } from \"../_internal/ast-node.js\";\nimport { createRuleDocsUrl } from \"../_internal/rule-docs-url.js\";\nimport { getVariableInScopeChain } from \"../_internal/scope-variable.js\";\nimport {\n    createTypedRule,\n    type TypedRuleContext,\n} from \"../_internal/typed-rule.js\";\n\nconst serverFactoryNames = [\"createSecureServer\", \"createServer\"] as const;\nconst http2OnlyServerFactoryNames = [\"createSecureServer\"] as const;\nconst serverModuleNames = [\n    \"http\",\n    \"http2\",\n    \"https\",\n    \"net\",\n    \"node:http\",\n    \"node:http2\",\n    \"node:https\",\n    \"node:net\",\n] as const;\nconst http2ServerModuleNames = [\"http2\", \"node:http2\"] as const;\nconst immediateCleanupMethodNames = [\"close\"] as const;\n\ntype ServerFactoryName = ArrayValues<typeof serverFactoryNames>;\n\nconst serverFactoryNameSet: ReadonlySet<string> = new Set(serverFactoryNames);\nconst http2OnlyServerFactoryNameSet: ReadonlySet<string> = new Set(\n    http2OnlyServerFactoryNames\n);\nconst serverModuleNameSet: ReadonlySet<string> = new Set(serverModuleNames);\nconst http2ServerModuleNameSet: ReadonlySet<string> = new Set(\n    http2ServerModuleNames\n);\nconst immediateCleanupMethodNameSet: ReadonlySet<string> = new Set(\n    immediateCleanupMethodNames\n);\n\nconst isServerFactoryName = (name: string): name is ServerFactoryName =>\n    setHas(serverFactoryNameSet, name);\n\nconst isHttp2OnlyServerFactoryName = (name: string): boolean =>\n    setHas(http2OnlyServerFactoryNameSet, name);\n\nconst isServerModuleSource = (source: string | undefined): boolean =>\n    isDefined(source) && setHas(serverModuleNameSet, source);\n\nconst isHttp2ServerModuleSource = (source: string | undefined): boolean =>\n    isDefined(source) && setHas(http2ServerModuleNameSet, source);\n\nconst isImmediateCleanupMethodName = (name: string): boolean =>\n    setHas(immediateCleanupMethodNameSet, name);\n\nconst isValidServerFactoryForSource = (\n    source: string | undefined,\n    factoryName: string\n): factoryName is ServerFactoryName =>\n    isServerModuleSource(source) &&\n    isServerFactoryName(factoryName) &&\n    (!isHttp2OnlyServerFactoryName(factoryName) ||\n        isHttp2ServerModuleSource(source));\n\nconst getTransparentWrappedExpression = (\n    node: Readonly<TSESTree.Node>\n): Readonly<TSESTree.Node> | undefined => {\n    if (node.type === AST_NODE_TYPES.ChainExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSAsExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSNonNullExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSSatisfiesExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSTypeAssertion) {\n        return node.expression;\n    }\n\n    return undefined;\n};\n\nconst getStaticPropertyName = (\n    node: Readonly<TSESTree.PropertyName>\n): string | undefined => {\n    if (node.type === AST_NODE_TYPES.Identifier) {\n        return node.name;\n    }\n\n    if (\n        node.type === AST_NODE_TYPES.Literal &&\n        typeof node.value === \"string\"\n    ) {\n        return node.value;\n    }\n\n    return undefined;\n};\n\nconst getImportSourceValue = (\n    node: Readonly<TSESTree.Node>\n): string | undefined => {\n    const parent = getParentNode(node);\n\n    if (\n        parent?.type === AST_NODE_TYPES.ImportDeclaration &&\n        typeof parent.source.value === \"string\"\n    ) {\n        return parent.source.value;\n    }\n\n    return undefined;\n};\n\nconst getRequireSourceValue = (\n    expression: Readonly<null | TSESTree.Expression>\n): string | undefined => {\n    if (\n        expression?.type !== AST_NODE_TYPES.CallExpression ||\n        expression.callee.type !== AST_NODE_TYPES.Identifier ||\n        expression.callee.name !== \"require\"\n    ) {\n        return undefined;\n    }\n\n    const [source] = expression.arguments;\n\n    return source?.type === AST_NODE_TYPES.Literal &&\n        typeof source.value === \"string\"\n        ? source.value\n        : undefined;\n};\n\nconst getDefinitionModuleSource = (\n    node: Readonly<TSESTree.Node>\n): string | undefined => {\n    if (\n        node.type === AST_NODE_TYPES.ImportDefaultSpecifier ||\n        node.type === AST_NODE_TYPES.ImportNamespaceSpecifier ||\n        node.type === AST_NODE_TYPES.ImportSpecifier\n    ) {\n        return getImportSourceValue(node);\n    }\n\n    if (node.type === AST_NODE_TYPES.VariableDeclarator) {\n        return getRequireSourceValue(node.init);\n    }\n\n    return undefined;\n};\n\nconst getDefinitionForIdentifier = (\n    context: TypedRuleContext,\n    identifier: Readonly<TSESTree.Identifier>\n) => {\n    const scope = context.sourceCode.getScope(identifier);\n    const variable = getVariableInScopeChain(scope, identifier.name);\n\n    return arrayFirst(variable?.defs ?? []);\n};\n\nconst getImportedSpecifierName = (\n    node: Readonly<TSESTree.ImportSpecifier>\n): string | undefined => getStaticPropertyName(node.imported);\n\nconst getObjectPatternPropertyNameForIdentifier = (\n    objectPattern: Readonly<TSESTree.ObjectPattern>,\n    identifierName: string\n): string | undefined => {\n    for (const property of objectPattern.properties) {\n        if (\n            property.type === AST_NODE_TYPES.Property &&\n            property.value.type === AST_NODE_TYPES.Identifier &&\n            property.value.name === identifierName\n        ) {\n            return getStaticPropertyName(property.key);\n        }\n    }\n\n    return undefined;\n};\n\nconst getModuleSourceForBinding = (\n    context: TypedRuleContext,\n    identifier: Readonly<TSESTree.Identifier>\n): string | undefined => {\n    const definition = getDefinitionForIdentifier(context, identifier);\n\n    return isDefined(definition)\n        ? getDefinitionModuleSource(definition.node)\n        : undefined;\n};\n\nconst getNamedServerFactoryBindingName = (\n    context: TypedRuleContext,\n    identifier: Readonly<TSESTree.Identifier>\n): ServerFactoryName | undefined => {\n    const definition = getDefinitionForIdentifier(context, identifier);\n\n    if (!isDefined(definition)) {\n        return undefined;\n    }\n\n    const source = getDefinitionModuleSource(definition.node);\n\n    if (definition.node.type === AST_NODE_TYPES.ImportSpecifier) {\n        const importedName = getImportedSpecifierName(definition.node);\n\n        return isDefined(importedName) &&\n            isValidServerFactoryForSource(source, importedName)\n            ? importedName\n            : undefined;\n    }\n\n    if (\n        definition.node.type === AST_NODE_TYPES.VariableDeclarator &&\n        definition.node.id.type === AST_NODE_TYPES.ObjectPattern\n    ) {\n        const propertyName = getObjectPatternPropertyNameForIdentifier(\n            definition.node.id,\n            identifier.name\n        );\n\n        return isDefined(propertyName) &&\n            isValidServerFactoryForSource(source, propertyName)\n            ? propertyName\n            : undefined;\n    }\n\n    return undefined;\n};\n\nconst getRequireMemberFactoryName = (\n    callee: Readonly<TSESTree.CallExpression[\"callee\"]>\n): ServerFactoryName | undefined => {\n    if (\n        callee.type !== AST_NODE_TYPES.MemberExpression ||\n        callee.computed ||\n        callee.optional ||\n        callee.property.type !== AST_NODE_TYPES.Identifier ||\n        callee.object.type !== AST_NODE_TYPES.CallExpression\n    ) {\n        return undefined;\n    }\n\n    const source = getRequireSourceValue(callee.object);\n    const factoryName = callee.property.name;\n\n    return isValidServerFactoryForSource(source, factoryName)\n        ? factoryName\n        : undefined;\n};\n\nconst getModuleMemberFactoryName = (\n    context: TypedRuleContext,\n    callee: Readonly<TSESTree.CallExpression[\"callee\"]>\n): ServerFactoryName | undefined => {\n    if (\n        callee.type !== AST_NODE_TYPES.MemberExpression ||\n        callee.computed ||\n        callee.optional ||\n        callee.object.type !== AST_NODE_TYPES.Identifier ||\n        callee.property.type !== AST_NODE_TYPES.Identifier\n    ) {\n        return undefined;\n    }\n\n    const source = getModuleSourceForBinding(context, callee.object);\n    const factoryName = callee.property.name;\n\n    return isValidServerFactoryForSource(source, factoryName)\n        ? factoryName\n        : undefined;\n};\n\nconst getServerFactoryName = (\n    context: TypedRuleContext,\n    callee: Readonly<TSESTree.CallExpression[\"callee\"]>\n): ServerFactoryName | undefined => {\n    if (callee.type === AST_NODE_TYPES.Identifier) {\n        return getNamedServerFactoryBindingName(context, callee);\n    }\n\n    return (\n        getModuleMemberFactoryName(context, callee) ??\n        getRequireMemberFactoryName(callee)\n    );\n};\n\nconst isDiscardedExpression = (node: Readonly<TSESTree.Node>): boolean => {\n    let current: Readonly<TSESTree.Node> = node;\n    let parent = getParentNode(current);\n\n    while (isDefined(parent)) {\n        const wrappedExpression = getTransparentWrappedExpression(parent);\n\n        if (wrappedExpression !== current) {\n            if (\n                parent.type === AST_NODE_TYPES.ExpressionStatement &&\n                parent.expression === current\n            ) {\n                return true;\n            }\n\n            if (\n                parent.type === AST_NODE_TYPES.UnaryExpression &&\n                parent.operator === \"void\" &&\n                parent.argument === current\n            ) {\n                const unaryParent = getParentNode(parent);\n\n                return unaryParent?.type === AST_NODE_TYPES.ExpressionStatement;\n            }\n\n            return false;\n        }\n\n        current = parent;\n        parent = getParentNode(current);\n    }\n\n    return false;\n};\n\nconst getImmediateServerMethodCall = (\n    node: Readonly<TSESTree.Node>\n): TSESTree.CallExpression | undefined => {\n    let current: Readonly<TSESTree.Node> = node;\n    let parent = getParentNode(current);\n\n    while (isDefined(parent)) {\n        const wrappedExpression = getTransparentWrappedExpression(parent);\n\n        if (wrappedExpression !== current) {\n            if (\n                parent.type !== AST_NODE_TYPES.MemberExpression ||\n                parent.object !== current ||\n                parent.computed ||\n                parent.property.type !== AST_NODE_TYPES.Identifier ||\n                isImmediateCleanupMethodName(parent.property.name)\n            ) {\n                return undefined;\n            }\n\n            const callExpression = getParentNode(parent);\n\n            return callExpression?.type === AST_NODE_TYPES.CallExpression &&\n                callExpression.callee === parent\n                ? callExpression\n                : undefined;\n        }\n\n        current = parent;\n        parent = getParentNode(current);\n    }\n\n    return undefined;\n};\n\nconst isDiscardedImmediateServerMethodChain = (\n    node: Readonly<TSESTree.CallExpression>\n): boolean => {\n    let currentCall = getImmediateServerMethodCall(node);\n\n    while (isDefined(currentCall)) {\n        if (isDiscardedExpression(currentCall)) {\n            return true;\n        }\n\n        currentCall = getImmediateServerMethodCall(currentCall);\n    }\n\n    return false;\n};\n\nconst isDiscardedServerHandle = (\n    node: Readonly<TSESTree.CallExpression>\n): boolean =>\n    isDiscardedExpression(node) || isDiscardedImmediateServerMethodChain(node);\n\n/** Rule implementation for `runtime-cleanup/no-floating-servers`. */\nconst noFloatingServers: TSESLint.RuleModule<\"floatingServer\", readonly []> =\n    createTypedRule({\n        create: (context) => ({\n            CallExpression(node: Readonly<TSESTree.CallExpression>) {\n                const factoryName = getServerFactoryName(context, node.callee);\n\n                if (!isDefined(factoryName) || !isDiscardedServerHandle(node)) {\n                    return;\n                }\n\n                context.report({\n                    data: { factoryName },\n                    messageId: \"floatingServer\",\n                    node,\n                });\n            },\n        }),\n        defaultOptions: [],\n        meta: {\n            docs: {\n                description:\n                    \"require Node.js server handles to be retained so they can be closed.\",\n                recommended: true,\n                requiresTypeChecking: false,\n                runtimeCleanupConfigs: [\n                    \"runtime-cleanup.configs.recommended\",\n                    \"runtime-cleanup.configs.recommended-type-checked\",\n                    \"runtime-cleanup.configs.strict\",\n                    \"runtime-cleanup.configs.all\",\n                ],\n                url: createRuleDocsUrl(\"no-floating-servers\"),\n            },\n            messages: {\n                floatingServer:\n                    \"Store or return the server from {{factoryName}} so close() can stop it during cleanup.\",\n            },\n            schema: [],\n            type: \"problem\",\n        },\n        name: \"no-floating-servers\",\n    });\n\nexport default noFloatingServers;\n", "import type { ArrayValues } from \"type-fest\";\n\n/**\n * @packageDocumentation\n * Require Node.js file stream handles to be retained so they can be closed during cleanup.\n */\nimport {\n    AST_NODE_TYPES,\n    type TSESLint,\n    type TSESTree,\n} from \"@typescript-eslint/utils\";\nimport { arrayFirst, isDefined, setHas } from \"ts-extras\";\n\nimport { getParentNode } from \"../_internal/ast-node.js\";\nimport { createRuleDocsUrl } from \"../_internal/rule-docs-url.js\";\nimport { getVariableInScopeChain } from \"../_internal/scope-variable.js\";\nimport {\n    createTypedRule,\n    type TypedRuleContext,\n} from \"../_internal/typed-rule.js\";\n\nconst fileStreamFactoryNames = [\n    \"createReadStream\",\n    \"createWriteStream\",\n] as const;\nconst fsModuleNames = [\"fs\", \"node:fs\"] as const;\n\ntype FileStreamFactoryName = ArrayValues<typeof fileStreamFactoryNames>;\n\nconst fileStreamFactoryNameSet: ReadonlySet<string> = new Set(\n    fileStreamFactoryNames\n);\nconst fsModuleNameSet: ReadonlySet<string> = new Set(fsModuleNames);\n\nconst isFileStreamFactoryName = (name: string): name is FileStreamFactoryName =>\n    setHas(fileStreamFactoryNameSet, name);\n\nconst getTransparentWrappedExpression = (\n    node: Readonly<TSESTree.Node>\n): Readonly<TSESTree.Node> | undefined => {\n    if (node.type === AST_NODE_TYPES.ChainExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSAsExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSNonNullExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSSatisfiesExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSTypeAssertion) {\n        return node.expression;\n    }\n\n    return undefined;\n};\n\nconst getStaticPropertyName = (\n    node: Readonly<TSESTree.PropertyName>\n): string | undefined => {\n    if (node.type === AST_NODE_TYPES.Identifier) {\n        return node.name;\n    }\n\n    if (\n        node.type === AST_NODE_TYPES.Literal &&\n        typeof node.value === \"string\"\n    ) {\n        return node.value;\n    }\n\n    return undefined;\n};\n\nconst getImportSourceValue = (\n    node: Readonly<TSESTree.Node>\n): string | undefined => {\n    const parent = getParentNode(node);\n\n    if (\n        parent?.type === AST_NODE_TYPES.ImportDeclaration &&\n        typeof parent.source.value === \"string\"\n    ) {\n        return parent.source.value;\n    }\n\n    return undefined;\n};\n\nconst getRequireSourceValue = (\n    expression: Readonly<null | TSESTree.Expression>\n): string | undefined => {\n    if (\n        expression?.type !== AST_NODE_TYPES.CallExpression ||\n        expression.callee.type !== AST_NODE_TYPES.Identifier ||\n        expression.callee.name !== \"require\"\n    ) {\n        return undefined;\n    }\n\n    const [source] = expression.arguments;\n\n    return source?.type === AST_NODE_TYPES.Literal &&\n        typeof source.value === \"string\"\n        ? source.value\n        : undefined;\n};\n\nconst getDefinitionModuleSource = (\n    node: Readonly<TSESTree.Node>\n): string | undefined => {\n    if (\n        node.type === AST_NODE_TYPES.ImportDefaultSpecifier ||\n        node.type === AST_NODE_TYPES.ImportNamespaceSpecifier ||\n        node.type === AST_NODE_TYPES.ImportSpecifier\n    ) {\n        return getImportSourceValue(node);\n    }\n\n    if (node.type === AST_NODE_TYPES.VariableDeclarator) {\n        return getRequireSourceValue(node.init);\n    }\n\n    return undefined;\n};\n\nconst getImportedSpecifierName = (\n    node: Readonly<TSESTree.ImportSpecifier>\n): string | undefined => getStaticPropertyName(node.imported);\n\nconst getObjectPatternPropertyNameForIdentifier = (\n    objectPattern: Readonly<TSESTree.ObjectPattern>,\n    identifierName: string\n): string | undefined => {\n    for (const property of objectPattern.properties) {\n        if (\n            property.type === AST_NODE_TYPES.Property &&\n            property.value.type === AST_NODE_TYPES.Identifier &&\n            property.value.name === identifierName\n        ) {\n            return getStaticPropertyName(property.key);\n        }\n    }\n\n    return undefined;\n};\n\nconst isFsModuleSource = (source: string | undefined): boolean =>\n    isDefined(source) && setHas(fsModuleNameSet, source);\n\nconst getDefinitionForIdentifier = (\n    context: TypedRuleContext,\n    identifier: Readonly<TSESTree.Identifier>\n) => {\n    const scope = context.sourceCode.getScope(identifier);\n    const variable = getVariableInScopeChain(scope, identifier.name);\n\n    return arrayFirst(variable?.defs ?? []);\n};\n\nconst isFsModuleBinding = (\n    context: TypedRuleContext,\n    identifier: Readonly<TSESTree.Identifier>\n): boolean => {\n    const definition = getDefinitionForIdentifier(context, identifier);\n\n    return (\n        isDefined(definition) &&\n        isFsModuleSource(getDefinitionModuleSource(definition.node))\n    );\n};\n\nconst getNamedFileStreamFactoryBindingName = (\n    context: TypedRuleContext,\n    identifier: Readonly<TSESTree.Identifier>\n): FileStreamFactoryName | undefined => {\n    const definition = getDefinitionForIdentifier(context, identifier);\n\n    if (!isDefined(definition)) {\n        return undefined;\n    }\n\n    const source = getDefinitionModuleSource(definition.node);\n\n    if (!isFsModuleSource(source)) {\n        return undefined;\n    }\n\n    if (definition.node.type === AST_NODE_TYPES.ImportSpecifier) {\n        const importedName = getImportedSpecifierName(definition.node);\n\n        return isDefined(importedName) && isFileStreamFactoryName(importedName)\n            ? importedName\n            : undefined;\n    }\n\n    if (\n        definition.node.type === AST_NODE_TYPES.VariableDeclarator &&\n        definition.node.id.type === AST_NODE_TYPES.ObjectPattern\n    ) {\n        const propertyName = getObjectPatternPropertyNameForIdentifier(\n            definition.node.id,\n            identifier.name\n        );\n\n        return isDefined(propertyName) && isFileStreamFactoryName(propertyName)\n            ? propertyName\n            : undefined;\n    }\n\n    return undefined;\n};\n\nconst getRequireMemberFactoryName = (\n    callee: Readonly<TSESTree.CallExpression[\"callee\"]>\n): FileStreamFactoryName | undefined => {\n    if (\n        callee.type !== AST_NODE_TYPES.MemberExpression ||\n        callee.computed ||\n        callee.optional ||\n        callee.property.type !== AST_NODE_TYPES.Identifier ||\n        !isFileStreamFactoryName(callee.property.name) ||\n        callee.object.type !== AST_NODE_TYPES.CallExpression ||\n        !isFsModuleSource(getRequireSourceValue(callee.object))\n    ) {\n        return undefined;\n    }\n\n    return callee.property.name;\n};\n\nconst getModuleMemberFactoryName = (\n    context: TypedRuleContext,\n    callee: Readonly<TSESTree.CallExpression[\"callee\"]>\n): FileStreamFactoryName | undefined => {\n    if (\n        callee.type !== AST_NODE_TYPES.MemberExpression ||\n        callee.computed ||\n        callee.optional ||\n        callee.object.type !== AST_NODE_TYPES.Identifier ||\n        callee.property.type !== AST_NODE_TYPES.Identifier ||\n        !isFileStreamFactoryName(callee.property.name) ||\n        !isFsModuleBinding(context, callee.object)\n    ) {\n        return undefined;\n    }\n\n    return callee.property.name;\n};\n\nconst getFileStreamFactoryName = (\n    context: TypedRuleContext,\n    callee: Readonly<TSESTree.CallExpression[\"callee\"]>\n): FileStreamFactoryName | undefined => {\n    if (callee.type === AST_NODE_TYPES.Identifier) {\n        return getNamedFileStreamFactoryBindingName(context, callee);\n    }\n\n    return (\n        getModuleMemberFactoryName(context, callee) ??\n        getRequireMemberFactoryName(callee)\n    );\n};\n\nconst isDiscardedFileStreamHandle = (\n    node: Readonly<TSESTree.CallExpression>\n): boolean => {\n    let current: Readonly<TSESTree.Node> = node;\n    let parent = getParentNode(current);\n\n    while (isDefined(parent)) {\n        const wrappedExpression = getTransparentWrappedExpression(parent);\n\n        if (wrappedExpression !== current) {\n            if (\n                parent.type === AST_NODE_TYPES.ExpressionStatement &&\n                parent.expression === current\n            ) {\n                return true;\n            }\n\n            if (\n                parent.type === AST_NODE_TYPES.UnaryExpression &&\n                parent.operator === \"void\" &&\n                parent.argument === current\n            ) {\n                const unaryParent = getParentNode(parent);\n\n                return unaryParent?.type === AST_NODE_TYPES.ExpressionStatement;\n            }\n\n            return false;\n        }\n\n        current = parent;\n        parent = getParentNode(current);\n    }\n\n    return false;\n};\n\n/** Rule implementation for `runtime-cleanup/no-floating-streams`. */\nconst noFloatingStreams: TSESLint.RuleModule<\"floatingStream\", readonly []> =\n    createTypedRule({\n        create: (context) => ({\n            CallExpression(node: Readonly<TSESTree.CallExpression>) {\n                const factoryName = getFileStreamFactoryName(\n                    context,\n                    node.callee\n                );\n\n                if (\n                    !isDefined(factoryName) ||\n                    !isDiscardedFileStreamHandle(node)\n                ) {\n                    return;\n                }\n\n                context.report({\n                    data: { factoryName },\n                    messageId: \"floatingStream\",\n                    node,\n                });\n            },\n        }),\n        defaultOptions: [],\n        meta: {\n            docs: {\n                description:\n                    \"require Node.js file stream handles to be retained so they can be closed during cleanup.\",\n                recommended: true,\n                requiresTypeChecking: false,\n                runtimeCleanupConfigs: [\n                    \"runtime-cleanup.configs.recommended\",\n                    \"runtime-cleanup.configs.recommended-type-checked\",\n                    \"runtime-cleanup.configs.strict\",\n                    \"runtime-cleanup.configs.all\",\n                ],\n                url: createRuleDocsUrl(\"no-floating-streams\"),\n            },\n            messages: {\n                floatingStream:\n                    \"Store, return, pipe, or destroy the stream from {{factoryName}} so cleanup can close its underlying resource.\",\n            },\n            schema: [],\n            type: \"problem\",\n        },\n        name: \"no-floating-streams\",\n    });\n\nexport default noFloatingStreams;\n", "import type { ArrayValues } from \"type-fest\";\n\n/**\n * @packageDocumentation\n * Require timer handles to be retained so they can be cleared during cleanup.\n */\nimport {\n    AST_NODE_TYPES,\n    type TSESLint,\n    type TSESTree,\n} from \"@typescript-eslint/utils\";\nimport { isDefined, setHas } from \"ts-extras\";\n\nimport { isDiscardedResourceExpression } from \"../_internal/floating-resource.js\";\nimport { createRuleDocsUrl } from \"../_internal/rule-docs-url.js\";\nimport { getVariableInScopeChain } from \"../_internal/scope-variable.js\";\nimport {\n    createTypedRule,\n    type TypedRuleContext,\n} from \"../_internal/typed-rule.js\";\n\nconst timerFunctionNames = [\n    \"requestAnimationFrame\",\n    \"requestIdleCallback\",\n    \"setImmediate\",\n    \"setInterval\",\n    \"setTimeout\",\n] as const;\n\nconst globalReceiverNames = [\n    \"global\",\n    \"globalThis\",\n    \"self\",\n    \"window\",\n] as const;\n\ntype TimerFunctionName = ArrayValues<typeof timerFunctionNames>;\n\nconst timerFunctionNameSet: ReadonlySet<string> = new Set(timerFunctionNames);\nconst globalReceiverNameSet: ReadonlySet<string> = new Set(globalReceiverNames);\n\nconst isTimerFunctionName = (name: string): name is TimerFunctionName =>\n    setHas(timerFunctionNameSet, name);\n\nconst isGlobalReceiverName = (name: string): boolean =>\n    setHas(globalReceiverNameSet, name);\n\nconst isDiscardedTimerHandle = (\n    node: Readonly<TSESTree.CallExpression>\n): boolean => isDiscardedResourceExpression(node);\n\nconst isShadowedIdentifier = (\n    context: TypedRuleContext,\n    identifier: Readonly<TSESTree.Identifier>\n): boolean => {\n    const scope = context.sourceCode.getScope(identifier);\n    const variable = getVariableInScopeChain(scope, identifier.name);\n\n    return variable !== null && variable.defs.length > 0;\n};\n\nconst getDirectTimerName = (\n    context: TypedRuleContext,\n    callee: Readonly<TSESTree.CallExpression[\"callee\"]>\n): TimerFunctionName | undefined => {\n    if (\n        callee.type !== AST_NODE_TYPES.Identifier ||\n        !isTimerFunctionName(callee.name) ||\n        isShadowedIdentifier(context, callee)\n    ) {\n        return undefined;\n    }\n\n    return callee.name;\n};\n\nconst getMemberTimerName = (\n    callee: Readonly<TSESTree.CallExpression[\"callee\"]>\n): TimerFunctionName | undefined => {\n    if (\n        callee.type !== AST_NODE_TYPES.MemberExpression ||\n        callee.computed ||\n        callee.optional ||\n        callee.object.type !== AST_NODE_TYPES.Identifier ||\n        callee.property.type !== AST_NODE_TYPES.Identifier ||\n        !isGlobalReceiverName(callee.object.name) ||\n        !isTimerFunctionName(callee.property.name)\n    ) {\n        return undefined;\n    }\n\n    return callee.property.name;\n};\n\n/** Rule implementation for `runtime-cleanup/no-floating-timers`. */\nconst noFloatingTimers: TSESLint.RuleModule<\"floatingTimer\", readonly []> =\n    createTypedRule({\n        create(context) {\n            const reportFloatingTimer = (\n                node: Readonly<TSESTree.CallExpression>,\n                timerName: TimerFunctionName\n            ): void => {\n                if (!isDiscardedTimerHandle(node)) {\n                    return;\n                }\n\n                context.report({\n                    data: { timerName },\n                    messageId: \"floatingTimer\",\n                    node,\n                });\n            };\n\n            return {\n                'CallExpression[callee.type=\"Identifier\"]'(\n                    node: TSESTree.CallExpression\n                ) {\n                    const timerName = getDirectTimerName(context, node.callee);\n\n                    if (isDefined(timerName)) {\n                        reportFloatingTimer(node, timerName);\n                    }\n                },\n                'CallExpression[callee.type=\"MemberExpression\"]'(\n                    node: TSESTree.CallExpression\n                ) {\n                    const timerName = getMemberTimerName(node.callee);\n\n                    if (isDefined(timerName)) {\n                        reportFloatingTimer(node, timerName);\n                    }\n                },\n            };\n        },\n        defaultOptions: [],\n        meta: {\n            docs: {\n                description:\n                    \"require timer handles to be retained so they can be cleared during cleanup.\",\n                recommended: true,\n                requiresTypeChecking: false,\n                runtimeCleanupConfigs: [\n                    \"runtime-cleanup.configs.recommended\",\n                    \"runtime-cleanup.configs.recommended-type-checked\",\n                    \"runtime-cleanup.configs.strict\",\n                    \"runtime-cleanup.configs.all\",\n                ],\n                url: createRuleDocsUrl(\"no-floating-timers\"),\n            },\n            messages: {\n                floatingTimer:\n                    \"Store or return the {{timerName}} handle so it can be cleared during cleanup.\",\n            },\n            schema: [],\n            type: \"problem\",\n        },\n        name: \"no-floating-timers\",\n    });\n\nexport default noFloatingTimers;\n", "/**\n * @packageDocumentation\n * Require WakeLockSentinel handles to be retained so they can be released.\n */\nimport {\n    AST_NODE_TYPES,\n    type TSESLint,\n    type TSESTree,\n} from \"@typescript-eslint/utils\";\nimport { arrayFirst, isDefined, setHas } from \"ts-extras\";\n\nimport { getParentNode } from \"../_internal/ast-node.js\";\nimport { createRuleDocsUrl } from \"../_internal/rule-docs-url.js\";\nimport { getVariableInScopeChain } from \"../_internal/scope-variable.js\";\nimport {\n    createTypedRule,\n    type TypedRuleContext,\n} from \"../_internal/typed-rule.js\";\n\nconst wakeLockRequestFunctionName = \"request\";\nconst globalNavigatorReceiverNames = [\"globalThis\", \"window\"] as const;\n\nconst globalNavigatorReceiverNameSet: ReadonlySet<string> = new Set(\n    globalNavigatorReceiverNames\n);\n\nconst getTransparentWrappedExpression = (\n    node: Readonly<TSESTree.Node>\n): Readonly<TSESTree.Node> | undefined => {\n    if (node.type === AST_NODE_TYPES.AwaitExpression) {\n        return node.argument;\n    }\n\n    if (node.type === AST_NODE_TYPES.ChainExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSAsExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSNonNullExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSSatisfiesExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSTypeAssertion) {\n        return node.expression;\n    }\n\n    return undefined;\n};\n\nconst getStaticPropertyName = (\n    node: Readonly<TSESTree.MemberExpression[\"property\"]>,\n    computed: boolean\n): string | undefined => {\n    if (!computed && node.type === AST_NODE_TYPES.Identifier) {\n        return node.name;\n    }\n\n    if (\n        computed &&\n        node.type === AST_NODE_TYPES.Literal &&\n        typeof node.value === \"string\"\n    ) {\n        return node.value;\n    }\n\n    return undefined;\n};\n\nconst collectStaticMemberPath = (\n    node: Readonly<TSESTree.Expression>\n): readonly string[] | undefined => {\n    if (node.type === AST_NODE_TYPES.Identifier) {\n        return [node.name];\n    }\n\n    if (node.type !== AST_NODE_TYPES.MemberExpression || node.optional) {\n        return undefined;\n    }\n\n    const objectPath = collectStaticMemberPath(node.object);\n    const propertyName = getStaticPropertyName(node.property, node.computed);\n\n    return !isDefined(objectPath) || !isDefined(propertyName)\n        ? undefined\n        : [...objectPath, propertyName];\n};\n\nconst isShadowedNavigatorIdentifier = (\n    context: TypedRuleContext,\n    identifier: Readonly<TSESTree.Identifier>\n): boolean => {\n    const scope = context.sourceCode.getScope(identifier);\n    const variable = getVariableInScopeChain(scope, identifier.name);\n\n    return variable !== null && variable.defs.length > 0;\n};\n\nconst getRootIdentifier = (\n    node: Readonly<TSESTree.Expression>\n): TSESTree.Identifier | undefined => {\n    if (node.type === AST_NODE_TYPES.Identifier) {\n        return node;\n    }\n\n    return node.type === AST_NODE_TYPES.MemberExpression\n        ? getRootIdentifier(node.object)\n        : undefined;\n};\n\nconst isNavigatorPathShadowed = (\n    context: TypedRuleContext,\n    callee: Readonly<TSESTree.CallExpression[\"callee\"]>\n): boolean => {\n    if (callee.type !== AST_NODE_TYPES.MemberExpression) {\n        return false;\n    }\n\n    const rootIdentifier = getRootIdentifier(callee.object);\n\n    return (\n        rootIdentifier?.name === \"navigator\" &&\n        isShadowedNavigatorIdentifier(context, rootIdentifier)\n    );\n};\n\nconst isWakeLockRequestPath = (path: readonly string[]): boolean =>\n    (path.length === 3 &&\n        arrayFirst(path) === \"navigator\" &&\n        path[1] === \"wakeLock\" &&\n        path[2] === wakeLockRequestFunctionName) ||\n    (path.length === 4 &&\n        setHas(globalNavigatorReceiverNameSet, arrayFirst(path) ?? \"\") &&\n        path[1] === \"navigator\" &&\n        path[2] === \"wakeLock\" &&\n        path[3] === wakeLockRequestFunctionName);\n\nconst isWakeLockRequestCall = (\n    context: TypedRuleContext,\n    callee: Readonly<TSESTree.CallExpression[\"callee\"]>\n): boolean => {\n    if (\n        callee.type !== AST_NODE_TYPES.MemberExpression ||\n        isNavigatorPathShadowed(context, callee)\n    ) {\n        return false;\n    }\n\n    const path = collectStaticMemberPath(callee);\n\n    return isDefined(path) && isWakeLockRequestPath(path);\n};\n\nconst isDiscardedWakeLockRequest = (\n    node: Readonly<TSESTree.CallExpression>\n): boolean => {\n    let current: Readonly<TSESTree.Node> = node;\n    let parent = getParentNode(current);\n\n    while (isDefined(parent)) {\n        const wrappedExpression = getTransparentWrappedExpression(parent);\n\n        if (wrappedExpression !== current) {\n            if (\n                parent.type === AST_NODE_TYPES.ExpressionStatement &&\n                parent.expression === current\n            ) {\n                return true;\n            }\n\n            if (\n                parent.type === AST_NODE_TYPES.UnaryExpression &&\n                parent.operator === \"void\" &&\n                parent.argument === current\n            ) {\n                const unaryParent = getParentNode(parent);\n\n                return unaryParent?.type === AST_NODE_TYPES.ExpressionStatement;\n            }\n\n            return false;\n        }\n\n        current = parent;\n        parent = getParentNode(current);\n    }\n\n    return false;\n};\n\n/** Rule implementation for `runtime-cleanup/no-floating-wake-locks`. */\nconst noFloatingWakeLocks: TSESLint.RuleModule<\n    \"floatingWakeLock\",\n    readonly []\n> = createTypedRule({\n    create: (context) => ({\n        CallExpression(node: Readonly<TSESTree.CallExpression>) {\n            if (\n                !isWakeLockRequestCall(context, node.callee) ||\n                !isDiscardedWakeLockRequest(node)\n            ) {\n                return;\n            }\n\n            context.report({\n                messageId: \"floatingWakeLock\",\n                node,\n            });\n        },\n    }),\n    defaultOptions: [],\n    meta: {\n        docs: {\n            description:\n                \"require WakeLockSentinel handles to be retained so they can be released.\",\n            recommended: true,\n            requiresTypeChecking: false,\n            runtimeCleanupConfigs: [\n                \"runtime-cleanup.configs.recommended\",\n                \"runtime-cleanup.configs.recommended-type-checked\",\n                \"runtime-cleanup.configs.strict\",\n                \"runtime-cleanup.configs.all\",\n            ],\n            url: createRuleDocsUrl(\"no-floating-wake-locks\"),\n        },\n        messages: {\n            floatingWakeLock:\n                \"Store or return the WakeLockSentinel so release() can release the wake lock during cleanup.\",\n        },\n        schema: [],\n        type: \"problem\",\n    },\n    name: \"no-floating-wake-locks\",\n});\n\nexport default noFloatingWakeLocks;\n", "import type { ArrayValues } from \"type-fest\";\n\n/**\n * @packageDocumentation\n * Require Web Stream readers and writers to be retained so their locks can be released.\n */\nimport {\n    AST_NODE_TYPES,\n    type TSESLint,\n    type TSESTree,\n} from \"@typescript-eslint/utils\";\nimport { isDefined, setHas } from \"ts-extras\";\n\nimport {\n    getStaticPropertyName,\n    isDiscardedResourceExpression,\n    isImmediateUnownedMemberReceiver,\n} from \"../_internal/floating-resource.js\";\nimport { createRuleDocsUrl } from \"../_internal/rule-docs-url.js\";\nimport { hasTypeNameInHierarchy } from \"../_internal/type-checker.js\";\nimport {\n    createTypedRule,\n    getTypedRuleServices,\n    type TypedRuleContext,\n} from \"../_internal/typed-rule.js\";\n\nconst lockFactoryNames = [\"getReader\", \"getWriter\"] as const;\nconst cleanupMemberNames: ReadonlySet<string> = new Set([\"releaseLock\"]);\n\ntype LockFactoryMetadata = Readonly<{\n    lockKind: \"reader\" | \"writer\";\n    streamTypeName: \"ReadableStream\" | \"WritableStream\";\n}>;\n\ntype LockFactoryName = ArrayValues<typeof lockFactoryNames>;\n\nconst lockFactoryMetadataByName: Readonly<\n    Record<LockFactoryName, LockFactoryMetadata>\n> = {\n    getReader: {\n        lockKind: \"reader\",\n        streamTypeName: \"ReadableStream\",\n    },\n    getWriter: {\n        lockKind: \"writer\",\n        streamTypeName: \"WritableStream\",\n    },\n};\nconst lockFactoryNameSet: ReadonlySet<string> = new Set(lockFactoryNames);\n\nconst isLockFactoryName = (name: string): name is LockFactoryName =>\n    setHas(lockFactoryNameSet, name);\n\nconst getLockFactoryMetadata = (\n    callee: Readonly<TSESTree.CallExpression[\"callee\"]>\n):\n    | (LockFactoryMetadata &\n          Readonly<{ receiver: TSESTree.MemberExpression[\"object\"] }>)\n    | undefined => {\n    if (callee.type !== AST_NODE_TYPES.MemberExpression || callee.optional) {\n        return undefined;\n    }\n\n    if (callee.object.type === AST_NODE_TYPES.Super) {\n        return undefined;\n    }\n\n    const factoryName = getStaticPropertyName(callee.property, callee.computed);\n\n    if (!isDefined(factoryName) || !isLockFactoryName(factoryName)) {\n        return undefined;\n    }\n\n    return {\n        ...lockFactoryMetadataByName[factoryName],\n        receiver: callee.object,\n    };\n};\n\nconst isReceiverExpectedWebStream = (\n    context: TypedRuleContext,\n    receiver: Readonly<TSESTree.Expression>,\n    streamTypeName: LockFactoryMetadata[\"streamTypeName\"]\n): boolean => {\n    const { checker, parserServices } = getTypedRuleServices(context);\n    const receiverType = checker.getTypeAtLocation(\n        parserServices.esTreeNodeToTSNodeMap.get(receiver)\n    );\n\n    return hasTypeNameInHierarchy(checker, receiverType, streamTypeName);\n};\n\n/** Rule implementation for `runtime-cleanup/no-floating-web-stream-locks`. */\nconst noFloatingWebStreamLocks: TSESLint.RuleModule<\n    \"floatingWebStreamLock\",\n    readonly []\n> = createTypedRule({\n    create: (context) => ({\n        CallExpression(node: Readonly<TSESTree.CallExpression>) {\n            const metadata = getLockFactoryMetadata(node.callee);\n\n            if (\n                !isDefined(metadata) ||\n                !isReceiverExpectedWebStream(\n                    context,\n                    metadata.receiver,\n                    metadata.streamTypeName\n                ) ||\n                (!isDiscardedResourceExpression(node) &&\n                    !isImmediateUnownedMemberReceiver(node, cleanupMemberNames))\n            ) {\n                return;\n            }\n\n            context.report({\n                data: { lockKind: metadata.lockKind },\n                messageId: \"floatingWebStreamLock\",\n                node,\n            });\n        },\n    }),\n    defaultOptions: [],\n    meta: {\n        docs: {\n            description:\n                \"require Web Stream readers and writers to be retained so their locks can be released.\",\n            recommended: true,\n            requiresTypeChecking: true,\n            runtimeCleanupConfigs: [\n                \"runtime-cleanup.configs.recommended-type-checked\",\n                \"runtime-cleanup.configs.strict\",\n                \"runtime-cleanup.configs.all\",\n            ],\n            url: createRuleDocsUrl(\"no-floating-web-stream-locks\"),\n        },\n        messages: {\n            floatingWebStreamLock:\n                \"Store or return the Web Stream {{lockKind}} so releaseLock() can release the stream lock during cleanup.\",\n        },\n        schema: [],\n        type: \"problem\",\n    },\n    name: \"no-floating-web-stream-locks\",\n});\n\nexport default noFloatingWebStreamLocks;\n", "import type { ArrayValues } from \"type-fest\";\n\n/**\n * @packageDocumentation\n * Require worker handles to be retained so they can be terminated during cleanup.\n */\nimport {\n    AST_NODE_TYPES,\n    type TSESLint,\n    type TSESTree,\n} from \"@typescript-eslint/utils\";\nimport { arrayFirst, isDefined, setHas } from \"ts-extras\";\n\nimport { getParentNode } from \"../_internal/ast-node.js\";\nimport { createRuleDocsUrl } from \"../_internal/rule-docs-url.js\";\nimport { getVariableInScopeChain } from \"../_internal/scope-variable.js\";\nimport {\n    createTypedRule,\n    type TypedRuleContext,\n} from \"../_internal/typed-rule.js\";\n\nconst browserWorkerConstructorNames = [\"SharedWorker\", \"Worker\"] as const;\nconst globalReceiverNames = [\n    \"globalThis\",\n    \"self\",\n    \"window\",\n] as const;\nconst workerThreadsModuleNames = [\n    \"node:worker_threads\",\n    \"worker_threads\",\n] as const;\n\ntype BrowserWorkerConstructorName = ArrayValues<\n    typeof browserWorkerConstructorNames\n>;\n\nconst browserWorkerConstructorNameSet: ReadonlySet<string> = new Set(\n    browserWorkerConstructorNames\n);\nconst globalReceiverNameSet: ReadonlySet<string> = new Set(globalReceiverNames);\nconst workerThreadsModuleNameSet: ReadonlySet<string> = new Set(\n    workerThreadsModuleNames\n);\n\nconst isBrowserWorkerConstructorName = (\n    name: string\n): name is BrowserWorkerConstructorName =>\n    setHas(browserWorkerConstructorNameSet, name);\n\nconst isGlobalReceiverName = (name: string): boolean =>\n    setHas(globalReceiverNameSet, name);\n\nconst getTransparentWrappedExpression = (\n    node: Readonly<TSESTree.Node>\n): Readonly<TSESTree.Node> | undefined => {\n    if (node.type === AST_NODE_TYPES.ChainExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSAsExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSNonNullExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSSatisfiesExpression) {\n        return node.expression;\n    }\n\n    if (node.type === AST_NODE_TYPES.TSTypeAssertion) {\n        return node.expression;\n    }\n\n    return undefined;\n};\n\nconst getImportSourceValue = (\n    node: Readonly<TSESTree.Node>\n): string | undefined => {\n    const parent = getParentNode(node);\n\n    if (\n        parent?.type === AST_NODE_TYPES.ImportDeclaration &&\n        typeof parent.source.value === \"string\"\n    ) {\n        return parent.source.value;\n    }\n\n    return undefined;\n};\n\nconst isWorkerThreadsImportBinding = (\n    context: TypedRuleContext,\n    identifier: Readonly<TSESTree.Identifier>\n): boolean => {\n    const scope = context.sourceCode.getScope(identifier);\n    const variable = getVariableInScopeChain(scope, identifier.name);\n    const definition = arrayFirst(variable?.defs ?? []);\n\n    const importSource = isDefined(definition)\n        ? getImportSourceValue(definition.node)\n        : undefined;\n\n    return (\n        identifier.name === \"Worker\" &&\n        isDefined(importSource) &&\n        setHas(workerThreadsModuleNameSet, importSource)\n    );\n};\n\nconst isShadowedBrowserWorkerIdentifier = (\n    context: TypedRuleContext,\n    identifier: Readonly<TSESTree.Identifier>\n): boolean => {\n    const scope = context.sourceCode.getScope(identifier);\n    const variable = getVariableInScopeChain(scope, identifier.name);\n\n    return variable !== null && variable.defs.length > 0;\n};\n\nconst getDirectWorkerConstructorName = (\n    context: TypedRuleContext,\n    callee: Readonly<TSESTree.NewExpression[\"callee\"]>\n): BrowserWorkerConstructorName | undefined => {\n    if (\n        callee.type !== AST_NODE_TYPES.Identifier ||\n        !isBrowserWorkerConstructorName(callee.name)\n    ) {\n        return undefined;\n    }\n\n    if (isWorkerThreadsImportBinding(context, callee)) {\n        return \"Worker\";\n    }\n\n    return isShadowedBrowserWorkerIdentifier(context, callee)\n        ? undefined\n        : callee.name;\n};\n\nconst getMemberWorkerConstructorName = (\n    callee: Readonly<TSESTree.NewExpression[\"callee\"]>\n): BrowserWorkerConstructorName | undefined => {\n    if (\n        callee.type !== AST_NODE_TYPES.MemberExpression ||\n        callee.computed ||\n        callee.optional ||\n        callee.object.type !== AST_NODE_TYPES.Identifier ||\n        callee.property.type !== AST_NODE_TYPES.Identifier ||\n        !isGlobalReceiverName(callee.object.name) ||\n        !isBrowserWorkerConstructorName(callee.property.name)\n    ) {\n        return undefined;\n    }\n\n    return callee.property.name;\n};\n\nconst getWorkerConstructorName = (\n    context: TypedRuleContext,\n    callee: Readonly<TSESTree.NewExpression[\"callee\"]>\n): BrowserWorkerConstructorName | undefined =>\n    getDirectWorkerConstructorName(context, callee) ??\n    getMemberWorkerConstructorName(callee);\n\nconst isDiscardedWorkerInstance = (\n    node: Readonly<TSESTree.NewExpression>\n): boolean => {\n    let current: Readonly<TSESTree.Node> = node;\n    let parent = getParentNode(current);\n\n    while (isDefined(parent)) {\n        const wrappedExpression = getTransparentWrappedExpression(parent);\n\n        if (wrappedExpression !== current) {\n            if (\n                parent.type === AST_NODE_TYPES.ExpressionStatement &&\n                parent.expression === current\n            ) {\n                return true;\n            }\n\n            if (\n                parent.type === AST_NODE_TYPES.UnaryExpression &&\n                parent.operator === \"void\" &&\n                parent.argument === current\n            ) {\n                const unaryParent = getParentNode(parent);\n\n                return unaryParent?.type === AST_NODE_TYPES.ExpressionStatement;\n            }\n\n            return false;\n        }\n\n        current = parent;\n        parent = getParentNode(current);\n    }\n\n    return false;\n};\n\nconst isImmediateWorkerMethodReceiver = (\n    node: Readonly<TSESTree.NewExpression>\n): boolean => {\n    let current: Readonly<TSESTree.Node> = node;\n    let parent = getParentNode(current);\n\n    while (isDefined(parent)) {\n        const wrappedExpression = getTransparentWrappedExpression(parent);\n\n        if (wrappedExpression !== current) {\n            if (\n                parent.type !== AST_NODE_TYPES.MemberExpression ||\n                parent.object !== current ||\n                parent.computed ||\n                parent.property.type !== AST_NODE_TYPES.Identifier ||\n                parent.property.name === \"terminate\"\n            ) {\n                return false;\n            }\n\n            const callExpression = getParentNode(parent);\n\n            return (\n                callExpression?.type === AST_NODE_TYPES.CallExpression &&\n                callExpression.callee === parent\n            );\n        }\n\n        current = parent;\n        parent = getParentNode(current);\n    }\n\n    return false;\n};\n\n/** Rule implementation for `runtime-cleanup/no-floating-workers`. */\nconst noFloatingWorkers: TSESLint.RuleModule<\"floatingWorker\", readonly []> =\n    createTypedRule({\n        create: (context) => ({\n            NewExpression(node: Readonly<TSESTree.NewExpression>) {\n                const workerName = getWorkerConstructorName(\n                    context,\n                    node.callee\n                );\n\n                if (\n                    !isDefined(workerName) ||\n                    (!isDiscardedWorkerInstance(node) &&\n                        !isImmediateWorkerMethodReceiver(node))\n                ) {\n                    return;\n                }\n\n                context.report({\n                    data: { workerName },\n                    messageId: \"floatingWorker\",\n                    node,\n                });\n            },\n        }),\n        defaultOptions: [],\n        meta: {\n            docs: {\n                description:\n                    \"require worker handles to be retained so they can be terminated during cleanup.\",\n                recommended: true,\n                requiresTypeChecking: false,\n                runtimeCleanupConfigs: [\n                    \"runtime-cleanup.configs.recommended\",\n                    \"runtime-cleanup.configs.recommended-type-checked\",\n                    \"runtime-cleanup.configs.strict\",\n                    \"runtime-cleanup.configs.all\",\n                ],\n                url: createRuleDocsUrl(\"no-floating-workers\"),\n            },\n            messages: {\n                floatingWorker:\n                    \"Store or return the {{workerName}} handle so it can be terminated during cleanup.\",\n            },\n            schema: [],\n            type: \"problem\",\n        },\n        name: \"no-floating-workers\",\n    });\n\nexport default noFloatingWorkers;\n", "/**\n * @packageDocumentation\n * Require event listeners to have an explicit cleanup path.\n */\nimport {\n    AST_NODE_TYPES,\n    type TSESLint,\n    type TSESTree,\n} from \"@typescript-eslint/utils\";\nimport { arrayFirst, isDefined, setHas, stringSplit } from \"ts-extras\";\n\nimport { getParentNode } from \"../_internal/ast-node.js\";\nimport { createRuleDocsUrl } from \"../_internal/rule-docs-url.js\";\nimport { getVariableInScopeChain } from \"../_internal/scope-variable.js\";\nimport {\n    createTypedRule,\n    type TypedRuleContext,\n} from \"../_internal/typed-rule.js\";\n\ntype AddEventListenerRecord = Readonly<{\n    cleanupKey: EventListenerCleanupKey;\n    node: TSESTree.CallExpression;\n}>;\n\ntype CleanupBoundary =\n    | TSESTree.ArrowFunctionExpression\n    | TSESTree.FunctionDeclaration\n    | TSESTree.FunctionExpression\n    | TSESTree.Program;\n\ntype EventListenerCleanupKey =\n    `${string}\\u{0}${string}\\u{0}${string}\\u{0}${string}`;\ntype ReadonlyCleanupBoundary = Readonly<CleanupBoundary>;\n\nconst unknownCaptureKey = \"*\";\n\nconst isCleanupBoundary = (\n    node: Readonly<TSESTree.Node>\n): node is CleanupBoundary =>\n    node.type === AST_NODE_TYPES.Program ||\n    node.type === AST_NODE_TYPES.FunctionDeclaration ||\n    node.type === AST_NODE_TYPES.FunctionExpression ||\n    node.type === AST_NODE_TYPES.ArrowFunctionExpression;\n\nconst getCleanupBoundary = (node: Readonly<TSESTree.Node>): CleanupBoundary => {\n    let current: Readonly<TSESTree.Node> | undefined = node;\n\n    while (isDefined(current)) {\n        if (isCleanupBoundary(current)) {\n            return current;\n        }\n\n        current = getParentNode(current);\n    }\n\n    throw new TypeError(\"Expected an addEventListener call to have a program.\");\n};\n\nconst getStaticPropertyName = (\n    property: Readonly<TSESTree.PrivateIdentifier | TSESTree.PropertyName>\n): string | undefined => {\n    if (property.type === AST_NODE_TYPES.Identifier) {\n        return property.name;\n    }\n\n    if (\n        property.type === AST_NODE_TYPES.Literal &&\n        typeof property.value === \"string\"\n    ) {\n        return property.value;\n    }\n\n    return undefined;\n};\n\nconst isMethodCallNamed = (\n    callee: Readonly<TSESTree.CallExpression[\"callee\"]>,\n    methodName: string\n): callee is TSESTree.MemberExpression =>\n    callee.type === AST_NODE_TYPES.MemberExpression &&\n    !callee.computed &&\n    callee.property.type === AST_NODE_TYPES.Identifier &&\n    callee.property.name === methodName;\n\nconst isUnknownRecord = (\n    value: unknown\n): value is Record<PropertyKey, unknown> =>\n    typeof value === \"object\" && value !== null;\n\nconst isVariableDeclarator = (\n    node: unknown\n): node is TSESTree.VariableDeclarator =>\n    isUnknownRecord(node) && node[\"type\"] === AST_NODE_TYPES.VariableDeclarator;\n\nconst getVariableInitializer = (\n    context: TypedRuleContext,\n    identifier: Readonly<TSESTree.Identifier>\n): TSESTree.Expression | undefined => {\n    const scope = context.sourceCode.getScope(identifier);\n    const variable = getVariableInScopeChain(scope, identifier.name);\n    const definition = arrayFirst(variable?.defs ?? []);\n    const definitionNode = definition?.node;\n\n    if (!isVariableDeclarator(definitionNode)) {\n        return undefined;\n    }\n\n    return definitionNode.init ?? undefined;\n};\n\nconst resolveOptionsExpression = (\n    context: TypedRuleContext,\n    argument: Readonly<TSESTree.Expression | TSESTree.SpreadElement>\n): TSESTree.Expression | undefined => {\n    if (argument.type === AST_NODE_TYPES.SpreadElement) {\n        return undefined;\n    }\n\n    if (argument.type === AST_NODE_TYPES.Identifier) {\n        return getVariableInitializer(context, argument);\n    }\n\n    return argument;\n};\n\nconst objectExpressionHasProperty = (\n    objectExpression: Readonly<TSESTree.ObjectExpression>,\n    propertyName: string\n): boolean =>\n    objectExpression.properties.some((property) => {\n        if (property.type === AST_NODE_TYPES.SpreadElement) {\n            return true;\n        }\n\n        return getStaticPropertyName(property.key) === propertyName;\n    });\n\nconst getBooleanPropertyValue = (\n    objectExpression: Readonly<TSESTree.ObjectExpression>,\n    propertyName: string\n): boolean | undefined => {\n    for (const property of objectExpression.properties) {\n        if (\n            property.type === AST_NODE_TYPES.Property &&\n            getStaticPropertyName(property.key) === propertyName &&\n            property.value.type === AST_NODE_TYPES.Literal &&\n            typeof property.value.value === \"boolean\"\n        ) {\n            return property.value.value;\n        }\n    }\n\n    return undefined;\n};\n\nconst hasAbortSignalOption = (\n    context: TypedRuleContext,\n    argument: Readonly<TSESTree.Expression | TSESTree.SpreadElement> | undefined\n): boolean => {\n    if (!isDefined(argument)) {\n        return false;\n    }\n\n    const resolvedOptions = resolveOptionsExpression(context, argument);\n\n    return (\n        resolvedOptions?.type === AST_NODE_TYPES.ObjectExpression &&\n        objectExpressionHasProperty(resolvedOptions, \"signal\")\n    );\n};\n\nconst getCaptureKey = (\n    context: TypedRuleContext,\n    argument: Readonly<TSESTree.Expression | TSESTree.SpreadElement> | undefined\n): string => {\n    if (!isDefined(argument)) {\n        return \"false\";\n    }\n\n    const resolvedOptions = resolveOptionsExpression(context, argument);\n\n    if (!isDefined(resolvedOptions)) {\n        return unknownCaptureKey;\n    }\n\n    if (\n        resolvedOptions.type === AST_NODE_TYPES.Literal &&\n        typeof resolvedOptions.value === \"boolean\"\n    ) {\n        return String(resolvedOptions.value);\n    }\n\n    if (resolvedOptions.type === AST_NODE_TYPES.ObjectExpression) {\n        const captureValue = getBooleanPropertyValue(\n            resolvedOptions,\n            \"capture\"\n        );\n\n        return isDefined(captureValue) ? String(captureValue) : \"false\";\n    }\n\n    return unknownCaptureKey;\n};\n\nconst getCleanupKey = (\n    context: TypedRuleContext,\n    node: Readonly<TSESTree.CallExpression>\n): EventListenerCleanupKey | undefined => {\n    if (\n        node.arguments.length < 2 ||\n        node.callee.type !== AST_NODE_TYPES.MemberExpression\n    ) {\n        return undefined;\n    }\n\n    const [\n        eventType,\n        listener,\n        options,\n    ] = node.arguments;\n\n    if (\n        !isDefined(eventType) ||\n        !isDefined(listener) ||\n        eventType.type === AST_NODE_TYPES.SpreadElement ||\n        listener.type === AST_NODE_TYPES.SpreadElement\n    ) {\n        return undefined;\n    }\n\n    const targetText = context.sourceCode.getText(node.callee.object);\n    const eventTypeText = context.sourceCode.getText(eventType);\n    const listenerText = context.sourceCode.getText(listener);\n    const captureKey = getCaptureKey(context, options);\n\n    return `${targetText}\\u{0}${eventTypeText}\\u{0}${listenerText}\\u{0}${captureKey}`;\n};\n\nconst getWildcardCleanupKey = (\n    cleanupKey: EventListenerCleanupKey\n): EventListenerCleanupKey => {\n    const [\n        targetText,\n        eventTypeText,\n        listenerText,\n    ] = stringSplit(cleanupKey, \"\\u{0}\");\n\n    if (\n        !isDefined(targetText) ||\n        !isDefined(eventTypeText) ||\n        !isDefined(listenerText)\n    ) {\n        throw new TypeError(\"Expected a complete event listener cleanup key.\");\n    }\n\n    return `${targetText}\\u{0}${eventTypeText}\\u{0}${listenerText}\\u{0}${unknownCaptureKey}`;\n};\n\n/** Rule implementation for `runtime-cleanup/no-unmanaged-event-listeners`. */\nconst noUnmanagedEventListeners: TSESLint.RuleModule<\n    \"unmanagedEventListener\",\n    readonly []\n> = createTypedRule({\n    create(context) {\n        const addsByBoundary = new Map<\n            ReadonlyCleanupBoundary,\n            AddEventListenerRecord[]\n        >();\n        const removesByBoundary = new Map<\n            ReadonlyCleanupBoundary,\n            Set<EventListenerCleanupKey>\n        >();\n\n        const addRecord = (\n            boundary: ReadonlyCleanupBoundary,\n            record: AddEventListenerRecord\n        ): void => {\n            const records = addsByBoundary.get(boundary);\n\n            if (!isDefined(records)) {\n                addsByBoundary.set(boundary, [record]);\n                return;\n            }\n\n            records.push(record);\n        };\n\n        const addRemoveKey = (\n            boundary: ReadonlyCleanupBoundary,\n            cleanupKey: EventListenerCleanupKey\n        ): void => {\n            const cleanupKeys = removesByBoundary.get(boundary);\n\n            if (!isDefined(cleanupKeys)) {\n                removesByBoundary.set(boundary, new Set([cleanupKey]));\n                return;\n            }\n\n            cleanupKeys.add(cleanupKey);\n        };\n\n        return {\n            'CallExpression[callee.type=\"MemberExpression\"]'(\n                node: TSESTree.CallExpression\n            ) {\n                if (\n                    isMethodCallNamed(node.callee, \"addEventListener\") &&\n                    !hasAbortSignalOption(context, node.arguments[2])\n                ) {\n                    const cleanupKey = getCleanupKey(context, node);\n\n                    if (isDefined(cleanupKey)) {\n                        addRecord(getCleanupBoundary(node), {\n                            cleanupKey,\n                            node,\n                        });\n                    }\n                }\n\n                if (isMethodCallNamed(node.callee, \"removeEventListener\")) {\n                    const cleanupKey = getCleanupKey(context, node);\n\n                    if (isDefined(cleanupKey)) {\n                        addRemoveKey(getCleanupBoundary(node), cleanupKey);\n                    }\n                }\n            },\n            \"Program:exit\"() {\n                for (const [boundary, addRecords] of addsByBoundary) {\n                    const removeKeys =\n                        removesByBoundary.get(boundary) ?? new Set();\n\n                    for (const { cleanupKey, node } of addRecords) {\n                        if (\n                            !setHas(removeKeys, cleanupKey) &&\n                            !setHas(\n                                removeKeys,\n                                getWildcardCleanupKey(cleanupKey)\n                            )\n                        ) {\n                            context.report({\n                                messageId: \"unmanagedEventListener\",\n                                node,\n                            });\n                        }\n                    }\n                }\n            },\n        };\n    },\n    defaultOptions: [],\n    meta: {\n        docs: {\n            description:\n                \"require event listeners to have an abort signal or a matching cleanup call.\",\n            recommended: true,\n            requiresTypeChecking: false,\n            runtimeCleanupConfigs: [\n                \"runtime-cleanup.configs.recommended\",\n                \"runtime-cleanup.configs.recommended-type-checked\",\n                \"runtime-cleanup.configs.strict\",\n                \"runtime-cleanup.configs.all\",\n            ],\n            url: createRuleDocsUrl(\"no-unmanaged-event-listeners\"),\n        },\n        messages: {\n            unmanagedEventListener:\n                \"Add an AbortSignal option or a matching removeEventListener call for this listener.\",\n        },\n        schema: [],\n        type: \"problem\",\n    },\n    name: \"no-unmanaged-event-listeners\",\n});\n\nexport default noUnmanagedEventListeners;\n", "/**\n * @packageDocumentation\n * Canonical runtime registry of all rule modules shipped by eslint-plugin-runtime-cleanup.\n */\n\nimport type { TSESLint } from \"@typescript-eslint/utils\";\nimport type { UnknownArray } from \"type-fest\";\n\nimport noFloatingAbortControllers from \"../rules/no-floating-abort-controllers.js\";\nimport noFloatingAudioContexts from \"../rules/no-floating-audio-contexts.js\";\nimport noFloatingBroadcastChannels from \"../rules/no-floating-broadcast-channels.js\";\nimport noFloatingChildProcesses from \"../rules/no-floating-child-processes.js\";\nimport noFloatingDisposableStacks from \"../rules/no-floating-disposable-stacks.js\";\nimport noFloatingFileWatchers from \"../rules/no-floating-file-watchers.js\";\nimport noFloatingGeolocationWatches from \"../rules/no-floating-geolocation-watches.js\";\nimport noFloatingInfiniteAnimations from \"../rules/no-floating-infinite-animations.js\";\nimport noFloatingMediaStreams from \"../rules/no-floating-media-streams.js\";\nimport noFloatingMessageChannels from \"../rules/no-floating-message-channels.js\";\nimport noFloatingNetworkConnections from \"../rules/no-floating-network-connections.js\";\nimport noFloatingObjectUrls from \"../rules/no-floating-object-urls.js\";\nimport noFloatingObservers from \"../rules/no-floating-observers.js\";\nimport noFloatingServers from \"../rules/no-floating-servers.js\";\nimport noFloatingStreams from \"../rules/no-floating-streams.js\";\nimport noFloatingTimers from \"../rules/no-floating-timers.js\";\nimport noFloatingWakeLocks from \"../rules/no-floating-wake-locks.js\";\nimport noFloatingWebStreamLocks from \"../rules/no-floating-web-stream-locks.js\";\nimport noFloatingWorkers from \"../rules/no-floating-workers.js\";\nimport noUnmanagedEventListeners from \"../rules/no-unmanaged-event-listeners.js\";\n\n/** Runtime rule module shape used by registry/preset builders. */\nexport type RuleWithDocs = TSESLint.RuleModule<string, Readonly<UnknownArray>>;\n\n/**\n * Runtime map of all rule modules keyed by unqualified rule name.\n */\nconst runtimeCleanupRuleRegistry: Readonly<Record<string, RuleWithDocs>> = {\n    \"no-floating-abort-controllers\": noFloatingAbortControllers,\n    \"no-floating-audio-contexts\": noFloatingAudioContexts,\n    \"no-floating-broadcast-channels\": noFloatingBroadcastChannels,\n    \"no-floating-child-processes\": noFloatingChildProcesses,\n    \"no-floating-disposable-stacks\": noFloatingDisposableStacks,\n    \"no-floating-file-watchers\": noFloatingFileWatchers,\n    \"no-floating-geolocation-watches\": noFloatingGeolocationWatches,\n    \"no-floating-infinite-animations\": noFloatingInfiniteAnimations,\n    \"no-floating-media-streams\": noFloatingMediaStreams,\n    \"no-floating-message-channels\": noFloatingMessageChannels,\n    \"no-floating-network-connections\": noFloatingNetworkConnections,\n    \"no-floating-object-urls\": noFloatingObjectUrls,\n    \"no-floating-observers\": noFloatingObservers,\n    \"no-floating-servers\": noFloatingServers,\n    \"no-floating-streams\": noFloatingStreams,\n    \"no-floating-timers\": noFloatingTimers,\n    \"no-floating-wake-locks\": noFloatingWakeLocks,\n    \"no-floating-web-stream-locks\": noFloatingWebStreamLocks,\n    \"no-floating-workers\": noFloatingWorkers,\n    \"no-unmanaged-event-listeners\": noUnmanagedEventListeners,\n};\n\n/** Exported typed view consumed by the plugin entrypoint. */\nexport const runtimeCleanupRules: Readonly<Record<string, RuleWithDocs>> =\n    runtimeCleanupRuleRegistry;\n\nexport default runtimeCleanupRules;\n", "/**\n * @packageDocumentation\n * Shared runtime-cleanup preset/config reference constants and type guards.\n */\n\nimport type { ArrayValues } from \"type-fest\";\n\nimport { objectHasOwn } from \"ts-extras\";\n\n/** Canonical flat-config preset keys exposed through `plugin.configs`. */\nexport const runtimeCleanupConfigNames = [\n    \"all\",\n    \"experimental\",\n    \"minimal\",\n    \"recommended\",\n    \"recommended-type-checked\",\n    \"strict\",\n] as const;\n\n/** Metadata contract shared across preset wiring, docs, and README rendering. */\nexport type RuntimeCleanupConfigMetadata = Readonly<{\n    icon: string;\n    presetName: `runtime-cleanup:${RuntimeCleanupConfigName}`;\n    readmeOrder: number;\n    requiresTypeChecking: boolean;\n}>;\n\n/** Canonical flat-config preset key type exposed through `plugin.configs`. */\nexport type RuntimeCleanupConfigName = ArrayValues<\n    typeof runtimeCleanupConfigNames\n>;\n\n/**\n * Canonical metadata for every exported `runtime-cleanup` preset key.\n */\nexport const runtimeCleanupConfigMetadataByName: Readonly<\n    Record<RuntimeCleanupConfigName, RuntimeCleanupConfigMetadata>\n> = {\n    all: {\n        icon: \"\uD83D\uDFE3\",\n        presetName: \"runtime-cleanup:all\",\n        readmeOrder: 5,\n        requiresTypeChecking: true,\n    },\n    experimental: {\n        icon: \"\uD83E\uDDEA\",\n        presetName: \"runtime-cleanup:experimental\",\n        readmeOrder: 6,\n        requiresTypeChecking: false,\n    },\n    minimal: {\n        icon: \"\uD83D\uDFE2\",\n        presetName: \"runtime-cleanup:minimal\",\n        readmeOrder: 1,\n        requiresTypeChecking: false,\n    },\n    recommended: {\n        icon: \"\uD83D\uDFE1\",\n        presetName: \"runtime-cleanup:recommended\",\n        readmeOrder: 2,\n        requiresTypeChecking: false,\n    },\n    \"recommended-type-checked\": {\n        icon: \"\uD83E\uDDEC\",\n        presetName: \"runtime-cleanup:recommended-type-checked\",\n        readmeOrder: 3,\n        requiresTypeChecking: true,\n    },\n    strict: {\n        icon: \"\uD83D\uDD34\",\n        presetName: \"runtime-cleanup:strict\",\n        readmeOrder: 4,\n        requiresTypeChecking: true,\n    },\n};\n\n/** Stable README legend/rendering order for preset icons. */\nexport const runtimeCleanupConfigNamesByReadmeOrder: readonly RuntimeCleanupConfigName[] =\n    [\n        \"minimal\",\n        \"recommended\",\n        \"recommended-type-checked\",\n        \"strict\",\n        \"all\",\n        \"experimental\",\n    ];\n\n/** Metadata references supported in rule `meta.docs.runtimeCleanupConfigs`. */\nexport const runtimeCleanupConfigReferenceToName: Readonly<{\n    \"runtime-cleanup.configs.all\": \"all\";\n    \"runtime-cleanup.configs.experimental\": \"experimental\";\n    \"runtime-cleanup.configs.minimal\": \"minimal\";\n    \"runtime-cleanup.configs.recommended\": \"recommended\";\n    \"runtime-cleanup.configs.recommended-type-checked\": \"recommended-type-checked\";\n    \"runtime-cleanup.configs.strict\": \"strict\";\n    'runtime-cleanup.configs[\"recommended-type-checked\"]': \"recommended-type-checked\";\n}> = {\n    \"runtime-cleanup.configs.all\": \"all\",\n    \"runtime-cleanup.configs.experimental\": \"experimental\",\n    \"runtime-cleanup.configs.minimal\": \"minimal\",\n    \"runtime-cleanup.configs.recommended\": \"recommended\",\n    \"runtime-cleanup.configs.recommended-type-checked\":\n        \"recommended-type-checked\",\n    \"runtime-cleanup.configs.strict\": \"strict\",\n    'runtime-cleanup.configs[\"recommended-type-checked\"]':\n        \"recommended-type-checked\",\n};\n\n/** Fully-qualified preset reference type accepted in rule docs metadata. */\nexport type RuntimeCleanupConfigReference =\n    keyof typeof runtimeCleanupConfigReferenceToName;\n\n/**\n * Check whether a string is a supported rule docs preset reference.\n */\nexport const isRuntimeCleanupConfigReference = (\n    value: string\n): value is RuntimeCleanupConfigReference =>\n    objectHasOwn(runtimeCleanupConfigReferenceToName, value);\n"],
  "mappings": "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",
  "names": ["import_ts_extras", "import_utils", "import_ts_extras", "import_utils", "import_ts_extras", "cleanupMemberNames", "import_ts_extras", "import_utils", "import_ts_extras", "import_ts_extras", "import_ts_extras", "getStaticPropertyName", "import_utils", "import_ts_extras", "globalReceiverNames", "globalReceiverNameSet", "import_utils", "import_ts_extras", "globalReceiverNames", "globalReceiverNameSet", "isGlobalReceiverName", "getStaticPropertyName", "import_utils", "import_ts_extras", "getTransparentWrappedExpression", "getStaticPropertyName", "import_utils", "import_ts_extras", "globalReceiverNames", "globalReceiverNameSet", "isGlobalReceiverName", "getTransparentWrappedExpression", "getStaticPropertyName", "import_utils", "import_ts_extras", "immediateCleanupMethodNames", "immediateCleanupMethodNameSet", "isImmediateCleanupMethodName", "getTransparentWrappedExpression", "getStaticPropertyName", "getImportSourceValue", "getRequireSourceValue", "getDefinitionModuleSource", "getDefinitionForIdentifier", "getImportedSpecifierName", "getObjectPatternPropertyNameForIdentifier", "getRequireMemberFactoryName", "getModuleMemberFactoryName", "import_utils", "import_ts_extras", "getTransparentWrappedExpression", "getStaticPropertyName", "collectStaticMemberPath", "import_utils", "import_ts_extras", "import_ts_extras", "isShadowedIdentifier", "import_utils", "import_ts_extras", "globalNavigatorReceiverNames", "globalNavigatorReceiverNameSet", "getTransparentWrappedExpression", "getStaticPropertyName", "collectStaticMemberPath", "isShadowedNavigatorIdentifier", "getRootIdentifier", "isNavigatorPathShadowed", "import_utils", "import_ts_extras", "globalReceiverNames", "globalReceiverNameSet", "isGlobalReceiverName", "getTransparentWrappedExpression", "getStaticPropertyName", "import_utils", "import_ts_extras", "globalReceiverNames", "globalReceiverNameSet", "isGlobalReceiverName", "getTransparentWrappedExpression", "getStaticPropertyName", "import_utils", "import_ts_extras", "getRootIdentifier", "isShadowedIdentifier", "import_utils", "import_ts_extras", "globalReceiverNames", "globalReceiverNameSet", "isGlobalReceiverName", "getTransparentWrappedExpression", "isShadowedIdentifier", "import_utils", "import_ts_extras", "immediateCleanupMethodNames", "immediateCleanupMethodNameSet", "isImmediateCleanupMethodName", "getTransparentWrappedExpression", "getStaticPropertyName", "getImportSourceValue", "getRequireSourceValue", "getDefinitionModuleSource", "getDefinitionForIdentifier", "getImportedSpecifierName", "getObjectPatternPropertyNameForIdentifier", "getRequireMemberFactoryName", "getModuleMemberFactoryName", "import_utils", "import_ts_extras", "fsModuleNames", "fsModuleNameSet", "getTransparentWrappedExpression", "getStaticPropertyName", "getImportSourceValue", "getRequireSourceValue", "getDefinitionModuleSource", "getImportedSpecifierName", "getObjectPatternPropertyNameForIdentifier", "isFsModuleSource", "getDefinitionForIdentifier", "isFsModuleBinding", "getRequireMemberFactoryName", "getModuleMemberFactoryName", "import_utils", "import_ts_extras", "globalReceiverNames", "globalReceiverNameSet", "isGlobalReceiverName", "isShadowedIdentifier", "import_utils", "import_ts_extras", "globalNavigatorReceiverNames", "globalNavigatorReceiverNameSet", "getTransparentWrappedExpression", "getStaticPropertyName", "collectStaticMemberPath", "isShadowedNavigatorIdentifier", "getRootIdentifier", "isNavigatorPathShadowed", "import_utils", "import_ts_extras", "cleanupMemberNames", "import_utils", "import_ts_extras", "globalReceiverNames", "globalReceiverNameSet", "isGlobalReceiverName", "getTransparentWrappedExpression", "getImportSourceValue", "import_utils", "import_ts_extras", "getStaticPropertyName", "import_ts_extras", "tsParser"]
}
