@lifo-sh/node-runner 0.1.19 → 0.1.20

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