@lifo-sh/node-runner 0.1.8 → 0.1.10
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.map +1 -1
- package/dist/index.d.cts +28 -6
- package/dist/index.d.ts +28 -6
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.map
CHANGED
|
@@ -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// ── Context-aware import.meta replacement ────────────────────────────────────\n\n/**\n * Replace `import.meta.*` references only in code context, leaving string\n * and template literal text untouched. Template `${…}` expressions are\n * treated as code (replacements apply). This avoids corrupting generated\n * code inside template strings (e.g. Vite emits `import.meta.hot` in\n * template literals that are served to the browser).\n */\nfunction replaceImportMetaInCode(src: string): string {\n\tconst len = src.length;\n\tlet out = '';\n\tlet i = 0;\n\n\tfunction tryReplace(): boolean {\n\t\tif (i + 11 > len || src[i] !== 'i') return false;\n\t\tif (!src.startsWith('import.meta', i)) return false;\n\t\tconst after = i + 11;\n\t\tif (src.startsWith('.url', after)) { out += '__importMetaUrl'; i = after + 4; return true; }\n\t\tif (src.startsWith('.dirname', after)) { out += '__dirname'; i = after + 8; return true; }\n\t\tif (src.startsWith('.filename', after)) { out += '__filename'; i = after + 9; return true; }\n\t\tif (src.startsWith('.require', after)) { out += 'require'; i = after + 8; return true; }\n\t\tif (src.startsWith('.resolve', after)) { out += '__importMetaResolve'; i = after + 8; return true; }\n\t\tout += '__importMeta'; i = after; return true;\n\t}\n\n\tfunction processCode(): void {\n\t\twhile (i < len) {\n\t\t\tconst ch = src[i];\n\n\t\t\t// Single-line comment — copy verbatim\n\t\t\tif (ch === '/' && i + 1 < len && src[i + 1] === '/') {\n\t\t\t\tconst nl = src.indexOf('\\n', i);\n\t\t\t\tconst end = nl === -1 ? len : nl;\n\t\t\t\tout += src.slice(i, end);\n\t\t\t\ti = end;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// Multi-line comment — copy verbatim\n\t\t\tif (ch === '/' && i + 1 < len && src[i + 1] === '*') {\n\t\t\t\tconst end = src.indexOf('*/', i + 2);\n\t\t\t\tconst close = end === -1 ? len : end + 2;\n\t\t\t\tout += src.slice(i, close);\n\t\t\t\ti = close;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Simple string literals — copy verbatim (no import.meta inside)\n\t\t\tif (ch === '\"' || ch === \"'\") {\n\t\t\t\tconst start = i;\n\t\t\t\ti++;\n\t\t\t\twhile (i < len && src[i] !== ch) {\n\t\t\t\t\tif (src[i] === '\\\\') i++;\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t\tif (i < len) i++; // closing quote\n\t\t\t\tout += src.slice(start, i);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Template literal — text parts verbatim, ${} expressions as code\n\t\t\tif (ch === '`') {\n\t\t\t\tprocessTemplate();\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// import.meta replacement in code\n\t\t\tif (ch === 'i' && tryReplace()) continue;\n\n\t\t\tout += ch;\n\t\t\ti++;\n\t\t}\n\t}\n\n\tfunction processTemplate(): void {\n\t\tout += src[i]; // opening backtick\n\t\ti++;\n\t\twhile (i < len) {\n\t\t\tif (src[i] === '\\\\') {\n\t\t\t\tout += src[i] + (i + 1 < len ? src[i + 1] : '');\n\t\t\t\ti += 2;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (src[i] === '`') {\n\t\t\t\tout += '`';\n\t\t\t\ti++;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// ${...} expression — process as code\n\t\t\tif (src[i] === '$' && i + 1 < len && src[i + 1] === '{') {\n\t\t\t\tout += '${';\n\t\t\t\ti += 2;\n\t\t\t\tprocessTemplateExpression();\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// Template text — copy verbatim\n\t\t\tout += src[i];\n\t\t\ti++;\n\t\t}\n\t}\n\n\tfunction processTemplateExpression(): void {\n\t\tlet depth = 1;\n\t\twhile (i < len && depth > 0) {\n\t\t\tconst ch = src[i];\n\t\t\tif (ch === '{') { out += ch; i++; depth++; continue; }\n\t\t\tif (ch === '}') { depth--; if (depth === 0) { out += '}'; i++; return; } out += ch; i++; continue; }\n\n\t\t\t// Handle strings inside expressions\n\t\t\tif (ch === '\"' || ch === \"'\") {\n\t\t\t\tconst start = i; i++;\n\t\t\t\twhile (i < len && src[i] !== ch) { if (src[i] === '\\\\') i++; i++; }\n\t\t\t\tif (i < len) i++;\n\t\t\t\tout += src.slice(start, i);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// Nested template literal inside expression\n\t\t\tif (ch === '`') { processTemplate(); continue; }\n\t\t\t// Comments inside expressions\n\t\t\tif (ch === '/' && i + 1 < len && src[i + 1] === '/') {\n\t\t\t\tconst nl = src.indexOf('\\n', i); const end = nl === -1 ? len : nl;\n\t\t\t\tout += src.slice(i, end); i = end; continue;\n\t\t\t}\n\t\t\tif (ch === '/' && i + 1 < len && src[i + 1] === '*') {\n\t\t\t\tconst end = src.indexOf('*/', i + 2); const close = end === -1 ? len : end + 2;\n\t\t\t\tout += src.slice(i, close); i = close; continue;\n\t\t\t}\n\t\t\t// import.meta replacement in expression code\n\t\t\tif (ch === 'i' && tryReplace()) continue;\n\n\t\t\tout += ch;\n\t\t\ti++;\n\t\t}\n\t}\n\n\tprocessCode();\n\treturn out;\n}\n\n// ── String literal masking ───────────────────────────────────────────────────\n\nfunction maskStringLiterals(src: string): { masked: string; literals: string[] } {\n\tconst literals: string[] = [];\n\tlet masked = '';\n\tlet i = 0;\n\n\twhile (i < src.length) {\n\t\tconst ch = src[i];\n\n\t\tif (ch === '/' && i + 1 < src.length && src[i + 1] === '/') {\n\t\t\tconst nl = src.indexOf('\\n', i);\n\t\t\tconst end = nl === -1 ? src.length : nl;\n\t\t\tmasked += src.slice(i, end);\n\t\t\ti = end;\n\t\t\tcontinue;\n\t\t}\n\t\tif (ch === '/' && i + 1 < src.length && src[i + 1] === '*') {\n\t\t\tconst end = src.indexOf('*/', i + 2);\n\t\t\tconst close = end === -1 ? src.length : end + 2;\n\t\t\tmasked += src.slice(i, close);\n\t\t\ti = close;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch === '/' && i + 1 < src.length && src[i + 1] !== '/' && src[i + 1] !== '*') {\n\t\t\tlet k = i - 1;\n\t\t\twhile (k >= 0 && (src[k] === ' ' || src[k] === '\\t' || src[k] === '\\n' || src[k] === '\\r')) k--;\n\t\t\tconst prev = k >= 0 ? src[k] : '\\0';\n\t\t\tif ('\\0=([{,;!&|^~?:+-*%<>/)]}'.includes(prev) ||\n\t\t\t\t(k >= 1 && /\\b(?:return|typeof|void|delete|throw|new|case|of|in|yield|await)\\s*$/.test(src.slice(Math.max(0, k - 11), k + 1)))) {\n\t\t\t\tconst regStart = i;\n\t\t\t\ti++;\n\t\t\t\twhile (i < src.length && src[i] !== '\\n') {\n\t\t\t\t\tif (src[i] === '\\\\') { i += 2; continue; }\n\t\t\t\t\tif (src[i] === '/') { i++; break; }\n\t\t\t\t\tif (src[i] === '[') {\n\t\t\t\t\t\ti++;\n\t\t\t\t\t\twhile (i < src.length && src[i] !== ']' && src[i] !== '\\n') {\n\t\t\t\t\t\t\tif (src[i] === '\\\\') i++;\n\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (i < src.length && src[i] === ']') i++;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t\twhile (i < src.length && /[gimsuyv]/.test(src[i])) i++;\n\t\t\t\tmasked += src.slice(regStart, i);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tif (ch === '\"' || ch === \"'\" || ch === '`') {\n\t\t\tconst start = i;\n\t\t\tconst quote = ch;\n\t\t\ti++;\n\t\t\twhile (i < src.length) {\n\t\t\t\tif (src[i] === '\\\\') { i += 2; continue; }\n\t\t\t\tif (src[i] === quote) { i++; break; }\n\t\t\t\tif (quote === '`' && src[i] === '$' && i + 1 < src.length && src[i + 1] === '{') {\n\t\t\t\t\tlet depth = 1;\n\t\t\t\t\ti += 2;\n\t\t\t\t\twhile (i < src.length && depth > 0) {\n\t\t\t\t\t\tif (src[i] === '{') depth++;\n\t\t\t\t\t\telse if (src[i] === '}') depth--;\n\t\t\t\t\t\telse if (src[i] === '\\\\') i++;\n\t\t\t\t\t\telse if (src[i] === \"'\" || src[i] === '\"') {\n\t\t\t\t\t\t\tconst q = src[i]; i++;\n\t\t\t\t\t\t\twhile (i < src.length && src[i] !== q) {\n\t\t\t\t\t\t\t\tif (src[i] === '\\\\') i++;\n\t\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (i < src.length) i++;\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t} else if (src[i] === '`') {\n\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t\twhile (i < src.length && src[i] !== '`') {\n\t\t\t\t\t\t\t\tif (src[i] === '\\\\') i++;\n\t\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (i < src.length) i++;\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ti++;\n\t\t\t\t\t}\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\ti++;\n\t\t\t}\n\n\t\t\tconst literal = src.slice(start, i);\n\t\t\tconst idx = literals.length;\n\t\t\tliterals.push(literal);\n\t\t\tmasked += quote + '__LIFO_S' + idx + '__' + quote;\n\t\t\tcontinue;\n\t\t}\n\n\t\tmasked += ch;\n\t\ti++;\n\t}\n\n\treturn { masked, literals };\n}\n\nfunction unmaskStringLiterals(src: string, literals: string[]): string {\n\treturn src.replace(\n\t\t/(['\"`])__LIFO_S(\\d+)__\\1/g,\n\t\t(_match, _quote, idxStr) => literals[parseInt(idxStr, 10)]\n\t);\n}\n\n// ── ESM detection ────────────────────────────────────────────────────────────\n\nfunction isEsmSource(source: string): boolean {\n\treturn /(?:^|\\n|;)\\s*(?:import\\s*[\\w{*('\".]|export\\s+|export\\s*\\{)/.test(source);\n}\n\n/**\n * Determine if source should be treated as ESM based on filename, content,\n * and package.json type field.\n */\nconst JS_LIKE_EXTENSIONS = new Set([\n\t'.js', '.ts', '.jsx', '.tsx', '.mjs', '.mts', '.cjs', '.cts', '',\n]);\n\nexport function shouldTreatAsEsm(\n\tsource: string,\n\tfilename: string,\n\tvfs?: { exists(p: string): boolean; readFileString(p: string): string },\n): boolean {\n\tconst ext = extname(filename);\n\tif (ext === '.mjs' || ext === '.mts') return true;\n\tif (ext === '.cjs' || ext === '.cts') return false;\n\t// Non-JS files (.css, .html, .json, etc.) should never be treated as ESM\n\tif (!JS_LIKE_EXTENSIONS.has(ext)) return false;\n\tif (vfs && ext === '.js') {\n\t\tlet dir = dirname(filename);\n\t\tfor (; ;) {\n\t\t\tconst pkgPath = join(dir, 'package.json');\n\t\t\tif (vfs.exists(pkgPath)) {\n\t\t\t\ttry {\n\t\t\t\t\tconst pkg = JSON.parse(vfs.readFileString(pkgPath));\n\t\t\t\t\tif (pkg.type === 'module') return true;\n\t\t\t\t\tif (pkg.type === 'commonjs') return false;\n\t\t\t\t} catch { /* ignore */ }\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tconst parent = dirname(dir);\n\t\t\tif (parent === dir) break;\n\t\t\tdir = parent;\n\t\t}\n\t}\n\treturn isEsmSource(source);\n}\n\n// ── Main transform ───────────────────────────────────────────────────────────\n\n/**\n * Transform ESM import/export syntax to CJS require/exports equivalents.\n */\nexport function transformEsmToCjs(source: string): string {\n\tlet result = source.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n\n\t// Context-aware import.meta replacement: replaces in code only,\n\t// leaves string/template literal text untouched.\n\tresult = replaceImportMetaInCode(result);\n\n\t// Mask string/template literals for import/export regex transforms\n\tconst { masked, literals } = maskStringLiterals(result);\n\n\tresult = masked;\n\tresult = result.replace(\n\t\t/;([ \\t]*(?:import\\s*[\\w${*('\".]|export[\\s{*]))/g,\n\t\t';\\n$1'\n\t);\n\tconst trailingExports: string[] = [];\n\tlet hasDefaultExport = false;\n\tlet hasNamedExport = false;\n\tconst importSources = new Map<string, { modRef: string; prop: string }>();\n\n\thasDefaultExport = /(?:^|\\n)\\s*export\\s+default\\s+/.test(result);\n\thasNamedExport = /(?:^|\\n)\\s*export\\s+(?:const|let|var|function|class|\\{|\\*\\s+from)/.test(result);\n\n\t// Strip type-only imports/exports (TypeScript)\n\tresult = result.replace(/^[ \\t]*import\\s+type\\s+.*?from\\s+(['\"`]).*?\\1[ \\t]*;?$/gm, '');\n\tresult = result.replace(/^[ \\t]*export\\s+type\\s+\\{[^}]*\\}(?:\\s+from\\s+(['\"`]).*?\\1)?[ \\t]*;?$/gm, '');\n\tresult = result.replace(/^[ \\t]*export\\s+type\\s+\\*\\s+from\\s+(['\"`]).*?\\1[ \\t]*;?$/gm, '');\n\n\t// Combined: import X, { a, b as c } from 'mod'\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)import\\s+([\\w$]+)\\s*,\\s*\\{([^}]+)\\}\\s*from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(match, indent, defaultName, imports, mod) => {\n\t\t\tif (imports.includes('${')) return match;\n\t\t\tconst tmp = '__mod_' + defaultName;\n\t\t\tconst mapped = imports.split(',').map((s: string) => {\n\t\t\t\tconst parts = s.trim().split(/\\s+as\\s+/);\n\t\t\t\tconst sourceProp = parts[0].trim();\n\t\t\t\tconst localName = parts.length === 2 ? parts[1].trim() : sourceProp;\n\t\t\t\tif (localName) importSources.set(localName, { modRef: tmp, prop: sourceProp });\n\t\t\t\tif (parts.length === 2) return `${sourceProp}: ${localName}`;\n\t\t\t\treturn sourceProp;\n\t\t\t}).filter((s: string) => s).join(', ');\n\t\t\treturn `\\n${indent}${cjsDecl(tmp)} ${tmp} = require(${mod});\\n${indent}${cjsDecl(defaultName)} ${defaultName} = ${tmp}.default || ${tmp};\\n${indent}const { ${mapped} } = ${tmp};`;\n\t\t}\n\t);\n\n\t// Combined: import X, * as Y from 'mod'\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)import\\s+([\\w$]+)\\s*,\\s*\\*\\s*as\\s+([\\w$]+)\\s+from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(_match, indent, defaultName, nsName, mod) => {\n\t\t\treturn `\\n${indent}${cjsDecl(nsName)} ${nsName} = require(${mod});\\n${indent}${cjsDecl(defaultName)} ${defaultName} = ${nsName}.default || ${nsName};`;\n\t\t}\n\t);\n\n\t// import { a, b as c } from 'mod'\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)import\\s*\\{([^}]+)\\}\\s*from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(match, indent, imports, mod) => {\n\t\t\tif (imports.includes('${')) return match;\n\t\t\tconst modRef = '__imp_' + Math.random().toString(36).slice(2, 8);\n\t\t\tconst mapped = imports.split(',').map((s: string) => {\n\t\t\t\tconst parts = s.trim().split(/\\s+as\\s+/);\n\t\t\t\tconst sourceProp = parts[0].trim();\n\t\t\t\tconst localName = parts.length === 2 ? parts[1].trim() : sourceProp;\n\t\t\t\tif (localName) importSources.set(localName, { modRef, prop: sourceProp });\n\t\t\t\tif (parts.length === 2) return `${sourceProp}: ${localName}`;\n\t\t\t\treturn sourceProp;\n\t\t\t}).filter((s: string) => s).join(', ');\n\t\t\treturn `\\n${indent}const ${modRef} = require(${mod});\\n${indent}const { ${mapped} } = ${modRef};`;\n\t\t}\n\t);\n\n\t// import * as X from 'mod'\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)import\\s*\\*\\s*as\\s+([\\w$]+)\\s+from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(_match, indent, name, mod) => `\\n${indent}${cjsDecl(name)} ${name} = require(${mod});`\n\t);\n\n\t// import X from 'mod' (default import)\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)import\\s+([\\w$]+)\\s+from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(_match, indent, name, mod) => `\\n${indent}${cjsDecl(name)} ${name} = require(${mod});`\n\t);\n\n\t// import 'mod' (side-effect)\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)import\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(_match, indent, mod) => `\\n${indent}require(${mod});`\n\t);\n\n\t// Strip empty export{}\n\tresult = result.replace(/(?:^|\\n)[ \\t]*export\\s*\\{\\s*\\}[ \\t]*;?/g, '');\n\n\t// export * from 'mod'\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)export\\s*\\*\\s*from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(_match, indent, mod) => {\n\t\t\tconst tmpVar = '__star_' + Math.random().toString(36).slice(2, 8);\n\t\t\treturn `\\n${indent}const ${tmpVar} = require(${mod});\\n${indent}Object.keys(${tmpVar}).forEach(function(k) { if (k !== 'default' && !exports.hasOwnProperty(k)) Object.defineProperty(exports, k, { get: function() { return ${tmpVar}[k]; }, enumerable: true, configurable: true }); });`;\n\t\t}\n\t);\n\n\t// export { a, b } from 'mod'\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)export\\s*\\{([^}]+)\\}\\s*from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(match, indent, names, mod) => {\n\t\t\tif (names.includes('${')) return match;\n\t\t\tconst tmpVar = '__re_' + Math.random().toString(36).slice(2, 8);\n\t\t\tconst assignments = names.split(',').map((s: string) => {\n\t\t\t\tconst parts = s.trim().split(/\\s+as\\s+/);\n\t\t\t\tconst local = parts[0].trim();\n\t\t\t\tconst exported = parts.length === 2 ? parts[1].trim() : local;\n\t\t\t\treturn `${indent}Object.defineProperty(exports, '${exported}', { get() { return ${tmpVar}.${local}; }, enumerable: true, configurable: true });`;\n\t\t\t}).join('\\n');\n\t\t\treturn `\\n${indent}const ${tmpVar} = require(${mod});\\n${assignments}`;\n\t\t}\n\t);\n\n\t// export default\n\tif (hasDefaultExport && hasNamedExport) {\n\t\tresult = result.replace(\n\t\t\t/(?:^|\\n)([ \\t]*)export\\s+default\\s+/g,\n\t\t\t(_match, indent) => `\\n${indent}exports.default = `\n\t\t);\n\t} else {\n\t\tresult = result.replace(\n\t\t\t/(?:^|\\n)([ \\t]*)export\\s+default\\s+/g,\n\t\t\t(_match, indent) => `\\n${indent}module.exports = `\n\t\t);\n\t}\n\n\t// export const/let/var\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)export\\s+(const|let|var)\\s+([\\w$]+)\\s*=/g,\n\t\t(match, indent, keyword, name) => {\n\t\t\tif (match.includes('${')) return match;\n\t\t\treturn `\\n${indent}${keyword} ${name} = exports.${name} =`;\n\t\t}\n\t);\n\n\t// export function / class\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)export\\s+(async\\s+function\\s+([\\w$]+)|function\\s+([\\w$]+)|class\\s+([\\w$]+))/g,\n\t\t(match, indent, decl, asyncFnName, fnName, className, offset: number) => {\n\t\t\tconst nextChar = result.charAt(offset + match.length);\n\t\t\tif (nextChar === '{') return match;\n\t\t\tconst name = asyncFnName || fnName || className;\n\t\t\ttrailingExports.push(`exports.${name} = ${name};`);\n\t\t\treturn `\\n${indent}${decl}`;\n\t\t}\n\t);\n\n\t// export { a, b as c } (local)\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)export\\s*\\{([^}]+)\\}[ \\t]*;?/g,\n\t\t(match, _indent, names) => {\n\t\t\tif (names.includes('${')) return match;\n\t\t\tnames.split(',').forEach((s: string) => {\n\t\t\t\tconst parts = s.trim().split(/\\s+as\\s+/);\n\t\t\t\tconst local = parts[0].trim();\n\t\t\t\tconst exported = parts.length === 2 ? parts[1].trim() : local;\n\t\t\t\tif (!local) return;\n\t\t\t\tconst src = importSources.get(local);\n\t\t\t\tif (src) {\n\t\t\t\t\ttrailingExports.push(`Object.defineProperty(exports, '${exported}', { get: function() { return ${src.modRef}.${src.prop}; }, enumerable: true, configurable: true });`);\n\t\t\t\t} else {\n\t\t\t\t\ttrailingExports.push(`exports.${exported} = ${local};`);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn '';\n\t\t}\n\t);\n\n\t// Dynamic import() with string literal\n\tresult = result.replace(\n\t\t/(?<!\\.)(?<!\\w)\\bimport\\s*\\(\\s*(['\"][^'\"]+['\"])\\s*\\)/g,\n\t\t(_match, mod) => `Promise.resolve(require(${mod}))`\n\t);\n\n\t// Dynamic import() with expression\n\t{\n\t\tlet i = 0;\n\t\tlet out = '';\n\t\twhile (i < result.length) {\n\t\t\tconst importIdx = result.indexOf('import(', i);\n\t\t\tif (importIdx === -1) { out += result.slice(i); break; }\n\t\t\tif (importIdx > 0 && /[\\w$.]/.test(result[importIdx - 1])) {\n\t\t\t\tout += result.slice(i, importIdx + 7);\n\t\t\t\ti = importIdx + 7;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t{\n\t\t\t\tlet depth = 1;\n\t\t\t\tlet k = importIdx + 7;\n\t\t\t\twhile (k < result.length && depth > 0) {\n\t\t\t\t\tif (result[k] === '(') depth++;\n\t\t\t\t\telse if (result[k] === ')') depth--;\n\t\t\t\t\tk++;\n\t\t\t\t}\n\t\t\t\tif (depth === 0) {\n\t\t\t\t\tlet afterClose = k;\n\t\t\t\t\twhile (afterClose < result.length && /[ \\t]/.test(result[afterClose])) afterClose++;\n\t\t\t\t\tif (result[afterClose] === '{') {\n\t\t\t\t\t\tout += result.slice(i, importIdx + 7);\n\t\t\t\t\t\ti = importIdx + 7;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tout += result.slice(i, importIdx);\n\t\t\tlet depth = 1;\n\t\t\tlet j = importIdx + 7;\n\t\t\twhile (j < result.length && depth > 0) {\n\t\t\t\tif (result[j] === '(') depth++;\n\t\t\t\telse if (result[j] === ')') depth--;\n\t\t\t\tj++;\n\t\t\t}\n\t\t\tif (depth === 0) {\n\t\t\t\tconst arg = result.slice(importIdx + 7, j - 1);\n\t\t\t\tout += `Promise.resolve().then(function() { return require(${arg}); })`;\n\t\t\t} else {\n\t\t\t\tout += result.slice(importIdx, j);\n\t\t\t}\n\t\t\ti = j;\n\t\t}\n\t\tresult = out;\n\t}\n\n\t// Replace const/let of CJS wrapper params with var\n\tresult = result.replace(\n\t\t/\\b(const|let)\\s+(__dirname|__filename|exports|require|module|console|process|Buffer|global)\\b/g,\n\t\t(_match, _kw, name) => `var ${name}`\n\t);\n\n\tif (trailingExports.length > 0) {\n\t\tresult += '\\n' + trailingExports.join('\\n');\n\t}\n\n\tresult = unmaskStringLiterals(result, literals);\n\n\treturn result;\n}\n\n/**\n * Transform source to CJS if it's detected as ESM.\n *\n * `import.meta` is ALWAYS replaced regardless of ESM detection because\n * `new Function()` cannot parse it (syntax error). CJS bundles like\n * Vite's config.js use `createRequire(import.meta.url)` without being ESM.\n */\nexport function transformToCjs(\n\tsource: string,\n\tfilename: string,\n\tvfs?: { exists(p: string): boolean; readFileString(p: string): string },\n): { code: string; wasEsm: boolean } {\n\tif (shouldTreatAsEsm(source, filename, vfs)) {\n\t\treturn { code: transformEsmToCjs(source), wasEsm: true };\n\t}\n\t// Always replace import.meta even in non-ESM files — new Function()\n\t// cannot parse import.meta syntax at all.\n\tconst code = replaceImportMetaInCode(source);\n\treturn { code, 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 IVfs,\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 IVfs,\n NodeRunnerOptions,\n RunResult,\n ModuleFactory,\n ScriptConsole,\n CommandOutputStream,\n} from \"./types.js\";\nimport {\n createBuiltinModules,\n createCaptureConsole,\n createStreamConsole,\n createMinimalProcess,\n ProcessExitError,\n} from \"./builtins.js\";\nimport { resolveModule } from \"./resolver.js\";\nimport { transformToCjs } from \"./transformer.js\";\n\nconst textEncoder = new TextEncoder();\n\n/** Strip shebang line (e.g. #!/usr/bin/env node) */\nfunction stripShebang(src: string): string {\n if (src.charCodeAt(0) === 0x23 /* # */ && src.charCodeAt(1) === 0x21 /* ! */) {\n const nl = src.indexOf('\\n');\n if (nl === -1) return '';\n return '\\n' + src.slice(nl + 1);\n }\n return src;\n}\n\nexport class NodeRunner {\n readonly vfs: IVfs;\n private moduleMapFactory?: Record<string, () => unknown>;\n private nodeCompat?: NodeRunnerOptions[\"nodeCompat\"];\n private env: Record<string, string>;\n private cwd: string;\n private argv: string[];\n private stdout?: CommandOutputStream;\n private stderr?: CommandOutputStream;\n private signal?: AbortSignal;\n private globalShims?: Record<string, unknown>;\n\n /** Module cache from the last execution. Can be inspected by the caller. */\n readonly moduleCache = new Map<string, unknown>();\n\n constructor(options: NodeRunnerOptions) {\n 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 { IVfs } from \"./types.js\";\n\n/** Minimal path module (always available, no node-compat needed) */\nconst minimalPath = {\n join(...parts: string[]): string {\n const joined = parts.join(\"/\").replace(/\\/+/g, \"/\");\n return minimalPath.normalize(joined);\n },\n normalize(p: string): string {\n const parts = p.split(\"/\");\n const result: string[] = [];\n for (const part of parts) {\n if (part === \"..\") {\n result.pop();\n } else if (part !== \".\" && part !== \"\") {\n result.push(part);\n }\n }\n return (p.startsWith(\"/\") ? \"/\" : \"\") + result.join(\"/\");\n },\n dirname(p: string): string {\n const idx = p.lastIndexOf(\"/\");\n if (idx === -1) return \".\";\n if (idx === 0) return \"/\";\n return p.slice(0, idx);\n },\n basename(p: string, ext?: string): string {\n const base = p.slice(p.lastIndexOf(\"/\") + 1);\n if (ext && base.endsWith(ext)) return base.slice(0, -ext.length);\n return base;\n },\n extname(p: string): string {\n const base = minimalPath.basename(p);\n const dot = base.lastIndexOf(\".\");\n if (dot <= 0) return \"\";\n return base.slice(dot);\n },\n resolve(...parts: string[]): string {\n let resolved = \"\";\n for (let i = parts.length - 1; i >= 0; i--) {\n resolved = parts[i] + \"/\" + resolved;\n if (parts[i].startsWith(\"/\")) break;\n }\n return minimalPath.normalize(resolved);\n },\n isAbsolute(p: string): boolean {\n return p.startsWith(\"/\");\n },\n sep: \"/\",\n delimiter: \":\",\n posix: null as unknown,\n};\nminimalPath.posix = minimalPath;\n\n/** Format args for console output */\nfunction formatArgs(...args: unknown[]): string {\n return args\n .map((a) =>\n typeof a === \"string\" ? a : JSON.stringify(a, null, 2) ?? String(a),\n )\n .join(\" \");\n}\n\n/** Create a console that captures output to arrays */\nexport function createCaptureConsole(\n stdout: string[],\n stderr: string[],\n): ScriptConsole {\n return {\n log: (...args) => stdout.push(formatArgs(...args)),\n error: (...args) => stderr.push(formatArgs(...args)),\n warn: (...args) => stderr.push(formatArgs(...args)),\n info: (...args) => stdout.push(formatArgs(...args)),\n debug: (...args) => stdout.push(formatArgs(...args)),\n };\n}\n\n/** Create a console that streams output to writable streams */\nexport function createStreamConsole(\n stdout: CommandOutputStream,\n stderr: CommandOutputStream,\n): ScriptConsole {\n return {\n log: (...args) => stdout.write(formatArgs(...args) + \"\\n\"),\n error: (...args) => stderr.write(formatArgs(...args) + \"\\n\"),\n warn: (...args) => stderr.write(formatArgs(...args) + \"\\n\"),\n info: (...args) => stdout.write(formatArgs(...args) + \"\\n\"),\n debug: (...args) => stdout.write(formatArgs(...args) + \"\\n\"),\n };\n}\n\n/** Minimal process object (always available) */\nexport function createMinimalProcess(\n env: Record<string, string>,\n cwd: string,\n argv: string[],\n stdout?: CommandOutputStream,\n stderr?: CommandOutputStream,\n) {\n return {\n env,\n cwd: () => cwd,\n argv: [\"node\", ...argv],\n exit: (code?: number) => {\n throw new ProcessExitError(code ?? 0);\n },\n platform: \"browser\" as const,\n arch: \"wasm\" as const,\n version: \"v20.0.0\",\n versions: { node: \"20.0.0\" },\n pid: 1,\n ppid: 0,\n stdout: {\n write: (s: string) => {\n if (stdout) stdout.write(String(s));\n return true;\n },\n },\n stderr: {\n write: (s: string) => {\n if (stderr) stderr.write(String(s));\n return true;\n },\n },\n nextTick: (fn: () => void) => Promise.resolve().then(fn),\n hrtime: {\n bigint: () => BigInt(Math.round(performance.now() * 1e6)),\n },\n };\n}\n\nexport class ProcessExitError extends Error {\n readonly code: number;\n constructor(code: number) {\n super(`process.exit(${code})`);\n this.name = \"ProcessExitError\";\n this.code = code;\n }\n}\n\n/** Build the builtin module map from simple NodeCompatModules */\nexport function createBuiltinModules(\n _vfs: IVfs,\n env: Record<string, string>,\n cwd: string,\n argv: string[],\n scriptConsole: ScriptConsole,\n nodeCompat?: NodeCompatModules,\n stdout?: CommandOutputStream,\n stderr?: CommandOutputStream,\n): Map<string, unknown> {\n const builtins = new Map<string, unknown>();\n\n builtins.set(\"path\", nodeCompat?.path ?? minimalPath);\n\n const process = nodeCompat?.process ?? createMinimalProcess(env, cwd, argv, stdout, stderr);\n builtins.set(\"process\", process);\n builtins.set(\"console\", scriptConsole);\n\n if (nodeCompat?.fs) builtins.set(\"fs\", nodeCompat.fs);\n if (nodeCompat?.fsPromises) builtins.set(\"fs/promises\", nodeCompat.fsPromises);\n if (nodeCompat?.events) builtins.set(\"events\", nodeCompat.events);\n if (nodeCompat?.buffer) builtins.set(\"buffer\", nodeCompat.buffer);\n if (nodeCompat?.util) builtins.set(\"util\", nodeCompat.util);\n if (nodeCompat?.timers) builtins.set(\"timers\", nodeCompat.timers);\n if (nodeCompat?.assert) builtins.set(\"assert\", nodeCompat.assert);\n if (nodeCompat?.os) builtins.set(\"os\", nodeCompat.os);\n if (nodeCompat?.stream) builtins.set(\"stream\", nodeCompat.stream);\n if (nodeCompat?.url) builtins.set(\"url\", nodeCompat.url);\n if (nodeCompat?.crypto) builtins.set(\"crypto\", nodeCompat.crypto);\n\n return builtins;\n}\n","import type { IVfs } from \"./types.js\";\nimport type { ResolvedModule } from \"./types.js\";\n\nconst textDecoder = new TextDecoder();\n\n/** Resolve and load a module from the VFS */\nexport function resolveModule(\n vfs: IVfs,\n id: string,\n fromDir: string,\n): ResolvedModule | null {\n // Subpath imports (#specifier)\n if (id.startsWith('#')) {\n return resolvePackageImport(vfs, id, fromDir);\n }\n\n // Relative/absolute path\n if (id.startsWith(\"./\") || id.startsWith(\"../\") || id.startsWith(\"/\")) {\n return resolveRelative(vfs, id, fromDir);\n }\n\n // Bare specifier → node_modules resolution\n return resolveNodeModule(vfs, id, fromDir);\n}\n\nfunction resolveRelative(\n vfs: IVfs,\n id: string,\n fromDir: string,\n): ResolvedModule | null {\n const absPath = id.startsWith(\"/\") ? id : normalizePath(fromDir + \"/\" + id);\n return resolveFile(vfs, absPath);\n}\n\nfunction resolveFile(vfs: IVfs, absPath: string): ResolvedModule | null {\n // Try exact path\n if (vfs.exists(absPath)) {\n try {\n const stat = vfs.stat(absPath);\n if (stat.type === 'file') {\n const source = textDecoder.decode(vfs.readFile(absPath));\n return { path: absPath, source };\n }\n if (stat.type === 'directory') {\n const fromPkg = tryPackageMain(vfs, absPath);\n if (fromPkg) return fromPkg;\n const fromIndex = tryIndexFile(vfs, absPath);\n if (fromIndex) return fromIndex;\n }\n } catch { /* fall through */ }\n }\n\n // Try with extensions\n for (const ext of ['.js', '.ts', '.mjs', '.json']) {\n const candidate = absPath + ext;\n try {\n if (vfs.exists(candidate) && vfs.stat(candidate).type === 'file') {\n const source = textDecoder.decode(vfs.readFile(candidate));\n return { path: candidate, source };\n }\n } catch { /* continue */ }\n }\n\n return null;\n}\n\nfunction resolveNodeModule(\n vfs: IVfs,\n name: string,\n fromDir: string,\n): ResolvedModule | null {\n let packageName: string;\n let subpath: string | null = null;\n\n if (name.startsWith('@')) {\n const parts = name.split('/');\n if (parts.length < 2) return null;\n packageName = parts[0] + '/' + parts[1];\n if (parts.length > 2) subpath = parts.slice(2).join('/');\n } else {\n const slashIdx = name.indexOf('/');\n if (slashIdx !== -1) {\n packageName = name.slice(0, slashIdx);\n subpath = name.slice(slashIdx + 1);\n } else {\n packageName = name;\n }\n }\n\n // Walk up directory tree\n let current = fromDir;\n for (; ;) {\n const candidate = normalizePath(current + '/node_modules/' + packageName);\n if (vfs.exists(candidate)) {\n const resolved = resolvePackageEntry(vfs, candidate, subpath);\n if (resolved) return resolved;\n }\n const parent = current.slice(0, current.lastIndexOf('/'));\n if (parent === current || parent === '') break;\n current = parent;\n }\n\n // Global fallbacks\n for (const globalDir of ['/usr/lib/node_modules', '/usr/share/pkg/node_modules']) {\n const candidate = normalizePath(globalDir + '/' + packageName);\n if (vfs.exists(candidate)) {\n const resolved = resolvePackageEntry(vfs, candidate, subpath);\n if (resolved) return resolved;\n }\n }\n\n return null;\n}\n\nfunction resolveExportsCondition(value: unknown): string | null {\n if (typeof value === 'string') return value;\n if (value && typeof value === 'object' && !Array.isArray(value)) {\n const cond = value as Record<string, unknown>;\n if (typeof cond.require === 'string') return cond.require;\n if (typeof cond.default === 'string') return cond.default;\n if (typeof cond.import === 'string') return cond.import;\n for (const key of Object.keys(cond)) {\n if (key === 'types') continue;\n const nested = resolveExportsCondition(cond[key]);\n if (nested) return nested;\n }\n }\n return null;\n}\n\nfunction resolvePackageEntry(\n vfs: IVfs,\n pkgDir: string,\n subpath: string | null,\n): ResolvedModule | null {\n const pkgJsonPath = pkgDir + '/package.json';\n let pkgJson: Record<string, unknown> | null = null;\n if (vfs.exists(pkgJsonPath)) {\n try {\n pkgJson = JSON.parse(textDecoder.decode(vfs.readFile(pkgJsonPath)));\n } catch { /* ignore */ }\n }\n\n if (subpath) {\n // Check exports map\n if (pkgJson?.exports && typeof pkgJson.exports === 'object') {\n const exportsMap = pkgJson.exports as Record<string, unknown>;\n const key = './' + subpath;\n if (key in exportsMap) {\n const target = resolveExportsCondition(exportsMap[key]);\n if (target) {\n const resolved = resolveFile(vfs, normalizePath(pkgDir + '/' + target));\n if (resolved) return resolved;\n }\n }\n // Subpath patterns (./* → ./dist/*)\n for (const pattern of Object.keys(exportsMap)) {\n if (pattern.endsWith('/*') && key.startsWith(pattern.slice(0, -1))) {\n const targetPattern = resolveExportsCondition(exportsMap[pattern]);\n if (targetPattern && targetPattern.endsWith('/*')) {\n const suffix = key.slice(pattern.length - 1);\n const target = targetPattern.slice(0, -1) + suffix;\n const resolved = resolveFile(vfs, normalizePath(pkgDir + '/' + target));\n if (resolved) return resolved;\n }\n }\n }\n }\n return resolveFile(vfs, normalizePath(pkgDir + '/' + subpath));\n }\n\n // Root entry resolution\n if (pkgJson?.exports) {\n const exportsVal = pkgJson.exports;\n let rootExport: unknown = null;\n if (typeof exportsVal === 'string') {\n rootExport = exportsVal;\n } else if (typeof exportsVal === 'object' && !Array.isArray(exportsVal)) {\n const exportsMap = exportsVal as Record<string, unknown>;\n rootExport = exportsMap['.'] ?? null;\n if (!rootExport && ('require' in exportsMap || 'import' in exportsMap || 'default' in exportsMap)) {\n rootExport = exportsMap;\n }\n }\n if (rootExport) {\n const target = resolveExportsCondition(rootExport);\n if (target) {\n const resolved = resolveFile(vfs, normalizePath(pkgDir + '/' + target));\n if (resolved) return resolved;\n }\n }\n }\n\n if (pkgJson?.main && typeof pkgJson.main === 'string') {\n const resolved = resolveFile(vfs, normalizePath(pkgDir + '/' + pkgJson.main));\n if (resolved) return resolved;\n }\n\n return tryIndexFile(vfs, pkgDir);\n}\n\nfunction resolvePackageImport(\n vfs: IVfs,\n name: string,\n fromDir: string,\n): ResolvedModule | null {\n let current = fromDir;\n for (; ;) {\n const pkgPath = current + '/package.json';\n if (vfs.exists(pkgPath)) {\n try {\n const pkg = JSON.parse(textDecoder.decode(vfs.readFile(pkgPath)));\n if (pkg.imports && typeof pkg.imports === 'object') {\n const importsMap = pkg.imports as Record<string, unknown>;\n if (name in importsMap) {\n const target = resolveExportsCondition(importsMap[name]);\n if (target) {\n return resolveFile(vfs, normalizePath(current + '/' + target));\n }\n }\n }\n } catch { /* ignore parse errors */ }\n break;\n }\n const parent = current.slice(0, current.lastIndexOf('/'));\n if (parent === current || parent === '') break;\n current = parent;\n }\n return null;\n}\n\nfunction tryPackageMain(vfs: IVfs, dirPath: string): ResolvedModule | null {\n const pkgPath = dirPath + \"/package.json\";\n try {\n if (!vfs.exists(pkgPath)) return null;\n const raw = textDecoder.decode(vfs.readFile(pkgPath));\n const pkg = JSON.parse(raw);\n const main = pkg.main || pkg.module || \"index.js\";\n return resolveModule(vfs, \"./\" + main, dirPath);\n } catch {\n return null;\n }\n}\n\nfunction tryIndexFile(vfs: IVfs, dirPath: string): ResolvedModule | null {\n for (const name of [\"index.js\", \"index.ts\", \"index.mjs\", \"index.json\"]) {\n const fullPath = dirPath + \"/\" + name;\n try {\n if (!vfs.exists(fullPath)) continue;\n const source = textDecoder.decode(vfs.readFile(fullPath));\n return { path: fullPath, source };\n } catch {\n continue;\n }\n }\n return null;\n}\n\nfunction normalizePath(p: string): string {\n const parts = p.split(\"/\");\n const result: string[] = [];\n for (const part of parts) {\n if (part === \"..\") result.pop();\n else if (part !== \".\" && part !== \"\") result.push(part);\n }\n return (p.startsWith(\"/\") ? \"/\" : \"\") + result.join(\"/\");\n}\n","/**\n * ES module → CommonJS syntax transformer.\n *\n * Rewrites import/export statements to require() / module.exports without\n * resolving or inlining any dependencies. All resolution happens at runtime\n * inside the virtual require() runtime.\n *\n * Supported:\n * import defaultExport from \"mod\"\n * import * as ns from \"mod\"\n * import { x, y as z } from \"mod\"\n * import defaultExport, { x } from \"mod\"\n * import defaultExport, * as ns from \"mod\"\n * import \"mod\" (side-effect)\n * import type { … } from \"mod\" (stripped — TypeScript)\n * export default <expr | function | class>\n * export function / class / const / let / var NAME\n * export { x, y as z }\n * export { x } from \"mod\"\n * export * from \"mod\"\n * export type { … } (stripped — TypeScript)\n * import(\"mod\") → Promise.resolve(require(\"mod\"))\n * import(expr) → Promise.resolve().then(() => require(expr))\n * import.meta.url / dirname / filename / resolve / require\n */\n\n// ── Helpers ──────────────────────────────────────────────────────────────────\n\n// Names that collide with the new Function() CJS wrapper parameters.\nconst CJS_WRAPPER_PARAMS = new Set([\n\t'exports', 'require', 'module', '__filename', '__dirname',\n\t'console', 'process', 'Buffer', 'setTimeout', 'setInterval',\n\t'clearTimeout', 'clearInterval', 'global',\n\t'__importMetaUrl', '__importMeta', '__importMetaResolve',\n]);\n\nfunction cjsDecl(name: string): string {\n\treturn CJS_WRAPPER_PARAMS.has(name) ? 'var' : 'const';\n}\n\n// ── Minimal path helpers (self-contained) ────────────────────────────────────\n\nfunction dirname(p: string): string {\n\tconst idx = p.lastIndexOf('/');\n\tif (idx === -1) return '.';\n\tif (idx === 0) return '/';\n\treturn p.slice(0, idx);\n}\n\nfunction join(...parts: string[]): string {\n\tconst joined = parts.join('/').replace(/\\/+/g, '/');\n\treturn normalize(joined);\n}\n\nfunction extname(p: string): string {\n\tconst base = p.slice(p.lastIndexOf('/') + 1);\n\tconst dot = base.lastIndexOf('.');\n\tif (dot <= 0) return '';\n\treturn base.slice(dot);\n}\n\nfunction normalize(p: string): string {\n\tconst parts = p.split('/');\n\tconst result: string[] = [];\n\tfor (const part of parts) {\n\t\tif (part === '..') result.pop();\n\t\telse if (part !== '.' && part !== '') result.push(part);\n\t}\n\treturn (p.startsWith('/') ? '/' : '') + result.join('/');\n}\n\n// ── Context-aware import.meta replacement ────────────────────────────────────\n\n/**\n * Replace `import.meta.*` references only in code context, leaving string\n * and template literal text untouched. Template `${…}` expressions are\n * treated as code (replacements apply). This avoids corrupting generated\n * code inside template strings (e.g. Vite emits `import.meta.hot` in\n * template literals that are served to the browser).\n */\nfunction replaceImportMetaInCode(src: string): string {\n\tconst len = src.length;\n\tlet out = '';\n\tlet i = 0;\n\n\tfunction tryReplace(): boolean {\n\t\tif (i + 11 > len || src[i] !== 'i') return false;\n\t\tif (!src.startsWith('import.meta', i)) return false;\n\t\tconst after = i + 11;\n\t\tif (src.startsWith('.url', after)) { out += '__importMetaUrl'; i = after + 4; return true; }\n\t\tif (src.startsWith('.dirname', after)) { out += '__dirname'; i = after + 8; return true; }\n\t\tif (src.startsWith('.filename', after)) { out += '__filename'; i = after + 9; return true; }\n\t\tif (src.startsWith('.require', after)) { out += 'require'; i = after + 8; return true; }\n\t\tif (src.startsWith('.resolve', after)) { out += '__importMetaResolve'; i = after + 8; return true; }\n\t\tout += '__importMeta'; i = after; return true;\n\t}\n\n\tfunction processCode(): void {\n\t\twhile (i < len) {\n\t\t\tconst ch = src[i];\n\n\t\t\t// Single-line comment — copy verbatim\n\t\t\tif (ch === '/' && i + 1 < len && src[i + 1] === '/') {\n\t\t\t\tconst nl = src.indexOf('\\n', i);\n\t\t\t\tconst end = nl === -1 ? len : nl;\n\t\t\t\tout += src.slice(i, end);\n\t\t\t\ti = end;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// Multi-line comment — copy verbatim\n\t\t\tif (ch === '/' && i + 1 < len && src[i + 1] === '*') {\n\t\t\t\tconst end = src.indexOf('*/', i + 2);\n\t\t\t\tconst close = end === -1 ? len : end + 2;\n\t\t\t\tout += src.slice(i, close);\n\t\t\t\ti = close;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Simple string literals — copy verbatim (no import.meta inside)\n\t\t\tif (ch === '\"' || ch === \"'\") {\n\t\t\t\tconst start = i;\n\t\t\t\ti++;\n\t\t\t\twhile (i < len && src[i] !== ch) {\n\t\t\t\t\tif (src[i] === '\\\\') i++;\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t\tif (i < len) i++; // closing quote\n\t\t\t\tout += src.slice(start, i);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Template literal — text parts verbatim, ${} expressions as code\n\t\t\tif (ch === '`') {\n\t\t\t\tprocessTemplate();\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// import.meta replacement in code\n\t\t\tif (ch === 'i' && tryReplace()) continue;\n\n\t\t\tout += ch;\n\t\t\ti++;\n\t\t}\n\t}\n\n\tfunction processTemplate(): void {\n\t\tout += src[i]; // opening backtick\n\t\ti++;\n\t\twhile (i < len) {\n\t\t\tif (src[i] === '\\\\') {\n\t\t\t\tout += src[i] + (i + 1 < len ? src[i + 1] : '');\n\t\t\t\ti += 2;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (src[i] === '`') {\n\t\t\t\tout += '`';\n\t\t\t\ti++;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// ${...} expression — process as code\n\t\t\tif (src[i] === '$' && i + 1 < len && src[i + 1] === '{') {\n\t\t\t\tout += '${';\n\t\t\t\ti += 2;\n\t\t\t\tprocessTemplateExpression();\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// Template text — copy verbatim\n\t\t\tout += src[i];\n\t\t\ti++;\n\t\t}\n\t}\n\n\tfunction processTemplateExpression(): void {\n\t\tlet depth = 1;\n\t\twhile (i < len && depth > 0) {\n\t\t\tconst ch = src[i];\n\t\t\tif (ch === '{') { out += ch; i++; depth++; continue; }\n\t\t\tif (ch === '}') { depth--; if (depth === 0) { out += '}'; i++; return; } out += ch; i++; continue; }\n\n\t\t\t// Handle strings inside expressions\n\t\t\tif (ch === '\"' || ch === \"'\") {\n\t\t\t\tconst start = i; i++;\n\t\t\t\twhile (i < len && src[i] !== ch) { if (src[i] === '\\\\') i++; i++; }\n\t\t\t\tif (i < len) i++;\n\t\t\t\tout += src.slice(start, i);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// Nested template literal inside expression\n\t\t\tif (ch === '`') { processTemplate(); continue; }\n\t\t\t// Comments inside expressions\n\t\t\tif (ch === '/' && i + 1 < len && src[i + 1] === '/') {\n\t\t\t\tconst nl = src.indexOf('\\n', i); const end = nl === -1 ? len : nl;\n\t\t\t\tout += src.slice(i, end); i = end; continue;\n\t\t\t}\n\t\t\tif (ch === '/' && i + 1 < len && src[i + 1] === '*') {\n\t\t\t\tconst end = src.indexOf('*/', i + 2); const close = end === -1 ? len : end + 2;\n\t\t\t\tout += src.slice(i, close); i = close; continue;\n\t\t\t}\n\t\t\t// import.meta replacement in expression code\n\t\t\tif (ch === 'i' && tryReplace()) continue;\n\n\t\t\tout += ch;\n\t\t\ti++;\n\t\t}\n\t}\n\n\tprocessCode();\n\treturn out;\n}\n\n// ── String literal masking ───────────────────────────────────────────────────\n\nfunction maskStringLiterals(src: string): { masked: string; literals: string[] } {\n\tconst literals: string[] = [];\n\tlet masked = '';\n\tlet i = 0;\n\n\twhile (i < src.length) {\n\t\tconst ch = src[i];\n\n\t\tif (ch === '/' && i + 1 < src.length && src[i + 1] === '/') {\n\t\t\tconst nl = src.indexOf('\\n', i);\n\t\t\tconst end = nl === -1 ? src.length : nl;\n\t\t\tmasked += src.slice(i, end);\n\t\t\ti = end;\n\t\t\tcontinue;\n\t\t}\n\t\tif (ch === '/' && i + 1 < src.length && src[i + 1] === '*') {\n\t\t\tconst end = src.indexOf('*/', i + 2);\n\t\t\tconst close = end === -1 ? src.length : end + 2;\n\t\t\tmasked += src.slice(i, close);\n\t\t\ti = close;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch === '/' && i + 1 < src.length && src[i + 1] !== '/' && src[i + 1] !== '*') {\n\t\t\tlet k = i - 1;\n\t\t\twhile (k >= 0 && (src[k] === ' ' || src[k] === '\\t' || src[k] === '\\n' || src[k] === '\\r')) k--;\n\t\t\tconst prev = k >= 0 ? src[k] : '\\0';\n\t\t\tif ('\\0=([{,;!&|^~?:+-*%<>/)]}'.includes(prev) ||\n\t\t\t\t(k >= 1 && /\\b(?:return|typeof|void|delete|throw|new|case|of|in|yield|await)\\s*$/.test(src.slice(Math.max(0, k - 11), k + 1)))) {\n\t\t\t\tconst regStart = i;\n\t\t\t\ti++;\n\t\t\t\twhile (i < src.length && src[i] !== '\\n') {\n\t\t\t\t\tif (src[i] === '\\\\') { i += 2; continue; }\n\t\t\t\t\tif (src[i] === '/') { i++; break; }\n\t\t\t\t\tif (src[i] === '[') {\n\t\t\t\t\t\ti++;\n\t\t\t\t\t\twhile (i < src.length && src[i] !== ']' && src[i] !== '\\n') {\n\t\t\t\t\t\t\tif (src[i] === '\\\\') i++;\n\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (i < src.length && src[i] === ']') i++;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t\twhile (i < src.length && /[gimsuyv]/.test(src[i])) i++;\n\t\t\t\tmasked += src.slice(regStart, i);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tif (ch === '\"' || ch === \"'\" || ch === '`') {\n\t\t\tconst start = i;\n\t\t\tconst quote = ch;\n\t\t\ti++;\n\t\t\twhile (i < src.length) {\n\t\t\t\tif (src[i] === '\\\\') { i += 2; continue; }\n\t\t\t\tif (src[i] === quote) { i++; break; }\n\t\t\t\tif (quote === '`' && src[i] === '$' && i + 1 < src.length && src[i + 1] === '{') {\n\t\t\t\t\tlet depth = 1;\n\t\t\t\t\ti += 2;\n\t\t\t\t\twhile (i < src.length && depth > 0) {\n\t\t\t\t\t\tif (src[i] === '{') depth++;\n\t\t\t\t\t\telse if (src[i] === '}') depth--;\n\t\t\t\t\t\telse if (src[i] === '\\\\') i++;\n\t\t\t\t\t\telse if (src[i] === \"'\" || src[i] === '\"') {\n\t\t\t\t\t\t\tconst q = src[i]; i++;\n\t\t\t\t\t\t\twhile (i < src.length && src[i] !== q) {\n\t\t\t\t\t\t\t\tif (src[i] === '\\\\') i++;\n\t\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (i < src.length) i++;\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t} else if (src[i] === '`') {\n\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t\twhile (i < src.length && src[i] !== '`') {\n\t\t\t\t\t\t\t\tif (src[i] === '\\\\') i++;\n\t\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (i < src.length) i++;\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ti++;\n\t\t\t\t\t}\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\ti++;\n\t\t\t}\n\n\t\t\tconst literal = src.slice(start, i);\n\t\t\tconst idx = literals.length;\n\t\t\tliterals.push(literal);\n\t\t\tmasked += quote + '__LIFO_S' + idx + '__' + quote;\n\t\t\tcontinue;\n\t\t}\n\n\t\tmasked += ch;\n\t\ti++;\n\t}\n\n\treturn { masked, literals };\n}\n\nfunction unmaskStringLiterals(src: string, literals: string[]): string {\n\treturn src.replace(\n\t\t/(['\"`])__LIFO_S(\\d+)__\\1/g,\n\t\t(_match, _quote, idxStr) => literals[parseInt(idxStr, 10)]\n\t);\n}\n\n// ── ESM detection ────────────────────────────────────────────────────────────\n\nfunction isEsmSource(source: string): boolean {\n\treturn /(?:^|\\n|;)\\s*(?:import\\s*[\\w{*('\".]|export\\s+|export\\s*\\{)/.test(source);\n}\n\n/**\n * Determine if source should be treated as ESM based on filename, content,\n * and package.json type field.\n */\nconst JS_LIKE_EXTENSIONS = new Set([\n\t'.js', '.ts', '.jsx', '.tsx', '.mjs', '.mts', '.cjs', '.cts', '',\n]);\n\nexport function shouldTreatAsEsm(\n\tsource: string,\n\tfilename: string,\n\tvfs?: { exists(p: string): boolean; readFileString(p: string): string },\n): boolean {\n\tconst ext = extname(filename);\n\tif (ext === '.mjs' || ext === '.mts') return true;\n\tif (ext === '.cjs' || ext === '.cts') return false;\n\t// Non-JS files (.css, .html, .json, etc.) should never be treated as ESM\n\tif (!JS_LIKE_EXTENSIONS.has(ext)) return false;\n\tif (vfs && ext === '.js') {\n\t\tlet dir = dirname(filename);\n\t\tfor (; ;) {\n\t\t\tconst pkgPath = join(dir, 'package.json');\n\t\t\tif (vfs.exists(pkgPath)) {\n\t\t\t\ttry {\n\t\t\t\t\tconst pkg = JSON.parse(vfs.readFileString(pkgPath));\n\t\t\t\t\tif (pkg.type === 'module') return true;\n\t\t\t\t\tif (pkg.type === 'commonjs') return false;\n\t\t\t\t} catch { /* ignore */ }\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tconst parent = dirname(dir);\n\t\t\tif (parent === dir) break;\n\t\t\tdir = parent;\n\t\t}\n\t}\n\treturn isEsmSource(source);\n}\n\n// ── Main transform ───────────────────────────────────────────────────────────\n\n/**\n * Transform ESM import/export syntax to CJS require/exports equivalents.\n */\nexport function transformEsmToCjs(source: string): string {\n\tlet result = source.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n\n\t// Context-aware import.meta replacement: replaces in code only,\n\t// leaves string/template literal text untouched.\n\tresult = replaceImportMetaInCode(result);\n\n\t// Mask string/template literals for import/export regex transforms\n\tconst { masked, literals } = maskStringLiterals(result);\n\n\tresult = masked;\n\tresult = result.replace(\n\t\t/;([ \\t]*(?:import\\s*[\\w${*('\".]|export[\\s{*]))/g,\n\t\t';\\n$1'\n\t);\n\tconst trailingExports: string[] = [];\n\tlet hasDefaultExport = false;\n\tlet hasNamedExport = false;\n\tconst importSources = new Map<string, { modRef: string; prop: string }>();\n\n\thasDefaultExport = /(?:^|\\n)\\s*export\\s+default\\s+/.test(result);\n\thasNamedExport = /(?:^|\\n)\\s*export\\s+(?:const|let|var|function|class|\\{|\\*\\s+from)/.test(result);\n\n\t// Strip type-only imports/exports (TypeScript)\n\tresult = result.replace(/^[ \\t]*import\\s+type\\s+.*?from\\s+(['\"`]).*?\\1[ \\t]*;?$/gm, '');\n\tresult = result.replace(/^[ \\t]*export\\s+type\\s+\\{[^}]*\\}(?:\\s+from\\s+(['\"`]).*?\\1)?[ \\t]*;?$/gm, '');\n\tresult = result.replace(/^[ \\t]*export\\s+type\\s+\\*\\s+from\\s+(['\"`]).*?\\1[ \\t]*;?$/gm, '');\n\n\t// Combined: import X, { a, b as c } from 'mod'\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)import\\s+([\\w$]+)\\s*,\\s*\\{([^}]+)\\}\\s*from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(match, indent, defaultName, imports, mod) => {\n\t\t\tif (imports.includes('${')) return match;\n\t\t\tconst tmp = '__mod_' + defaultName;\n\t\t\tconst mapped = imports.split(',').map((s: string) => {\n\t\t\t\tconst parts = s.trim().split(/\\s+as\\s+/);\n\t\t\t\tconst sourceProp = parts[0].trim();\n\t\t\t\tconst localName = parts.length === 2 ? parts[1].trim() : sourceProp;\n\t\t\t\tif (localName) importSources.set(localName, { modRef: tmp, prop: sourceProp });\n\t\t\t\tif (parts.length === 2) return `${sourceProp}: ${localName}`;\n\t\t\t\treturn sourceProp;\n\t\t\t}).filter((s: string) => s).join(', ');\n\t\t\treturn `\\n${indent}${cjsDecl(tmp)} ${tmp} = require(${mod});\\n${indent}${cjsDecl(defaultName)} ${defaultName} = ${tmp}.default || ${tmp};\\n${indent}const { ${mapped} } = ${tmp};`;\n\t\t}\n\t);\n\n\t// Combined: import X, * as Y from 'mod'\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)import\\s+([\\w$]+)\\s*,\\s*\\*\\s*as\\s+([\\w$]+)\\s+from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(_match, indent, defaultName, nsName, mod) => {\n\t\t\treturn `\\n${indent}${cjsDecl(nsName)} ${nsName} = require(${mod});\\n${indent}${cjsDecl(defaultName)} ${defaultName} = ${nsName}.default || ${nsName};`;\n\t\t}\n\t);\n\n\t// import { a, b as c } from 'mod'\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)import\\s*\\{([^}]+)\\}\\s*from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(match, indent, imports, mod) => {\n\t\t\tif (imports.includes('${')) return match;\n\t\t\tconst modRef = '__imp_' + Math.random().toString(36).slice(2, 8);\n\t\t\tconst mapped = imports.split(',').map((s: string) => {\n\t\t\t\tconst parts = s.trim().split(/\\s+as\\s+/);\n\t\t\t\tconst sourceProp = parts[0].trim();\n\t\t\t\tconst localName = parts.length === 2 ? parts[1].trim() : sourceProp;\n\t\t\t\tif (localName) importSources.set(localName, { modRef, prop: sourceProp });\n\t\t\t\tif (parts.length === 2) return `${sourceProp}: ${localName}`;\n\t\t\t\treturn sourceProp;\n\t\t\t}).filter((s: string) => s).join(', ');\n\t\t\treturn `\\n${indent}const ${modRef} = require(${mod});\\n${indent}const { ${mapped} } = ${modRef};`;\n\t\t}\n\t);\n\n\t// import * as X from 'mod'\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)import\\s*\\*\\s*as\\s+([\\w$]+)\\s+from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(_match, indent, name, mod) => `\\n${indent}${cjsDecl(name)} ${name} = require(${mod});`\n\t);\n\n\t// import X from 'mod' (default import)\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)import\\s+([\\w$]+)\\s+from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(_match, indent, name, mod) => `\\n${indent}${cjsDecl(name)} ${name} = require(${mod});`\n\t);\n\n\t// import 'mod' (side-effect)\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)import\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(_match, indent, mod) => `\\n${indent}require(${mod});`\n\t);\n\n\t// Strip empty export{}\n\tresult = result.replace(/(?:^|\\n)[ \\t]*export\\s*\\{\\s*\\}[ \\t]*;?/g, '');\n\n\t// export * from 'mod'\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)export\\s*\\*\\s*from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(_match, indent, mod) => {\n\t\t\tconst tmpVar = '__star_' + Math.random().toString(36).slice(2, 8);\n\t\t\treturn `\\n${indent}const ${tmpVar} = require(${mod});\\n${indent}Object.keys(${tmpVar}).forEach(function(k) { if (k !== 'default' && !exports.hasOwnProperty(k)) Object.defineProperty(exports, k, { get: function() { return ${tmpVar}[k]; }, enumerable: true, configurable: true }); });`;\n\t\t}\n\t);\n\n\t// export { a, b } from 'mod'\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)export\\s*\\{([^}]+)\\}\\s*from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(match, indent, names, mod) => {\n\t\t\tif (names.includes('${')) return match;\n\t\t\tconst tmpVar = '__re_' + Math.random().toString(36).slice(2, 8);\n\t\t\tconst assignments = names.split(',').map((s: string) => {\n\t\t\t\tconst parts = s.trim().split(/\\s+as\\s+/);\n\t\t\t\tconst local = parts[0].trim();\n\t\t\t\tconst exported = parts.length === 2 ? parts[1].trim() : local;\n\t\t\t\treturn `${indent}Object.defineProperty(exports, '${exported}', { get() { return ${tmpVar}.${local}; }, enumerable: true, configurable: true });`;\n\t\t\t}).join('\\n');\n\t\t\treturn `\\n${indent}const ${tmpVar} = require(${mod});\\n${assignments}`;\n\t\t}\n\t);\n\n\t// export default\n\tif (hasDefaultExport && hasNamedExport) {\n\t\tresult = result.replace(\n\t\t\t/(?:^|\\n)([ \\t]*)export\\s+default\\s+/g,\n\t\t\t(_match, indent) => `\\n${indent}exports.default = `\n\t\t);\n\t} else {\n\t\tresult = result.replace(\n\t\t\t/(?:^|\\n)([ \\t]*)export\\s+default\\s+/g,\n\t\t\t(_match, indent) => `\\n${indent}module.exports = `\n\t\t);\n\t}\n\n\t// export const/let/var\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)export\\s+(const|let|var)\\s+([\\w$]+)\\s*=/g,\n\t\t(match, indent, keyword, name) => {\n\t\t\tif (match.includes('${')) return match;\n\t\t\treturn `\\n${indent}${keyword} ${name} = exports.${name} =`;\n\t\t}\n\t);\n\n\t// export function / class\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)export\\s+(async\\s+function\\s+([\\w$]+)|function\\s+([\\w$]+)|class\\s+([\\w$]+))/g,\n\t\t(match, indent, decl, asyncFnName, fnName, className, offset: number) => {\n\t\t\tconst nextChar = result.charAt(offset + match.length);\n\t\t\tif (nextChar === '{') return match;\n\t\t\tconst name = asyncFnName || fnName || className;\n\t\t\ttrailingExports.push(`exports.${name} = ${name};`);\n\t\t\treturn `\\n${indent}${decl}`;\n\t\t}\n\t);\n\n\t// export { a, b as c } (local)\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)export\\s*\\{([^}]+)\\}[ \\t]*;?/g,\n\t\t(match, _indent, names) => {\n\t\t\tif (names.includes('${')) return match;\n\t\t\tnames.split(',').forEach((s: string) => {\n\t\t\t\tconst parts = s.trim().split(/\\s+as\\s+/);\n\t\t\t\tconst local = parts[0].trim();\n\t\t\t\tconst exported = parts.length === 2 ? parts[1].trim() : local;\n\t\t\t\tif (!local) return;\n\t\t\t\tconst src = importSources.get(local);\n\t\t\t\tif (src) {\n\t\t\t\t\ttrailingExports.push(`Object.defineProperty(exports, '${exported}', { get: function() { return ${src.modRef}.${src.prop}; }, enumerable: true, configurable: true });`);\n\t\t\t\t} else {\n\t\t\t\t\ttrailingExports.push(`exports.${exported} = ${local};`);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn '';\n\t\t}\n\t);\n\n\t// Dynamic import() with string literal\n\tresult = result.replace(\n\t\t/(?<!\\.)(?<!\\w)\\bimport\\s*\\(\\s*(['\"][^'\"]+['\"])\\s*\\)/g,\n\t\t(_match, mod) => `Promise.resolve(require(${mod}))`\n\t);\n\n\t// Dynamic import() with expression\n\t{\n\t\tlet i = 0;\n\t\tlet out = '';\n\t\twhile (i < result.length) {\n\t\t\tconst importIdx = result.indexOf('import(', i);\n\t\t\tif (importIdx === -1) { out += result.slice(i); break; }\n\t\t\tif (importIdx > 0 && /[\\w$.]/.test(result[importIdx - 1])) {\n\t\t\t\tout += result.slice(i, importIdx + 7);\n\t\t\t\ti = importIdx + 7;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t{\n\t\t\t\tlet depth = 1;\n\t\t\t\tlet k = importIdx + 7;\n\t\t\t\twhile (k < result.length && depth > 0) {\n\t\t\t\t\tif (result[k] === '(') depth++;\n\t\t\t\t\telse if (result[k] === ')') depth--;\n\t\t\t\t\tk++;\n\t\t\t\t}\n\t\t\t\tif (depth === 0) {\n\t\t\t\t\tlet afterClose = k;\n\t\t\t\t\twhile (afterClose < result.length && /[ \\t]/.test(result[afterClose])) afterClose++;\n\t\t\t\t\tif (result[afterClose] === '{') {\n\t\t\t\t\t\tout += result.slice(i, importIdx + 7);\n\t\t\t\t\t\ti = importIdx + 7;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tout += result.slice(i, importIdx);\n\t\t\tlet depth = 1;\n\t\t\tlet j = importIdx + 7;\n\t\t\twhile (j < result.length && depth > 0) {\n\t\t\t\tif (result[j] === '(') depth++;\n\t\t\t\telse if (result[j] === ')') depth--;\n\t\t\t\tj++;\n\t\t\t}\n\t\t\tif (depth === 0) {\n\t\t\t\tconst arg = result.slice(importIdx + 7, j - 1);\n\t\t\t\tout += `Promise.resolve().then(function() { return require(${arg}); })`;\n\t\t\t} else {\n\t\t\t\tout += result.slice(importIdx, j);\n\t\t\t}\n\t\t\ti = j;\n\t\t}\n\t\tresult = out;\n\t}\n\n\t// Replace const/let of CJS wrapper params with var\n\tresult = result.replace(\n\t\t/\\b(const|let)\\s+(__dirname|__filename|exports|require|module|console|process|Buffer|global)\\b/g,\n\t\t(_match, _kw, name) => `var ${name}`\n\t);\n\n\tif (trailingExports.length > 0) {\n\t\tresult += '\\n' + trailingExports.join('\\n');\n\t}\n\n\tresult = unmaskStringLiterals(result, literals);\n\n\treturn result;\n}\n\n/**\n * Transform source to CJS if it's detected as ESM.\n *\n * `import.meta` is ALWAYS replaced regardless of ESM detection because\n * `new Function()` cannot parse it (syntax error). CJS bundles like\n * Vite's config.js use `createRequire(import.meta.url)` without being ESM.\n */\nexport function transformToCjs(\n\tsource: string,\n\tfilename: string,\n\tvfs?: { exists(p: string): boolean; readFileString(p: string): string },\n): { code: string; wasEsm: boolean } {\n\tif (shouldTreatAsEsm(source, filename, vfs)) {\n\t\treturn { code: transformEsmToCjs(source), wasEsm: true };\n\t}\n\t// Always replace import.meta even in non-ESM files — new Function()\n\t// cannot parse import.meta syntax at all.\n\tconst code = replaceImportMetaInCode(source);\n\treturn { code, 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
|
@@ -1,5 +1,27 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* IVfs — minimal VFS interface used by node-runner.
|
|
3
|
+
*
|
|
4
|
+
* Structurally compatible with both `VFS` from `@lifo-sh/vfs` (standalone)
|
|
5
|
+
* and `IKernelVfs` from `@lifo-sh/kernel` (when running inside lifo).
|
|
6
|
+
*/
|
|
7
|
+
interface IVfs {
|
|
8
|
+
readFile(path: string): Uint8Array;
|
|
9
|
+
readFileString(path: string): string;
|
|
10
|
+
writeFile(path: string, content: string | Uint8Array): void;
|
|
11
|
+
exists(path: string): boolean;
|
|
12
|
+
stat(path: string): {
|
|
13
|
+
type: string;
|
|
14
|
+
size: number;
|
|
15
|
+
mtime: number;
|
|
16
|
+
};
|
|
17
|
+
mkdir(path: string, options?: {
|
|
18
|
+
recursive?: boolean;
|
|
19
|
+
}): void;
|
|
20
|
+
readdir(path: string): Array<{
|
|
21
|
+
name: string;
|
|
22
|
+
type: string;
|
|
23
|
+
}>;
|
|
24
|
+
}
|
|
3
25
|
/** Writable output stream interface */
|
|
4
26
|
interface CommandOutputStream {
|
|
5
27
|
write(data: string): void;
|
|
@@ -7,7 +29,7 @@ interface CommandOutputStream {
|
|
|
7
29
|
/** Options for creating a NodeRunner instance */
|
|
8
30
|
interface NodeRunnerOptions {
|
|
9
31
|
/** Virtual file system instance (defaults to new VFS()) */
|
|
10
|
-
vfs?:
|
|
32
|
+
vfs?: IVfs;
|
|
11
33
|
/** Files to pre-populate in the VFS (path → content) */
|
|
12
34
|
files?: Record<string, string>;
|
|
13
35
|
/** Simple node-compat modules (backward compat) */
|
|
@@ -71,7 +93,7 @@ interface ResolvedModule {
|
|
|
71
93
|
}
|
|
72
94
|
|
|
73
95
|
declare class NodeRunner {
|
|
74
|
-
readonly vfs:
|
|
96
|
+
readonly vfs: IVfs;
|
|
75
97
|
private moduleMapFactory?;
|
|
76
98
|
private nodeCompat?;
|
|
77
99
|
private env;
|
|
@@ -151,6 +173,6 @@ declare function transformToCjs(source: string, filename: string, vfs?: {
|
|
|
151
173
|
};
|
|
152
174
|
|
|
153
175
|
/** Resolve and load a module from the VFS */
|
|
154
|
-
declare function resolveModule(vfs:
|
|
176
|
+
declare function resolveModule(vfs: IVfs, id: string, fromDir: string): ResolvedModule | null;
|
|
155
177
|
|
|
156
|
-
export { type CommandOutputStream, type NodeCompatModules, NodeRunner, type NodeRunnerOptions, ProcessExitError, type ResolvedModule, type RunResult, type ScriptConsole, resolveModule, shouldTreatAsEsm, transformEsmToCjs, transformToCjs };
|
|
178
|
+
export { type CommandOutputStream, type IVfs, type NodeCompatModules, NodeRunner, type NodeRunnerOptions, ProcessExitError, type ResolvedModule, type RunResult, type ScriptConsole, resolveModule, shouldTreatAsEsm, transformEsmToCjs, transformToCjs };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* IVfs — minimal VFS interface used by node-runner.
|
|
3
|
+
*
|
|
4
|
+
* Structurally compatible with both `VFS` from `@lifo-sh/vfs` (standalone)
|
|
5
|
+
* and `IKernelVfs` from `@lifo-sh/kernel` (when running inside lifo).
|
|
6
|
+
*/
|
|
7
|
+
interface IVfs {
|
|
8
|
+
readFile(path: string): Uint8Array;
|
|
9
|
+
readFileString(path: string): string;
|
|
10
|
+
writeFile(path: string, content: string | Uint8Array): void;
|
|
11
|
+
exists(path: string): boolean;
|
|
12
|
+
stat(path: string): {
|
|
13
|
+
type: string;
|
|
14
|
+
size: number;
|
|
15
|
+
mtime: number;
|
|
16
|
+
};
|
|
17
|
+
mkdir(path: string, options?: {
|
|
18
|
+
recursive?: boolean;
|
|
19
|
+
}): void;
|
|
20
|
+
readdir(path: string): Array<{
|
|
21
|
+
name: string;
|
|
22
|
+
type: string;
|
|
23
|
+
}>;
|
|
24
|
+
}
|
|
3
25
|
/** Writable output stream interface */
|
|
4
26
|
interface CommandOutputStream {
|
|
5
27
|
write(data: string): void;
|
|
@@ -7,7 +29,7 @@ interface CommandOutputStream {
|
|
|
7
29
|
/** Options for creating a NodeRunner instance */
|
|
8
30
|
interface NodeRunnerOptions {
|
|
9
31
|
/** Virtual file system instance (defaults to new VFS()) */
|
|
10
|
-
vfs?:
|
|
32
|
+
vfs?: IVfs;
|
|
11
33
|
/** Files to pre-populate in the VFS (path → content) */
|
|
12
34
|
files?: Record<string, string>;
|
|
13
35
|
/** Simple node-compat modules (backward compat) */
|
|
@@ -71,7 +93,7 @@ interface ResolvedModule {
|
|
|
71
93
|
}
|
|
72
94
|
|
|
73
95
|
declare class NodeRunner {
|
|
74
|
-
readonly vfs:
|
|
96
|
+
readonly vfs: IVfs;
|
|
75
97
|
private moduleMapFactory?;
|
|
76
98
|
private nodeCompat?;
|
|
77
99
|
private env;
|
|
@@ -151,6 +173,6 @@ declare function transformToCjs(source: string, filename: string, vfs?: {
|
|
|
151
173
|
};
|
|
152
174
|
|
|
153
175
|
/** Resolve and load a module from the VFS */
|
|
154
|
-
declare function resolveModule(vfs:
|
|
176
|
+
declare function resolveModule(vfs: IVfs, id: string, fromDir: string): ResolvedModule | null;
|
|
155
177
|
|
|
156
|
-
export { type CommandOutputStream, type NodeCompatModules, NodeRunner, type NodeRunnerOptions, ProcessExitError, type ResolvedModule, type RunResult, type ScriptConsole, resolveModule, shouldTreatAsEsm, transformEsmToCjs, transformToCjs };
|
|
178
|
+
export { type CommandOutputStream, type IVfs, type NodeCompatModules, NodeRunner, type NodeRunnerOptions, ProcessExitError, type ResolvedModule, type RunResult, type ScriptConsole, resolveModule, shouldTreatAsEsm, transformEsmToCjs, transformToCjs };
|
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// ── Context-aware import.meta replacement ────────────────────────────────────\n\n/**\n * Replace `import.meta.*` references only in code context, leaving string\n * and template literal text untouched. Template `${…}` expressions are\n * treated as code (replacements apply). This avoids corrupting generated\n * code inside template strings (e.g. Vite emits `import.meta.hot` in\n * template literals that are served to the browser).\n */\nfunction replaceImportMetaInCode(src: string): string {\n\tconst len = src.length;\n\tlet out = '';\n\tlet i = 0;\n\n\tfunction tryReplace(): boolean {\n\t\tif (i + 11 > len || src[i] !== 'i') return false;\n\t\tif (!src.startsWith('import.meta', i)) return false;\n\t\tconst after = i + 11;\n\t\tif (src.startsWith('.url', after)) { out += '__importMetaUrl'; i = after + 4; return true; }\n\t\tif (src.startsWith('.dirname', after)) { out += '__dirname'; i = after + 8; return true; }\n\t\tif (src.startsWith('.filename', after)) { out += '__filename'; i = after + 9; return true; }\n\t\tif (src.startsWith('.require', after)) { out += 'require'; i = after + 8; return true; }\n\t\tif (src.startsWith('.resolve', after)) { out += '__importMetaResolve'; i = after + 8; return true; }\n\t\tout += '__importMeta'; i = after; return true;\n\t}\n\n\tfunction processCode(): void {\n\t\twhile (i < len) {\n\t\t\tconst ch = src[i];\n\n\t\t\t// Single-line comment — copy verbatim\n\t\t\tif (ch === '/' && i + 1 < len && src[i + 1] === '/') {\n\t\t\t\tconst nl = src.indexOf('\\n', i);\n\t\t\t\tconst end = nl === -1 ? len : nl;\n\t\t\t\tout += src.slice(i, end);\n\t\t\t\ti = end;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// Multi-line comment — copy verbatim\n\t\t\tif (ch === '/' && i + 1 < len && src[i + 1] === '*') {\n\t\t\t\tconst end = src.indexOf('*/', i + 2);\n\t\t\t\tconst close = end === -1 ? len : end + 2;\n\t\t\t\tout += src.slice(i, close);\n\t\t\t\ti = close;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Simple string literals — copy verbatim (no import.meta inside)\n\t\t\tif (ch === '\"' || ch === \"'\") {\n\t\t\t\tconst start = i;\n\t\t\t\ti++;\n\t\t\t\twhile (i < len && src[i] !== ch) {\n\t\t\t\t\tif (src[i] === '\\\\') i++;\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t\tif (i < len) i++; // closing quote\n\t\t\t\tout += src.slice(start, i);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Template literal — text parts verbatim, ${} expressions as code\n\t\t\tif (ch === '`') {\n\t\t\t\tprocessTemplate();\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// import.meta replacement in code\n\t\t\tif (ch === 'i' && tryReplace()) continue;\n\n\t\t\tout += ch;\n\t\t\ti++;\n\t\t}\n\t}\n\n\tfunction processTemplate(): void {\n\t\tout += src[i]; // opening backtick\n\t\ti++;\n\t\twhile (i < len) {\n\t\t\tif (src[i] === '\\\\') {\n\t\t\t\tout += src[i] + (i + 1 < len ? src[i + 1] : '');\n\t\t\t\ti += 2;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (src[i] === '`') {\n\t\t\t\tout += '`';\n\t\t\t\ti++;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// ${...} expression — process as code\n\t\t\tif (src[i] === '$' && i + 1 < len && src[i + 1] === '{') {\n\t\t\t\tout += '${';\n\t\t\t\ti += 2;\n\t\t\t\tprocessTemplateExpression();\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// Template text — copy verbatim\n\t\t\tout += src[i];\n\t\t\ti++;\n\t\t}\n\t}\n\n\tfunction processTemplateExpression(): void {\n\t\tlet depth = 1;\n\t\twhile (i < len && depth > 0) {\n\t\t\tconst ch = src[i];\n\t\t\tif (ch === '{') { out += ch; i++; depth++; continue; }\n\t\t\tif (ch === '}') { depth--; if (depth === 0) { out += '}'; i++; return; } out += ch; i++; continue; }\n\n\t\t\t// Handle strings inside expressions\n\t\t\tif (ch === '\"' || ch === \"'\") {\n\t\t\t\tconst start = i; i++;\n\t\t\t\twhile (i < len && src[i] !== ch) { if (src[i] === '\\\\') i++; i++; }\n\t\t\t\tif (i < len) i++;\n\t\t\t\tout += src.slice(start, i);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// Nested template literal inside expression\n\t\t\tif (ch === '`') { processTemplate(); continue; }\n\t\t\t// Comments inside expressions\n\t\t\tif (ch === '/' && i + 1 < len && src[i + 1] === '/') {\n\t\t\t\tconst nl = src.indexOf('\\n', i); const end = nl === -1 ? len : nl;\n\t\t\t\tout += src.slice(i, end); i = end; continue;\n\t\t\t}\n\t\t\tif (ch === '/' && i + 1 < len && src[i + 1] === '*') {\n\t\t\t\tconst end = src.indexOf('*/', i + 2); const close = end === -1 ? len : end + 2;\n\t\t\t\tout += src.slice(i, close); i = close; continue;\n\t\t\t}\n\t\t\t// import.meta replacement in expression code\n\t\t\tif (ch === 'i' && tryReplace()) continue;\n\n\t\t\tout += ch;\n\t\t\ti++;\n\t\t}\n\t}\n\n\tprocessCode();\n\treturn out;\n}\n\n// ── String literal masking ───────────────────────────────────────────────────\n\nfunction maskStringLiterals(src: string): { masked: string; literals: string[] } {\n\tconst literals: string[] = [];\n\tlet masked = '';\n\tlet i = 0;\n\n\twhile (i < src.length) {\n\t\tconst ch = src[i];\n\n\t\tif (ch === '/' && i + 1 < src.length && src[i + 1] === '/') {\n\t\t\tconst nl = src.indexOf('\\n', i);\n\t\t\tconst end = nl === -1 ? src.length : nl;\n\t\t\tmasked += src.slice(i, end);\n\t\t\ti = end;\n\t\t\tcontinue;\n\t\t}\n\t\tif (ch === '/' && i + 1 < src.length && src[i + 1] === '*') {\n\t\t\tconst end = src.indexOf('*/', i + 2);\n\t\t\tconst close = end === -1 ? src.length : end + 2;\n\t\t\tmasked += src.slice(i, close);\n\t\t\ti = close;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch === '/' && i + 1 < src.length && src[i + 1] !== '/' && src[i + 1] !== '*') {\n\t\t\tlet k = i - 1;\n\t\t\twhile (k >= 0 && (src[k] === ' ' || src[k] === '\\t' || src[k] === '\\n' || src[k] === '\\r')) k--;\n\t\t\tconst prev = k >= 0 ? src[k] : '\\0';\n\t\t\tif ('\\0=([{,;!&|^~?:+-*%<>/)]}'.includes(prev) ||\n\t\t\t\t(k >= 1 && /\\b(?:return|typeof|void|delete|throw|new|case|of|in|yield|await)\\s*$/.test(src.slice(Math.max(0, k - 11), k + 1)))) {\n\t\t\t\tconst regStart = i;\n\t\t\t\ti++;\n\t\t\t\twhile (i < src.length && src[i] !== '\\n') {\n\t\t\t\t\tif (src[i] === '\\\\') { i += 2; continue; }\n\t\t\t\t\tif (src[i] === '/') { i++; break; }\n\t\t\t\t\tif (src[i] === '[') {\n\t\t\t\t\t\ti++;\n\t\t\t\t\t\twhile (i < src.length && src[i] !== ']' && src[i] !== '\\n') {\n\t\t\t\t\t\t\tif (src[i] === '\\\\') i++;\n\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (i < src.length && src[i] === ']') i++;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t\twhile (i < src.length && /[gimsuyv]/.test(src[i])) i++;\n\t\t\t\tmasked += src.slice(regStart, i);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tif (ch === '\"' || ch === \"'\" || ch === '`') {\n\t\t\tconst start = i;\n\t\t\tconst quote = ch;\n\t\t\ti++;\n\t\t\twhile (i < src.length) {\n\t\t\t\tif (src[i] === '\\\\') { i += 2; continue; }\n\t\t\t\tif (src[i] === quote) { i++; break; }\n\t\t\t\tif (quote === '`' && src[i] === '$' && i + 1 < src.length && src[i + 1] === '{') {\n\t\t\t\t\tlet depth = 1;\n\t\t\t\t\ti += 2;\n\t\t\t\t\twhile (i < src.length && depth > 0) {\n\t\t\t\t\t\tif (src[i] === '{') depth++;\n\t\t\t\t\t\telse if (src[i] === '}') depth--;\n\t\t\t\t\t\telse if (src[i] === '\\\\') i++;\n\t\t\t\t\t\telse if (src[i] === \"'\" || src[i] === '\"') {\n\t\t\t\t\t\t\tconst q = src[i]; i++;\n\t\t\t\t\t\t\twhile (i < src.length && src[i] !== q) {\n\t\t\t\t\t\t\t\tif (src[i] === '\\\\') i++;\n\t\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (i < src.length) i++;\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t} else if (src[i] === '`') {\n\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t\twhile (i < src.length && src[i] !== '`') {\n\t\t\t\t\t\t\t\tif (src[i] === '\\\\') i++;\n\t\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (i < src.length) i++;\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ti++;\n\t\t\t\t\t}\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\ti++;\n\t\t\t}\n\n\t\t\tconst literal = src.slice(start, i);\n\t\t\tconst idx = literals.length;\n\t\t\tliterals.push(literal);\n\t\t\tmasked += quote + '__LIFO_S' + idx + '__' + quote;\n\t\t\tcontinue;\n\t\t}\n\n\t\tmasked += ch;\n\t\ti++;\n\t}\n\n\treturn { masked, literals };\n}\n\nfunction unmaskStringLiterals(src: string, literals: string[]): string {\n\treturn src.replace(\n\t\t/(['\"`])__LIFO_S(\\d+)__\\1/g,\n\t\t(_match, _quote, idxStr) => literals[parseInt(idxStr, 10)]\n\t);\n}\n\n// ── ESM detection ────────────────────────────────────────────────────────────\n\nfunction isEsmSource(source: string): boolean {\n\treturn /(?:^|\\n|;)\\s*(?:import\\s*[\\w{*('\".]|export\\s+|export\\s*\\{)/.test(source);\n}\n\n/**\n * Determine if source should be treated as ESM based on filename, content,\n * and package.json type field.\n */\nconst JS_LIKE_EXTENSIONS = new Set([\n\t'.js', '.ts', '.jsx', '.tsx', '.mjs', '.mts', '.cjs', '.cts', '',\n]);\n\nexport function shouldTreatAsEsm(\n\tsource: string,\n\tfilename: string,\n\tvfs?: { exists(p: string): boolean; readFileString(p: string): string },\n): boolean {\n\tconst ext = extname(filename);\n\tif (ext === '.mjs' || ext === '.mts') return true;\n\tif (ext === '.cjs' || ext === '.cts') return false;\n\t// Non-JS files (.css, .html, .json, etc.) should never be treated as ESM\n\tif (!JS_LIKE_EXTENSIONS.has(ext)) return false;\n\tif (vfs && ext === '.js') {\n\t\tlet dir = dirname(filename);\n\t\tfor (; ;) {\n\t\t\tconst pkgPath = join(dir, 'package.json');\n\t\t\tif (vfs.exists(pkgPath)) {\n\t\t\t\ttry {\n\t\t\t\t\tconst pkg = JSON.parse(vfs.readFileString(pkgPath));\n\t\t\t\t\tif (pkg.type === 'module') return true;\n\t\t\t\t\tif (pkg.type === 'commonjs') return false;\n\t\t\t\t} catch { /* ignore */ }\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tconst parent = dirname(dir);\n\t\t\tif (parent === dir) break;\n\t\t\tdir = parent;\n\t\t}\n\t}\n\treturn isEsmSource(source);\n}\n\n// ── Main transform ───────────────────────────────────────────────────────────\n\n/**\n * Transform ESM import/export syntax to CJS require/exports equivalents.\n */\nexport function transformEsmToCjs(source: string): string {\n\tlet result = source.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n\n\t// Context-aware import.meta replacement: replaces in code only,\n\t// leaves string/template literal text untouched.\n\tresult = replaceImportMetaInCode(result);\n\n\t// Mask string/template literals for import/export regex transforms\n\tconst { masked, literals } = maskStringLiterals(result);\n\n\tresult = masked;\n\tresult = result.replace(\n\t\t/;([ \\t]*(?:import\\s*[\\w${*('\".]|export[\\s{*]))/g,\n\t\t';\\n$1'\n\t);\n\tconst trailingExports: string[] = [];\n\tlet hasDefaultExport = false;\n\tlet hasNamedExport = false;\n\tconst importSources = new Map<string, { modRef: string; prop: string }>();\n\n\thasDefaultExport = /(?:^|\\n)\\s*export\\s+default\\s+/.test(result);\n\thasNamedExport = /(?:^|\\n)\\s*export\\s+(?:const|let|var|function|class|\\{|\\*\\s+from)/.test(result);\n\n\t// Strip type-only imports/exports (TypeScript)\n\tresult = result.replace(/^[ \\t]*import\\s+type\\s+.*?from\\s+(['\"`]).*?\\1[ \\t]*;?$/gm, '');\n\tresult = result.replace(/^[ \\t]*export\\s+type\\s+\\{[^}]*\\}(?:\\s+from\\s+(['\"`]).*?\\1)?[ \\t]*;?$/gm, '');\n\tresult = result.replace(/^[ \\t]*export\\s+type\\s+\\*\\s+from\\s+(['\"`]).*?\\1[ \\t]*;?$/gm, '');\n\n\t// Combined: import X, { a, b as c } from 'mod'\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)import\\s+([\\w$]+)\\s*,\\s*\\{([^}]+)\\}\\s*from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(match, indent, defaultName, imports, mod) => {\n\t\t\tif (imports.includes('${')) return match;\n\t\t\tconst tmp = '__mod_' + defaultName;\n\t\t\tconst mapped = imports.split(',').map((s: string) => {\n\t\t\t\tconst parts = s.trim().split(/\\s+as\\s+/);\n\t\t\t\tconst sourceProp = parts[0].trim();\n\t\t\t\tconst localName = parts.length === 2 ? parts[1].trim() : sourceProp;\n\t\t\t\tif (localName) importSources.set(localName, { modRef: tmp, prop: sourceProp });\n\t\t\t\tif (parts.length === 2) return `${sourceProp}: ${localName}`;\n\t\t\t\treturn sourceProp;\n\t\t\t}).filter((s: string) => s).join(', ');\n\t\t\treturn `\\n${indent}${cjsDecl(tmp)} ${tmp} = require(${mod});\\n${indent}${cjsDecl(defaultName)} ${defaultName} = ${tmp}.default || ${tmp};\\n${indent}const { ${mapped} } = ${tmp};`;\n\t\t}\n\t);\n\n\t// Combined: import X, * as Y from 'mod'\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)import\\s+([\\w$]+)\\s*,\\s*\\*\\s*as\\s+([\\w$]+)\\s+from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(_match, indent, defaultName, nsName, mod) => {\n\t\t\treturn `\\n${indent}${cjsDecl(nsName)} ${nsName} = require(${mod});\\n${indent}${cjsDecl(defaultName)} ${defaultName} = ${nsName}.default || ${nsName};`;\n\t\t}\n\t);\n\n\t// import { a, b as c } from 'mod'\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)import\\s*\\{([^}]+)\\}\\s*from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(match, indent, imports, mod) => {\n\t\t\tif (imports.includes('${')) return match;\n\t\t\tconst modRef = '__imp_' + Math.random().toString(36).slice(2, 8);\n\t\t\tconst mapped = imports.split(',').map((s: string) => {\n\t\t\t\tconst parts = s.trim().split(/\\s+as\\s+/);\n\t\t\t\tconst sourceProp = parts[0].trim();\n\t\t\t\tconst localName = parts.length === 2 ? parts[1].trim() : sourceProp;\n\t\t\t\tif (localName) importSources.set(localName, { modRef, prop: sourceProp });\n\t\t\t\tif (parts.length === 2) return `${sourceProp}: ${localName}`;\n\t\t\t\treturn sourceProp;\n\t\t\t}).filter((s: string) => s).join(', ');\n\t\t\treturn `\\n${indent}const ${modRef} = require(${mod});\\n${indent}const { ${mapped} } = ${modRef};`;\n\t\t}\n\t);\n\n\t// import * as X from 'mod'\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)import\\s*\\*\\s*as\\s+([\\w$]+)\\s+from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(_match, indent, name, mod) => `\\n${indent}${cjsDecl(name)} ${name} = require(${mod});`\n\t);\n\n\t// import X from 'mod' (default import)\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)import\\s+([\\w$]+)\\s+from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(_match, indent, name, mod) => `\\n${indent}${cjsDecl(name)} ${name} = require(${mod});`\n\t);\n\n\t// import 'mod' (side-effect)\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)import\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(_match, indent, mod) => `\\n${indent}require(${mod});`\n\t);\n\n\t// Strip empty export{}\n\tresult = result.replace(/(?:^|\\n)[ \\t]*export\\s*\\{\\s*\\}[ \\t]*;?/g, '');\n\n\t// export * from 'mod'\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)export\\s*\\*\\s*from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(_match, indent, mod) => {\n\t\t\tconst tmpVar = '__star_' + Math.random().toString(36).slice(2, 8);\n\t\t\treturn `\\n${indent}const ${tmpVar} = require(${mod});\\n${indent}Object.keys(${tmpVar}).forEach(function(k) { if (k !== 'default' && !exports.hasOwnProperty(k)) Object.defineProperty(exports, k, { get: function() { return ${tmpVar}[k]; }, enumerable: true, configurable: true }); });`;\n\t\t}\n\t);\n\n\t// export { a, b } from 'mod'\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)export\\s*\\{([^}]+)\\}\\s*from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(match, indent, names, mod) => {\n\t\t\tif (names.includes('${')) return match;\n\t\t\tconst tmpVar = '__re_' + Math.random().toString(36).slice(2, 8);\n\t\t\tconst assignments = names.split(',').map((s: string) => {\n\t\t\t\tconst parts = s.trim().split(/\\s+as\\s+/);\n\t\t\t\tconst local = parts[0].trim();\n\t\t\t\tconst exported = parts.length === 2 ? parts[1].trim() : local;\n\t\t\t\treturn `${indent}Object.defineProperty(exports, '${exported}', { get() { return ${tmpVar}.${local}; }, enumerable: true, configurable: true });`;\n\t\t\t}).join('\\n');\n\t\t\treturn `\\n${indent}const ${tmpVar} = require(${mod});\\n${assignments}`;\n\t\t}\n\t);\n\n\t// export default\n\tif (hasDefaultExport && hasNamedExport) {\n\t\tresult = result.replace(\n\t\t\t/(?:^|\\n)([ \\t]*)export\\s+default\\s+/g,\n\t\t\t(_match, indent) => `\\n${indent}exports.default = `\n\t\t);\n\t} else {\n\t\tresult = result.replace(\n\t\t\t/(?:^|\\n)([ \\t]*)export\\s+default\\s+/g,\n\t\t\t(_match, indent) => `\\n${indent}module.exports = `\n\t\t);\n\t}\n\n\t// export const/let/var\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)export\\s+(const|let|var)\\s+([\\w$]+)\\s*=/g,\n\t\t(match, indent, keyword, name) => {\n\t\t\tif (match.includes('${')) return match;\n\t\t\treturn `\\n${indent}${keyword} ${name} = exports.${name} =`;\n\t\t}\n\t);\n\n\t// export function / class\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)export\\s+(async\\s+function\\s+([\\w$]+)|function\\s+([\\w$]+)|class\\s+([\\w$]+))/g,\n\t\t(match, indent, decl, asyncFnName, fnName, className, offset: number) => {\n\t\t\tconst nextChar = result.charAt(offset + match.length);\n\t\t\tif (nextChar === '{') return match;\n\t\t\tconst name = asyncFnName || fnName || className;\n\t\t\ttrailingExports.push(`exports.${name} = ${name};`);\n\t\t\treturn `\\n${indent}${decl}`;\n\t\t}\n\t);\n\n\t// export { a, b as c } (local)\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)export\\s*\\{([^}]+)\\}[ \\t]*;?/g,\n\t\t(match, _indent, names) => {\n\t\t\tif (names.includes('${')) return match;\n\t\t\tnames.split(',').forEach((s: string) => {\n\t\t\t\tconst parts = s.trim().split(/\\s+as\\s+/);\n\t\t\t\tconst local = parts[0].trim();\n\t\t\t\tconst exported = parts.length === 2 ? parts[1].trim() : local;\n\t\t\t\tif (!local) return;\n\t\t\t\tconst src = importSources.get(local);\n\t\t\t\tif (src) {\n\t\t\t\t\ttrailingExports.push(`Object.defineProperty(exports, '${exported}', { get: function() { return ${src.modRef}.${src.prop}; }, enumerable: true, configurable: true });`);\n\t\t\t\t} else {\n\t\t\t\t\ttrailingExports.push(`exports.${exported} = ${local};`);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn '';\n\t\t}\n\t);\n\n\t// Dynamic import() with string literal\n\tresult = result.replace(\n\t\t/(?<!\\.)(?<!\\w)\\bimport\\s*\\(\\s*(['\"][^'\"]+['\"])\\s*\\)/g,\n\t\t(_match, mod) => `Promise.resolve(require(${mod}))`\n\t);\n\n\t// Dynamic import() with expression\n\t{\n\t\tlet i = 0;\n\t\tlet out = '';\n\t\twhile (i < result.length) {\n\t\t\tconst importIdx = result.indexOf('import(', i);\n\t\t\tif (importIdx === -1) { out += result.slice(i); break; }\n\t\t\tif (importIdx > 0 && /[\\w$.]/.test(result[importIdx - 1])) {\n\t\t\t\tout += result.slice(i, importIdx + 7);\n\t\t\t\ti = importIdx + 7;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t{\n\t\t\t\tlet depth = 1;\n\t\t\t\tlet k = importIdx + 7;\n\t\t\t\twhile (k < result.length && depth > 0) {\n\t\t\t\t\tif (result[k] === '(') depth++;\n\t\t\t\t\telse if (result[k] === ')') depth--;\n\t\t\t\t\tk++;\n\t\t\t\t}\n\t\t\t\tif (depth === 0) {\n\t\t\t\t\tlet afterClose = k;\n\t\t\t\t\twhile (afterClose < result.length && /[ \\t]/.test(result[afterClose])) afterClose++;\n\t\t\t\t\tif (result[afterClose] === '{') {\n\t\t\t\t\t\tout += result.slice(i, importIdx + 7);\n\t\t\t\t\t\ti = importIdx + 7;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tout += result.slice(i, importIdx);\n\t\t\tlet depth = 1;\n\t\t\tlet j = importIdx + 7;\n\t\t\twhile (j < result.length && depth > 0) {\n\t\t\t\tif (result[j] === '(') depth++;\n\t\t\t\telse if (result[j] === ')') depth--;\n\t\t\t\tj++;\n\t\t\t}\n\t\t\tif (depth === 0) {\n\t\t\t\tconst arg = result.slice(importIdx + 7, j - 1);\n\t\t\t\tout += `Promise.resolve().then(function() { return require(${arg}); })`;\n\t\t\t} else {\n\t\t\t\tout += result.slice(importIdx, j);\n\t\t\t}\n\t\t\ti = j;\n\t\t}\n\t\tresult = out;\n\t}\n\n\t// Replace const/let of CJS wrapper params with var\n\tresult = result.replace(\n\t\t/\\b(const|let)\\s+(__dirname|__filename|exports|require|module|console|process|Buffer|global)\\b/g,\n\t\t(_match, _kw, name) => `var ${name}`\n\t);\n\n\tif (trailingExports.length > 0) {\n\t\tresult += '\\n' + trailingExports.join('\\n');\n\t}\n\n\tresult = unmaskStringLiterals(result, literals);\n\n\treturn result;\n}\n\n/**\n * Transform source to CJS if it's detected as ESM.\n *\n * `import.meta` is ALWAYS replaced regardless of ESM detection because\n * `new Function()` cannot parse it (syntax error). CJS bundles like\n * Vite's config.js use `createRequire(import.meta.url)` without being ESM.\n */\nexport function transformToCjs(\n\tsource: string,\n\tfilename: string,\n\tvfs?: { exists(p: string): boolean; readFileString(p: string): string },\n): { code: string; wasEsm: boolean } {\n\tif (shouldTreatAsEsm(source, filename, vfs)) {\n\t\treturn { code: transformEsmToCjs(source), wasEsm: true };\n\t}\n\t// Always replace import.meta even in non-ESM files — new Function()\n\t// cannot parse import.meta syntax at all.\n\tconst code = replaceImportMetaInCode(source);\n\treturn { code, 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 IVfs,\n NodeRunnerOptions,\n RunResult,\n ModuleFactory,\n ScriptConsole,\n CommandOutputStream,\n} from \"./types.js\";\nimport {\n createBuiltinModules,\n createCaptureConsole,\n createStreamConsole,\n createMinimalProcess,\n ProcessExitError,\n} from \"./builtins.js\";\nimport { resolveModule } from \"./resolver.js\";\nimport { transformToCjs } from \"./transformer.js\";\n\nconst textEncoder = new TextEncoder();\n\n/** Strip shebang line (e.g. #!/usr/bin/env node) */\nfunction stripShebang(src: string): string {\n if (src.charCodeAt(0) === 0x23 /* # */ && src.charCodeAt(1) === 0x21 /* ! */) {\n const nl = src.indexOf('\\n');\n if (nl === -1) return '';\n return '\\n' + src.slice(nl + 1);\n }\n return src;\n}\n\nexport class NodeRunner {\n readonly vfs: IVfs;\n private moduleMapFactory?: Record<string, () => unknown>;\n private nodeCompat?: NodeRunnerOptions[\"nodeCompat\"];\n private env: Record<string, string>;\n private cwd: string;\n private argv: string[];\n private stdout?: CommandOutputStream;\n private stderr?: CommandOutputStream;\n private signal?: AbortSignal;\n private globalShims?: Record<string, unknown>;\n\n /** Module cache from the last execution. Can be inspected by the caller. */\n readonly moduleCache = new Map<string, unknown>();\n\n constructor(options: NodeRunnerOptions) {\n 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 { IVfs } from \"./types.js\";\n\n/** Minimal path module (always available, no node-compat needed) */\nconst minimalPath = {\n join(...parts: string[]): string {\n const joined = parts.join(\"/\").replace(/\\/+/g, \"/\");\n return minimalPath.normalize(joined);\n },\n normalize(p: string): string {\n const parts = p.split(\"/\");\n const result: string[] = [];\n for (const part of parts) {\n if (part === \"..\") {\n result.pop();\n } else if (part !== \".\" && part !== \"\") {\n result.push(part);\n }\n }\n return (p.startsWith(\"/\") ? \"/\" : \"\") + result.join(\"/\");\n },\n dirname(p: string): string {\n const idx = p.lastIndexOf(\"/\");\n if (idx === -1) return \".\";\n if (idx === 0) return \"/\";\n return p.slice(0, idx);\n },\n basename(p: string, ext?: string): string {\n const base = p.slice(p.lastIndexOf(\"/\") + 1);\n if (ext && base.endsWith(ext)) return base.slice(0, -ext.length);\n return base;\n },\n extname(p: string): string {\n const base = minimalPath.basename(p);\n const dot = base.lastIndexOf(\".\");\n if (dot <= 0) return \"\";\n return base.slice(dot);\n },\n resolve(...parts: string[]): string {\n let resolved = \"\";\n for (let i = parts.length - 1; i >= 0; i--) {\n resolved = parts[i] + \"/\" + resolved;\n if (parts[i].startsWith(\"/\")) break;\n }\n return minimalPath.normalize(resolved);\n },\n isAbsolute(p: string): boolean {\n return p.startsWith(\"/\");\n },\n sep: \"/\",\n delimiter: \":\",\n posix: null as unknown,\n};\nminimalPath.posix = minimalPath;\n\n/** Format args for console output */\nfunction formatArgs(...args: unknown[]): string {\n return args\n .map((a) =>\n typeof a === \"string\" ? a : JSON.stringify(a, null, 2) ?? String(a),\n )\n .join(\" \");\n}\n\n/** Create a console that captures output to arrays */\nexport function createCaptureConsole(\n stdout: string[],\n stderr: string[],\n): ScriptConsole {\n return {\n log: (...args) => stdout.push(formatArgs(...args)),\n error: (...args) => stderr.push(formatArgs(...args)),\n warn: (...args) => stderr.push(formatArgs(...args)),\n info: (...args) => stdout.push(formatArgs(...args)),\n debug: (...args) => stdout.push(formatArgs(...args)),\n };\n}\n\n/** Create a console that streams output to writable streams */\nexport function createStreamConsole(\n stdout: CommandOutputStream,\n stderr: CommandOutputStream,\n): ScriptConsole {\n return {\n log: (...args) => stdout.write(formatArgs(...args) + \"\\n\"),\n error: (...args) => stderr.write(formatArgs(...args) + \"\\n\"),\n warn: (...args) => stderr.write(formatArgs(...args) + \"\\n\"),\n info: (...args) => stdout.write(formatArgs(...args) + \"\\n\"),\n debug: (...args) => stdout.write(formatArgs(...args) + \"\\n\"),\n };\n}\n\n/** Minimal process object (always available) */\nexport function createMinimalProcess(\n env: Record<string, string>,\n cwd: string,\n argv: string[],\n stdout?: CommandOutputStream,\n stderr?: CommandOutputStream,\n) {\n return {\n env,\n cwd: () => cwd,\n argv: [\"node\", ...argv],\n exit: (code?: number) => {\n throw new ProcessExitError(code ?? 0);\n },\n platform: \"browser\" as const,\n arch: \"wasm\" as const,\n version: \"v20.0.0\",\n versions: { node: \"20.0.0\" },\n pid: 1,\n ppid: 0,\n stdout: {\n write: (s: string) => {\n if (stdout) stdout.write(String(s));\n return true;\n },\n },\n stderr: {\n write: (s: string) => {\n if (stderr) stderr.write(String(s));\n return true;\n },\n },\n nextTick: (fn: () => void) => Promise.resolve().then(fn),\n hrtime: {\n bigint: () => BigInt(Math.round(performance.now() * 1e6)),\n },\n };\n}\n\nexport class ProcessExitError extends Error {\n readonly code: number;\n constructor(code: number) {\n super(`process.exit(${code})`);\n this.name = \"ProcessExitError\";\n this.code = code;\n }\n}\n\n/** Build the builtin module map from simple NodeCompatModules */\nexport function createBuiltinModules(\n _vfs: IVfs,\n env: Record<string, string>,\n cwd: string,\n argv: string[],\n scriptConsole: ScriptConsole,\n nodeCompat?: NodeCompatModules,\n stdout?: CommandOutputStream,\n stderr?: CommandOutputStream,\n): Map<string, unknown> {\n const builtins = new Map<string, unknown>();\n\n builtins.set(\"path\", nodeCompat?.path ?? minimalPath);\n\n const process = nodeCompat?.process ?? createMinimalProcess(env, cwd, argv, stdout, stderr);\n builtins.set(\"process\", process);\n builtins.set(\"console\", scriptConsole);\n\n if (nodeCompat?.fs) builtins.set(\"fs\", nodeCompat.fs);\n if (nodeCompat?.fsPromises) builtins.set(\"fs/promises\", nodeCompat.fsPromises);\n if (nodeCompat?.events) builtins.set(\"events\", nodeCompat.events);\n if (nodeCompat?.buffer) builtins.set(\"buffer\", nodeCompat.buffer);\n if (nodeCompat?.util) builtins.set(\"util\", nodeCompat.util);\n if (nodeCompat?.timers) builtins.set(\"timers\", nodeCompat.timers);\n if (nodeCompat?.assert) builtins.set(\"assert\", nodeCompat.assert);\n if (nodeCompat?.os) builtins.set(\"os\", nodeCompat.os);\n if (nodeCompat?.stream) builtins.set(\"stream\", nodeCompat.stream);\n if (nodeCompat?.url) builtins.set(\"url\", nodeCompat.url);\n if (nodeCompat?.crypto) builtins.set(\"crypto\", nodeCompat.crypto);\n\n return builtins;\n}\n","import type { IVfs } from \"./types.js\";\nimport type { ResolvedModule } from \"./types.js\";\n\nconst textDecoder = new TextDecoder();\n\n/** Resolve and load a module from the VFS */\nexport function resolveModule(\n vfs: IVfs,\n id: string,\n fromDir: string,\n): ResolvedModule | null {\n // Subpath imports (#specifier)\n if (id.startsWith('#')) {\n return resolvePackageImport(vfs, id, fromDir);\n }\n\n // Relative/absolute path\n if (id.startsWith(\"./\") || id.startsWith(\"../\") || id.startsWith(\"/\")) {\n return resolveRelative(vfs, id, fromDir);\n }\n\n // Bare specifier → node_modules resolution\n return resolveNodeModule(vfs, id, fromDir);\n}\n\nfunction resolveRelative(\n vfs: IVfs,\n id: string,\n fromDir: string,\n): ResolvedModule | null {\n const absPath = id.startsWith(\"/\") ? id : normalizePath(fromDir + \"/\" + id);\n return resolveFile(vfs, absPath);\n}\n\nfunction resolveFile(vfs: IVfs, absPath: string): ResolvedModule | null {\n // Try exact path\n if (vfs.exists(absPath)) {\n try {\n const stat = vfs.stat(absPath);\n if (stat.type === 'file') {\n const source = textDecoder.decode(vfs.readFile(absPath));\n return { path: absPath, source };\n }\n if (stat.type === 'directory') {\n const fromPkg = tryPackageMain(vfs, absPath);\n if (fromPkg) return fromPkg;\n const fromIndex = tryIndexFile(vfs, absPath);\n if (fromIndex) return fromIndex;\n }\n } catch { /* fall through */ }\n }\n\n // Try with extensions\n for (const ext of ['.js', '.ts', '.mjs', '.json']) {\n const candidate = absPath + ext;\n try {\n if (vfs.exists(candidate) && vfs.stat(candidate).type === 'file') {\n const source = textDecoder.decode(vfs.readFile(candidate));\n return { path: candidate, source };\n }\n } catch { /* continue */ }\n }\n\n return null;\n}\n\nfunction resolveNodeModule(\n vfs: IVfs,\n name: string,\n fromDir: string,\n): ResolvedModule | null {\n let packageName: string;\n let subpath: string | null = null;\n\n if (name.startsWith('@')) {\n const parts = name.split('/');\n if (parts.length < 2) return null;\n packageName = parts[0] + '/' + parts[1];\n if (parts.length > 2) subpath = parts.slice(2).join('/');\n } else {\n const slashIdx = name.indexOf('/');\n if (slashIdx !== -1) {\n packageName = name.slice(0, slashIdx);\n subpath = name.slice(slashIdx + 1);\n } else {\n packageName = name;\n }\n }\n\n // Walk up directory tree\n let current = fromDir;\n for (; ;) {\n const candidate = normalizePath(current + '/node_modules/' + packageName);\n if (vfs.exists(candidate)) {\n const resolved = resolvePackageEntry(vfs, candidate, subpath);\n if (resolved) return resolved;\n }\n const parent = current.slice(0, current.lastIndexOf('/'));\n if (parent === current || parent === '') break;\n current = parent;\n }\n\n // Global fallbacks\n for (const globalDir of ['/usr/lib/node_modules', '/usr/share/pkg/node_modules']) {\n const candidate = normalizePath(globalDir + '/' + packageName);\n if (vfs.exists(candidate)) {\n const resolved = resolvePackageEntry(vfs, candidate, subpath);\n if (resolved) return resolved;\n }\n }\n\n return null;\n}\n\nfunction resolveExportsCondition(value: unknown): string | null {\n if (typeof value === 'string') return value;\n if (value && typeof value === 'object' && !Array.isArray(value)) {\n const cond = value as Record<string, unknown>;\n if (typeof cond.require === 'string') return cond.require;\n if (typeof cond.default === 'string') return cond.default;\n if (typeof cond.import === 'string') return cond.import;\n for (const key of Object.keys(cond)) {\n if (key === 'types') continue;\n const nested = resolveExportsCondition(cond[key]);\n if (nested) return nested;\n }\n }\n return null;\n}\n\nfunction resolvePackageEntry(\n vfs: IVfs,\n pkgDir: string,\n subpath: string | null,\n): ResolvedModule | null {\n const pkgJsonPath = pkgDir + '/package.json';\n let pkgJson: Record<string, unknown> | null = null;\n if (vfs.exists(pkgJsonPath)) {\n try {\n pkgJson = JSON.parse(textDecoder.decode(vfs.readFile(pkgJsonPath)));\n } catch { /* ignore */ }\n }\n\n if (subpath) {\n // Check exports map\n if (pkgJson?.exports && typeof pkgJson.exports === 'object') {\n const exportsMap = pkgJson.exports as Record<string, unknown>;\n const key = './' + subpath;\n if (key in exportsMap) {\n const target = resolveExportsCondition(exportsMap[key]);\n if (target) {\n const resolved = resolveFile(vfs, normalizePath(pkgDir + '/' + target));\n if (resolved) return resolved;\n }\n }\n // Subpath patterns (./* → ./dist/*)\n for (const pattern of Object.keys(exportsMap)) {\n if (pattern.endsWith('/*') && key.startsWith(pattern.slice(0, -1))) {\n const targetPattern = resolveExportsCondition(exportsMap[pattern]);\n if (targetPattern && targetPattern.endsWith('/*')) {\n const suffix = key.slice(pattern.length - 1);\n const target = targetPattern.slice(0, -1) + suffix;\n const resolved = resolveFile(vfs, normalizePath(pkgDir + '/' + target));\n if (resolved) return resolved;\n }\n }\n }\n }\n return resolveFile(vfs, normalizePath(pkgDir + '/' + subpath));\n }\n\n // Root entry resolution\n if (pkgJson?.exports) {\n const exportsVal = pkgJson.exports;\n let rootExport: unknown = null;\n if (typeof exportsVal === 'string') {\n rootExport = exportsVal;\n } else if (typeof exportsVal === 'object' && !Array.isArray(exportsVal)) {\n const exportsMap = exportsVal as Record<string, unknown>;\n rootExport = exportsMap['.'] ?? null;\n if (!rootExport && ('require' in exportsMap || 'import' in exportsMap || 'default' in exportsMap)) {\n rootExport = exportsMap;\n }\n }\n if (rootExport) {\n const target = resolveExportsCondition(rootExport);\n if (target) {\n const resolved = resolveFile(vfs, normalizePath(pkgDir + '/' + target));\n if (resolved) return resolved;\n }\n }\n }\n\n if (pkgJson?.main && typeof pkgJson.main === 'string') {\n const resolved = resolveFile(vfs, normalizePath(pkgDir + '/' + pkgJson.main));\n if (resolved) return resolved;\n }\n\n return tryIndexFile(vfs, pkgDir);\n}\n\nfunction resolvePackageImport(\n vfs: IVfs,\n name: string,\n fromDir: string,\n): ResolvedModule | null {\n let current = fromDir;\n for (; ;) {\n const pkgPath = current + '/package.json';\n if (vfs.exists(pkgPath)) {\n try {\n const pkg = JSON.parse(textDecoder.decode(vfs.readFile(pkgPath)));\n if (pkg.imports && typeof pkg.imports === 'object') {\n const importsMap = pkg.imports as Record<string, unknown>;\n if (name in importsMap) {\n const target = resolveExportsCondition(importsMap[name]);\n if (target) {\n return resolveFile(vfs, normalizePath(current + '/' + target));\n }\n }\n }\n } catch { /* ignore parse errors */ }\n break;\n }\n const parent = current.slice(0, current.lastIndexOf('/'));\n if (parent === current || parent === '') break;\n current = parent;\n }\n return null;\n}\n\nfunction tryPackageMain(vfs: IVfs, dirPath: string): ResolvedModule | null {\n const pkgPath = dirPath + \"/package.json\";\n try {\n if (!vfs.exists(pkgPath)) return null;\n const raw = textDecoder.decode(vfs.readFile(pkgPath));\n const pkg = JSON.parse(raw);\n const main = pkg.main || pkg.module || \"index.js\";\n return resolveModule(vfs, \"./\" + main, dirPath);\n } catch {\n return null;\n }\n}\n\nfunction tryIndexFile(vfs: IVfs, dirPath: string): ResolvedModule | null {\n for (const name of [\"index.js\", \"index.ts\", \"index.mjs\", \"index.json\"]) {\n const fullPath = dirPath + \"/\" + name;\n try {\n if (!vfs.exists(fullPath)) continue;\n const source = textDecoder.decode(vfs.readFile(fullPath));\n return { path: fullPath, source };\n } catch {\n continue;\n }\n }\n return null;\n}\n\nfunction normalizePath(p: string): string {\n const parts = p.split(\"/\");\n const result: string[] = [];\n for (const part of parts) {\n if (part === \"..\") result.pop();\n else if (part !== \".\" && part !== \"\") result.push(part);\n }\n return (p.startsWith(\"/\") ? \"/\" : \"\") + result.join(\"/\");\n}\n","/**\n * ES module → CommonJS syntax transformer.\n *\n * Rewrites import/export statements to require() / module.exports without\n * resolving or inlining any dependencies. All resolution happens at runtime\n * inside the virtual require() runtime.\n *\n * Supported:\n * import defaultExport from \"mod\"\n * import * as ns from \"mod\"\n * import { x, y as z } from \"mod\"\n * import defaultExport, { x } from \"mod\"\n * import defaultExport, * as ns from \"mod\"\n * import \"mod\" (side-effect)\n * import type { … } from \"mod\" (stripped — TypeScript)\n * export default <expr | function | class>\n * export function / class / const / let / var NAME\n * export { x, y as z }\n * export { x } from \"mod\"\n * export * from \"mod\"\n * export type { … } (stripped — TypeScript)\n * import(\"mod\") → Promise.resolve(require(\"mod\"))\n * import(expr) → Promise.resolve().then(() => require(expr))\n * import.meta.url / dirname / filename / resolve / require\n */\n\n// ── Helpers ──────────────────────────────────────────────────────────────────\n\n// Names that collide with the new Function() CJS wrapper parameters.\nconst CJS_WRAPPER_PARAMS = new Set([\n\t'exports', 'require', 'module', '__filename', '__dirname',\n\t'console', 'process', 'Buffer', 'setTimeout', 'setInterval',\n\t'clearTimeout', 'clearInterval', 'global',\n\t'__importMetaUrl', '__importMeta', '__importMetaResolve',\n]);\n\nfunction cjsDecl(name: string): string {\n\treturn CJS_WRAPPER_PARAMS.has(name) ? 'var' : 'const';\n}\n\n// ── Minimal path helpers (self-contained) ────────────────────────────────────\n\nfunction dirname(p: string): string {\n\tconst idx = p.lastIndexOf('/');\n\tif (idx === -1) return '.';\n\tif (idx === 0) return '/';\n\treturn p.slice(0, idx);\n}\n\nfunction join(...parts: string[]): string {\n\tconst joined = parts.join('/').replace(/\\/+/g, '/');\n\treturn normalize(joined);\n}\n\nfunction extname(p: string): string {\n\tconst base = p.slice(p.lastIndexOf('/') + 1);\n\tconst dot = base.lastIndexOf('.');\n\tif (dot <= 0) return '';\n\treturn base.slice(dot);\n}\n\nfunction normalize(p: string): string {\n\tconst parts = p.split('/');\n\tconst result: string[] = [];\n\tfor (const part of parts) {\n\t\tif (part === '..') result.pop();\n\t\telse if (part !== '.' && part !== '') result.push(part);\n\t}\n\treturn (p.startsWith('/') ? '/' : '') + result.join('/');\n}\n\n// ── Context-aware import.meta replacement ────────────────────────────────────\n\n/**\n * Replace `import.meta.*` references only in code context, leaving string\n * and template literal text untouched. Template `${…}` expressions are\n * treated as code (replacements apply). This avoids corrupting generated\n * code inside template strings (e.g. Vite emits `import.meta.hot` in\n * template literals that are served to the browser).\n */\nfunction replaceImportMetaInCode(src: string): string {\n\tconst len = src.length;\n\tlet out = '';\n\tlet i = 0;\n\n\tfunction tryReplace(): boolean {\n\t\tif (i + 11 > len || src[i] !== 'i') return false;\n\t\tif (!src.startsWith('import.meta', i)) return false;\n\t\tconst after = i + 11;\n\t\tif (src.startsWith('.url', after)) { out += '__importMetaUrl'; i = after + 4; return true; }\n\t\tif (src.startsWith('.dirname', after)) { out += '__dirname'; i = after + 8; return true; }\n\t\tif (src.startsWith('.filename', after)) { out += '__filename'; i = after + 9; return true; }\n\t\tif (src.startsWith('.require', after)) { out += 'require'; i = after + 8; return true; }\n\t\tif (src.startsWith('.resolve', after)) { out += '__importMetaResolve'; i = after + 8; return true; }\n\t\tout += '__importMeta'; i = after; return true;\n\t}\n\n\tfunction processCode(): void {\n\t\twhile (i < len) {\n\t\t\tconst ch = src[i];\n\n\t\t\t// Single-line comment — copy verbatim\n\t\t\tif (ch === '/' && i + 1 < len && src[i + 1] === '/') {\n\t\t\t\tconst nl = src.indexOf('\\n', i);\n\t\t\t\tconst end = nl === -1 ? len : nl;\n\t\t\t\tout += src.slice(i, end);\n\t\t\t\ti = end;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// Multi-line comment — copy verbatim\n\t\t\tif (ch === '/' && i + 1 < len && src[i + 1] === '*') {\n\t\t\t\tconst end = src.indexOf('*/', i + 2);\n\t\t\t\tconst close = end === -1 ? len : end + 2;\n\t\t\t\tout += src.slice(i, close);\n\t\t\t\ti = close;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Simple string literals — copy verbatim (no import.meta inside)\n\t\t\tif (ch === '\"' || ch === \"'\") {\n\t\t\t\tconst start = i;\n\t\t\t\ti++;\n\t\t\t\twhile (i < len && src[i] !== ch) {\n\t\t\t\t\tif (src[i] === '\\\\') i++;\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t\tif (i < len) i++; // closing quote\n\t\t\t\tout += src.slice(start, i);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Template literal — text parts verbatim, ${} expressions as code\n\t\t\tif (ch === '`') {\n\t\t\t\tprocessTemplate();\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// import.meta replacement in code\n\t\t\tif (ch === 'i' && tryReplace()) continue;\n\n\t\t\tout += ch;\n\t\t\ti++;\n\t\t}\n\t}\n\n\tfunction processTemplate(): void {\n\t\tout += src[i]; // opening backtick\n\t\ti++;\n\t\twhile (i < len) {\n\t\t\tif (src[i] === '\\\\') {\n\t\t\t\tout += src[i] + (i + 1 < len ? src[i + 1] : '');\n\t\t\t\ti += 2;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (src[i] === '`') {\n\t\t\t\tout += '`';\n\t\t\t\ti++;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// ${...} expression — process as code\n\t\t\tif (src[i] === '$' && i + 1 < len && src[i + 1] === '{') {\n\t\t\t\tout += '${';\n\t\t\t\ti += 2;\n\t\t\t\tprocessTemplateExpression();\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// Template text — copy verbatim\n\t\t\tout += src[i];\n\t\t\ti++;\n\t\t}\n\t}\n\n\tfunction processTemplateExpression(): void {\n\t\tlet depth = 1;\n\t\twhile (i < len && depth > 0) {\n\t\t\tconst ch = src[i];\n\t\t\tif (ch === '{') { out += ch; i++; depth++; continue; }\n\t\t\tif (ch === '}') { depth--; if (depth === 0) { out += '}'; i++; return; } out += ch; i++; continue; }\n\n\t\t\t// Handle strings inside expressions\n\t\t\tif (ch === '\"' || ch === \"'\") {\n\t\t\t\tconst start = i; i++;\n\t\t\t\twhile (i < len && src[i] !== ch) { if (src[i] === '\\\\') i++; i++; }\n\t\t\t\tif (i < len) i++;\n\t\t\t\tout += src.slice(start, i);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// Nested template literal inside expression\n\t\t\tif (ch === '`') { processTemplate(); continue; }\n\t\t\t// Comments inside expressions\n\t\t\tif (ch === '/' && i + 1 < len && src[i + 1] === '/') {\n\t\t\t\tconst nl = src.indexOf('\\n', i); const end = nl === -1 ? len : nl;\n\t\t\t\tout += src.slice(i, end); i = end; continue;\n\t\t\t}\n\t\t\tif (ch === '/' && i + 1 < len && src[i + 1] === '*') {\n\t\t\t\tconst end = src.indexOf('*/', i + 2); const close = end === -1 ? len : end + 2;\n\t\t\t\tout += src.slice(i, close); i = close; continue;\n\t\t\t}\n\t\t\t// import.meta replacement in expression code\n\t\t\tif (ch === 'i' && tryReplace()) continue;\n\n\t\t\tout += ch;\n\t\t\ti++;\n\t\t}\n\t}\n\n\tprocessCode();\n\treturn out;\n}\n\n// ── String literal masking ───────────────────────────────────────────────────\n\nfunction maskStringLiterals(src: string): { masked: string; literals: string[] } {\n\tconst literals: string[] = [];\n\tlet masked = '';\n\tlet i = 0;\n\n\twhile (i < src.length) {\n\t\tconst ch = src[i];\n\n\t\tif (ch === '/' && i + 1 < src.length && src[i + 1] === '/') {\n\t\t\tconst nl = src.indexOf('\\n', i);\n\t\t\tconst end = nl === -1 ? src.length : nl;\n\t\t\tmasked += src.slice(i, end);\n\t\t\ti = end;\n\t\t\tcontinue;\n\t\t}\n\t\tif (ch === '/' && i + 1 < src.length && src[i + 1] === '*') {\n\t\t\tconst end = src.indexOf('*/', i + 2);\n\t\t\tconst close = end === -1 ? src.length : end + 2;\n\t\t\tmasked += src.slice(i, close);\n\t\t\ti = close;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch === '/' && i + 1 < src.length && src[i + 1] !== '/' && src[i + 1] !== '*') {\n\t\t\tlet k = i - 1;\n\t\t\twhile (k >= 0 && (src[k] === ' ' || src[k] === '\\t' || src[k] === '\\n' || src[k] === '\\r')) k--;\n\t\t\tconst prev = k >= 0 ? src[k] : '\\0';\n\t\t\tif ('\\0=([{,;!&|^~?:+-*%<>/)]}'.includes(prev) ||\n\t\t\t\t(k >= 1 && /\\b(?:return|typeof|void|delete|throw|new|case|of|in|yield|await)\\s*$/.test(src.slice(Math.max(0, k - 11), k + 1)))) {\n\t\t\t\tconst regStart = i;\n\t\t\t\ti++;\n\t\t\t\twhile (i < src.length && src[i] !== '\\n') {\n\t\t\t\t\tif (src[i] === '\\\\') { i += 2; continue; }\n\t\t\t\t\tif (src[i] === '/') { i++; break; }\n\t\t\t\t\tif (src[i] === '[') {\n\t\t\t\t\t\ti++;\n\t\t\t\t\t\twhile (i < src.length && src[i] !== ']' && src[i] !== '\\n') {\n\t\t\t\t\t\t\tif (src[i] === '\\\\') i++;\n\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (i < src.length && src[i] === ']') i++;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t\twhile (i < src.length && /[gimsuyv]/.test(src[i])) i++;\n\t\t\t\tmasked += src.slice(regStart, i);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tif (ch === '\"' || ch === \"'\" || ch === '`') {\n\t\t\tconst start = i;\n\t\t\tconst quote = ch;\n\t\t\ti++;\n\t\t\twhile (i < src.length) {\n\t\t\t\tif (src[i] === '\\\\') { i += 2; continue; }\n\t\t\t\tif (src[i] === quote) { i++; break; }\n\t\t\t\tif (quote === '`' && src[i] === '$' && i + 1 < src.length && src[i + 1] === '{') {\n\t\t\t\t\tlet depth = 1;\n\t\t\t\t\ti += 2;\n\t\t\t\t\twhile (i < src.length && depth > 0) {\n\t\t\t\t\t\tif (src[i] === '{') depth++;\n\t\t\t\t\t\telse if (src[i] === '}') depth--;\n\t\t\t\t\t\telse if (src[i] === '\\\\') i++;\n\t\t\t\t\t\telse if (src[i] === \"'\" || src[i] === '\"') {\n\t\t\t\t\t\t\tconst q = src[i]; i++;\n\t\t\t\t\t\t\twhile (i < src.length && src[i] !== q) {\n\t\t\t\t\t\t\t\tif (src[i] === '\\\\') i++;\n\t\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (i < src.length) i++;\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t} else if (src[i] === '`') {\n\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t\twhile (i < src.length && src[i] !== '`') {\n\t\t\t\t\t\t\t\tif (src[i] === '\\\\') i++;\n\t\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (i < src.length) i++;\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ti++;\n\t\t\t\t\t}\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\ti++;\n\t\t\t}\n\n\t\t\tconst literal = src.slice(start, i);\n\t\t\tconst idx = literals.length;\n\t\t\tliterals.push(literal);\n\t\t\tmasked += quote + '__LIFO_S' + idx + '__' + quote;\n\t\t\tcontinue;\n\t\t}\n\n\t\tmasked += ch;\n\t\ti++;\n\t}\n\n\treturn { masked, literals };\n}\n\nfunction unmaskStringLiterals(src: string, literals: string[]): string {\n\treturn src.replace(\n\t\t/(['\"`])__LIFO_S(\\d+)__\\1/g,\n\t\t(_match, _quote, idxStr) => literals[parseInt(idxStr, 10)]\n\t);\n}\n\n// ── ESM detection ────────────────────────────────────────────────────────────\n\nfunction isEsmSource(source: string): boolean {\n\treturn /(?:^|\\n|;)\\s*(?:import\\s*[\\w{*('\".]|export\\s+|export\\s*\\{)/.test(source);\n}\n\n/**\n * Determine if source should be treated as ESM based on filename, content,\n * and package.json type field.\n */\nconst JS_LIKE_EXTENSIONS = new Set([\n\t'.js', '.ts', '.jsx', '.tsx', '.mjs', '.mts', '.cjs', '.cts', '',\n]);\n\nexport function shouldTreatAsEsm(\n\tsource: string,\n\tfilename: string,\n\tvfs?: { exists(p: string): boolean; readFileString(p: string): string },\n): boolean {\n\tconst ext = extname(filename);\n\tif (ext === '.mjs' || ext === '.mts') return true;\n\tif (ext === '.cjs' || ext === '.cts') return false;\n\t// Non-JS files (.css, .html, .json, etc.) should never be treated as ESM\n\tif (!JS_LIKE_EXTENSIONS.has(ext)) return false;\n\tif (vfs && ext === '.js') {\n\t\tlet dir = dirname(filename);\n\t\tfor (; ;) {\n\t\t\tconst pkgPath = join(dir, 'package.json');\n\t\t\tif (vfs.exists(pkgPath)) {\n\t\t\t\ttry {\n\t\t\t\t\tconst pkg = JSON.parse(vfs.readFileString(pkgPath));\n\t\t\t\t\tif (pkg.type === 'module') return true;\n\t\t\t\t\tif (pkg.type === 'commonjs') return false;\n\t\t\t\t} catch { /* ignore */ }\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tconst parent = dirname(dir);\n\t\t\tif (parent === dir) break;\n\t\t\tdir = parent;\n\t\t}\n\t}\n\treturn isEsmSource(source);\n}\n\n// ── Main transform ───────────────────────────────────────────────────────────\n\n/**\n * Transform ESM import/export syntax to CJS require/exports equivalents.\n */\nexport function transformEsmToCjs(source: string): string {\n\tlet result = source.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n\n\t// Context-aware import.meta replacement: replaces in code only,\n\t// leaves string/template literal text untouched.\n\tresult = replaceImportMetaInCode(result);\n\n\t// Mask string/template literals for import/export regex transforms\n\tconst { masked, literals } = maskStringLiterals(result);\n\n\tresult = masked;\n\tresult = result.replace(\n\t\t/;([ \\t]*(?:import\\s*[\\w${*('\".]|export[\\s{*]))/g,\n\t\t';\\n$1'\n\t);\n\tconst trailingExports: string[] = [];\n\tlet hasDefaultExport = false;\n\tlet hasNamedExport = false;\n\tconst importSources = new Map<string, { modRef: string; prop: string }>();\n\n\thasDefaultExport = /(?:^|\\n)\\s*export\\s+default\\s+/.test(result);\n\thasNamedExport = /(?:^|\\n)\\s*export\\s+(?:const|let|var|function|class|\\{|\\*\\s+from)/.test(result);\n\n\t// Strip type-only imports/exports (TypeScript)\n\tresult = result.replace(/^[ \\t]*import\\s+type\\s+.*?from\\s+(['\"`]).*?\\1[ \\t]*;?$/gm, '');\n\tresult = result.replace(/^[ \\t]*export\\s+type\\s+\\{[^}]*\\}(?:\\s+from\\s+(['\"`]).*?\\1)?[ \\t]*;?$/gm, '');\n\tresult = result.replace(/^[ \\t]*export\\s+type\\s+\\*\\s+from\\s+(['\"`]).*?\\1[ \\t]*;?$/gm, '');\n\n\t// Combined: import X, { a, b as c } from 'mod'\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)import\\s+([\\w$]+)\\s*,\\s*\\{([^}]+)\\}\\s*from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(match, indent, defaultName, imports, mod) => {\n\t\t\tif (imports.includes('${')) return match;\n\t\t\tconst tmp = '__mod_' + defaultName;\n\t\t\tconst mapped = imports.split(',').map((s: string) => {\n\t\t\t\tconst parts = s.trim().split(/\\s+as\\s+/);\n\t\t\t\tconst sourceProp = parts[0].trim();\n\t\t\t\tconst localName = parts.length === 2 ? parts[1].trim() : sourceProp;\n\t\t\t\tif (localName) importSources.set(localName, { modRef: tmp, prop: sourceProp });\n\t\t\t\tif (parts.length === 2) return `${sourceProp}: ${localName}`;\n\t\t\t\treturn sourceProp;\n\t\t\t}).filter((s: string) => s).join(', ');\n\t\t\treturn `\\n${indent}${cjsDecl(tmp)} ${tmp} = require(${mod});\\n${indent}${cjsDecl(defaultName)} ${defaultName} = ${tmp}.default || ${tmp};\\n${indent}const { ${mapped} } = ${tmp};`;\n\t\t}\n\t);\n\n\t// Combined: import X, * as Y from 'mod'\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)import\\s+([\\w$]+)\\s*,\\s*\\*\\s*as\\s+([\\w$]+)\\s+from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(_match, indent, defaultName, nsName, mod) => {\n\t\t\treturn `\\n${indent}${cjsDecl(nsName)} ${nsName} = require(${mod});\\n${indent}${cjsDecl(defaultName)} ${defaultName} = ${nsName}.default || ${nsName};`;\n\t\t}\n\t);\n\n\t// import { a, b as c } from 'mod'\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)import\\s*\\{([^}]+)\\}\\s*from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(match, indent, imports, mod) => {\n\t\t\tif (imports.includes('${')) return match;\n\t\t\tconst modRef = '__imp_' + Math.random().toString(36).slice(2, 8);\n\t\t\tconst mapped = imports.split(',').map((s: string) => {\n\t\t\t\tconst parts = s.trim().split(/\\s+as\\s+/);\n\t\t\t\tconst sourceProp = parts[0].trim();\n\t\t\t\tconst localName = parts.length === 2 ? parts[1].trim() : sourceProp;\n\t\t\t\tif (localName) importSources.set(localName, { modRef, prop: sourceProp });\n\t\t\t\tif (parts.length === 2) return `${sourceProp}: ${localName}`;\n\t\t\t\treturn sourceProp;\n\t\t\t}).filter((s: string) => s).join(', ');\n\t\t\treturn `\\n${indent}const ${modRef} = require(${mod});\\n${indent}const { ${mapped} } = ${modRef};`;\n\t\t}\n\t);\n\n\t// import * as X from 'mod'\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)import\\s*\\*\\s*as\\s+([\\w$]+)\\s+from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(_match, indent, name, mod) => `\\n${indent}${cjsDecl(name)} ${name} = require(${mod});`\n\t);\n\n\t// import X from 'mod' (default import)\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)import\\s+([\\w$]+)\\s+from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(_match, indent, name, mod) => `\\n${indent}${cjsDecl(name)} ${name} = require(${mod});`\n\t);\n\n\t// import 'mod' (side-effect)\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)import\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(_match, indent, mod) => `\\n${indent}require(${mod});`\n\t);\n\n\t// Strip empty export{}\n\tresult = result.replace(/(?:^|\\n)[ \\t]*export\\s*\\{\\s*\\}[ \\t]*;?/g, '');\n\n\t// export * from 'mod'\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)export\\s*\\*\\s*from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(_match, indent, mod) => {\n\t\t\tconst tmpVar = '__star_' + Math.random().toString(36).slice(2, 8);\n\t\t\treturn `\\n${indent}const ${tmpVar} = require(${mod});\\n${indent}Object.keys(${tmpVar}).forEach(function(k) { if (k !== 'default' && !exports.hasOwnProperty(k)) Object.defineProperty(exports, k, { get: function() { return ${tmpVar}[k]; }, enumerable: true, configurable: true }); });`;\n\t\t}\n\t);\n\n\t// export { a, b } from 'mod'\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)export\\s*\\{([^}]+)\\}\\s*from\\s*(['\"][^'\"]+['\"])[ \\t]*;?/g,\n\t\t(match, indent, names, mod) => {\n\t\t\tif (names.includes('${')) return match;\n\t\t\tconst tmpVar = '__re_' + Math.random().toString(36).slice(2, 8);\n\t\t\tconst assignments = names.split(',').map((s: string) => {\n\t\t\t\tconst parts = s.trim().split(/\\s+as\\s+/);\n\t\t\t\tconst local = parts[0].trim();\n\t\t\t\tconst exported = parts.length === 2 ? parts[1].trim() : local;\n\t\t\t\treturn `${indent}Object.defineProperty(exports, '${exported}', { get() { return ${tmpVar}.${local}; }, enumerable: true, configurable: true });`;\n\t\t\t}).join('\\n');\n\t\t\treturn `\\n${indent}const ${tmpVar} = require(${mod});\\n${assignments}`;\n\t\t}\n\t);\n\n\t// export default\n\tif (hasDefaultExport && hasNamedExport) {\n\t\tresult = result.replace(\n\t\t\t/(?:^|\\n)([ \\t]*)export\\s+default\\s+/g,\n\t\t\t(_match, indent) => `\\n${indent}exports.default = `\n\t\t);\n\t} else {\n\t\tresult = result.replace(\n\t\t\t/(?:^|\\n)([ \\t]*)export\\s+default\\s+/g,\n\t\t\t(_match, indent) => `\\n${indent}module.exports = `\n\t\t);\n\t}\n\n\t// export const/let/var\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)export\\s+(const|let|var)\\s+([\\w$]+)\\s*=/g,\n\t\t(match, indent, keyword, name) => {\n\t\t\tif (match.includes('${')) return match;\n\t\t\treturn `\\n${indent}${keyword} ${name} = exports.${name} =`;\n\t\t}\n\t);\n\n\t// export function / class\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)export\\s+(async\\s+function\\s+([\\w$]+)|function\\s+([\\w$]+)|class\\s+([\\w$]+))/g,\n\t\t(match, indent, decl, asyncFnName, fnName, className, offset: number) => {\n\t\t\tconst nextChar = result.charAt(offset + match.length);\n\t\t\tif (nextChar === '{') return match;\n\t\t\tconst name = asyncFnName || fnName || className;\n\t\t\ttrailingExports.push(`exports.${name} = ${name};`);\n\t\t\treturn `\\n${indent}${decl}`;\n\t\t}\n\t);\n\n\t// export { a, b as c } (local)\n\tresult = result.replace(\n\t\t/(?:^|\\n)([ \\t]*)export\\s*\\{([^}]+)\\}[ \\t]*;?/g,\n\t\t(match, _indent, names) => {\n\t\t\tif (names.includes('${')) return match;\n\t\t\tnames.split(',').forEach((s: string) => {\n\t\t\t\tconst parts = s.trim().split(/\\s+as\\s+/);\n\t\t\t\tconst local = parts[0].trim();\n\t\t\t\tconst exported = parts.length === 2 ? parts[1].trim() : local;\n\t\t\t\tif (!local) return;\n\t\t\t\tconst src = importSources.get(local);\n\t\t\t\tif (src) {\n\t\t\t\t\ttrailingExports.push(`Object.defineProperty(exports, '${exported}', { get: function() { return ${src.modRef}.${src.prop}; }, enumerable: true, configurable: true });`);\n\t\t\t\t} else {\n\t\t\t\t\ttrailingExports.push(`exports.${exported} = ${local};`);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn '';\n\t\t}\n\t);\n\n\t// Dynamic import() with string literal\n\tresult = result.replace(\n\t\t/(?<!\\.)(?<!\\w)\\bimport\\s*\\(\\s*(['\"][^'\"]+['\"])\\s*\\)/g,\n\t\t(_match, mod) => `Promise.resolve(require(${mod}))`\n\t);\n\n\t// Dynamic import() with expression\n\t{\n\t\tlet i = 0;\n\t\tlet out = '';\n\t\twhile (i < result.length) {\n\t\t\tconst importIdx = result.indexOf('import(', i);\n\t\t\tif (importIdx === -1) { out += result.slice(i); break; }\n\t\t\tif (importIdx > 0 && /[\\w$.]/.test(result[importIdx - 1])) {\n\t\t\t\tout += result.slice(i, importIdx + 7);\n\t\t\t\ti = importIdx + 7;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t{\n\t\t\t\tlet depth = 1;\n\t\t\t\tlet k = importIdx + 7;\n\t\t\t\twhile (k < result.length && depth > 0) {\n\t\t\t\t\tif (result[k] === '(') depth++;\n\t\t\t\t\telse if (result[k] === ')') depth--;\n\t\t\t\t\tk++;\n\t\t\t\t}\n\t\t\t\tif (depth === 0) {\n\t\t\t\t\tlet afterClose = k;\n\t\t\t\t\twhile (afterClose < result.length && /[ \\t]/.test(result[afterClose])) afterClose++;\n\t\t\t\t\tif (result[afterClose] === '{') {\n\t\t\t\t\t\tout += result.slice(i, importIdx + 7);\n\t\t\t\t\t\ti = importIdx + 7;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tout += result.slice(i, importIdx);\n\t\t\tlet depth = 1;\n\t\t\tlet j = importIdx + 7;\n\t\t\twhile (j < result.length && depth > 0) {\n\t\t\t\tif (result[j] === '(') depth++;\n\t\t\t\telse if (result[j] === ')') depth--;\n\t\t\t\tj++;\n\t\t\t}\n\t\t\tif (depth === 0) {\n\t\t\t\tconst arg = result.slice(importIdx + 7, j - 1);\n\t\t\t\tout += `Promise.resolve().then(function() { return require(${arg}); })`;\n\t\t\t} else {\n\t\t\t\tout += result.slice(importIdx, j);\n\t\t\t}\n\t\t\ti = j;\n\t\t}\n\t\tresult = out;\n\t}\n\n\t// Replace const/let of CJS wrapper params with var\n\tresult = result.replace(\n\t\t/\\b(const|let)\\s+(__dirname|__filename|exports|require|module|console|process|Buffer|global)\\b/g,\n\t\t(_match, _kw, name) => `var ${name}`\n\t);\n\n\tif (trailingExports.length > 0) {\n\t\tresult += '\\n' + trailingExports.join('\\n');\n\t}\n\n\tresult = unmaskStringLiterals(result, literals);\n\n\treturn result;\n}\n\n/**\n * Transform source to CJS if it's detected as ESM.\n *\n * `import.meta` is ALWAYS replaced regardless of ESM detection because\n * `new Function()` cannot parse it (syntax error). CJS bundles like\n * Vite's config.js use `createRequire(import.meta.url)` without being ESM.\n */\nexport function transformToCjs(\n\tsource: string,\n\tfilename: string,\n\tvfs?: { exists(p: string): boolean; readFileString(p: string): string },\n): { code: string; wasEsm: boolean } {\n\tif (shouldTreatAsEsm(source, filename, vfs)) {\n\t\treturn { code: transformEsmToCjs(source), wasEsm: true };\n\t}\n\t// Always replace import.meta even in non-ESM files — new Function()\n\t// cannot parse import.meta syntax at all.\n\tconst code = replaceImportMetaInCode(source);\n\treturn { code, wasEsm: false };\n}\n"],"mappings":"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","names":["depth","require","moduleExports","moduleObj","global","ga","isRealNode","saved","savedShims"]}
|