@lifo-sh/node-runner 0.1.2 → 0.1.4

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.
package/dist/index.cjs CHANGED
@@ -546,10 +546,22 @@ function unmaskStringLiterals(src, literals) {
546
546
  function isEsmSource(source) {
547
547
  return /(?:^|\n|;)\s*(?:import\s*[\w{*('".]|export\s+|export\s*\{)/.test(source);
548
548
  }
549
+ var JS_LIKE_EXTENSIONS = /* @__PURE__ */ new Set([
550
+ ".js",
551
+ ".ts",
552
+ ".jsx",
553
+ ".tsx",
554
+ ".mjs",
555
+ ".mts",
556
+ ".cjs",
557
+ ".cts",
558
+ ""
559
+ ]);
549
560
  function shouldTreatAsEsm(source, filename, vfs) {
550
561
  const ext = extname(filename);
551
- if (ext === ".mjs") return true;
552
- if (ext === ".cjs") return false;
562
+ if (ext === ".mjs" || ext === ".mts") return true;
563
+ if (ext === ".cjs" || ext === ".cts") return false;
564
+ if (!JS_LIKE_EXTENSIONS.has(ext)) return false;
553
565
  if (vfs && ext === ".js") {
554
566
  let dir = dirname(filename);
555
567
  for (; ; ) {
@@ -572,14 +584,14 @@ function shouldTreatAsEsm(source, filename, vfs) {
572
584
  }
573
585
  function transformEsmToCjs(source) {
574
586
  let result = source.replace(/\r\n/g, "\n").replace(/\r/g, "\n");
587
+ const { masked, literals } = maskStringLiterals(result);
588
+ result = masked;
575
589
  result = result.split("import.meta.url").join("__importMetaUrl");
576
590
  result = result.split("import.meta.dirname").join("__dirname");
577
591
  result = result.split("import.meta.filename").join("__filename");
578
592
  result = result.split("import.meta.require").join("require");
579
593
  result = result.split("import.meta.resolve").join("__importMetaResolve");
580
594
  result = result.split("import.meta").join("__importMeta");
581
- const { masked, literals } = maskStringLiterals(result);
582
- result = masked;
583
595
  result = result.replace(
584
596
  /;([ \t]*(?:import\s*[\w${*('".]|export[\s{*]))/g,
585
597
  ";\n$1"
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/runner.ts","../src/builtins.ts","../src/resolver.ts","../src/transformer.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 NodeRunnerOptions,\n RunResult,\n NodeCompatModules,\n ScriptConsole,\n ResolvedModule,\n CommandOutputStream,\n} from \"./types.js\";\n","import { VFS } from \"@lifo-sh/vfs\";\nimport type {\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/** 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: VFS;\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 this.vfs = options.vfs ?? new 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 // 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 // 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 globalThis.setTimeout, globalThis.setInterval,\n globalThis.clearTimeout, globalThis.clearInterval,\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 globalThis.setTimeout, globalThis.setInterval,\n globalThis.clearTimeout, globalThis.clearInterval,\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 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","import type { NodeCompatModules, ScriptConsole, CommandOutputStream } from \"./types.js\";\nimport type { VFS } from \"@lifo-sh/vfs\";\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: VFS,\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 { VFS } from \"@lifo-sh/vfs\";\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: VFS,\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: VFS,\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: VFS, 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: VFS,\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: VFS,\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: VFS,\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: VFS, 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: VFS, 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// ── 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 */\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') return true;\n\tif (ext === '.cjs') 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\tresult = result.split('import.meta.url').join('__importMetaUrl');\n\tresult = result.split('import.meta.dirname').join('__dirname');\n\tresult = result.split('import.meta.filename').join('__filename');\n\tresult = result.split('import.meta.require').join('require');\n\tresult = result.split('import.meta.resolve').join('__importMetaResolve');\n\tresult = result.split('import.meta').join('__importMeta');\n\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 */\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\treturn { code: transformEsmToCjs(source), wasEsm: true };\n\t}\n\treturn { code: source, wasEsm: false };\n}\n"],"mappings":"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","names":["depth","require","moduleExports","moduleObj","global","ga","isRealNode","saved","savedShims"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/runner.ts","../src/builtins.ts","../src/resolver.ts","../src/transformer.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 NodeRunnerOptions,\n RunResult,\n NodeCompatModules,\n ScriptConsole,\n ResolvedModule,\n CommandOutputStream,\n} from \"./types.js\";\n","import { VFS } from \"@lifo-sh/vfs\";\nimport type {\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/** 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: VFS;\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 this.vfs = options.vfs ?? new 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 // 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 // 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 globalThis.setTimeout, globalThis.setInterval,\n globalThis.clearTimeout, globalThis.clearInterval,\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 globalThis.setTimeout, globalThis.setInterval,\n globalThis.clearTimeout, globalThis.clearInterval,\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 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","import type { NodeCompatModules, ScriptConsole, CommandOutputStream } from \"./types.js\";\nimport type { VFS } from \"@lifo-sh/vfs\";\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: VFS,\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 { VFS } from \"@lifo-sh/vfs\";\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: VFS,\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: VFS,\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: VFS, 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: VFS,\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: VFS,\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: VFS,\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: VFS, 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: VFS, 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// ── 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// Mask string/template literals FIRST so import.meta replacements\n\t// don't affect strings (e.g. Vite generates code templates containing\n\t// `import.meta.hot` in template literals — those must stay untouched).\n\tconst { masked, literals } = maskStringLiterals(result);\n\n\tresult = masked;\n\n\t// import.meta.* replacements — now safe from touching string contents\n\tresult = result.split('import.meta.url').join('__importMetaUrl');\n\tresult = result.split('import.meta.dirname').join('__dirname');\n\tresult = result.split('import.meta.filename').join('__filename');\n\tresult = result.split('import.meta.require').join('require');\n\tresult = result.split('import.meta.resolve').join('__importMetaResolve');\n\tresult = result.split('import.meta').join('__importMeta');\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 */\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\treturn { code: transformEsmToCjs(source), wasEsm: true };\n\t}\n\treturn { code: source, wasEsm: false };\n}\n"],"mappings":"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","names":["depth","require","moduleExports","moduleObj","global","ga","isRealNode","saved","savedShims"]}
package/dist/index.d.cts CHANGED
@@ -127,10 +127,6 @@ declare class ProcessExitError extends Error {
127
127
  * import(expr) → Promise.resolve().then(() => require(expr))
128
128
  * import.meta.url / dirname / filename / resolve / require
129
129
  */
130
- /**
131
- * Determine if source should be treated as ESM based on filename, content,
132
- * and package.json type field.
133
- */
134
130
  declare function shouldTreatAsEsm(source: string, filename: string, vfs?: {
135
131
  exists(p: string): boolean;
136
132
  readFileString(p: string): string;
package/dist/index.d.ts CHANGED
@@ -127,10 +127,6 @@ declare class ProcessExitError extends Error {
127
127
  * import(expr) → Promise.resolve().then(() => require(expr))
128
128
  * import.meta.url / dirname / filename / resolve / require
129
129
  */
130
- /**
131
- * Determine if source should be treated as ESM based on filename, content,
132
- * and package.json type field.
133
- */
134
130
  declare function shouldTreatAsEsm(source: string, filename: string, vfs?: {
135
131
  exists(p: string): boolean;
136
132
  readFileString(p: string): string;
package/dist/index.js CHANGED
@@ -515,10 +515,22 @@ function unmaskStringLiterals(src, literals) {
515
515
  function isEsmSource(source) {
516
516
  return /(?:^|\n|;)\s*(?:import\s*[\w{*('".]|export\s+|export\s*\{)/.test(source);
517
517
  }
518
+ var JS_LIKE_EXTENSIONS = /* @__PURE__ */ new Set([
519
+ ".js",
520
+ ".ts",
521
+ ".jsx",
522
+ ".tsx",
523
+ ".mjs",
524
+ ".mts",
525
+ ".cjs",
526
+ ".cts",
527
+ ""
528
+ ]);
518
529
  function shouldTreatAsEsm(source, filename, vfs) {
519
530
  const ext = extname(filename);
520
- if (ext === ".mjs") return true;
521
- if (ext === ".cjs") return false;
531
+ if (ext === ".mjs" || ext === ".mts") return true;
532
+ if (ext === ".cjs" || ext === ".cts") return false;
533
+ if (!JS_LIKE_EXTENSIONS.has(ext)) return false;
522
534
  if (vfs && ext === ".js") {
523
535
  let dir = dirname(filename);
524
536
  for (; ; ) {
@@ -541,14 +553,14 @@ function shouldTreatAsEsm(source, filename, vfs) {
541
553
  }
542
554
  function transformEsmToCjs(source) {
543
555
  let result = source.replace(/\r\n/g, "\n").replace(/\r/g, "\n");
556
+ const { masked, literals } = maskStringLiterals(result);
557
+ result = masked;
544
558
  result = result.split("import.meta.url").join("__importMetaUrl");
545
559
  result = result.split("import.meta.dirname").join("__dirname");
546
560
  result = result.split("import.meta.filename").join("__filename");
547
561
  result = result.split("import.meta.require").join("require");
548
562
  result = result.split("import.meta.resolve").join("__importMetaResolve");
549
563
  result = result.split("import.meta").join("__importMeta");
550
- const { masked, literals } = maskStringLiterals(result);
551
- result = masked;
552
564
  result = result.replace(
553
565
  /;([ \t]*(?:import\s*[\w${*('".]|export[\s{*]))/g,
554
566
  ";\n$1"
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/runner.ts","../src/builtins.ts","../src/resolver.ts","../src/transformer.ts"],"sourcesContent":["import { VFS } from \"@lifo-sh/vfs\";\nimport type {\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/** 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: VFS;\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 this.vfs = options.vfs ?? new 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 // 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 // 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 globalThis.setTimeout, globalThis.setInterval,\n globalThis.clearTimeout, globalThis.clearInterval,\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 globalThis.setTimeout, globalThis.setInterval,\n globalThis.clearTimeout, globalThis.clearInterval,\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 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","import type { NodeCompatModules, ScriptConsole, CommandOutputStream } from \"./types.js\";\nimport type { VFS } from \"@lifo-sh/vfs\";\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: VFS,\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 { VFS } from \"@lifo-sh/vfs\";\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: VFS,\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: VFS,\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: VFS, 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: VFS,\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: VFS,\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: VFS,\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: VFS, 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: VFS, 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// ── 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 */\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') return true;\n\tif (ext === '.cjs') 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\tresult = result.split('import.meta.url').join('__importMetaUrl');\n\tresult = result.split('import.meta.dirname').join('__dirname');\n\tresult = result.split('import.meta.filename').join('__filename');\n\tresult = result.split('import.meta.require').join('require');\n\tresult = result.split('import.meta.resolve').join('__importMetaResolve');\n\tresult = result.split('import.meta').join('__importMeta');\n\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 */\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\treturn { code: transformEsmToCjs(source), wasEsm: true };\n\t}\n\treturn { code: source, wasEsm: false };\n}\n"],"mappings":"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","names":["depth","require","moduleExports","moduleObj","global","ga","isRealNode","saved","savedShims"]}
1
+ {"version":3,"sources":["../src/runner.ts","../src/builtins.ts","../src/resolver.ts","../src/transformer.ts"],"sourcesContent":["import { VFS } from \"@lifo-sh/vfs\";\nimport type {\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/** 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: VFS;\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 this.vfs = options.vfs ?? new 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 // 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 // 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 globalThis.setTimeout, globalThis.setInterval,\n globalThis.clearTimeout, globalThis.clearInterval,\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 globalThis.setTimeout, globalThis.setInterval,\n globalThis.clearTimeout, globalThis.clearInterval,\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 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","import type { NodeCompatModules, ScriptConsole, CommandOutputStream } from \"./types.js\";\nimport type { VFS } from \"@lifo-sh/vfs\";\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: VFS,\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 { VFS } from \"@lifo-sh/vfs\";\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: VFS,\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: VFS,\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: VFS, 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: VFS,\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: VFS,\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: VFS,\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: VFS, 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: VFS, 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// ── 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// Mask string/template literals FIRST so import.meta replacements\n\t// don't affect strings (e.g. Vite generates code templates containing\n\t// `import.meta.hot` in template literals — those must stay untouched).\n\tconst { masked, literals } = maskStringLiterals(result);\n\n\tresult = masked;\n\n\t// import.meta.* replacements — now safe from touching string contents\n\tresult = result.split('import.meta.url').join('__importMetaUrl');\n\tresult = result.split('import.meta.dirname').join('__dirname');\n\tresult = result.split('import.meta.filename').join('__filename');\n\tresult = result.split('import.meta.require').join('require');\n\tresult = result.split('import.meta.resolve').join('__importMetaResolve');\n\tresult = result.split('import.meta').join('__importMeta');\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 */\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\treturn { code: transformEsmToCjs(source), wasEsm: true };\n\t}\n\treturn { code: source, wasEsm: false };\n}\n"],"mappings":"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","names":["depth","require","moduleExports","moduleObj","global","ga","isRealNode","saved","savedShims"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lifo-sh/node-runner",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "Virtual Node.js script runner for the browser",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -19,6 +19,12 @@
19
19
  "publishConfig": {
20
20
  "access": "public"
21
21
  },
22
+ "scripts": {
23
+ "build": "tsup",
24
+ "dev": "tsup --watch",
25
+ "test": "vitest run",
26
+ "typecheck": "tsc --noEmit"
27
+ },
22
28
  "dependencies": {
23
29
  "@lifo-sh/vfs": "^0.1.0"
24
30
  },
@@ -34,11 +40,5 @@
34
40
  "@lifo-sh/node-compat": "^0.1.0",
35
41
  "tsup": "^8.0.0",
36
42
  "vitest": "^3.0.0"
37
- },
38
- "scripts": {
39
- "build": "tsup",
40
- "dev": "tsup --watch",
41
- "test": "vitest run",
42
- "typecheck": "tsc --noEmit"
43
43
  }
44
- }
44
+ }