/** Resolve a Windows command name through PATH and PATHEXT so wrapper inspection sees the real file. */
export function resolveWindowsExecutablePath(command: string, env: NodeJS.ProcessEnv): string { if (command.includes("/") || command.includes("\\") || path.isAbsolute(command)) { return command;
}
/** Apply shell-fallback policy when Windows wrapper resolution could not find a direct entrypoint. */
export function applyWindowsSpawnProgramPolicy(params: {
candidate: WindowsSpawnProgramCandidate;
allowShellFallback?: boolean;
}): WindowsSpawnProgram { if (params.candidate.resolution !== "unresolved-wrapper") { return {
command: params.candidate.command,
leadingArgv: params.candidate.leadingArgv,
resolution: params.candidate.resolution,
windowsHide: params.candidate.windowsHide,
};
} if (params.allowShellFallback === true) { return {
command: params.candidate.command,
leadingArgv: [],
resolution: "shell-fallback",
shell: true,
};
} thrownew Error(
`${path.basename(params.candidate.command)} wrapper resolved, but no executable/Node entrypoint could be resolved without shell execution.`,
);
}
/** Resolve the final Windows spawn program after candidate discovery and fallback policy. */
export function resolveWindowsSpawnProgram(
params: ResolveWindowsSpawnProgramParams,
): WindowsSpawnProgram { const candidate = resolveWindowsSpawnProgramCandidate(params); return applyWindowsSpawnProgramPolicy({
candidate,
allowShellFallback: params.allowShellFallback,
});
}
/** Combine a resolved Windows spawn program with call-site argv for actual process launch. */
export function materializeWindowsSpawnProgram(
program: WindowsSpawnProgram,
argv: string[],
): WindowsSpawnInvocation { return {
command: program.command,
argv: [...program.leadingArgv, ...argv],
resolution: program.resolution,
shell: program.shell,
windowsHide: program.windowsHide,
};
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.13 Sekunden
(vorverarbeitet am 2026-06-10)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.