refactor(cli): remove redundant runtime provider contexts

This commit is contained in:
morluto
2026-10-23 23:51:07 +08:00
parent ecd997e512
commit 7fbc2b5652
4 changed files with 34 additions and 38 deletions
+1 -1
View File
@@ -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";
+12 -12
View File
@@ -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<Record<string, string | undefined>>,
) => {
const { createElectronObservationProvider } =
await import("../composition/electronObservation.js");
return { provider: createElectronObservationProvider(environment) };
return createElectronObservationProvider(environment);
};
const inputError = (
@@ -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<Record<string, string | undefined>>,
) => ({
provider: createJavaScriptRuntimeObservationProvider(environment),
});
const cliError = (
error: Parameters<typeof projectAnalysisError>[0],
): JsonValue => ({
@@ -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";