@lifo-sh/node-runner 0.1.19 → 0.1.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/builtins.ts","../src/resolver.ts","../src/transformer.ts","../src/runner.ts"],"sourcesContent":["export { NodeRunner } from \"./runner.js\";\nexport { ProcessExitError } from \"./builtins.js\";\nexport { transformToCjs, transformEsmToCjs, shouldTreatAsEsm } from \"./transformer.js\";\nexport { resolveModule } from \"./resolver.js\";\nexport type {\n IVfs,\n NodeRunnerOptions,\n RunResult,\n NodeCompatModules,\n ScriptConsole,\n ResolvedModule,\n CommandOutputStream,\n} from \"./types.js\";\n","import type { NodeCompatModules, ScriptConsole, CommandOutputStream } from \"./types.js\";\nimport type { IVfs } from \"./types.js\";\n\n/** Minimal path module (always available, no node-compat needed) */\nconst minimalPath = {\n join(...parts: string[]): string {\n const joined = parts.join(\"/\").replace(/\\/+/g, \"/\");\n return minimalPath.normalize(joined);\n },\n normalize(p: string): string {\n const parts = p.split(\"/\");\n const result: string[] = [];\n for (const part of parts) {\n if (part === \"..\") {\n result.pop();\n } else if (part !== \".\" && part !== \"\") {\n result.push(part);\n }\n }\n return (p.startsWith(\"/\") ? \"/\" : \"\") + result.join(\"/\");\n },\n dirname(p: string): string {\n const idx = p.lastIndexOf(\"/\");\n if (idx === -1) return \".\";\n if (idx === 0) return \"/\";\n return p.slice(0, idx);\n },\n basename(p: string, ext?: string): string {\n const base = p.slice(p.lastIndexOf(\"/\") + 1);\n if (ext && base.endsWith(ext)) return base.slice(0, -ext.length);\n return base;\n },\n extname(p: string): string {\n const base = minimalPath.basename(p);\n const dot = base.lastIndexOf(\".\");\n if (dot <= 0) return \"\";\n return base.slice(dot);\n },\n resolve(...parts: string[]): string {\n let resolved = \"\";\n for (let i = parts.length - 1; i >= 0; i--) {\n resolved = parts[i] + \"/\" + resolved;\n if (parts[i].startsWith(\"/\")) break;\n }\n return minimalPath.normalize(resolved);\n },\n isAbsolute(p: string): boolean {\n return p.startsWith(\"/\");\n },\n sep: \"/\",\n delimiter: \":\",\n posix: null as unknown,\n};\nminimalPath.posix = minimalPath;\n\n/** Format args for console output */\nfunction formatArgs(...args: unknown[]): string {\n return args\n .map((a) =>\n typeof a === \"string\" ? a : JSON.stringify(a, null, 2) ?? String(a),\n )\n .join(\" \");\n}\n\n/** Create a console that captures output to arrays */\nexport function createCaptureConsole(\n stdout: string[],\n stderr: string[],\n): ScriptConsole {\n return {\n log: (...args) => stdout.push(formatArgs(...args)),\n error: (...args) => stderr.push(formatArgs(...args)),\n warn: (...args) => stderr.push(formatArgs(...args)),\n info: (...args) => stdout.push(formatArgs(...args)),\n debug: (...args) => stdout.push(formatArgs(...args)),\n };\n}\n\n/** Create a console that streams output to writable streams */\nexport function createStreamConsole(\n stdout: CommandOutputStream,\n stderr: CommandOutputStream,\n): ScriptConsole {\n return {\n log: (...args) => stdout.write(formatArgs(...args) + \"\\n\"),\n error: (...args) => stderr.write(formatArgs(...args) + \"\\n\"),\n warn: (...args) => stderr.write(formatArgs(...args) + \"\\n\"),\n info: (...args) => stdout.write(formatArgs(...args) + \"\\n\"),\n debug: (...args) => stdout.write(formatArgs(...args) + \"\\n\"),\n };\n}\n\n/** Minimal process object (always available) */\nexport function createMinimalProcess(\n env: Record<string, string>,\n cwd: string,\n argv: string[],\n stdout?: CommandOutputStream,\n stderr?: CommandOutputStream,\n) {\n return {\n env,\n cwd: () => cwd,\n argv: [\"node\", ...argv],\n exit: (code?: number) => {\n throw new ProcessExitError(code ?? 0);\n },\n platform: \"browser\" as const,\n arch: \"wasm\" as const,\n version: \"v20.0.0\",\n versions: { node: \"20.0.0\" },\n pid: 1,\n ppid: 0,\n stdout: {\n write: (s: string) => {\n if (stdout) stdout.write(String(s));\n return true;\n },\n },\n stderr: {\n write: (s: string) => {\n if (stderr) stderr.write(String(s));\n return true;\n },\n },\n nextTick: (fn: () => void) => Promise.resolve().then(fn),\n hrtime: {\n bigint: () => BigInt(Math.round(performance.now() * 1e6)),\n },\n };\n}\n\nexport class ProcessExitError extends Error {\n readonly code: number;\n constructor(code: number) {\n super(`process.exit(${code})`);\n this.name = \"ProcessExitError\";\n this.code = code;\n }\n}\n\n/** Build the builtin module map from simple NodeCompatModules */\nexport function createBuiltinModules(\n _vfs: IVfs,\n env: Record<string, string>,\n cwd: string,\n argv: string[],\n scriptConsole: ScriptConsole,\n nodeCompat?: NodeCompatModules,\n stdout?: CommandOutputStream,\n stderr?: CommandOutputStream,\n): Map<string, unknown> {\n const builtins = new Map<string, unknown>();\n\n builtins.set(\"path\", nodeCompat?.path ?? minimalPath);\n\n const process = nodeCompat?.process ?? createMinimalProcess(env, cwd, argv, stdout, stderr);\n builtins.set(\"process\", process);\n builtins.set(\"console\", scriptConsole);\n\n if (nodeCompat?.fs) builtins.set(\"fs\", nodeCompat.fs);\n if (nodeCompat?.fsPromises) builtins.set(\"fs/promises\", nodeCompat.fsPromises);\n if (nodeCompat?.events) builtins.set(\"events\", nodeCompat.events);\n if (nodeCompat?.buffer) builtins.set(\"buffer\", nodeCompat.buffer);\n if (nodeCompat?.util) builtins.set(\"util\", nodeCompat.util);\n if (nodeCompat?.timers) builtins.set(\"timers\", nodeCompat.timers);\n if (nodeCompat?.assert) builtins.set(\"assert\", nodeCompat.assert);\n if (nodeCompat?.os) builtins.set(\"os\", nodeCompat.os);\n if (nodeCompat?.stream) builtins.set(\"stream\", nodeCompat.stream);\n if (nodeCompat?.url) builtins.set(\"url\", nodeCompat.url);\n if (nodeCompat?.crypto) builtins.set(\"crypto\", nodeCompat.crypto);\n\n return builtins;\n}\n","import type { IVfs } from \"./types.js\";\nimport type { ResolvedModule } from \"./types.js\";\n\nconst textDecoder = new TextDecoder();\n\n/** Resolve and load a module from the VFS */\nexport function resolveModule(\n vfs: IVfs,\n id: string,\n fromDir: string,\n): ResolvedModule | null {\n // Subpath imports (#specifier)\n if (id.startsWith('#')) {\n return resolvePackageImport(vfs, id, fromDir);\n }\n\n // Relative/absolute path\n if (id.startsWith(\"./\") || id.startsWith(\"../\") || id.startsWith(\"/\")) {\n return resolveRelative(vfs, id, fromDir);\n }\n\n // Bare specifier → node_modules resolution\n return resolveNodeModule(vfs, id, fromDir);\n}\n\nfunction resolveRelative(\n vfs: IVfs,\n id: string,\n fromDir: string,\n): ResolvedModule | null {\n const absPath = id.startsWith(\"/\") ? id : normalizePath(fromDir + \"/\" + id);\n return resolveFile(vfs, absPath);\n}\n\nfunction resolveFile(vfs: IVfs, absPath: string): ResolvedModule | null {\n // Try exact path\n if (vfs.exists(absPath)) {\n try {\n const stat = vfs.stat(absPath);\n if (stat.type === 'file') {\n const source = textDecoder.decode(vfs.readFile(absPath));\n return { path: absPath, source };\n }\n if (stat.type === 'directory') {\n const fromPkg = tryPackageMain(vfs, absPath);\n if (fromPkg) return fromPkg;\n const fromIndex = tryIndexFile(vfs, absPath);\n if (fromIndex) return fromIndex;\n }\n } catch { /* fall through */ }\n }\n\n // Try with extensions\n for (const ext of ['.js', '.ts', '.mjs', '.json']) {\n const candidate = absPath + ext;\n try {\n if (vfs.exists(candidate) && vfs.stat(candidate).type === 'file') {\n const source = textDecoder.decode(vfs.readFile(candidate));\n return { path: candidate, source };\n }\n } catch { /* continue */ }\n }\n\n return null;\n}\n\nfunction resolveNodeModule(\n vfs: IVfs,\n name: string,\n fromDir: string,\n): ResolvedModule | null {\n let packageName: string;\n let subpath: string | null = null;\n\n if (name.startsWith('@')) {\n const parts = name.split('/');\n if (parts.length < 2) return null;\n packageName = parts[0] + '/' + parts[1];\n if (parts.length > 2) subpath = parts.slice(2).join('/');\n } else {\n const slashIdx = name.indexOf('/');\n if (slashIdx !== -1) {\n packageName = name.slice(0, slashIdx);\n subpath = name.slice(slashIdx + 1);\n } else {\n packageName = name;\n }\n }\n\n // Walk up directory tree\n let current = fromDir;\n for (; ;) {\n const candidate = normalizePath(current + '/node_modules/' + packageName);\n if (vfs.exists(candidate)) {\n const resolved = resolvePackageEntry(vfs, candidate, subpath);\n if (resolved) return resolved;\n }\n const parent = current.slice(0, current.lastIndexOf('/'));\n if (parent === current || parent === '') break;\n current = parent;\n }\n\n // Global fallbacks\n for (const globalDir of ['/usr/lib/node_modules', '/usr/share/pkg/node_modules']) {\n const candidate = normalizePath(globalDir + '/' + packageName);\n if (vfs.exists(candidate)) {\n const resolved = resolvePackageEntry(vfs, candidate, subpath);\n if (resolved) return resolved;\n }\n }\n\n return null;\n}\n\nfunction resolveExportsCondition(value: unknown): string | null {\n if (typeof value === 'string') return value;\n if (value && typeof value === 'object' && !Array.isArray(value)) {\n const cond = value as Record<string, unknown>;\n if (typeof cond.require === 'string') return cond.require;\n if (typeof cond.default === 'string') return cond.default;\n if (typeof cond.import === 'string') return cond.import;\n for (const key of Object.keys(cond)) {\n if (key === 'types') continue;\n const nested = resolveExportsCondition(cond[key]);\n if (nested) return nested;\n }\n }\n return null;\n}\n\nfunction resolvePackageEntry(\n vfs: IVfs,\n pkgDir: string,\n subpath: string | null,\n): ResolvedModule | null {\n const pkgJsonPath = pkgDir + '/package.json';\n let pkgJson: Record<string, unknown> | null = null;\n if (vfs.exists(pkgJsonPath)) {\n try {\n pkgJson = JSON.parse(textDecoder.decode(vfs.readFile(pkgJsonPath)));\n } catch { /* ignore */ }\n }\n\n if (subpath) {\n // Check exports map\n if (pkgJson?.exports && typeof pkgJson.exports === 'object') {\n const exportsMap = pkgJson.exports as Record<string, unknown>;\n const key = './' + subpath;\n if (key in exportsMap) {\n const target = resolveExportsCondition(exportsMap[key]);\n if (target) {\n const resolved = resolveFile(vfs, normalizePath(pkgDir + '/' + target));\n if (resolved) return resolved;\n }\n }\n // Subpath patterns (./* → ./dist/*)\n for (const pattern of Object.keys(exportsMap)) {\n if (pattern.endsWith('/*') && key.startsWith(pattern.slice(0, -1))) {\n const targetPattern = resolveExportsCondition(exportsMap[pattern]);\n if (targetPattern && targetPattern.endsWith('/*')) {\n const suffix = key.slice(pattern.length - 1);\n const target = targetPattern.slice(0, -1) + suffix;\n const resolved = resolveFile(vfs, normalizePath(pkgDir + '/' + target));\n if (resolved) return resolved;\n }\n }\n }\n }\n return resolveFile(vfs, normalizePath(pkgDir + '/' + subpath));\n }\n\n // Root entry resolution\n if (pkgJson?.exports) {\n const exportsVal = pkgJson.exports;\n let rootExport: unknown = null;\n if (typeof exportsVal === 'string') {\n rootExport = exportsVal;\n } else if (typeof exportsVal === 'object' && !Array.isArray(exportsVal)) {\n const exportsMap = exportsVal as Record<string, unknown>;\n rootExport = exportsMap['.'] ?? null;\n if (!rootExport && ('require' in exportsMap || 'import' in exportsMap || 'default' in exportsMap)) {\n rootExport = exportsMap;\n }\n }\n if (rootExport) {\n const target = resolveExportsCondition(rootExport);\n if (target) {\n const resolved = resolveFile(vfs, normalizePath(pkgDir + '/' + target));\n if (resolved) return resolved;\n }\n }\n }\n\n if (pkgJson?.main && typeof pkgJson.main === 'string') {\n const resolved = resolveFile(vfs, normalizePath(pkgDir + '/' + pkgJson.main));\n if (resolved) return resolved;\n }\n\n return tryIndexFile(vfs, pkgDir);\n}\n\nfunction resolvePackageImport(\n vfs: IVfs,\n name: string,\n fromDir: string,\n): ResolvedModule | null {\n let current = fromDir;\n for (; ;) {\n const pkgPath = current + '/package.json';\n if (vfs.exists(pkgPath)) {\n try {\n const pkg = JSON.parse(textDecoder.decode(vfs.readFile(pkgPath)));\n if (pkg.imports && typeof pkg.imports === 'object') {\n const importsMap = pkg.imports as Record<string, unknown>;\n if (name in importsMap) {\n const target = resolveExportsCondition(importsMap[name]);\n if (target) {\n return resolveFile(vfs, normalizePath(current + '/' + target));\n }\n }\n }\n } catch { /* ignore parse errors */ }\n break;\n }\n const parent = current.slice(0, current.lastIndexOf('/'));\n if (parent === current || parent === '') break;\n current = parent;\n }\n return null;\n}\n\nfunction tryPackageMain(vfs: IVfs, dirPath: string): ResolvedModule | null {\n const pkgPath = dirPath + \"/package.json\";\n try {\n if (!vfs.exists(pkgPath)) return null;\n const raw = textDecoder.decode(vfs.readFile(pkgPath));\n const pkg = JSON.parse(raw);\n const main = pkg.main || pkg.module || \"index.js\";\n return resolveModule(vfs, \"./\" + main, dirPath);\n } catch {\n return null;\n }\n}\n\nfunction tryIndexFile(vfs: IVfs, dirPath: string): ResolvedModule | null {\n for (const name of [\"index.js\", \"index.ts\", \"index.mjs\", \"index.json\"]) {\n const fullPath = dirPath + \"/\" + name;\n try {\n if (!vfs.exists(fullPath)) continue;\n const source = textDecoder.decode(vfs.readFile(fullPath));\n return { path: fullPath, source };\n } catch {\n continue;\n }\n }\n return null;\n}\n\nfunction normalizePath(p: string): string {\n const parts = p.split(\"/\");\n const result: string[] = [];\n for (const part of parts) {\n if (part === \"..\") result.pop();\n else if (part !== \".\" && part !== \"\") result.push(part);\n }\n return (p.startsWith(\"/\") ? \"/\" : \"\") + result.join(\"/\");\n}\n","/**\n * ES module → CommonJS syntax transformer.\n *\n * Rewrites import/export statements to require() / module.exports without\n * resolving or inlining any dependencies. All resolution happens at runtime\n * inside the virtual require() runtime.\n *\n * Supported:\n * import defaultExport from \"mod\"\n * import * as ns from \"mod\"\n * import { x, y as z } from \"mod\"\n * import defaultExport, { x } from \"mod\"\n * import defaultExport, * as ns from \"mod\"\n * import \"mod\" (side-effect)\n * import type { … } from \"mod\" (stripped — TypeScript)\n * export default <expr | function | class>\n * export function / class / const / let / var NAME\n * export { x, y as z }\n * export { x } from \"mod\"\n * export * from \"mod\"\n * export type { … } (stripped — TypeScript)\n * import(\"mod\") → Promise.resolve(require(\"mod\"))\n * import(expr) → Promise.resolve().then(() => require(expr))\n * import.meta.url / dirname / filename / resolve / require\n */\n\n// ── Helpers ──────────────────────────────────────────────────────────────────\n\n// Names that collide with the new Function() CJS wrapper parameters.\nconst CJS_WRAPPER_PARAMS = new Set([\n\t'exports', 'require', 'module', '__filename', '__dirname',\n\t'console', 'process', 'Buffer', 'setTimeout', 'setInterval',\n\t'clearTimeout', 'clearInterval', 'global',\n\t'__importMetaUrl', '__importMeta', '__importMetaResolve',\n]);\n\nfunction cjsDecl(name: string): string {\n\treturn CJS_WRAPPER_PARAMS.has(name) ? 'var' : 'const';\n}\n\n// ── Minimal path helpers (self-contained) ────────────────────────────────────\n\nfunction dirname(p: string): string {\n\tconst idx = p.lastIndexOf('/');\n\tif (idx === -1) return '.';\n\tif (idx === 0) return '/';\n\treturn p.slice(0, idx);\n}\n\nfunction join(...parts: string[]): string {\n\tconst joined = parts.join('/').replace(/\\/+/g, '/');\n\treturn normalize(joined);\n}\n\nfunction extname(p: string): string {\n\tconst base = p.slice(p.lastIndexOf('/') + 1);\n\tconst dot = base.lastIndexOf('.');\n\tif (dot <= 0) return '';\n\treturn base.slice(dot);\n}\n\nfunction normalize(p: string): string {\n\tconst parts = p.split('/');\n\tconst result: string[] = [];\n\tfor (const part of parts) {\n\t\tif (part === '..') result.pop();\n\t\telse if (part !== '.' && part !== '') result.push(part);\n\t}\n\treturn (p.startsWith('/') ? '/' : '') + result.join('/');\n}\n\n// ── Context-aware import.meta replacement ────────────────────────────────────\n\n/**\n * Replace `import.meta.*` references only in code context, leaving string\n * and template literal text untouched. Template `${…}` expressions are\n * treated as code (replacements apply). This avoids corrupting generated\n * code inside template strings (e.g. Vite emits `import.meta.hot` in\n * template literals that are served to the browser).\n */\nfunction replaceImportMetaInCode(src: string): string {\n\tconst len = src.length;\n\tlet out = '';\n\tlet i = 0;\n\n\tfunction tryReplace(): boolean {\n\t\tif (i + 11 > len || src[i] !== 'i') return false;\n\t\tif (!src.startsWith('import.meta', i)) return false;\n\t\tconst after = i + 11;\n\t\tif (src.startsWith('.url', after)) { out += '__importMetaUrl'; i = after + 4; return true; }\n\t\tif (src.startsWith('.dirname', after)) { out += '__dirname'; i = after + 8; return true; }\n\t\tif (src.startsWith('.filename', after)) { out += '__filename'; i = after + 9; return true; }\n\t\tif (src.startsWith('.require', after)) { out += 'require'; i = after + 8; return true; }\n\t\tif (src.startsWith('.resolve', after)) { out += '__importMetaResolve'; i = after + 8; return true; }\n\t\tout += '__importMeta'; i = after; return true;\n\t}\n\n\t/** Check if current `/` starts a regex literal by examining preceding context */\n\tfunction isRegexStart(): boolean {\n\t\tlet k = out.length - 1;\n\t\twhile (k >= 0 && (out[k] === ' ' || out[k] === '\\t' || out[k] === '\\n' || out[k] === '\\r')) k--;\n\t\tconst prev = k >= 0 ? out[k] : '\\0';\n\t\tif ('\\0=([{,;!&|^~?:+-*%<>/)]}'.includes(prev)) return true;\n\t\tif (k >= 1 && /\\b(?:return|typeof|void|delete|throw|new|case|of|in|yield|await)\\s*$/.test(out.slice(Math.max(0, k - 11), k + 1))) return true;\n\t\treturn false;\n\t}\n\n\t/** Skip a regex literal from current position, copying verbatim to out */\n\tfunction skipRegexLiteral(): void {\n\t\tconst regStart = i;\n\t\ti++; // skip opening /\n\t\twhile (i < len && src[i] !== '\\n') {\n\t\t\tif (src[i] === '\\\\') { i += 2; continue; }\n\t\t\tif (src[i] === '/') { i++; break; }\n\t\t\tif (src[i] === '[') {\n\t\t\t\ti++;\n\t\t\t\twhile (i < len && src[i] !== ']' && src[i] !== '\\n') {\n\t\t\t\t\tif (src[i] === '\\\\') i++;\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t\tif (i < len && src[i] === ']') i++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\ti++;\n\t\t}\n\t\twhile (i < len && /[gimsuyv]/.test(src[i])) i++;\n\t\tout += src.slice(regStart, i);\n\t}\n\n\tfunction processCode(): void {\n\t\twhile (i < len) {\n\t\t\tconst ch = src[i];\n\n\t\t\t// Single-line comment — copy verbatim\n\t\t\tif (ch === '/' && i + 1 < len && src[i + 1] === '/') {\n\t\t\t\tconst nl = src.indexOf('\\n', i);\n\t\t\t\tconst end = nl === -1 ? len : nl;\n\t\t\t\tout += src.slice(i, end);\n\t\t\t\ti = end;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// Multi-line comment — copy verbatim\n\t\t\tif (ch === '/' && i + 1 < len && src[i + 1] === '*') {\n\t\t\t\tconst end = src.indexOf('*/', i + 2);\n\t\t\t\tconst close = end === -1 ? len : end + 2;\n\t\t\t\tout += src.slice(i, close);\n\t\t\t\ti = close;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Regex literal — copy verbatim (avoids quote chars inside confusing the string scanner)\n\t\t\tif (ch === '/' && i + 1 < len && src[i + 1] !== '/' && src[i + 1] !== '*' && isRegexStart()) {\n\t\t\t\tskipRegexLiteral();\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Simple string literals — copy verbatim (no import.meta inside)\n\t\t\tif (ch === '\"' || ch === \"'\") {\n\t\t\t\tconst start = i;\n\t\t\t\ti++;\n\t\t\t\twhile (i < len && src[i] !== ch) {\n\t\t\t\t\tif (src[i] === '\\\\') i++;\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t\tif (i < len) i++; // closing quote\n\t\t\t\tout += src.slice(start, i);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Template literal — text parts verbatim, ${} expressions as code\n\t\t\tif (ch === '`') {\n\t\t\t\tprocessTemplate();\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// import.meta replacement in code\n\t\t\tif (ch === 'i' && tryReplace()) continue;\n\n\t\t\tout += ch;\n\t\t\ti++;\n\t\t}\n\t}\n\n\tfunction processTemplate(): void {\n\t\tout += src[i]; // opening backtick\n\t\ti++;\n\t\twhile (i < len) {\n\t\t\tif (src[i] === '\\\\') {\n\t\t\t\tout += src[i] + (i + 1 < len ? src[i + 1] : '');\n\t\t\t\ti += 2;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (src[i] === '`') {\n\t\t\t\tout += '`';\n\t\t\t\ti++;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// ${...} expression — process as code\n\t\t\tif (src[i] === '$' && i + 1 < len && src[i + 1] === '{') {\n\t\t\t\tout += '${';\n\t\t\t\ti += 2;\n\t\t\t\tprocessTemplateExpression();\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// Template text — copy verbatim\n\t\t\tout += src[i];\n\t\t\ti++;\n\t\t}\n\t}\n\n\tfunction processTemplateExpression(): void {\n\t\tlet depth = 1;\n\t\twhile (i < len && depth > 0) {\n\t\t\tconst ch = src[i];\n\t\t\tif (ch === '{') { out += ch; i++; depth++; continue; }\n\t\t\tif (ch === '}') { depth--; if (depth === 0) { out += '}'; i++; return; } out += ch; i++; continue; }\n\n\t\t\t// Handle strings inside expressions\n\t\t\tif (ch === '\"' || ch === \"'\") {\n\t\t\t\tconst start = i; i++;\n\t\t\t\twhile (i < len && src[i] !== ch) { if (src[i] === '\\\\') i++; i++; }\n\t\t\t\tif (i < len) i++;\n\t\t\t\tout += src.slice(start, i);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// Nested template literal inside expression\n\t\t\tif (ch === '`') { processTemplate(); continue; }\n\t\t\t// Comments inside expressions\n\t\t\tif (ch === '/' && i + 1 < len && src[i + 1] === '/') {\n\t\t\t\tconst nl = src.indexOf('\\n', i); const end = nl === -1 ? len : nl;\n\t\t\t\tout += src.slice(i, end); i = end; continue;\n\t\t\t}\n\t\t\tif (ch === '/' && i + 1 < len && src[i + 1] === '*') {\n\t\t\t\tconst end = src.indexOf('*/', i + 2); const close = end === -1 ? len : end + 2;\n\t\t\t\tout += src.slice(i, close); i = close; continue;\n\t\t\t}\n\t\t\t// Regex literal inside expression — copy verbatim\n\t\t\tif (ch === '/' && i + 1 < len && src[i + 1] !== '/' && src[i + 1] !== '*' && isRegexStart()) {\n\t\t\t\tskipRegexLiteral();\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// import.meta replacement in expression code\n\t\t\tif (ch === 'i' && tryReplace()) continue;\n\n\t\t\tout += ch;\n\t\t\ti++;\n\t\t}\n\t}\n\n\tprocessCode();\n\treturn out;\n}\n\n// ── String literal masking ───────────────────────────────────────────────────\n\nfunction maskStringLiterals(src: string): { masked: string; literals: string[] } {\n\tconst literals: string[] = [];\n\tlet masked = '';\n\tlet i = 0;\n\n\twhile (i < src.length) {\n\t\tconst ch = src[i];\n\n\t\tif (ch === '/' && i + 1 < src.length && src[i + 1] === '/') {\n\t\t\tconst nl = src.indexOf('\\n', i);\n\t\t\tconst end = nl === -1 ? src.length : nl;\n\t\t\tmasked += src.slice(i, end);\n\t\t\ti = end;\n\t\t\tcontinue;\n\t\t}\n\t\tif (ch === '/' && i + 1 < src.length && src[i + 1] === '*') {\n\t\t\tconst end = src.indexOf('*/', i + 2);\n\t\t\tconst close = end === -1 ? src.length : end + 2;\n\t\t\tmasked += src.slice(i, close);\n\t\t\ti = close;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch === '/' && i + 1 < src.length && src[i + 1] !== '/' && src[i + 1] !== '*') {\n\t\t\tlet k = i - 1;\n\t\t\twhile (k >= 0 && (src[k] === ' ' || src[k] === '\\t' || src[k] === '\\n' || src[k] === '\\r')) k--;\n\t\t\tconst prev = k >= 0 ? src[k] : '\\0';\n\t\t\tif ('\\0=([{,;!&|^~?:+-*%<>/)]}'.includes(prev) ||\n\t\t\t\t(k >= 1 && /\\b(?:return|typeof|void|delete|throw|new|case|of|in|yield|await)\\s*$/.test(src.slice(Math.max(0, k - 11), k + 1)))) {\n\t\t\t\tconst regStart = i;\n\t\t\t\ti++;\n\t\t\t\twhile (i < src.length && src[i] !== '\\n') {\n\t\t\t\t\tif (src[i] === '\\\\') { i += 2; continue; }\n\t\t\t\t\tif (src[i] === '/') { i++; break; }\n\t\t\t\t\tif (src[i] === '[') {\n\t\t\t\t\t\ti++;\n\t\t\t\t\t\twhile (i < src.length && src[i] !== ']' && src[i] !== '\\n') {\n\t\t\t\t\t\t\tif (src[i] === '\\\\') i++;\n\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (i < src.length && src[i] === ']') i++;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t\twhile (i < src.length && /[gimsuyv]/.test(src[i])) i++;\n\t\t\t\tmasked += src.slice(regStart, i);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tif (ch === '\"' || ch === \"'\" || ch === '`') {\n\t\t\tconst start = i;\n\t\t\tconst quote = ch;\n\t\t\ti++;\n\t\t\twhile (i < src.length) {\n\t\t\t\tif (src[i] === '\\\\') { i += 2; continue; }\n\t\t\t\tif (src[i] === quote) { i++; break; }\n\t\t\t\tif (quote === '`' && src[i] === '$' && i + 1 < src.length && src[i + 1] === '{') {\n\t\t\t\t\tlet depth = 1;\n\t\t\t\t\ti += 2;\n\t\t\t\t\twhile (i < src.length && depth > 0) {\n\t\t\t\t\t\tif (src[i] === '{') depth++;\n\t\t\t\t\t\telse if (src[i] === '}') depth--;\n\t\t\t\t\t\telse if (src[i] === '\\\\') i++;\n\t\t\t\t\t\telse if (src[i] === \"'\" || src[i] === '\"') {\n\t\t\t\t\t\t\tconst q = src[i]; i++;\n\t\t\t\t\t\t\twhile (i < src.length && src[i] !== q) {\n\t\t\t\t\t\t\t\tif (src[i] === '\\\\') i++;\n\t\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (i < src.length) i++;\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t} else if (src[i] === '`') {\n\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t\twhile (i < src.length && src[i] !== '`') {\n\t\t\t\t\t\t\t\tif (src[i] === '\\\\') i++;\n\t\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (i < src.length) i++;\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ti++;\n\t\t\t\t\t}\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\ti++;\n\t\t\t}\n\n\t\t\tconst literal = src.slice(start, i);\n\t\t\tconst idx = literals.length;\n\t\t\tliterals.push(literal);\n\t\t\tmasked += quote + '__LIFO_S' + idx + '__' + quote;\n\t\t\tcontinue;\n\t\t}\n\n\t\tmasked += ch;\n\t\ti++;\n\t}\n\n\treturn { masked, literals };\n}\n\nfunction unmaskStringLiterals(src: string, literals: string[]): string {\n\treturn src.replace(\n\t\t/(['\"`])__LIFO_S(\\d+)__\\1/g,\n\t\t(_match, _quote, idxStr) => literals[parseInt(idxStr, 10)]\n\t);\n}\n\n// ── ESM detection ────────────────────────────────────────────────────────────\n\nfunction isEsmSource(source: string): boolean {\n\treturn /(?:^|\\n|;)\\s*(?:import\\s*[\\w{*('\".]|export\\s+|export\\s*\\{)/.test(source);\n}\n\n/**\n * Determine if source should be treated as ESM based on filename, content,\n * and package.json type field.\n */\nconst JS_LIKE_EXTENSIONS = new Set([\n\t'.js', '.ts', '.jsx', '.tsx', '.mjs', '.mts', '.cjs', '.cts', '',\n]);\n\nexport function shouldTreatAsEsm(\n\tsource: string,\n\tfilename: string,\n\tvfs?: { exists(p: string): boolean; readFileString(p: string): string },\n): boolean {\n\tconst ext = extname(filename);\n\tif (ext === '.mjs' || ext === '.mts') return true;\n\tif (ext === '.cjs' || ext === '.cts') return false;\n\t// Non-JS files (.css, .html, .json, etc.) should never be treated as ESM\n\tif (!JS_LIKE_EXTENSIONS.has(ext)) return false;\n\tif (vfs && ext === '.js') {\n\t\tlet dir = dirname(filename);\n\t\tfor (; ;) {\n\t\t\tconst pkgPath = join(dir, 'package.json');\n\t\t\tif (vfs.exists(pkgPath)) {\n\t\t\t\ttry {\n\t\t\t\t\tconst pkg = JSON.parse(vfs.readFileString(pkgPath));\n\t\t\t\t\tif (pkg.type === 'module') return true;\n\t\t\t\t\tif (pkg.type === 'commonjs') return false;\n\t\t\t\t} catch { /* ignore */ }\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tconst parent = dirname(dir);\n\t\t\tif (parent === dir) break;\n\t\t\tdir = parent;\n\t\t}\n\t}\n\treturn isEsmSource(source);\n}\n\n// ── Main transform ───────────────────────────────────────────────────────────\n\n/**\n * Transform ESM import/export syntax to CJS require/exports equivalents.\n */\nexport function transformEsmToCjs(source: string): string {\n\tlet result = source.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n\n\t// Context-aware import.meta replacement: replaces in code only,\n\t// leaves string/template literal text untouched.\n\tresult = replaceImportMetaInCode(result);\n\n\t// Mask string/template literals for import/export regex transforms\n\tconst { masked, literals } = maskStringLiterals(result);\n\n\tresult = masked;\n\tresult = result.replace(\n\t\t/;([ \\t]*(?:import\\s*[\\w${*('\".]|export[\\s{*]))/g,\n\t\t';\\n$1'\n\t);\n\tconst trailingExports: string[] = [];\n\tlet hasDefaultExport = false;\n\tlet hasNamedExport = false;\n\tconst importSources = new Map<string, { modRef: string; prop: string }>();\n\n\thasDefaultExport = /(?:^|\\n)\\s*export\\s+default\\s+/.test(result);\n\thasNamedExport = /(?:^|\\n)\\s*export\\s+(?:const|let|var|function|class|\\{|\\*\\s+from)/.test(result);\n\n\t// Strip type-only imports/exports (TypeScript)\n\tresult = result.replace(/^[ \\t]*import\\s+type\\s+.*?from\\s+(['\"`]).*?\\1[ \\t]*;?$/gm, '');\n\tresult = result.replace(/^[ \\t]*export\\s+type\\s+\\{[^}]*\\}(?:\\s+from\\s+(['\"`]).*?\\1)?[ \\t]*;?$/gm, '');\n\tresult = result.replace(/^[ \\t]*export\\s+type\\s+\\*\\s+from\\s+(['\"`]).*?\\1[ \\t]*;?$/gm, '');\n\n\t// Combined: import X, { a, b as c } from 'mod'\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)import\\s+([\\w$]+)\\s*,\\s*\\{([^}]+)\\}\\s*from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(match, indent, defaultName, imports, mod) => {\n\t\t\tif (imports.includes('${')) return match;\n\t\t\tconst tmp = '__mod_' + defaultName;\n\t\t\tconst mapped = imports.split(',').map((s: string) => {\n\t\t\t\tconst parts = s.trim().split(/\\s+as\\s+/);\n\t\t\t\tconst sourceProp = parts[0].trim();\n\t\t\t\tconst localName = parts.length === 2 ? parts[1].trim() : sourceProp;\n\t\t\t\tif (localName) importSources.set(localName, { modRef: tmp, prop: sourceProp });\n\t\t\t\tif (parts.length === 2) return `${sourceProp}: ${localName}`;\n\t\t\t\treturn sourceProp;\n\t\t\t}).filter((s: string) => s).join(', ');\n\t\t\treturn `\\n${indent}${cjsDecl(tmp)} ${tmp} = require(${mod});\\n${indent}${cjsDecl(defaultName)} ${defaultName} = ${tmp}.default || ${tmp};\\n${indent}const { ${mapped} } = ${tmp};`;\n\t\t}\n\t);\n\n\t// Combined: import X, * as Y from 'mod'\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)import\\s+([\\w$]+)\\s*,\\s*\\*\\s*as\\s+([\\w$]+)\\s+from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(_match, indent, defaultName, nsName, mod) => {\n\t\t\treturn `\\n${indent}${cjsDecl(nsName)} ${nsName} = require(${mod});\\n${indent}${cjsDecl(defaultName)} ${defaultName} = ${nsName}.default || ${nsName};`;\n\t\t}\n\t);\n\n\t// import { a, b as c } from 'mod'\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)import\\s*\\{([^}]+)\\}\\s*from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(match, indent, imports, mod) => {\n\t\t\tif (imports.includes('${')) return match;\n\t\t\tconst modRef = '__imp_' + Math.random().toString(36).slice(2, 8);\n\t\t\tconst mapped = imports.split(',').map((s: string) => {\n\t\t\t\tconst parts = s.trim().split(/\\s+as\\s+/);\n\t\t\t\tconst sourceProp = parts[0].trim();\n\t\t\t\tconst localName = parts.length === 2 ? parts[1].trim() : sourceProp;\n\t\t\t\tif (localName) importSources.set(localName, { modRef, prop: sourceProp });\n\t\t\t\tif (parts.length === 2) return `${sourceProp}: ${localName}`;\n\t\t\t\treturn sourceProp;\n\t\t\t}).filter((s: string) => s).join(', ');\n\t\t\treturn `\\n${indent}const ${modRef} = require(${mod});\\n${indent}const { ${mapped} } = ${modRef};`;\n\t\t}\n\t);\n\n\t// import * as X from 'mod'\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)import\\s*\\*\\s*as\\s+([\\w$]+)\\s+from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(_match, indent, name, mod) => `\\n${indent}${cjsDecl(name)} ${name} = require(${mod});`\n\t);\n\n\t// import X from 'mod' (default import)\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)import\\s+([\\w$]+)\\s+from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(_match, indent, name, mod) => `\\n${indent}${cjsDecl(name)} ${name} = require(${mod});`\n\t);\n\n\t// import 'mod' (side-effect)\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)import\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(_match, indent, mod) => `\\n${indent}require(${mod});`\n\t);\n\n\t// Strip empty export{}\n\tresult = result.replace(/(?:^|\\n)[ \\t]*export\\s*\\{\\s*\\}[ \\t]*;?/g, '');\n\n\t// export * from 'mod'\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)export\\s*\\*\\s*from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(_match, indent, mod) => {\n\t\t\tconst tmpVar = '__star_' + Math.random().toString(36).slice(2, 8);\n\t\t\treturn `\\n${indent}const ${tmpVar} = require(${mod});\\n${indent}Object.keys(${tmpVar}).forEach(function(k) { if (k !== 'default' && !exports.hasOwnProperty(k)) Object.defineProperty(exports, k, { get: function() { return ${tmpVar}[k]; }, enumerable: true, configurable: true }); });`;\n\t\t}\n\t);\n\n\t// export { a, b } from 'mod'\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)export\\s*\\{([^}]+)\\}\\s*from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(match, indent, names, mod) => {\n\t\t\tif (names.includes('${')) return match;\n\t\t\tconst tmpVar = '__re_' + Math.random().toString(36).slice(2, 8);\n\t\t\tconst assignments = names.split(',').map((s: string) => {\n\t\t\t\tconst parts = s.trim().split(/\\s+as\\s+/);\n\t\t\t\tconst local = parts[0].trim();\n\t\t\t\tconst exported = parts.length === 2 ? parts[1].trim() : local;\n\t\t\t\treturn `${indent}Object.defineProperty(exports, '${exported}', { get() { return ${tmpVar}.${local}; }, enumerable: true, configurable: true });`;\n\t\t\t}).join('\\n');\n\t\t\treturn `\\n${indent}const ${tmpVar} = require(${mod});\\n${assignments}`;\n\t\t}\n\t);\n\n\t// export default\n\tif (hasDefaultExport && hasNamedExport) {\n\t\tresult = result.replace(\n\t\t\t/(?:^|\\n)([ \\t]*)export\\s+default\\s+/g,\n\t\t\t(_match, indent) => `\\n${indent}exports.default = `\n\t\t);\n\t} else {\n\t\tresult = result.replace(\n\t\t\t/(?:^|\\n)([ \\t]*)export\\s+default\\s+/g,\n\t\t\t(_match, indent) => `\\n${indent}module.exports = `\n\t\t);\n\t}\n\n\t// export const/let/var\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)export\\s+(const|let|var)\\s+([\\w$]+)\\s*=/g,\n\t\t(match, indent, keyword, name) => {\n\t\t\tif (match.includes('${')) return match;\n\t\t\treturn `\\n${indent}${keyword} ${name} = exports.${name} =`;\n\t\t}\n\t);\n\n\t// export function / class\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)export\\s+(async\\s+function\\s+([\\w$]+)|function\\s+([\\w$]+)|class\\s+([\\w$]+))/g,\n\t\t(match, indent, decl, asyncFnName, fnName, className, offset: number) => {\n\t\t\tconst nextChar = result.charAt(offset + match.length);\n\t\t\tif (nextChar === '{') return match;\n\t\t\tconst name = asyncFnName || fnName || className;\n\t\t\ttrailingExports.push(`exports.${name} = ${name};`);\n\t\t\treturn `\\n${indent}${decl}`;\n\t\t}\n\t);\n\n\t// export { a, b as c } (local)\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)export\\s*\\{([^}]+)\\}[ \\t]*;?/g,\n\t\t(match, _indent, names) => {\n\t\t\tif (names.includes('${')) return match;\n\t\t\tnames.split(',').forEach((s: string) => {\n\t\t\t\tconst parts = s.trim().split(/\\s+as\\s+/);\n\t\t\t\tconst local = parts[0].trim();\n\t\t\t\tconst exported = parts.length === 2 ? parts[1].trim() : local;\n\t\t\t\tif (!local) return;\n\t\t\t\tconst src = importSources.get(local);\n\t\t\t\tif (src) {\n\t\t\t\t\ttrailingExports.push(`Object.defineProperty(exports, '${exported}', { get: function() { return ${src.modRef}.${src.prop}; }, enumerable: true, configurable: true });`);\n\t\t\t\t} else {\n\t\t\t\t\ttrailingExports.push(`exports.${exported} = ${local};`);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn '';\n\t\t}\n\t);\n\n\t// Dynamic import() with string literal\n\tresult = result.replace(\n\t\t/(?<!\\.)(?<!\\w)\\bimport\\s*\\(\\s*(['\"][^'\"]+['\"])\\s*\\)/g,\n\t\t(_match, mod) => `Promise.resolve(require(${mod}))`\n\t);\n\n\t// Dynamic import() with expression\n\t{\n\t\tlet i = 0;\n\t\tlet out = '';\n\t\twhile (i < result.length) {\n\t\t\tconst importIdx = result.indexOf('import(', i);\n\t\t\tif (importIdx === -1) { out += result.slice(i); break; }\n\t\t\tif (importIdx > 0 && /[\\w$.]/.test(result[importIdx - 1])) {\n\t\t\t\tout += result.slice(i, importIdx + 7);\n\t\t\t\ti = importIdx + 7;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t{\n\t\t\t\tlet depth = 1;\n\t\t\t\tlet k = importIdx + 7;\n\t\t\t\twhile (k < result.length && depth > 0) {\n\t\t\t\t\tif (result[k] === '(') depth++;\n\t\t\t\t\telse if (result[k] === ')') depth--;\n\t\t\t\t\tk++;\n\t\t\t\t}\n\t\t\t\tif (depth === 0) {\n\t\t\t\t\tlet afterClose = k;\n\t\t\t\t\twhile (afterClose < result.length && /[ \\t]/.test(result[afterClose])) afterClose++;\n\t\t\t\t\tif (result[afterClose] === '{') {\n\t\t\t\t\t\tout += result.slice(i, importIdx + 7);\n\t\t\t\t\t\ti = importIdx + 7;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tout += result.slice(i, importIdx);\n\t\t\tlet depth = 1;\n\t\t\tlet j = importIdx + 7;\n\t\t\twhile (j < result.length && depth > 0) {\n\t\t\t\tif (result[j] === '(') depth++;\n\t\t\t\telse if (result[j] === ')') depth--;\n\t\t\t\tj++;\n\t\t\t}\n\t\t\tif (depth === 0) {\n\t\t\t\tconst arg = result.slice(importIdx + 7, j - 1);\n\t\t\t\tout += `Promise.resolve().then(function() { return require(${arg}); })`;\n\t\t\t} else {\n\t\t\t\tout += result.slice(importIdx, j);\n\t\t\t}\n\t\t\ti = j;\n\t\t}\n\t\tresult = out;\n\t}\n\n\t// Replace const/let of CJS wrapper params with var\n\tresult = result.replace(\n\t\t/\\b(const|let)\\s+(__dirname|__filename|exports|require|module|console|process|Buffer|global)\\b/g,\n\t\t(_match, _kw, name) => `var ${name}`\n\t);\n\n\tif (trailingExports.length > 0) {\n\t\tresult += '\\n' + trailingExports.join('\\n');\n\t}\n\n\tresult = unmaskStringLiterals(result, literals);\n\n\treturn result;\n}\n\n/**\n * Transform source to CJS if it's detected as ESM.\n *\n * `import.meta` is ALWAYS replaced regardless of ESM detection because\n * `new Function()` cannot parse it (syntax error). CJS bundles like\n * Vite's config.js use `createRequire(import.meta.url)` without being ESM.\n */\nexport function transformToCjs(\n\tsource: string,\n\tfilename: string,\n\tvfs?: { exists(p: string): boolean; readFileString(p: string): string },\n): { code: string; wasEsm: boolean } {\n\tif (shouldTreatAsEsm(source, filename, vfs)) {\n\t\tconst code = stripViteHmr(safetyNetImportMeta(transformEsmToCjs(source)));\n\t\treturn { code, wasEsm: true };\n\t}\n\t// Always replace import.meta even in non-ESM files — new Function()\n\t// cannot parse import.meta syntax at all.\n\tconst code = stripViteHmr(safetyNetImportMeta(replaceImportMetaInCode(source)));\n\treturn { code, wasEsm: false };\n}\n\n/**\n * Strip Vite HMR boilerplate that becomes dead code outside the dev server.\n * After import.meta → __importMeta replacement, lines like\n * __importMeta.hot.accept()\n * __importMeta.hot.prune(...)\n * would throw at runtime since __importMeta has no `.hot` property.\n */\nfunction stripViteHmr(code: string): string {\n\treturn code\n\t\t.replace(/^[ \\t]*__importMeta\\.hot\\b.*$/gm, '')\n\t\t.replace(/^[ \\t]*import\\.meta\\.hot\\b.*$/gm, '');\n}\n\n/**\n * Safety net: regex-based fallback to catch any `import.meta` that the\n * context-aware scanner missed (e.g. due to exotic syntax). This is\n * slightly aggressive (replaces inside string literals too) but only fires\n * when the smart scanner already failed, and the alternative is a hard\n * eval crash.\n */\nfunction safetyNetImportMeta(code: string): string {\n\tif (!code.includes('import.meta')) return code;\n\treturn code\n\t\t.replace(/\\bimport\\.meta\\.url\\b/g, '__importMetaUrl')\n\t\t.replace(/\\bimport\\.meta\\.dirname\\b/g, '__dirname')\n\t\t.replace(/\\bimport\\.meta\\.filename\\b/g, '__filename')\n\t\t.replace(/\\bimport\\.meta\\.require\\b/g, 'require')\n\t\t.replace(/\\bimport\\.meta\\.resolve\\b/g, '__importMetaResolve')\n\t\t.replace(/\\bimport\\.meta\\b/g, '__importMeta');\n}\n","import type {\n IVfs,\n NodeRunnerOptions,\n RunResult,\n ModuleFactory,\n ScriptConsole,\n CommandOutputStream,\n} from \"./types.js\";\nimport {\n createBuiltinModules,\n createCaptureConsole,\n createStreamConsole,\n createMinimalProcess,\n ProcessExitError,\n} from \"./builtins.js\";\nimport { resolveModule } from \"./resolver.js\";\nimport { transformToCjs } from \"./transformer.js\";\n\nconst textEncoder = new TextEncoder();\n\n/** Extensions that should be compiled as JavaScript modules */\nconst JS_EXTENSIONS = new Set([\n '.js', '.ts', '.jsx', '.tsx', '.mjs', '.mts', '.cjs', '.cts',\n]);\n\n/** Strip shebang line (e.g. #!/usr/bin/env node) */\nfunction stripShebang(src: string): string {\n if (src.charCodeAt(0) === 0x23 /* # */ && src.charCodeAt(1) === 0x21 /* ! */) {\n const nl = src.indexOf('\\n');\n if (nl === -1) return '';\n return '\\n' + src.slice(nl + 1);\n }\n return src;\n}\n\nexport class NodeRunner {\n readonly vfs: IVfs;\n private moduleMapFactory?: Record<string, () => unknown>;\n private nodeCompat?: NodeRunnerOptions[\"nodeCompat\"];\n private env: Record<string, string>;\n private cwd: string;\n private argv: string[];\n private stdout?: CommandOutputStream;\n private stderr?: CommandOutputStream;\n private signal?: AbortSignal;\n private globalShims?: Record<string, unknown>;\n\n /** Module cache from the last execution. Can be inspected by the caller. */\n readonly moduleCache = new Map<string, unknown>();\n\n constructor(options: NodeRunnerOptions) {\n if (!options.vfs) {\n throw new Error(\"NodeRunner requires a vfs instance\");\n }\n this.vfs = options.vfs;\n this.moduleMapFactory = options.moduleMap;\n this.nodeCompat = options.nodeCompat;\n this.env = options.env ?? {};\n this.cwd = options.cwd ?? \"/\";\n this.argv = options.argv ?? [];\n this.stdout = options.stdout;\n this.stderr = options.stderr;\n this.signal = options.signal;\n this.globalShims = options.globalShims;\n\n if (options.files) {\n this.writeFilesSync(options.files);\n }\n }\n\n /** Write files to the VFS synchronously, creating parent directories as needed */\n writeFilesSync(files: Record<string, string>): void {\n for (const [filePath, content] of Object.entries(files)) {\n const parts = filePath.split(\"/\").filter(Boolean);\n for (let i = 1; i < parts.length; i++) {\n const dir = \"/\" + parts.slice(0, i).join(\"/\");\n try {\n this.vfs.mkdir(dir);\n } catch {\n // already exists\n }\n }\n this.vfs.writeFile(filePath, textEncoder.encode(content));\n }\n }\n\n /** Write files to the VFS asynchronously (for IndexedDB-backed VFS) */\n async writeFiles(files: Record<string, string>): Promise<void> {\n // VFS write operations are synchronous in the current implementation\n this.writeFilesSync(files);\n }\n\n /** Run a script file from the VFS, resolving extensions and index files */\n async runFile(filePath: string): Promise<RunResult> {\n const absPath = filePath.startsWith(\"/\")\n ? filePath\n : this.cwd + \"/\" + filePath;\n\n const scriptDir = absPath.slice(0, absPath.lastIndexOf(\"/\")) || \"/\";\n const id = absPath.startsWith(\"/\") ? absPath : \"./\" + absPath;\n const resolved = resolveModule(this.vfs, id, scriptDir);\n\n if (!resolved) {\n const msg = `Error: ENOENT: no such file or directory, open '${absPath}'`;\n if (this.stderr) {\n this.stderr.write(msg + \"\\n\");\n }\n return {\n exitCode: 1,\n stdout: \"\",\n stderr: this.stderr ? \"\" : msg,\n };\n }\n\n return this.execute(resolved.source, resolved.path);\n }\n\n /** Run a script from a source string */\n async runScript(source: string, filename?: string): Promise<RunResult> {\n const absPath = filename\n ? filename.startsWith(\"/\")\n ? filename\n : this.cwd + \"/\" + filename\n : this.cwd + \"/__script__.js\";\n\n return this.execute(source, absPath);\n }\n\n /** Write a file to the VFS then run it */\n async writeAndRun(filePath: string, source: string): Promise<RunResult> {\n this.writeFilesSync({ [filePath]: source });\n return this.runFile(filePath);\n }\n\n private async execute(source: string, absPath: string): Promise<RunResult> {\n // Clear module cache for new execution\n this.moduleCache.clear();\n\n // ── Timer tracking for event loop emulation ──\n const activeTimers = new Set<ReturnType<typeof setTimeout>>();\n let timerDrainResolve: (() => void) | null = null;\n\n const checkDrain = () => {\n if (activeTimers.size === 0 && timerDrainResolve) {\n timerDrainResolve();\n timerDrainResolve = null;\n }\n };\n\n const wrappedSetTimeout = ((fn: (...args: unknown[]) => void, ms?: number, ...args: unknown[]) => {\n const id = globalThis.setTimeout((...a: unknown[]) => {\n activeTimers.delete(id);\n try { fn(...a); } finally { checkDrain(); }\n }, ms, ...args);\n activeTimers.add(id);\n return id;\n }) as unknown as typeof setTimeout;\n\n const wrappedSetInterval = ((fn: (...args: unknown[]) => void, ms?: number, ...args: unknown[]) => {\n const id = globalThis.setInterval(fn, ms, ...args);\n activeTimers.add(id);\n return id;\n }) as unknown as typeof setInterval;\n\n const wrappedClearTimeout = ((id: ReturnType<typeof setTimeout>) => {\n globalThis.clearTimeout(id);\n activeTimers.delete(id);\n checkDrain();\n }) as typeof clearTimeout;\n\n const wrappedClearInterval = ((id: ReturnType<typeof setInterval>) => {\n globalThis.clearInterval(id);\n activeTimers.delete(id);\n checkDrain();\n }) as typeof clearInterval;\n\n // Set up output\n const stdoutLines: string[] = [];\n const stderrLines: string[] = [];\n\n const scriptConsole: ScriptConsole = this.stdout && this.stderr\n ? createStreamConsole(this.stdout, this.stderr)\n : this.stdout\n ? createStreamConsole(this.stdout, { write: (s) => stderrLines.push(s) })\n : this.stderr\n ? createStreamConsole({ write: (s) => stdoutLines.push(s) }, this.stderr)\n : createCaptureConsole(stdoutLines, stderrLines);\n\n // Set up builtins/module map\n const isStreaming = !!(this.stdout || this.stderr);\n let getBuiltin: (id: string) => unknown | undefined;\n\n if (this.moduleMapFactory) {\n // Full module map from node-compat's createModuleMap()\n const moduleMap = this.moduleMapFactory;\n getBuiltin = (id: string) => {\n const name = id.startsWith('node:') ? id.slice(5) : id;\n if (name in moduleMap) {\n // Cache the result\n if (this.moduleCache.has(name)) return this.moduleCache.get(name);\n const mod = moduleMap[name]();\n this.moduleCache.set(name, mod);\n return mod;\n }\n return undefined;\n };\n } else {\n // Simple NodeCompatModules\n const builtins = createBuiltinModules(\n this.vfs,\n this.env,\n this.cwd,\n [absPath, ...this.argv],\n scriptConsole,\n this.nodeCompat,\n this.stdout,\n this.stderr,\n );\n getBuiltin = (id: string) => {\n const name = id.startsWith('node:') ? id.slice(5) : id;\n return builtins.has(name) ? builtins.get(name) : undefined;\n };\n }\n\n // Get process and Buffer from builtins (if available)\n const processObj = getBuiltin('process') ?? createMinimalProcess(\n this.env, this.cwd, [absPath, ...this.argv], this.stdout, this.stderr,\n );\n const bufferObj = getBuiltin('buffer');\n const BufferClass = bufferObj && typeof bufferObj === 'object' && 'Buffer' in (bufferObj as Record<string, unknown>)\n ? (bufferObj as Record<string, unknown>).Buffer\n : undefined;\n\n // Wire process.stdout/stderr to output streams\n const pObj = processObj as Record<string, unknown>;\n if (pObj.stdout && typeof pObj.stdout === 'object') {\n const pStdout = pObj.stdout as Record<string, unknown>;\n if (this.stdout) {\n pStdout.write = (s: string) => { this.stdout!.write(String(s)); return true; };\n } else {\n pStdout.write = (s: string) => { stdoutLines.push(String(s)); return true; };\n }\n }\n if (pObj.stderr && typeof pObj.stderr === 'object') {\n const pStderr = pObj.stderr as Record<string, unknown>;\n if (this.stderr) {\n pStderr.write = (s: string) => { this.stderr!.write(String(s)); return true; };\n } else {\n pStderr.write = (s: string) => { stderrLines.push(String(s)); return true; };\n }\n }\n\n // Build require function\n const self = this;\n const createRequire = (fromDir: string) => {\n const require = (id: string): unknown => {\n const name = id.startsWith('node:') ? id.slice(5) : id;\n\n // Check builtins first\n const builtin = getBuiltin(name);\n if (builtin !== undefined) return builtin;\n\n // Resolve from VFS\n const resolved = resolveModule(self.vfs, id, fromDir);\n if (!resolved) {\n throw new Error(`Cannot find module '${id}'`);\n }\n\n // Return cached if available\n if (self.moduleCache.has(resolved.path)) {\n return self.moduleCache.get(resolved.path);\n }\n\n // Handle JSON\n if (resolved.path.endsWith(\".json\")) {\n const json = JSON.parse(resolved.source);\n self.moduleCache.set(resolved.path, json);\n return json;\n }\n\n // Handle non-JS assets (CSS, HTML, etc.) — return as raw text\n // Strip Vite HMR boilerplate that may have been injected by dev server\n const ext = resolved.path.slice(resolved.path.lastIndexOf('.'));\n if (ext && !JS_EXTENSIONS.has(ext)) {\n const clean = resolved.source\n .replace(/^[ \\t]*import\\.meta\\.hot\\b.*$/gm, '')\n .replace(/^[ \\t]*__importMeta\\.hot\\b.*$/gm, '');\n self.moduleCache.set(resolved.path, clean);\n return clean;\n }\n\n // Execute module\n const moduleExports: Record<string, unknown> = {};\n const moduleObj = { exports: moduleExports };\n // Pre-cache to handle circular dependencies\n self.moduleCache.set(resolved.path, moduleExports);\n\n const moduleDir = resolved.path.slice(0, resolved.path.lastIndexOf(\"/\"));\n const childRequire = createRequire(moduleDir);\n\n // Transform ESM → CJS if needed\n let cleanSource = stripShebang(resolved.source);\n const { code: cjsSource } = transformToCjs(cleanSource, resolved.path, self.vfs);\n cleanSource = cjsSource;\n\n const factory = compileModule(cleanSource, resolved.path, self.stderr);\n\n const importMetaUrl = 'file://' + resolved.path;\n const importMeta = { url: importMetaUrl, dirname: moduleDir, filename: resolved.path };\n const importMetaResolve = (specifier: string) => {\n throw new Error(`import.meta.resolve('${specifier}') is not supported`);\n };\n\n const global = { process: processObj, Buffer: BufferClass, console: scriptConsole };\n\n // Save/restore globalThis\n const ga = globalThis as Record<string, unknown>;\n const isRealNode = typeof (ga.process as Record<string, unknown>)?.pid === 'number';\n const saved: Record<string, unknown> = {};\n if (!isRealNode) {\n saved.process = ga.process; ga.process = processObj;\n saved.Buffer = ga.Buffer; if (BufferClass) ga.Buffer = BufferClass;\n saved.console = ga.console; ga.console = scriptConsole;\n }\n // Apply global shims\n const savedShims: Record<string, unknown> = {};\n if (self.globalShims) {\n for (const k of Object.keys(self.globalShims)) {\n savedShims[k] = ga[k];\n ga[k] = self.globalShims[k];\n }\n }\n\n try {\n factory(\n moduleObj.exports, childRequire, moduleObj,\n resolved.path, moduleDir,\n scriptConsole, processObj, BufferClass,\n wrappedSetTimeout, wrappedSetInterval,\n wrappedClearTimeout, wrappedClearInterval,\n global,\n importMetaUrl, importMeta, importMetaResolve,\n );\n } catch (e) {\n if (e instanceof ProcessExitError) throw e;\n const err = e instanceof Error ? e : new Error(String(e));\n if (!err.message.includes('[/')) {\n err.message = `[${resolved.path}] ${err.message}`;\n }\n throw err;\n } finally {\n if (self.globalShims) {\n for (const k of Object.keys(savedShims)) ga[k] = savedShims[k];\n }\n if (!isRealNode) {\n ga.process = saved.process;\n ga.Buffer = saved.Buffer;\n ga.console = saved.console;\n }\n }\n\n // Update cache with potentially reassigned module.exports\n if (moduleObj.exports !== moduleExports) {\n self.moduleCache.set(resolved.path, moduleObj.exports);\n }\n return moduleObj.exports;\n };\n\n require.resolve = (id: string): string => {\n const name = id.startsWith('node:') ? id.slice(5) : id;\n if (getBuiltin(name) !== undefined) return id;\n const resolved = resolveModule(self.vfs, id, fromDir);\n if (!resolved) throw new Error(`Cannot find module '${id}'`);\n return resolved.path;\n };\n\n return require;\n };\n\n // Override module shim if using moduleMap\n if (this.moduleMapFactory) {\n const moduleMap = this.moduleMapFactory;\n moduleMap.module = () => {\n const makeCreateRequire = (_filename: string | URL) => {\n const dir = typeof _filename === 'string'\n ? _filename.slice(0, _filename.lastIndexOf('/')) || '/'\n : '/';\n return createRequire(dir);\n };\n const builtinNames = Object.keys(moduleMap);\n const isBuiltin = (s: string) => {\n const n = s.startsWith('node:') ? s.slice(5) : s;\n return builtinNames.includes(n);\n };\n return { createRequire: makeCreateRequire, builtinModules: builtinNames, isBuiltin, default: { createRequire: makeCreateRequire } };\n };\n }\n\n let exitCode = 0;\n\n // Transform main source\n let cleanMainSource = stripShebang(source);\n const { code: cjsMainSource, wasEsm: isEsm } = transformToCjs(cleanMainSource, absPath, this.vfs);\n cleanMainSource = cjsMainSource;\n\n // Wrap in CJS (async for ESM to support top-level await)\n const wrapped = isEsm\n ? `(async function(exports, require, module, __filename, __dirname, console, process, Buffer, setTimeout, setInterval, clearTimeout, clearInterval, global, __importMetaUrl, __importMeta, __importMetaResolve) {\\n${cleanMainSource}\\n})`\n : `(function(exports, require, module, __filename, __dirname, console, process, Buffer, setTimeout, setInterval, clearTimeout, clearInterval, global, __importMetaUrl, __importMeta, __importMetaResolve) {\\n${cleanMainSource}\\n})`;\n\n const scriptDir = absPath.slice(0, absPath.lastIndexOf(\"/\")) || \"/\";\n const require = createRequire(scriptDir);\n const moduleExports: Record<string, unknown> = {};\n const moduleObj = { exports: moduleExports };\n const global = { process: processObj, Buffer: BufferClass, console: scriptConsole };\n\n const mainImportMetaUrl = 'file://' + absPath;\n const mainImportMeta = { url: mainImportMetaUrl, dirname: scriptDir, filename: absPath };\n const mainImportMetaResolve = (specifier: string) => {\n throw new Error(`import.meta.resolve('${specifier}') is not supported`);\n };\n\n // Save/restore globalThis\n const ga = globalThis as Record<string, unknown>;\n const isRealNode = typeof (ga.process as Record<string, unknown>)?.pid === 'number';\n const saved: Record<string, unknown> = {};\n if (!isRealNode) {\n saved.process = ga.process; ga.process = processObj;\n saved.Buffer = ga.Buffer; if (BufferClass) ga.Buffer = BufferClass;\n saved.console = ga.console; ga.console = scriptConsole;\n }\n const savedShims: Record<string, unknown> = {};\n if (this.globalShims) {\n for (const k of Object.keys(this.globalShims)) {\n savedShims[k] = ga[k];\n ga[k] = this.globalShims[k];\n }\n }\n\n // Unhandled rejection handler\n let pendingRejection: unknown = null;\n const rejectionHandler = (event: PromiseRejectionEvent) => {\n pendingRejection = event.reason;\n event.preventDefault();\n const msg = event.reason instanceof Error\n ? event.reason.stack || event.reason.message\n : String(event.reason);\n const errMsg = `[unhandledRejection] ${msg}\\n`;\n if (this.stderr) this.stderr.write(errMsg);\n else stderrLines.push(errMsg);\n };\n if (typeof globalThis.addEventListener === 'function') {\n globalThis.addEventListener('unhandledrejection', rejectionHandler as EventListener);\n }\n\n try {\n const fn = new Function('return ' + wrapped)();\n const result = fn(\n moduleExports, require, moduleObj, absPath, scriptDir,\n scriptConsole, processObj, BufferClass,\n wrappedSetTimeout, wrappedSetInterval,\n wrappedClearTimeout, wrappedClearInterval,\n global,\n mainImportMetaUrl, mainImportMeta, mainImportMetaResolve,\n );\n\n // Await if ESM (async IIFE returns a promise)\n if (isEsm && result && typeof result.then === 'function') {\n await result;\n }\n\n if (pendingRejection) {\n if (pendingRejection instanceof ProcessExitError) {\n exitCode = pendingRejection.code;\n } else {\n exitCode = 1;\n }\n }\n } catch (e) {\n if (e instanceof ProcessExitError) {\n exitCode = e.code;\n } else {\n exitCode = 1;\n const msg = e instanceof Error ? (e.stack || e.message) : String(e);\n if (this.stderr) {\n this.stderr.write(msg + \"\\n\");\n } else {\n stderrLines.push(msg);\n }\n }\n } finally {\n if (this.globalShims) {\n for (const k of Object.keys(savedShims)) ga[k] = savedShims[k];\n }\n if (!isRealNode) {\n ga.process = saved.process;\n ga.Buffer = saved.Buffer;\n ga.console = saved.console;\n }\n if (typeof globalThis.removeEventListener === 'function') {\n globalThis.removeEventListener('unhandledrejection', rejectionHandler as EventListener);\n }\n }\n\n // ── Event loop drain: wait for pending timers ──\n if (activeTimers.size > 0) {\n const drainPromise = new Promise<void>(resolve => { timerDrainResolve = resolve; });\n const abortPromise = this.signal\n ? new Promise<void>(resolve => {\n if (this.signal!.aborted) { resolve(); return; }\n this.signal!.addEventListener('abort', () => resolve(), { once: true });\n })\n : new Promise<void>(() => {}); // never resolves if no signal\n\n await Promise.race([drainPromise, abortPromise]);\n\n // Clean up remaining timers on abort\n for (const id of activeTimers) {\n globalThis.clearTimeout(id);\n globalThis.clearInterval(id);\n }\n activeTimers.clear();\n }\n\n return {\n exitCode,\n stdout: isStreaming ? \"\" : stdoutLines.join(\"\\n\"),\n stderr: isStreaming ? \"\" : stderrLines.join(\"\\n\"),\n };\n }\n}\n\n/** Compile source code into a module factory function */\nfunction compileModule(source: string, filename: string, stderr?: CommandOutputStream): ModuleFactory {\n const wrapped = `(function(exports, require, module, __filename, __dirname, console, process, Buffer, setTimeout, setInterval, clearTimeout, clearInterval, global, __importMetaUrl, __importMeta, __importMetaResolve) {\\n${source}\\n})`;\n try {\n // eslint-disable-next-line no-eval\n return (0, eval)(wrapped) as ModuleFactory;\n } catch (err) {\n const errMsg = err instanceof Error ? err.message : String(err);\n const msg = `Failed to compile '${filename}': ${errMsg}`;\n\n // Binary search for error location\n if (stderr) {\n stderr.write(`[CJS-FAIL] file=${filename} srcLen=${source.length} err=${errMsg}\\n`);\n const lines = source.split('\\n');\n let lo = 0, hi = lines.length;\n while (hi - lo > 3) {\n const mid = (lo + hi) >>> 1;\n const partial = lines.slice(0, mid).join('\\n');\n try { new Function(partial); lo = mid; } catch (e2) {\n if (e2 instanceof Error && e2.message === errMsg) hi = mid;\n else lo = mid;\n }\n }\n stderr.write(`[CJS-FAIL] error at L${lo}-${hi}, showing L${Math.max(1, lo - 25)} to L${hi + 3}:\\n`);\n for (let li = Math.max(0, lo - 25); li < Math.min(lines.length, hi + 3); li++) {\n stderr.write(`[CJS-FAIL] ${li + 1 === lo || li + 1 === hi ? '>>>' : ' '} L${li + 1}: ${lines[li]?.slice(0, 200)}\\n`);\n }\n }\n\n throw new SyntaxError(msg);\n }\n}\n"],"mappings":"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","names":["depth","code","require","moduleExports","moduleObj","global","ga","isRealNode","saved","savedShims"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/builtins.ts","../src/resolver.ts","../src/transformer.ts","../src/runner.ts"],"sourcesContent":["export { NodeRunner } from \"./runner.js\";\nexport { ProcessExitError } from \"./builtins.js\";\nexport { transformToCjs, transformEsmToCjs, shouldTreatAsEsm } from \"./transformer.js\";\nexport { resolveModule } from \"./resolver.js\";\nexport type {\n IVfs,\n NodeRunnerOptions,\n RunResult,\n NodeCompatModules,\n ScriptConsole,\n ResolvedModule,\n CommandOutputStream,\n} from \"./types.js\";\n","import type { NodeCompatModules, ScriptConsole, CommandOutputStream } from \"./types.js\";\nimport type { IVfs } from \"./types.js\";\n\n/** Minimal path module (always available, no node-compat needed) */\nconst minimalPath = {\n join(...parts: string[]): string {\n const joined = parts.join(\"/\").replace(/\\/+/g, \"/\");\n return minimalPath.normalize(joined);\n },\n normalize(p: string): string {\n const parts = p.split(\"/\");\n const result: string[] = [];\n for (const part of parts) {\n if (part === \"..\") {\n result.pop();\n } else if (part !== \".\" && part !== \"\") {\n result.push(part);\n }\n }\n return (p.startsWith(\"/\") ? \"/\" : \"\") + result.join(\"/\");\n },\n dirname(p: string): string {\n const idx = p.lastIndexOf(\"/\");\n if (idx === -1) return \".\";\n if (idx === 0) return \"/\";\n return p.slice(0, idx);\n },\n basename(p: string, ext?: string): string {\n const base = p.slice(p.lastIndexOf(\"/\") + 1);\n if (ext && base.endsWith(ext)) return base.slice(0, -ext.length);\n return base;\n },\n extname(p: string): string {\n const base = minimalPath.basename(p);\n const dot = base.lastIndexOf(\".\");\n if (dot <= 0) return \"\";\n return base.slice(dot);\n },\n resolve(...parts: string[]): string {\n let resolved = \"\";\n for (let i = parts.length - 1; i >= 0; i--) {\n resolved = parts[i] + \"/\" + resolved;\n if (parts[i].startsWith(\"/\")) break;\n }\n return minimalPath.normalize(resolved);\n },\n isAbsolute(p: string): boolean {\n return p.startsWith(\"/\");\n },\n sep: \"/\",\n delimiter: \":\",\n posix: null as unknown,\n};\nminimalPath.posix = minimalPath;\n\n/** Format args for console output */\nfunction formatArgs(...args: unknown[]): string {\n return args\n .map((a) =>\n typeof a === \"string\" ? a : JSON.stringify(a, null, 2) ?? String(a),\n )\n .join(\" \");\n}\n\n/** Create a console that captures output to arrays */\nexport function createCaptureConsole(\n stdout: string[],\n stderr: string[],\n): ScriptConsole {\n return {\n log: (...args) => stdout.push(formatArgs(...args)),\n error: (...args) => stderr.push(formatArgs(...args)),\n warn: (...args) => stderr.push(formatArgs(...args)),\n info: (...args) => stdout.push(formatArgs(...args)),\n debug: (...args) => stdout.push(formatArgs(...args)),\n };\n}\n\n/** Create a console that streams output to writable streams */\nexport function createStreamConsole(\n stdout: CommandOutputStream,\n stderr: CommandOutputStream,\n): ScriptConsole {\n return {\n log: (...args) => stdout.write(formatArgs(...args) + \"\\n\"),\n error: (...args) => stderr.write(formatArgs(...args) + \"\\n\"),\n warn: (...args) => stderr.write(formatArgs(...args) + \"\\n\"),\n info: (...args) => stdout.write(formatArgs(...args) + \"\\n\"),\n debug: (...args) => stdout.write(formatArgs(...args) + \"\\n\"),\n };\n}\n\n/** Minimal process object (always available) */\nexport function createMinimalProcess(\n env: Record<string, string>,\n cwd: string,\n argv: string[],\n stdout?: CommandOutputStream,\n stderr?: CommandOutputStream,\n) {\n return {\n env,\n cwd: () => cwd,\n argv: [\"node\", ...argv],\n exit: (code?: number) => {\n throw new ProcessExitError(code ?? 0);\n },\n platform: \"browser\" as const,\n arch: \"wasm\" as const,\n version: \"v20.0.0\",\n versions: { node: \"20.0.0\" },\n pid: 1,\n ppid: 0,\n stdout: {\n write: (s: string) => {\n if (stdout) stdout.write(String(s));\n return true;\n },\n },\n stderr: {\n write: (s: string) => {\n if (stderr) stderr.write(String(s));\n return true;\n },\n },\n nextTick: (fn: () => void) => Promise.resolve().then(fn),\n hrtime: {\n bigint: () => BigInt(Math.round(performance.now() * 1e6)),\n },\n };\n}\n\nexport class ProcessExitError extends Error {\n readonly code: number;\n constructor(code: number) {\n super(`process.exit(${code})`);\n this.name = \"ProcessExitError\";\n this.code = code;\n }\n}\n\n/** Build the builtin module map from simple NodeCompatModules */\nexport function createBuiltinModules(\n _vfs: IVfs,\n env: Record<string, string>,\n cwd: string,\n argv: string[],\n scriptConsole: ScriptConsole,\n nodeCompat?: NodeCompatModules,\n stdout?: CommandOutputStream,\n stderr?: CommandOutputStream,\n): Map<string, unknown> {\n const builtins = new Map<string, unknown>();\n\n builtins.set(\"path\", nodeCompat?.path ?? minimalPath);\n\n const process = nodeCompat?.process ?? createMinimalProcess(env, cwd, argv, stdout, stderr);\n builtins.set(\"process\", process);\n builtins.set(\"console\", scriptConsole);\n\n if (nodeCompat?.fs) builtins.set(\"fs\", nodeCompat.fs);\n if (nodeCompat?.fsPromises) builtins.set(\"fs/promises\", nodeCompat.fsPromises);\n if (nodeCompat?.events) builtins.set(\"events\", nodeCompat.events);\n if (nodeCompat?.buffer) builtins.set(\"buffer\", nodeCompat.buffer);\n if (nodeCompat?.util) builtins.set(\"util\", nodeCompat.util);\n if (nodeCompat?.timers) builtins.set(\"timers\", nodeCompat.timers);\n if (nodeCompat?.assert) builtins.set(\"assert\", nodeCompat.assert);\n if (nodeCompat?.os) builtins.set(\"os\", nodeCompat.os);\n if (nodeCompat?.stream) builtins.set(\"stream\", nodeCompat.stream);\n if (nodeCompat?.url) builtins.set(\"url\", nodeCompat.url);\n if (nodeCompat?.crypto) builtins.set(\"crypto\", nodeCompat.crypto);\n\n return builtins;\n}\n","import type { IVfs } from \"./types.js\";\nimport type { ResolvedModule } from \"./types.js\";\n\nconst textDecoder = new TextDecoder();\n\n/** Resolve and load a module from the VFS */\nexport function resolveModule(\n vfs: IVfs,\n id: string,\n fromDir: string,\n): ResolvedModule | null {\n // Subpath imports (#specifier)\n if (id.startsWith('#')) {\n return resolvePackageImport(vfs, id, fromDir);\n }\n\n // Relative/absolute path\n if (id.startsWith(\"./\") || id.startsWith(\"../\") || id.startsWith(\"/\")) {\n return resolveRelative(vfs, id, fromDir);\n }\n\n // Bare specifier → node_modules resolution\n return resolveNodeModule(vfs, id, fromDir);\n}\n\nfunction resolveRelative(\n vfs: IVfs,\n id: string,\n fromDir: string,\n): ResolvedModule | null {\n const absPath = id.startsWith(\"/\") ? id : normalizePath(fromDir + \"/\" + id);\n return resolveFile(vfs, absPath);\n}\n\nfunction resolveFile(vfs: IVfs, absPath: string): ResolvedModule | null {\n // Try exact path\n if (vfs.exists(absPath)) {\n try {\n const stat = vfs.stat(absPath);\n if (stat.type === 'file') {\n const source = textDecoder.decode(vfs.readFile(absPath));\n return { path: absPath, source };\n }\n if (stat.type === 'directory') {\n const fromPkg = tryPackageMain(vfs, absPath);\n if (fromPkg) return fromPkg;\n const fromIndex = tryIndexFile(vfs, absPath);\n if (fromIndex) return fromIndex;\n }\n } catch { /* fall through */ }\n }\n\n // Try with extensions\n for (const ext of ['.js', '.ts', '.mjs', '.json']) {\n const candidate = absPath + ext;\n try {\n if (vfs.exists(candidate) && vfs.stat(candidate).type === 'file') {\n const source = textDecoder.decode(vfs.readFile(candidate));\n return { path: candidate, source };\n }\n } catch { /* continue */ }\n }\n\n return null;\n}\n\nfunction resolveNodeModule(\n vfs: IVfs,\n name: string,\n fromDir: string,\n): ResolvedModule | null {\n let packageName: string;\n let subpath: string | null = null;\n\n if (name.startsWith('@')) {\n const parts = name.split('/');\n if (parts.length < 2) return null;\n packageName = parts[0] + '/' + parts[1];\n if (parts.length > 2) subpath = parts.slice(2).join('/');\n } else {\n const slashIdx = name.indexOf('/');\n if (slashIdx !== -1) {\n packageName = name.slice(0, slashIdx);\n subpath = name.slice(slashIdx + 1);\n } else {\n packageName = name;\n }\n }\n\n // Walk up directory tree\n let current = fromDir;\n for (; ;) {\n const candidate = normalizePath(current + '/node_modules/' + packageName);\n if (vfs.exists(candidate)) {\n const resolved = resolvePackageEntry(vfs, candidate, subpath);\n if (resolved) return resolved;\n }\n const parent = current.slice(0, current.lastIndexOf('/'));\n if (parent === current || parent === '') break;\n current = parent;\n }\n\n // Global fallbacks\n for (const globalDir of ['/usr/lib/node_modules', '/usr/share/pkg/node_modules']) {\n const candidate = normalizePath(globalDir + '/' + packageName);\n if (vfs.exists(candidate)) {\n const resolved = resolvePackageEntry(vfs, candidate, subpath);\n if (resolved) return resolved;\n }\n }\n\n return null;\n}\n\nfunction resolveExportsCondition(value: unknown): string | null {\n if (typeof value === 'string') return value;\n if (value && typeof value === 'object' && !Array.isArray(value)) {\n const cond = value as Record<string, unknown>;\n // Prioritize require > default > import, recursing into nested objects\n if (cond.require != null) {\n const r = resolveExportsCondition(cond.require);\n if (r) return r;\n }\n if (cond.default != null) {\n const r = resolveExportsCondition(cond.default);\n if (r) return r;\n }\n if (cond.import != null) {\n const r = resolveExportsCondition(cond.import);\n if (r) return r;\n }\n // Fallback: iterate remaining keys (e.g. \"node\", \"browser\")\n for (const key of Object.keys(cond)) {\n if (key === 'types' || key === 'require' || key === 'default' || key === 'import') continue;\n const nested = resolveExportsCondition(cond[key]);\n if (nested) return nested;\n }\n }\n return null;\n}\n\nfunction resolvePackageEntry(\n vfs: IVfs,\n pkgDir: string,\n subpath: string | null,\n): ResolvedModule | null {\n const pkgJsonPath = pkgDir + '/package.json';\n let pkgJson: Record<string, unknown> | null = null;\n if (vfs.exists(pkgJsonPath)) {\n try {\n pkgJson = JSON.parse(textDecoder.decode(vfs.readFile(pkgJsonPath)));\n } catch { /* ignore */ }\n }\n\n if (subpath) {\n // Check exports map\n if (pkgJson?.exports && typeof pkgJson.exports === 'object') {\n const exportsMap = pkgJson.exports as Record<string, unknown>;\n const key = './' + subpath;\n if (key in exportsMap) {\n const target = resolveExportsCondition(exportsMap[key]);\n if (target) {\n const resolved = resolveFile(vfs, normalizePath(pkgDir + '/' + target));\n if (resolved) return resolved;\n }\n }\n // Subpath patterns (./* → ./dist/*)\n for (const pattern of Object.keys(exportsMap)) {\n if (pattern.endsWith('/*') && key.startsWith(pattern.slice(0, -1))) {\n const targetPattern = resolveExportsCondition(exportsMap[pattern]);\n if (targetPattern && targetPattern.endsWith('/*')) {\n const suffix = key.slice(pattern.length - 1);\n const target = targetPattern.slice(0, -1) + suffix;\n const resolved = resolveFile(vfs, normalizePath(pkgDir + '/' + target));\n if (resolved) return resolved;\n }\n }\n }\n }\n return resolveFile(vfs, normalizePath(pkgDir + '/' + subpath));\n }\n\n // Root entry resolution\n if (pkgJson?.exports) {\n const exportsVal = pkgJson.exports;\n let rootExport: unknown = null;\n if (typeof exportsVal === 'string') {\n rootExport = exportsVal;\n } else if (typeof exportsVal === 'object' && !Array.isArray(exportsVal)) {\n const exportsMap = exportsVal as Record<string, unknown>;\n rootExport = exportsMap['.'] ?? null;\n if (!rootExport && ('require' in exportsMap || 'import' in exportsMap || 'default' in exportsMap)) {\n rootExport = exportsMap;\n }\n }\n if (rootExport) {\n const target = resolveExportsCondition(rootExport);\n if (target) {\n const resolved = resolveFile(vfs, normalizePath(pkgDir + '/' + target));\n if (resolved) return resolved;\n }\n }\n }\n\n if (pkgJson?.main && typeof pkgJson.main === 'string') {\n const resolved = resolveFile(vfs, normalizePath(pkgDir + '/' + pkgJson.main));\n if (resolved) return resolved;\n }\n\n return tryIndexFile(vfs, pkgDir);\n}\n\nfunction resolvePackageImport(\n vfs: IVfs,\n name: string,\n fromDir: string,\n): ResolvedModule | null {\n let current = fromDir;\n for (; ;) {\n const pkgPath = current + '/package.json';\n if (vfs.exists(pkgPath)) {\n try {\n const pkg = JSON.parse(textDecoder.decode(vfs.readFile(pkgPath)));\n if (pkg.imports && typeof pkg.imports === 'object') {\n const importsMap = pkg.imports as Record<string, unknown>;\n if (name in importsMap) {\n const target = resolveExportsCondition(importsMap[name]);\n if (target) {\n return resolveFile(vfs, normalizePath(current + '/' + target));\n }\n }\n }\n } catch { /* ignore parse errors */ }\n break;\n }\n const parent = current.slice(0, current.lastIndexOf('/'));\n if (parent === current || parent === '') break;\n current = parent;\n }\n return null;\n}\n\nfunction tryPackageMain(vfs: IVfs, dirPath: string): ResolvedModule | null {\n const pkgPath = dirPath + \"/package.json\";\n try {\n if (!vfs.exists(pkgPath)) return null;\n const raw = textDecoder.decode(vfs.readFile(pkgPath));\n const pkg = JSON.parse(raw);\n const main = pkg.main || pkg.module || \"index.js\";\n return resolveModule(vfs, \"./\" + main, dirPath);\n } catch {\n return null;\n }\n}\n\nfunction tryIndexFile(vfs: IVfs, dirPath: string): ResolvedModule | null {\n for (const name of [\"index.js\", \"index.ts\", \"index.mjs\", \"index.json\"]) {\n const fullPath = dirPath + \"/\" + name;\n try {\n if (!vfs.exists(fullPath)) continue;\n const source = textDecoder.decode(vfs.readFile(fullPath));\n return { path: fullPath, source };\n } catch {\n continue;\n }\n }\n return null;\n}\n\nfunction normalizePath(p: string): string {\n const parts = p.split(\"/\");\n const result: string[] = [];\n for (const part of parts) {\n if (part === \"..\") result.pop();\n else if (part !== \".\" && part !== \"\") result.push(part);\n }\n return (p.startsWith(\"/\") ? \"/\" : \"\") + result.join(\"/\");\n}\n","/**\n * ES module → CommonJS syntax transformer.\n *\n * Rewrites import/export statements to require() / module.exports without\n * resolving or inlining any dependencies. All resolution happens at runtime\n * inside the virtual require() runtime.\n *\n * Supported:\n * import defaultExport from \"mod\"\n * import * as ns from \"mod\"\n * import { x, y as z } from \"mod\"\n * import defaultExport, { x } from \"mod\"\n * import defaultExport, * as ns from \"mod\"\n * import \"mod\" (side-effect)\n * import type { … } from \"mod\" (stripped — TypeScript)\n * export default <expr | function | class>\n * export function / class / const / let / var NAME\n * export { x, y as z }\n * export { x } from \"mod\"\n * export * from \"mod\"\n * export type { … } (stripped — TypeScript)\n * import(\"mod\") → Promise.resolve(require(\"mod\"))\n * import(expr) → Promise.resolve().then(() => require(expr))\n * import.meta.url / dirname / filename / resolve / require\n */\n\n// ── Helpers ──────────────────────────────────────────────────────────────────\n\n// Names that collide with the new Function() CJS wrapper parameters.\nconst CJS_WRAPPER_PARAMS = new Set([\n\t'exports', 'require', 'module', '__filename', '__dirname',\n\t'console', 'process', 'Buffer', 'setTimeout', 'setInterval',\n\t'clearTimeout', 'clearInterval', 'global',\n\t'__importMetaUrl', '__importMeta', '__importMetaResolve',\n]);\n\nfunction cjsDecl(name: string): string {\n\treturn CJS_WRAPPER_PARAMS.has(name) ? 'var' : 'const';\n}\n\n// ── Minimal path helpers (self-contained) ────────────────────────────────────\n\nfunction dirname(p: string): string {\n\tconst idx = p.lastIndexOf('/');\n\tif (idx === -1) return '.';\n\tif (idx === 0) return '/';\n\treturn p.slice(0, idx);\n}\n\nfunction join(...parts: string[]): string {\n\tconst joined = parts.join('/').replace(/\\/+/g, '/');\n\treturn normalize(joined);\n}\n\nfunction extname(p: string): string {\n\tconst base = p.slice(p.lastIndexOf('/') + 1);\n\tconst dot = base.lastIndexOf('.');\n\tif (dot <= 0) return '';\n\treturn base.slice(dot);\n}\n\nfunction normalize(p: string): string {\n\tconst parts = p.split('/');\n\tconst result: string[] = [];\n\tfor (const part of parts) {\n\t\tif (part === '..') result.pop();\n\t\telse if (part !== '.' && part !== '') result.push(part);\n\t}\n\treturn (p.startsWith('/') ? '/' : '') + result.join('/');\n}\n\n// ── Context-aware import.meta replacement ────────────────────────────────────\n\n/**\n * Replace `import.meta.*` references only in code context, leaving string\n * and template literal text untouched. Template `${…}` expressions are\n * treated as code (replacements apply). This avoids corrupting generated\n * code inside template strings (e.g. Vite emits `import.meta.hot` in\n * template literals that are served to the browser).\n */\nfunction replaceImportMetaInCode(src: string): string {\n\tconst len = src.length;\n\tlet out = '';\n\tlet i = 0;\n\n\tfunction tryReplace(): boolean {\n\t\tif (i + 11 > len || src[i] !== 'i') return false;\n\t\tif (!src.startsWith('import.meta', i)) return false;\n\t\tconst after = i + 11;\n\t\tif (src.startsWith('.url', after)) { out += '__importMetaUrl'; i = after + 4; return true; }\n\t\tif (src.startsWith('.dirname', after)) { out += '__dirname'; i = after + 8; return true; }\n\t\tif (src.startsWith('.filename', after)) { out += '__filename'; i = after + 9; return true; }\n\t\tif (src.startsWith('.require', after)) { out += 'require'; i = after + 8; return true; }\n\t\tif (src.startsWith('.resolve', after)) { out += '__importMetaResolve'; i = after + 8; return true; }\n\t\tout += '__importMeta'; i = after; return true;\n\t}\n\n\t/** Check if current `/` starts a regex literal by examining preceding context */\n\tfunction isRegexStart(): boolean {\n\t\tlet k = out.length - 1;\n\t\twhile (k >= 0 && (out[k] === ' ' || out[k] === '\\t' || out[k] === '\\n' || out[k] === '\\r')) k--;\n\t\tconst prev = k >= 0 ? out[k] : '\\0';\n\t\tif ('\\0=([{,;!&|^~?:+-*%<>/)]}'.includes(prev)) return true;\n\t\tif (k >= 1 && /\\b(?:return|typeof|void|delete|throw|new|case|of|in|yield|await)\\s*$/.test(out.slice(Math.max(0, k - 11), k + 1))) return true;\n\t\treturn false;\n\t}\n\n\t/** Skip a regex literal from current position, copying verbatim to out */\n\tfunction skipRegexLiteral(): void {\n\t\tconst regStart = i;\n\t\ti++; // skip opening /\n\t\twhile (i < len && src[i] !== '\\n') {\n\t\t\tif (src[i] === '\\\\') { i += 2; continue; }\n\t\t\tif (src[i] === '/') { i++; break; }\n\t\t\tif (src[i] === '[') {\n\t\t\t\ti++;\n\t\t\t\twhile (i < len && src[i] !== ']' && src[i] !== '\\n') {\n\t\t\t\t\tif (src[i] === '\\\\') i++;\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t\tif (i < len && src[i] === ']') i++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\ti++;\n\t\t}\n\t\twhile (i < len && /[gimsuyv]/.test(src[i])) i++;\n\t\tout += src.slice(regStart, i);\n\t}\n\n\tfunction processCode(): void {\n\t\twhile (i < len) {\n\t\t\tconst ch = src[i];\n\n\t\t\t// Single-line comment — copy verbatim\n\t\t\tif (ch === '/' && i + 1 < len && src[i + 1] === '/') {\n\t\t\t\tconst nl = src.indexOf('\\n', i);\n\t\t\t\tconst end = nl === -1 ? len : nl;\n\t\t\t\tout += src.slice(i, end);\n\t\t\t\ti = end;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// Multi-line comment — copy verbatim\n\t\t\tif (ch === '/' && i + 1 < len && src[i + 1] === '*') {\n\t\t\t\tconst end = src.indexOf('*/', i + 2);\n\t\t\t\tconst close = end === -1 ? len : end + 2;\n\t\t\t\tout += src.slice(i, close);\n\t\t\t\ti = close;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Regex literal — copy verbatim (avoids quote chars inside confusing the string scanner)\n\t\t\tif (ch === '/' && i + 1 < len && src[i + 1] !== '/' && src[i + 1] !== '*' && isRegexStart()) {\n\t\t\t\tskipRegexLiteral();\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Simple string literals — copy verbatim (no import.meta inside)\n\t\t\tif (ch === '\"' || ch === \"'\") {\n\t\t\t\tconst start = i;\n\t\t\t\ti++;\n\t\t\t\twhile (i < len && src[i] !== ch) {\n\t\t\t\t\tif (src[i] === '\\\\') i++;\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t\tif (i < len) i++; // closing quote\n\t\t\t\tout += src.slice(start, i);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Template literal — text parts verbatim, ${} expressions as code\n\t\t\tif (ch === '`') {\n\t\t\t\tprocessTemplate();\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// import.meta replacement in code\n\t\t\tif (ch === 'i' && tryReplace()) continue;\n\n\t\t\tout += ch;\n\t\t\ti++;\n\t\t}\n\t}\n\n\tfunction processTemplate(): void {\n\t\tout += src[i]; // opening backtick\n\t\ti++;\n\t\twhile (i < len) {\n\t\t\tif (src[i] === '\\\\') {\n\t\t\t\tout += src[i] + (i + 1 < len ? src[i + 1] : '');\n\t\t\t\ti += 2;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (src[i] === '`') {\n\t\t\t\tout += '`';\n\t\t\t\ti++;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// ${...} expression — process as code\n\t\t\tif (src[i] === '$' && i + 1 < len && src[i + 1] === '{') {\n\t\t\t\tout += '${';\n\t\t\t\ti += 2;\n\t\t\t\tprocessTemplateExpression();\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// Template text — copy verbatim\n\t\t\tout += src[i];\n\t\t\ti++;\n\t\t}\n\t}\n\n\tfunction processTemplateExpression(): void {\n\t\tlet depth = 1;\n\t\twhile (i < len && depth > 0) {\n\t\t\tconst ch = src[i];\n\t\t\tif (ch === '{') { out += ch; i++; depth++; continue; }\n\t\t\tif (ch === '}') { depth--; if (depth === 0) { out += '}'; i++; return; } out += ch; i++; continue; }\n\n\t\t\t// Handle strings inside expressions\n\t\t\tif (ch === '\"' || ch === \"'\") {\n\t\t\t\tconst start = i; i++;\n\t\t\t\twhile (i < len && src[i] !== ch) { if (src[i] === '\\\\') i++; i++; }\n\t\t\t\tif (i < len) i++;\n\t\t\t\tout += src.slice(start, i);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// Nested template literal inside expression\n\t\t\tif (ch === '`') { processTemplate(); continue; }\n\t\t\t// Comments inside expressions\n\t\t\tif (ch === '/' && i + 1 < len && src[i + 1] === '/') {\n\t\t\t\tconst nl = src.indexOf('\\n', i); const end = nl === -1 ? len : nl;\n\t\t\t\tout += src.slice(i, end); i = end; continue;\n\t\t\t}\n\t\t\tif (ch === '/' && i + 1 < len && src[i + 1] === '*') {\n\t\t\t\tconst end = src.indexOf('*/', i + 2); const close = end === -1 ? len : end + 2;\n\t\t\t\tout += src.slice(i, close); i = close; continue;\n\t\t\t}\n\t\t\t// Regex literal inside expression — copy verbatim\n\t\t\tif (ch === '/' && i + 1 < len && src[i + 1] !== '/' && src[i + 1] !== '*' && isRegexStart()) {\n\t\t\t\tskipRegexLiteral();\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// import.meta replacement in expression code\n\t\t\tif (ch === 'i' && tryReplace()) continue;\n\n\t\t\tout += ch;\n\t\t\ti++;\n\t\t}\n\t}\n\n\tprocessCode();\n\treturn out;\n}\n\n// ── String literal masking ───────────────────────────────────────────────────\n\nfunction maskStringLiterals(src: string): { masked: string; literals: string[] } {\n\tconst literals: string[] = [];\n\tlet masked = '';\n\tlet i = 0;\n\n\twhile (i < src.length) {\n\t\tconst ch = src[i];\n\n\t\tif (ch === '/' && i + 1 < src.length && src[i + 1] === '/') {\n\t\t\tconst nl = src.indexOf('\\n', i);\n\t\t\tconst end = nl === -1 ? src.length : nl;\n\t\t\tmasked += src.slice(i, end);\n\t\t\ti = end;\n\t\t\tcontinue;\n\t\t}\n\t\tif (ch === '/' && i + 1 < src.length && src[i + 1] === '*') {\n\t\t\tconst end = src.indexOf('*/', i + 2);\n\t\t\tconst close = end === -1 ? src.length : end + 2;\n\t\t\tmasked += src.slice(i, close);\n\t\t\ti = close;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch === '/' && i + 1 < src.length && src[i + 1] !== '/' && src[i + 1] !== '*') {\n\t\t\tlet k = i - 1;\n\t\t\twhile (k >= 0 && (src[k] === ' ' || src[k] === '\\t' || src[k] === '\\n' || src[k] === '\\r')) k--;\n\t\t\tconst prev = k >= 0 ? src[k] : '\\0';\n\t\t\tif ('\\0=([{,;!&|^~?:+-*%<>/)]}'.includes(prev) ||\n\t\t\t\t(k >= 1 && /\\b(?:return|typeof|void|delete|throw|new|case|of|in|yield|await)\\s*$/.test(src.slice(Math.max(0, k - 11), k + 1)))) {\n\t\t\t\tconst regStart = i;\n\t\t\t\ti++;\n\t\t\t\twhile (i < src.length && src[i] !== '\\n') {\n\t\t\t\t\tif (src[i] === '\\\\') { i += 2; continue; }\n\t\t\t\t\tif (src[i] === '/') { i++; break; }\n\t\t\t\t\tif (src[i] === '[') {\n\t\t\t\t\t\ti++;\n\t\t\t\t\t\twhile (i < src.length && src[i] !== ']' && src[i] !== '\\n') {\n\t\t\t\t\t\t\tif (src[i] === '\\\\') i++;\n\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (i < src.length && src[i] === ']') i++;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t\twhile (i < src.length && /[gimsuyv]/.test(src[i])) i++;\n\t\t\t\tmasked += src.slice(regStart, i);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tif (ch === '\"' || ch === \"'\" || ch === '`') {\n\t\t\tconst start = i;\n\t\t\tconst quote = ch;\n\t\t\ti++;\n\t\t\twhile (i < src.length) {\n\t\t\t\tif (src[i] === '\\\\') { i += 2; continue; }\n\t\t\t\tif (src[i] === quote) { i++; break; }\n\t\t\t\tif (quote === '`' && src[i] === '$' && i + 1 < src.length && src[i + 1] === '{') {\n\t\t\t\t\tlet depth = 1;\n\t\t\t\t\ti += 2;\n\t\t\t\t\twhile (i < src.length && depth > 0) {\n\t\t\t\t\t\tif (src[i] === '{') depth++;\n\t\t\t\t\t\telse if (src[i] === '}') depth--;\n\t\t\t\t\t\telse if (src[i] === '\\\\') i++;\n\t\t\t\t\t\telse if (src[i] === \"'\" || src[i] === '\"') {\n\t\t\t\t\t\t\tconst q = src[i]; i++;\n\t\t\t\t\t\t\twhile (i < src.length && src[i] !== q) {\n\t\t\t\t\t\t\t\tif (src[i] === '\\\\') i++;\n\t\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (i < src.length) i++;\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t} else if (src[i] === '`') {\n\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t\twhile (i < src.length && src[i] !== '`') {\n\t\t\t\t\t\t\t\tif (src[i] === '\\\\') i++;\n\t\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (i < src.length) i++;\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ti++;\n\t\t\t\t\t}\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\ti++;\n\t\t\t}\n\n\t\t\tconst literal = src.slice(start, i);\n\t\t\tconst idx = literals.length;\n\t\t\tliterals.push(literal);\n\t\t\tmasked += quote + '__LIFO_S' + idx + '__' + quote;\n\t\t\tcontinue;\n\t\t}\n\n\t\tmasked += ch;\n\t\ti++;\n\t}\n\n\treturn { masked, literals };\n}\n\nfunction unmaskStringLiterals(src: string, literals: string[]): string {\n\treturn src.replace(\n\t\t/(['\"`])__LIFO_S(\\d+)__\\1/g,\n\t\t(_match, _quote, idxStr) => literals[parseInt(idxStr, 10)]\n\t);\n}\n\n// ── ESM detection ────────────────────────────────────────────────────────────\n\nfunction isEsmSource(source: string): boolean {\n\treturn /(?:^|\\n|;)\\s*(?:import\\s*[\\w{*('\".]|export\\s+|export\\s*\\{)/.test(source);\n}\n\n/**\n * Determine if source should be treated as ESM based on filename, content,\n * and package.json type field.\n */\nconst JS_LIKE_EXTENSIONS = new Set([\n\t'.js', '.ts', '.jsx', '.tsx', '.mjs', '.mts', '.cjs', '.cts', '',\n]);\n\nexport function shouldTreatAsEsm(\n\tsource: string,\n\tfilename: string,\n\tvfs?: { exists(p: string): boolean; readFileString(p: string): string },\n): boolean {\n\tconst ext = extname(filename);\n\tif (ext === '.mjs' || ext === '.mts') return true;\n\tif (ext === '.cjs' || ext === '.cts') return false;\n\t// Non-JS files (.css, .html, .json, etc.) should never be treated as ESM\n\tif (!JS_LIKE_EXTENSIONS.has(ext)) return false;\n\tif (vfs && ext === '.js') {\n\t\tlet dir = dirname(filename);\n\t\tfor (; ;) {\n\t\t\tconst pkgPath = join(dir, 'package.json');\n\t\t\tif (vfs.exists(pkgPath)) {\n\t\t\t\ttry {\n\t\t\t\t\tconst pkg = JSON.parse(vfs.readFileString(pkgPath));\n\t\t\t\t\tif (pkg.type === 'module') return true;\n\t\t\t\t\tif (pkg.type === 'commonjs') return false;\n\t\t\t\t} catch { /* ignore */ }\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tconst parent = dirname(dir);\n\t\t\tif (parent === dir) break;\n\t\t\tdir = parent;\n\t\t}\n\t}\n\treturn isEsmSource(source);\n}\n\n// ── Main transform ───────────────────────────────────────────────────────────\n\n/**\n * Transform ESM import/export syntax to CJS require/exports equivalents.\n */\nexport function transformEsmToCjs(source: string): string {\n\tlet result = source.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n\n\t// Context-aware import.meta replacement: replaces in code only,\n\t// leaves string/template literal text untouched.\n\tresult = replaceImportMetaInCode(result);\n\n\t// Mask string/template literals for import/export regex transforms\n\tconst { masked, literals } = maskStringLiterals(result);\n\n\tresult = masked;\n\tresult = result.replace(\n\t\t/;([ \\t]*(?:import\\s*[\\w${*('\".]|export[\\s{*]))/g,\n\t\t';\\n$1'\n\t);\n\tconst trailingExports: string[] = [];\n\tlet hasDefaultExport = false;\n\tlet hasNamedExport = false;\n\tconst importSources = new Map<string, { modRef: string; prop: string }>();\n\n\thasDefaultExport = /(?:^|\\n)\\s*export\\s+default\\s+/.test(result);\n\thasNamedExport = /(?:^|\\n)\\s*export\\s+(?:const|let|var|function|class|\\{|\\*\\s+from)/.test(result);\n\n\t// Strip type-only imports/exports (TypeScript)\n\tresult = result.replace(/^[ \\t]*import\\s+type\\s+.*?from\\s+(['\"`]).*?\\1[ \\t]*;?$/gm, '');\n\tresult = result.replace(/^[ \\t]*export\\s+type\\s+\\{[^}]*\\}(?:\\s+from\\s+(['\"`]).*?\\1)?[ \\t]*;?$/gm, '');\n\tresult = result.replace(/^[ \\t]*export\\s+type\\s+\\*\\s+from\\s+(['\"`]).*?\\1[ \\t]*;?$/gm, '');\n\n\t// Combined: import X, { a, b as c } from 'mod'\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)import\\s+([\\w$]+)\\s*,\\s*\\{([^}]+)\\}\\s*from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(match, indent, defaultName, imports, mod) => {\n\t\t\tif (imports.includes('${')) return match;\n\t\t\tconst tmp = '__mod_' + defaultName;\n\t\t\tconst mapped = imports.split(',').map((s: string) => {\n\t\t\t\tconst parts = s.trim().split(/\\s+as\\s+/);\n\t\t\t\tconst sourceProp = parts[0].trim();\n\t\t\t\tconst localName = parts.length === 2 ? parts[1].trim() : sourceProp;\n\t\t\t\tif (localName) importSources.set(localName, { modRef: tmp, prop: sourceProp });\n\t\t\t\tif (parts.length === 2) return `${sourceProp}: ${localName}`;\n\t\t\t\treturn sourceProp;\n\t\t\t}).filter((s: string) => s).join(', ');\n\t\t\treturn `\\n${indent}${cjsDecl(tmp)} ${tmp} = require(${mod});\\n${indent}${cjsDecl(defaultName)} ${defaultName} = ${tmp} && ${tmp}.__esModule && 'default' in ${tmp} ? ${tmp}.default : ${tmp};\\n${indent}const { ${mapped} } = ${tmp};`;\n\t\t}\n\t);\n\n\t// Combined: import X, * as Y from 'mod'\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)import\\s+([\\w$]+)\\s*,\\s*\\*\\s*as\\s+([\\w$]+)\\s+from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(_match, indent, defaultName, nsName, mod) => {\n\t\t\treturn `\\n${indent}${cjsDecl(nsName)} ${nsName} = require(${mod});\\n${indent}${cjsDecl(defaultName)} ${defaultName} = ${nsName} && ${nsName}.__esModule && 'default' in ${nsName} ? ${nsName}.default : ${nsName};`;\n\t\t}\n\t);\n\n\t// import { a, b as c } from 'mod'\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)import\\s*\\{([^}]+)\\}\\s*from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(match, indent, imports, mod) => {\n\t\t\tif (imports.includes('${')) return match;\n\t\t\tconst modRef = '__imp_' + Math.random().toString(36).slice(2, 8);\n\t\t\tconst mapped = imports.split(',').map((s: string) => {\n\t\t\t\tconst parts = s.trim().split(/\\s+as\\s+/);\n\t\t\t\tconst sourceProp = parts[0].trim();\n\t\t\t\tconst localName = parts.length === 2 ? parts[1].trim() : sourceProp;\n\t\t\t\tif (localName) importSources.set(localName, { modRef, prop: sourceProp });\n\t\t\t\tif (parts.length === 2) return `${sourceProp}: ${localName}`;\n\t\t\t\treturn sourceProp;\n\t\t\t}).filter((s: string) => s).join(', ');\n\t\t\treturn `\\n${indent}const ${modRef} = require(${mod});\\n${indent}const { ${mapped} } = ${modRef};`;\n\t\t}\n\t);\n\n\t// import * as X from 'mod'\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)import\\s*\\*\\s*as\\s+([\\w$]+)\\s+from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(_match, indent, name, mod) => `\\n${indent}${cjsDecl(name)} ${name} = require(${mod});`\n\t);\n\n\t// import X from 'mod' (default import)\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)import\\s+([\\w$]+)\\s+from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(_match, indent, name, mod) => {\n\t\t\tconst tmp = '__imp_' + Math.random().toString(36).slice(2, 8);\n\t\t\treturn `\\n${indent}const ${tmp} = require(${mod});\\n${indent}${cjsDecl(name)} ${name} = ${tmp} && ${tmp}.__esModule && 'default' in ${tmp} ? ${tmp}.default : ${tmp};`;\n\t\t}\n\t);\n\n\t// import 'mod' (side-effect)\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)import\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(_match, indent, mod) => `\\n${indent}require(${mod});`\n\t);\n\n\t// Strip empty export{}\n\tresult = result.replace(/(?:^|\\n)[ \\t]*export\\s*\\{\\s*\\}[ \\t]*;?/g, '');\n\n\t// export * from 'mod'\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)export\\s*\\*\\s*from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(_match, indent, mod) => {\n\t\t\tconst tmpVar = '__star_' + Math.random().toString(36).slice(2, 8);\n\t\t\treturn `\\n${indent}const ${tmpVar} = require(${mod});\\n${indent}Object.keys(${tmpVar}).forEach(function(k) { if (k !== 'default' && !exports.hasOwnProperty(k)) Object.defineProperty(exports, k, { get: function() { return ${tmpVar}[k]; }, enumerable: true, configurable: true }); });`;\n\t\t}\n\t);\n\n\t// export { a, b } from 'mod'\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)export\\s*\\{([^}]+)\\}\\s*from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(match, indent, names, mod) => {\n\t\t\tif (names.includes('${')) return match;\n\t\t\tconst tmpVar = '__re_' + Math.random().toString(36).slice(2, 8);\n\t\t\tconst assignments = names.split(',').map((s: string) => {\n\t\t\t\tconst parts = s.trim().split(/\\s+as\\s+/);\n\t\t\t\tconst local = parts[0].trim();\n\t\t\t\tconst exported = parts.length === 2 ? parts[1].trim() : local;\n\t\t\t\treturn `${indent}Object.defineProperty(exports, '${exported}', { get() { return ${tmpVar}.${local}; }, enumerable: true, configurable: true });`;\n\t\t\t}).join('\\n');\n\t\t\treturn `\\n${indent}const ${tmpVar} = require(${mod});\\n${assignments}`;\n\t\t}\n\t);\n\n\t// export default\n\tif (hasDefaultExport && hasNamedExport) {\n\t\tresult = result.replace(\n\t\t\t/(?:^|\\n)([ \\t]*)export\\s+default\\s+/g,\n\t\t\t(_match, indent) => `\\n${indent}exports.default = `\n\t\t);\n\t} else {\n\t\tresult = result.replace(\n\t\t\t/(?:^|\\n)([ \\t]*)export\\s+default\\s+/g,\n\t\t\t(_match, indent) => `\\n${indent}module.exports = `\n\t\t);\n\t}\n\n\t// export const/let/var\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)export\\s+(const|let|var)\\s+([\\w$]+)\\s*=/g,\n\t\t(match, indent, keyword, name) => {\n\t\t\tif (match.includes('${')) return match;\n\t\t\treturn `\\n${indent}${keyword} ${name} = exports.${name} =`;\n\t\t}\n\t);\n\n\t// export function / class\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)export\\s+(async\\s+function\\s+([\\w$]+)|function\\s+([\\w$]+)|class\\s+([\\w$]+))/g,\n\t\t(match, indent, decl, asyncFnName, fnName, className, offset: number) => {\n\t\t\tconst nextChar = result.charAt(offset + match.length);\n\t\t\tif (nextChar === '{') return match;\n\t\t\tconst name = asyncFnName || fnName || className;\n\t\t\ttrailingExports.push(`exports.${name} = ${name};`);\n\t\t\treturn `\\n${indent}${decl}`;\n\t\t}\n\t);\n\n\t// export { a, b as c } (local)\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)export\\s*\\{([^}]+)\\}[ \\t]*;?/g,\n\t\t(match, _indent, names) => {\n\t\t\tif (names.includes('${')) return match;\n\t\t\tnames.split(',').forEach((s: string) => {\n\t\t\t\tconst parts = s.trim().split(/\\s+as\\s+/);\n\t\t\t\tconst local = parts[0].trim();\n\t\t\t\tconst exported = parts.length === 2 ? parts[1].trim() : local;\n\t\t\t\tif (!local) return;\n\t\t\t\tconst src = importSources.get(local);\n\t\t\t\tif (src) {\n\t\t\t\t\ttrailingExports.push(`Object.defineProperty(exports, '${exported}', { get: function() { return ${src.modRef}.${src.prop}; }, enumerable: true, configurable: true });`);\n\t\t\t\t} else {\n\t\t\t\t\ttrailingExports.push(`exports.${exported} = ${local};`);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn '';\n\t\t}\n\t);\n\n\t// Dynamic import() with string literal\n\tresult = result.replace(\n\t\t/(?<!\\.)(?<!\\w)\\bimport\\s*\\(\\s*(['\"][^'\"]+['\"])\\s*\\)/g,\n\t\t(_match, mod) => `Promise.resolve(require(${mod}))`\n\t);\n\n\t// Dynamic import() with expression\n\t{\n\t\tlet i = 0;\n\t\tlet out = '';\n\t\twhile (i < result.length) {\n\t\t\tconst importIdx = result.indexOf('import(', i);\n\t\t\tif (importIdx === -1) { out += result.slice(i); break; }\n\t\t\tif (importIdx > 0 && /[\\w$.]/.test(result[importIdx - 1])) {\n\t\t\t\tout += result.slice(i, importIdx + 7);\n\t\t\t\ti = importIdx + 7;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t{\n\t\t\t\tlet depth = 1;\n\t\t\t\tlet k = importIdx + 7;\n\t\t\t\twhile (k < result.length && depth > 0) {\n\t\t\t\t\tif (result[k] === '(') depth++;\n\t\t\t\t\telse if (result[k] === ')') depth--;\n\t\t\t\t\tk++;\n\t\t\t\t}\n\t\t\t\tif (depth === 0) {\n\t\t\t\t\tlet afterClose = k;\n\t\t\t\t\twhile (afterClose < result.length && /[ \\t]/.test(result[afterClose])) afterClose++;\n\t\t\t\t\tif (result[afterClose] === '{') {\n\t\t\t\t\t\tout += result.slice(i, importIdx + 7);\n\t\t\t\t\t\ti = importIdx + 7;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tout += result.slice(i, importIdx);\n\t\t\tlet depth = 1;\n\t\t\tlet j = importIdx + 7;\n\t\t\twhile (j < result.length && depth > 0) {\n\t\t\t\tif (result[j] === '(') depth++;\n\t\t\t\telse if (result[j] === ')') depth--;\n\t\t\t\tj++;\n\t\t\t}\n\t\t\tif (depth === 0) {\n\t\t\t\tconst arg = result.slice(importIdx + 7, j - 1);\n\t\t\t\tout += `Promise.resolve().then(function() { return require(${arg}); })`;\n\t\t\t} else {\n\t\t\t\tout += result.slice(importIdx, j);\n\t\t\t}\n\t\t\ti = j;\n\t\t}\n\t\tresult = out;\n\t}\n\n\t// Replace const/let of CJS wrapper params with var\n\tresult = result.replace(\n\t\t/\\b(const|let)\\s+(__dirname|__filename|exports|require|module|console|process|Buffer|global)\\b/g,\n\t\t(_match, _kw, name) => `var ${name}`\n\t);\n\n\tif (trailingExports.length > 0) {\n\t\tresult += '\\n' + trailingExports.join('\\n');\n\t}\n\n\tresult = unmaskStringLiterals(result, literals);\n\n\t// Mark as converted ESM for default import interop\n\treturn 'Object.defineProperty(exports, \"__esModule\", { value: true });\\n' + result;\n}\n\n/**\n * Transform source to CJS if it's detected as ESM.\n *\n * `import.meta` is ALWAYS replaced regardless of ESM detection because\n * `new Function()` cannot parse it (syntax error). CJS bundles like\n * Vite's config.js use `createRequire(import.meta.url)` without being ESM.\n */\nexport function transformToCjs(\n\tsource: string,\n\tfilename: string,\n\tvfs?: { exists(p: string): boolean; readFileString(p: string): string },\n): { code: string; wasEsm: boolean } {\n\tif (shouldTreatAsEsm(source, filename, vfs)) {\n\t\tconst code = safetyNetImportMeta(transformEsmToCjs(source));\n\t\treturn { code, wasEsm: true };\n\t}\n\t// Always replace import.meta even in non-ESM files — new Function()\n\t// cannot parse import.meta syntax at all.\n\tconst code = safetyNetImportMeta(replaceImportMetaInCode(source));\n\treturn { code, wasEsm: false };\n}\n\n/**\n * Safety net: regex-based fallback to catch any `import.meta` that the\n * context-aware scanner missed (e.g. due to exotic syntax). This is\n * slightly aggressive (replaces inside string literals too) but only fires\n * when the smart scanner already failed, and the alternative is a hard\n * eval crash.\n */\nfunction safetyNetImportMeta(code: string): string {\n\tif (!code.includes('import.meta')) return code;\n\treturn code\n\t\t.replace(/\\bimport\\.meta\\.url\\b/g, '__importMetaUrl')\n\t\t.replace(/\\bimport\\.meta\\.dirname\\b/g, '__dirname')\n\t\t.replace(/\\bimport\\.meta\\.filename\\b/g, '__filename')\n\t\t.replace(/\\bimport\\.meta\\.require\\b/g, 'require')\n\t\t.replace(/\\bimport\\.meta\\.resolve\\b/g, '__importMetaResolve')\n\t\t.replace(/\\bimport\\.meta\\b/g, '__importMeta');\n}\n","import type {\n IVfs,\n NodeRunnerOptions,\n RunResult,\n ModuleFactory,\n ScriptConsole,\n CommandOutputStream,\n} from \"./types.js\";\nimport {\n createBuiltinModules,\n createCaptureConsole,\n createStreamConsole,\n createMinimalProcess,\n ProcessExitError,\n} from \"./builtins.js\";\nimport { resolveModule } from \"./resolver.js\";\nimport { transformToCjs } from \"./transformer.js\";\n\nconst textEncoder = new TextEncoder();\n\n/** No-op Vite HMR stub so `import.meta.hot.*` calls are harmless at runtime */\nfunction createHotStub() {\n const noop = () => {};\n return {\n accept: noop,\n prune: noop,\n dispose: noop,\n decline: noop,\n invalidate: noop,\n on: noop,\n send: noop,\n data: {},\n };\n}\n\n/** Extensions that should be compiled as JavaScript modules */\nconst JS_EXTENSIONS = new Set([\n '.js', '.ts', '.jsx', '.tsx', '.mjs', '.mts', '.cjs', '.cts',\n]);\n\n/** Strip shebang line (e.g. #!/usr/bin/env node) */\nfunction stripShebang(src: string): string {\n if (src.charCodeAt(0) === 0x23 /* # */ && src.charCodeAt(1) === 0x21 /* ! */) {\n const nl = src.indexOf('\\n');\n if (nl === -1) return '';\n return '\\n' + src.slice(nl + 1);\n }\n return src;\n}\n\nexport class NodeRunner {\n readonly vfs: IVfs;\n private moduleMapFactory?: Record<string, () => unknown>;\n private nodeCompat?: NodeRunnerOptions[\"nodeCompat\"];\n private env: Record<string, string>;\n private cwd: string;\n private argv: string[];\n private stdout?: CommandOutputStream;\n private stderr?: CommandOutputStream;\n private signal?: AbortSignal;\n private globalShims?: Record<string, unknown>;\n\n /** Module cache from the last execution. Can be inspected by the caller. */\n readonly moduleCache = new Map<string, unknown>();\n\n constructor(options: NodeRunnerOptions) {\n if (!options.vfs) {\n throw new Error(\"NodeRunner requires a vfs instance\");\n }\n this.vfs = options.vfs;\n this.moduleMapFactory = options.moduleMap;\n this.nodeCompat = options.nodeCompat;\n this.env = options.env ?? {};\n this.cwd = options.cwd ?? \"/\";\n this.argv = options.argv ?? [];\n this.stdout = options.stdout;\n this.stderr = options.stderr;\n this.signal = options.signal;\n this.globalShims = options.globalShims;\n\n if (options.files) {\n this.writeFilesSync(options.files);\n }\n }\n\n /** Write files to the VFS synchronously, creating parent directories as needed */\n writeFilesSync(files: Record<string, string>): void {\n for (const [filePath, content] of Object.entries(files)) {\n const parts = filePath.split(\"/\").filter(Boolean);\n for (let i = 1; i < parts.length; i++) {\n const dir = \"/\" + parts.slice(0, i).join(\"/\");\n try {\n this.vfs.mkdir(dir);\n } catch {\n // already exists\n }\n }\n this.vfs.writeFile(filePath, textEncoder.encode(content));\n }\n }\n\n /** Write files to the VFS asynchronously (for IndexedDB-backed VFS) */\n async writeFiles(files: Record<string, string>): Promise<void> {\n // VFS write operations are synchronous in the current implementation\n this.writeFilesSync(files);\n }\n\n /** Run a script file from the VFS, resolving extensions and index files */\n async runFile(filePath: string): Promise<RunResult> {\n const absPath = filePath.startsWith(\"/\")\n ? filePath\n : this.cwd + \"/\" + filePath;\n\n const scriptDir = absPath.slice(0, absPath.lastIndexOf(\"/\")) || \"/\";\n const id = absPath.startsWith(\"/\") ? absPath : \"./\" + absPath;\n const resolved = resolveModule(this.vfs, id, scriptDir);\n\n if (!resolved) {\n const msg = `Error: ENOENT: no such file or directory, open '${absPath}'`;\n if (this.stderr) {\n this.stderr.write(msg + \"\\n\");\n }\n return {\n exitCode: 1,\n stdout: \"\",\n stderr: this.stderr ? \"\" : msg,\n };\n }\n\n return this.execute(resolved.source, resolved.path);\n }\n\n /** Run a script from a source string */\n async runScript(source: string, filename?: string): Promise<RunResult> {\n const absPath = filename\n ? filename.startsWith(\"/\")\n ? filename\n : this.cwd + \"/\" + filename\n : this.cwd + \"/__script__.js\";\n\n return this.execute(source, absPath);\n }\n\n /** Write a file to the VFS then run it */\n async writeAndRun(filePath: string, source: string): Promise<RunResult> {\n this.writeFilesSync({ [filePath]: source });\n return this.runFile(filePath);\n }\n\n private async execute(source: string, absPath: string): Promise<RunResult> {\n // Clear module cache for new execution\n this.moduleCache.clear();\n\n // ── Timer tracking for event loop emulation ──\n const activeTimers = new Set<ReturnType<typeof setTimeout>>();\n let timerDrainResolve: (() => void) | null = null;\n\n const checkDrain = () => {\n if (activeTimers.size === 0 && timerDrainResolve) {\n timerDrainResolve();\n timerDrainResolve = null;\n }\n };\n\n const wrappedSetTimeout = ((fn: (...args: unknown[]) => void, ms?: number, ...args: unknown[]) => {\n const id = globalThis.setTimeout((...a: unknown[]) => {\n activeTimers.delete(id);\n try { fn(...a); } finally { checkDrain(); }\n }, ms, ...args);\n activeTimers.add(id);\n return id;\n }) as unknown as typeof setTimeout;\n\n const wrappedSetInterval = ((fn: (...args: unknown[]) => void, ms?: number, ...args: unknown[]) => {\n const id = globalThis.setInterval(fn, ms, ...args);\n activeTimers.add(id);\n return id;\n }) as unknown as typeof setInterval;\n\n const wrappedClearTimeout = ((id: ReturnType<typeof setTimeout>) => {\n globalThis.clearTimeout(id);\n activeTimers.delete(id);\n checkDrain();\n }) as typeof clearTimeout;\n\n const wrappedClearInterval = ((id: ReturnType<typeof setInterval>) => {\n globalThis.clearInterval(id);\n activeTimers.delete(id);\n checkDrain();\n }) as typeof clearInterval;\n\n // Set up output\n const stdoutLines: string[] = [];\n const stderrLines: string[] = [];\n\n const scriptConsole: ScriptConsole = this.stdout && this.stderr\n ? createStreamConsole(this.stdout, this.stderr)\n : this.stdout\n ? createStreamConsole(this.stdout, { write: (s) => stderrLines.push(s) })\n : this.stderr\n ? createStreamConsole({ write: (s) => stdoutLines.push(s) }, this.stderr)\n : createCaptureConsole(stdoutLines, stderrLines);\n\n // Set up builtins/module map\n const isStreaming = !!(this.stdout || this.stderr);\n let getBuiltin: (id: string) => unknown | undefined;\n\n if (this.moduleMapFactory) {\n // Full module map from node-compat's createModuleMap()\n const moduleMap = this.moduleMapFactory;\n getBuiltin = (id: string) => {\n const name = id.startsWith('node:') ? id.slice(5) : id;\n if (name in moduleMap) {\n // Cache the result\n if (this.moduleCache.has(name)) return this.moduleCache.get(name);\n const mod = moduleMap[name]();\n this.moduleCache.set(name, mod);\n return mod;\n }\n return undefined;\n };\n } else {\n // Simple NodeCompatModules\n const builtins = createBuiltinModules(\n this.vfs,\n this.env,\n this.cwd,\n [absPath, ...this.argv],\n scriptConsole,\n this.nodeCompat,\n this.stdout,\n this.stderr,\n );\n getBuiltin = (id: string) => {\n const name = id.startsWith('node:') ? id.slice(5) : id;\n return builtins.has(name) ? builtins.get(name) : undefined;\n };\n }\n\n // Get process and Buffer from builtins (if available)\n const processObj = getBuiltin('process') ?? createMinimalProcess(\n this.env, this.cwd, [absPath, ...this.argv], this.stdout, this.stderr,\n );\n const bufferObj = getBuiltin('buffer');\n const BufferClass = bufferObj && typeof bufferObj === 'object' && 'Buffer' in (bufferObj as Record<string, unknown>)\n ? (bufferObj as Record<string, unknown>).Buffer\n : undefined;\n\n // Wire process.stdout/stderr to output streams\n const pObj = processObj as Record<string, unknown>;\n if (pObj.stdout && typeof pObj.stdout === 'object') {\n const pStdout = pObj.stdout as Record<string, unknown>;\n if (this.stdout) {\n pStdout.write = (s: string) => { this.stdout!.write(String(s)); return true; };\n } else {\n pStdout.write = (s: string) => { stdoutLines.push(String(s)); return true; };\n }\n }\n if (pObj.stderr && typeof pObj.stderr === 'object') {\n const pStderr = pObj.stderr as Record<string, unknown>;\n if (this.stderr) {\n pStderr.write = (s: string) => { this.stderr!.write(String(s)); return true; };\n } else {\n pStderr.write = (s: string) => { stderrLines.push(String(s)); return true; };\n }\n }\n\n // Build require function\n const self = this;\n const createRequire = (fromDir: string) => {\n const require = (id: string): unknown => {\n const name = id.startsWith('node:') ? id.slice(5) : id;\n\n // Check builtins first\n const builtin = getBuiltin(name);\n if (builtin !== undefined) return builtin;\n\n // Resolve from VFS\n const resolved = resolveModule(self.vfs, id, fromDir);\n if (!resolved) {\n throw new Error(`Cannot find module '${id}'`);\n }\n\n // Return cached if available\n if (self.moduleCache.has(resolved.path)) {\n return self.moduleCache.get(resolved.path);\n }\n\n // Handle JSON\n if (resolved.path.endsWith(\".json\")) {\n const json = JSON.parse(resolved.source);\n self.moduleCache.set(resolved.path, json);\n return json;\n }\n\n // Handle non-JS assets (CSS, HTML, etc.) — return as raw text\n const ext = resolved.path.slice(resolved.path.lastIndexOf('.'));\n if (ext && !JS_EXTENSIONS.has(ext)) {\n self.moduleCache.set(resolved.path, resolved.source);\n return resolved.source;\n }\n\n // Execute module\n const moduleExports: Record<string, unknown> = {};\n const moduleObj = { exports: moduleExports };\n // Pre-cache to handle circular dependencies\n self.moduleCache.set(resolved.path, moduleExports);\n\n const moduleDir = resolved.path.slice(0, resolved.path.lastIndexOf(\"/\"));\n const childRequire = createRequire(moduleDir);\n\n // Transform ESM → CJS if needed\n let cleanSource = stripShebang(resolved.source);\n const { code: cjsSource } = transformToCjs(cleanSource, resolved.path, self.vfs);\n cleanSource = cjsSource;\n\n const factory = compileModule(cleanSource, resolved.path, self.stderr);\n\n const importMetaUrl = 'file://' + resolved.path;\n const importMeta = { url: importMetaUrl, dirname: moduleDir, filename: resolved.path, hot: createHotStub() };\n const importMetaResolve = (specifier: string) => {\n throw new Error(`import.meta.resolve('${specifier}') is not supported`);\n };\n\n const global = { process: processObj, Buffer: BufferClass, console: scriptConsole };\n\n // Save/restore globalThis\n const ga = globalThis as Record<string, unknown>;\n const isRealNode = typeof (ga.process as Record<string, unknown>)?.pid === 'number';\n const saved: Record<string, unknown> = {};\n if (!isRealNode) {\n saved.process = ga.process; ga.process = processObj;\n saved.Buffer = ga.Buffer; if (BufferClass) ga.Buffer = BufferClass;\n saved.console = ga.console; ga.console = scriptConsole;\n }\n // Apply global shims\n const savedShims: Record<string, unknown> = {};\n if (self.globalShims) {\n for (const k of Object.keys(self.globalShims)) {\n savedShims[k] = ga[k];\n ga[k] = self.globalShims[k];\n }\n }\n\n try {\n factory(\n moduleObj.exports, childRequire, moduleObj,\n resolved.path, moduleDir,\n scriptConsole, processObj, BufferClass,\n wrappedSetTimeout, wrappedSetInterval,\n wrappedClearTimeout, wrappedClearInterval,\n global,\n importMetaUrl, importMeta, importMetaResolve,\n );\n } catch (e) {\n if (e instanceof ProcessExitError) throw e;\n const err = e instanceof Error ? e : new Error(String(e));\n if (!err.message.includes('[/')) {\n err.message = `[${resolved.path}] ${err.message}`;\n }\n throw err;\n } finally {\n if (self.globalShims) {\n for (const k of Object.keys(savedShims)) ga[k] = savedShims[k];\n }\n if (!isRealNode) {\n ga.process = saved.process;\n ga.Buffer = saved.Buffer;\n ga.console = saved.console;\n }\n }\n\n // Update cache with potentially reassigned module.exports\n if (moduleObj.exports !== moduleExports) {\n self.moduleCache.set(resolved.path, moduleObj.exports);\n }\n return moduleObj.exports;\n };\n\n require.resolve = (id: string): string => {\n const name = id.startsWith('node:') ? id.slice(5) : id;\n if (getBuiltin(name) !== undefined) return id;\n const resolved = resolveModule(self.vfs, id, fromDir);\n if (!resolved) throw new Error(`Cannot find module '${id}'`);\n return resolved.path;\n };\n\n return require;\n };\n\n // Override module shim if using moduleMap\n if (this.moduleMapFactory) {\n const moduleMap = this.moduleMapFactory;\n moduleMap.module = () => {\n const makeCreateRequire = (_filename: string | URL) => {\n const dir = typeof _filename === 'string'\n ? _filename.slice(0, _filename.lastIndexOf('/')) || '/'\n : '/';\n return createRequire(dir);\n };\n const builtinNames = Object.keys(moduleMap);\n const isBuiltin = (s: string) => {\n const n = s.startsWith('node:') ? s.slice(5) : s;\n return builtinNames.includes(n);\n };\n return { createRequire: makeCreateRequire, builtinModules: builtinNames, isBuiltin, default: { createRequire: makeCreateRequire } };\n };\n }\n\n let exitCode = 0;\n\n // Transform main source\n let cleanMainSource = stripShebang(source);\n const { code: cjsMainSource, wasEsm: isEsm } = transformToCjs(cleanMainSource, absPath, this.vfs);\n cleanMainSource = cjsMainSource;\n\n // Wrap in CJS (async for ESM to support top-level await)\n const wrapped = isEsm\n ? `(async function(exports, require, module, __filename, __dirname, console, process, Buffer, setTimeout, setInterval, clearTimeout, clearInterval, global, __importMetaUrl, __importMeta, __importMetaResolve) {\\n${cleanMainSource}\\n})`\n : `(function(exports, require, module, __filename, __dirname, console, process, Buffer, setTimeout, setInterval, clearTimeout, clearInterval, global, __importMetaUrl, __importMeta, __importMetaResolve) {\\n${cleanMainSource}\\n})`;\n\n const scriptDir = absPath.slice(0, absPath.lastIndexOf(\"/\")) || \"/\";\n const require = createRequire(scriptDir);\n const moduleExports: Record<string, unknown> = {};\n const moduleObj = { exports: moduleExports };\n const global = { process: processObj, Buffer: BufferClass, console: scriptConsole };\n\n const mainImportMetaUrl = 'file://' + absPath;\n const mainImportMeta = { url: mainImportMetaUrl, dirname: scriptDir, filename: absPath, hot: createHotStub() };\n const mainImportMetaResolve = (specifier: string) => {\n throw new Error(`import.meta.resolve('${specifier}') is not supported`);\n };\n\n // Save/restore globalThis\n const ga = globalThis as Record<string, unknown>;\n const isRealNode = typeof (ga.process as Record<string, unknown>)?.pid === 'number';\n const saved: Record<string, unknown> = {};\n if (!isRealNode) {\n saved.process = ga.process; ga.process = processObj;\n saved.Buffer = ga.Buffer; if (BufferClass) ga.Buffer = BufferClass;\n saved.console = ga.console; ga.console = scriptConsole;\n }\n const savedShims: Record<string, unknown> = {};\n if (this.globalShims) {\n for (const k of Object.keys(this.globalShims)) {\n savedShims[k] = ga[k];\n ga[k] = this.globalShims[k];\n }\n }\n\n // Unhandled rejection handler\n let pendingRejection: unknown = null;\n const rejectionHandler = (event: PromiseRejectionEvent) => {\n pendingRejection = event.reason;\n event.preventDefault();\n const msg = event.reason instanceof Error\n ? event.reason.stack || event.reason.message\n : String(event.reason);\n const errMsg = `[unhandledRejection] ${msg}\\n`;\n if (this.stderr) this.stderr.write(errMsg);\n else stderrLines.push(errMsg);\n };\n if (typeof globalThis.addEventListener === 'function') {\n globalThis.addEventListener('unhandledrejection', rejectionHandler as EventListener);\n }\n\n try {\n const fn = new Function('return ' + wrapped)();\n const result = fn(\n moduleExports, require, moduleObj, absPath, scriptDir,\n scriptConsole, processObj, BufferClass,\n wrappedSetTimeout, wrappedSetInterval,\n wrappedClearTimeout, wrappedClearInterval,\n global,\n mainImportMetaUrl, mainImportMeta, mainImportMetaResolve,\n );\n\n // Await if ESM (async IIFE returns a promise)\n if (isEsm && result && typeof result.then === 'function') {\n await result;\n }\n\n if (pendingRejection) {\n if (pendingRejection instanceof ProcessExitError) {\n exitCode = pendingRejection.code;\n } else {\n exitCode = 1;\n }\n }\n } catch (e) {\n if (e instanceof ProcessExitError) {\n exitCode = e.code;\n } else {\n exitCode = 1;\n const msg = e instanceof Error ? (e.stack || e.message) : String(e);\n if (this.stderr) {\n this.stderr.write(msg + \"\\n\");\n } else {\n stderrLines.push(msg);\n }\n }\n } finally {\n if (this.globalShims) {\n for (const k of Object.keys(savedShims)) ga[k] = savedShims[k];\n }\n if (!isRealNode) {\n ga.process = saved.process;\n ga.Buffer = saved.Buffer;\n ga.console = saved.console;\n }\n if (typeof globalThis.removeEventListener === 'function') {\n globalThis.removeEventListener('unhandledrejection', rejectionHandler as EventListener);\n }\n }\n\n // ── Event loop drain: wait for pending timers ──\n if (activeTimers.size > 0) {\n const drainPromise = new Promise<void>(resolve => { timerDrainResolve = resolve; });\n const abortPromise = this.signal\n ? new Promise<void>(resolve => {\n if (this.signal!.aborted) { resolve(); return; }\n this.signal!.addEventListener('abort', () => resolve(), { once: true });\n })\n : new Promise<void>(() => {}); // never resolves if no signal\n\n await Promise.race([drainPromise, abortPromise]);\n\n // Clean up remaining timers on abort\n for (const id of activeTimers) {\n globalThis.clearTimeout(id);\n globalThis.clearInterval(id);\n }\n activeTimers.clear();\n }\n\n return {\n exitCode,\n stdout: isStreaming ? \"\" : stdoutLines.join(\"\\n\"),\n stderr: isStreaming ? \"\" : stderrLines.join(\"\\n\"),\n };\n }\n}\n\n/** Compile source code into a module factory function */\nfunction compileModule(source: string, filename: string, stderr?: CommandOutputStream): ModuleFactory {\n const wrapped = `(function(exports, require, module, __filename, __dirname, console, process, Buffer, setTimeout, setInterval, clearTimeout, clearInterval, global, __importMetaUrl, __importMeta, __importMetaResolve) {\\n${source}\\n})`;\n try {\n // eslint-disable-next-line no-eval\n return (0, eval)(wrapped) as ModuleFactory;\n } catch (err) {\n const errMsg = err instanceof Error ? err.message : String(err);\n const msg = `Failed to compile '${filename}': ${errMsg}`;\n\n // Binary search for error location\n if (stderr) {\n stderr.write(`[CJS-FAIL] file=${filename} srcLen=${source.length} err=${errMsg}\\n`);\n const lines = source.split('\\n');\n let lo = 0, hi = lines.length;\n while (hi - lo > 3) {\n const mid = (lo + hi) >>> 1;\n const partial = lines.slice(0, mid).join('\\n');\n try { new Function(partial); lo = mid; } catch (e2) {\n if (e2 instanceof Error && e2.message === errMsg) hi = mid;\n else lo = mid;\n }\n }\n stderr.write(`[CJS-FAIL] error at L${lo}-${hi}, showing L${Math.max(1, lo - 25)} to L${hi + 3}:\\n`);\n for (let li = Math.max(0, lo - 25); li < Math.min(lines.length, hi + 3); li++) {\n stderr.write(`[CJS-FAIL] ${li + 1 === lo || li + 1 === hi ? '>>>' : ' '} L${li + 1}: ${lines[li]?.slice(0, 200)}\\n`);\n }\n }\n\n throw new SyntaxError(msg);\n }\n}\n"],"mappings":"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","names":["depth","code","require","moduleExports","moduleObj","global","ga","isRealNode","saved","savedShims"]}