| const NODE_VERSIONED_PATTERN = /^node(?:-\d+|\d+)(?:\.\d+)*(?:\.exe)?$/; | |
| function normalizeRuntimeBasename(execPath: string): string { | |
| const trimmed = execPath.trim().replace(/^["']|["']$/g, ""); | |
| const lastSlash = Math.max(trimmed.lastIndexOf("/"), trimmed.lastIndexOf("\\")); | |
| const basename = lastSlash === -1 ? trimmed : trimmed.slice(lastSlash + 1); | |
| return basename.toLowerCase(); | |
| } | |
| export function isNodeRuntime(execPath: string): boolean { | |
| const base = normalizeRuntimeBasename(execPath); | |
| return ( | |
| base === "node" || | |
| base === "node.exe" || | |
| base === "nodejs" || | |
| base === "nodejs.exe" || | |
| NODE_VERSIONED_PATTERN.test(base) | |
| ); | |
| } | |
| export function isBunRuntime(execPath: string): boolean { | |
| const base = normalizeRuntimeBasename(execPath); | |
| return base === "bun" || base === "bun.exe"; | |
| } | |