From 489690fa160e9fc362cd3d40d61c1713ca006c47 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Tue, 14 Jul 2026 00:43:30 -0700 Subject: [PATCH] fix(process): apply undefined env removals (#107258) Co-authored-by: Pavan Kumar Gondhi --- src/process/exec-spawn.ts | 7 ++++--- src/process/exec.ts | 36 ------------------------------------ 2 files changed, 4 insertions(+), 39 deletions(-) diff --git a/src/process/exec-spawn.ts b/src/process/exec-spawn.ts index 6d8146409a73..b20fc4cabe8c 100644 --- a/src/process/exec-spawn.ts +++ b/src/process/exec-spawn.ts @@ -12,9 +12,6 @@ function assignChildEnvValue(params: { platform: NodeJS.Platform; value: string | undefined; }): void { - if (params.value === undefined) { - return; - } if (params.platform === "win32") { const normalizedKey = params.key.toLowerCase(); for (const existingKey of Object.keys(params.env)) { @@ -23,6 +20,10 @@ function assignChildEnvValue(params: { } } } + if (params.value === undefined) { + delete params.env[params.key]; + return; + } params.env[params.key] = params.value; } diff --git a/src/process/exec.ts b/src/process/exec.ts index f0fa044c0f43..4342b31ad360 100644 --- a/src/process/exec.ts +++ b/src/process/exec.ts @@ -17,42 +17,6 @@ export type { SpawnResult } from "./exec-result.js"; export { resolveCommandEnv, shouldSpawnWithShell, spawnCommand } from "./exec-spawn.js"; export type { SpawnCommandOptions } from "./exec-spawn.js"; -function assignChildEnvValue(params: { - env: NodeJS.ProcessEnv; - key: string; - platform: NodeJS.Platform; - value: string | undefined; -}): void { - if (params.platform === "win32") { - const normalizedKey = params.key.toLowerCase(); - for (const existingKey of Object.keys(params.env)) { - if (existingKey.toLowerCase() === normalizedKey && existingKey !== params.key) { - delete params.env[existingKey]; - } - } - } - if (params.value === undefined) { - delete params.env[params.key]; - return; - } - params.env[params.key] = params.value; -} - -function mergeChildEnv(params: { - baseEnv: NodeJS.ProcessEnv; - env?: NodeJS.ProcessEnv; - platform: NodeJS.Platform; -}): NodeJS.ProcessEnv { - const resolvedEnv: NodeJS.ProcessEnv = {}; - for (const [key, value] of Object.entries(params.baseEnv)) { - assignChildEnvValue({ env: resolvedEnv, key, platform: params.platform, value }); - } - for (const [key, value] of Object.entries(params.env ?? {})) { - assignChildEnvValue({ env: resolvedEnv, key, platform: params.platform, value }); - } - return resolvedEnv; -} - const DEFAULT_EXEC_MAX_BUFFER_BYTES = 1024 * 1024; export type RunExecOptions = {