import fs from "node:fs" ;
import path from "node:path" ;
import { normalizeLowercaseStringOrEmpty } from "../shared/string-coerce.js" ;
export function normalizeWindowsArgv(argv: string[]): string[] {
if (process.platform !== "win32" ) {
return argv;
}
if (argv.length < 2 ) {
return argv;
}
const stripControlChars = (value: string): string => {
let out = "" ;
for (let i = 0 ; i < value.length; i += 1 ) {
const code = value.charCodeAt(i);
if (code >= 32 && code !== 127 ) {
out += value[i];
}
}
return out;
};
const normalizeArg = (value: string): string =>
stripControlChars(value)
.replace(/^['"]+|[' "]+$/g, " ")
.trim();
const normalizeCandidate = (value: string): string =>
normalizeArg(value).replace(/^\\\\\\?\\/, "" );
const execPath = normalizeCandidate(process.execPath);
const execPathLower = normalizeLowercaseStringOrEmpty(execPath);
const execBase = normalizeLowercaseStringOrEmpty(path.basename(execPath));
const isExecPath = (value: string | undefined): boolean => {
if (!value) {
return false ;
}
const normalized = normalizeCandidate(value);
if (!normalized) {
return false ;
}
const lower = normalizeLowercaseStringOrEmpty(normalized);
return (
lower === execPathLower ||
path.basename(lower) === execBase ||
lower.endsWith("\\node.exe" ) ||
lower.endsWith("/node.exe" ) ||
lower.includes("node.exe" ) ||
(path.basename(lower) === "node.exe" && fs.existsSync(normalized))
);
};
const next = [...argv];
for (let i = 1 ; i <= 3 && i < next.length; ) {
if (isExecPath(next[i])) {
next.splice(i, 1 );
continue ;
}
i += 1 ;
}
const filtered = next.filter((arg, index) => index === 0 || !isExecPath(arg));
if (filtered.length < 3 ) {
return filtered;
}
const cleaned = [...filtered];
for (let i = 2 ; i < cleaned.length; ) {
const arg = cleaned[i];
if (!arg || arg.startsWith("-" )) {
i += 1 ;
continue ;
}
if (isExecPath(arg)) {
cleaned.splice(i, 1 );
continue ;
}
break ;
}
return cleaned;
}
Messung V0.5 in Prozent C=100 H=83 G=91
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-06-09)
¤
*© Formatika GbR, Deutschland