From 7fbc2b56521504da4e565d8886d40fdd7a751d9c Mon Sep 17 00:00:00 2001 From: morluto <76467478+morluto@users.noreply.github.com> Date: Fri, 23 Oct 2026 23:51:07 +0800 Subject: [PATCH] refactor(cli): remove redundant runtime provider contexts --- src/cli.ts | 2 +- src/cli/electronCommands.ts | 24 +++++----- .../javascriptRuntimeCommands.ts} | 44 +++++++++---------- .../javascriptRuntimeObservationCli.test.ts | 2 +- 4 files changed, 34 insertions(+), 38 deletions(-) rename src/{cliJavaScriptRuntimeCommands.ts => cli/javascriptRuntimeCommands.ts} (72%) diff --git a/src/cli.ts b/src/cli.ts index 2e4f46acba..5a9706e941 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -52,7 +52,7 @@ import { registerJavaScriptRecoveryCommands } from "./cli/javascriptRecoveryComm import { registerAdvancedBrowserCommands } from "./cli/browserAdvancedCommands.js"; import { registerBrowserScenarioCommands } from "./cliBrowserScenarioCommands.js"; import { registerElectronCommands } from "./cli/electronCommands.js"; -import { registerJavaScriptRuntimeObservationCommands } from "./cliJavaScriptRuntimeCommands.js"; +import { registerJavaScriptRuntimeObservationCommands } from "./cli/javascriptRuntimeCommands.js"; import { registerApplicationCommands } from "./cli/applicationCommands.js"; import { presentOmittableDefaults } from "./cli/omittableDefaults.js"; import type { CliInstance } from "./cli/types.js"; diff --git a/src/cli/electronCommands.ts b/src/cli/electronCommands.ts index 69e1bfd16e..d395fcb864 100644 --- a/src/cli/electronCommands.ts +++ b/src/cli/electronCommands.ts @@ -220,7 +220,8 @@ const registerElectronTargetList = ( run: ({ args }) => withCommandCancellation((signal) => logCliCommand(logger, "list-electron-targets", async () => { - const context = await electronObservationContext(environment); + const provider = + await createCliElectronObservationProvider(environment); const input = { cdp_endpoint: args.endpoint, }; @@ -234,14 +235,13 @@ const registerElectronTargetList = ( const { listElectronTargets } = await import("../application/javascript/ElectronObservationService.js"); return await finishAnalysisCommand( - () => - listElectronTargets(context.provider, parsed.data, { signal }), + () => listElectronTargets(provider, parsed.data, { signal }), { close: async () => { - await context.provider.close?.(); + await provider.close?.(); }, }, - "rea-cdp-electron", + provider.identity().id, "list_electron_targets", signal, ); @@ -265,7 +265,8 @@ const registerElectronPageInspection = ( run: ({ args, options }) => withCommandCancellation((signal) => logCliCommand(logger, "inspect-electron-page", async () => { - const context = await electronObservationContext(environment); + const provider = + await createCliElectronObservationProvider(environment); const input = { cdp_endpoint: args.endpoint, target_id: args.targetId, @@ -283,14 +284,13 @@ const registerElectronPageInspection = ( const { inspectElectronPage } = await import("../application/javascript/ElectronObservationService.js"); return await finishAnalysisCommand( - () => - inspectElectronPage(context.provider, parsed.data, { signal }), + () => inspectElectronPage(provider, parsed.data, { signal }), { close: async () => { - await context.provider.close?.(); + await provider.close?.(); }, }, - "rea-cdp-electron", + provider.identity().id, "inspect_electron_page", signal, ); @@ -367,12 +367,12 @@ const registerJavaScriptApplicationCommand = ( }); }; -const electronObservationContext = async ( +const createCliElectronObservationProvider = async ( environment: Readonly>, ) => { const { createElectronObservationProvider } = await import("../composition/electronObservation.js"); - return { provider: createElectronObservationProvider(environment) }; + return createElectronObservationProvider(environment); }; const inputError = ( diff --git a/src/cliJavaScriptRuntimeCommands.ts b/src/cli/javascriptRuntimeCommands.ts similarity index 72% rename from src/cliJavaScriptRuntimeCommands.ts rename to src/cli/javascriptRuntimeCommands.ts index d64b7d1dc7..19260c444d 100644 --- a/src/cliJavaScriptRuntimeCommands.ts +++ b/src/cli/javascriptRuntimeCommands.ts @@ -3,21 +3,21 @@ import { Cli, z } from "incur"; import { listJavaScriptRuntimeTargets, observeJavaScriptRuntime, -} from "./application/javascript/JavaScriptRuntimeObservationService.js"; -import { createJavaScriptRuntimeObservationProvider } from "./composition/javascriptRuntimeObservation.js"; -import { CLI_COMMANDS } from "./cliCommandNames.js"; -import { logCliCommand } from "./cliLogging.js"; +} from "../application/javascript/JavaScriptRuntimeObservationService.js"; +import { createJavaScriptRuntimeObservationProvider } from "../composition/javascriptRuntimeObservation.js"; +import { CLI_COMMANDS } from "../cliCommandNames.js"; +import { logCliCommand } from "../cliLogging.js"; import { javascriptRuntimeKindSchema, listJavaScriptRuntimeTargetsInputSchema, observeJavaScriptRuntimeInputSchema, -} from "./domain/javascript/javascriptRuntimeObservation.js"; -import { analysisInputErrorFromIssues } from "./domain/inputIssueProjection.js"; -import { projectAnalysisError } from "./domain/analysisErrorProjection.js"; -import { finishAnalysisCommand } from "./cli/finishAnalysisCommand.js"; -import type { JsonValue } from "./domain/jsonValue.js"; +} from "../domain/javascript/javascriptRuntimeObservation.js"; +import { analysisInputErrorFromIssues } from "../domain/inputIssueProjection.js"; +import { projectAnalysisError } from "../domain/analysisErrorProjection.js"; +import { finishAnalysisCommand } from "./finishAnalysisCommand.js"; +import type { JsonValue } from "../domain/jsonValue.js"; import type { Logger } from "pino"; -import { withCommandCancellation } from "./cli/commandCancellation.js"; +import { withCommandCancellation } from "./commandCancellation.js"; const observeOptionsSchema = z.object({ runtimeKind: javascriptRuntimeKindSchema @@ -50,7 +50,8 @@ export const registerJavaScriptRuntimeObservationCommands = ( logger, CLI_COMMANDS.listJavaScriptRuntimeTargets, async () => { - const context = runtimeContext(environment); + const provider = + createJavaScriptRuntimeObservationProvider(environment); const input = { inspector_endpoint: args.endpoint, }; @@ -66,11 +67,11 @@ export const registerJavaScriptRuntimeObservationCommands = ( ); return await finishAnalysisCommand( () => - listJavaScriptRuntimeTargets(context.provider, parsed.data, { + listJavaScriptRuntimeTargets(provider, parsed.data, { signal, }), - { close: () => context.provider.close?.() ?? Promise.resolve() }, - context.provider.identity().id, + { close: () => provider.close?.() ?? Promise.resolve() }, + provider.identity().id, "list_javascript_runtime_targets", signal, "V8 Inspector resources", @@ -95,7 +96,8 @@ export const registerJavaScriptRuntimeObservationCommands = ( logger, CLI_COMMANDS.observeJavaScriptRuntime, async () => { - const context = runtimeContext(environment); + const provider = + createJavaScriptRuntimeObservationProvider(environment); const input = { inspector_endpoint: args.endpoint, target_id: args.targetId, @@ -113,11 +115,11 @@ export const registerJavaScriptRuntimeObservationCommands = ( ); return await finishAnalysisCommand( () => - observeJavaScriptRuntime(context.provider, parsed.data, { + observeJavaScriptRuntime(provider, parsed.data, { signal, }), - { close: () => context.provider.close?.() ?? Promise.resolve() }, - context.provider.identity().id, + { close: () => provider.close?.() ?? Promise.resolve() }, + provider.identity().id, "observe_javascript_runtime", signal, "V8 Inspector resources", @@ -128,12 +130,6 @@ export const registerJavaScriptRuntimeObservationCommands = ( }); }; -const runtimeContext = ( - environment: Readonly>, -) => ({ - provider: createJavaScriptRuntimeObservationProvider(environment), -}); - const cliError = ( error: Parameters[0], ): JsonValue => ({ diff --git a/tests/process-global/javascriptRuntimeObservationCli.test.ts b/tests/process-global/javascriptRuntimeObservationCli.test.ts index 1ae8d433db..369f1e3bf0 100644 --- a/tests/process-global/javascriptRuntimeObservationCli.test.ts +++ b/tests/process-global/javascriptRuntimeObservationCli.test.ts @@ -11,7 +11,7 @@ import { V8InspectorProvider } from "../../src/inspector/V8InspectorProvider.js" import { observeJavaScriptRuntimeInputSchema } from "../../src/domain/javascript/javascriptRuntimeObservation.js"; import { startFakeV8Inspector } from "../fixtures/inspector/fakeV8Inspector.js"; import { createTestTempDirectory } from "../fixtures/temporaryDirectory.js"; -import { registerJavaScriptRuntimeObservationCommands } from "../../src/cliJavaScriptRuntimeCommands.js"; +import { registerJavaScriptRuntimeObservationCommands } from "../../src/cli/javascriptRuntimeCommands.js"; import { ProviderCleanupError } from "../../src/domain/providerCleanupError.js"; import { ok } from "../../src/domain/result.js"; import { silentLogger } from "../../src/logger.js";