agent-web-os 0.4.0-beta.0 → 0.4.0
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/chunk-L7KW6Y27.js +2750 -0
- package/dist/chunk-L7KW6Y27.js.map +1 -0
- package/dist/chunk-QV36H6BY.js +5325 -0
- package/dist/chunk-QV36H6BY.js.map +1 -0
- package/dist/{chunk-JTZ3QUCT.js → chunk-ZZTRZYH2.js} +1021 -3
- package/dist/chunk-ZZTRZYH2.js.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +4 -6
- package/dist/index.js.map +1 -1
- package/dist/node.cjs +57005 -72356
- package/dist/node.cjs.map +1 -1
- package/dist/node.js +14655 -106
- package/dist/node.js.map +1 -1
- package/dist/npm-C6N7BGOG.js +14 -0
- package/dist/server-bridge-DZUJDQIT.js +329 -0
- package/dist/server-bridge-DZUJDQIT.js.map +1 -0
- package/package.json +1 -1
- package/dist/chunk-JTZ3QUCT.js.map +0 -1
- package/dist/chunk-THD7G37K.js +0 -1028
- package/dist/chunk-THD7G37K.js.map +0 -1
- package/dist/chunk-YMOX2CWB.js +0 -38704
- package/dist/chunk-YMOX2CWB.js.map +0 -1
- package/dist/dist-2XQJWZPX.js +0 -98
- /package/dist/{dist-2XQJWZPX.js.map → npm-C6N7BGOG.js.map} +0 -0
package/dist/node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/server-bridge.ts","../src/almostnode-session.ts","../src/node.ts"],"sourcesContent":["/**\r\n * Lazy singleton holder for the almostnode ServerBridge.\r\n *\r\n * This module purposefully avoids a top-level `import \"almostnode\"` so that\r\n * bundlers (tsup/rollup) don't pull the entire almostnode package into the\r\n * shared chunk. The dynamic `import()` ensures almostnode only appears in the\r\n * lazily-loaded almostnode-session chunk.\r\n */\r\n\r\nexport type ServerBridge = {\r\n initServiceWorker(options?: { swUrl?: string }): Promise<void>\r\n registerServer(server: unknown, port: number): void\r\n unregisterServer(port: number): void\r\n getServerUrl(port: number): string\r\n}\r\n\r\nlet globalBridge: ServerBridge | null = null\r\nlet almostnodePromise: Promise<{ getServerBridge(): ServerBridge; resetServerBridge(): void }> | null = null\r\n\r\nfunction loadAlmostnode() {\r\n if (!almostnodePromise) {\r\n almostnodePromise = import(\"almostnode\") as Promise<{ getServerBridge(): ServerBridge; resetServerBridge(): void }>\r\n }\r\n return almostnodePromise\r\n}\r\n\r\nexport async function getServerBridge(): Promise<ServerBridge> {\r\n if (!globalBridge) {\r\n const mod = await loadAlmostnode()\r\n globalBridge = mod.getServerBridge()\r\n }\r\n return globalBridge\r\n}\r\n\r\nexport function resetServerBridge(): void {\r\n globalBridge = null\r\n}\r\n","import type { CommandContext, ExecResult } from \"just-bash/browser\"\nimport { posixPath as path } from \"./posix-path\"\nimport { PackageManager, Runtime, VirtualFS, ViteDevServer } from \"almostnode\"\nimport { getServerBridge } from \"./server-bridge\"\n\nimport {\n ObservableInMemoryFs,\n} from \"./observable-in-memory-fs\"\n\nconst ALMOSTNODE_INTERNAL_ROOT = \"/.almostnode\"\nconst ALMOSTNODE_NODE_VERSION = \"v20.0.0\"\nconst ALMOSTNODE_NPM_VERSION = \"9.6.4\"\nconst NODE_EXEC_PATH = \"/usr/local/bin/node\"\nconst GLOBAL_NODE_MODULES_ROOT = \"/usr/local/lib/node_modules\"\nconst DEFAULT_PATH = \"/usr/local/bin:/usr/bin:/bin:/node_modules/.bin\"\nconst NPM_USAGE = [\n \"Usage: npm <command>\",\n \"\",\n \"Commands:\",\n \" run <script> Run a script from package.json\",\n \" start Run the start script\",\n \" test Run the test script\",\n \" install [pkg] Install packages\",\n \" ls List installed packages\",\n].join(\"\\n\")\n\nconst STATIC_MIME_TYPES: Record<string, string> = {\n css: \"text/css; charset=utf-8\",\n cjs: \"application/javascript; charset=utf-8\",\n gif: \"image/gif\",\n htm: \"text/html; charset=utf-8\",\n html: \"text/html; charset=utf-8\",\n ico: \"image/x-icon\",\n jpeg: \"image/jpeg\",\n jpg: \"image/jpeg\",\n js: \"application/javascript; charset=utf-8\",\n json: \"application/json; charset=utf-8\",\n map: \"application/json; charset=utf-8\",\n md: \"text/markdown; charset=utf-8\",\n mjs: \"application/javascript; charset=utf-8\",\n otf: \"font/otf\",\n pdf: \"application/pdf\",\n png: \"image/png\",\n svg: \"image/svg+xml\",\n txt: \"text/plain; charset=utf-8\",\n wasm: \"application/wasm\",\n webp: \"image/webp\",\n woff: \"font/woff\",\n woff2: \"font/woff2\",\n}\n\ntype PackageJsonLike = {\n name?: string\n version?: string\n scripts?: Record<string, string>\n dependencies?: Record<string, string>\n devDependencies?: Record<string, string>\n optionalDependencies?: Record<string, string>\n peerDependencies?: Record<string, string>\n}\n\ntype BinCommandRegistrar = (name: string, handler: (args: string[], ctx: CommandContext) => Promise<ExecResult>) => void\ntype VitePreviewListener = (previewUrl: string | null) => void\ntype BatchFileLoader = (paths: string[]) => Promise<Map<string, Uint8Array>>\n\nexport interface AlmostNodeSessionVfs {\n existsSync(path: string): boolean\n statSync(path: string): { isDirectory(): boolean; isFile(): boolean }\n readFileSync(path: string, encoding?: string): any\n writeFileSync(path: string, data: string | Uint8Array): void\n mkdirSync(path: string, options?: { recursive?: boolean }): void\n readdirSync(path: string): string[]\n unlinkSync(path: string): void\n rmdirSync(path: string): void\n renameSync(oldPath: string, newPath: string): void\n}\n\ndeclare global {\n interface Window {\n __esbuild?: unknown\n __esbuildInitPromise?: Promise<void>\n }\n}\n\n/** Strip leading \"./\" from a path (e.g. \"./esm/index.js\" → \"esm/index.js\") */\nfunction stripDotSlash(p: string): string {\n return p.startsWith(\"./\") ? p.slice(2) : p\n}\n\nfunction getStaticMimeType(filePath: string): string {\n const extension = filePath.split(\".\").pop()?.toLowerCase() || \"\"\n return STATIC_MIME_TYPES[extension] || \"application/octet-stream\"\n}\n\nfunction getRequestPathname(requestUrl: string): string {\n return new URL(requestUrl, \"http://localhost\").pathname\n}\n\n/**\n * Detect CJS modules and wrap them in an ESM shim so the browser can\n * import them. Detects `require(`, `module.exports`, or `exports.` at\n * statement level. Already-ESM sources (containing `import ` or\n * `export `) are returned untouched.\n *\n * `require('pkg')` calls are hoisted into ESM `import` declarations so\n * that transitive CJS dependencies are loaded by the browser's module\n * loader (and themselves shimmed when served).\n */\nfunction wrapCjsAsEsm(code: string, virtualPrefix = \"\", requestPath = \"\"): string {\n // Strip strings and comments so keyword detection is accurate\n const stripped = code.replace(\n /(\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*'|`(?:[^`\\\\]|\\\\.)*`|\\/\\*[\\s\\S]*?\\*\\/|\\/\\/[^\\n]*)/g,\n (match) => \" \".repeat(match.length),\n )\n\n // Quick ESM check – if it already has import/export syntax, leave it alone\n if (/\\b(import\\s+|export\\s+|export\\s*\\{|export\\s+default\\b)/.test(stripped)) {\n return code\n }\n // Quick CJS check – must have at least one CJS indicator\n if (!/\\b(require\\s*\\(|module\\.exports|exports\\.)/.test(stripped)) {\n return code\n }\n\n // Compute the directory of the file being served so relative requires\n // (e.g. require('./cjs/react-is.development.js')) resolve correctly.\n // requestPath should be the *resolved* file path (with extension), so\n // dirname always gives the correct parent directory.\n const requestDir = requestPath ? path.dirname(requestPath) : \"\"\n\n // Collect require() calls and replace them with references to\n // imported shim variables. We only handle string-literal requires.\n // Build a comment-free view of the code so we don't match require()\n // inside comments. Strings must be preserved since require specifiers\n // live inside them. We reuse the same tokenizer but only blank comments.\n const commentFree = code.replace(\n /(\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*'|`(?:[^`\\\\]|\\\\.)*`|\\/\\*[\\s\\S]*?\\*\\/|\\/\\/[^\\n]*)/g,\n (m) => {\n if (m.startsWith(\"/*\") || m.startsWith(\"//\")) {\n return \" \".repeat(m.length)\n }\n return m\n },\n )\n\n const imports: string[] = []\n let counter = 0\n // Match on comment-free version but replace in original code at same offsets\n const requirePattern = /\\brequire\\s*\\(\\s*(['\"])([^'\"]+)\\1\\s*\\)/g\n let rewritten = \"\"\n let lastIndex = 0\n let match: RegExpExecArray | null\n while ((match = requirePattern.exec(commentFree)) !== null) {\n const specifier = match[2]\n const varName = `__cjs_req_${counter++}__`\n let resolvedSpec: string\n if (specifier.startsWith(\".\")) {\n resolvedSpec = `${virtualPrefix}${path.resolve(requestDir, specifier)}`\n } else {\n resolvedSpec = `${virtualPrefix}/node_modules/${specifier}`\n }\n imports.push(`import ${varName} from \"${resolvedSpec}\";`)\n rewritten += code.slice(lastIndex, match.index)\n rewritten += `(${varName} && ${varName}.__esModule ? ${varName}.default : ${varName})`\n lastIndex = match.index + match[0].length\n }\n rewritten += code.slice(lastIndex)\n\n // Detect CJS \"re-export\" patterns:\n // module.exports = require('./some-file') (unconditional)\n // if (NODE_ENV === 'production') { module.exports = require(A) }\n // else { module.exports = require(B) } (conditional)\n // Add `export * from \"...\"` so named imports flow through.\n // Only emit ONE export-star to avoid \"conflicting star exports\" when\n // multiple conditional branches re-export modules with the same names.\n // Since our process shim sets NODE_ENV='production', prefer the\n // production variant if present; otherwise take the first match.\n const reExportPattern = /module\\.exports\\s*=\\s*\\(__cjs_req_(\\d+)__\\s*&&\\s*__cjs_req_\\1__\\.__esModule\\s*\\?\\s*__cjs_req_\\1__\\.default\\s*:\\s*__cjs_req_\\1__\\)/g\n const reExportCandidates: string[] = []\n let reM: RegExpExecArray | null\n while ((reM = reExportPattern.exec(rewritten)) !== null) {\n const reExportVar = `__cjs_req_${reM[1]}__`\n const reExportImport = imports.find((i) => i.includes(reExportVar))\n if (reExportImport) {\n const specMatch = reExportImport.match(/from\\s+\"([^\"]+)\"/)\n if (specMatch) reExportCandidates.push(specMatch[1])\n }\n }\n if (reExportCandidates.length > 0) {\n // Prefer production build (matches our NODE_ENV shim)\n const picked = reExportCandidates.find((s) => /production|\\.prod[\\.\\b]/.test(s))\n ?? reExportCandidates[0]\n return [\n \"// [monospace CJS→ESM re-export]\",\n ...imports,\n \"var module = { exports: {} };\",\n \"var exports = module.exports;\",\n \"var process = { env: { NODE_ENV: 'production' } };\",\n rewritten,\n \"export default module.exports;\",\n `export * from \"${picked}\";`,\n ].join(\"\\n\")\n }\n\n // Extract named exports by scanning for `exports.NAME =` patterns in\n // the rewritten code. These become static ESM named exports.\n const namedExports = new Set<string>()\n const exportsPattern = /\\bexports\\.(\\w+)\\s*=/g\n let expMatch: RegExpExecArray | null\n while ((expMatch = exportsPattern.exec(rewritten)) !== null) {\n const name = expMatch[1]\n if (name !== \"__esModule\") namedExports.add(name)\n }\n\n const namedExportLines: string[] = []\n if (namedExports.size > 0) {\n const names = [...namedExports]\n // Use prefixed variable names to avoid clashing with identifiers\n // already declared in the original CJS code (e.g. `function typeOf`).\n for (const name of names) {\n namedExportLines.push(`var __cjs_e_${name}__ = module.exports.${name};`)\n }\n namedExportLines.push(\n `export { ${names.map((n) => `__cjs_e_${n}__ as ${n}`).join(\", \")} };`,\n )\n }\n\n return [\n \"// [monospace CJS→ESM shim]\",\n ...imports,\n \"var module = { exports: {} };\",\n \"var exports = module.exports;\",\n \"var process = { env: { NODE_ENV: 'production' } };\",\n rewritten,\n \"export default module.exports;\",\n ...namedExportLines,\n ].join(\"\\n\")\n}\n\nconst ESBUILD_WASM_VERSION = \"0.20.0\"\n\n/**\n * Pre-initialize esbuild-wasm before ViteDevServer is created.\n *\n * Turbopack statically analyses `import(CDN_URL)` inside almostnode's\n * vite-dev-server.ts, replaces the specifier with 'unknown' and breaks\n * the runtime import. By loading the module ourselves with a URL\n * constructed at runtime (invisible to Turbopack's static pass) and\n * setting `window.__esbuild`, the ViteDevServer's `initEsbuild()` finds\n * the singleton already in place and skips its own broken import().\n */\nasync function ensureEsbuildWasm(): Promise<void> {\n if (typeof window === \"undefined\") return\n if (window.__esbuild) return\n if (window.__esbuildInitPromise) {\n await window.__esbuildInitPromise\n return\n }\n\n window.__esbuildInitPromise = (async () => {\n // Build URLs at runtime so Turbopack cannot statically resolve them\n const esmUrl = `https://esm.sh/esbuild-wasm@${ESBUILD_WASM_VERSION}`\n const wasmUrl = `https://unpkg.com/esbuild-wasm@${ESBUILD_WASM_VERSION}/esbuild.wasm`\n\n // Use indirect import to prevent Turbopack static analysis\n const dynamicImport = new Function(\"url\", \"return import(url)\") as (url: string) => Promise<Record<string, unknown>>\n const mod = await dynamicImport(esmUrl)\n const esbuildMod = (mod.default || mod) as { initialize: (opts: { wasmURL: string }) => Promise<void> }\n\n try {\n await esbuildMod.initialize({ wasmURL: wasmUrl })\n } catch (err) {\n if (err instanceof Error && err.message.includes(\"Cannot call \\\"initialize\\\" more than once\")) {\n // already initialized\n } else {\n window.__esbuildInitPromise = undefined\n throw err\n }\n }\n\n window.__esbuild = esbuildMod\n })()\n\n await window.__esbuildInitPromise\n}\n\nfunction normalizePath(inputPath: string): string {\n return path.normalize(inputPath.trim() || \"/\") || \"/\"\n}\n\nfunction isInternalAlmostNodePath(targetPath: string): boolean {\n const normalizedPath = normalizePath(targetPath)\n return normalizedPath === ALMOSTNODE_INTERNAL_ROOT\n || normalizedPath.startsWith(`${ALMOSTNODE_INTERNAL_ROOT}/`)\n}\n\nfunction appendChunk(chunks: string[], value: string): void {\n if (!value) {\n return\n }\n\n chunks.push(value)\n}\n\nfunction getPackageJsonDependencyNames(pkgJson: PackageJsonLike): string[] {\n const dependencyNames: string[] = []\n const dependencySections = [\n pkgJson.dependencies,\n pkgJson.devDependencies,\n pkgJson.optionalDependencies,\n pkgJson.peerDependencies,\n ]\n\n for (const section of dependencySections) {\n if (!section || typeof section !== \"object\") {\n continue\n }\n\n for (const packageName of Object.keys(section)) {\n if (!dependencyNames.includes(packageName)) {\n dependencyNames.push(packageName)\n }\n }\n }\n\n return dependencyNames\n}\n\nfunction getCommandEnvironment(ctx: CommandContext): Record<string, string> {\n const environment: Record<string, string> = {}\n\n for (const [key, value] of ctx.env.entries()) {\n environment[key] = value\n }\n\n return environment\n}\n\nasync function ensureObservableDirectory(fs: ObservableInMemoryFs, directoryPath: string): Promise<void> {\n const normalizedPath = normalizePath(directoryPath)\n if (normalizedPath === \"/\") {\n return\n }\n\n if (await fs.exists(normalizedPath)) {\n return\n }\n\n await fs.mkdir(normalizedPath, { recursive: true })\n}\n\nfunction removeVirtualPath(vfs: VirtualFS, targetPath: string): void {\n const normalizedPath = normalizePath(targetPath)\n if (normalizedPath === \"/\" || isInternalAlmostNodePath(normalizedPath) || !vfs.existsSync(normalizedPath)) {\n return\n }\n\n const stat = vfs.statSync(normalizedPath)\n if (!stat.isDirectory()) {\n vfs.unlinkSync(normalizedPath)\n return\n }\n\n for (const childName of vfs.readdirSync(normalizedPath)) {\n removeVirtualPath(vfs, path.join(normalizedPath, childName))\n }\n\n vfs.rmdirSync(normalizedPath)\n}\n\nclass AlmostNodeVirtualFs extends VirtualFS {\n private suppressMirrorCount = 0\n\n constructor(private readonly session: AlmostNodeSession) {\n super()\n }\n\n withoutMirror<T>(operation: () => T): T {\n this.suppressMirrorCount += 1\n\n try {\n return operation()\n } finally {\n this.suppressMirrorCount -= 1\n }\n }\n\n private shouldMirror(targetPath: string): boolean {\n return this.suppressMirrorCount === 0 && !isInternalAlmostNodePath(targetPath)\n }\n\n override writeFileSync(targetPath: string, data: string | Uint8Array): void {\n super.writeFileSync(targetPath, data)\n\n if (this.shouldMirror(targetPath)) {\n void this.session.applyVirtualWrite(targetPath, data)\n }\n }\n\n override mkdirSync(targetPath: string, options?: { recursive?: boolean }): void {\n super.mkdirSync(targetPath, options)\n\n if (this.shouldMirror(targetPath)) {\n void this.session.applyVirtualMkdir(targetPath)\n }\n }\n\n override unlinkSync(targetPath: string): void {\n super.unlinkSync(targetPath)\n\n if (this.shouldMirror(targetPath)) {\n void this.session.applyVirtualRemove(targetPath, false)\n }\n }\n\n override rmdirSync(targetPath: string): void {\n super.rmdirSync(targetPath)\n\n if (this.shouldMirror(targetPath)) {\n void this.session.applyVirtualRemove(targetPath, true)\n }\n }\n\n override renameSync(previousPath: string, nextPath: string): void {\n super.renameSync(previousPath, nextPath)\n\n if (this.shouldMirror(previousPath) && this.shouldMirror(nextPath)) {\n void this.session.applyVirtualRename(previousPath, nextPath)\n }\n }\n}\n\nexport class AlmostNodeSession {\n private readonly _vfs = new AlmostNodeVirtualFs(this)\n get vfs(): AlmostNodeSessionVfs { return this._vfs }\n\n private readonly disposeObservableSubscription: () => void\n private initializePromise: Promise<void> | null = null\n private initialized = false\n private pendingOperations = new Set<Promise<void>>()\n private suppressObservableMirrorCount = 0\n private registeredBinCommands = new Set<string>()\n private binCommandRegistrar?: BinCommandRegistrar\n private batchFileLoader?: BatchFileLoader\n private stdoutWriter?: (data: string) => void\n private _stdinHandler: ((data: string) => void) | null = null\n private _terminalColumns = 80\n private _terminalRows = 24\n private viteServer?: ViteDevServer\n private vitePort: number | null = null\n private vitePreviewUrl: string | null = null\n private vitePreviewListener?: VitePreviewListener\n private serverBridge?: import(\"./server-bridge\").ServerBridge\n private parsedPackageJsonCache = new Map<string, { raw: string; value: Record<string, unknown> | null }>()\n private transformedTextCache = new Map<string, { source: string; transformed: string }>()\n\n constructor(private readonly fs: ObservableInMemoryFs) {\n this._vfs.mkdirSync(ALMOSTNODE_INTERNAL_ROOT, { recursive: true })\n\n // Shim the deprecated `constants` module (missing from almostnode's builtins).\n // Many npm packages still `require('constants')`.\n this._vfs.mkdirSync(\"/node_modules/constants\", { recursive: true })\n this._vfs.writeFileSync(\"/node_modules/constants/package.json\", JSON.stringify({\n name: \"constants\",\n version: \"0.0.1\",\n main: \"index.js\",\n }))\n this._vfs.writeFileSync(\"/node_modules/constants/index.js\", [\n \"// Node.js `constants` shim (os.constants + fs.constants)\",\n \"var os = require('os');\",\n \"var constants = {};\",\n \"if (os.constants) {\",\n \" if (os.constants.signals) Object.assign(constants, os.constants.signals);\",\n \" if (os.constants.errno) Object.assign(constants, os.constants.errno);\",\n \" if (os.constants.priority) Object.assign(constants, os.constants.priority);\",\n \"}\",\n \"// Common fs.constants used by npm packages\",\n \"constants.O_RDONLY = 0;\",\n \"constants.O_WRONLY = 1;\",\n \"constants.O_RDWR = 2;\",\n \"constants.O_CREAT = 64;\",\n \"constants.O_EXCL = 128;\",\n \"constants.O_TRUNC = 512;\",\n \"constants.O_APPEND = 1024;\",\n \"constants.O_DIRECTORY = 65536;\",\n \"constants.O_NOFOLLOW = 131072;\",\n \"constants.O_SYNC = 1052672;\",\n \"constants.O_SYMLINK = 2097152;\",\n \"constants.O_NONBLOCK = 2048;\",\n \"constants.S_IFMT = 61440;\",\n \"constants.S_IFREG = 32768;\",\n \"constants.S_IFDIR = 16384;\",\n \"constants.S_IFCHR = 8192;\",\n \"constants.S_IFBLK = 24576;\",\n \"constants.S_IFIFO = 4096;\",\n \"constants.S_IFLNK = 40960;\",\n \"constants.S_IFSOCK = 49152;\",\n \"constants.S_IRWXU = 448;\",\n \"constants.S_IRUSR = 256;\",\n \"constants.S_IWUSR = 128;\",\n \"constants.S_IXUSR = 64;\",\n \"constants.S_IRWXG = 56;\",\n \"constants.S_IRGRP = 32;\",\n \"constants.S_IWGRP = 16;\",\n \"constants.S_IXGRP = 8;\",\n \"constants.S_IRWXO = 7;\",\n \"constants.S_IROTH = 4;\",\n \"constants.S_IWOTH = 2;\",\n \"constants.S_IXOTH = 1;\",\n \"constants.F_OK = 0;\",\n \"constants.R_OK = 4;\",\n \"constants.W_OK = 2;\",\n \"constants.X_OK = 1;\",\n \"constants.COPYFILE_EXCL = 1;\",\n \"constants.COPYFILE_FICLONE = 2;\",\n \"constants.COPYFILE_FICLONE_FORCE = 4;\",\n \"constants.UV_FS_COPYFILE_EXCL = 1;\",\n \"constants.UV_FS_COPYFILE_FICLONE = 2;\",\n \"constants.UV_FS_COPYFILE_FICLONE_FORCE = 4;\",\n \"module.exports = constants;\",\n ].join(\"\\n\"))\n\n // Shim `stream/promises` subpath (missing from almostnode's builtins).\n // The stream module has .promises but it's not registered as a subpath.\n this._vfs.mkdirSync(\"/node_modules/stream\", { recursive: true })\n this._vfs.writeFileSync(\"/node_modules/stream/package.json\", JSON.stringify({\n name: \"stream\",\n version: \"0.0.1\",\n main: \"index.js\",\n }))\n this._vfs.writeFileSync(\"/node_modules/stream/index.js\",\n \"module.exports = require('stream');\")\n this._vfs.mkdirSync(\"/node_modules/stream/promises\", { recursive: true })\n this._vfs.writeFileSync(\"/node_modules/stream/promises/package.json\", JSON.stringify({\n name: \"stream-promises\",\n version: \"0.0.1\",\n main: \"index.js\",\n }))\n this._vfs.writeFileSync(\"/node_modules/stream/promises/index.js\",\n \"var stream = require('stream');\\nmodule.exports = stream.promises || {};\")\n\n // Shim `stream/web` subpath (missing from almostnode's builtins).\n // Re-exports the browser-native Web Streams API (ReadableStream, WritableStream, etc.)\n this._vfs.mkdirSync(\"/node_modules/stream/web\", { recursive: true })\n this._vfs.writeFileSync(\"/node_modules/stream/web/package.json\", JSON.stringify({\n name: \"stream-web\",\n version: \"0.0.1\",\n main: \"index.js\",\n }))\n this._vfs.writeFileSync(\"/node_modules/stream/web/index.js\", [\n \"// Web Streams API shim — re-exports browser globals\",\n \"module.exports = {\",\n \" ReadableStream: typeof ReadableStream !== 'undefined' ? ReadableStream : undefined,\",\n \" ReadableStreamDefaultReader: typeof ReadableStreamDefaultReader !== 'undefined' ? ReadableStreamDefaultReader : undefined,\",\n \" ReadableStreamBYOBReader: typeof ReadableStreamBYOBReader !== 'undefined' ? ReadableStreamBYOBReader : undefined,\",\n \" ReadableStreamDefaultController: typeof ReadableStreamDefaultController !== 'undefined' ? ReadableStreamDefaultController : undefined,\",\n \" ReadableByteStreamController: typeof ReadableByteStreamController !== 'undefined' ? ReadableByteStreamController : undefined,\",\n \" WritableStream: typeof WritableStream !== 'undefined' ? WritableStream : undefined,\",\n \" WritableStreamDefaultWriter: typeof WritableStreamDefaultWriter !== 'undefined' ? WritableStreamDefaultWriter : undefined,\",\n \" WritableStreamDefaultController: typeof WritableStreamDefaultController !== 'undefined' ? WritableStreamDefaultController : undefined,\",\n \" TransformStream: typeof TransformStream !== 'undefined' ? TransformStream : undefined,\",\n \" TransformStreamDefaultController: typeof TransformStreamDefaultController !== 'undefined' ? TransformStreamDefaultController : undefined,\",\n \" ByteLengthQueuingStrategy: typeof ByteLengthQueuingStrategy !== 'undefined' ? ByteLengthQueuingStrategy : undefined,\",\n \" CountQueuingStrategy: typeof CountQueuingStrategy !== 'undefined' ? CountQueuingStrategy : undefined,\",\n \"};\",\n ].join(\"\\n\"))\n\n this.disposeObservableSubscription = this.fs.subscribe((event) => {\n void this.trackOperation((async () => {\n if (!this.initialized || this.suppressObservableMirrorCount > 0) {\n return\n }\n\n const normalizedPath = normalizePath(event.path)\n if (isInternalAlmostNodePath(normalizedPath)) {\n return\n }\n\n if (event.event === \"unlink\" || event.event === \"unlinkDir\") {\n this._vfs.withoutMirror(() => {\n removeVirtualPath(this._vfs, normalizedPath)\n })\n return\n }\n\n await this.copyObservablePathIntoVirtualFs(normalizedPath)\n })())\n })\n }\n\n dispose(): void {\n this.disposeObservableSubscription()\n this.stopViteServer()\n }\n\n setBinCommandRegistrar(registrar: BinCommandRegistrar): void {\n this.binCommandRegistrar = registrar\n }\n\n setBatchFileLoader(loader: BatchFileLoader): void {\n this.batchFileLoader = loader\n }\n\n setStdoutWriter(writer: ((data: string) => void) | undefined): void {\n this.stdoutWriter = writer\n }\n\n /** Send data to the stdin of the currently running interactive process. */\n writeStdin(data: string): void {\n this._stdinHandler?.(data)\n }\n\n /** Update terminal dimensions (used for process.stdout.columns/rows). */\n setTerminalSize(columns: number, rows: number): void {\n this._terminalColumns = columns\n this._terminalRows = rows\n }\n\n setVitePreviewListener(listener: VitePreviewListener | undefined): void {\n this.vitePreviewListener = listener\n listener?.(this.vitePreviewUrl)\n }\n\n setViteHmrTarget(target: Window | null): void {\n if (!target || !this.viteServer) {\n return\n }\n\n this.viteServer.setHMRTarget(target)\n }\n\n /**\n * Resolve a bare module specifier (e.g. \"@mui/material\" or \"react\") to a\n * `/node_modules/...` URL path that the ViteDevServer can serve.\n *\n * Resolution order mirrors Node/bundler conventions:\n * 1. package.json \"exports\" (condition \"import\" → \"default\")\n * 2. package.json \"module\"\n * 3. package.json \"main\"\n * 4. index.js / index.mjs fallback\n *\n * For deep imports like \"@mui/material/Button\", we resolve from the\n * package directory directly.\n */\n private resolveBarePkgEntryCache = new Map<string, string | null>()\n\n private parseCachedPackageJson(packageJsonPath: string, raw: string): Record<string, unknown> | null {\n const cached = this.parsedPackageJsonCache.get(packageJsonPath)\n if (cached && cached.raw === raw) {\n return cached.value\n }\n\n try {\n const parsed = JSON.parse(raw) as Record<string, unknown>\n this.parsedPackageJsonCache.set(packageJsonPath, { raw, value: parsed })\n return parsed\n } catch {\n this.parsedPackageJsonCache.set(packageJsonPath, { raw, value: null })\n return null\n }\n }\n\n private transformTextWithCache(\n cacheKey: string,\n source: string,\n transform: (value: string) => string,\n ): string {\n const cached = this.transformedTextCache.get(cacheKey)\n if (cached && cached.source === source) {\n return cached.transformed\n }\n\n const transformed = transform(source)\n this.transformedTextCache.set(cacheKey, { source, transformed })\n return transformed\n }\n\n private resolveBarePkgEntry(specifier: string, root: string): string | null {\n const cacheKey = `${root}\\u0000${specifier}`\n const cached = this.resolveBarePkgEntryCache.get(cacheKey)\n if (cached !== undefined) return cached\n\n const result = this._resolveBarePkgEntry(specifier, root)\n this.resolveBarePkgEntryCache.set(cacheKey, result)\n return result\n }\n\n private _resolveBarePkgEntry(specifier: string, root: string): string | null {\n // Split specifier into package name + sub-path\n let pkgName: string\n let subPath: string\n\n if (specifier.startsWith(\"@\")) {\n // scoped: @scope/pkg or @scope/pkg/sub\n const parts = specifier.split(\"/\")\n pkgName = `${parts[0]}/${parts[1]}`\n subPath = parts.slice(2).join(\"/\")\n } else {\n const slashIdx = specifier.indexOf(\"/\")\n if (slashIdx === -1) {\n pkgName = specifier\n subPath = \"\"\n } else {\n pkgName = specifier.slice(0, slashIdx)\n subPath = specifier.slice(slashIdx + 1)\n }\n }\n\n const nodeModulesPath = `${root}/node_modules/${pkgName}`\n const pkgJsonPath = `${nodeModulesPath}/package.json`\n\n let pkgJson: Record<string, unknown> | null = null\n try {\n if (this.vfs.existsSync(pkgJsonPath)) {\n pkgJson = this.parseCachedPackageJson(pkgJsonPath, this.vfs.readFileSync(pkgJsonPath, \"utf8\"))\n }\n } catch {\n // malformed package.json\n }\n\n if (subPath) {\n // Deep import: @mui/material/Button → resolve via exports map or direct path\n if (pkgJson?.exports && typeof pkgJson.exports === \"object\") {\n const exportsMap = pkgJson.exports as Record<string, unknown>\n const entry = this.resolveExportsEntry(exportsMap, `./${subPath}`)\n ?? this.resolveWildcardExports(exportsMap, subPath)\n if (entry) return `/node_modules/${pkgName}/${stripDotSlash(entry)}`\n }\n\n // Try direct file paths\n const candidates = [\n `/node_modules/${pkgName}/${subPath}`,\n `/node_modules/${pkgName}/${subPath}.js`,\n `/node_modules/${pkgName}/${subPath}.mjs`,\n `/node_modules/${pkgName}/${subPath}/index.js`,\n `/node_modules/${pkgName}/${subPath}/index.mjs`,\n ]\n for (const candidate of candidates) {\n if (this.vfs.existsSync(`${root}${candidate}`)) return candidate\n }\n return `/node_modules/${pkgName}/${subPath}`\n }\n\n // Root import: resolve entry point\n if (pkgJson?.exports && typeof pkgJson.exports === \"object\") {\n const entry = this.resolveExportsEntry(pkgJson.exports as Record<string, unknown>, \".\")\n if (entry) return `/node_modules/${pkgName}/${stripDotSlash(entry)}`\n }\n\n // \"module\" field (ESM entry)\n if (typeof pkgJson?.module === \"string\") {\n return `/node_modules/${pkgName}/${stripDotSlash(pkgJson.module)}`\n }\n\n // \"main\" field\n if (typeof pkgJson?.main === \"string\") {\n return `/node_modules/${pkgName}/${stripDotSlash(pkgJson.main)}`\n }\n\n // Fallback\n const fallbacks = [\n `/node_modules/${pkgName}/index.js`,\n `/node_modules/${pkgName}/index.mjs`,\n ]\n for (const fb of fallbacks) {\n if (this.vfs.existsSync(`${root}${fb}`)) return fb\n }\n\n return `/node_modules/${pkgName}/index.js`\n }\n\n private resolveExportsEntry(exports: Record<string, unknown>, key: string): string | null {\n const entry = exports[key]\n if (!entry) {\n // If exports is a single string (shorthand for \".\")\n if (key === \".\" && typeof exports === \"string\") return exports as unknown as string\n return null\n }\n\n return this.resolveConditionValue(entry)\n }\n\n /**\n * Handle wildcard exports like \"./*\" → { \"default\": { \"default\": \"./esm/* /index.js\" } }\n */\n private resolveWildcardExports(exports: Record<string, unknown>, subPath: string): string | null {\n const wildcardKey = \"./*\"\n const wildcardEntry = exports[wildcardKey]\n if (!wildcardEntry) return null\n\n const resolved = this.resolveConditionValue(wildcardEntry)\n if (!resolved) return null\n\n // Replace * with the actual sub-path\n return resolved.replace(/\\*/g, subPath)\n }\n\n /**\n * Recursively resolve a condition value from an exports entry.\n * Handles: string, { import, module, default, require }, and nested conditions.\n * Skips \"types\" conditions since we need JS, not .d.ts files.\n *\n * Priority: browser > module > import > default > require\n * \"browser\" and \"module\" are preferred because they point to true ESM bundles.\n * \"import\" is deprioritised because some packages (e.g. @emotion/*) map it to\n * a CJS-to-ESM wrapper (.cjs.mjs) that uses require()/exports which fails\n * in a browser context.\n */\n private resolveConditionValue(value: unknown): string | null {\n if (typeof value === \"string\") return value\n if (typeof value !== \"object\" || value === null) return null\n\n const conditions = value as Record<string, unknown>\n for (const condition of [\"browser\", \"module\", \"import\", \"default\", \"require\"]) {\n const condValue = conditions[condition]\n if (condValue === undefined) continue\n // Skip types-only entries\n if (condition === \"types\") continue\n const resolved = this.resolveConditionValue(condValue)\n if (resolved && !resolved.endsWith(\".d.ts\") && !resolved.endsWith(\".d.cts\") && !resolved.endsWith(\".d.mts\")) {\n return resolved\n }\n }\n return null\n }\n\n /**\n * Rewrite bare import specifiers in JavaScript source to /node_modules/... paths.\n * When virtualPrefix is provided (e.g. \"/__virtual__/5173\"), prepends it to\n * resolved paths so the browser stays within the service-worker-routed URL\n * namespace and cascading relative imports keep going through the SW.\n */\n rewriteBareImports(code: string, root: string, virtualPrefix = \"\"): string {\n // Match: import ... from 'specifier' / import 'specifier' / export ... from 'specifier'\n // Also dynamic: import('specifier')\n // Must NOT match relative (./ ../) or absolute (/) or URLs (http:// https://)\n //\n // Strip comments (but NOT strings — specifiers live in strings) then\n // run the import/export regex. To avoid false matches inside string\n // literals (e.g. \"forgot to export from the file\"), we require the\n // import/export keyword to appear at statement level: preceded by\n // line-start, semicolon, or opening brace.\n // Build a comment-free copy (same length, offsets preserved) so\n // the import/export regex doesn't match inside comments. Strings\n // are kept intact because specifiers live inside them. Regex\n // literals are NOT handled — their `//` can be falsely blanked —\n // so we must match on commentFree but apply edits to the original\n // `code` using the same offsets.\n const commentFree = code.replace(\n /(\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*'|`(?:[^`\\\\]|\\\\.)*`|\\/\\*[\\s\\S]*?\\*\\/|\\/\\/[^\\n]*)/g,\n (m) => {\n if (m.startsWith(\"/*\") || m.startsWith(\"//\")) return \" \".repeat(m.length)\n return m\n },\n )\n\n // Find matches on commentFree, apply replacements to original code\n const importRe = /((?:^|[;\\n{])\\s*(?:import|export)\\s+(?:[\\s\\S]*?\\s+from\\s+|)|(?:import\\s*\\())(['\"])([^'\".\\\\/][^'\"]*)\\2/gm\n let result = code\n let offset = 0\n let m: RegExpExecArray | null\n while ((m = importRe.exec(commentFree)) !== null) {\n const [fullMatch, prefix, quote, specifier] = m\n // Skip URLs\n if (/^https?:\\/\\//.test(specifier)) continue\n // Skip already-resolved paths\n if (specifier.startsWith(\"/\")) continue\n\n const resolved = this.resolveBarePkgEntry(specifier, root)\n if (!resolved) continue\n\n const replacement = `${prefix}${quote}${virtualPrefix}${resolved}${quote}`\n const start = m.index + offset\n const end = start + fullMatch.length\n result = result.slice(0, start) + replacement + result.slice(end)\n offset += replacement.length - fullMatch.length\n }\n return result\n }\n\n private async serveExistingVirtualStaticFile<TBody extends { length: number }>(\n root: string,\n requestUrl: string,\n bufferCtor: { from(input: string | Uint8Array): TBody },\n ): Promise<{\n statusCode: number\n statusMessage: string\n headers: Record<string, string>\n body: TBody\n resolvedPath: string\n } | null> {\n const basePath = normalizePath(path.join(root, getRequestPathname(requestUrl)))\n\n // When the request has no file extension, try common JS extensions\n // and also resolve directory package.json entry points\n const hasExtension = /\\.[a-zA-Z0-9]+$/.test(path.basename(basePath))\n let candidates: string[]\n if (hasExtension) {\n candidates = [basePath]\n } else {\n candidates = [basePath, `${basePath}.js`, `${basePath}.mjs`, `${basePath}.jsx`, `${basePath}/index.js`, `${basePath}/index.mjs`]\n const pkgPath = `${basePath}/package.json`\n\n try {\n if (this.vfs.existsSync(pkgPath)) {\n const raw = this.vfs.readFileSync(pkgPath, \"utf8\")\n const pkg = this.parseCachedPackageJson(pkgPath, raw)\n const entry = pkg\n ? (typeof pkg.module === \"string\" && pkg.module) || (typeof pkg.main === \"string\" && pkg.main)\n : null\n if (entry) candidates.push(normalizePath(path.join(basePath, entry)))\n }\n } catch { /* ignore */ }\n\n try {\n if (await this.fs.exists(pkgPath)) {\n const raw = await this.fs.readFile(pkgPath, \"utf-8\")\n const pkg = this.parseCachedPackageJson(pkgPath, raw as string)\n const entry = pkg\n ? (typeof pkg.module === \"string\" && pkg.module) || (typeof pkg.main === \"string\" && pkg.main)\n : null\n if (entry) candidates.push(normalizePath(path.join(basePath, entry)))\n }\n } catch { /* ignore */ }\n }\n\n // Try VFS first (already-loaded files)\n for (const targetPath of candidates) {\n try {\n const stat = this.vfs.statSync(targetPath)\n if (stat.isDirectory()) {\n continue\n }\n\n const content = this.vfs.readFileSync(targetPath)\n const body = typeof content === \"string\"\n ? bufferCtor.from(content)\n : bufferCtor.from(content)\n\n return {\n statusCode: 200,\n statusMessage: \"OK\",\n headers: {\n \"Content-Type\": getStaticMimeType(targetPath),\n \"Content-Length\": String(body.length),\n \"Cache-Control\": \"no-cache\",\n },\n body,\n resolvedPath: targetPath,\n }\n } catch {\n // not in VFS – continue trying\n }\n }\n\n // On-demand: load from observable FS (lazy files hydrated from server)\n for (const targetPath of candidates) {\n try {\n if (!(await this.fs.exists(targetPath))) {\n continue\n }\n\n const stat = await this.fs.stat(targetPath)\n if (stat.isDirectory) {\n continue\n }\n\n const content = await this.fs.readFileBuffer(targetPath)\n\n // Populate VFS so subsequent requests are fast\n this._vfs.withoutMirror(() => {\n this._vfs.mkdirSync(path.dirname(targetPath), { recursive: true })\n this._vfs.writeFileSync(targetPath, content)\n })\n\n const body = bufferCtor.from(content)\n\n return {\n statusCode: 200,\n statusMessage: \"OK\",\n headers: {\n \"Content-Type\": getStaticMimeType(targetPath),\n \"Content-Length\": String(body.length),\n \"Cache-Control\": \"no-cache\",\n },\n body,\n resolvedPath: targetPath,\n }\n } catch {\n // continue trying next candidate\n }\n }\n\n return null\n }\n\n private stopViteServer(): void {\n if (this.viteServer) {\n this.viteServer.stop()\n this.viteServer = undefined\n }\n\n if (this.vitePort !== null) {\n try {\n this.serverBridge?.unregisterServer(this.vitePort)\n } catch {\n // ignore if not registered\n }\n }\n\n this.vitePort = null\n this.vitePreviewUrl = null\n this.vitePreviewListener?.(null)\n }\n\n private resolveBinFromPackageJson(\n binName: string,\n packageName: string,\n pkgJson: Record<string, unknown>,\n pkgDir: string,\n ): string | null {\n if (typeof pkgJson.bin === \"string\") {\n const inferredBinName = typeof pkgJson.name === \"string\"\n ? pkgJson.name.split(\"/\").pop() ?? pkgJson.name\n : packageName.split(\"/\").pop() ?? packageName\n\n if (binName === inferredBinName) {\n return normalizePath(path.join(pkgDir, pkgJson.bin))\n }\n }\n\n if (typeof pkgJson.bin === \"object\" && pkgJson.bin !== null && binName in pkgJson.bin) {\n const namedBins = pkgJson.bin as Record<string, string>\n return normalizePath(path.join(pkgDir, namedBins[binName]))\n }\n\n return null\n }\n\n private async resolveNpmBinPath(binName: string, cwd: string): Promise<string | null> {\n const candidatePackageNames = [binName]\n const packageJsonResult = await this.readPackageJson(cwd)\n\n if (\"pkgJson\" in packageJsonResult) {\n for (const packageName of getPackageJsonDependencyNames(packageJsonResult.pkgJson)) {\n if (!candidatePackageNames.includes(packageName)) {\n candidatePackageNames.push(packageName)\n }\n }\n }\n\n // Check local node_modules first\n for (const packageName of candidatePackageNames) {\n const pkgJsonPath = normalizePath(path.join(cwd, \"node_modules\", packageName, \"package.json\"))\n\n if (!(await this.fs.exists(pkgJsonPath))) {\n continue\n }\n\n try {\n const content = await this.fs.readFile(pkgJsonPath, \"utf-8\")\n const pkgJson = this.parseCachedPackageJson(pkgJsonPath, content as string)\n if (!pkgJson) {\n continue\n }\n\n const pkgDir = normalizePath(path.join(cwd, \"node_modules\", packageName))\n const result = this.resolveBinFromPackageJson(binName, packageName, pkgJson, pkgDir)\n if (result) return result\n } catch {\n // ignore parse errors\n }\n }\n\n // Fallback: check global node_modules\n const globalResult = await this.resolveGlobalBinPath(binName)\n if (globalResult) return globalResult\n\n return null\n }\n\n private async resolveGlobalBinPath(binName: string): Promise<string | null> {\n try {\n const globalModulesDir = GLOBAL_NODE_MODULES_ROOT\n if (!this._vfs.existsSync(globalModulesDir)) return null\n\n const globalPackages = this._vfs.readdirSync(globalModulesDir)\n for (const entry of globalPackages) {\n const packageName = entry\n const pkgJsonPath = normalizePath(path.join(globalModulesDir, packageName, \"package.json\"))\n\n if (!this._vfs.existsSync(pkgJsonPath)) {\n // Check for scoped packages\n if (entry.startsWith(\"@\")) {\n try {\n const scopeDir = normalizePath(path.join(globalModulesDir, entry))\n const scopedPackages = this._vfs.readdirSync(scopeDir)\n for (const scopedPkg of scopedPackages) {\n const scopedName = `${entry}/${scopedPkg}`\n const scopedPkgJsonPath = normalizePath(path.join(globalModulesDir, scopedName, \"package.json\"))\n if (!this._vfs.existsSync(scopedPkgJsonPath)) continue\n\n const raw = this._vfs.readFileSync(scopedPkgJsonPath, \"utf8\")\n const pkgJson = this.parseCachedPackageJson(scopedPkgJsonPath, raw)\n if (!pkgJson) continue\n\n const pkgDir = normalizePath(path.join(globalModulesDir, scopedName))\n const result = this.resolveBinFromPackageJson(binName, scopedName, pkgJson, pkgDir)\n if (result) return result\n }\n } catch { /* ignore */ }\n }\n continue\n }\n\n try {\n const raw = this._vfs.readFileSync(pkgJsonPath, \"utf8\")\n const pkgJson = this.parseCachedPackageJson(pkgJsonPath, raw)\n if (!pkgJson) continue\n\n const pkgDir = normalizePath(path.join(globalModulesDir, packageName))\n const result = this.resolveBinFromPackageJson(binName, packageName, pkgJson, pkgDir)\n if (result) return result\n } catch { /* ignore */ }\n }\n } catch { /* ignore */ }\n\n return null\n }\n\n /**\n * Replace lru-cache CJS entry points with a browser-safe implementation.\n *\n * lru-cache v11's minified CJS uses `require(\"node:diagnostics_channel\")`\n * and private class fields (`static #t`) which can fail inside the browser\n * WASM runtime's `eval()` context, leaving `exports.LRUCache` undefined\n * (\"TypeError: LRUCache is not a constructor\").\n *\n * The fix: overwrite the CJS entry with a clean Map-based LRU cache that\n * covers the full API surface used by lru-cache consumers (hosted-git-info,\n * path-scurry, glob, etc.) without any diagnostics_channel dependency or\n * private class fields.\n */\n private patchLruCacheInNodeModules(nodeModulesDir: string): void {\n const lruCacheShim = `\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LRUCache = void 0;\nvar LRUCache = (function () {\n function LRUCache(options) {\n if (typeof options === \"number\") options = { max: options };\n if (!options) options = {};\n this._max = options.max || Infinity;\n this._maxSize = options.maxSize || 0;\n this._sizeCalculation = options.sizeCalculation || null;\n this._dispose = options.dispose || null;\n this._allowStale = !!options.allowStale;\n this._ttl = options.ttl || 0;\n this._noUpdateTTL = !!options.noUpdateTTL;\n this._map = new Map();\n this._order = [];\n this._sizes = new Map();\n this._totalSize = 0;\n this._timers = new Map();\n }\n Object.defineProperty(LRUCache.prototype, \"size\", { get: function () { return this._map.size; } });\n Object.defineProperty(LRUCache.prototype, \"max\", { get: function () { return this._max; } });\n Object.defineProperty(LRUCache.prototype, \"maxSize\", { get: function () { return this._maxSize; } });\n Object.defineProperty(LRUCache.prototype, \"calculatedSize\", { get: function () { return this._totalSize; } });\n LRUCache.prototype._touch = function (key) {\n var idx = this._order.indexOf(key);\n if (idx > -1) this._order.splice(idx, 1);\n this._order.push(key);\n };\n LRUCache.prototype._evict = function () {\n while (this._order.length > 0 && (this._map.size > this._max || (this._maxSize > 0 && this._totalSize > this._maxSize))) {\n var oldest = this._order.shift();\n if (oldest !== undefined && this._map.has(oldest)) {\n var val = this._map.get(oldest);\n this._map.delete(oldest);\n if (this._sizes.has(oldest)) { this._totalSize -= this._sizes.get(oldest); this._sizes.delete(oldest); }\n if (this._timers.has(oldest)) { clearTimeout(this._timers.get(oldest)); this._timers.delete(oldest); }\n if (this._dispose) this._dispose(val, oldest, \"evict\");\n }\n }\n };\n LRUCache.prototype._isStale = function (key) {\n return false; // TTL timers handle expiry via delete\n };\n LRUCache.prototype.set = function (key, value, options) {\n if (value === undefined) { this.delete(key); return this; }\n var opts = options || {};\n var size = 0;\n if (this._maxSize > 0) {\n size = opts.size || 0;\n if (!size && this._sizeCalculation) size = this._sizeCalculation(value, key);\n if (size > this._maxSize) return this;\n }\n if (this._map.has(key)) {\n var old = this._map.get(key);\n if (this._sizes.has(key)) { this._totalSize -= this._sizes.get(key); }\n if (this._timers.has(key)) { clearTimeout(this._timers.get(key)); this._timers.delete(key); }\n if (this._dispose && !opts.noDisposeOnSet) this._dispose(old, key, \"set\");\n }\n this._map.set(key, value);\n this._touch(key);\n if (this._maxSize > 0 && size > 0) { this._sizes.set(key, size); this._totalSize += size; }\n var ttl = opts.ttl !== undefined ? opts.ttl : this._ttl;\n if (ttl > 0) {\n var self = this;\n this._timers.set(key, setTimeout(function () { self.delete(key); }, ttl));\n }\n this._evict();\n return this;\n };\n LRUCache.prototype.get = function (key, options) {\n if (!this._map.has(key)) return undefined;\n var value = this._map.get(key);\n this._touch(key);\n return value;\n };\n LRUCache.prototype.peek = function (key) {\n return this._map.get(key);\n };\n LRUCache.prototype.has = function (key) {\n return this._map.has(key);\n };\n LRUCache.prototype.delete = function (key) {\n if (!this._map.has(key)) return false;\n var val = this._map.get(key);\n this._map.delete(key);\n var idx = this._order.indexOf(key);\n if (idx > -1) this._order.splice(idx, 1);\n if (this._sizes.has(key)) { this._totalSize -= this._sizes.get(key); this._sizes.delete(key); }\n if (this._timers.has(key)) { clearTimeout(this._timers.get(key)); this._timers.delete(key); }\n if (this._dispose) this._dispose(val, key, \"delete\");\n return true;\n };\n LRUCache.prototype.clear = function () {\n var self = this;\n if (this._dispose) {\n this._map.forEach(function (val, key) { self._dispose(val, key, \"delete\"); });\n }\n this._timers.forEach(function (t) { clearTimeout(t); });\n this._map.clear();\n this._order.length = 0;\n this._sizes.clear();\n this._totalSize = 0;\n this._timers.clear();\n };\n LRUCache.prototype.keys = function () { return this._map.keys(); };\n LRUCache.prototype.values = function () { return this._map.values(); };\n LRUCache.prototype.entries = function () { return this._map.entries(); };\n LRUCache.prototype.find = function (fn, options) {\n for (var it = this._map.entries(), r; !(r = it.next()).done;) {\n if (fn(r.value[1], r.value[0], this)) return this.get(r.value[0], options);\n }\n };\n LRUCache.prototype.forEach = function (fn, thisArg) {\n var self = this;\n this._map.forEach(function (val, key) { fn.call(thisArg || self, val, key, self); });\n };\n LRUCache.prototype.dump = function () { return []; };\n LRUCache.prototype.load = function (arr) {\n this.clear();\n for (var i = 0; i < arr.length; i++) { this.set(arr[i][0], arr[i][1].value, arr[i][1]); }\n };\n LRUCache.prototype.pop = function () {\n if (this._order.length === 0) return undefined;\n var oldest = this._order[0];\n var val = this._map.get(oldest);\n this.delete(oldest);\n return val;\n };\n LRUCache.prototype.purgeStale = function () { return false; };\n LRUCache.prototype.getRemainingTTL = function (key) { return this._map.has(key) ? Infinity : 0; };\n LRUCache.prototype.info = function (key) {\n if (!this._map.has(key)) return undefined;\n return { value: this._map.get(key) };\n };\n LRUCache.prototype[Symbol.iterator] = function () { return this._map.entries(); };\n LRUCache.prototype[Symbol.toStringTag] = \"LRUCache\";\n return LRUCache;\n})();\nexports.LRUCache = LRUCache;\n`\n\n const patchDir = (lruDir: string) => {\n // Overwrite all possible CJS entry points\n const cjsPaths = [\n normalizePath(path.join(lruDir, \"dist\", \"commonjs\", \"index.min.js\")),\n normalizePath(path.join(lruDir, \"dist\", \"commonjs\", \"index.js\")),\n // Also try the package root index (lru-cache v7 style)\n normalizePath(path.join(lruDir, \"index.js\")),\n ]\n let patched = false\n for (const p of cjsPaths) {\n if (this._vfs.existsSync(p)) {\n this._vfs.writeFileSync(p, lruCacheShim)\n patched = true\n }\n }\n // If no known entry was found, check package.json for the actual main field\n if (!patched) {\n const pkgPath = normalizePath(path.join(lruDir, \"package.json\"))\n if (this._vfs.existsSync(pkgPath)) {\n try {\n const pkg = JSON.parse(this._vfs.readFileSync(pkgPath, \"utf8\") as string)\n const mainField = pkg.main || pkg.exports?.[\".\"]?.require?.default || pkg.exports?.[\".\"]?.require\n if (mainField && typeof mainField === \"string\") {\n const mainPath = normalizePath(path.join(lruDir, mainField))\n if (this._vfs.existsSync(mainPath)) {\n this._vfs.writeFileSync(mainPath, lruCacheShim)\n patched = true\n }\n }\n } catch { /* ignore parse errors */ }\n }\n }\n return patched\n }\n\n // Recursively find all lru-cache directories in node_modules\n let patchCount = 0\n const walkNodeModules = (nmDir: string) => {\n if (!this._vfs.existsSync(nmDir)) return\n let entries: string[]\n try {\n entries = this._vfs.readdirSync(nmDir)\n } catch { return }\n for (const entry of entries) {\n if (entry === \"lru-cache\") {\n const lruDir = normalizePath(path.join(nmDir, \"lru-cache\"))\n if (patchDir(lruDir)) patchCount++\n }\n // Scoped packages (@scope/pkg)\n if (entry.startsWith(\"@\")) {\n const scopeDir = normalizePath(path.join(nmDir, entry))\n try {\n for (const scopedEntry of this._vfs.readdirSync(scopeDir)) {\n // Check for lru-cache nested inside scoped package\n const nestedNm = normalizePath(path.join(scopeDir, scopedEntry, \"node_modules\"))\n if (this._vfs.existsSync(nestedNm)) {\n walkNodeModules(nestedNm)\n }\n }\n } catch { /* ignore */ }\n } else {\n // Check nested node_modules inside each package\n const nestedNm = normalizePath(path.join(nmDir, entry, \"node_modules\"))\n if (this._vfs.existsSync(nestedNm)) {\n walkNodeModules(nestedNm)\n }\n }\n }\n }\n\n walkNodeModules(nodeModulesDir)\n\n if (patchCount === 0) {\n console.warn(`[agent-web-os] lru-cache patch: no lru-cache found in ${nodeModulesDir}`)\n } else {\n console.log(`[agent-web-os] lru-cache patch: patched ${patchCount} installation(s) in ${nodeModulesDir}`)\n }\n }\n\n private async registerGlobalBinCommands(packageName: string): Promise<void> {\n if (!this.binCommandRegistrar) return\n\n const pkgJsonPath = normalizePath(path.join(GLOBAL_NODE_MODULES_ROOT, packageName, \"package.json\"))\n if (!this._vfs.existsSync(pkgJsonPath)) return\n\n try {\n const raw = this._vfs.readFileSync(pkgJsonPath, \"utf8\")\n const pkgJson = this.parseCachedPackageJson(pkgJsonPath, raw)\n if (!pkgJson) return\n\n let binNames: string[]\n if (typeof pkgJson.bin === \"string\") {\n const name = typeof pkgJson.name === \"string\"\n ? pkgJson.name.split(\"/\").pop() ?? \"\"\n : \"\"\n binNames = name ? [name] : []\n } else if (typeof pkgJson.bin === \"object\" && pkgJson.bin !== null) {\n binNames = Object.keys(pkgJson.bin)\n } else {\n binNames = []\n }\n\n for (const binName of binNames) {\n if (this.registeredBinCommands.has(binName)) continue\n this.registeredBinCommands.add(binName)\n\n this.binCommandRegistrar(binName, async (args, ctx) => {\n const resolvedPath = await this.resolveGlobalBinPath(binName)\n ?? await this.resolveNpmBinPath(binName, normalizePath(ctx.cwd))\n if (!resolvedPath) {\n return {\n stdout: \"\",\n stderr: `bash: ${binName}: command not found\\n`,\n exitCode: 127,\n }\n }\n\n return this.executeNode([resolvedPath, ...args], ctx)\n })\n }\n } catch { /* ignore */ }\n }\n\n private async resolveAndRegisterBinCommands(command: string, cwd: string): Promise<void> {\n if (!this.binCommandRegistrar) {\n return\n }\n\n const potentialBins = command.split(/&&|\\|\\||;|\\|/).flatMap((part) => {\n const words = part.trim().split(/\\s+/)\n for (const word of words) {\n if (!word || word.includes(\"=\") || word.startsWith(\"/\") || word.startsWith(\"./\") || word.startsWith(\"..\")) {\n continue\n }\n\n return [word]\n }\n\n return []\n })\n\n for (const binName of potentialBins) {\n if (this.registeredBinCommands.has(binName)) {\n continue\n }\n\n const binPath = await this.resolveNpmBinPath(binName, cwd)\n if (!binPath) {\n continue\n }\n\n this.registeredBinCommands.add(binName)\n\n if (binName === \"vite\") {\n this.binCommandRegistrar(binName, async (args, ctx) => {\n return this.executeVite(args, ctx)\n })\n continue\n }\n\n this.binCommandRegistrar(binName, async (args, ctx) => {\n const resolvedPath = await this.resolveNpmBinPath(binName, normalizePath(ctx.cwd))\n if (!resolvedPath) {\n return {\n stdout: \"\",\n stderr: `bash: ${binName}: command not found\\n`,\n exitCode: 127,\n }\n }\n\n return this.executeNode([resolvedPath, ...args], ctx)\n })\n }\n }\n\n private trackOperation(operation: Promise<void>): Promise<void> {\n this.pendingOperations.add(operation)\n\n return operation.finally(() => {\n this.pendingOperations.delete(operation)\n })\n }\n\n private async flushPendingOperations(): Promise<void> {\n while (this.pendingOperations.size > 0) {\n await Promise.all(Array.from(this.pendingOperations))\n }\n }\n\n private async withSuppressedObservableMirroring<T>(operation: () => Promise<T>): Promise<T> {\n this.suppressObservableMirrorCount += 1\n\n try {\n return await operation()\n } finally {\n this.suppressObservableMirrorCount -= 1\n }\n }\n\n private async copyObservablePathIntoVirtualFs(targetPath: string, options?: { force?: boolean }): Promise<void> {\n const normalizedPath = normalizePath(targetPath)\n if (isInternalAlmostNodePath(normalizedPath)) {\n return\n }\n\n if (!options?.force && this.fs.isPathLazy(normalizedPath)) {\n return\n }\n\n try {\n const stat = await this.fs.stat(normalizedPath)\n\n if (stat.isDirectory) {\n this._vfs.withoutMirror(() => {\n this._vfs.mkdirSync(normalizedPath, { recursive: true })\n })\n return\n }\n\n const content = await this.fs.readFileBuffer(normalizedPath)\n this._vfs.withoutMirror(() => {\n this._vfs.mkdirSync(path.dirname(normalizedPath), { recursive: true })\n this._vfs.writeFileSync(normalizedPath, content)\n })\n } catch {\n this._vfs.withoutMirror(() => {\n removeVirtualPath(this._vfs, normalizedPath)\n })\n }\n }\n\n private getNodeModulesPackageRoot(targetPath: string): string | null {\n const normalizedPath = normalizePath(targetPath)\n const nodeModulesMarker = \"/node_modules/\"\n const nodeModulesIndex = normalizedPath.indexOf(nodeModulesMarker)\n\n if (nodeModulesIndex === -1) {\n return null\n }\n\n const packageSegments = normalizedPath.slice(nodeModulesIndex + nodeModulesMarker.length).split(\"/\").filter(Boolean)\n if (packageSegments.length === 0) {\n return null\n }\n\n const packageNameSegments = packageSegments[0]?.startsWith(\"@\")\n ? packageSegments.slice(0, 2)\n : packageSegments.slice(0, 1)\n\n if (packageNameSegments.length === 0) {\n return null\n }\n\n return normalizePath(`${normalizedPath.slice(0, nodeModulesIndex + nodeModulesMarker.length)}${packageNameSegments.join(\"/\")}`)\n }\n\n private async hydrateObservablePackageIntoVirtualFs(packageRoot: string): Promise<void> {\n const normalizedPackageRoot = normalizePath(packageRoot)\n const packagePaths = Array.from(new Set(this.fs.getAllPaths().map((targetPath) => normalizePath(targetPath))))\n .filter((targetPath) => targetPath === normalizedPackageRoot || targetPath.startsWith(`${normalizedPackageRoot}/`))\n .sort((leftPath, rightPath) => leftPath.split(\"/\").length - rightPath.split(\"/\").length)\n\n await this.hydrateObservablePathsIntoVirtualFs(packagePaths)\n }\n\n private async hydrateObservablePathsIntoVirtualFs(targetPaths: string[]): Promise<void> {\n const normalizedPaths = Array.from(new Set(targetPaths.map((targetPath) => normalizePath(targetPath))))\n .sort((leftPath, rightPath) => leftPath.split(\"/\").length - rightPath.split(\"/\").length)\n\n const lazyFilePaths: string[] = []\n\n for (const targetPath of normalizedPaths) {\n try {\n if (this.fs.isPathLazy(targetPath)) {\n lazyFilePaths.push(targetPath)\n continue\n }\n\n const stat = await this.fs.stat(targetPath)\n\n if (stat.isDirectory) {\n this._vfs.withoutMirror(() => {\n this._vfs.mkdirSync(targetPath, { recursive: true })\n })\n continue\n }\n\n await this.copyObservablePathIntoVirtualFs(targetPath, { force: true })\n } catch {\n // ignore paths that disappear during hydration\n }\n }\n\n if (lazyFilePaths.length === 0) {\n return\n }\n\n if (this.batchFileLoader) {\n const contents = await this.batchFileLoader(lazyFilePaths)\n\n await this.fs.suppressObservability(async () => {\n for (const [filePath, content] of contents) {\n this.fs.writeFileSync(filePath, content)\n }\n })\n\n this._vfs.withoutMirror(() => {\n for (const [filePath, content] of contents) {\n this._vfs.mkdirSync(path.dirname(filePath), { recursive: true })\n this._vfs.writeFileSync(filePath, content)\n }\n })\n\n const missingPaths = lazyFilePaths.filter((lazyPath) => !contents.has(lazyPath))\n for (const missingPath of missingPaths) {\n await this.copyObservablePathIntoVirtualFs(missingPath, { force: true })\n }\n return\n }\n\n for (const lazyPath of lazyFilePaths) {\n await this.copyObservablePathIntoVirtualFs(lazyPath, { force: true })\n }\n }\n\n private async hydrateObservableDependencyPackagesIntoVirtualFs(cwd: string): Promise<void> {\n const packageJsonResult = await this.readPackageJson(cwd)\n if (\"error\" in packageJsonResult) {\n return\n }\n\n const dependencyPaths: string[] = []\n\n for (const packageName of getPackageJsonDependencyNames(packageJsonResult.pkgJson)) {\n const packageRoot = normalizePath(path.join(cwd, \"node_modules\", packageName))\n\n if (!(await this.fs.exists(packageRoot))) {\n continue\n }\n\n for (const targetPath of this.fs.getAllPaths()) {\n const normalizedPath = normalizePath(targetPath)\n if (normalizedPath === packageRoot || normalizedPath.startsWith(`${packageRoot}/`)) {\n dependencyPaths.push(normalizedPath)\n }\n }\n }\n\n await this.hydrateObservablePathsIntoVirtualFs(dependencyPaths)\n }\n\n private async hydrateObservableProjectIntoVirtualFs(cwd: string): Promise<void> {\n const normalizedCwd = normalizePath(cwd)\n const cwdPrefix = normalizedCwd.endsWith(\"/\") ? normalizedCwd : `${normalizedCwd}/`\n const projectPaths = Array.from(new Set(this.fs.getAllPaths().map((targetPath) => normalizePath(targetPath))))\n .filter((targetPath) => {\n if (isInternalAlmostNodePath(targetPath)) {\n return false\n }\n\n if (targetPath !== normalizedCwd && !targetPath.startsWith(cwdPrefix)) {\n return false\n }\n\n return !targetPath.startsWith(`${cwdPrefix}node_modules/`)\n })\n .sort((leftPath, rightPath) => leftPath.split(\"/\").length - rightPath.split(\"/\").length)\n\n await this.hydrateObservablePathsIntoVirtualFs(projectPaths)\n }\n\n async applyVirtualWrite(targetPath: string, data: string | Uint8Array): Promise<void> {\n return this.trackOperation((async () => {\n const normalizedPath = normalizePath(targetPath)\n if (isInternalAlmostNodePath(normalizedPath)) {\n return\n }\n\n await this.withSuppressedObservableMirroring(async () => {\n await ensureObservableDirectory(this.fs, path.dirname(normalizedPath))\n await this.fs.writeFile(normalizedPath, data)\n })\n })())\n }\n\n async applyVirtualMkdir(targetPath: string): Promise<void> {\n return this.trackOperation((async () => {\n const normalizedPath = normalizePath(targetPath)\n if (isInternalAlmostNodePath(normalizedPath)) {\n return\n }\n\n await this.withSuppressedObservableMirroring(async () => {\n await this.fs.mkdir(normalizedPath, { recursive: true })\n })\n })())\n }\n\n async applyVirtualRemove(targetPath: string, recursive: boolean): Promise<void> {\n return this.trackOperation((async () => {\n const normalizedPath = normalizePath(targetPath)\n if (isInternalAlmostNodePath(normalizedPath)) {\n return\n }\n\n await this.withSuppressedObservableMirroring(async () => {\n await this.fs.rm(normalizedPath, { force: true, recursive })\n })\n })())\n }\n\n async applyVirtualRename(previousPath: string, nextPath: string): Promise<void> {\n return this.trackOperation((async () => {\n const normalizedPreviousPath = normalizePath(previousPath)\n const normalizedNextPath = normalizePath(nextPath)\n if (isInternalAlmostNodePath(normalizedPreviousPath) || isInternalAlmostNodePath(normalizedNextPath)) {\n return\n }\n\n await this.withSuppressedObservableMirroring(async () => {\n await ensureObservableDirectory(this.fs, path.dirname(normalizedNextPath))\n await this.fs.mv(normalizedPreviousPath, normalizedNextPath)\n })\n })())\n }\n\n private async ensureInitialized(): Promise<void> {\n if (this.initialized) {\n return\n }\n\n if (!this.initializePromise) {\n this.initializePromise = (async () => {\n const allPaths = Array.from(new Set(this.fs.getAllPaths().map((targetPath) => normalizePath(targetPath))))\n .filter((targetPath) => !isInternalAlmostNodePath(targetPath))\n .sort((leftPath, rightPath) => leftPath.split(\"/\").length - rightPath.split(\"/\").length)\n\n for (const targetPath of allPaths) {\n await this.copyObservablePathIntoVirtualFs(targetPath)\n }\n\n this.initialized = true\n })()\n }\n\n await this.initializePromise\n }\n\n private async readPackageJson(cwd: string): Promise<{ pkgJson: PackageJsonLike } | { error: ExecResult }> {\n const packageJsonPath = normalizePath(path.join(cwd, \"package.json\"))\n\n if (!this.vfs.existsSync(packageJsonPath)) {\n await this.copyObservablePathIntoVirtualFs(packageJsonPath, { force: true })\n }\n\n if (!this.vfs.existsSync(packageJsonPath)) {\n return {\n error: {\n stdout: \"\",\n stderr: \"npm ERR! no package.json found\\n\",\n exitCode: 1,\n },\n }\n }\n\n try {\n return {\n pkgJson: (this.parseCachedPackageJson(packageJsonPath, this.vfs.readFileSync(packageJsonPath, \"utf8\")) ?? {}) as PackageJsonLike,\n }\n } catch {\n return {\n error: {\n stdout: \"\",\n stderr: \"npm ERR! Failed to parse package.json\\n\",\n exitCode: 1,\n },\n }\n }\n }\n\n private async runNpmScript(scriptName: string | undefined, cwd: string, ctx: CommandContext): Promise<ExecResult> {\n if (!scriptName) {\n const packageJsonResult = await this.readPackageJson(cwd)\n if (\"error\" in packageJsonResult) {\n return packageJsonResult.error\n }\n\n const scripts = packageJsonResult.pkgJson.scripts || {}\n const scriptNames = Object.keys(scripts)\n if (scriptNames.length === 0) {\n return { stdout: \"\", stderr: \"\", exitCode: 0 }\n }\n\n const lifecycleScripts = new Set([\n \"prestart\",\n \"start\",\n \"poststart\",\n \"pretest\",\n \"test\",\n \"posttest\",\n \"prestop\",\n \"stop\",\n \"poststop\",\n ])\n const lifecycleNames = scriptNames.filter((name) => lifecycleScripts.has(name))\n const customNames = scriptNames.filter((name) => !lifecycleScripts.has(name))\n\n let stdout = `Lifecycle scripts included in ${packageJsonResult.pkgJson.name || \"\"}:\\n`\n for (const listedScriptName of lifecycleNames) {\n stdout += ` ${listedScriptName}\\n ${scripts[listedScriptName]}\\n`\n }\n\n if (customNames.length > 0) {\n stdout += \"\\navailable via `npm run-script`:\\n\"\n for (const listedScriptName of customNames) {\n stdout += ` ${listedScriptName}\\n ${scripts[listedScriptName]}\\n`\n }\n }\n\n return { stdout, stderr: \"\", exitCode: 0 }\n }\n\n const packageJsonResult = await this.readPackageJson(cwd)\n if (\"error\" in packageJsonResult) {\n return packageJsonResult.error\n }\n\n const { pkgJson } = packageJsonResult\n const scripts = pkgJson.scripts || {}\n const scriptCommand = scripts[scriptName]\n if (!scriptCommand) {\n const availableScripts = Object.keys(scripts)\n let stderr = `npm ERR! Missing script: \"${scriptName}\"\\n`\n\n if (availableScripts.length > 0) {\n stderr += \"\\nnpm ERR! Available scripts:\\n\"\n for (const availableScript of availableScripts) {\n stderr += `npm ERR! ${availableScript}\\n`\n stderr += `npm ERR! ${scripts[availableScript]}\\n`\n }\n }\n\n return { stdout: \"\", stderr, exitCode: 1 }\n }\n\n if (!ctx.exec) {\n return {\n stdout: \"\",\n stderr: \"npm ERR! Script execution not available in this context\\n\",\n exitCode: 1,\n }\n }\n\n await this.resolveAndRegisterBinCommands(scriptCommand, cwd)\n\n const preScriptCommand = scripts[`pre${scriptName}`]\n if (preScriptCommand) {\n await this.resolveAndRegisterBinCommands(preScriptCommand, cwd)\n }\n\n const postScriptCommand = scripts[`post${scriptName}`]\n if (postScriptCommand) {\n await this.resolveAndRegisterBinCommands(postScriptCommand, cwd)\n }\n\n const execCommand = ctx.exec\n\n const baseEnv = getCommandEnvironment(ctx)\n const npmEnv: Record<string, string> = {\n ...baseEnv,\n npm_lifecycle_event: scriptName,\n PATH: Array.from(new Set([\n normalizePath(path.join(cwd, \"node_modules/.bin\")),\n \"/node_modules/.bin\",\n `${GLOBAL_NODE_MODULES_ROOT}/.bin`,\n ...(baseEnv.PATH?.trim() || DEFAULT_PATH).split(\":\").filter(Boolean),\n ])).join(\":\"),\n }\n\n if (pkgJson.name) {\n npmEnv.npm_package_name = pkgJson.name\n }\n\n if (pkgJson.version) {\n npmEnv.npm_package_version = pkgJson.version\n }\n\n let stdout = \"\"\n let stderr = \"\"\n const label = `${pkgJson.name || \"\"}@${pkgJson.version || \"\"}`\n\n const runScript = async (name: string, command: string) => {\n stderr += `\\n> ${label} ${name}\\n> ${command}\\n\\n`\n const result = await execCommand(command, { cwd, env: npmEnv })\n stdout += result.stdout\n stderr += result.stderr\n return result\n }\n\n if (preScriptCommand) {\n const preResult = await runScript(`pre${scriptName}`, preScriptCommand)\n if (preResult.exitCode !== 0) {\n return { stdout, stderr, exitCode: preResult.exitCode }\n }\n }\n\n const mainResult = await runScript(scriptName, scriptCommand)\n if (mainResult.exitCode !== 0) {\n return { stdout, stderr, exitCode: mainResult.exitCode }\n }\n\n if (postScriptCommand) {\n const postResult = await runScript(`post${scriptName}`, postScriptCommand)\n if (postResult.exitCode !== 0) {\n return { stdout, stderr, exitCode: postResult.exitCode }\n }\n }\n\n return { stdout, stderr, exitCode: 0 }\n }\n\n async executeNpm(args: string[], ctx: CommandContext): Promise<ExecResult> {\n const cwd = normalizePath(ctx.cwd)\n\n await this.ensureInitialized()\n await this.flushPendingOperations()\n\n const subcommand = args[0]\n let result: ExecResult\n\n switch (subcommand) {\n case undefined:\n case \"help\":\n case \"--help\":\n result = { stdout: `${NPM_USAGE}\\n`, stderr: \"\", exitCode: 0 }\n break\n case \"-v\":\n case \"--version\":\n result = { stdout: `${ALMOSTNODE_NPM_VERSION}\\n`, stderr: \"\", exitCode: 0 }\n break\n case \"run\":\n case \"run-script\":\n result = await this.runNpmScript(args[1], cwd, ctx)\n break\n case \"start\":\n result = await this.runNpmScript(\"start\", cwd, ctx)\n break\n case \"test\":\n case \"t\":\n case \"tst\":\n result = await this.runNpmScript(\"test\", cwd, ctx)\n break\n case \"install\":\n case \"i\":\n case \"add\": {\n const isGlobal = args.includes(\"-g\") || args.includes(\"--global\")\n const packageSpecs = args.slice(1).filter((arg) => !arg.startsWith(\"-\"))\n let stdout = \"\"\n\n try {\n if (isGlobal) {\n if (packageSpecs.length === 0) {\n result = { stdout: \"\", stderr: \"npm ERR! npm install -g requires a package name\\n\", exitCode: 1 }\n break\n }\n\n await ensureEsbuildWasm()\n\n // Ensure the global node_modules directory exists\n this._vfs.mkdirSync(GLOBAL_NODE_MODULES_ROOT, { recursive: true })\n await ensureObservableDirectory(this.fs, GLOBAL_NODE_MODULES_ROOT)\n\n // Ensure a minimal package.json exists at the global prefix\n const globalPkgJsonPath = normalizePath(path.join(GLOBAL_NODE_MODULES_ROOT, \"..\", \"package.json\"))\n if (!this._vfs.existsSync(globalPkgJsonPath)) {\n const minimalPkg = JSON.stringify({ name: \"global\", version: \"0.0.0\", private: true }, null, 2)\n this._vfs.mkdirSync(path.dirname(globalPkgJsonPath), { recursive: true })\n this._vfs.writeFileSync(globalPkgJsonPath, minimalPkg)\n await this.withSuppressedObservableMirroring(async () => {\n await ensureObservableDirectory(this.fs, path.dirname(globalPkgJsonPath))\n await this.fs.writeFile(globalPkgJsonPath, minimalPkg)\n })\n }\n\n const globalCwd = normalizePath(path.join(GLOBAL_NODE_MODULES_ROOT, \"..\"))\n const packageManager = new PackageManager(this.vfs as unknown as VirtualFS, { cwd: globalCwd })\n\n for (const packageSpec of packageSpecs) {\n const installResult = await packageManager.install(packageSpec, {\n save: true,\n onProgress: (message) => {\n const line = `${message}\\n`\n stdout += line\n this.stdoutWriter?.(line)\n },\n })\n stdout += `added ${installResult.added.length} packages\\n`\n\n // Register bin commands from the installed global package\n const installedPkgName = packageSpec.replace(/@[^/]*$/, \"\") || packageSpec\n await this.registerGlobalBinCommands(installedPkgName)\n\n // Also try to register by checking what was actually installed\n for (const added of installResult.added) {\n const addedName = typeof added === \"string\" ? String(added).replace(/@[^/]*$/, \"\") : (added as { name?: string })?.name\n if (addedName && addedName !== installedPkgName) {\n await this.registerGlobalBinCommands(addedName)\n }\n }\n }\n\n // Patch lru-cache to avoid diagnostics_channel crash in browser\n this.patchLruCacheInNodeModules(GLOBAL_NODE_MODULES_ROOT)\n\n result = { stdout, stderr: \"\", exitCode: 0 }\n } else {\n const packageJsonResult = await this.readPackageJson(cwd)\n if (\"error\" in packageJsonResult) {\n result = packageJsonResult.error\n break\n }\n\n await ensureEsbuildWasm()\n\n const packageManager = new PackageManager(this.vfs as unknown as VirtualFS, { cwd })\n\n if (packageSpecs.length === 0) {\n const installResult = await packageManager.installFromPackageJson({\n onProgress: (message) => {\n const line = `${message}\\n`\n stdout += line\n this.stdoutWriter?.(line)\n },\n })\n stdout += `added ${installResult.added.length} packages\\n`\n } else {\n for (const packageSpec of packageSpecs) {\n const installResult = await packageManager.install(packageSpec, {\n save: true,\n onProgress: (message) => {\n const line = `${message}\\n`\n stdout += line\n this.stdoutWriter?.(line)\n },\n })\n stdout += `added ${installResult.added.length} packages\\n`\n }\n }\n\n // Patch lru-cache to avoid diagnostics_channel crash in browser\n const localNodeModules = normalizePath(path.join(cwd, \"node_modules\"))\n this.patchLruCacheInNodeModules(localNodeModules)\n\n result = { stdout, stderr: \"\", exitCode: 0 }\n }\n } catch (error) {\n result = {\n stdout,\n stderr: `npm ERR! ${error instanceof Error ? error.message : String(error)}\\n`,\n exitCode: 1,\n }\n }\n break\n }\n case \"ls\":\n case \"list\": {\n const packageManager = new PackageManager(this.vfs as unknown as VirtualFS, { cwd })\n const packages = Object.entries(packageManager.list())\n\n if (packages.length === 0) {\n result = { stdout: \"(empty)\\n\", stderr: \"\", exitCode: 0 }\n break\n }\n\n result = {\n stdout: `${cwd}\\n${packages.map(([name, version]) => `+-- ${name}@${version}`).join(\"\\n\")}\\n`,\n stderr: \"\",\n exitCode: 0,\n }\n break\n }\n default:\n result = {\n stdout: \"\",\n stderr: `npm ERR! Unknown command: \"${subcommand}\"\\n`,\n exitCode: 1,\n }\n break\n }\n\n await this.flushPendingOperations()\n return result\n }\n\n async executeNode(args: string[], ctx: CommandContext): Promise<ExecResult> {\n const cwd = normalizePath(ctx.cwd)\n const invocation:\n | { kind: \"version\" }\n | { kind: \"eval\"; code: string; argv: string[]; filename: string }\n | { kind: \"run-file\"; scriptPath: string; argv: string[] }\n | { kind: \"error\"; message: string } = (() => {\n if (args.length === 0) {\n return {\n kind: \"error\",\n message: \"REPL mode is not supported in just-bash. Use node -e <code> or node <file>.\",\n }\n }\n\n const [firstArg, ...restArgs] = args\n\n if (firstArg === \"-v\" || firstArg === \"--version\") {\n return { kind: \"version\" }\n }\n\n if (firstArg === \"-h\" || firstArg === \"--help\") {\n return {\n kind: \"error\",\n message: \"Supported node modes in just-bash: node <file>, node -e <code>, node -p <expression>, node --version.\",\n }\n }\n\n if (firstArg === \"-e\" || firstArg === \"--eval\") {\n const code = restArgs[0]?.trim() || \"\"\n if (!code) {\n return { kind: \"error\", message: \"node -e requires inline code\" }\n }\n\n return {\n kind: \"eval\",\n code,\n argv: [\"node\", ...restArgs.slice(1)],\n filename: `${ALMOSTNODE_INTERNAL_ROOT}/eval.js`,\n }\n }\n\n if (firstArg === \"-p\" || firstArg === \"--print\") {\n const expression = restArgs[0]?.trim() || \"\"\n if (!expression) {\n return { kind: \"error\", message: \"node -p requires an expression\" }\n }\n\n return {\n kind: \"eval\",\n code: [\n `const __monospace_print_result = ((${expression}));`,\n \"if (typeof __monospace_print_result !== 'undefined') {\",\n \" process.stdout.write(String(__monospace_print_result) + '\\\\n')\",\n \"}\",\n ].join(\"\\n\"),\n argv: [\"node\", ...restArgs.slice(1)],\n filename: `${ALMOSTNODE_INTERNAL_ROOT}/print.js`,\n }\n }\n\n if (firstArg.startsWith(\"-\")) {\n return {\n kind: \"error\",\n message: `Unsupported node flag in just-bash: ${firstArg}`,\n }\n }\n\n const scriptPath = path.isAbsolute(firstArg)\n ? normalizePath(firstArg)\n : normalizePath(path.resolve(cwd, firstArg))\n\n return {\n kind: \"run-file\",\n scriptPath,\n argv: [\"node\", scriptPath, ...restArgs],\n }\n })()\n\n if (invocation.kind === \"error\") {\n return {\n stdout: \"\",\n stderr: `${invocation.message}\\n`,\n exitCode: 1,\n }\n }\n\n if (invocation.kind === \"version\") {\n return {\n stdout: `${ALMOSTNODE_NODE_VERSION}\\n`,\n stderr: \"\",\n exitCode: 0,\n }\n }\n\n await this.ensureInitialized()\n\n await this.flushPendingOperations()\n\n if (invocation.kind === \"run-file\") {\n if (!(await this.fs.exists(invocation.scriptPath))) {\n return {\n stdout: \"\",\n stderr: `Cannot find module '${invocation.scriptPath}'\\n`,\n exitCode: 1,\n }\n }\n\n const packageRoot = this.getNodeModulesPackageRoot(invocation.scriptPath)\n if (packageRoot) {\n await this.hydrateObservablePackageIntoVirtualFs(packageRoot)\n await this.hydrateObservableProjectIntoVirtualFs(cwd)\n await this.hydrateObservableDependencyPackagesIntoVirtualFs(cwd)\n } else {\n await this.copyObservablePathIntoVirtualFs(invocation.scriptPath, { force: true })\n }\n }\n\n const stdoutChunks: string[] = []\n const stderrChunks: string[] = []\n const runtimeEnv: Record<string, string> = {\n ...getCommandEnvironment(ctx),\n PWD: cwd,\n }\n\n const runtime = new Runtime(this.vfs as unknown as VirtualFS, {\n cwd,\n env: runtimeEnv,\n onStdout: (chunk) => {\n appendChunk(stdoutChunks, chunk)\n this.stdoutWriter?.(chunk)\n },\n onStderr: (chunk) => appendChunk(stderrChunks, chunk),\n onConsole: (method, consoleArgs) => {\n const formatted = consoleArgs.map((value) => {\n if (typeof value === \"string\") {\n return value\n }\n\n try {\n return JSON.stringify(value)\n } catch {\n return String(value)\n }\n }).join(\" \")\n if (\n !formatted\n || formatted.startsWith(\"[process] cwd() called\")\n || formatted.startsWith(\"[process] chdir called:\")\n || formatted.startsWith(\"[process] chdir result:\")\n ) {\n return\n }\n\n const chunk = `${formatted}\\n`\n if (method === \"error\" || method === \"warn\" || method === \"trace\") {\n appendChunk(stderrChunks, chunk)\n return\n }\n\n appendChunk(stdoutChunks, chunk)\n this.stdoutWriter?.(chunk)\n },\n })\n\n const process = runtime.getProcess()\n\n // Enable TTY mode so TUI applications detect a terminal\n process.stdout.isTTY = true\n process.stderr.isTTY = true\n if (process.stdin) {\n process.stdin.isTTY = true\n }\n const stdoutAny = process.stdout as unknown as Record<string, unknown>\n stdoutAny.columns = this._terminalColumns\n stdoutAny.rows = this._terminalRows\n stdoutAny.getWindowSize = () => [this._terminalColumns, this._terminalRows]\n\n // Shim stdin.setRawMode so TUI apps don't crash; track calls as\n // an interactivity signal for the exit-detection heuristic below.\n let rawModeRequested = false\n if (process.stdin) {\n const originalSetRawMode = process.stdin.setRawMode\n process.stdin.setRawMode = (mode: boolean) => {\n rawModeRequested = rawModeRequested || mode\n if (typeof originalSetRawMode === \"function\") {\n return originalSetRawMode.call(process.stdin, mode)\n }\n return process.stdin\n }\n }\n\n // Forward stdin from the host terminal into process.stdin\n this._stdinHandler = process.stdin\n ? (data: string) => { process.stdin.emit(\"data\", data) }\n : null\n\n const originalExit = process.exit\n let exitCalled = false\n let exitCode = 0\n let syncExecution = true\n let resolveExit: ((code: number) => void) | null = null\n const exitPromise = new Promise<number>((resolve) => {\n resolveExit = resolve\n })\n const previousConsole = {\n log: console.log,\n info: console.info,\n warn: console.warn,\n error: console.error,\n debug: console.debug,\n trace: console.trace,\n dir: console.dir,\n table: console.table,\n }\n\n console.log = () => undefined\n console.info = () => undefined\n console.warn = () => undefined\n console.error = () => undefined\n console.debug = () => undefined\n console.trace = () => undefined\n console.dir = () => undefined\n console.table = () => undefined\n\n process.exit = ((code = 0) => {\n if (!exitCalled) {\n exitCalled = true\n exitCode = code\n resolveExit?.(code)\n }\n\n if (syncExecution) {\n throw new Error(`Process exited with code ${code}`)\n }\n\n return undefined as never\n }) as typeof process.exit\n\n process.argv = invocation.argv\n process.argv0 = \"node\"\n process.execPath = NODE_EXEC_PATH\n\n // Shim process.pid and process.kill so TUI apps (e.g. pi-coding-agent)\n // that call process.kill(process.pid, signal) don't crash\n if (process.pid == null) {\n process.pid = 1\n }\n if (typeof (process as any).kill !== \"function\") {\n (process as any).kill = () => { /* no-op in browser */ }\n }\n\n const rejectionHandler = (event: PromiseRejectionEvent) => {\n const reason = event.reason\n if (reason instanceof Error && reason.message.startsWith(\"Process exited with code\")) {\n event.preventDefault()\n }\n }\n\n const canListenForUnhandledRejection = typeof globalThis.addEventListener === \"function\"\n && typeof globalThis.removeEventListener === \"function\"\n\n if (canListenForUnhandledRejection) {\n globalThis.addEventListener(\"unhandledrejection\", rejectionHandler)\n }\n\n try {\n if (invocation.kind === \"eval\") {\n runtime.execute(invocation.code, invocation.filename)\n } else {\n runtime.runFile(invocation.scriptPath)\n }\n\n syncExecution = false\n\n // If the process registered stdin listeners (interactive / TUI), keep\n // it alive until process.exit() is called instead of exiting after 0 ms.\n // Yield a tick first so async main() functions (like pi-coding-agent)\n // have a chance to register listeners / call setRawMode before we check.\n await new Promise<void>((resolve) => { setTimeout(resolve, 0) })\n\n const hasStdinListeners = process.stdin\n && (process.stdin.listenerCount(\"data\") > 0 || process.stdin.listenerCount(\"keypress\") > 0)\n const isInteractive = hasStdinListeners || rawModeRequested\n const asyncExitCode = isInteractive\n ? await exitPromise\n : await Promise.race<number | null>([\n exitPromise,\n new Promise<null>((resolve) => {\n setTimeout(() => resolve(null), 0)\n }),\n ])\n\n await this.flushPendingOperations()\n\n if (exitCalled || asyncExitCode !== null) {\n return {\n stdout: stdoutChunks.join(\"\"),\n stderr: stderrChunks.join(\"\"),\n exitCode: asyncExitCode ?? exitCode,\n }\n }\n\n return {\n stdout: stdoutChunks.join(\"\"),\n stderr: stderrChunks.join(\"\"),\n exitCode: 0,\n }\n } catch (error) {\n syncExecution = false\n await this.flushPendingOperations()\n\n if (error instanceof Error) {\n const match = /Process exited with code (\\d+)/.exec(error.message)\n if (match) {\n return {\n stdout: stdoutChunks.join(\"\"),\n stderr: stderrChunks.join(\"\"),\n exitCode: Number.parseInt(match[1] ?? \"\", 10),\n }\n }\n }\n\n appendChunk(stderrChunks, `${error instanceof Error ? (error.stack || error.message) : String(error)}\\n`)\n return {\n stdout: stdoutChunks.join(\"\"),\n stderr: stderrChunks.join(\"\"),\n exitCode: 1,\n }\n } finally {\n this._stdinHandler = null\n if (canListenForUnhandledRejection) {\n globalThis.removeEventListener(\"unhandledrejection\", rejectionHandler)\n }\n process.exit = originalExit\n console.log = previousConsole.log\n console.info = previousConsole.info\n console.warn = previousConsole.warn\n console.error = previousConsole.error\n console.debug = previousConsole.debug\n console.trace = previousConsole.trace\n console.dir = previousConsole.dir\n console.table = previousConsole.table\n }\n }\n\n async executeVite(args: string[], ctx: CommandContext): Promise<ExecResult> {\n const cwd = normalizePath(ctx.cwd)\n\n await this.ensureInitialized()\n await this.flushPendingOperations()\n\n const cwdPrefix = cwd.endsWith(\"/\") ? cwd : `${cwd}/`\n const allLazyPaths = this.fs.getAllPaths()\n .map((p) => normalizePath(p))\n .filter((p) => (p === cwd || p.startsWith(cwdPrefix)) && !isInternalAlmostNodePath(p) && this.fs.isPathLazy(p))\n\n // Eagerly hydrate the files Vite is likely to need immediately, but skip\n // declaration files, source maps, docs, and similar node_modules artifacts\n // that create unnecessary batch traffic during startup.\n const pathsToLoad = allLazyPaths.filter((targetPath) => {\n if (!targetPath.startsWith(`${cwdPrefix}node_modules/`)) {\n return true\n }\n\n const baseName = path.basename(targetPath).toLowerCase()\n if (baseName === \"package.json\") {\n return true\n }\n\n if (\n baseName.endsWith(\".d.ts\")\n || baseName.endsWith(\".d.mts\")\n || baseName.endsWith(\".d.cts\")\n || baseName.endsWith(\".map\")\n || baseName === \"readme\"\n || baseName.startsWith(\"readme.\")\n || baseName === \"license\"\n || baseName.startsWith(\"license.\")\n || baseName === \"changelog\"\n || baseName.startsWith(\"changelog.\")\n ) {\n return false\n }\n\n return /\\.(?:js|mjs|cjs|jsx|ts|tsx|json|css|scss|sass|less|wasm|svg)$/.test(baseName)\n })\n\n if (pathsToLoad.length > 0 && this.batchFileLoader) {\n const contents = await this.batchFileLoader(pathsToLoad)\n await this.fs.suppressObservability(async () => {\n for (const [filePath, content] of contents) {\n this.fs.writeFileSync(filePath, content)\n }\n })\n this._vfs.withoutMirror(() => {\n for (const [filePath, content] of contents) {\n this._vfs.mkdirSync(path.dirname(filePath), { recursive: true })\n this._vfs.writeFileSync(filePath, content)\n }\n })\n } else {\n for (const lazyPath of pathsToLoad) {\n await this.copyObservablePathIntoVirtualFs(lazyPath, { force: true })\n }\n }\n\n let port = 5173\n for (let i = 0; i < args.length; i++) {\n if (args[i] === \"--port\" && args[i + 1]) {\n const parsed = Number.parseInt(args[i + 1], 10)\n if (!Number.isNaN(parsed) && parsed > 0) {\n port = parsed\n }\n }\n }\n\n this.stopViteServer()\n\n const bridge = await getServerBridge()\n this.serverBridge = bridge\n\n await ensureEsbuildWasm()\n\n this.viteServer = new ViteDevServer(this.vfs as unknown as VirtualFS, { port, root: cwd })\n this.viteServer.start()\n\n await bridge.initServiceWorker()\n const virtualPrefix = `/__virtual__/${port}`\n bridge.registerServer({\n get listening() { return true },\n address: () => ({ port, address: \"127.0.0.1\", family: \"IPv4\" }),\n handleRequest: async (method, url, headers, body) => {\n let response = await this.viteServer!.handleRequest(method, url, headers, typeof body === \"string\" ? undefined : body)\n\n // almostnode's generic static file path goes through DevServer.serveFile(),\n // which resolves an already-resolved path a second time and can 404 files that\n // do exist in the session VFS. Fall back to serving the file directly when the\n // request path resolves to an existing workspace file.\n let resolvedFilePath = \"\"\n if (response.statusCode === 404 && response.body) {\n const BufferCtor = response.body.constructor as unknown as {\n from(input: string | Uint8Array): typeof response.body\n }\n const fallbackResponse = await this.serveExistingVirtualStaticFile(cwd, url, BufferCtor)\n if (fallbackResponse) {\n resolvedFilePath = fallbackResponse.resolvedPath.replace(cwd, \"\")\n response = fallbackResponse\n }\n }\n\n // Rewrite absolute paths in HTML responses so that resources\n // like /src/main.tsx resolve to /__virtual__/<port>/src/main.tsx.\n // Without this, the browser loads them from the Next.js origin\n // and the service worker's referer-based routing can't detect\n // they belong to the virtual server.\n const contentType = response.headers[\"Content-Type\"] || response.headers[\"content-type\"] || \"\"\n if (contentType.includes(\"text/html\") && response.body) {\n const rawHtml = response.body.toString(\"utf8\")\n const html = this.transformTextWithCache(\n `html:${virtualPrefix}:${url}`,\n rawHtml,\n (input) => input\n .replace(/<script\\s+type\\s*=\\s*[\"']importmap[\"'][^>]*>[\\s\\S]*?<\\/script>/gi, \"\")\n .replace(/(<script\\b[^>]*\\bsrc\\s*=\\s*[\"'])\\/((?!\\/)[^\"']*[\"'])/gi, `$1${virtualPrefix}/$2`)\n .replace(/(<link\\b[^>]*\\bhref\\s*=\\s*[\"'])\\/((?!\\/)[^\"']*[\"'])/gi, `$1${virtualPrefix}/$2`),\n )\n\n const BufferCtor = response.body.constructor as unknown as { from(s: string): typeof response.body }\n const newBody = BufferCtor.from(html)\n return {\n ...response,\n body: newBody,\n headers: {\n ...response.headers,\n \"Content-Length\": String(newBody.length),\n },\n }\n }\n\n // Rewrite bare import specifiers in JS responses so the browser\n // can resolve them to /__virtual__/<port>/node_modules/... paths\n // served by ViteDevServer through the service worker.\n // Also wrap CJS modules in an ESM shim so they can be imported.\n if (contentType.includes(\"javascript\") && response.body) {\n const requestPath = resolvedFilePath || getRequestPathname(url)\n const rawJs = response.body.toString(\"utf8\")\n const js = this.transformTextWithCache(\n `js:${virtualPrefix}:${requestPath}`,\n rawJs,\n (input) => {\n let transformed = this.rewriteBareImports(input, cwd, virtualPrefix)\n transformed = wrapCjsAsEsm(transformed, virtualPrefix, requestPath)\n if (/\\bprocess\\.env\\b/.test(transformed) && !/\\bvar\\s+process\\b/.test(transformed)) {\n transformed = `var process = { env: { NODE_ENV: \"production\" } };\\n${transformed}`\n }\n return transformed\n },\n )\n const BufferCtor = response.body.constructor as unknown as { from(s: string): typeof response.body }\n const newBody = BufferCtor.from(js)\n return {\n ...response,\n body: newBody,\n headers: {\n ...response.headers,\n \"Content-Length\": String(newBody.length),\n },\n }\n }\n\n return response\n },\n }, port)\n\n const serverUrl = bridge.getServerUrl(port)\n this.vitePort = port\n this.vitePreviewUrl = `${serverUrl}/`\n this.vitePreviewListener?.(this.vitePreviewUrl)\n\n return {\n stdout: [\n \"\",\n \" VITE ready\",\n \"\",\n ` ➜ Local: ${this.vitePreviewUrl}`,\n \"\",\n ].join(\"\\n\"),\n stderr: \"\",\n exitCode: 0,\n }\n }\n}","import { defineCommand } from \"just-bash/browser\"\r\nimport { AlmostNodeSession } from \"./almostnode-session\"\r\nimport {\r\n attachBrowserBashSessionRuntimeAdapter,\r\n createBrowserBashSession,\r\n type BrowserBashSession,\r\n} from \"./browser-bash-session\"\r\nimport { getServerBridge, resetServerBridge, type ServerBridge } from \"./server-bridge\"\r\n\r\nconst enabledNodeSessions = new WeakSet<BrowserBashSession>()\r\n\r\nexport type NodeBrowserBashSessionOptions = {\r\n rootPath?: string\r\n env?: Record<string, string>\r\n fsOptions?: import(\"./observable-in-memory-fs\").ObservableInMemoryFsOptions\r\n python?: boolean\r\n customCommands?: import(\"just-bash/browser\").CustomCommand[]\r\n}\r\n\r\nexport async function enableNode(session: BrowserBashSession): Promise<BrowserBashSession> {\r\n if (enabledNodeSessions.has(session)) {\r\n return session\r\n }\r\n\r\n const almostNodeSession = new AlmostNodeSession(session.fs)\r\n almostNodeSession.setBinCommandRegistrar((name, handler) => {\r\n session.bash.registerCommand(defineCommand(name, handler))\r\n })\r\n\r\n attachBrowserBashSessionRuntimeAdapter(session, {\r\n setStdoutWriter: (writer) => almostNodeSession.setStdoutWriter(writer),\r\n writeStdin: (data) => almostNodeSession.writeStdin(data),\r\n setTerminalSize: (columns, rows) => almostNodeSession.setTerminalSize(columns, rows),\r\n dispose: () => almostNodeSession.dispose(),\r\n })\r\n\r\n session.bash.registerCommand(\r\n defineCommand(\"node\", async (args, ctx) => almostNodeSession.executeNode(args, ctx)),\r\n )\r\n session.bash.registerCommand(\r\n defineCommand(\"npm\", async (args, ctx) => almostNodeSession.executeNpm(args, ctx)),\r\n )\r\n\r\n enabledNodeSessions.add(session)\r\n return session\r\n}\r\n\r\nexport async function createNodeBrowserBashSession(\r\n options: NodeBrowserBashSessionOptions = {},\r\n): Promise<BrowserBashSession> {\r\n const session = createBrowserBashSession(options)\r\n await enableNode(session)\r\n return session\r\n}\r\n\r\nexport { getServerBridge, resetServerBridge, type ServerBridge }"],"mappings":"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","names":["match","m","packageJsonResult","scripts","stdout","stderr"]}
|
|
1
|
+
{"version":3,"sources":["../node_modules/almostnode/src/utils/hash.ts","../node_modules/almostnode/src/virtual-fs.ts","../node_modules/almostnode/src/shims/fs.ts","../node_modules/almostnode/src/shims/process.ts","../node_modules/almostnode/src/shims/https.ts","../node_modules/almostnode/src/shims/url.ts","../node_modules/almostnode/src/shims/querystring.ts","../node_modules/almostnode/src/shims/util.ts","../node_modules/almostnode/src/shims/tty.ts","../node_modules/almostnode/src/shims/os.ts","../node_modules/almostnode/src/shims/zlib.ts","../node_modules/almostnode/src/shims/dns.ts","../node_modules/almostnode/src/shims/buffer.ts","../node_modules/almostnode/src/shims/child_process.ts","../node_modules/almostnode/src/shims/vfs-adapter.ts","../node_modules/almostnode/src/shims/chokidar.ts","../node_modules/almostnode/src/shims/ws.ts","../node_modules/almostnode/src/shims/fsevents.ts","../node_modules/almostnode/src/shims/readdirp.ts","../node_modules/almostnode/src/shims/module.ts","../node_modules/almostnode/src/shims/perf_hooks.ts","../node_modules/almostnode/src/shims/worker_threads.ts","../node_modules/almostnode/src/shims/esbuild.ts","../node_modules/almostnode/src/shims/rollup.ts","../node_modules/acorn/dist/acorn.mjs","../node_modules/almostnode/src/shims/v8.ts","../node_modules/almostnode/src/shims/readline.ts","../node_modules/almostnode/src/shims/tls.ts","../node_modules/almostnode/src/shims/http2.ts","../node_modules/almostnode/src/shims/cluster.ts","../node_modules/almostnode/src/shims/dgram.ts","../node_modules/almostnode/src/shims/vm.ts","../node_modules/almostnode/src/shims/inspector.ts","../node_modules/almostnode/src/shims/async_hooks.ts","../node_modules/almostnode/src/shims/domain.ts","../node_modules/almostnode/src/shims/diagnostics_channel.ts","../node_modules/almostnode/src/shims/assert.ts","../node_modules/resolve.exports/dist/index.mjs","../node_modules/almostnode/src/frameworks/code-transforms.ts","../node_modules/almostnode/src/runtime.ts","../node_modules/almostnode/src/dev-server.ts","../node_modules/almostnode/src/frameworks/vite-dev-server.ts","../src/server-bridge.ts","../src/almostnode-session.ts","../src/node.ts"],"sourcesContent":["/**\n * Simple hash function for content-based cache invalidation.\n * Uses djb2-style hashing for fast string hashing.\n */\nexport function simpleHash(str: string): string {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n hash = ((hash << 5) - hash) + str.charCodeAt(i);\n hash |= 0;\n }\n return hash.toString(36);\n}\n","/**\n * Virtual File System - In-memory file tree with POSIX-like operations\n */\n\nimport type { VFSSnapshot, VFSFileEntry } from './runtime-interface';\nimport { uint8ToBase64, base64ToUint8 } from './utils/binary-encoding';\n\nexport interface FSNode {\n type: 'file' | 'directory';\n content?: Uint8Array;\n children?: Map<string, FSNode>;\n mtime: number;\n}\n\n// Simple EventEmitter for VFS change notifications\ntype VFSChangeListener = (path: string, content: string) => void;\ntype VFSDeleteListener = (path: string) => void;\ntype VFSEventListener = VFSChangeListener | VFSDeleteListener;\n\nexport interface Stats {\n isFile(): boolean;\n isDirectory(): boolean;\n isSymbolicLink(): boolean;\n isBlockDevice(): boolean;\n isCharacterDevice(): boolean;\n isFIFO(): boolean;\n isSocket(): boolean;\n size: number;\n mode: number;\n mtime: Date;\n atime: Date;\n ctime: Date;\n birthtime: Date;\n mtimeMs: number;\n atimeMs: number;\n ctimeMs: number;\n birthtimeMs: number;\n nlink: number;\n uid: number;\n gid: number;\n dev: number;\n ino: number;\n rdev: number;\n blksize: number;\n blocks: number;\n}\n\nexport type WatchEventType = 'change' | 'rename';\nexport type WatchListener = (eventType: WatchEventType, filename: string | null) => void;\n\nexport interface FSWatcher {\n close(): void;\n ref(): this;\n unref(): this;\n}\n\ninterface WatcherEntry {\n listener: WatchListener;\n recursive: boolean;\n closed: boolean;\n}\n\n/**\n * Create a Node.js-style error with code property\n */\nexport interface NodeError extends Error {\n code: string;\n errno: number;\n syscall: string;\n path?: string;\n}\n\nexport function createNodeError(\n code: 'ENOENT' | 'ENOTDIR' | 'EISDIR' | 'EEXIST' | 'ENOTEMPTY',\n syscall: string,\n path: string,\n message?: string\n): NodeError {\n const errno: Record<string, number> = {\n ENOENT: -2,\n ENOTDIR: -20,\n EISDIR: -21,\n EEXIST: -17,\n ENOTEMPTY: -39,\n };\n\n const messages: Record<string, string> = {\n ENOENT: 'no such file or directory',\n ENOTDIR: 'not a directory',\n EISDIR: 'is a directory',\n EEXIST: 'file already exists',\n ENOTEMPTY: 'directory not empty',\n };\n\n const err = new Error(\n message || `${code}: ${messages[code]}, ${syscall} '${path}'`\n ) as NodeError;\n err.code = code;\n err.errno = errno[code];\n err.syscall = syscall;\n err.path = path;\n return err;\n}\n\nexport class VirtualFS {\n private root: FSNode;\n private encoder = new TextEncoder();\n private decoder = new TextDecoder();\n private watchers = new Map<string, Set<WatcherEntry>>();\n private eventListeners = new Map<string, Set<VFSEventListener>>();\n\n constructor() {\n this.root = {\n type: 'directory',\n children: new Map(),\n mtime: Date.now(),\n };\n }\n\n /**\n * Add event listener (for change notifications to workers)\n */\n on(event: 'change', listener: VFSChangeListener): this;\n on(event: 'delete', listener: VFSDeleteListener): this;\n on(event: string, listener: VFSEventListener): this {\n if (!this.eventListeners.has(event)) {\n this.eventListeners.set(event, new Set());\n }\n this.eventListeners.get(event)!.add(listener);\n return this;\n }\n\n /**\n * Remove event listener\n */\n off(event: 'change', listener: VFSChangeListener): this;\n off(event: 'delete', listener: VFSDeleteListener): this;\n off(event: string, listener: VFSEventListener): this {\n const listeners = this.eventListeners.get(event);\n if (listeners) {\n listeners.delete(listener);\n }\n return this;\n }\n\n /**\n * Emit event to listeners\n */\n private emit(event: 'change', path: string, content: string): void;\n private emit(event: 'delete', path: string): void;\n private emit(event: string, ...args: unknown[]): void {\n const listeners = this.eventListeners.get(event);\n if (listeners) {\n for (const listener of listeners) {\n try {\n (listener as (...args: unknown[]) => void)(...args);\n } catch (err) {\n console.error('Error in VFS event listener:', err);\n }\n }\n }\n }\n\n /**\n * Serialize the entire file tree to a snapshot (for worker transfer)\n */\n toSnapshot(): VFSSnapshot {\n const files: VFSFileEntry[] = [];\n this.serializeNode('/', this.root, files);\n return { files };\n }\n\n private serializeNode(path: string, node: FSNode, files: VFSFileEntry[]): void {\n if (node.type === 'file') {\n // Encode binary content as base64\n let content = '';\n if (node.content && node.content.length > 0) {\n content = uint8ToBase64(node.content);\n }\n files.push({ path, type: 'file', content });\n } else if (node.type === 'directory') {\n files.push({ path, type: 'directory' });\n if (node.children) {\n for (const [name, child] of node.children) {\n const childPath = path === '/' ? `/${name}` : `${path}/${name}`;\n this.serializeNode(childPath, child, files);\n }\n }\n }\n }\n\n /**\n * Create a VirtualFS from a snapshot\n */\n static fromSnapshot(snapshot: VFSSnapshot): VirtualFS {\n const vfs = new VirtualFS();\n\n // Sort entries to ensure directories are created before their contents\n const sortedFiles = snapshot.files\n .map((entry, i) => ({ entry, depth: entry.path.split('/').length, i }))\n .sort((a, b) => a.depth - b.depth || a.i - b.i)\n .map(x => x.entry);\n\n for (const entry of sortedFiles) {\n if (entry.path === '/') continue; // Skip root\n\n if (entry.type === 'directory') {\n vfs.mkdirSync(entry.path, { recursive: true });\n } else if (entry.type === 'file') {\n // Decode base64 content\n let content: Uint8Array;\n if (entry.content) {\n content = base64ToUint8(entry.content);\n } else {\n content = new Uint8Array(0);\n }\n // Ensure parent directory exists\n const parentPath = entry.path.substring(0, entry.path.lastIndexOf('/')) || '/';\n if (parentPath !== '/' && !vfs.existsSync(parentPath)) {\n vfs.mkdirSync(parentPath, { recursive: true });\n }\n vfs.writeFileSyncInternal(entry.path, content, false); // Don't emit events during restore\n }\n }\n\n return vfs;\n }\n\n /**\n * Internal write that optionally emits events\n */\n private writeFileSyncInternal(path: string, data: string | Uint8Array, emitEvent: boolean): void {\n const normalized = this.normalizePath(path);\n const parentPath = this.getParentPath(normalized);\n const basename = this.getBasename(normalized);\n\n if (!basename) {\n throw new Error(`EISDIR: illegal operation on a directory, '${path}'`);\n }\n\n const parent = this.ensureDirectory(parentPath);\n const existed = parent.children!.has(basename);\n\n const content = typeof data === 'string' ? this.encoder.encode(data) : data;\n\n parent.children!.set(basename, {\n type: 'file',\n content,\n mtime: Date.now(),\n });\n\n if (emitEvent) {\n // Notify watchers\n this.notifyWatchers(normalized, existed ? 'change' : 'rename');\n // Emit change event for worker sync\n this.emit('change', normalized, typeof data === 'string' ? data : this.decoder.decode(data));\n }\n }\n\n /**\n * Normalize path - resolve . and .. segments, ensure leading /\n */\n private normalizePath(path: string): string {\n if (!path.startsWith('/')) {\n path = '/' + path;\n }\n\n const parts = path.split('/').filter(Boolean);\n const resolved: string[] = [];\n\n for (const part of parts) {\n if (part === '..') {\n resolved.pop();\n } else if (part !== '.') {\n resolved.push(part);\n }\n }\n\n return '/' + resolved.join('/');\n }\n\n /**\n * Get path segments from normalized path\n */\n private getPathSegments(path: string): string[] {\n return this.normalizePath(path).split('/').filter(Boolean);\n }\n\n /**\n * Get parent directory path\n */\n private getParentPath(path: string): string {\n const normalized = this.normalizePath(path);\n const lastSlash = normalized.lastIndexOf('/');\n return lastSlash <= 0 ? '/' : normalized.slice(0, lastSlash);\n }\n\n /**\n * Get basename from path\n */\n private getBasename(path: string): string {\n const normalized = this.normalizePath(path);\n const lastSlash = normalized.lastIndexOf('/');\n return normalized.slice(lastSlash + 1);\n }\n\n /**\n * Get node at path, returns undefined if not found\n */\n private getNode(path: string): FSNode | undefined {\n const segments = this.getPathSegments(path);\n let current = this.root;\n\n for (const segment of segments) {\n if (current.type !== 'directory' || !current.children) {\n return undefined;\n }\n const child = current.children.get(segment);\n if (!child) {\n return undefined;\n }\n current = child;\n }\n\n return current;\n }\n\n /**\n * Get or create directory at path (for mkdir -p behavior)\n */\n private ensureDirectory(path: string): FSNode {\n const segments = this.getPathSegments(path);\n let current = this.root;\n\n for (const segment of segments) {\n if (!current.children) {\n current.children = new Map();\n }\n\n let child = current.children.get(segment);\n if (!child) {\n child = { type: 'directory', children: new Map(), mtime: Date.now() };\n current.children.set(segment, child);\n } else if (child.type !== 'directory') {\n throw new Error(`ENOTDIR: not a directory, '${path}'`);\n }\n\n current = child;\n }\n\n return current;\n }\n\n /**\n * Check if path exists\n */\n existsSync(path: string): boolean {\n return this.getNode(path) !== undefined;\n }\n\n /**\n * Get stats for path\n */\n statSync(path: string): Stats {\n const node = this.getNode(path);\n if (!node) {\n throw createNodeError('ENOENT', 'stat', path);\n }\n\n const size = node.type === 'file' ? (node.content?.length || 0) : 0;\n const mtime = node.mtime;\n\n return {\n isFile: () => node.type === 'file',\n isDirectory: () => node.type === 'directory',\n isSymbolicLink: () => false,\n isBlockDevice: () => false,\n isCharacterDevice: () => false,\n isFIFO: () => false,\n isSocket: () => false,\n size,\n mode: node.type === 'directory' ? 0o755 : 0o644,\n mtime: new Date(mtime),\n atime: new Date(mtime),\n ctime: new Date(mtime),\n birthtime: new Date(mtime),\n mtimeMs: mtime,\n atimeMs: mtime,\n ctimeMs: mtime,\n birthtimeMs: mtime,\n nlink: 1,\n uid: 1000,\n gid: 1000,\n dev: 0,\n ino: 0,\n rdev: 0,\n blksize: 4096,\n blocks: Math.ceil(size / 512),\n };\n }\n\n /**\n * lstatSync - same as statSync for our virtual FS (no symlinks)\n */\n lstatSync(path: string): Stats {\n return this.statSync(path);\n }\n\n /**\n * Read file contents as Uint8Array\n */\n readFileSync(path: string): Uint8Array;\n readFileSync(path: string, encoding: 'utf8' | 'utf-8'): string;\n readFileSync(path: string, encoding?: 'utf8' | 'utf-8'): Uint8Array | string {\n const node = this.getNode(path);\n\n if (!node) {\n throw createNodeError('ENOENT', 'open', path);\n }\n\n if (node.type !== 'file') {\n throw createNodeError('EISDIR', 'read', path);\n }\n\n const content = node.content || new Uint8Array(0);\n\n if (encoding === 'utf8' || encoding === 'utf-8') {\n return this.decoder.decode(content);\n }\n\n return content;\n }\n\n /**\n * Write data to file, creating parent directories as needed\n */\n writeFileSync(path: string, data: string | Uint8Array): void {\n this.writeFileSyncInternal(path, data, true);\n }\n\n /**\n * Create directory, optionally with recursive parent creation\n */\n mkdirSync(path: string, options?: { recursive?: boolean }): void {\n const normalized = this.normalizePath(path);\n\n if (options?.recursive) {\n this.ensureDirectory(normalized);\n return;\n }\n\n const parentPath = this.getParentPath(normalized);\n const basename = this.getBasename(normalized);\n\n if (!basename) {\n return; // Root directory already exists\n }\n\n const parent = this.getNode(parentPath);\n\n if (!parent) {\n throw createNodeError('ENOENT', 'mkdir', parentPath);\n }\n\n if (parent.type !== 'directory') {\n throw createNodeError('ENOTDIR', 'mkdir', parentPath);\n }\n\n if (parent.children!.has(basename)) {\n throw createNodeError('EEXIST', 'mkdir', path);\n }\n\n parent.children!.set(basename, {\n type: 'directory',\n children: new Map(),\n mtime: Date.now(),\n });\n }\n\n /**\n * Read directory contents\n */\n readdirSync(path: string): string[] {\n const node = this.getNode(path);\n\n if (!node) {\n throw createNodeError('ENOENT', 'scandir', path);\n }\n\n if (node.type !== 'directory') {\n throw createNodeError('ENOTDIR', 'scandir', path);\n }\n\n return Array.from(node.children!.keys());\n }\n\n /**\n * Remove file\n */\n unlinkSync(path: string): void {\n const normalized = this.normalizePath(path);\n const parentPath = this.getParentPath(normalized);\n const basename = this.getBasename(normalized);\n\n const parent = this.getNode(parentPath);\n\n if (!parent || parent.type !== 'directory') {\n throw createNodeError('ENOENT', 'unlink', path);\n }\n\n const node = parent.children!.get(basename);\n\n if (!node) {\n throw createNodeError('ENOENT', 'unlink', path);\n }\n\n if (node.type !== 'file') {\n throw createNodeError('EISDIR', 'unlink', path);\n }\n\n parent.children!.delete(basename);\n\n // Notify watchers\n this.notifyWatchers(normalized, 'rename');\n // Emit delete event for worker sync\n this.emit('delete', normalized);\n }\n\n /**\n * Remove directory (must be empty)\n */\n rmdirSync(path: string): void {\n const normalized = this.normalizePath(path);\n const parentPath = this.getParentPath(normalized);\n const basename = this.getBasename(normalized);\n\n if (!basename) {\n throw new Error(`EPERM: operation not permitted, '${path}'`);\n }\n\n const parent = this.getNode(parentPath);\n\n if (!parent || parent.type !== 'directory') {\n throw createNodeError('ENOENT', 'rmdir', path);\n }\n\n const node = parent.children!.get(basename);\n\n if (!node) {\n throw createNodeError('ENOENT', 'rmdir', path);\n }\n\n if (node.type !== 'directory') {\n throw createNodeError('ENOTDIR', 'rmdir', path);\n }\n\n if (node.children!.size > 0) {\n throw createNodeError('ENOTEMPTY', 'rmdir', path);\n }\n\n parent.children!.delete(basename);\n }\n\n /**\n * Rename/move file or directory\n */\n renameSync(oldPath: string, newPath: string): void {\n const normalizedOld = this.normalizePath(oldPath);\n const normalizedNew = this.normalizePath(newPath);\n\n const oldParentPath = this.getParentPath(normalizedOld);\n const oldBasename = this.getBasename(normalizedOld);\n const newParentPath = this.getParentPath(normalizedNew);\n const newBasename = this.getBasename(normalizedNew);\n\n const oldParent = this.getNode(oldParentPath);\n\n if (!oldParent || oldParent.type !== 'directory') {\n throw createNodeError('ENOENT', 'rename', oldPath);\n }\n\n const node = oldParent.children!.get(oldBasename);\n\n if (!node) {\n throw createNodeError('ENOENT', 'rename', oldPath);\n }\n\n const newParent = this.ensureDirectory(newParentPath);\n\n oldParent.children!.delete(oldBasename);\n newParent.children!.set(newBasename, node);\n\n // Notify watchers\n this.notifyWatchers(normalizedOld, 'rename');\n this.notifyWatchers(normalizedNew, 'rename');\n }\n\n /**\n * Read file with optional options parameter\n */\n readFile(\n path: string,\n optionsOrCallback?: { encoding?: string } | ((err: Error | null, data?: Uint8Array | string) => void),\n callback?: (err: Error | null, data?: Uint8Array | string) => void\n ): void {\n const actualCallback = typeof optionsOrCallback === 'function' ? optionsOrCallback : callback;\n const options = typeof optionsOrCallback === 'object' ? optionsOrCallback : undefined;\n\n try {\n const data = options?.encoding\n ? this.readFileSync(path, options.encoding as 'utf8')\n : this.readFileSync(path);\n if (actualCallback) {\n setTimeout(() => actualCallback(null, data), 0);\n }\n } catch (err) {\n if (actualCallback) {\n setTimeout(() => actualCallback(err as Error), 0);\n }\n }\n }\n\n /**\n * Async stat\n */\n stat(path: string, callback: (err: Error | null, stats?: Stats) => void): void {\n try {\n const stats = this.statSync(path);\n setTimeout(() => callback(null, stats), 0);\n } catch (err) {\n setTimeout(() => callback(err as Error), 0);\n }\n }\n\n /**\n * Async lstat\n */\n lstat(path: string, callback: (err: Error | null, stats?: Stats) => void): void {\n this.stat(path, callback);\n }\n\n /**\n * Async readdir\n */\n readdir(\n path: string,\n optionsOrCallback?: { withFileTypes?: boolean } | ((err: Error | null, files?: string[]) => void),\n callback?: (err: Error | null, files?: string[]) => void\n ): void {\n const actualCallback = typeof optionsOrCallback === 'function' ? optionsOrCallback : callback;\n\n try {\n const files = this.readdirSync(path);\n if (actualCallback) {\n setTimeout(() => actualCallback(null, files), 0);\n }\n } catch (err) {\n if (actualCallback) {\n setTimeout(() => actualCallback(err as Error), 0);\n }\n }\n }\n\n /**\n * Async realpath\n */\n realpath(path: string, callback: (err: Error | null, resolvedPath?: string) => void): void {\n try {\n const resolved = this.realpathSync(path);\n setTimeout(() => callback(null, resolved), 0);\n } catch (err) {\n setTimeout(() => callback(err as Error), 0);\n }\n }\n\n /**\n * Sync realpath - in our VFS, just normalize the path\n */\n realpathSync(path: string): string {\n const normalized = this.normalizePath(path);\n if (!this.existsSync(normalized)) {\n throw createNodeError('ENOENT', 'realpath', path);\n }\n return normalized;\n }\n\n /**\n * Watch for file changes\n */\n watch(\n filename: string,\n optionsOrListener?: { persistent?: boolean; recursive?: boolean; encoding?: string } | WatchListener,\n listener?: WatchListener\n ): FSWatcher {\n const normalized = this.normalizePath(filename);\n\n // Parse arguments\n let options: { persistent?: boolean; recursive?: boolean } = {};\n let actualListener: WatchListener | undefined;\n\n if (typeof optionsOrListener === 'function') {\n actualListener = optionsOrListener;\n } else if (optionsOrListener) {\n options = optionsOrListener;\n actualListener = listener;\n } else {\n actualListener = listener;\n }\n\n // Create watcher entry\n const entry: WatcherEntry = {\n listener: actualListener || (() => {}),\n recursive: options.recursive || false,\n closed: false,\n };\n\n // Add to watchers map\n if (!this.watchers.has(normalized)) {\n this.watchers.set(normalized, new Set());\n }\n this.watchers.get(normalized)!.add(entry);\n\n // Return FSWatcher interface\n const watcher: FSWatcher = {\n close: () => {\n entry.closed = true;\n const watcherSet = this.watchers.get(normalized);\n if (watcherSet) {\n watcherSet.delete(entry);\n if (watcherSet.size === 0) {\n this.watchers.delete(normalized);\n }\n }\n },\n ref: () => watcher,\n unref: () => watcher,\n };\n\n return watcher;\n }\n\n /**\n * Notify watchers of file changes\n */\n private notifyWatchers(path: string, eventType: WatchEventType): void {\n const normalized = this.normalizePath(path);\n const basename = this.getBasename(normalized);\n\n // Check direct watchers on this file\n const directWatchers = this.watchers.get(normalized);\n if (directWatchers) {\n for (const entry of directWatchers) {\n if (!entry.closed) {\n try {\n entry.listener(eventType, basename);\n } catch (err) {\n console.error('Error in file watcher:', err);\n }\n }\n }\n }\n\n // Check parent directory watchers (recursive and non-recursive)\n let currentPath = this.getParentPath(normalized);\n let relativePath = basename;\n\n while (currentPath) {\n const parentWatchers = this.watchers.get(currentPath);\n if (parentWatchers) {\n for (const entry of parentWatchers) {\n if (!entry.closed) {\n // Non-recursive watchers only get notified for direct children\n const isDirectChild = this.getParentPath(normalized) === currentPath;\n if (entry.recursive || isDirectChild) {\n try {\n entry.listener(eventType, relativePath);\n } catch (err) {\n console.error('Error in file watcher:', err);\n }\n }\n }\n }\n }\n\n if (currentPath === '/') break;\n relativePath = this.getBasename(currentPath) + '/' + relativePath;\n currentPath = this.getParentPath(currentPath);\n }\n }\n\n /**\n * Access check - in our VFS, always succeeds if file exists\n */\n accessSync(path: string, mode?: number): void {\n if (!this.existsSync(path)) {\n throw createNodeError('ENOENT', 'access', path);\n }\n }\n\n /**\n * Async access\n */\n access(path: string, modeOrCallback?: number | ((err: Error | null) => void), callback?: (err: Error | null) => void): void {\n const actualCallback = typeof modeOrCallback === 'function' ? modeOrCallback : callback;\n try {\n this.accessSync(path);\n if (actualCallback) setTimeout(() => actualCallback(null), 0);\n } catch (err) {\n if (actualCallback) setTimeout(() => actualCallback(err as Error), 0);\n }\n }\n\n /**\n * Copy file\n */\n copyFileSync(src: string, dest: string): void {\n const content = this.readFileSync(src);\n this.writeFileSync(dest, content);\n }\n\n /**\n * Create read stream - simplified implementation\n */\n createReadStream(path: string): {\n on: (event: string, cb: (...args: unknown[]) => void) => void;\n pipe: (dest: unknown) => unknown;\n } {\n const self = this;\n const listeners: Record<string, ((...args: unknown[]) => void)[]> = {};\n\n const stream = {\n on(event: string, cb: (...args: unknown[]) => void) {\n if (!listeners[event]) listeners[event] = [];\n listeners[event].push(cb);\n return stream;\n },\n pipe(dest: unknown) {\n return dest;\n },\n };\n\n // Emit data asynchronously\n setTimeout(() => {\n try {\n const data = self.readFileSync(path);\n listeners['data']?.forEach((cb) => cb(data));\n listeners['end']?.forEach((cb) => cb());\n } catch (err) {\n listeners['error']?.forEach((cb) => cb(err));\n }\n }, 0);\n\n return stream;\n }\n\n /**\n * Create write stream - simplified implementation\n */\n createWriteStream(path: string): {\n write: (data: string | Uint8Array) => boolean;\n end: (data?: string | Uint8Array) => void;\n on: (event: string, cb: (...args: unknown[]) => void) => void;\n } {\n const self = this;\n const chunks: Uint8Array[] = [];\n const listeners: Record<string, ((...args: unknown[]) => void)[]> = {};\n const encoder = new TextEncoder();\n\n return {\n write(data: string | Uint8Array): boolean {\n const chunk = typeof data === 'string' ? encoder.encode(data) : data;\n chunks.push(chunk);\n return true;\n },\n end(data?: string | Uint8Array): void {\n if (data) {\n const chunk = typeof data === 'string' ? encoder.encode(data) : data;\n chunks.push(chunk);\n }\n // Combine chunks\n const totalLength = chunks.reduce((sum, chunk) => sum + chunk.length, 0);\n const combined = new Uint8Array(totalLength);\n let offset = 0;\n for (const chunk of chunks) {\n combined.set(chunk, offset);\n offset += chunk.length;\n }\n self.writeFileSync(path, combined);\n listeners['finish']?.forEach((cb) => cb());\n listeners['close']?.forEach((cb) => cb());\n },\n on(event: string, cb: (...args: unknown[]) => void) {\n if (!listeners[event]) listeners[event] = [];\n listeners[event].push(cb);\n return this;\n },\n };\n }\n}\n","/**\n * Node.js fs module shim\n * Wraps VirtualFS to provide Node.js compatible API\n */\n\nimport { VirtualFS, createNodeError } from '../virtual-fs';\nimport type { Stats, FSWatcher, WatchListener, WatchEventType } from '../virtual-fs';\nimport { uint8ToBase64, uint8ToHex } from '../utils/binary-encoding';\n\nexport type { Stats, FSWatcher, WatchListener, WatchEventType };\n\nconst _decoder = new TextDecoder();\nconst _encoder = new TextEncoder();\n\nexport type PathLike = string | URL;\n\nexport interface FsShim {\n readFileSync(path: PathLike): Buffer;\n readFileSync(path: PathLike, encoding: 'utf8' | 'utf-8'): string;\n readFileSync(path: PathLike, options: { encoding: 'utf8' | 'utf-8' }): string;\n readFileSync(path: PathLike, options: { encoding?: null }): Buffer;\n writeFileSync(path: PathLike, data: string | Uint8Array): void;\n existsSync(path: PathLike): boolean;\n mkdirSync(path: PathLike, options?: { recursive?: boolean }): void;\n readdirSync(path: PathLike): string[];\n readdirSync(path: PathLike, options: { withFileTypes: true }): Dirent[];\n readdirSync(path: PathLike, options?: { withFileTypes?: boolean; encoding?: string } | string): string[] | Dirent[];\n statSync(path: PathLike): Stats;\n lstatSync(path: PathLike): Stats;\n fstatSync(fd: number): Stats;\n unlinkSync(path: PathLike): void;\n rmdirSync(path: PathLike): void;\n renameSync(oldPath: PathLike, newPath: PathLike): void;\n realpathSync(path: PathLike): string;\n accessSync(path: PathLike, mode?: number): void;\n copyFileSync(src: PathLike, dest: PathLike): void;\n openSync(path: string, flags: string | number, mode?: number): number;\n closeSync(fd: number): void;\n readSync(fd: number, buffer: Buffer | Uint8Array, offset: number, length: number, position: number | null): number;\n writeSync(fd: number, buffer: Buffer | Uint8Array | string, offset?: number, length?: number, position?: number | null): number;\n ftruncateSync(fd: number, len?: number): void;\n fsyncSync(fd: number): void;\n fdatasyncSync(fd: number): void;\n mkdtempSync(prefix: string): string;\n rmSync(path: string, options?: { recursive?: boolean; force?: boolean }): void;\n watch(filename: string, options?: { persistent?: boolean; recursive?: boolean }, listener?: WatchListener): FSWatcher;\n watch(filename: string, listener?: WatchListener): FSWatcher;\n readFile(path: string, callback: (err: Error | null, data?: Uint8Array) => void): void;\n readFile(path: string, options: { encoding: string }, callback: (err: Error | null, data?: string) => void): void;\n stat(path: string, callback: (err: Error | null, stats?: Stats) => void): void;\n lstat(path: string, callback: (err: Error | null, stats?: Stats) => void): void;\n readdir(path: string, callback: (err: Error | null, files?: string[]) => void): void;\n realpath(path: string, callback: (err: Error | null, resolvedPath?: string) => void): void;\n access(path: string, callback: (err: Error | null) => void): void;\n access(path: string, mode: number, callback: (err: Error | null) => void): void;\n createReadStream(path: string): unknown;\n createWriteStream(path: string): unknown;\n promises: FsPromises;\n constants: FsConstants;\n}\n\nexport interface FsPromises {\n readFile(path: PathLike): Promise<Buffer>;\n readFile(path: PathLike, encoding: 'utf8' | 'utf-8'): Promise<string>;\n readFile(path: PathLike, options: { encoding: 'utf8' | 'utf-8' }): Promise<string>;\n writeFile(path: PathLike, data: string | Uint8Array): Promise<void>;\n stat(path: PathLike): Promise<Stats>;\n lstat(path: PathLike): Promise<Stats>;\n readdir(path: PathLike): Promise<string[]>;\n mkdir(path: PathLike, options?: { recursive?: boolean }): Promise<void>;\n unlink(path: PathLike): Promise<void>;\n rmdir(path: PathLike): Promise<void>;\n rename(oldPath: PathLike, newPath: PathLike): Promise<void>;\n access(path: PathLike, mode?: number): Promise<void>;\n realpath(path: PathLike): Promise<string>;\n copyFile(src: PathLike, dest: PathLike): Promise<void>;\n}\n\nexport interface FsConstants {\n F_OK: number;\n R_OK: number;\n W_OK: number;\n X_OK: number;\n}\n\n/**\n * Dirent class - represents a directory entry returned by readdirSync with withFileTypes: true\n */\nexport class Dirent {\n name: string;\n private _isDirectory: boolean;\n private _isFile: boolean;\n\n constructor(name: string, isDirectory: boolean, isFile: boolean) {\n this.name = name;\n this._isDirectory = isDirectory;\n this._isFile = isFile;\n }\n\n isDirectory(): boolean {\n return this._isDirectory;\n }\n\n isFile(): boolean {\n return this._isFile;\n }\n\n isBlockDevice(): boolean {\n return false;\n }\n\n isCharacterDevice(): boolean {\n return false;\n }\n\n isFIFO(): boolean {\n return false;\n }\n\n isSocket(): boolean {\n return false;\n }\n\n isSymbolicLink(): boolean {\n return false;\n }\n}\n\n/**\n * Create a Buffer-like object from Uint8Array\n * This is a minimal Buffer implementation for browser compatibility\n */\nfunction createBuffer(data: Uint8Array): Buffer {\n const buffer = data as Buffer;\n\n // Add Buffer-specific methods\n Object.defineProperty(buffer, 'toString', {\n value: function (encoding?: string) {\n if (encoding === 'utf8' || encoding === 'utf-8' || !encoding) {\n return _decoder.decode(this);\n }\n if (encoding === 'base64') {\n return uint8ToBase64(this);\n }\n if (encoding === 'hex') {\n return uint8ToHex(this);\n }\n throw new Error(`Unsupported encoding: ${encoding}`);\n },\n writable: true,\n configurable: true,\n });\n\n return buffer;\n}\n\n/**\n * Convert a path-like value to a string path\n * Handles URL objects (file:// protocol) and Buffer\n */\n\nfunction toPath(pathLike: unknown, getCwd?: () => string): string {\n let path: string;\n\n if (typeof pathLike === 'string') {\n path = pathLike;\n } else if (pathLike instanceof URL) {\n // Handle file:// URLs\n if (pathLike.protocol === 'file:') {\n // Remove file:// prefix and decode\n path = decodeURIComponent(pathLike.pathname);\n } else {\n throw new Error(`Unsupported URL protocol: ${pathLike.protocol}`);\n }\n } else if (Buffer.isBuffer(pathLike)) {\n path = pathLike.toString('utf8');\n } else if (pathLike && typeof pathLike === 'object' && 'toString' in pathLike) {\n path = String(pathLike);\n } else {\n throw new TypeError(`Path must be a string, URL, or Buffer. Received: ${typeof pathLike}`);\n }\n\n // Resolve relative paths against cwd\n if (!path.startsWith('/') && getCwd) {\n const cwd = getCwd();\n path = cwd.endsWith('/') ? cwd + path : cwd + '/' + path;\n }\n\n return path;\n}\n\n// File descriptor tracking\ninterface FileDescriptor {\n path: string;\n position: number;\n flags: string;\n content: Uint8Array;\n}\n\nconst fdMap = new Map<number, FileDescriptor>();\nlet nextFd = 3; // Start at 3 (0, 1, 2 are stdin, stdout, stderr)\n\n// Call tracking for infinite loop detection\nconst callTracker = {\n statSync: new Map<string, number>(),\n readdirSync: new Map<string, number>(),\n lastReset: Date.now(),\n};\n\nfunction trackCall(method: 'statSync' | 'readdirSync', path: string): void {\n // Reset counters every 500ms to allow legitimate repeated calls\n const now = Date.now();\n if (now - callTracker.lastReset > 500) {\n callTracker.statSync.clear();\n callTracker.readdirSync.clear();\n callTracker.lastReset = now;\n }\n\n const map = callTracker[method];\n const count = (map.get(path) || 0) + 1;\n map.set(path, count);\n\n // Log at different thresholds to understand the pattern\n if (count === 10 && path.includes('_generated')) {\n console.warn(`[fs] ${method} called ${count}x on ${path}`);\n // Print full stack trace at 10 calls to see the call path\n const err = new Error();\n console.log(`[fs] Stack at ${count} calls:`, err.stack?.split('\\n').slice(1, 10).join('\\n'));\n }\n if (count === 50) {\n console.warn(`[fs] Potential infinite loop: ${method} called ${count}+ times on ${path}`);\n }\n}\n\nexport function createFsShim(vfs: VirtualFS, getCwd?: () => string): FsShim {\n // Helper to resolve paths with cwd\n const resolvePath = (pathLike: unknown) => toPath(pathLike, getCwd);\n const constants: FsConstants = {\n F_OK: 0,\n R_OK: 4,\n W_OK: 2,\n X_OK: 1,\n };\n\n const promises: FsPromises = {\n readFile(pathLike: unknown, encodingOrOptions?: string | { encoding?: string | null }): Promise<Buffer | string> {\n return new Promise((resolve, reject) => {\n try {\n const path = resolvePath(pathLike);\n let encoding: string | undefined;\n if (typeof encodingOrOptions === 'string') {\n encoding = encodingOrOptions;\n } else if (encodingOrOptions?.encoding) {\n encoding = encodingOrOptions.encoding;\n }\n\n if (encoding === 'utf8' || encoding === 'utf-8') {\n resolve(vfs.readFileSync(path, 'utf8'));\n } else {\n resolve(createBuffer(vfs.readFileSync(path)));\n }\n } catch (err) {\n reject(err);\n }\n });\n },\n writeFile(pathLike: unknown, data: string | Uint8Array): Promise<void> {\n return new Promise((resolve, reject) => {\n try {\n vfs.writeFileSync(resolvePath(pathLike), data);\n resolve();\n } catch (err) {\n reject(err);\n }\n });\n },\n stat(pathLike: string | unknown): Promise<Stats> {\n return new Promise((resolve, reject) => {\n try {\n const path = typeof pathLike === 'string' ? pathLike : resolvePath(pathLike);\n resolve(vfs.statSync(path));\n } catch (err) {\n reject(err);\n }\n });\n },\n lstat(pathLike: unknown): Promise<Stats> {\n return this.stat(resolvePath(pathLike));\n },\n readdir(pathLike: unknown, options?: { withFileTypes?: boolean } | string): Promise<string[] | Dirent[]> {\n return new Promise((resolve, reject) => {\n try {\n const path = resolvePath(pathLike);\n const entries = vfs.readdirSync(path);\n const opts = typeof options === 'string' ? {} : options;\n if (opts?.withFileTypes) {\n const dirents = entries.map(name => {\n const entryPath = path.endsWith('/') ? path + name : path + '/' + name;\n let isDir = false;\n let isFile = false;\n try {\n const stat = vfs.statSync(entryPath);\n isDir = stat.isDirectory();\n isFile = stat.isFile();\n } catch {\n isFile = true;\n }\n return new Dirent(name, isDir, isFile);\n });\n resolve(dirents);\n } else {\n resolve(entries);\n }\n } catch (err) {\n reject(err);\n }\n });\n },\n mkdir(pathLike: unknown, options?: { recursive?: boolean }): Promise<void> {\n return new Promise((resolve, reject) => {\n try {\n vfs.mkdirSync(resolvePath(pathLike), options);\n resolve();\n } catch (err) {\n reject(err);\n }\n });\n },\n unlink(pathLike: unknown): Promise<void> {\n return new Promise((resolve, reject) => {\n try {\n vfs.unlinkSync(resolvePath(pathLike));\n resolve();\n } catch (err) {\n reject(err);\n }\n });\n },\n rmdir(path: string): Promise<void> {\n return new Promise((resolve, reject) => {\n try {\n vfs.rmdirSync(path);\n resolve();\n } catch (err) {\n reject(err);\n }\n });\n },\n rename(oldPath: string, newPath: string): Promise<void> {\n return new Promise((resolve, reject) => {\n try {\n vfs.renameSync(oldPath, newPath);\n resolve();\n } catch (err) {\n reject(err);\n }\n });\n },\n access(path: string, mode?: number): Promise<void> {\n return new Promise((resolve, reject) => {\n try {\n vfs.accessSync(path, mode);\n resolve();\n } catch (err) {\n reject(err);\n }\n });\n },\n realpath(path: string): Promise<string> {\n return new Promise((resolve, reject) => {\n try {\n resolve(vfs.realpathSync(path));\n } catch (err) {\n reject(err);\n }\n });\n },\n copyFile(src: string, dest: string): Promise<void> {\n return new Promise((resolve, reject) => {\n try {\n vfs.copyFileSync(src, dest);\n resolve();\n } catch (err) {\n reject(err);\n }\n });\n },\n } as FsPromises;\n\n return {\n readFileSync(\n pathLike: unknown,\n encodingOrOptions?: string | { encoding?: string | null }\n ): Buffer | string {\n const path = resolvePath(pathLike);\n let encoding: string | undefined;\n\n if (typeof encodingOrOptions === 'string') {\n encoding = encodingOrOptions;\n } else if (encodingOrOptions?.encoding) {\n encoding = encodingOrOptions.encoding;\n }\n\n if (encoding === 'utf8' || encoding === 'utf-8') {\n return vfs.readFileSync(path, 'utf8');\n }\n\n const data = vfs.readFileSync(path);\n return createBuffer(data);\n },\n\n writeFileSync(pathLike: unknown, data: string | Uint8Array): void {\n // Handle file descriptor\n if (typeof pathLike === 'number') {\n const fd = pathLike;\n const entry = fdMap.get(fd);\n if (!entry) {\n const err = new Error(`EBADF: bad file descriptor, write`) as Error & { code: string; errno: number };\n err.code = 'EBADF';\n err.errno = -9;\n throw err;\n }\n // Convert string to Uint8Array if needed\n const bytes = typeof data === 'string' ? _encoder.encode(data) : data;\n // Replace entire content\n entry.content = new Uint8Array(bytes);\n entry.position = bytes.length;\n return;\n }\n const path = resolvePath(pathLike);\n vfs.writeFileSync(path, data);\n },\n\n existsSync(pathLike: unknown): boolean {\n return vfs.existsSync(resolvePath(pathLike));\n },\n\n mkdirSync(pathLike: unknown, options?: { recursive?: boolean }): void {\n const path = resolvePath(pathLike);\n vfs.mkdirSync(path, options);\n },\n\n readdirSync(pathLike: unknown, options?: { withFileTypes?: boolean; encoding?: string } | string): string[] | Dirent[] {\n const path = resolvePath(pathLike);\n trackCall('readdirSync', path);\n const entries = vfs.readdirSync(path);\n\n // Handle withFileTypes option - returns Dirent objects instead of strings\n const opts = typeof options === 'string' ? { encoding: options } : options;\n if (opts?.withFileTypes) {\n const dirents: Dirent[] = entries.map(name => {\n const entryPath = path.endsWith('/') ? path + name : path + '/' + name;\n let isDir = false;\n let isFile = false;\n try {\n const stat = vfs.statSync(entryPath);\n isDir = stat.isDirectory();\n isFile = stat.isFile();\n } catch {\n isFile = true; // Default to file if stat fails\n }\n return new Dirent(name, isDir, isFile);\n });\n // Debug: Log readdirSync results for _generated\n if (path.includes('_generated')) {\n console.log(`[fs] readdirSync(${path}, withFileTypes) -> [${dirents.map(d => d.name).join(', ')}]`);\n }\n return dirents;\n }\n\n // Debug: Log readdirSync results for _generated\n if (path.includes('_generated')) {\n console.log(`[fs] readdirSync(${path}) -> [${entries.join(', ')}]`);\n }\n return entries;\n },\n\n statSync(pathLike: unknown): Stats {\n const origPath = typeof pathLike === 'string' ? pathLike : String(pathLike);\n const path = resolvePath(pathLike);\n trackCall('statSync', path);\n const result = vfs.statSync(path);\n // Debug: Log all statSync calls on _generated paths (show if path was modified)\n if (path.includes('_generated')) {\n const wasRemapped = origPath !== path;\n console.log(`[fs] statSync(${origPath}${wasRemapped ? ' -> ' + path : ''}) -> isDir: ${result.isDirectory()}`);\n }\n return result;\n },\n\n lstatSync(pathLike: unknown): Stats {\n return vfs.lstatSync(resolvePath(pathLike));\n },\n\n fstatSync(fd: number): Stats {\n const entry = fdMap.get(fd);\n if (!entry) {\n const err = new Error(`EBADF: bad file descriptor, fstat`) as Error & { code: string; errno: number };\n err.code = 'EBADF';\n err.errno = -9;\n throw err;\n }\n return vfs.statSync(entry.path);\n },\n\n openSync(pathLike: unknown, flags: string | number, _mode?: number): number {\n const path = resolvePath(pathLike);\n const flagStr = typeof flags === 'number' ? 'r' : flags;\n\n // Check if file exists for read modes\n const exists = vfs.existsSync(path);\n const isWriteMode = flagStr.includes('w') || flagStr.includes('a');\n const isReadMode = flagStr.includes('r') && !flagStr.includes('+');\n\n if (!exists && isReadMode) {\n const err = new Error(`ENOENT: no such file or directory, open '${path}'`) as Error & { code: string; errno: number; path: string };\n err.code = 'ENOENT';\n err.errno = -2;\n err.path = path;\n throw err;\n }\n\n // Get or create content\n let content: Uint8Array;\n if (exists && !flagStr.includes('w')) {\n content = vfs.readFileSync(path);\n } else {\n content = new Uint8Array(0);\n if (isWriteMode) {\n // Ensure parent directory exists\n const parentPath = path.substring(0, path.lastIndexOf('/')) || '/';\n if (!vfs.existsSync(parentPath)) {\n vfs.mkdirSync(parentPath, { recursive: true });\n }\n }\n }\n\n const fd = nextFd++;\n fdMap.set(fd, {\n path,\n position: flagStr.includes('a') ? content.length : 0,\n flags: flagStr,\n content: new Uint8Array(content),\n });\n return fd;\n },\n\n closeSync(fd: number): void {\n const entry = fdMap.get(fd);\n if (!entry) {\n return; // Silently ignore\n }\n // Write back content if it was opened for writing\n if (entry.flags.includes('w') || entry.flags.includes('a') || entry.flags.includes('+')) {\n vfs.writeFileSync(entry.path, entry.content);\n }\n fdMap.delete(fd);\n },\n\n readSync(fd: number, buffer: Buffer | Uint8Array, offset: number, length: number, position: number | null): number {\n const entry = fdMap.get(fd);\n if (!entry) {\n const err = new Error(`EBADF: bad file descriptor, read`) as Error & { code: string; errno: number };\n err.code = 'EBADF';\n err.errno = -9;\n throw err;\n }\n\n const readPos = position !== null ? position : entry.position;\n const bytesToRead = Math.min(length, entry.content.length - readPos);\n\n if (bytesToRead <= 0) {\n return 0;\n }\n\n for (let i = 0; i < bytesToRead; i++) {\n buffer[offset + i] = entry.content[readPos + i];\n }\n\n if (position === null) {\n entry.position += bytesToRead;\n }\n\n return bytesToRead;\n },\n\n writeSync(fd: number, buffer: Buffer | Uint8Array | string, offset?: number, length?: number, position?: number | null): number {\n const entry = fdMap.get(fd);\n if (!entry) {\n const err = new Error(`EBADF: bad file descriptor, write`) as Error & { code: string; errno: number };\n err.code = 'EBADF';\n err.errno = -9;\n throw err;\n }\n\n // Handle string input\n let data: Uint8Array;\n if (typeof buffer === 'string') {\n data = _encoder.encode(buffer);\n offset = 0;\n length = data.length;\n } else {\n data = buffer;\n offset = offset ?? 0;\n length = length ?? (data.length - offset);\n }\n\n const writePos = position !== null && position !== undefined ? position : entry.position;\n const endPos = writePos + length;\n\n // Expand content if needed\n if (endPos > entry.content.length) {\n const newContent = new Uint8Array(endPos);\n newContent.set(entry.content);\n entry.content = newContent;\n }\n\n // Write data\n for (let i = 0; i < length; i++) {\n entry.content[writePos + i] = data[offset + i];\n }\n\n if (position === null || position === undefined) {\n entry.position = endPos;\n }\n\n return length;\n },\n\n ftruncateSync(fd: number, len: number = 0): void {\n const entry = fdMap.get(fd);\n if (!entry) {\n const err = new Error(`EBADF: bad file descriptor, ftruncate`) as Error & { code: string; errno: number };\n err.code = 'EBADF';\n err.errno = -9;\n throw err;\n }\n\n if (len < entry.content.length) {\n entry.content = entry.content.slice(0, len);\n } else if (len > entry.content.length) {\n const newContent = new Uint8Array(len);\n newContent.set(entry.content);\n entry.content = newContent;\n }\n },\n\n fsyncSync(_fd: number): void {\n // No-op - our virtual FS doesn't have disk buffering\n },\n\n fdatasyncSync(_fd: number): void {\n // No-op - our virtual FS doesn't have disk buffering\n },\n\n mkdtempSync(prefix: string): string {\n // Generate a unique suffix\n const suffix = Math.random().toString(36).slice(2, 8);\n const tempDir = `${prefix}${suffix}`;\n const resolvedPath = resolvePath(tempDir);\n vfs.mkdirSync(resolvedPath, { recursive: true });\n return resolvedPath;\n },\n\n rmSync(pathLike: unknown, options?: { recursive?: boolean; force?: boolean }): void {\n const path = resolvePath(pathLike);\n if (!vfs.existsSync(path)) {\n if (options?.force) return;\n throw createNodeError('ENOENT', 'rm', path);\n }\n const stats = vfs.statSync(path);\n if (stats.isDirectory()) {\n if (options?.recursive) {\n // Recursively delete directory contents\n const entries = vfs.readdirSync(path);\n for (const entry of entries) {\n const entryPath = path.endsWith('/') ? path + entry : path + '/' + entry;\n this.rmSync(entryPath, options);\n }\n vfs.rmdirSync(path);\n } else {\n throw createNodeError('EISDIR', 'rm', path);\n }\n } else {\n vfs.unlinkSync(path);\n }\n },\n\n unlinkSync(pathLike: unknown): void {\n const path = resolvePath(pathLike);\n // Debug: Log unlink calls on _generated\n if (path.includes('_generated')) {\n console.log(`[fs] unlinkSync(${path})`);\n }\n vfs.unlinkSync(path);\n },\n\n rmdirSync(pathLike: unknown): void {\n vfs.rmdirSync(resolvePath(pathLike));\n },\n\n renameSync(oldPathLike: unknown, newPathLike: unknown): void {\n vfs.renameSync(resolvePath(oldPathLike), resolvePath(newPathLike));\n },\n\n realpathSync: Object.assign(\n function realpathSync(pathLike: unknown): string {\n return vfs.realpathSync(resolvePath(pathLike));\n },\n {\n native(pathLike: unknown): string {\n return vfs.realpathSync(resolvePath(pathLike));\n },\n }\n ),\n\n accessSync(pathLike: unknown, _mode?: number): void {\n vfs.accessSync(resolvePath(pathLike));\n },\n\n copyFileSync(srcLike: unknown, destLike: unknown): void {\n const src = resolvePath(srcLike);\n const dest = resolvePath(destLike);\n const data = vfs.readFileSync(src);\n vfs.writeFileSync(dest, data);\n },\n\n watch(\n pathLike: unknown,\n optionsOrListener?: { persistent?: boolean; recursive?: boolean } | WatchListener,\n listener?: WatchListener\n ): FSWatcher {\n return vfs.watch(resolvePath(pathLike), optionsOrListener as { persistent?: boolean; recursive?: boolean }, listener);\n },\n\n readFile(\n pathLike: unknown,\n optionsOrCallback?: { encoding?: string } | ((err: Error | null, data?: string | Uint8Array) => void),\n callback?: (err: Error | null, data?: string | Uint8Array) => void\n ): void {\n const path = resolvePath(pathLike);\n vfs.readFile(path, optionsOrCallback as { encoding?: string }, callback);\n },\n\n stat(pathLike: unknown, callback: (err: Error | null, stats?: Stats) => void): void {\n vfs.stat(resolvePath(pathLike), callback);\n },\n\n lstat(pathLike: unknown, callback: (err: Error | null, stats?: Stats) => void): void {\n vfs.lstat(resolvePath(pathLike), callback);\n },\n\n readdir(\n pathLike: unknown,\n optionsOrCallback?: { withFileTypes?: boolean } | ((err: Error | null, files?: string[] | Dirent[]) => void),\n callback?: (err: Error | null, files?: string[] | Dirent[]) => void\n ): void {\n const cb = typeof optionsOrCallback === 'function' ? optionsOrCallback : callback;\n const opts = typeof optionsOrCallback === 'function' ? undefined : optionsOrCallback;\n const path = resolvePath(pathLike);\n try {\n const entries = vfs.readdirSync(path);\n if (opts?.withFileTypes) {\n const dirents: Dirent[] = entries.map(name => {\n const entryPath = path.endsWith('/') ? path + name : path + '/' + name;\n let isDir = false;\n let isFile = false;\n try {\n const stat = vfs.statSync(entryPath);\n isDir = stat.isDirectory();\n isFile = stat.isFile();\n } catch {\n isFile = true;\n }\n return new Dirent(name, isDir, isFile);\n });\n cb?.(null, dirents);\n } else {\n cb?.(null, entries);\n }\n } catch (err) {\n cb?.(err as Error);\n }\n },\n\n realpath(pathLike: unknown, callback: (err: Error | null, resolvedPath?: string) => void): void {\n vfs.realpath(resolvePath(pathLike), callback);\n },\n\n access(\n pathLike: unknown,\n modeOrCallback?: number | ((err: Error | null) => void),\n callback?: (err: Error | null) => void\n ): void {\n vfs.access(resolvePath(pathLike), modeOrCallback, callback);\n },\n\n createReadStream(pathLike: unknown): unknown {\n return vfs.createReadStream(resolvePath(pathLike));\n },\n\n createWriteStream(pathLike: unknown): unknown {\n return vfs.createWriteStream(resolvePath(pathLike));\n },\n\n promises,\n constants,\n } as FsShim;\n}\n\nexport default createFsShim;\n","/**\n * Node.js process shim\n * Provides minimal process object for browser environment\n * Process is an EventEmitter in Node.js\n */\n\nimport { EventEmitter, EventListener } from './events';\n\nexport interface ProcessEnv {\n [key: string]: string | undefined;\n}\n\n// Stream-like interface with EventEmitter methods\ninterface ProcessStream {\n isTTY: boolean;\n on: (event: string, listener: EventListener) => ProcessStream;\n once: (event: string, listener: EventListener) => ProcessStream;\n off: (event: string, listener: EventListener) => ProcessStream;\n emit: (event: string, ...args: unknown[]) => boolean;\n addListener: (event: string, listener: EventListener) => ProcessStream;\n removeListener: (event: string, listener: EventListener) => ProcessStream;\n removeAllListeners: (event?: string) => ProcessStream;\n setMaxListeners: (n: number) => ProcessStream;\n getMaxListeners: () => number;\n listenerCount: (event: string) => number;\n listeners: (event: string) => EventListener[];\n rawListeners: (event: string) => EventListener[];\n prependListener: (event: string, listener: EventListener) => ProcessStream;\n prependOnceListener: (event: string, listener: EventListener) => ProcessStream;\n eventNames: () => string[];\n pause?: () => ProcessStream;\n resume?: () => ProcessStream;\n setEncoding?: (encoding: string) => ProcessStream;\n}\n\ninterface ProcessWritableStream extends ProcessStream {\n write: (data: string | Buffer, encoding?: string, callback?: () => void) => boolean;\n end?: (data?: string, callback?: () => void) => void;\n}\n\ninterface ProcessReadableStream extends ProcessStream {\n read?: (size?: number) => string | Buffer | null;\n setRawMode?: (mode: boolean) => ProcessReadableStream;\n}\n\nexport interface Process {\n env: ProcessEnv;\n cwd: () => string;\n chdir: (directory: string) => void;\n platform: string;\n version: string;\n versions: { node: string; v8: string; uv: string };\n argv: string[];\n argv0: string;\n execPath: string;\n execArgv: string[];\n pid: number;\n ppid: number;\n exit: (code?: number) => never;\n nextTick: (callback: (...args: unknown[]) => void, ...args: unknown[]) => void;\n stdout: ProcessWritableStream;\n stderr: ProcessWritableStream;\n stdin: ProcessReadableStream;\n hrtime: {\n (time?: [number, number]): [number, number];\n bigint: () => bigint;\n };\n memoryUsage: () => { rss: number; heapTotal: number; heapUsed: number; external: number; arrayBuffers: number };\n uptime: () => number;\n cpuUsage: () => { user: number; system: number };\n // EventEmitter methods\n on: (event: string, listener: EventListener) => Process;\n once: (event: string, listener: EventListener) => Process;\n off: (event: string, listener: EventListener) => Process;\n emit: (event: string, ...args: unknown[]) => boolean;\n addListener: (event: string, listener: EventListener) => Process;\n removeListener: (event: string, listener: EventListener) => Process;\n removeAllListeners: (event?: string) => Process;\n listeners: (event: string) => EventListener[];\n listenerCount: (event: string) => number;\n prependListener: (event: string, listener: EventListener) => Process;\n prependOnceListener: (event: string, listener: EventListener) => Process;\n eventNames: () => string[];\n setMaxListeners: (n: number) => Process;\n getMaxListeners: () => number;\n // IPC support (used by child_process.fork)\n send?: (message: unknown, callback?: (error: Error | null) => void) => boolean;\n connected?: boolean;\n // Internal debug counter\n _cwdCallCount?: number;\n}\n\n// Helper to create a stream-like object with EventEmitter methods\nfunction createProcessStream(\n isWritable: boolean,\n writeImpl?: (data: string) => boolean\n): ProcessWritableStream | ProcessReadableStream {\n const emitter = new EventEmitter();\n\n const stream: ProcessWritableStream & ProcessReadableStream = {\n isTTY: false,\n\n on(event: string, listener: EventListener) {\n emitter.on(event, listener);\n return stream;\n },\n once(event: string, listener: EventListener) {\n emitter.once(event, listener);\n return stream;\n },\n off(event: string, listener: EventListener) {\n emitter.off(event, listener);\n return stream;\n },\n emit(event: string, ...args: unknown[]) {\n return emitter.emit(event, ...args);\n },\n addListener(event: string, listener: EventListener) {\n emitter.addListener(event, listener);\n return stream;\n },\n removeListener(event: string, listener: EventListener) {\n emitter.removeListener(event, listener);\n return stream;\n },\n removeAllListeners(event?: string) {\n emitter.removeAllListeners(event);\n return stream;\n },\n setMaxListeners(n: number) {\n emitter.setMaxListeners(n);\n return stream;\n },\n getMaxListeners() {\n return emitter.getMaxListeners();\n },\n listenerCount(event: string) {\n return emitter.listenerCount(event);\n },\n listeners(event: string) {\n return emitter.listeners(event);\n },\n rawListeners(event: string) {\n return emitter.rawListeners(event);\n },\n prependListener(event: string, listener: EventListener) {\n emitter.prependListener(event, listener);\n return stream;\n },\n prependOnceListener(event: string, listener: EventListener) {\n emitter.prependOnceListener(event, listener);\n return stream;\n },\n eventNames() {\n return emitter.eventNames();\n },\n pause() {\n return stream;\n },\n resume() {\n return stream;\n },\n setEncoding(_encoding: string) {\n return stream;\n },\n // Default write implementation (no-op for readable streams)\n write(_data: string | Buffer, _encoding?: string, callback?: () => void) {\n if (callback) queueMicrotask(callback);\n return true;\n },\n end(_data?: string, callback?: () => void) {\n if (callback) queueMicrotask(callback);\n },\n // Default read implementation (for stdin)\n read() {\n return null;\n },\n setRawMode(_mode: boolean) {\n return stream;\n },\n };\n\n // Override write for actual writable streams\n if (isWritable && writeImpl) {\n stream.write = (data: string | Buffer, _encoding?: string, callback?: () => void) => {\n const result = writeImpl(typeof data === 'string' ? data : data.toString());\n if (callback) queueMicrotask(callback);\n return result;\n };\n }\n\n return stream;\n}\n\nexport function createProcess(options?: {\n cwd?: string;\n env?: ProcessEnv;\n onExit?: (code: number) => void;\n onStdout?: (data: string) => void;\n onStderr?: (data: string) => void;\n}): Process {\n let currentDir = options?.cwd || '/';\n const env: ProcessEnv = {\n NODE_ENV: 'development',\n PATH: '/usr/local/bin:/usr/bin:/bin',\n HOME: '/',\n ...options?.env,\n };\n\n // Create an EventEmitter for process events\n const emitter = new EventEmitter();\n const startTime = Date.now();\n\n const proc: Process = {\n env,\n\n cwd() {\n // Debug: Log cwd calls (limited to first 5)\n if (!proc._cwdCallCount) proc._cwdCallCount = 0;\n proc._cwdCallCount++;\n if (proc._cwdCallCount <= 5 || proc._cwdCallCount % 100 === 0) {\n console.log(`[process] cwd() called (${proc._cwdCallCount}x), returning:`, currentDir);\n }\n return currentDir;\n },\n\n chdir(directory: string) {\n console.log('[process] chdir called:', directory, 'from:', currentDir);\n if (!directory.startsWith('/')) {\n directory = currentDir + '/' + directory;\n }\n currentDir = directory;\n console.log('[process] chdir result:', currentDir);\n },\n\n platform: 'linux', // Pretend to be linux for better compatibility\n version: 'v20.0.0',\n versions: { node: '20.0.0', v8: '11.3.244.8', uv: '1.44.2' },\n\n argv: ['node', '/index.js'],\n argv0: 'node',\n execPath: '/usr/local/bin/node',\n execArgv: [],\n\n pid: 1,\n ppid: 0,\n\n exit(code = 0) {\n emitter.emit('exit', code);\n if (options?.onExit) {\n options.onExit(code);\n }\n throw new Error(`Process exited with code ${code}`);\n },\n\n nextTick(callback, ...args) {\n queueMicrotask(() => callback(...args));\n },\n\n stdout: createProcessStream(true, (data: string) => {\n if (options?.onStdout) {\n options.onStdout(data);\n } else {\n console.log(data);\n }\n return true;\n }) as ProcessWritableStream,\n\n stderr: createProcessStream(true, (data: string) => {\n if (options?.onStderr) {\n options.onStderr(data);\n } else {\n console.error(data);\n }\n return true;\n }) as ProcessWritableStream,\n\n stdin: createProcessStream(false) as ProcessReadableStream,\n\n hrtime: Object.assign(\n function hrtime(time?: [number, number]): [number, number] {\n const now = performance.now();\n const seconds = Math.floor(now / 1000);\n const nanoseconds = Math.floor((now % 1000) * 1e6);\n if (time) {\n const diffSeconds = seconds - time[0];\n const diffNanos = nanoseconds - time[1];\n return [diffSeconds, diffNanos];\n }\n return [seconds, nanoseconds];\n },\n {\n bigint: (): bigint => BigInt(Math.floor(performance.now() * 1e6)),\n }\n ),\n\n memoryUsage() {\n // Return mock values since we can't access real memory in browser\n return {\n rss: 50 * 1024 * 1024,\n heapTotal: 30 * 1024 * 1024,\n heapUsed: 20 * 1024 * 1024,\n external: 1 * 1024 * 1024,\n arrayBuffers: 0,\n };\n },\n\n uptime() {\n return (Date.now() - startTime) / 1000;\n },\n\n cpuUsage() {\n return { user: 0, system: 0 };\n },\n\n // EventEmitter methods - delegate to emitter but return proc for chaining\n on(event: string, listener: EventListener): Process {\n emitter.on(event, listener);\n return proc;\n },\n\n once(event: string, listener: EventListener): Process {\n emitter.once(event, listener);\n return proc;\n },\n\n off(event: string, listener: EventListener): Process {\n emitter.off(event, listener);\n return proc;\n },\n\n emit(event: string, ...args: unknown[]): boolean {\n return emitter.emit(event, ...args);\n },\n\n addListener(event: string, listener: EventListener): Process {\n emitter.addListener(event, listener);\n return proc;\n },\n\n removeListener(event: string, listener: EventListener): Process {\n emitter.removeListener(event, listener);\n return proc;\n },\n\n removeAllListeners(event?: string): Process {\n emitter.removeAllListeners(event);\n return proc;\n },\n\n listeners(event: string): EventListener[] {\n return emitter.listeners(event);\n },\n\n listenerCount(event: string): number {\n return emitter.listenerCount(event);\n },\n\n prependListener(event: string, listener: EventListener): Process {\n emitter.prependListener(event, listener);\n return proc;\n },\n\n prependOnceListener(event: string, listener: EventListener): Process {\n emitter.prependOnceListener(event, listener);\n return proc;\n },\n\n eventNames(): string[] {\n return emitter.eventNames();\n },\n\n setMaxListeners(n: number): Process {\n emitter.setMaxListeners(n);\n return proc;\n },\n\n getMaxListeners(): number {\n return emitter.getMaxListeners();\n },\n };\n\n return proc;\n}\n\n// Default process instance\nexport const process = createProcess();\n\nexport default process;\n","/**\n * Node.js https module shim\n * Re-exports http module functionality with https protocol default\n */\n\nimport {\n Server,\n IncomingMessage,\n ServerResponse,\n ClientRequest,\n createServer,\n STATUS_CODES,\n METHODS,\n getServer,\n getAllServers,\n setServerListenCallback,\n setServerCloseCallback,\n _createClientRequest,\n Agent,\n globalAgent,\n} from './http';\n\nimport type { RequestOptions, AgentOptions } from './http';\n\n// Re-export all http types and classes\nexport {\n Server,\n IncomingMessage,\n ServerResponse,\n ClientRequest,\n createServer,\n STATUS_CODES,\n METHODS,\n getServer,\n getAllServers,\n setServerListenCallback,\n setServerCloseCallback,\n Agent,\n globalAgent,\n};\n\nexport type { AgentOptions };\n\nexport type { RequestOptions };\n\n/**\n * Create an HTTPS client request\n */\nexport function request(\n urlOrOptions: string | URL | RequestOptions,\n optionsOrCallback?: RequestOptions | ((res: IncomingMessage) => void),\n callback?: (res: IncomingMessage) => void\n): ClientRequest {\n return _createClientRequest(urlOrOptions, optionsOrCallback, callback, 'https');\n}\n\n/**\n * Make an HTTPS GET request\n */\nexport function get(\n urlOrOptions: string | URL | RequestOptions,\n optionsOrCallback?: RequestOptions | ((res: IncomingMessage) => void),\n callback?: (res: IncomingMessage) => void\n): ClientRequest {\n const req = _createClientRequest(urlOrOptions, optionsOrCallback, callback, 'https');\n req.end();\n return req;\n}\n\nexport default {\n Server,\n IncomingMessage,\n ServerResponse,\n ClientRequest,\n createServer,\n request,\n get,\n STATUS_CODES,\n METHODS,\n getServer,\n getAllServers,\n setServerListenCallback,\n setServerCloseCallback,\n Agent,\n globalAgent,\n};\n","/**\n * Node.js url module shim\n * Uses browser's built-in URL API\n */\n\nexport interface UrlObject {\n protocol?: string | null;\n slashes?: boolean | null;\n auth?: string | null;\n host?: string | null;\n port?: string | null;\n hostname?: string | null;\n hash?: string | null;\n search?: string | null;\n query?: string | Record<string, string | string[]> | null;\n pathname?: string | null;\n path?: string | null;\n href?: string;\n}\n\nexport function parse(\n urlString: string,\n parseQueryString: boolean = false,\n slashesDenoteHost: boolean = false\n): UrlObject {\n try {\n const url = new URL(urlString, 'http://localhost');\n const result: UrlObject = {\n protocol: url.protocol,\n slashes: url.protocol.endsWith(':'),\n auth: url.username ? `${url.username}:${url.password}` : null,\n host: url.host,\n port: url.port || null,\n hostname: url.hostname,\n hash: url.hash || null,\n search: url.search || null,\n query: parseQueryString ? Object.fromEntries(url.searchParams) : url.search?.slice(1) || null,\n pathname: url.pathname,\n path: url.pathname + url.search,\n href: url.href,\n };\n return result;\n } catch {\n // Handle relative URLs\n return {\n protocol: null,\n slashes: null,\n auth: null,\n host: null,\n port: null,\n hostname: null,\n hash: null,\n search: null,\n query: null,\n pathname: urlString,\n path: urlString,\n href: urlString,\n };\n }\n}\n\nexport function format(urlObject: UrlObject): string {\n if (urlObject.href) {\n return urlObject.href;\n }\n\n let result = '';\n\n if (urlObject.protocol) {\n result += urlObject.protocol;\n if (!urlObject.protocol.endsWith(':')) {\n result += ':';\n }\n }\n\n if (urlObject.slashes || urlObject.protocol === 'http:' || urlObject.protocol === 'https:') {\n result += '//';\n }\n\n if (urlObject.auth) {\n result += urlObject.auth + '@';\n }\n\n if (urlObject.hostname) {\n result += urlObject.hostname;\n } else if (urlObject.host) {\n result += urlObject.host;\n }\n\n if (urlObject.port) {\n result += ':' + urlObject.port;\n }\n\n if (urlObject.pathname) {\n result += urlObject.pathname;\n }\n\n if (urlObject.search) {\n result += urlObject.search;\n } else if (urlObject.query) {\n if (typeof urlObject.query === 'string') {\n result += '?' + urlObject.query;\n } else {\n const params = new URLSearchParams();\n for (const [key, value] of Object.entries(urlObject.query)) {\n if (Array.isArray(value)) {\n for (const v of value) {\n params.append(key, v);\n }\n } else {\n params.set(key, value);\n }\n }\n const search = params.toString();\n if (search) {\n result += '?' + search;\n }\n }\n }\n\n if (urlObject.hash) {\n result += urlObject.hash;\n }\n\n return result;\n}\n\nexport function resolve(from: string, to: string): string {\n try {\n return new URL(to, from).href;\n } catch {\n return to;\n }\n}\n\n// Re-export URL and URLSearchParams from globals\nexport const URL = globalThis.URL;\nexport const URLSearchParams = globalThis.URLSearchParams;\n\n/**\n * Convert a file:// URL to a file path\n * Node.js: url.fileURLToPath('file:///home/user/file.txt') -> '/home/user/file.txt'\n */\nexport function fileURLToPath(url: string | URL): string {\n const urlObj = typeof url === 'string' ? new globalThis.URL(url) : url;\n if (urlObj.protocol !== 'file:') {\n throw new TypeError('The URL must be of scheme file');\n }\n // Decode percent-encoded characters and return pathname\n return decodeURIComponent(urlObj.pathname);\n}\n\n/**\n * Convert a file path to a file:// URL\n * Node.js: url.pathToFileURL('/home/user/file.txt') -> URL { href: 'file:///home/user/file.txt' }\n */\nexport function pathToFileURL(path: string): URL {\n // Encode special characters in path\n const encoded = encodeURIComponent(path).replace(/%2F/g, '/');\n return new globalThis.URL('file://' + encoded);\n}\n\nexport default {\n parse,\n format,\n resolve,\n URL,\n URLSearchParams,\n fileURLToPath,\n pathToFileURL,\n};\n","/**\n * Node.js querystring module shim\n * Uses browser's URLSearchParams\n */\n\nexport type ParsedUrlQuery = Record<string, string | string[]>;\n\nexport function parse(\n str: string,\n sep: string = '&',\n eq: string = '=',\n options?: { maxKeys?: number }\n): ParsedUrlQuery {\n const result: ParsedUrlQuery = {};\n\n if (!str || typeof str !== 'string') {\n return result;\n }\n\n const maxKeys = options?.maxKeys || 1000;\n const pairs = str.split(sep).slice(0, maxKeys > 0 ? maxKeys : undefined);\n\n for (const pair of pairs) {\n const idx = pair.indexOf(eq);\n let key: string;\n let value: string;\n\n if (idx >= 0) {\n key = decodeURIComponent(pair.slice(0, idx).replace(/\\+/g, ' '));\n value = decodeURIComponent(pair.slice(idx + 1).replace(/\\+/g, ' '));\n } else {\n key = decodeURIComponent(pair.replace(/\\+/g, ' '));\n value = '';\n }\n\n if (key in result) {\n const existing = result[key];\n if (Array.isArray(existing)) {\n existing.push(value);\n } else {\n result[key] = [existing, value];\n }\n } else {\n result[key] = value;\n }\n }\n\n return result;\n}\n\nexport function stringify(\n obj: Record<string, string | string[] | number | boolean | undefined>,\n sep: string = '&',\n eq: string = '='\n): string {\n if (!obj || typeof obj !== 'object') {\n return '';\n }\n\n const pairs: string[] = [];\n\n for (const [key, value] of Object.entries(obj)) {\n if (value === undefined) continue;\n\n const encodedKey = encodeURIComponent(key);\n\n if (Array.isArray(value)) {\n for (const v of value) {\n pairs.push(`${encodedKey}${eq}${encodeURIComponent(String(v))}`);\n }\n } else {\n pairs.push(`${encodedKey}${eq}${encodeURIComponent(String(value))}`);\n }\n }\n\n return pairs.join(sep);\n}\n\nexport function escape(str: string): string {\n return encodeURIComponent(str);\n}\n\nexport function unescape(str: string): string {\n return decodeURIComponent(str.replace(/\\+/g, ' '));\n}\n\nexport const encode = stringify;\nexport const decode = parse;\n\nexport default {\n parse,\n stringify,\n escape,\n unescape,\n encode,\n decode,\n};\n","/**\n * Node.js util module shim\n * Basic utility functions\n */\n\nexport function format(fmt: string, ...args: unknown[]): string {\n if (typeof fmt !== 'string') {\n return args.map((arg) => inspect(arg)).join(' ');\n }\n\n let i = 0;\n return fmt.replace(/%[sdjifoO%]/g, (match) => {\n if (match === '%%') return '%';\n if (i >= args.length) return match;\n\n const arg = args[i++];\n\n switch (match) {\n case '%s':\n return String(arg);\n case '%d':\n case '%i':\n return String(parseInt(String(arg), 10));\n case '%f':\n return String(parseFloat(String(arg)));\n case '%j':\n try {\n return JSON.stringify(arg);\n } catch {\n return '[Circular]';\n }\n case '%o':\n case '%O':\n return inspect(arg);\n default:\n return match;\n }\n });\n}\n\nexport function inspect(obj: unknown, options?: { depth?: number; colors?: boolean }): string {\n const seen = new WeakSet();\n const depth = options?.depth ?? 2;\n\n function inspectValue(value: unknown, currentDepth: number): string {\n if (value === null) return 'null';\n if (value === undefined) return 'undefined';\n\n const type = typeof value;\n\n if (type === 'string') {\n return `'${value}'`;\n }\n\n if (type === 'number' || type === 'boolean' || type === 'bigint') {\n return String(value);\n }\n\n if (type === 'symbol') {\n return value.toString();\n }\n\n if (type === 'function') {\n const name = (value as Function).name || 'anonymous';\n return `[Function: ${name}]`;\n }\n\n if (type !== 'object') {\n return String(value);\n }\n\n // Handle circular references\n if (seen.has(value as object)) {\n return '[Circular]';\n }\n seen.add(value as object);\n\n if (currentDepth > depth) {\n return Array.isArray(value) ? '[Array]' : '[Object]';\n }\n\n if (Array.isArray(value)) {\n if (value.length === 0) return '[]';\n const items = value.map((v) => inspectValue(v, currentDepth + 1));\n return `[ ${items.join(', ')} ]`;\n }\n\n if (value instanceof Date) {\n return value.toISOString();\n }\n\n if (value instanceof RegExp) {\n return value.toString();\n }\n\n if (value instanceof Error) {\n return `${value.name}: ${value.message}`;\n }\n\n if (value instanceof Map) {\n const entries = [...value.entries()].map(\n ([k, v]) => `${inspectValue(k, currentDepth + 1)} => ${inspectValue(v, currentDepth + 1)}`\n );\n return `Map(${value.size}) { ${entries.join(', ')} }`;\n }\n\n if (value instanceof Set) {\n const items = [...value].map((v) => inspectValue(v, currentDepth + 1));\n return `Set(${value.size}) { ${items.join(', ')} }`;\n }\n\n // Plain object\n const keys = Object.keys(value as object);\n if (keys.length === 0) return '{}';\n\n const entries = keys.map((key) => {\n const val = (value as Record<string, unknown>)[key];\n return `${key}: ${inspectValue(val, currentDepth + 1)}`;\n });\n\n return `{ ${entries.join(', ')} }`;\n }\n\n return inspectValue(obj, 0);\n}\n\nexport function inherits(\n ctor: Function,\n superCtor: Function\n): void {\n if (ctor === undefined || ctor === null) {\n throw new TypeError('inherits: ctor must be a function');\n }\n if (superCtor === undefined || superCtor === null) {\n // Some packages call inherits with undefined as a no-op, just return\n return;\n }\n if (superCtor.prototype === undefined) {\n // Skip if superCtor doesn't have a prototype\n return;\n }\n (ctor as any).super_ = superCtor;\n Object.setPrototypeOf(ctor.prototype, superCtor.prototype);\n}\n\nexport function deprecate<T extends Function>(\n fn: T,\n msg: string,\n code?: string\n): T {\n let warned = false;\n const deprecated = function (this: unknown, ...args: unknown[]) {\n if (!warned) {\n console.warn(`DeprecationWarning: ${msg}${code ? ` (${code})` : ''}`);\n warned = true;\n }\n return fn.apply(this, args);\n };\n return deprecated as unknown as T;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function promisify<T>(fn: (...args: any[]) => void): (...args: any[]) => Promise<T> {\n return (...args: any[]) => {\n return new Promise((resolve, reject) => {\n fn(...args, (err: Error | null, result: T) => {\n if (err) {\n reject(err);\n } else {\n resolve(result);\n }\n });\n });\n };\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function callbackify<T>(fn: (...args: any[]) => Promise<T>): (...args: any[]) => void {\n return (...args: any[]) => {\n const callback = args.pop() as (err: Error | null, result: T) => void;\n fn(...args)\n .then((result) => callback(null, result))\n .catch((err) => callback(err, undefined as unknown as T));\n };\n}\n\nexport function isArray(value: unknown): value is unknown[] {\n return Array.isArray(value);\n}\n\nexport function isBoolean(value: unknown): value is boolean {\n return typeof value === 'boolean';\n}\n\nexport function isNull(value: unknown): value is null {\n return value === null;\n}\n\nexport function isNullOrUndefined(value: unknown): value is null | undefined {\n return value === null || value === undefined;\n}\n\nexport function isNumber(value: unknown): value is number {\n return typeof value === 'number';\n}\n\nexport function isString(value: unknown): value is string {\n return typeof value === 'string';\n}\n\nexport function isUndefined(value: unknown): value is undefined {\n return value === undefined;\n}\n\nexport function isRegExp(value: unknown): value is RegExp {\n return value instanceof RegExp;\n}\n\nexport function isObject(value: unknown): value is object {\n return typeof value === 'object' && value !== null;\n}\n\nexport function isDate(value: unknown): value is Date {\n return value instanceof Date;\n}\n\nexport function isError(value: unknown): value is Error {\n return value instanceof Error;\n}\n\nexport function isFunction(value: unknown): value is Function {\n return typeof value === 'function';\n}\n\nexport function isPrimitive(value: unknown): boolean {\n return value === null || (typeof value !== 'object' && typeof value !== 'function');\n}\n\nexport function isBuffer(value: unknown): boolean {\n return value instanceof Uint8Array;\n}\n\n/**\n * Returns a function that logs debug messages when NODE_DEBUG includes the section\n */\nexport function debuglog(section: string): (...args: unknown[]) => void {\n const nodeDebug = (typeof process !== 'undefined' && process.env?.NODE_DEBUG) || '';\n const enabled = nodeDebug.toLowerCase().includes(section.toLowerCase());\n\n if (enabled) {\n return (...args: unknown[]) => {\n console.error(`${section.toUpperCase()} ${process?.pid || 0}:`, ...args);\n };\n }\n\n // Return a no-op function\n return () => {};\n}\n\n// Alias for debuglog\nexport const debug = debuglog;\n\n/**\n * Strip ANSI escape codes / VT control characters from a string.\n * Node.js 16.11+ API used by tinyrainbow, vitest, etc.\n */\nexport function stripVTControlCharacters(str: string): string {\n // eslint-disable-next-line no-control-regex\n return str.replace(/\\x1B\\[[0-9;]*[a-zA-Z]|\\x1B\\].*?(\\x07|\\x1B\\\\)|\\x1B[()][A-Z0-9]|\\x1B[#=]|\\x1B./g, '');\n}\n\nexport const types = {\n isArray,\n isBoolean,\n isNull,\n isNullOrUndefined,\n isNumber,\n isString,\n isUndefined,\n isRegExp,\n isObject,\n isDate,\n isError,\n isFunction,\n isPrimitive,\n isBuffer,\n};\n\n// Re-export TextEncoder and TextDecoder from global\nexport const TextEncoder = globalThis.TextEncoder;\nexport const TextDecoder = globalThis.TextDecoder;\n\nexport default {\n format,\n inspect,\n inherits,\n deprecate,\n promisify,\n callbackify,\n debuglog,\n debug,\n stripVTControlCharacters,\n isArray,\n isBoolean,\n isNull,\n isNullOrUndefined,\n isNumber,\n isString,\n isUndefined,\n isRegExp,\n isObject,\n isDate,\n isError,\n isFunction,\n isPrimitive,\n isBuffer,\n types,\n TextEncoder,\n TextDecoder,\n};\n","/**\n * Node.js tty module shim\n * Provides terminal detection utilities\n */\n\nimport { Readable, Writable } from './stream';\n\nexport class ReadStream extends Readable {\n isTTY: boolean = false;\n isRaw: boolean = false;\n\n setRawMode(mode: boolean): this {\n this.isRaw = mode;\n return this;\n }\n}\n\nexport class WriteStream extends Writable {\n isTTY: boolean = false;\n columns: number = 80;\n rows: number = 24;\n\n clearLine(dir: number, callback?: () => void): boolean {\n if (callback) callback();\n return true;\n }\n\n clearScreenDown(callback?: () => void): boolean {\n if (callback) callback();\n return true;\n }\n\n cursorTo(x: number, y?: number, callback?: () => void): boolean {\n if (callback) callback();\n return true;\n }\n\n moveCursor(dx: number, dy: number, callback?: () => void): boolean {\n if (callback) callback();\n return true;\n }\n\n getColorDepth(env?: object): number {\n return 1; // No color support in browser\n }\n\n hasColors(count?: number | object, env?: object): boolean {\n return false;\n }\n\n getWindowSize(): [number, number] {\n return [this.columns, this.rows];\n }\n}\n\nexport function isatty(fd: number): boolean {\n return false; // Browser is never a TTY\n}\n\nexport default {\n ReadStream,\n WriteStream,\n isatty,\n};\n","/**\n * Node.js os module shim\n * Provides operating system utilities\n */\n\nexport function hostname(): string {\n return 'localhost';\n}\n\nexport function platform(): string {\n return 'linux';\n}\n\nexport function arch(): string {\n return 'x64';\n}\n\nexport function type(): string {\n return 'Linux';\n}\n\nexport function release(): string {\n return '5.10.0';\n}\n\nexport function version(): string {\n return '#1 SMP';\n}\n\nexport function machine(): string {\n return 'x86_64';\n}\n\nexport function tmpdir(): string {\n return '/tmp';\n}\n\nexport function homedir(): string {\n return '/home/user';\n}\n\nexport function cpus(): Array<{\n model: string;\n speed: number;\n times: { user: number; nice: number; sys: number; idle: number; irq: number };\n}> {\n const cpu = {\n model: 'Virtual CPU',\n speed: 2400,\n times: { user: 0, nice: 0, sys: 0, idle: 0, irq: 0 },\n };\n return [cpu, cpu]; // Simulate 2 CPUs\n}\n\nexport function totalmem(): number {\n return 4 * 1024 * 1024 * 1024; // 4GB\n}\n\nexport function freemem(): number {\n return 2 * 1024 * 1024 * 1024; // 2GB\n}\n\nexport function uptime(): number {\n return Math.floor(performance.now() / 1000);\n}\n\nexport function loadavg(): [number, number, number] {\n return [0.5, 0.5, 0.5];\n}\n\nexport function networkInterfaces(): Record<\n string,\n Array<{\n address: string;\n netmask: string;\n family: string;\n mac: string;\n internal: boolean;\n cidr: string;\n }>\n> {\n return {\n lo: [\n {\n address: '127.0.0.1',\n netmask: '255.0.0.0',\n family: 'IPv4',\n mac: '00:00:00:00:00:00',\n internal: true,\n cidr: '127.0.0.1/8',\n },\n ],\n };\n}\n\nexport function userInfo(): {\n username: string;\n uid: number;\n gid: number;\n shell: string;\n homedir: string;\n} {\n return {\n username: 'user',\n uid: 1000,\n gid: 1000,\n shell: '/bin/bash',\n homedir: '/home/user',\n };\n}\n\nexport function endianness(): 'BE' | 'LE' {\n return 'LE';\n}\n\nexport function getPriority(pid?: number): number {\n return 0;\n}\n\nexport function setPriority(pid: number | number, priority?: number): void {\n // No-op\n}\n\nexport const EOL = '\\n';\n\nexport const constants = {\n signals: {\n SIGHUP: 1,\n SIGINT: 2,\n SIGQUIT: 3,\n SIGILL: 4,\n SIGTRAP: 5,\n SIGABRT: 6,\n SIGBUS: 7,\n SIGFPE: 8,\n SIGKILL: 9,\n SIGUSR1: 10,\n SIGSEGV: 11,\n SIGUSR2: 12,\n SIGPIPE: 13,\n SIGALRM: 14,\n SIGTERM: 15,\n SIGCHLD: 17,\n SIGCONT: 18,\n SIGSTOP: 19,\n SIGTSTP: 20,\n SIGTTIN: 21,\n SIGTTOU: 22,\n SIGURG: 23,\n SIGXCPU: 24,\n SIGXFSZ: 25,\n SIGVTALRM: 26,\n SIGPROF: 27,\n SIGWINCH: 28,\n SIGIO: 29,\n SIGPWR: 30,\n SIGSYS: 31,\n },\n errno: {},\n priority: {\n PRIORITY_LOW: 19,\n PRIORITY_BELOW_NORMAL: 10,\n PRIORITY_NORMAL: 0,\n PRIORITY_ABOVE_NORMAL: -7,\n PRIORITY_HIGH: -14,\n PRIORITY_HIGHEST: -20,\n },\n};\n\nexport const devNull = '/dev/null';\n\nexport default {\n hostname,\n platform,\n arch,\n type,\n release,\n version,\n machine,\n tmpdir,\n homedir,\n cpus,\n totalmem,\n freemem,\n uptime,\n loadavg,\n networkInterfaces,\n userInfo,\n endianness,\n getPriority,\n setPriority,\n EOL,\n constants,\n devNull,\n};\n","/**\n * Node.js zlib module shim\n * Provides basic compression utilities\n */\n\nimport { Buffer } from './stream';\nimport pako from 'pako';\n\n// Brotli WASM instance - loaded lazily\ntype BrotliModule = { compress: (data: Uint8Array) => Uint8Array; decompress: (data: Uint8Array) => Uint8Array };\nlet brotliModule: BrotliModule | null = null;\nlet brotliLoadPromise: Promise<BrotliModule | null> | null = null;\n\nasync function loadBrotli(): Promise<BrotliModule | null> {\n if (brotliModule) return brotliModule;\n if (!brotliLoadPromise) {\n brotliLoadPromise = (async () => {\n try {\n // Dynamic import - brotli-wasm handles environment detection automatically\n // In Node.js: returns sync module\n // In browser: returns promise that resolves after WASM init\n const brotliWasmModule = await import('brotli-wasm');\n // The default export is a promise that resolves to the module\n brotliModule = await brotliWasmModule.default;\n console.log('[zlib] brotli-wasm loaded successfully');\n return brotliModule;\n } catch (error) {\n console.error('[zlib] Failed to load brotli-wasm:', error);\n return null;\n }\n })();\n }\n return brotliLoadPromise;\n}\n\nexport function gzip(\n buffer: Buffer | string,\n callback: (error: Error | null, result: Buffer) => void\n): void {\n try {\n const input = typeof buffer === 'string' ? Buffer.from(buffer) : buffer;\n const result = pako.gzip(input);\n callback(null, Buffer.from(result));\n } catch (error) {\n callback(error as Error, Buffer.alloc(0));\n }\n}\n\nexport function gunzip(\n buffer: Buffer,\n callback: (error: Error | null, result: Buffer) => void\n): void {\n try {\n const result = pako.ungzip(buffer);\n callback(null, Buffer.from(result));\n } catch (error) {\n callback(error as Error, Buffer.alloc(0));\n }\n}\n\nexport function deflate(\n buffer: Buffer | string,\n callback: (error: Error | null, result: Buffer) => void\n): void {\n try {\n const input = typeof buffer === 'string' ? Buffer.from(buffer) : buffer;\n const result = pako.deflate(input);\n callback(null, Buffer.from(result));\n } catch (error) {\n callback(error as Error, Buffer.alloc(0));\n }\n}\n\nexport function inflate(\n buffer: Buffer,\n callback: (error: Error | null, result: Buffer) => void\n): void {\n try {\n const result = pako.inflate(buffer);\n callback(null, Buffer.from(result));\n } catch (error) {\n callback(error as Error, Buffer.alloc(0));\n }\n}\n\nexport function deflateRaw(\n buffer: Buffer | string,\n callback: (error: Error | null, result: Buffer) => void\n): void {\n try {\n const input = typeof buffer === 'string' ? Buffer.from(buffer) : buffer;\n const result = pako.deflateRaw(input);\n callback(null, Buffer.from(result));\n } catch (error) {\n callback(error as Error, Buffer.alloc(0));\n }\n}\n\nexport function inflateRaw(\n buffer: Buffer,\n callback: (error: Error | null, result: Buffer) => void\n): void {\n try {\n const result = pako.inflateRaw(buffer);\n callback(null, Buffer.from(result));\n } catch (error) {\n callback(error as Error, Buffer.alloc(0));\n }\n}\n\n// Brotli compression using brotli-wasm\nexport function brotliCompress(\n buffer: Buffer | string,\n options: unknown,\n callback: (error: Error | null, result: Buffer) => void\n): void {\n // Handle overload where options is the callback\n if (typeof options === 'function') {\n callback = options as (error: Error | null, result: Buffer) => void;\n }\n\n loadBrotli().then(brotli => {\n if (!brotli) {\n callback(new Error('Brotli WASM failed to load'), Buffer.alloc(0));\n return;\n }\n try {\n const input = typeof buffer === 'string' ? Buffer.from(buffer) : buffer;\n const result = brotli.compress(new Uint8Array(input));\n callback(null, Buffer.from(result));\n } catch (error) {\n callback(error as Error, Buffer.alloc(0));\n }\n }).catch(error => {\n callback(error as Error, Buffer.alloc(0));\n });\n}\n\nexport function brotliDecompress(\n buffer: Buffer,\n options: unknown,\n callback: (error: Error | null, result: Buffer) => void\n): void {\n // Handle overload where options is the callback\n if (typeof options === 'function') {\n callback = options as (error: Error | null, result: Buffer) => void;\n }\n\n loadBrotli().then(brotli => {\n if (!brotli) {\n callback(new Error('Brotli WASM failed to load'), Buffer.alloc(0));\n return;\n }\n try {\n const result = brotli.decompress(new Uint8Array(buffer));\n callback(null, Buffer.from(result));\n } catch (error) {\n callback(error as Error, Buffer.alloc(0));\n }\n }).catch(error => {\n callback(error as Error, Buffer.alloc(0));\n });\n}\n\nexport function brotliCompressSync(buffer: Buffer | string, _options?: unknown): Buffer {\n if (!brotliModule) {\n throw new Error('Brotli WASM not loaded. Call brotliCompress first to initialize.');\n }\n const input = typeof buffer === 'string' ? Buffer.from(buffer) : buffer;\n return Buffer.from(brotliModule.compress(new Uint8Array(input)));\n}\n\nexport function brotliDecompressSync(buffer: Buffer, _options?: unknown): Buffer {\n if (!brotliModule) {\n throw new Error('Brotli WASM not loaded. Call brotliDecompress first to initialize.');\n }\n return Buffer.from(brotliModule.decompress(new Uint8Array(buffer)));\n}\n\n// Sync versions\nexport function gzipSync(buffer: Buffer | string): Buffer {\n const input = typeof buffer === 'string' ? Buffer.from(buffer) : buffer;\n return Buffer.from(pako.gzip(input));\n}\n\nexport function gunzipSync(buffer: Buffer): Buffer {\n return Buffer.from(pako.ungzip(buffer));\n}\n\nexport function deflateSync(buffer: Buffer | string): Buffer {\n const input = typeof buffer === 'string' ? Buffer.from(buffer) : buffer;\n return Buffer.from(pako.deflate(input));\n}\n\nexport function inflateSync(buffer: Buffer): Buffer {\n return Buffer.from(pako.inflate(buffer));\n}\n\nexport function deflateRawSync(buffer: Buffer | string): Buffer {\n const input = typeof buffer === 'string' ? Buffer.from(buffer) : buffer;\n return Buffer.from(pako.deflateRaw(input));\n}\n\nexport function inflateRawSync(buffer: Buffer): Buffer {\n return Buffer.from(pako.inflateRaw(buffer));\n}\n\n// Constants\nexport const constants = {\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n Z_VERSION_ERROR: -6,\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n ZLIB_VERNUM: 4784,\n Z_MIN_WINDOWBITS: 8,\n Z_MAX_WINDOWBITS: 15,\n Z_DEFAULT_WINDOWBITS: 15,\n Z_MIN_CHUNK: 64,\n Z_MAX_CHUNK: Infinity,\n Z_DEFAULT_CHUNK: 16384,\n Z_MIN_MEMLEVEL: 1,\n Z_MAX_MEMLEVEL: 9,\n Z_DEFAULT_MEMLEVEL: 8,\n Z_MIN_LEVEL: -1,\n Z_MAX_LEVEL: 9,\n Z_DEFAULT_LEVEL: -1,\n // Brotli constants\n BROTLI_DECODE: 0,\n BROTLI_ENCODE: 1,\n BROTLI_OPERATION_PROCESS: 0,\n BROTLI_OPERATION_FLUSH: 1,\n BROTLI_OPERATION_FINISH: 2,\n BROTLI_OPERATION_EMIT_METADATA: 3,\n BROTLI_PARAM_MODE: 0,\n BROTLI_MODE_GENERIC: 0,\n BROTLI_MODE_TEXT: 1,\n BROTLI_MODE_FONT: 2,\n BROTLI_PARAM_QUALITY: 1,\n BROTLI_MIN_QUALITY: 0,\n BROTLI_MAX_QUALITY: 11,\n BROTLI_DEFAULT_QUALITY: 11,\n BROTLI_PARAM_LGWIN: 2,\n BROTLI_MIN_WINDOW_BITS: 10,\n BROTLI_MAX_WINDOW_BITS: 24,\n BROTLI_DEFAULT_WINDOW: 22,\n BROTLI_PARAM_LGBLOCK: 3,\n BROTLI_MIN_INPUT_BLOCK_BITS: 16,\n BROTLI_MAX_INPUT_BLOCK_BITS: 24,\n};\n\nexport default {\n gzip,\n gunzip,\n deflate,\n inflate,\n deflateRaw,\n inflateRaw,\n gzipSync,\n gunzipSync,\n deflateSync,\n inflateSync,\n deflateRawSync,\n inflateRawSync,\n brotliCompress,\n brotliDecompress,\n brotliCompressSync,\n brotliDecompressSync,\n constants,\n};\n","/**\n * dns shim - DNS operations are not available in browser\n * Provides stubs that work for basic use cases\n */\n\n// DNS lookup callback type\ntype LookupCallback = (err: Error | null, address?: string, family?: number) => void;\ntype LookupAllCallback = (err: Error | null, addresses?: Array<{ address: string; family: number }>) => void;\n\n/**\n * Lookup a hostname - returns localhost in browser\n */\nexport function lookup(\n hostname: string,\n callback: LookupCallback\n): void;\nexport function lookup(\n hostname: string,\n options: { family?: number; all?: true },\n callback: LookupAllCallback\n): void;\nexport function lookup(\n hostname: string,\n options: { family?: number; all?: boolean },\n callback: LookupCallback | LookupAllCallback\n): void;\nexport function lookup(\n hostname: string,\n optionsOrCallback: { family?: number; all?: boolean } | LookupCallback,\n callback?: LookupCallback | LookupAllCallback\n): void {\n const cb = typeof optionsOrCallback === 'function' ? optionsOrCallback : callback;\n const options = typeof optionsOrCallback === 'object' ? optionsOrCallback : {};\n\n // In browser, we can't do real DNS lookups\n // Return localhost for localhost, or a fake IP for other hostnames\n setImmediate(() => {\n if (hostname === 'localhost' || hostname === '127.0.0.1') {\n if (options.all) {\n (cb as LookupAllCallback)(null, [{ address: '127.0.0.1', family: 4 }]);\n } else {\n (cb as LookupCallback)(null, '127.0.0.1', 4);\n }\n } else {\n // For other hostnames, we can't resolve them in browser\n // Return an error or a placeholder\n if (options.all) {\n (cb as LookupAllCallback)(null, [{ address: '0.0.0.0', family: 4 }]);\n } else {\n (cb as LookupCallback)(null, '0.0.0.0', 4);\n }\n }\n });\n}\n\n/**\n * Resolve hostname - stub\n */\nexport function resolve(\n hostname: string,\n callback: (err: Error | null, addresses?: string[]) => void\n): void {\n setImmediate(() => {\n callback(null, ['0.0.0.0']);\n });\n}\n\nexport function resolve4(\n hostname: string,\n callback: (err: Error | null, addresses?: string[]) => void\n): void {\n resolve(hostname, callback);\n}\n\nexport function resolve6(\n hostname: string,\n callback: (err: Error | null, addresses?: string[]) => void\n): void {\n setImmediate(() => {\n callback(null, ['::1']);\n });\n}\n\n/**\n * Reverse lookup - stub\n */\nexport function reverse(\n ip: string,\n callback: (err: Error | null, hostnames?: string[]) => void\n): void {\n setImmediate(() => {\n callback(null, ['localhost']);\n });\n}\n\n/**\n * Set servers - no-op in browser\n */\nexport function setServers(_servers: string[]): void {\n // No-op\n}\n\n/**\n * Get servers - return empty in browser\n */\nexport function getServers(): string[] {\n return [];\n}\n\n/**\n * Set default result order - no-op in browser\n * Order can be 'ipv4first', 'ipv6first', or 'verbatim'\n */\nexport function setDefaultResultOrder(_order: string): void {\n // No-op in browser\n}\n\n/**\n * Get default result order\n */\nexport function getDefaultResultOrder(): string {\n return 'verbatim';\n}\n\n// Promises API\nexport const promises = {\n lookup: (hostname: string, options?: { family?: number; all?: boolean }) => {\n return new Promise((resolve, reject) => {\n if (options?.all) {\n lookup(hostname, options, ((err: Error | null, addresses?: Array<{ address: string; family: number }>) => {\n if (err) reject(err);\n else resolve(addresses || []);\n }) as LookupAllCallback);\n return;\n }\n\n lookup(hostname, options || {}, (err, address, family) => {\n if (err) reject(err);\n else resolve({ address, family });\n });\n });\n },\n resolve: (hostname: string) => {\n return new Promise<string[]>((promiseResolve, promiseReject) => {\n resolve(hostname, (err, addresses) => {\n if (err) promiseReject(err);\n else promiseResolve(addresses || []);\n });\n });\n },\n resolve4: (hostname: string) => promises.resolve(hostname),\n resolve6: (hostname: string) => {\n return new Promise<string[]>((resolve) => {\n resolve(['::1']);\n });\n },\n reverse: (ip: string) => {\n return new Promise<string[]>((resolve) => {\n resolve(['localhost']);\n });\n },\n setServers: (_servers: string[]) => {},\n getServers: () => [] as string[],\n};\n\n// Constants\nexport const ADDRCONFIG = 0;\nexport const V4MAPPED = 0;\nexport const ALL = 0;\n\nexport default {\n lookup,\n resolve,\n resolve4,\n resolve6,\n reverse,\n setServers,\n getServers,\n setDefaultResultOrder,\n getDefaultResultOrder,\n promises,\n ADDRCONFIG,\n V4MAPPED,\n ALL,\n};\n","/**\n * Node.js buffer module shim\n * Provides Buffer class for browser environment\n */\n\n// Re-export Buffer from stream where it's defined\nimport { Buffer as BufferClass } from './stream';\n\n// The buffer module exports Buffer as a named export\nexport const Buffer = BufferClass;\n\n// SlowBuffer is deprecated but some packages still use it\nexport const SlowBuffer = BufferClass;\n\n// kMaxLength is the maximum size of a Buffer\nexport const kMaxLength = 2147483647;\n\n// INSPECT_MAX_BYTES controls how many bytes are shown when calling inspect()\nexport const INSPECT_MAX_BYTES = 50;\n\n// Constants for Buffer pooling\nexport const constants = {\n MAX_LENGTH: kMaxLength,\n MAX_STRING_LENGTH: 536870888,\n};\n\n// transcode function - simplified\nexport function transcode(\n source: Uint8Array,\n _fromEnc: string,\n _toEnc: string\n): InstanceType<typeof Buffer> {\n // Simplified - just return a copy\n return Buffer.from(source);\n}\n\n// resolveObjectURL - returns undefined (no blob support)\nexport function resolveObjectURL(id: string): undefined {\n return undefined;\n}\n\n// atob and btoa wrappers\nexport function atob(data: string): string {\n return globalThis.atob(data);\n}\n\nexport function btoa(data: string): string {\n return globalThis.btoa(data);\n}\n\n// Default export as a plain object with all exports\n// Using Object.create(null) and then assigning doesn't work well,\n// so we use a regular object that has hasOwnProperty\nconst bufferModule: Record<string, unknown> = {\n Buffer,\n SlowBuffer,\n kMaxLength,\n INSPECT_MAX_BYTES,\n constants,\n transcode,\n resolveObjectURL,\n atob,\n btoa,\n};\n\n// Ensure hasOwnProperty is accessible (should already be from Object.prototype)\n// but we make it explicit\nObject.defineProperty(bufferModule, 'hasOwnProperty', {\n value: Object.prototype.hasOwnProperty,\n enumerable: false,\n configurable: true,\n writable: true,\n});\n\nexport default bufferModule;\n","/**\n * Node.js child_process module shim\n * Uses just-bash for command execution in browser with VirtualFS adapter\n */\n\n// Polyfill process for just-bash (it expects Node.js environment)\nif (typeof globalThis.process === 'undefined') {\n (globalThis as any).process = {\n env: {\n HOME: '/home/user',\n USER: 'user',\n PATH: '/usr/local/bin:/usr/bin:/bin',\n NODE_ENV: 'development',\n },\n cwd: () => '/',\n platform: 'linux',\n version: 'v18.0.0',\n versions: { node: '18.0.0' },\n stdout: { write: () => {} },\n stderr: { write: () => {} },\n };\n}\n\nimport { Bash, defineCommand } from 'just-bash';\nimport type { CommandContext, ExecResult as JustBashExecResult } from 'just-bash';\nimport { EventEmitter } from './events';\nimport { Readable, Writable, Buffer } from './stream';\nimport type { VirtualFS } from '../virtual-fs';\nimport { VirtualFSAdapter } from './vfs-adapter';\nimport { Runtime } from '../runtime';\nimport type { PackageJson } from '../types/package-json';\n\n// Singleton bash instance - uses VFS adapter for two-way file sync\nlet bashInstance: Bash | null = null;\nlet vfsAdapter: VirtualFSAdapter | null = null;\nlet currentVfs: VirtualFS | null = null;\n\n// Track active forked child processes so the node command can detect when children exit.\n// When the last child exits, the node command uses a shorter idle timeout.\nlet _activeForkedChildren = 0;\nlet _onForkedChildExit: (() => void) | null = null;\n\n// Patch Object.defineProperty globally to force configurable: true on globalThis properties.\n// In real Node.js, each process has its own globalThis. In our browser environment,\n// all forks share globalThis, so libraries like vitest that define non-configurable\n// properties (e.g. __vitest_index__) need them to be configurable for re-runs.\nconst _realDefineProperty = Object.defineProperty;\nObject.defineProperty = function(target: object, key: PropertyKey, descriptor: PropertyDescriptor): object {\n if (target === globalThis && descriptor && !descriptor.configurable) {\n descriptor = { ...descriptor, configurable: true };\n }\n return _realDefineProperty.call(Object, target, key, descriptor) as object;\n} as typeof Object.defineProperty;\n\n// Module-level streaming callbacks for long-running commands (e.g. vitest watch)\n// Set by container.run() before calling exec, cleared after\nlet _streamStdout: ((data: string) => void) | null = null;\nlet _streamStderr: ((data: string) => void) | null = null;\nlet _abortSignal: AbortSignal | null = null;\n\n/**\n * Set streaming callbacks for the next command execution.\n * Used by container.run() to enable streaming output from custom commands.\n */\nexport function setStreamingCallbacks(opts: {\n onStdout?: (data: string) => void;\n onStderr?: (data: string) => void;\n signal?: AbortSignal;\n}): void {\n _streamStdout = opts.onStdout || null;\n _streamStderr = opts.onStderr || null;\n _abortSignal = opts.signal || null;\n}\n\n/**\n * Clear streaming callbacks after command execution.\n */\nexport function clearStreamingCallbacks(): void {\n _streamStdout = null;\n _streamStderr = null;\n _abortSignal = null;\n}\n\n// Reference to the currently running node command's process stdin.\n// Used to send stdin input to long-running commands (e.g. vitest watch mode).\nlet _activeProcessStdin: { emit: (event: string, ...args: unknown[]) => void } | null = null;\n\n/**\n * Send data to the stdin of the currently running node process.\n * Emits both 'data' and 'keypress' events (vitest uses readline keypress events).\n */\nexport function sendStdin(data: string): void {\n if (_activeProcessStdin) {\n _activeProcessStdin.emit('data', data);\n for (const ch of data) {\n _activeProcessStdin.emit('keypress', ch, {\n sequence: ch,\n name: ch,\n ctrl: false,\n meta: false,\n shift: false,\n });\n }\n }\n}\n\n/**\n * Initialize the child_process shim with a VirtualFS instance\n * Creates a single Bash instance with VirtualFSAdapter for efficient file access\n */\nexport function initChildProcess(vfs: VirtualFS): void {\n currentVfs = vfs;\n vfsAdapter = new VirtualFSAdapter(vfs);\n\n // Create custom 'node' command that runs JS files using the Runtime\n const nodeCommand = defineCommand('node', async (args, ctx) => {\n if (!currentVfs) {\n return { stdout: '', stderr: 'VFS not initialized\\n', exitCode: 1 };\n }\n\n const scriptPath = args[0];\n if (!scriptPath) {\n return { stdout: '', stderr: 'Usage: node <script.js> [args...]\\n', exitCode: 1 };\n }\n\n // Resolve the script path\n const resolvedPath = scriptPath.startsWith('/')\n ? scriptPath\n : `${ctx.cwd}/${scriptPath}`.replace(/\\/+/g, '/');\n\n if (!currentVfs.existsSync(resolvedPath)) {\n return { stdout: '', stderr: `Error: Cannot find module '${resolvedPath}'\\n`, exitCode: 1 };\n }\n\n let stdout = '';\n let stderr = '';\n\n // Track whether process.exit() was called\n let exitCalled = false;\n let exitCode = 0;\n let syncExecution = true;\n let exitResolve: ((code: number) => void) | null = null;\n const exitPromise = new Promise<number>((resolve) => { exitResolve = resolve; });\n\n // Helper to append to stdout, also streaming if configured\n const appendStdout = (data: string) => {\n stdout += data;\n if (_streamStdout) _streamStdout(data);\n };\n const appendStderr = (data: string) => {\n stderr += data;\n if (_streamStderr) _streamStderr(data);\n };\n\n // Create a runtime with output capture for both console.log AND process.stdout.write\n const runtime = new Runtime(currentVfs, {\n cwd: ctx.cwd,\n env: ctx.env,\n onConsole: (method, consoleArgs) => {\n const msg = consoleArgs.map(a => String(a)).join(' ') + '\\n';\n if (method === 'error') {\n appendStderr(msg);\n } else {\n appendStdout(msg);\n }\n },\n onStdout: (data: string) => {\n appendStdout(data);\n },\n onStderr: (data: string) => {\n appendStderr(data);\n },\n });\n\n // Override process.exit to resolve the completion promise\n const proc = runtime.getProcess();\n proc.exit = ((code = 0) => {\n if (!exitCalled) {\n exitCalled = true;\n exitCode = code;\n proc.emit('exit', code);\n exitResolve!(code);\n }\n // In sync context, throw to stop execution (like real process.exit)\n // In async context, return silently to avoid unhandled rejections\n if (syncExecution) {\n throw new Error(`Process exited with code ${code}`);\n }\n }) as (code?: number) => never;\n\n // Set up process.argv for the script\n proc.argv = ['node', resolvedPath, ...args.slice(1)];\n\n // For long-running commands (watch mode), report as TTY so tools like\n // vitest set up interactive features (file watching, stdin commands).\n // Also track stdin so external code can send input via sendStdin().\n if (_abortSignal) {\n proc.stdout.isTTY = true;\n proc.stderr.isTTY = true;\n proc.stdin.isTTY = true;\n proc.stdin.setRawMode = () => proc.stdin;\n _activeProcessStdin = proc.stdin;\n }\n\n try {\n // Run the script (synchronous part)\n runtime.runFile(resolvedPath);\n } catch (error) {\n // process.exit() throws to stop sync execution — this is expected\n if (error instanceof Error && error.message.startsWith('Process exited with code')) {\n return { stdout, stderr, exitCode };\n }\n // Real error\n const errorMsg = error instanceof Error\n ? `${error.message}\\n${error.stack || ''}`\n : String(error);\n return { stdout, stderr: stderr + `Error: ${errorMsg}\\n`, exitCode: 1 };\n } finally {\n // After runFile returns, switch to async mode (no more throwing from process.exit)\n syncExecution = false;\n }\n\n // If process.exit was called synchronously (but didn't throw for some reason), return\n if (exitCalled) {\n return { stdout, stderr, exitCode };\n }\n\n // Script returned without calling process.exit().\n // Heuristic: if we already captured output, the script likely finished synchronously\n // (e.g. a simple \"console.log('hello')\" script). Return immediately.\n if (stdout.length > 0 || stderr.length > 0) {\n // Brief pause for any trailing microtasks\n await new Promise(r => setTimeout(r, 0));\n return { stdout, stderr, exitCode: exitCalled ? exitCode : 0 };\n }\n\n // No output yet — script likely has async work (e.g. vitest test runner).\n // Wait for process.exit() or until output stabilizes.\n // Also catch unhandled rejections from async code to surface errors.\n\n // Catch unhandled rejections from the script's async code\n const rejectionHandler = (event: PromiseRejectionEvent) => {\n const reason = event.reason;\n // Ignore process.exit throws (they're expected)\n if (reason instanceof Error && reason.message.startsWith('Process exited with code')) {\n event.preventDefault();\n return;\n }\n const msg = reason instanceof Error\n ? `Unhandled rejection: ${reason.message}\\n${reason.stack || ''}\\n`\n : `Unhandled rejection: ${String(reason)}\\n`;\n appendStderr(msg);\n };\n globalThis.addEventListener('unhandledrejection', rejectionHandler);\n\n // Listen for forked child exits to shorten the idle timeout.\n // Many CLI tools (vitest, jest, etc.) fork workers and exit shortly after\n // all children complete. We use a shorter timeout once children are done.\n let childrenExited = false;\n const prevChildExitHandler = _onForkedChildExit;\n _onForkedChildExit = () => {\n if (_activeForkedChildren <= 0) childrenExited = true;\n prevChildExitHandler?.();\n };\n\n try {\n // Poll until process.exit is called, output stabilizes, or we time out\n const MAX_TOTAL_MS = 60000;\n const IDLE_TIMEOUT_MS = 500;\n const POST_CHILD_EXIT_IDLE_MS = 100; // short timeout after children finish\n const CHECK_MS = 50;\n const startTime = Date.now();\n let lastOutputLen = stdout.length + stderr.length;\n let idleMs = 0;\n\n // When an abort signal is present (e.g. watch mode), don't apply idle timeout —\n // only exit when aborted or process.exit is called.\n const isLongRunning = !!_abortSignal;\n\n while (!exitCalled) {\n // Check abort signal for long-running commands (watch mode)\n if (_abortSignal?.aborted) break;\n\n // Check if exitPromise resolved (non-blocking)\n const raceResult = await Promise.race([\n exitPromise.then(() => 'exit' as const),\n new Promise<'tick'>(r => setTimeout(() => r('tick'), CHECK_MS)),\n ]);\n\n if (raceResult === 'exit' || exitCalled) break;\n if (_abortSignal?.aborted) break;\n\n const currentLen = stdout.length + stderr.length;\n if (currentLen > lastOutputLen) {\n // New output — reset idle timer\n lastOutputLen = currentLen;\n idleMs = 0;\n } else {\n idleMs += CHECK_MS;\n }\n\n // Use shorter idle timeout once all forked children have exited\n // Skip idle timeout for long-running commands (watch mode)\n if (!isLongRunning) {\n const effectiveIdle = childrenExited ? POST_CHILD_EXIT_IDLE_MS : IDLE_TIMEOUT_MS;\n if (lastOutputLen > 0 && idleMs >= effectiveIdle) break;\n }\n\n // Hard timeout (skip for long-running commands)\n if (!isLongRunning && Date.now() - startTime >= MAX_TOTAL_MS) break;\n }\n\n return { stdout, stderr, exitCode: exitCalled ? exitCode : 0 };\n } finally {\n _activeProcessStdin = null;\n _onForkedChildExit = prevChildExitHandler;\n globalThis.removeEventListener('unhandledrejection', rejectionHandler);\n }\n });\n\n // Create custom 'npm' command that runs scripts from package.json\n const npmCommand = defineCommand('npm', async (args, ctx) => {\n if (!currentVfs) {\n return { stdout: '', stderr: 'VFS not initialized\\n', exitCode: 1 };\n }\n\n const subcommand = args[0];\n\n if (!subcommand || subcommand === 'help' || subcommand === '--help') {\n return {\n stdout: 'Usage: npm <command>\\n\\nCommands:\\n run <script> Run a script from package.json\\n start Run the start script\\n test Run the test script\\n install [pkg] Install packages\\n ls List installed packages\\n',\n stderr: '',\n exitCode: 0,\n };\n }\n\n switch (subcommand) {\n case 'run':\n case 'run-script':\n return handleNpmRun(args.slice(1), ctx);\n case 'start':\n return handleNpmRun(['start'], ctx);\n case 'test':\n case 't':\n case 'tst':\n return handleNpmRun(['test'], ctx);\n case 'install':\n case 'i':\n case 'add':\n return handleNpmInstall(args.slice(1), ctx);\n case 'ls':\n case 'list':\n return handleNpmList(ctx);\n default:\n return {\n stdout: '',\n stderr: `npm ERR! Unknown command: \"${subcommand}\"\\n`,\n exitCode: 1,\n };\n }\n });\n\n bashInstance = new Bash({\n fs: vfsAdapter,\n cwd: '/',\n env: {\n HOME: '/home/user',\n USER: 'user',\n PATH: '/usr/local/bin:/usr/bin:/bin:/node_modules/.bin',\n NODE_ENV: 'development',\n },\n customCommands: [nodeCommand, npmCommand],\n });\n}\n\n/**\n * Read and parse package.json from the VFS\n */\nfunction readPackageJson(cwd: string): { pkgJson: PackageJson; error?: undefined } | { pkgJson?: undefined; error: JustBashExecResult } {\n const pkgJsonPath = `${cwd}/package.json`.replace(/\\/+/g, '/');\n\n if (!currentVfs!.existsSync(pkgJsonPath)) {\n return {\n error: {\n stdout: '',\n stderr: 'npm ERR! no package.json found\\n',\n exitCode: 1,\n },\n };\n }\n\n try {\n const pkgJson = JSON.parse(currentVfs!.readFileSync(pkgJsonPath, 'utf8')) as PackageJson;\n return { pkgJson };\n } catch {\n return {\n error: {\n stdout: '',\n stderr: 'npm ERR! Failed to parse package.json\\n',\n exitCode: 1,\n },\n };\n }\n}\n\n/**\n * Handle `npm run [script]` — execute a script from package.json\n */\nasync function handleNpmRun(args: string[], ctx: CommandContext): Promise<JustBashExecResult> {\n const scriptName = args[0];\n\n // \"npm run\" with no script name: list available scripts\n if (!scriptName) {\n return listScripts(ctx);\n }\n\n const result = readPackageJson(ctx.cwd);\n if (result.error) return result.error;\n const pkgJson = result.pkgJson;\n\n const scripts = pkgJson.scripts || {};\n const scriptCommand = scripts[scriptName];\n\n if (!scriptCommand) {\n const available = Object.keys(scripts);\n let msg = `npm ERR! Missing script: \"${scriptName}\"\\n`;\n if (available.length > 0) {\n msg += '\\nnpm ERR! Available scripts:\\n';\n for (const name of available) {\n msg += `npm ERR! ${name}\\n`;\n msg += `npm ERR! ${scripts[name]}\\n`;\n }\n }\n return { stdout: '', stderr: msg, exitCode: 1 };\n }\n\n if (!ctx.exec) {\n return {\n stdout: '',\n stderr: 'npm ERR! Script execution not available in this context\\n',\n exitCode: 1,\n };\n }\n\n // Set up npm-specific environment variables\n const npmEnv: Record<string, string> = {\n ...ctx.env,\n npm_lifecycle_event: scriptName,\n };\n if (pkgJson.name) npmEnv.npm_package_name = pkgJson.name;\n if (pkgJson.version) npmEnv.npm_package_version = pkgJson.version;\n\n let allStdout = '';\n let allStderr = '';\n const label = `${pkgJson.name || ''}@${pkgJson.version || ''}`;\n\n // Run pre<script> if it exists\n const preScript = scripts[`pre${scriptName}`];\n if (preScript) {\n allStderr += `\\n> ${label} pre${scriptName}\\n> ${preScript}\\n\\n`;\n const preResult = await ctx.exec(preScript, { cwd: ctx.cwd, env: npmEnv });\n allStdout += preResult.stdout;\n allStderr += preResult.stderr;\n if (preResult.exitCode !== 0) {\n return { stdout: allStdout, stderr: allStderr, exitCode: preResult.exitCode };\n }\n }\n\n // Run the main script\n allStderr += `\\n> ${label} ${scriptName}\\n> ${scriptCommand}\\n\\n`;\n const mainResult = await ctx.exec(scriptCommand, { cwd: ctx.cwd, env: npmEnv });\n allStdout += mainResult.stdout;\n allStderr += mainResult.stderr;\n\n if (mainResult.exitCode !== 0) {\n return { stdout: allStdout, stderr: allStderr, exitCode: mainResult.exitCode };\n }\n\n // Run post<script> if it exists\n const postScript = scripts[`post${scriptName}`];\n if (postScript) {\n allStderr += `\\n> ${label} post${scriptName}\\n> ${postScript}\\n\\n`;\n const postResult = await ctx.exec(postScript, { cwd: ctx.cwd, env: npmEnv });\n allStdout += postResult.stdout;\n allStderr += postResult.stderr;\n if (postResult.exitCode !== 0) {\n return { stdout: allStdout, stderr: allStderr, exitCode: postResult.exitCode };\n }\n }\n\n return { stdout: allStdout, stderr: allStderr, exitCode: 0 };\n}\n\n/**\n * List available scripts from package.json (when `npm run` is called with no args)\n */\nfunction listScripts(ctx: CommandContext): JustBashExecResult {\n const result = readPackageJson(ctx.cwd);\n if (result.error) return result.error;\n const pkgJson = result.pkgJson;\n\n const scripts = pkgJson.scripts || {};\n const names = Object.keys(scripts);\n\n if (names.length === 0) {\n return { stdout: '', stderr: '', exitCode: 0 };\n }\n\n const lifecycle = ['prestart', 'start', 'poststart', 'pretest', 'test', 'posttest', 'prestop', 'stop', 'poststop'];\n const lifecyclePresent = names.filter(n => lifecycle.includes(n));\n const customPresent = names.filter(n => !lifecycle.includes(n));\n\n let output = `Lifecycle scripts included in ${pkgJson.name || ''}:\\n`;\n for (const name of lifecyclePresent) {\n output += ` ${name}\\n ${scripts[name]}\\n`;\n }\n if (customPresent.length > 0) {\n output += '\\navailable via `npm run-script`:\\n';\n for (const name of customPresent) {\n output += ` ${name}\\n ${scripts[name]}\\n`;\n }\n }\n\n return { stdout: output, stderr: '', exitCode: 0 };\n}\n\n/**\n * Handle `npm install [pkg]` — bridge to PackageManager\n */\nasync function handleNpmInstall(args: string[], ctx: CommandContext): Promise<JustBashExecResult> {\n const { PackageManager } = await import('../npm/index');\n const pm = new PackageManager(currentVfs!, { cwd: ctx.cwd });\n\n let stdout = '';\n\n try {\n const pkgArgs = args.filter(a => !a.startsWith('-'));\n if (pkgArgs.length === 0) {\n // npm install (no package name) -> install from package.json\n const installResult = await pm.installFromPackageJson({\n onProgress: (msg: string) => { stdout += msg + '\\n'; },\n });\n stdout += `added ${installResult.added.length} packages\\n`;\n } else {\n // npm install <pkg> [<pkg> ...]\n for (const arg of pkgArgs) {\n const installResult = await pm.install(arg, {\n save: true,\n onProgress: (msg: string) => { stdout += msg + '\\n'; },\n });\n stdout += `added ${installResult.added.length} packages\\n`;\n }\n }\n return { stdout, stderr: '', exitCode: 0 };\n } catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n return { stdout, stderr: `npm ERR! ${msg}\\n`, exitCode: 1 };\n }\n}\n\n/**\n * Handle `npm ls` — list installed packages\n */\nasync function handleNpmList(ctx: CommandContext): Promise<JustBashExecResult> {\n const { PackageManager } = await import('../npm/index');\n const pm = new PackageManager(currentVfs!, { cwd: ctx.cwd });\n const packages = pm.list();\n const entries = Object.entries(packages);\n\n if (entries.length === 0) {\n return { stdout: '(empty)\\n', stderr: '', exitCode: 0 };\n }\n\n let output = `${ctx.cwd}\\n`;\n for (const [name, version] of entries) {\n output += `+-- ${name}@${version}\\n`;\n }\n return { stdout: output, stderr: '', exitCode: 0 };\n}\n\nexport interface ExecOptions {\n cwd?: string;\n env?: Record<string, string>;\n encoding?: BufferEncoding | 'buffer';\n timeout?: number;\n maxBuffer?: number;\n shell?: string | boolean;\n}\n\nexport interface ExecResult {\n stdout: string | Buffer;\n stderr: string | Buffer;\n}\n\nexport type ExecCallback = (\n error: Error | null,\n stdout: string | Buffer,\n stderr: string | Buffer\n) => void;\n\n/**\n * Execute a command in a shell\n */\nexport function exec(\n command: string,\n optionsOrCallback?: ExecOptions | ExecCallback,\n callback?: ExecCallback\n): ChildProcess {\n let options: ExecOptions = {};\n let cb: ExecCallback | undefined;\n\n if (typeof optionsOrCallback === 'function') {\n cb = optionsOrCallback;\n } else if (optionsOrCallback) {\n options = optionsOrCallback;\n cb = callback;\n }\n\n const child = new ChildProcess();\n\n // Execute asynchronously\n (async () => {\n if (!bashInstance) {\n const error = new Error('child_process not initialized');\n child.emit('error', error);\n if (cb) cb(error, '', '');\n return;\n }\n\n try {\n const result = await bashInstance!.exec(command, {\n cwd: options.cwd,\n env: options.env,\n });\n\n const stdout = result.stdout || '';\n const stderr = result.stderr || '';\n\n // Emit data events\n if (stdout) {\n child.stdout?.push(Buffer.from(stdout));\n }\n child.stdout?.push(null);\n\n if (stderr) {\n child.stderr?.push(Buffer.from(stderr));\n }\n child.stderr?.push(null);\n\n // Emit close/exit\n child.emit('close', result.exitCode, null);\n child.emit('exit', result.exitCode, null);\n\n if (cb) {\n if (result.exitCode !== 0) {\n const error = new Error(`Command failed: ${command}`);\n (error as any).code = result.exitCode;\n cb(error, stdout, stderr);\n } else {\n cb(null, stdout, stderr);\n }\n }\n } catch (error) {\n child.emit('error', error);\n if (cb) cb(error as Error, '', '');\n }\n })();\n\n return child;\n}\n\n/**\n * Execute a command synchronously\n */\nexport function execSync(\n command: string,\n options?: ExecOptions\n): string | Buffer {\n if (!bashInstance) {\n throw new Error('child_process not initialized');\n }\n\n // Note: just-bash exec is async, so we can't truly do sync execution\n // This is a limitation of the browser environment\n // For now, throw an error suggesting to use exec() instead\n throw new Error(\n 'execSync is not supported in browser environment. Use exec() with async/await or callbacks instead.'\n );\n}\n\nexport interface SpawnOptions {\n cwd?: string;\n env?: Record<string, string>;\n shell?: boolean | string;\n stdio?: 'pipe' | 'inherit' | 'ignore' | Array<'pipe' | 'inherit' | 'ignore'>;\n}\n\n/**\n * Spawn a new process\n */\nexport function spawn(\n command: string,\n args?: string[] | SpawnOptions,\n options?: SpawnOptions\n): ChildProcess {\n let spawnArgs: string[] = [];\n let spawnOptions: SpawnOptions = {};\n\n if (Array.isArray(args)) {\n spawnArgs = args;\n spawnOptions = options || {};\n } else if (args) {\n spawnOptions = args;\n }\n\n const child = new ChildProcess();\n\n // Build the full command\n const fullCommand = spawnArgs.length > 0\n ? `${command} ${spawnArgs.map(arg =>\n arg.includes(' ') ? `\"${arg}\"` : arg\n ).join(' ')}`\n : command;\n\n // Execute asynchronously\n (async () => {\n if (!bashInstance) {\n const error = new Error('child_process not initialized');\n child.emit('error', error);\n return;\n }\n\n try {\n const result = await bashInstance!.exec(fullCommand, {\n cwd: spawnOptions.cwd,\n env: spawnOptions.env,\n });\n\n const stdout = result.stdout || '';\n const stderr = result.stderr || '';\n\n // Emit data events\n if (stdout) {\n child.stdout?.push(Buffer.from(stdout));\n }\n child.stdout?.push(null);\n\n if (stderr) {\n child.stderr?.push(Buffer.from(stderr));\n }\n child.stderr?.push(null);\n\n // Emit close/exit\n child.emit('close', result.exitCode, null);\n child.emit('exit', result.exitCode, null);\n } catch (error) {\n child.emit('error', error);\n }\n })();\n\n return child;\n}\n\n/**\n * Spawn a new process synchronously\n */\nexport function spawnSync(\n command: string,\n args?: string[],\n options?: SpawnOptions\n): { stdout: Buffer; stderr: Buffer; status: number; error?: Error } {\n throw new Error(\n 'spawnSync is not supported in browser environment. Use spawn() instead.'\n );\n}\n\n/**\n * Execute a file\n */\nexport function execFile(\n file: string,\n args?: string[] | ExecOptions | ExecCallback,\n options?: ExecOptions | ExecCallback,\n callback?: ExecCallback\n): ChildProcess {\n let execArgs: string[] = [];\n let execOptions: ExecOptions = {};\n let cb: ExecCallback | undefined;\n\n if (Array.isArray(args)) {\n execArgs = args;\n if (typeof options === 'function') {\n cb = options;\n } else if (options) {\n execOptions = options;\n cb = callback;\n }\n } else if (typeof args === 'function') {\n cb = args;\n } else if (args) {\n execOptions = args;\n cb = options as ExecCallback;\n }\n\n const command = execArgs.length > 0 ? `${file} ${execArgs.join(' ')}` : file;\n return exec(command, execOptions, cb);\n}\n\n/**\n * Fork — runs a Node.js module in a simulated child process using a new Runtime.\n * In the browser, there's no real process forking. Instead we:\n * 1. Create a ChildProcess with IPC (send/on('message'))\n * 2. Create a new Runtime to execute the module\n * 3. Wire up bidirectional IPC between parent and child\n */\nexport function fork(\n modulePath: string,\n argsOrOptions?: string[] | Record<string, unknown>,\n options?: Record<string, unknown>\n): ChildProcess {\n if (!currentVfs) {\n throw new Error('VFS not initialized');\n }\n\n // Parse overloaded arguments\n let args: string[] = [];\n let opts: Record<string, unknown> = {};\n if (Array.isArray(argsOrOptions)) {\n args = argsOrOptions;\n opts = options || {};\n } else if (argsOrOptions) {\n opts = argsOrOptions;\n }\n\n const cwd = (opts.cwd as string) || '/';\n const env = (opts.env as Record<string, string>) || {};\n const execArgv = (opts.execArgv as string[]) || [];\n\n // Resolve the module path\n const resolvedPath = modulePath.startsWith('/')\n ? modulePath\n : `${cwd}/${modulePath}`.replace(/\\/+/g, '/');\n\n const child = new ChildProcess();\n child.connected = true;\n child.spawnargs = ['node', ...execArgv, resolvedPath, ...args];\n child.spawnfile = 'node';\n\n // Create a Runtime for the child process\n const childRuntime = new Runtime(currentVfs!, {\n cwd,\n env,\n onConsole: (method, consoleArgs) => {\n const msg = consoleArgs.map(a => String(a)).join(' ');\n if (method === 'error' || method === 'warn') {\n child.stderr?.emit('data', msg + '\\n');\n } else {\n child.stdout?.emit('data', msg + '\\n');\n }\n },\n onStdout: (data: string) => {\n child.stdout?.emit('data', data);\n },\n onStderr: (data: string) => {\n child.stderr?.emit('data', data);\n },\n });\n\n const childProc = childRuntime.getProcess();\n childProc.argv = ['node', resolvedPath, ...args];\n\n // Set up bidirectional IPC with serialized delivery.\n // In real Node.js, IPC messages cross a process boundary (pipe/fd), so there's\n // natural latency. In our same-thread implementation, we need to serialize\n // message delivery to prevent race conditions (e.g. vitest's reporter receiving\n // task-update before the \"collected\" tasks are registered).\n\n // Clone IPC messages to mimic real Node.js IPC behavior.\n // Real IPC serializes messages across process boundaries (V8 serializer).\n // Without cloning, shared object references cause issues: vitest's child\n // modifies task objects after sending, and the parent sees stale/corrupted state.\n const cloneIpcMessage = (msg: unknown): unknown => {\n try { return structuredClone(msg); } catch { return msg; }\n };\n\n // Parent sends → child process receives\n child.send = (message: unknown, _callback?: (error: Error | null) => void): boolean => {\n if (!child.connected) return false;\n const cloned = cloneIpcMessage(message);\n setTimeout(() => {\n childProc.emit('message', cloned);\n }, 0);\n return true;\n };\n\n // Child sends → parent ChildProcess receives (serialized + awaited)\n // In real Node.js, IPC crosses a process boundary so messages are naturally serialized.\n // In our same-thread implementation, we must manually serialize AND await async handlers.\n // Using emit() won't work — EventEmitter is fire-and-forget for async handlers.\n // Instead, we directly invoke each 'message' listener and await any returned promises.\n // This ensures birpc's async onCollected finishes before onTaskUpdate starts.\n let ipcQueue: Promise<void> = Promise.resolve();\n childProc.send = ((message: unknown, _callback?: (error: Error | null) => void): boolean => {\n if (!child.connected) return false;\n const cloned = cloneIpcMessage(message);\n ipcQueue = ipcQueue.then(async () => {\n const listeners = child.listeners('message');\n for (const listener of listeners) {\n try {\n const result = (listener as (...args: unknown[]) => unknown)(cloned);\n if (result && typeof (result as Promise<unknown>).then === 'function') {\n await result;\n }\n } catch {\n // Handler errors propagate through vitest's own error handling\n }\n }\n });\n return true;\n }) as any;\n childProc.connected = true;\n\n // Track this fork in the active children count\n _activeForkedChildren++;\n\n const notifyChildExit = () => {\n _activeForkedChildren--;\n _onForkedChildExit?.();\n };\n\n // Override child's process.exit\n childProc.exit = ((code = 0) => {\n child.exitCode = code;\n child.connected = false;\n childProc.connected = false;\n childProc.emit('exit', code);\n child.emit('exit', code, null);\n child.emit('close', code, null);\n notifyChildExit();\n }) as (code?: number) => never;\n\n // Override child's kill to disconnect\n child.kill = (signal?: string): boolean => {\n child.killed = true;\n child.connected = false;\n childProc.connected = false;\n childProc.emit('exit', null, signal || 'SIGTERM');\n child.emit('exit', null, signal || 'SIGTERM');\n child.emit('close', null, signal || 'SIGTERM');\n notifyChildExit();\n return true;\n };\n\n child.disconnect = (): void => {\n child.connected = false;\n childProc.connected = false;\n child.emit('disconnect');\n };\n\n // Run the module asynchronously\n setTimeout(() => {\n try {\n childRuntime.runFile(resolvedPath);\n } catch (error) {\n // process.exit throws in sync mode — that's normal\n if (error instanceof Error && error.message.startsWith('Process exited with code')) {\n return;\n }\n const errorMsg = error instanceof Error ? error.message : String(error);\n child.stderr?.emit('data', `Error in forked process: ${errorMsg}\\n`);\n child.exitCode = 1;\n child.emit('error', error);\n child.emit('exit', 1, null);\n child.emit('close', 1, null);\n }\n }, 0);\n\n return child;\n}\n\n/**\n * ChildProcess class\n */\nexport class ChildProcess extends EventEmitter {\n pid: number;\n connected: boolean = false;\n killed: boolean = false;\n exitCode: number | null = null;\n signalCode: string | null = null;\n spawnargs: string[] = [];\n spawnfile: string = '';\n\n stdin: Writable | null;\n stdout: Readable | null;\n stderr: Readable | null;\n\n constructor() {\n super();\n this.pid = Math.floor(Math.random() * 10000) + 1000;\n this.stdin = new Writable();\n this.stdout = new Readable();\n this.stderr = new Readable();\n }\n\n kill(signal?: string): boolean {\n this.killed = true;\n this.emit('exit', null, signal || 'SIGTERM');\n return true;\n }\n\n disconnect(): void {\n this.connected = false;\n }\n\n send(message: unknown, callback?: (error: Error | null) => void): boolean {\n // IPC not supported\n if (callback) callback(new Error('IPC not supported'));\n return false;\n }\n\n ref(): this {\n return this;\n }\n\n unref(): this {\n return this;\n }\n}\n\nexport default {\n exec,\n execSync,\n execFile,\n spawn,\n spawnSync,\n fork,\n ChildProcess,\n initChildProcess,\n setStreamingCallbacks,\n clearStreamingCallbacks,\n};\n","/**\n * VirtualFS Adapter for just-bash\n * Implements IFileSystem interface to bridge VirtualFS with just-bash\n */\n\nimport type {\n IFileSystem,\n FsStat,\n MkdirOptions,\n RmOptions,\n CpOptions,\n BufferEncoding,\n FileContent,\n} from 'just-bash';\nimport type { VirtualFS } from '../virtual-fs';\nimport { createNodeError } from '../virtual-fs';\nimport { uint8ToBinaryString } from '../utils/binary-encoding';\n\nconst _decoder = new TextDecoder();\n\n// Local types for just-bash interface compatibility\n// These are not exported from just-bash main entry point\ninterface DirentEntry {\n name: string;\n isFile: boolean;\n isDirectory: boolean;\n isSymbolicLink: boolean;\n}\n\ninterface ReadFileOptions {\n encoding?: BufferEncoding | null;\n}\n\ninterface WriteFileOptions {\n encoding?: BufferEncoding;\n}\n\nexport class VirtualFSAdapter implements IFileSystem {\n constructor(private vfs: VirtualFS) {}\n\n /**\n * Read the contents of a file as a string\n */\n async readFile(\n path: string,\n options?: ReadFileOptions | BufferEncoding\n ): Promise<string> {\n const encoding = typeof options === 'string' ? options : options?.encoding;\n\n // VirtualFS only natively supports utf8/utf-8\n // For other encodings, we need to handle the conversion ourselves\n if (!encoding || encoding === 'utf8' || encoding === 'utf-8') {\n return this.vfs.readFileSync(path, 'utf8');\n }\n\n // For binary/latin1 encoding, convert each byte to a character\n if (encoding === 'binary' || encoding === 'latin1') {\n const buffer = this.vfs.readFileSync(path);\n return uint8ToBinaryString(buffer);\n }\n\n // For other encodings, fall back to utf8\n return this.vfs.readFileSync(path, 'utf8');\n }\n\n /**\n * Read the contents of a file as a Uint8Array (binary)\n */\n async readFileBuffer(path: string): Promise<Uint8Array> {\n return this.vfs.readFileSync(path);\n }\n\n /**\n * Write content to a file, creating it if it doesn't exist\n */\n async writeFile(\n path: string,\n content: FileContent,\n _options?: WriteFileOptions | BufferEncoding\n ): Promise<void> {\n this.vfs.writeFileSync(path, content);\n }\n\n /**\n * Append content to a file, creating it if it doesn't exist\n */\n async appendFile(\n path: string,\n content: FileContent,\n _options?: WriteFileOptions | BufferEncoding\n ): Promise<void> {\n let existing = '';\n try {\n existing = this.vfs.readFileSync(path, 'utf8');\n } catch {\n // File doesn't exist, start with empty content\n }\n const newContent =\n typeof content === 'string' ? content : _decoder.decode(content);\n this.vfs.writeFileSync(path, existing + newContent);\n }\n\n /**\n * Check if a path exists\n */\n async exists(path: string): Promise<boolean> {\n return this.vfs.existsSync(path);\n }\n\n /**\n * Get file/directory information\n */\n async stat(path: string): Promise<FsStat> {\n const stats = this.vfs.statSync(path);\n const isFile = stats.isFile();\n const isDirectory = stats.isDirectory();\n\n let size = 0;\n if (isFile) {\n try {\n const content = this.vfs.readFileSync(path);\n size = content.length;\n } catch {\n // Shouldn't happen, but default to 0\n }\n }\n\n // Files in .bin/ directories need execute permission for just-bash PATH resolution\n const isExecutable = isFile && path.includes('/node_modules/.bin/');\n\n return {\n isFile,\n isDirectory,\n isSymbolicLink: false,\n mode: isDirectory ? 0o755 : (isExecutable ? 0o755 : 0o644),\n size,\n mtime: new Date(),\n };\n }\n\n /**\n * Create a directory\n */\n async mkdir(path: string, options?: MkdirOptions): Promise<void> {\n this.vfs.mkdirSync(path, options);\n }\n\n /**\n * Read directory contents\n */\n async readdir(path: string): Promise<string[]> {\n return this.vfs.readdirSync(path);\n }\n\n /**\n * Read directory contents with file type information\n */\n async readdirWithFileTypes(path: string): Promise<DirentEntry[]> {\n const entries = this.vfs.readdirSync(path);\n const result: DirentEntry[] = [];\n\n for (const name of entries) {\n const fullPath = path === '/' ? `/${name}` : `${path}/${name}`;\n try {\n const stats = this.vfs.statSync(fullPath);\n result.push({\n name,\n isFile: stats.isFile(),\n isDirectory: stats.isDirectory(),\n isSymbolicLink: false,\n });\n } catch {\n // Entry disappeared between readdir and stat, skip it\n }\n }\n\n return result;\n }\n\n /**\n * Remove a file or directory\n */\n async rm(path: string, options?: RmOptions): Promise<void> {\n const exists = this.vfs.existsSync(path);\n\n if (!exists) {\n if (options?.force) {\n return; // Force mode ignores missing files\n }\n throw createNodeError('ENOENT', 'rm', path);\n }\n\n const stats = this.vfs.statSync(path);\n\n if (stats.isFile()) {\n this.vfs.unlinkSync(path);\n } else if (stats.isDirectory()) {\n if (options?.recursive) {\n await this.rmRecursive(path);\n } else {\n this.vfs.rmdirSync(path);\n }\n }\n }\n\n /**\n * Recursively remove a directory and its contents\n */\n private async rmRecursive(path: string): Promise<void> {\n const entries = this.vfs.readdirSync(path);\n\n for (const entry of entries) {\n const fullPath = path === '/' ? `/${entry}` : `${path}/${entry}`;\n const stats = this.vfs.statSync(fullPath);\n\n if (stats.isDirectory()) {\n await this.rmRecursive(fullPath);\n } else {\n this.vfs.unlinkSync(fullPath);\n }\n }\n\n this.vfs.rmdirSync(path);\n }\n\n /**\n * Copy a file or directory\n */\n async cp(src: string, dest: string, options?: CpOptions): Promise<void> {\n const stats = this.vfs.statSync(src);\n\n if (stats.isFile()) {\n const content = this.vfs.readFileSync(src);\n this.vfs.writeFileSync(dest, content);\n } else if (stats.isDirectory()) {\n if (!options?.recursive) {\n throw new Error(\n `EISDIR: illegal operation on a directory, cannot copy '${src}'`\n );\n }\n await this.cpRecursive(src, dest);\n }\n }\n\n /**\n * Recursively copy a directory\n */\n private async cpRecursive(src: string, dest: string): Promise<void> {\n // Create destination directory\n this.vfs.mkdirSync(dest, { recursive: true });\n\n const entries = this.vfs.readdirSync(src);\n\n for (const entry of entries) {\n const srcPath = src === '/' ? `/${entry}` : `${src}/${entry}`;\n const destPath = dest === '/' ? `/${entry}` : `${dest}/${entry}`;\n const stats = this.vfs.statSync(srcPath);\n\n if (stats.isDirectory()) {\n await this.cpRecursive(srcPath, destPath);\n } else {\n const content = this.vfs.readFileSync(srcPath);\n this.vfs.writeFileSync(destPath, content);\n }\n }\n }\n\n /**\n * Move/rename a file or directory\n */\n async mv(src: string, dest: string): Promise<void> {\n this.vfs.renameSync(src, dest);\n }\n\n /**\n * Resolve a relative path against a base path\n */\n resolvePath(base: string, path: string): string {\n // If path is absolute, return it as-is (normalized)\n if (path.startsWith('/')) {\n return this.normalizePath(path);\n }\n\n // Combine base and relative path\n const combined = base.endsWith('/')\n ? `${base}${path}`\n : `${base}/${path}`;\n\n return this.normalizePath(combined);\n }\n\n /**\n * Normalize a path (resolve . and .. segments)\n */\n private normalizePath(path: string): string {\n if (!path.startsWith('/')) {\n path = '/' + path;\n }\n\n const parts = path.split('/').filter(Boolean);\n const resolved: string[] = [];\n\n for (const part of parts) {\n if (part === '..') {\n resolved.pop();\n } else if (part !== '.') {\n resolved.push(part);\n }\n }\n\n return '/' + resolved.join('/');\n }\n\n /**\n * Get all paths in the filesystem\n */\n getAllPaths(): string[] {\n const paths: string[] = [];\n this.collectPaths('/', paths);\n return paths;\n }\n\n /**\n * Recursively collect all paths\n */\n private collectPaths(dir: string, paths: string[]): void {\n try {\n const entries = this.vfs.readdirSync(dir);\n for (const entry of entries) {\n const fullPath = dir === '/' ? `/${entry}` : `${dir}/${entry}`;\n paths.push(fullPath);\n try {\n const stats = this.vfs.statSync(fullPath);\n if (stats.isDirectory()) {\n this.collectPaths(fullPath, paths);\n }\n } catch {\n // Skip if stat fails\n }\n }\n } catch {\n // Directory doesn't exist or can't be read\n }\n }\n\n /**\n * Change file/directory permissions (no-op - VFS doesn't track permissions)\n */\n async chmod(_path: string, _mode: number): Promise<void> {\n // VFS doesn't track permissions, but we verify the path exists\n if (!this.vfs.existsSync(_path)) {\n throw createNodeError('ENOENT', 'chmod', _path);\n }\n // No-op\n }\n\n /**\n * Create a symbolic link (not supported)\n */\n async symlink(_target: string, _linkPath: string): Promise<void> {\n throw new Error('Symbolic links are not supported in VirtualFS');\n }\n\n /**\n * Create a hard link (not supported)\n */\n async link(_existingPath: string, _newPath: string): Promise<void> {\n throw new Error('Hard links are not supported in VirtualFS');\n }\n\n /**\n * Read the target of a symbolic link (not supported)\n */\n async readlink(_path: string): Promise<string> {\n throw new Error('Symbolic links are not supported in VirtualFS');\n }\n\n /**\n * Get file/directory information without following symlinks\n * Since VFS doesn't support symlinks, this is the same as stat\n */\n async lstat(path: string): Promise<FsStat> {\n return this.stat(path);\n }\n\n /**\n * Resolve all symlinks in a path\n * Since VFS doesn't support symlinks, just normalize and return\n */\n async realpath(path: string): Promise<string> {\n // Verify path exists\n if (!this.vfs.existsSync(path)) {\n throw createNodeError('ENOENT', 'realpath', path);\n }\n return this.normalizePath(path);\n }\n\n /**\n * Set access and modification times (no-op - VFS doesn't track times)\n */\n async utimes(path: string, _atime: Date, _mtime: Date): Promise<void> {\n // VFS doesn't track times, but we verify the path exists\n if (!this.vfs.existsSync(path)) {\n throw createNodeError('ENOENT', 'utimes', path);\n }\n // No-op\n }\n}\n","/**\n * chokidar shim - File watcher library used by Vite\n * Wraps our VirtualFS watch implementation\n */\n\nimport { EventEmitter } from './events';\nimport type { VirtualFS, FSWatcher as VFSWatcher, Stats } from '../virtual-fs';\n\n// Global reference to VFS - set by runtime\nlet globalVFS: VirtualFS | null = null;\n\nexport function setVFS(vfs: VirtualFS): void {\n globalVFS = vfs;\n}\n\nexport interface ChokidarOptions {\n persistent?: boolean;\n ignored?: string | RegExp | ((path: string) => boolean) | Array<string | RegExp | ((path: string) => boolean)>;\n ignoreInitial?: boolean;\n followSymlinks?: boolean;\n cwd?: string;\n disableGlobbing?: boolean;\n usePolling?: boolean;\n interval?: number;\n binaryInterval?: number;\n alwaysStat?: boolean;\n depth?: number;\n awaitWriteFinish?: boolean | { stabilityThreshold?: number; pollInterval?: number };\n ignorePermissionErrors?: boolean;\n atomic?: boolean | number;\n}\n\nexport class FSWatcher extends EventEmitter {\n private vfs: VirtualFS;\n private watched = new Map<string, VFSWatcher>();\n private options: ChokidarOptions;\n private closed = false;\n private ready = false;\n private _eventCounts?: Map<string, number>;\n\n constructor(options: ChokidarOptions = {}) {\n super();\n if (!globalVFS) {\n throw new Error('chokidar: VirtualFS not initialized. Call setVFS first.');\n }\n this.vfs = globalVFS;\n this.options = options;\n }\n\n private shouldIgnore(path: string): boolean {\n const { ignored } = this.options;\n if (!ignored) return false;\n\n const ignoreList = Array.isArray(ignored) ? ignored : [ignored];\n\n for (const pattern of ignoreList) {\n if (typeof pattern === 'string') {\n if (path === pattern || path.startsWith(pattern + '/')) return true;\n } else if (pattern instanceof RegExp) {\n if (pattern.test(path)) return true;\n } else if (typeof pattern === 'function') {\n if (pattern(path)) return true;\n }\n }\n\n return false;\n }\n\n private normalizePath(path: string): string {\n // Apply cwd if set\n if (this.options.cwd && !path.startsWith('/')) {\n path = this.options.cwd + '/' + path;\n }\n // Normalize path\n if (!path.startsWith('/')) {\n path = '/' + path;\n }\n return path;\n }\n\n add(paths: string | readonly string[]): this {\n if (this.closed) return this;\n\n const pathArray = Array.isArray(paths) ? paths : [paths];\n const pendingEmits: Array<() => void> = [];\n console.log('[chokidar] add:', pathArray);\n\n for (const p of pathArray) {\n const normalized = this.normalizePath(p);\n\n if (this.shouldIgnore(normalized)) continue;\n if (this.watched.has(normalized)) continue;\n\n try {\n // Check if path exists\n if (!this.vfs.existsSync(normalized)) {\n // Path doesn't exist yet - that's ok, we'll watch the parent\n const parentPath = normalized.substring(0, normalized.lastIndexOf('/')) || '/';\n if (this.vfs.existsSync(parentPath)) {\n this.watchPath(parentPath, normalized);\n }\n continue;\n }\n\n const stats = this.vfs.statSync(normalized);\n\n // Emit initial 'add' events unless ignoreInitial is set\n if (!this.options.ignoreInitial) {\n if (stats.isDirectory()) {\n this.collectDirContents(normalized, pendingEmits);\n } else {\n pendingEmits.push(() => this.emit('add', normalized, stats));\n }\n }\n\n // Set up watching\n this.watchPath(normalized);\n\n // If directory, also watch contents recursively\n if (stats.isDirectory()) {\n this.watchDirRecursive(normalized);\n }\n } catch (err) {\n this.emit('error', err);\n }\n }\n\n // Emit ready event and initial add events asynchronously\n // so listeners can be attached after watch() is called\n if (!this.ready) {\n this.ready = true;\n setTimeout(() => {\n for (const emitFn of pendingEmits) {\n emitFn();\n }\n this.emit('ready');\n }, 0);\n }\n\n return this;\n }\n\n private collectDirContents(dirPath: string, pendingEmits: Array<() => void>): void {\n try {\n const entries = this.vfs.readdirSync(dirPath);\n for (const entry of entries) {\n const fullPath = dirPath === '/' ? '/' + entry : dirPath + '/' + entry;\n if (this.shouldIgnore(fullPath)) continue;\n\n const stats = this.vfs.statSync(fullPath);\n if (stats.isDirectory()) {\n pendingEmits.push(() => this.emit('addDir', fullPath, stats));\n this.collectDirContents(fullPath, pendingEmits);\n } else {\n pendingEmits.push(() => this.emit('add', fullPath, stats));\n }\n }\n } catch {\n // Ignore errors during initial scan\n }\n }\n\n private watchPath(path: string, watchFor?: string): void {\n if (this.watched.has(path)) return;\n\n const watcher = this.vfs.watch(path, { recursive: true }, (eventType, filename) => {\n if (this.closed) return;\n\n let fullPath: string;\n if (filename) {\n fullPath = path === '/' ? '/' + filename : path + '/' + filename;\n } else {\n fullPath = path;\n }\n\n // Debug: Track watch events per path to detect infinite loops\n const eventKey = `${eventType}:${fullPath}`;\n if (!this._eventCounts) this._eventCounts = new Map<string, number>();\n const count = (this._eventCounts.get(eventKey) || 0) + 1;\n this._eventCounts.set(eventKey, count);\n if (count === 5) {\n console.warn(`[chokidar] Repeated event: ${eventType} on ${fullPath} (${count}+ times)`);\n }\n\n console.log('[chokidar] event:', eventType, fullPath);\n\n // If we're watching for a specific path, only emit for that\n if (watchFor && fullPath !== watchFor && !fullPath.startsWith(watchFor + '/')) {\n return;\n }\n\n if (this.shouldIgnore(fullPath)) {\n console.log('[chokidar] ignored:', fullPath);\n return;\n }\n\n if (eventType === 'rename') {\n // File was added or removed\n if (this.vfs.existsSync(fullPath)) {\n try {\n const stats = this.vfs.statSync(fullPath);\n if (stats.isDirectory()) {\n console.log('[chokidar] emit addDir:', fullPath);\n this.emit('addDir', fullPath, stats);\n } else {\n console.log('[chokidar] emit add:', fullPath);\n this.emit('add', fullPath, stats);\n }\n } catch {\n // Race condition - file may have been deleted\n }\n } else {\n console.log('[chokidar] emit unlink:', fullPath);\n this.emit('unlink', fullPath);\n }\n } else if (eventType === 'change') {\n // File was modified\n try {\n const stats = this.vfs.statSync(fullPath);\n console.log('[chokidar] emit change:', fullPath);\n this.emit('change', fullPath, stats);\n } catch {\n // File may have been deleted\n this.emit('unlink', fullPath);\n }\n }\n });\n\n this.watched.set(path, watcher);\n }\n\n private watchDirRecursive(dirPath: string, depth = 0): void {\n if (this.options.depth !== undefined && depth > this.options.depth) return;\n\n try {\n const entries = this.vfs.readdirSync(dirPath);\n for (const entry of entries) {\n const fullPath = dirPath === '/' ? '/' + entry : dirPath + '/' + entry;\n if (this.shouldIgnore(fullPath)) continue;\n\n try {\n const stats = this.vfs.statSync(fullPath);\n if (stats.isDirectory()) {\n this.watchPath(fullPath);\n this.watchDirRecursive(fullPath, depth + 1);\n }\n } catch {\n // Ignore errors\n }\n }\n } catch {\n // Ignore errors\n }\n }\n\n unwatch(paths: string | readonly string[]): this {\n const pathArray = Array.isArray(paths) ? paths : [paths];\n\n for (const p of pathArray) {\n const normalized = this.normalizePath(p);\n const watcher = this.watched.get(normalized);\n if (watcher) {\n watcher.close();\n this.watched.delete(normalized);\n }\n }\n\n return this;\n }\n\n close(): Promise<void> {\n this.closed = true;\n\n for (const watcher of this.watched.values()) {\n watcher.close();\n }\n this.watched.clear();\n\n this.emit('close');\n return Promise.resolve();\n }\n\n getWatched(): Record<string, string[]> {\n const result: Record<string, string[]> = {};\n\n for (const path of this.watched.keys()) {\n const dir = path.substring(0, path.lastIndexOf('/')) || '/';\n const basename = path.substring(path.lastIndexOf('/') + 1);\n\n if (!result[dir]) {\n result[dir] = [];\n }\n result[dir].push(basename);\n }\n\n return result;\n }\n\n}\n\n/**\n * Watch files/directories for changes\n */\nexport function watch(\n paths: string | readonly string[],\n options?: ChokidarOptions\n): FSWatcher {\n const watcher = new FSWatcher(options);\n watcher.add(paths);\n return watcher;\n}\n\nexport default { watch, FSWatcher, setVFS };\n","/**\n * ws (WebSocket) shim for browser environment\n * Used by Vite for HMR (Hot Module Replacement)\n */\n\nimport { EventEmitter } from './events';\n\n// Polyfill for CloseEvent (not available in Node.js)\nconst CloseEventPolyfill = typeof CloseEvent !== 'undefined' ? CloseEvent : class CloseEvent extends Event {\n code: number;\n reason: string;\n wasClean: boolean;\n constructor(type: string, init?: { code?: number; reason?: string; wasClean?: boolean }) {\n super(type);\n this.code = init?.code ?? 1000;\n this.reason = init?.reason ?? '';\n this.wasClean = init?.wasClean ?? true;\n }\n};\n\n// Polyfill for MessageEvent (not available in Node.js)\nconst MessageEventPolyfill = typeof MessageEvent !== 'undefined' ? MessageEvent : class MessageEvent extends Event {\n data: unknown;\n constructor(type: string, init?: { data?: unknown }) {\n super(type);\n this.data = init?.data;\n }\n};\n\n// Message channel for communication between WebSocket server and clients\nlet messageChannel: BroadcastChannel | null = null;\ntry {\n messageChannel = new BroadcastChannel('vite-ws-channel');\n} catch {\n // BroadcastChannel not available in some environments\n}\n\n// Track all server instances\nconst servers = new Map<string, WebSocketServer>();\nlet clientIdCounter = 0;\n\nexport class WebSocket extends EventEmitter {\n static readonly CONNECTING = 0;\n static readonly OPEN = 1;\n static readonly CLOSING = 2;\n static readonly CLOSED = 3;\n\n readonly CONNECTING = WebSocket.CONNECTING;\n readonly OPEN = WebSocket.OPEN;\n readonly CLOSING = WebSocket.CLOSING;\n readonly CLOSED = WebSocket.CLOSED;\n\n readyState: number = WebSocket.CONNECTING;\n url: string;\n protocol: string = '';\n extensions: string = '';\n bufferedAmount: number = 0;\n binaryType: 'blob' | 'arraybuffer' = 'blob';\n\n private _id: string;\n private _server: WebSocketServer | null = null;\n private _nativeWs: globalThis.WebSocket | null = null;\n\n // Event handler properties\n onopen: ((event: Event) => void) | null = null;\n onclose: ((event: CloseEvent) => void) | null = null;\n onerror: ((event: Event) => void) | null = null;\n onmessage: ((event: MessageEvent) => void) | null = null;\n\n constructor(url: string, protocols?: string | string[]) {\n super();\n this.url = url;\n this._id = `client-${++clientIdCounter}`;\n\n if (protocols) {\n this.protocol = Array.isArray(protocols) ? protocols[0] : protocols;\n }\n\n // Connect asynchronously\n setTimeout(() => this._connect(), 0);\n }\n\n private _connect(): void {\n // For internal WebSocket connections (from server to client), connect immediately\n if (this.url.startsWith('internal://')) {\n this.readyState = WebSocket.OPEN;\n this.emit('open');\n if (this.onopen) this.onopen(new Event('open'));\n return;\n }\n\n // For external WebSocket connections, use the browser's native WebSocket.\n // This allows libraries like the Convex CLI (which require('ws')) to\n // communicate with real remote servers.\n if (this.url.startsWith('ws://') || this.url.startsWith('wss://')) {\n this._connectNative();\n return;\n }\n\n // For all other URLs, use BroadcastChannel (internal Vite HMR)\n if (!messageChannel) {\n setTimeout(() => {\n this.readyState = WebSocket.OPEN;\n this.emit('open');\n if (this.onopen) this.onopen(new Event('open'));\n }, 0);\n return;\n }\n\n // Try to connect to a server via BroadcastChannel\n messageChannel.postMessage({\n type: 'connect',\n clientId: this._id,\n url: this.url,\n });\n\n // Listen for responses\n const channel = messageChannel;\n const handler = (event: MessageEvent) => {\n const data = event.data;\n\n if (data.targetClient !== this._id) return;\n\n switch (data.type) {\n case 'connected':\n this.readyState = WebSocket.OPEN;\n this.emit('open');\n if (this.onopen) this.onopen(new Event('open'));\n break;\n\n case 'message':\n const msgEvent = new MessageEventPolyfill('message', { data: data.payload });\n this.emit('message', msgEvent);\n if (this.onmessage) this.onmessage(msgEvent as unknown as MessageEvent);\n break;\n\n case 'close':\n this.readyState = WebSocket.CLOSED;\n const closeEvent = new CloseEventPolyfill('close', {\n code: data.code || 1000,\n reason: data.reason || '',\n wasClean: true,\n });\n this.emit('close', closeEvent);\n if (this.onclose) this.onclose(closeEvent as unknown as CloseEvent);\n channel.removeEventListener('message', handler);\n break;\n\n case 'error':\n const errorEvent = new Event('error');\n this.emit('error', errorEvent);\n if (this.onerror) this.onerror(errorEvent);\n break;\n }\n };\n\n channel.addEventListener('message', handler);\n\n // Connection timeout\n setTimeout(() => {\n if (this.readyState === WebSocket.CONNECTING) {\n // No server responded, act as if connected (for standalone client use)\n this.readyState = WebSocket.OPEN;\n this.emit('open');\n if (this.onopen) this.onopen(new Event('open'));\n }\n }, 100);\n }\n\n private _connectNative(): void {\n // Check that the browser's native WebSocket is available and is not our own shim.\n // Only use native WebSocket in a real browser — Node.js 21+ has native WebSocket\n // but it connects to real servers, which breaks tests and isn't what the shim needs.\n const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n const NativeWS = isBrowser && typeof globalThis.WebSocket === 'function' && globalThis.WebSocket !== (WebSocket as any)\n ? globalThis.WebSocket\n : null;\n\n if (!NativeWS) {\n // No native WebSocket (test env, Node.js, etc.) — act as if connected\n setTimeout(() => {\n this.readyState = WebSocket.OPEN;\n this.emit('open');\n if (this.onopen) this.onopen(new Event('open'));\n }, 0);\n return;\n }\n\n try {\n this._nativeWs = new NativeWS(this.url);\n this._nativeWs.binaryType = this.binaryType === 'arraybuffer' ? 'arraybuffer' : 'blob';\n } catch {\n this.readyState = WebSocket.CLOSED;\n const errorEvent = new Event('error');\n this.emit('error', errorEvent);\n if (this.onerror) this.onerror(errorEvent);\n return;\n }\n\n this._nativeWs.onopen = () => {\n this.readyState = WebSocket.OPEN;\n this.emit('open');\n if (this.onopen) this.onopen(new Event('open'));\n };\n\n this._nativeWs.onmessage = (event: globalThis.MessageEvent) => {\n const msgEvent = new MessageEventPolyfill('message', { data: event.data });\n this.emit('message', msgEvent);\n if (this.onmessage) this.onmessage(msgEvent as unknown as MessageEvent);\n };\n\n this._nativeWs.onclose = (event: globalThis.CloseEvent) => {\n this.readyState = WebSocket.CLOSED;\n this._nativeWs = null;\n const closeEvent = new CloseEventPolyfill('close', {\n code: event.code,\n reason: event.reason,\n wasClean: event.wasClean,\n });\n this.emit('close', closeEvent);\n if (this.onclose) this.onclose(closeEvent as unknown as CloseEvent);\n };\n\n this._nativeWs.onerror = () => {\n const errorEvent = new Event('error');\n this.emit('error', errorEvent);\n if (this.onerror) this.onerror(errorEvent);\n };\n }\n\n send(data: string | ArrayBuffer | Uint8Array): void {\n if (this.readyState !== WebSocket.OPEN) {\n throw new Error('WebSocket is not open');\n }\n\n // If connected to native WebSocket (external server)\n if (this._nativeWs) {\n this._nativeWs.send(data);\n return;\n }\n\n // If connected to internal server\n if (this._server) {\n this._server._handleClientMessage(this, data);\n return;\n }\n\n // Send via BroadcastChannel\n if (messageChannel) {\n messageChannel.postMessage({\n type: 'message',\n clientId: this._id,\n url: this.url,\n payload: data,\n });\n }\n }\n\n close(code?: number, reason?: string): void {\n if (this.readyState === WebSocket.CLOSED || this.readyState === WebSocket.CLOSING) {\n return;\n }\n\n this.readyState = WebSocket.CLOSING;\n\n // If connected to native WebSocket, close it (onclose handler emits events)\n if (this._nativeWs) {\n this._nativeWs.close(code, reason);\n return;\n }\n\n if (messageChannel) {\n messageChannel.postMessage({\n type: 'disconnect',\n clientId: this._id,\n url: this.url,\n code,\n reason,\n });\n }\n\n setTimeout(() => {\n this.readyState = WebSocket.CLOSED;\n const closeEvent = new CloseEventPolyfill('close', {\n code: code || 1000,\n reason: reason || '',\n wasClean: true,\n });\n this.emit('close', closeEvent);\n if (this.onclose) this.onclose(closeEvent as unknown as CloseEvent);\n }, 0);\n }\n\n ping(): void {\n // No-op in browser\n }\n\n pong(): void {\n // No-op in browser\n }\n\n terminate(): void {\n if (this._nativeWs) {\n this._nativeWs.close();\n this._nativeWs = null;\n }\n this.readyState = WebSocket.CLOSED;\n const closeEvent = new CloseEventPolyfill('close', {\n code: 1006,\n reason: 'Connection terminated',\n wasClean: false,\n });\n this.emit('close', closeEvent);\n if (this.onclose) this.onclose(closeEvent as unknown as CloseEvent);\n }\n\n // For internal server use\n _setServer(server: WebSocketServer): void {\n this._server = server;\n }\n\n _receiveMessage(data: unknown): void {\n const msgEvent = new MessageEventPolyfill('message', { data });\n this.emit('message', msgEvent);\n if (this.onmessage) this.onmessage(msgEvent as unknown as MessageEvent);\n }\n}\n\nexport interface ServerOptions {\n host?: string;\n port?: number;\n server?: unknown; // HTTP server\n noServer?: boolean;\n path?: string;\n clientTracking?: boolean;\n perMessageDeflate?: boolean | object;\n maxPayload?: number;\n}\n\nexport class WebSocketServer extends EventEmitter {\n clients: Set<WebSocket> = new Set();\n options: ServerOptions;\n private _path: string;\n private _channelHandler: ((event: MessageEvent) => void) | null = null;\n\n constructor(options: ServerOptions = {}) {\n super();\n this.options = options;\n this._path = options.path || '/';\n\n // If not noServer, set up listening\n if (!options.noServer) {\n this._setupListener();\n }\n\n // Register server\n servers.set(this._path, this);\n }\n\n private _setupListener(): void {\n if (!messageChannel) return;\n\n const channel = messageChannel;\n this._channelHandler = (event: MessageEvent) => {\n const data = event.data;\n\n if (data.type === 'connect') {\n // Create a new WebSocket for this client\n const ws = new WebSocket('internal://' + this._path);\n ws._setServer(this);\n (ws as unknown as { _clientId: string })._clientId = data.clientId;\n this.clients.add(ws);\n\n // Notify client of connection\n channel.postMessage({\n type: 'connected',\n targetClient: data.clientId,\n });\n\n // Emit connection event\n this.emit('connection', ws, { url: data.url });\n }\n\n if (data.type === 'message') {\n // Find the client and deliver the message\n for (const client of this.clients) {\n if ((client as unknown as { _clientId: string })._clientId === data.clientId) {\n client._receiveMessage(data.payload);\n break;\n }\n }\n }\n\n if (data.type === 'disconnect') {\n for (const client of this.clients) {\n if ((client as unknown as { _clientId: string })._clientId === data.clientId) {\n client.close(data.code, data.reason);\n this.clients.delete(client);\n break;\n }\n }\n }\n };\n\n channel.addEventListener('message', this._channelHandler);\n }\n\n _handleClientMessage(client: WebSocket, data: unknown): void {\n // Broadcast to server-side handlers\n const msgEvent = new MessageEventPolyfill('message', { data });\n client.emit('message', msgEvent);\n }\n\n handleUpgrade(\n request: unknown,\n socket: unknown,\n head: unknown,\n callback: (ws: WebSocket, request: unknown) => void\n ): void {\n // Create WebSocket for this upgrade\n const ws = new WebSocket('internal://' + this._path);\n ws._setServer(this);\n\n if (this.options.clientTracking !== false) {\n this.clients.add(ws);\n }\n\n // Async callback\n setTimeout(() => {\n callback(ws, request);\n this.emit('connection', ws, request);\n }, 0);\n }\n\n close(callback?: () => void): void {\n // Close all clients\n for (const client of this.clients) {\n client.close(1001, 'Server shutting down');\n }\n this.clients.clear();\n\n // Remove from registry\n servers.delete(this._path);\n\n // Remove channel listener\n if (this._channelHandler && messageChannel) {\n messageChannel.removeEventListener('message', this._channelHandler);\n this._channelHandler = null;\n }\n\n this.emit('close');\n\n if (callback) {\n setTimeout(callback, 0);\n }\n }\n\n address(): { port: number; family: string; address: string } | null {\n return {\n port: this.options.port || 0,\n family: 'IPv4',\n address: this.options.host || '0.0.0.0',\n };\n }\n\n}\n\n// Export WebSocket and Server\nexport default WebSocket;\nexport const Server = WebSocketServer;\n\n// Additional exports for compatibility\nexport const createWebSocketStream = () => {\n throw new Error('createWebSocketStream is not supported in browser');\n};\n","/**\n * fsevents shim - macOS file system events (not needed in browser)\n * This is a no-op stub since fsevents is only for native macOS\n */\n\n// Export empty constants\nexport const constants = {\n kFSEventStreamEventFlagNone: 0x00000000,\n kFSEventStreamEventFlagMustScanSubDirs: 0x00000001,\n kFSEventStreamEventFlagUserDropped: 0x00000002,\n kFSEventStreamEventFlagKernelDropped: 0x00000004,\n kFSEventStreamEventFlagEventIdsWrapped: 0x00000008,\n kFSEventStreamEventFlagHistoryDone: 0x00000010,\n kFSEventStreamEventFlagRootChanged: 0x00000020,\n kFSEventStreamEventFlagMount: 0x00000040,\n kFSEventStreamEventFlagUnmount: 0x00000080,\n kFSEventStreamEventFlagItemCreated: 0x00000100,\n kFSEventStreamEventFlagItemRemoved: 0x00000200,\n kFSEventStreamEventFlagItemInodeMetaMod: 0x00000400,\n kFSEventStreamEventFlagItemRenamed: 0x00000800,\n kFSEventStreamEventFlagItemModified: 0x00001000,\n kFSEventStreamEventFlagItemFinderInfoMod: 0x00002000,\n kFSEventStreamEventFlagItemChangeOwner: 0x00004000,\n kFSEventStreamEventFlagItemXattrMod: 0x00008000,\n kFSEventStreamEventFlagItemIsFile: 0x00010000,\n kFSEventStreamEventFlagItemIsDir: 0x00020000,\n kFSEventStreamEventFlagItemIsSymlink: 0x00040000,\n};\n\n// Export empty watch function\nexport function watch(\n path: string,\n handler: (path: string, flags: number, id: number) => void\n): () => Promise<void> {\n // Return a stop function\n return () => Promise.resolve();\n}\n\n// Export getInfo\nexport function getInfo(\n path: string,\n flags: number\n): {\n event: string;\n path: string;\n type: string;\n changes: { inode: boolean; finder: boolean; access: boolean; xattrs: boolean };\n flags: number;\n} {\n return {\n event: 'unknown',\n path,\n type: 'file',\n changes: { inode: false, finder: false, access: false, xattrs: false },\n flags,\n };\n}\n\nexport default {\n watch,\n getInfo,\n constants,\n};\n","/**\n * readdirp shim - Recursive directory reader\n * Used by some build tools for file discovery\n */\n\nimport type { VirtualFS, Stats } from '../virtual-fs';\n\n// Global reference to VFS - set by runtime\nlet globalVFS: VirtualFS | null = null;\n\nexport function setVFS(vfs: VirtualFS): void {\n globalVFS = vfs;\n}\n\nexport interface ReaddirpOptions {\n root?: string;\n fileFilter?: string | string[] | ((entry: EntryInfo) => boolean);\n directoryFilter?: string | string[] | ((entry: EntryInfo) => boolean);\n depth?: number;\n type?: 'files' | 'directories' | 'files_directories' | 'all';\n lstat?: boolean;\n alwaysStat?: boolean;\n}\n\nexport interface EntryInfo {\n path: string;\n fullPath: string;\n basename: string;\n stats?: Stats;\n dirent?: { isFile(): boolean; isDirectory(): boolean; name: string };\n}\n\nclass ReaddirpStream {\n private options: ReaddirpOptions;\n private root: string;\n private entries: EntryInfo[] = [];\n private index = 0;\n private collected = false;\n\n constructor(root: string, options: ReaddirpOptions = {}) {\n this.root = root;\n this.options = options;\n }\n\n private matchFilter(\n entry: EntryInfo,\n filter?: string | string[] | ((entry: EntryInfo) => boolean)\n ): boolean {\n if (!filter) return true;\n\n if (typeof filter === 'function') {\n return filter(entry);\n }\n\n const patterns = Array.isArray(filter) ? filter : [filter];\n for (const pattern of patterns) {\n if (pattern.startsWith('!')) {\n // Negation pattern\n const posPattern = pattern.slice(1);\n if (this.matchGlob(entry.basename, posPattern)) {\n return false;\n }\n } else if (this.matchGlob(entry.basename, pattern)) {\n return true;\n }\n }\n\n return patterns.length === 0 || patterns.every((p) => p.startsWith('!'));\n }\n\n private matchGlob(name: string, pattern: string): boolean {\n // Simple glob matching\n if (pattern === '*') return true;\n if (pattern.startsWith('*.')) {\n const ext = pattern.slice(1);\n return name.endsWith(ext);\n }\n if (pattern.endsWith('*')) {\n const prefix = pattern.slice(0, -1);\n return name.startsWith(prefix);\n }\n return name === pattern;\n }\n\n private collect(dir: string, depth: number, relativePath: string = ''): void {\n if (!globalVFS) return;\n if (this.options.depth !== undefined && depth > this.options.depth) return;\n\n try {\n const entries = globalVFS.readdirSync(dir);\n\n for (const name of entries) {\n const fullPath = dir === '/' ? '/' + name : dir + '/' + name;\n const relPath = relativePath ? relativePath + '/' + name : name;\n\n try {\n const stats = globalVFS.statSync(fullPath);\n const isDir = stats.isDirectory();\n\n const entry: EntryInfo = {\n path: relPath,\n fullPath,\n basename: name,\n stats: this.options.alwaysStat ? stats : undefined,\n dirent: {\n isFile: () => !isDir,\n isDirectory: () => isDir,\n name,\n },\n };\n\n const type = this.options.type || 'files';\n\n if (isDir) {\n // Check directory filter\n if (!this.matchFilter(entry, this.options.directoryFilter)) {\n continue; // Skip this directory entirely\n }\n\n if (type === 'directories' || type === 'files_directories' || type === 'all') {\n this.entries.push(entry);\n }\n\n // Recurse into directory\n this.collect(fullPath, depth + 1, relPath);\n } else {\n if (type === 'files' || type === 'files_directories' || type === 'all') {\n // Check file filter\n if (this.matchFilter(entry, this.options.fileFilter)) {\n this.entries.push(entry);\n }\n }\n }\n } catch {\n // Skip entries that can't be stat'd\n }\n }\n } catch {\n // Skip directories that can't be read\n }\n }\n\n // Async iterator\n async *[Symbol.asyncIterator](): AsyncIterableIterator<EntryInfo> {\n if (!this.collected) {\n this.collect(this.root, 0);\n this.collected = true;\n }\n\n for (const entry of this.entries) {\n yield entry;\n }\n }\n\n // Promise-based API\n async toArray(): Promise<EntryInfo[]> {\n if (!this.collected) {\n this.collect(this.root, 0);\n this.collected = true;\n }\n return [...this.entries];\n }\n\n // Stream-like API for compatibility\n on(event: string, callback: (...args: unknown[]) => void): this {\n if (event === 'data') {\n // Emit entries asynchronously\n setTimeout(async () => {\n if (!this.collected) {\n this.collect(this.root, 0);\n this.collected = true;\n }\n for (const entry of this.entries) {\n callback(entry);\n }\n // Emit 'end' after all data\n this.emit('end');\n }, 0);\n }\n return this;\n }\n\n private listeners: Map<string, ((...args: unknown[]) => void)[]> = new Map();\n\n private emit(event: string, ...args: unknown[]): void {\n const handlers = this.listeners.get(event);\n if (handlers) {\n for (const handler of handlers) {\n handler(...args);\n }\n }\n }\n\n once(event: string, callback: (...args: unknown[]) => void): this {\n const wrapper = (...args: unknown[]) => {\n callback(...args);\n this.off(event, wrapper);\n };\n return this.on(event, wrapper);\n }\n\n off(event: string, callback: (...args: unknown[]) => void): this {\n const handlers = this.listeners.get(event);\n if (handlers) {\n const index = handlers.indexOf(callback);\n if (index !== -1) {\n handlers.splice(index, 1);\n }\n }\n return this;\n }\n}\n\n/**\n * Read directory recursively\n */\nexport function readdirp(root: string, options?: ReaddirpOptions): ReaddirpStream {\n return new ReaddirpStream(root, options);\n}\n\n// Promise-based helper\nexport async function readdirpPromise(root: string, options?: ReaddirpOptions): Promise<EntryInfo[]> {\n const stream = new ReaddirpStream(root, options);\n return stream.toArray();\n}\n\nexport default readdirp;\nexport { ReaddirpStream };\n","/**\n * Node.js module shim\n * Provides basic module system functionality\n */\n\nimport * as pathShim from './path';\n\nexport function createRequire(filename: string): (id: string) => unknown {\n // Return a require function that can be used by modules\n return function require(id: string): unknown {\n throw new Error(`Cannot find module '${id}' from '${filename}'`);\n };\n}\n\nexport const builtinModules = [\n 'assert',\n 'buffer',\n 'child_process',\n 'cluster',\n 'console',\n 'constants',\n 'crypto',\n 'dgram',\n 'dns',\n 'domain',\n 'events',\n 'fs',\n 'http',\n 'https',\n 'module',\n 'net',\n 'os',\n 'path',\n 'perf_hooks',\n 'process',\n 'punycode',\n 'querystring',\n 'readline',\n 'repl',\n 'stream',\n 'string_decoder',\n 'sys',\n 'timers',\n 'tls',\n 'tty',\n 'url',\n 'util',\n 'v8',\n 'vm',\n 'worker_threads',\n 'zlib',\n];\n\nexport function isBuiltin(moduleName: string): boolean {\n // Strip node: prefix if present\n const name = moduleName.startsWith('node:') ? moduleName.slice(5) : moduleName;\n return builtinModules.includes(name);\n}\n\nexport const _cache: Record<string, unknown> = {};\nexport const _extensions: Record<string, unknown> = {\n '.js': () => {},\n '.json': () => {},\n '.node': () => {},\n};\nexport const _pathCache: Record<string, string> = {};\n\nexport function syncBuiltinESMExports(): void {\n // No-op in browser\n}\n\nexport const Module = {\n createRequire,\n builtinModules,\n isBuiltin,\n _cache,\n _extensions,\n _pathCache,\n syncBuiltinESMExports,\n};\n\nexport default Module;\n","/**\n * perf_hooks shim - Performance measurement APIs\n * Wraps browser Performance API\n */\n\nexport const performance = globalThis.performance || {\n now: () => Date.now(),\n timeOrigin: Date.now(),\n mark: () => {},\n measure: () => {},\n getEntries: () => [],\n getEntriesByName: () => [],\n getEntriesByType: () => [],\n clearMarks: () => {},\n clearMeasures: () => {},\n clearResourceTimings: () => {},\n};\n\nexport class PerformanceObserver {\n private callback: (list: PerformanceObserverEntryList) => void;\n private entryTypes: string[] = [];\n\n constructor(callback: (list: PerformanceObserverEntryList) => void) {\n this.callback = callback;\n }\n\n observe(options: { entryTypes?: string[]; type?: string }): void {\n this.entryTypes = options.entryTypes || (options.type ? [options.type] : []);\n }\n\n disconnect(): void {\n this.entryTypes = [];\n }\n\n takeRecords(): PerformanceEntry[] {\n return [];\n }\n\n static supportedEntryTypes = ['mark', 'measure', 'resource', 'navigation'];\n}\n\nexport interface PerformanceObserverEntryList {\n getEntries(): PerformanceEntry[];\n getEntriesByName(name: string, type?: string): PerformanceEntry[];\n getEntriesByType(type: string): PerformanceEntry[];\n}\n\nexport interface PerformanceEntry {\n name: string;\n entryType: string;\n startTime: number;\n duration: number;\n}\n\n// Histogram stub\nexport class Histogram {\n min = 0;\n max = 0;\n mean = 0;\n stddev = 0;\n percentiles = new Map<number, number>();\n exceeds = 0;\n\n reset(): void {\n this.min = 0;\n this.max = 0;\n this.mean = 0;\n this.stddev = 0;\n this.percentiles.clear();\n this.exceeds = 0;\n }\n\n percentile(percentile: number): number {\n return this.percentiles.get(percentile) || 0;\n }\n}\n\nexport function createHistogram(): Histogram {\n return new Histogram();\n}\n\nexport function monitorEventLoopDelay(options?: { resolution?: number }): Histogram {\n const histogram = new Histogram();\n return histogram;\n}\n\nexport default {\n performance,\n PerformanceObserver,\n createHistogram,\n monitorEventLoopDelay,\n};\n","/**\n * worker_threads shim - Worker threads API\n * Stub implementation for browser environment\n */\n\nimport { EventEmitter } from './events';\n\nexport const isMainThread = true;\nexport const parentPort = null;\nexport const workerData = null;\nexport const threadId = 0;\n\nexport class Worker extends EventEmitter {\n threadId = 0;\n resourceLimits = {};\n\n constructor(filename: string, options?: { workerData?: unknown }) {\n super();\n console.warn('Worker threads are not fully supported in browser environment');\n }\n\n postMessage(value: unknown, transferList?: unknown[]): void {\n // No-op\n }\n\n terminate(): Promise<number> {\n return Promise.resolve(0);\n }\n\n ref(): void {}\n unref(): void {}\n\n getHeapSnapshot(): Promise<unknown> {\n return Promise.resolve({});\n }\n}\n\nexport class MessageChannel {\n port1 = new MessagePort();\n port2 = new MessagePort();\n}\n\nexport class MessagePort extends EventEmitter {\n postMessage(value: unknown, transferList?: unknown[]): void {\n // No-op\n }\n\n start(): void {}\n close(): void {}\n ref(): void {}\n unref(): void {}\n}\n\nexport class BroadcastChannel extends EventEmitter {\n name: string;\n\n constructor(name: string) {\n super();\n this.name = name;\n }\n\n postMessage(message: unknown): void {\n // No-op in single-threaded environment\n }\n\n close(): void {}\n ref(): void {}\n unref(): void {}\n}\n\nexport function moveMessagePortToContext(\n port: MessagePort,\n contextifiedSandbox: unknown\n): MessagePort {\n return port;\n}\n\nexport function receiveMessageOnPort(port: MessagePort): { message: unknown } | undefined {\n return undefined;\n}\n\nexport const SHARE_ENV = Symbol.for('nodejs.worker_threads.SHARE_ENV');\n\nexport function markAsUntransferable(object: unknown): void {\n // No-op\n}\n\nexport function getEnvironmentData(key: unknown): unknown {\n return undefined;\n}\n\nexport function setEnvironmentData(key: unknown, value: unknown): void {\n // No-op\n}\n\nexport default {\n isMainThread,\n parentPort,\n workerData,\n threadId,\n Worker,\n MessageChannel,\n MessagePort,\n BroadcastChannel,\n moveMessagePortToContext,\n receiveMessageOnPort,\n SHARE_ENV,\n markAsUntransferable,\n getEnvironmentData,\n setEnvironmentData,\n};\n","/**\n * esbuild shim - Uses esbuild-wasm for transforms in the browser\n * Provides VFS integration for file access\n */\n\nimport type { VirtualFS } from '../virtual-fs';\nimport { ESBUILD_WASM_BINARY_CDN, ESBUILD_WASM_BROWSER_CDN } from '../config/cdn';\n\n/**\n * Node.js built-in module names. Used by the VFS plugin to provide empty stubs\n * for builtins that leak as transitive deps (e.g., `path` from `@vercel/oidc`).\n */\nconst NODE_BUILTINS = new Set([\n 'assert', 'buffer', 'child_process', 'cluster', 'crypto', 'dgram', 'dns',\n 'events', 'fs', 'http', 'http2', 'https', 'net', 'os', 'path', 'perf_hooks',\n 'querystring', 'readline', 'stream', 'string_decoder', 'timers', 'tls',\n 'url', 'util', 'v8', 'vm', 'worker_threads', 'zlib', 'async_hooks',\n 'inspector', 'module', 'process', 'console', 'constants', 'domain',\n 'punycode', 'sys', 'tty',\n]);\n\n// ============================================================================\n// Type Definitions\n// ============================================================================\n\n/**\n * Represents a package.json exports map entry.\n * Can be a direct path string or a conditional exports object with nested conditions.\n *\n * @example Direct string entry:\n * ```json\n * { \"exports\": \"./dist/index.js\" }\n * ```\n *\n * @example Conditional exports:\n * ```json\n * {\n * \"exports\": {\n * \".\": {\n * \"import\": \"./dist/esm/index.js\",\n * \"require\": \"./dist/cjs/index.js\"\n * }\n * }\n * }\n * ```\n *\n * @example Nested conditions (e.g., convex package):\n * ```json\n * {\n * \"exports\": {\n * \"./server\": {\n * \"convex\": {\n * \"import\": \"./dist/server.js\"\n * },\n * \"default\": \"./dist/server.js\"\n * }\n * }\n * }\n * ```\n */\ntype ExportEntry = string | ExportConditions;\n\n/**\n * Conditional exports object mapping condition names to export entries.\n * Conditions can be nested to support complex resolution scenarios.\n */\ninterface ExportConditions {\n [condition: string]: ExportEntry;\n}\n\n/**\n * Result of resolving a node module import.\n */\ninterface NodeModuleResolution {\n /** The resolved absolute path to the module file */\n path: string;\n /** Plugin data to pass to the onLoad handler */\n pluginData: { fromVFS: boolean };\n}\n\n// esbuild-wasm types\nexport interface TransformOptions {\n loader?: 'js' | 'jsx' | 'ts' | 'tsx' | 'json' | 'css';\n format?: 'iife' | 'cjs' | 'esm';\n target?: string | string[];\n minify?: boolean;\n sourcemap?: boolean | 'inline' | 'external';\n jsx?: 'transform' | 'preserve';\n jsxFactory?: string;\n jsxFragment?: string;\n}\n\nexport interface TransformResult {\n code: string;\n map: string;\n warnings: unknown[];\n}\n\nexport interface BuildOptions {\n entryPoints?: string[];\n stdin?: { contents: string; resolveDir?: string; loader?: 'js' | 'jsx' | 'ts' | 'tsx' | 'json' | 'css' };\n bundle?: boolean;\n outdir?: string;\n outfile?: string;\n format?: 'iife' | 'cjs' | 'esm';\n platform?: 'browser' | 'node' | 'neutral';\n target?: string | string[];\n minify?: boolean;\n sourcemap?: boolean | 'inline' | 'external';\n external?: string[];\n write?: boolean;\n plugins?: unknown[];\n absWorkingDir?: string;\n}\n\nexport interface BuildResult {\n errors: unknown[];\n warnings: unknown[];\n outputFiles?: Array<{ path: string; contents: Uint8Array; text: string }>;\n metafile?: { inputs?: Record<string, unknown>; outputs?: Record<string, unknown> };\n}\n\n// Window.__esbuild type is declared in src/types/external.d.ts\n\n// ============================================================================\n// Export Condition Resolution\n// ============================================================================\n\n/**\n * The priority order for export conditions when resolving package exports.\n *\n * Order rationale:\n * 1. \"module\" - ESM entry point (preferred for modern bundlers)\n * 2. \"import\" - ESM import condition (standard Node.js condition)\n * 3. \"require\" - CJS require condition (fallback for CommonJS)\n * 4. \"default\" - Fallback condition (lowest priority)\n *\n * Packages with custom conditions (e.g. \"convex\", \"react-native\") will\n * fall through to one of these standard conditions.\n */\nconst EXPORT_CONDITION_PRIORITY = ['module', 'import', 'require', 'default'] as const;\n\n/**\n * Resolves a package.json exports entry to a file path by evaluating export conditions.\n *\n * This function handles the Node.js package exports map resolution algorithm,\n * supporting both simple string exports and conditional exports with nested structures.\n *\n * @param entry - The exports map entry to resolve. Can be:\n * - A string path (e.g., \"./dist/index.js\")\n * - A conditional exports object with condition keys\n * - Nested conditional objects for complex packages\n *\n * @returns The resolved file path relative to the package root, or undefined if\n * no matching condition is found.\n *\n * @example Simple string entry:\n * ```ts\n * resolveExportConditions(\"./dist/index.js\")\n * // Returns: \"./dist/index.js\"\n * ```\n *\n * @example Conditional exports:\n * ```ts\n * resolveExportConditions({\n * import: \"./dist/esm/index.js\",\n * require: \"./dist/cjs/index.js\",\n * default: \"./dist/index.js\"\n * })\n * // Returns: \"./dist/esm/index.js\" (import has higher priority)\n * ```\n *\n * @example Nested conditions (convex package style):\n * ```ts\n * resolveExportConditions({\n * convex: { import: \"./dist/convex.js\" },\n * default: \"./dist/default.js\"\n * })\n * // Returns: \"./dist/convex.js\" (convex condition with nested import)\n * ```\n */\nfunction resolveExportConditions(entry: ExportEntry): string | undefined {\n // Direct string path - return as-is\n if (typeof entry === 'string') {\n return entry;\n }\n\n // Conditional exports object - evaluate conditions in priority order\n if (typeof entry === 'object' && entry !== null) {\n for (const condition of EXPORT_CONDITION_PRIORITY) {\n const conditionValue = entry[condition];\n if (conditionValue !== undefined) {\n // Recursively resolve nested conditions\n const result = resolveExportConditions(conditionValue);\n if (result) {\n return result;\n }\n }\n }\n }\n\n return undefined;\n}\n\n// ============================================================================\n// Node Modules Resolution\n// ============================================================================\n\n/**\n * Resolves a bare import (e.g., \"convex/server\", \"react\") to an absolute file path\n * in the VFS node_modules directory.\n *\n * ## Why resolve from VFS instead of marking as external?\n *\n * We resolve modules from the VFS node_modules directory instead of marking them\n * as external because:\n *\n * 1. **Browser bundling**: In the browser environment, we need to bundle all\n * dependencies since there's no Node.js runtime to resolve modules at runtime.\n *\n * 2. **VFS isolation**: The virtual file system contains a snapshot of dependencies\n * that may differ from what's available in the host environment.\n *\n * 3. **Consistent builds**: By resolving from VFS, we ensure builds are\n * reproducible regardless of the host machine's node_modules.\n *\n * ## Resolution Algorithm\n *\n * 1. Parse the import path to extract the package name and subpath\n * - Scoped packages: \"@scope/pkg/sub\" -> name=\"@scope/pkg\", subpath=\"sub\"\n * - Regular packages: \"pkg/sub\" -> name=\"pkg\", subpath=\"sub\"\n *\n * 2. Check if the package exists in /project/node_modules/{name}\n *\n * 3. Read the package.json and resolve the entry point:\n * a. For subpath imports (e.g., \"convex/server\"):\n * - Check exports map for \"./{subpath}\" key\n * - Fall back to direct file path resolution\n * b. For main imports (e.g., \"convex\"):\n * - Check exports map for \".\" key\n * - Fall back to \"module\" or \"main\" fields\n *\n * 4. Verify the resolved file exists with supported extensions\n *\n * @param vfs - The virtual file system instance\n * @param importPath - The bare import path (e.g., \"convex/server\", \"react\")\n * @param extensions - File extensions to try when resolving (e.g., ['', '.ts', '.js'])\n *\n * @returns Resolution result with the absolute path, or null if the module\n * cannot be resolved (should be marked as external)\n */\nfunction resolveNodeModuleImport(\n vfs: VirtualFS,\n importPath: string,\n extensions: string[]\n): NodeModuleResolution | null {\n // Parse the import path to extract package name and subpath\n // Scoped packages: \"@scope/pkg/sub\" -> [\"@scope\", \"pkg\", \"sub\"]\n // Regular packages: \"pkg/sub\" -> [\"pkg\", \"sub\"]\n const pathParts = importPath.split('/');\n const isScoped = pathParts[0].startsWith('@');\n\n const moduleName = isScoped\n ? pathParts.slice(0, 2).join('/') // \"@scope/pkg\"\n : pathParts[0]; // \"pkg\"\n\n const subPath = isScoped\n ? pathParts.slice(2).join('/') // Everything after \"@scope/pkg/\"\n : pathParts.slice(1).join('/'); // Everything after \"pkg/\"\n\n // Check if the package exists in VFS node_modules\n // Try /node_modules/ first (dev server), then /project/node_modules/ (convex)\n let nodeModulesBase = '/node_modules/' + moduleName;\n if (!vfs.existsSync(nodeModulesBase)) {\n nodeModulesBase = '/project/node_modules/' + moduleName;\n if (!vfs.existsSync(nodeModulesBase)) {\n return null;\n }\n }\n\n // Read package.json to determine the entry point\n const packageJsonPath = nodeModulesBase + '/package.json';\n if (!vfs.existsSync(packageJsonPath)) {\n return null;\n }\n\n try {\n const packageJsonContent = vfs.readFileSync(packageJsonPath, 'utf8');\n const packageJson = JSON.parse(packageJsonContent) as {\n exports?: Record<string, ExportEntry> | ExportEntry;\n module?: string;\n main?: string;\n };\n\n let resolvedPath: string | null = null;\n\n if (subPath) {\n // Importing a subpath like \"convex/server\"\n resolvedPath = resolveSubpathImport(\n vfs,\n packageJson,\n nodeModulesBase,\n subPath,\n extensions\n );\n } else {\n // Importing the main module like \"convex\"\n resolvedPath = resolveMainImport(\n vfs,\n packageJson,\n nodeModulesBase,\n extensions\n );\n }\n\n if (resolvedPath) {\n return { path: resolvedPath, pluginData: { fromVFS: true } };\n }\n } catch {\n // Failed to read package.json, fall through to return null\n }\n\n return null;\n}\n\n/**\n * Resolves a subpath import (e.g., \"convex/server\" -> \"./server\" subpath).\n *\n * Resolution order:\n * 1. Check exports map for \"./{subpath}\" key with condition resolution\n * 2. Fall back to direct file path resolution with extensions\n */\nfunction resolveSubpathImport(\n vfs: VirtualFS,\n packageJson: { exports?: Record<string, ExportEntry> | ExportEntry },\n nodeModulesBase: string,\n subPath: string,\n extensions: string[]\n): string | null {\n // Try exports map first\n if (packageJson.exports && typeof packageJson.exports === 'object') {\n const exportKey = './' + subPath;\n const exportsMap = packageJson.exports as Record<string, ExportEntry>;\n const exportEntry = exportsMap[exportKey];\n\n if (exportEntry) {\n const exportPath = resolveExportConditions(exportEntry);\n if (exportPath) {\n const resolvedPath = nodeModulesBase + '/' + exportPath.replace(/^\\.\\//, '');\n const foundPath = findVFSFile(vfs, resolvedPath, ['', '.js', '.ts', '.mjs']);\n if (foundPath) {\n return foundPath;\n }\n }\n }\n }\n\n // Fall back to direct path resolution\n const directPath = nodeModulesBase + '/' + subPath;\n return findVFSFile(vfs, directPath, extensions);\n}\n\n/**\n * Resolves the main entry point of a package (e.g., \"convex\" without subpath).\n *\n * Resolution order:\n * 1. Check exports map \".\" key with condition resolution\n * 2. Fall back to \"module\" field (ESM entry)\n * 3. Fall back to \"main\" field (CJS entry)\n * 4. Default to \"index.js\"\n */\nfunction resolveMainImport(\n vfs: VirtualFS,\n packageJson: {\n exports?: Record<string, ExportEntry> | ExportEntry;\n module?: string;\n main?: string;\n },\n nodeModulesBase: string,\n extensions: string[]\n): string | null {\n // Try exports map first\n if (packageJson.exports) {\n // The main export can be at \".\" key or be the exports value itself\n const mainExport = typeof packageJson.exports === 'object' && !Array.isArray(packageJson.exports)\n ? (packageJson.exports['.'] || packageJson.exports)\n : packageJson.exports;\n\n const exportPath = resolveExportConditions(mainExport as ExportEntry);\n if (exportPath) {\n const resolvedPath = nodeModulesBase + '/' + exportPath.replace(/^\\.\\//, '');\n const foundPath = findVFSFile(vfs, resolvedPath, ['', '.js', '.ts', '.mjs']);\n if (foundPath) {\n return foundPath;\n }\n }\n }\n\n // Fall back to module/main fields\n // Prefer \"module\" (ESM) over \"main\" (CJS) for better tree-shaking\n const mainField = packageJson.module || packageJson.main || 'index.js';\n const resolvedPath = nodeModulesBase + '/' + mainField.replace(/^\\.\\//, '');\n return findVFSFile(vfs, resolvedPath, extensions);\n}\n\n// ============================================================================\n// Module State\n// ============================================================================\n\n// State\nlet esbuildInstance: typeof import('esbuild-wasm') | null = null;\nlet initPromise: Promise<void> | null = null;\nlet wasmURL = ESBUILD_WASM_BINARY_CDN;\nlet globalVFS: VirtualFS | null = null;\n\n/**\n * Set the VirtualFS instance for file access\n */\nexport function setVFS(vfs: VirtualFS): void {\n globalVFS = vfs;\n}\n\n/**\n * Set the URL for the esbuild WASM file\n */\nexport function setWasmURL(url: string): void {\n wasmURL = url;\n}\n\n/**\n * Initialize esbuild-wasm\n * Must be called before using transform or build\n */\nexport async function initialize(options?: { wasmURL?: string }): Promise<void> {\n if (esbuildInstance) {\n return; // Already initialized\n }\n\n // Check for shared esbuild instance from transform.ts\n if (typeof window !== 'undefined' && window.__esbuild) {\n esbuildInstance = window.__esbuild;\n return;\n }\n\n // Wait for any in-progress initialization from transform.ts\n if (typeof window !== 'undefined' && window.__esbuildInitPromise) {\n await window.__esbuildInitPromise;\n if (window.__esbuild) {\n esbuildInstance = window.__esbuild;\n return;\n }\n }\n\n if (initPromise) {\n return initPromise; // Our initialization in progress\n }\n\n initPromise = (async () => {\n try {\n // Dynamically import esbuild-wasm from CDN\n const esbuild = await import(\n /* @vite-ignore */\n ESBUILD_WASM_BROWSER_CDN\n );\n\n await esbuild.initialize({\n wasmURL: options?.wasmURL || wasmURL,\n });\n\n esbuildInstance = esbuild;\n } catch (error) {\n initPromise = null;\n throw new Error(`Failed to initialize esbuild-wasm: ${error}`);\n }\n })();\n\n return initPromise;\n}\n\n/**\n * Check if esbuild is initialized\n */\nexport function isInitialized(): boolean {\n return esbuildInstance !== null;\n}\n\n// ============================================================================\n// Transform API\n// ============================================================================\n\n/**\n * Transform code using esbuild\n */\nexport async function transform(\n code: string,\n options?: TransformOptions\n): Promise<TransformResult> {\n if (!esbuildInstance) {\n await initialize();\n }\n\n if (!esbuildInstance) {\n throw new Error('esbuild not initialized');\n }\n\n return esbuildInstance.transform(code, options);\n}\n\n/**\n * Transform code synchronously (requires prior initialization)\n */\nexport function transformSync(\n code: string,\n options?: TransformOptions\n): TransformResult {\n if (!esbuildInstance) {\n throw new Error('esbuild not initialized. Call initialize() first.');\n }\n\n // esbuild-wasm doesn't have sync API in browser, so we throw\n throw new Error('transformSync is not available in browser. Use transform() instead.');\n}\n\n/**\n * Transform ESM to CJS\n */\nexport async function transformToCommonJS(\n code: string,\n options?: { loader?: TransformOptions['loader'] }\n): Promise<string> {\n const result = await transform(code, {\n loader: options?.loader || 'js',\n format: 'cjs',\n target: 'es2020',\n });\n\n return result.code;\n}\n\n// ============================================================================\n// VFS Path Resolution Helpers\n// ============================================================================\n\n/**\n * Apply path remapping for VFS.\n * Currently a passthrough — no remapping needed.\n */\nfunction remapVFSPath(path: string): string {\n return path;\n}\n\n/**\n * Check if file exists at path or remapped path\n * Returns the original path if found (to preserve output naming)\n */\nfunction findVFSFile(vfs: VirtualFS, originalPath: string, extensions: string[]): string | null {\n for (const ext of extensions) {\n const pathWithExt = originalPath + ext;\n // First check original path — must be a file, not a directory\n if (vfs.existsSync(pathWithExt)) {\n try {\n if (!vfs.statSync(pathWithExt).isDirectory()) {\n return pathWithExt;\n }\n } catch {\n return pathWithExt;\n }\n }\n // Then try remapped path\n const remapped = remapVFSPath(pathWithExt);\n if (remapped !== pathWithExt && vfs.existsSync(remapped)) {\n try {\n if (!vfs.statSync(remapped).isDirectory()) {\n return pathWithExt;\n }\n } catch {\n return pathWithExt;\n }\n }\n }\n return null;\n}\n\n// ============================================================================\n// VFS Plugin for esbuild\n// ============================================================================\n\n/**\n * Create a VFS plugin for esbuild to read files from VirtualFS.\n *\n * This plugin enables esbuild to resolve and load files from the virtual file system,\n * which is essential for browser-based bundling where we don't have access to the\n * real file system.\n *\n * The plugin handles three types of imports:\n * 1. Absolute paths (/project/src/file.ts)\n * 2. Relative paths (./file.ts, ../file.ts)\n * 3. Bare imports (convex/server, react)\n */\nfunction createVFSPlugin(externals?: string[]): unknown {\n if (!globalVFS) {\n return null;\n }\n\n const vfs = globalVFS;\n\n return {\n name: 'vfs-loader',\n setup(build: unknown) {\n const b = build as {\n onResolve: (options: { filter: RegExp; namespace?: string }, callback: (args: { path: string; importer: string; kind: string }) => unknown) => void;\n onLoad: (options: { filter: RegExp; namespace?: string }, callback: (args: { path: string }) => unknown) => void;\n };\n\n // Helper: Normalize .mjs/.cjs paths to .js so esbuild auto-detects\n // module format. Packages in VFS were ESM→CJS transformed during install\n // but keep their original .mjs extension. esbuild forces ESM parsing for\n // .mjs files even when content is CJS, breaking export detection.\n // We store the real path in pluginData for onLoad to read from VFS.\n function vfsResolved(foundPath: string) {\n if (foundPath.endsWith('.mjs') || foundPath.endsWith('.cjs')) {\n const jsPath = foundPath.slice(0, -4) + '.js';\n return { path: jsPath, pluginData: { fromVFS: true, realPath: foundPath } };\n }\n return { path: foundPath, pluginData: { fromVFS: true } };\n }\n\n // Resolve file paths - handles both imports and entry points\n b.onResolve({ filter: /.*/ }, (args: { path: string; importer: string }) => {\n const { path: importPath, importer } = args;\n\n // Skip external modules (node_modules, bare imports)\n if (importPath.startsWith('node_modules/')) {\n return { external: true };\n }\n\n const extensions = ['', '.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs', '.json'];\n\n // Absolute paths - check if file exists in VFS (or remapped location)\n if (importPath.startsWith('/')) {\n const foundPath = findVFSFile(vfs, importPath, extensions);\n if (foundPath) {\n return vfsResolved(foundPath);\n }\n // File not found\n return { external: true };\n }\n\n // Relative paths\n if (importPath.startsWith('.')) {\n let resolved = importPath;\n if (importer) {\n // Use realPath from pluginData if the importer was remapped from .mjs/.cjs\n const importerDir = importer.substring(0, importer.lastIndexOf('/'));\n resolved = importerDir + '/' + importPath;\n }\n // Normalize path\n const parts = resolved.split('/').filter(Boolean);\n const normalized: string[] = [];\n for (const part of parts) {\n if (part === '..') {\n normalized.pop();\n } else if (part !== '.') {\n normalized.push(part);\n }\n }\n resolved = '/' + normalized.join('/');\n\n // Try to find the file with various extensions\n const foundPath = findVFSFile(vfs, resolved, extensions);\n if (foundPath) {\n return vfsResolved(foundPath);\n }\n\n // Try index files\n for (const ext of ['.ts', '.tsx', '.js', '.jsx']) {\n const indexPath = resolved + '/index' + ext;\n const foundIndex = findVFSFile(vfs, indexPath, ['']);\n if (foundIndex) {\n return vfsResolved(foundIndex);\n }\n }\n }\n\n // Bare imports (no ./ or ../ or /) - resolve from node_modules in VFS\n // See resolveNodeModuleImport() JSDoc for why we resolve from VFS instead of\n // marking as external (browser bundling, VFS isolation, consistent builds)\n\n // Check externals list first — packages like react must stay as ESM imports\n if (externals && externals.some(ext => importPath === ext || importPath.startsWith(ext + '/'))) {\n return { external: true };\n }\n\n const resolution = resolveNodeModuleImport(vfs, importPath, extensions);\n if (resolution) {\n // Apply .mjs/.cjs normalization for bare imports too\n if (resolution.path && (resolution.path.endsWith('.mjs') || resolution.path.endsWith('.cjs'))) {\n const jsPath = resolution.path.slice(0, -4) + '.js';\n return { path: jsPath, pluginData: { ...resolution.pluginData, realPath: resolution.path } };\n }\n return resolution;\n }\n\n // Node.js builtins that aren't in VFS node_modules should be\n // stubbed as empty modules rather than externalized. When externalized,\n // patchExternalRequires() converts them to bare ESM imports that the\n // browser can't resolve. An empty stub is safe because these builtins\n // are typically only used in server-only code paths (e.g., @vercel/oidc).\n const bareModule = importPath.replace(/^node:/, '');\n if (NODE_BUILTINS.has(bareModule)) {\n return { path: `/__node_stub__/${bareModule}`, namespace: 'node-stub' };\n }\n\n // Could not resolve from node_modules, treat as external\n return { external: true };\n });\n\n // Load empty stubs for Node.js builtins not available in VFS\n b.onLoad({ filter: /.*/, namespace: 'node-stub' }, () => {\n return { contents: 'module.exports = {};', loader: 'js' as const };\n });\n\n // Load file contents from VFS\n // Apply path remapping when reading to find the actual file\n b.onLoad({ filter: /^\\/.*/ }, (args: { path: string; pluginData?: { fromVFS?: boolean; realPath?: string } }) => {\n // Only handle files that were resolved by our plugin\n if (!args.pluginData?.fromVFS) {\n return null; // Let other loaders handle it\n }\n try {\n // Use realPath if available (set when .mjs/.cjs was normalized to .js)\n const vfsPath = args.pluginData.realPath || args.path;\n let contents: string;\n const remappedPath = remapVFSPath(vfsPath);\n\n if (vfs.existsSync(vfsPath)) {\n contents = vfs.readFileSync(vfsPath, 'utf8');\n } else if (remappedPath !== vfsPath && vfs.existsSync(remappedPath)) {\n contents = vfs.readFileSync(remappedPath, 'utf8');\n } else {\n throw new Error(`File not found: ${vfsPath} (tried ${remappedPath})`);\n }\n\n const ext = args.path.substring(args.path.lastIndexOf('.'));\n let loader: 'ts' | 'tsx' | 'js' | 'jsx' | 'json' = 'ts';\n if (ext === '.tsx') loader = 'tsx';\n else if (ext === '.js' || ext === '.mjs' || ext === '.cjs') loader = 'js';\n else if (ext === '.jsx') loader = 'jsx';\n else if (ext === '.json') loader = 'json';\n\n return { contents, loader };\n } catch (err) {\n return { errors: [{ text: `Failed to load ${args.path}: ${err}` }] };\n }\n });\n },\n };\n}\n\n// ============================================================================\n// Build API\n// ============================================================================\n\n/**\n * Build/bundle code (limited support in browser)\n */\nexport async function build(options: BuildOptions): Promise<BuildResult> {\n if (!esbuildInstance) {\n await initialize();\n }\n\n if (!esbuildInstance) {\n throw new Error('esbuild not initialized');\n }\n\n // Add VFS plugin if VFS is available\n const vfsPlugin = createVFSPlugin(options.external);\n const plugins = [...(options.plugins || [])];\n if (vfsPlugin) {\n plugins.unshift(vfsPlugin);\n }\n\n // Resolve entry points to absolute paths.\n // Path remapping (if any) happens in the VFS plugin's onLoad handler instead,\n // preserving the original paths for esbuild's output file naming.\n let entryPoints = options.entryPoints;\n if (entryPoints && globalVFS) {\n const absWorkingDir = options.absWorkingDir || (typeof globalThis !== 'undefined' && globalThis.process && typeof globalThis.process.cwd === 'function' ? globalThis.process.cwd() : '/');\n entryPoints = entryPoints.map(ep => {\n // Handle paths that came from previous builds with vfs: namespace prefix\n if (ep.includes('vfs:')) {\n const vfsIndex = ep.indexOf('vfs:');\n ep = ep.substring(vfsIndex + 4);\n }\n\n // If already absolute, use as-is\n if (ep.startsWith('/')) {\n return ep;\n }\n\n if (ep.startsWith('./')) {\n // Join with absWorkingDir but DO NOT remap paths\n const base = absWorkingDir.endsWith('/') ? absWorkingDir.slice(0, -1) : absWorkingDir;\n const relative = ep.slice(2);\n const resolved = base + '/' + relative;\n return resolved;\n }\n if (ep.startsWith('../')) {\n const base = absWorkingDir.endsWith('/') ? absWorkingDir.slice(0, -1) : absWorkingDir;\n const parts = base.split('/').filter(Boolean);\n parts.pop();\n const relative = ep.slice(3);\n const resolved = '/' + parts.join('/') + '/' + relative;\n return resolved;\n }\n return ep;\n });\n }\n\n // In browser, we need write: false to get outputFiles\n // Pass absWorkingDir so metafile paths are relative to the correct directory\n const resolvedAbsWorkingDir = options.absWorkingDir || (typeof globalThis !== 'undefined' && globalThis.process && typeof globalThis.process.cwd === 'function' ? globalThis.process.cwd() : '/');\n const result = await esbuildInstance.build({\n ...options,\n entryPoints,\n plugins,\n write: false,\n absWorkingDir: resolvedAbsWorkingDir,\n }) as BuildResult;\n\n // Strip 'vfs:' namespace prefix from all output paths.\n // esbuild-wasm may prefix paths with the plugin namespace; strip it everywhere.\n if (result.outputFiles) {\n for (const file of result.outputFiles) {\n if (file.path.includes('vfs:')) {\n file.path = file.path.replace(/vfs:/g, '');\n }\n }\n }\n if (result.metafile) {\n const meta = result.metafile as { inputs?: Record<string, unknown>; outputs?: Record<string, unknown> };\n for (const key of ['inputs', 'outputs'] as const) {\n const obj = meta[key];\n if (obj) {\n for (const k of Object.keys(obj)) {\n if (k.includes('vfs:')) {\n obj[k.replace(/vfs:/g, '')] = obj[k];\n delete obj[k];\n }\n }\n }\n }\n }\n\n return result;\n}\n\n/**\n * Build synchronously (not supported in browser, throws error)\n */\nexport function buildSync(_options: BuildOptions): BuildResult {\n throw new Error('buildSync is not available in browser. Use build() instead.');\n}\n\n/**\n * Get the esbuild version\n */\nexport function version(): string {\n return '0.20.0'; // Version of esbuild-wasm we're using\n}\n\n// Context API (minimal stub for compatibility)\nexport async function context(_options: BuildOptions): Promise<unknown> {\n throw new Error('esbuild context API is not supported in browser');\n}\n\n// Default export matching esbuild's API\nexport default {\n initialize,\n isInitialized,\n transform,\n transformSync,\n transformToCommonJS,\n build,\n buildSync,\n context,\n version,\n setWasmURL,\n setVFS,\n};\n","/**\n * Rollup shim - Uses @rollup/browser for browser-compatible Rollup\n *\n * Vite uses Rollup for bundling. The native Rollup package doesn't work\n * in browsers, so we need to use @rollup/browser instead.\n */\n\nimport * as acorn from 'acorn';\nimport { ROLLUP_BROWSER_CDN, ROLLUP_BROWSER_VERSION } from '../config/cdn';\n\n// Rollup instance loaded from CDN\nlet rollupInstance: unknown = null;\nlet loadPromise: Promise<unknown> | null = null;\n\n/**\n * Load Rollup from CDN\n */\nasync function loadRollup(): Promise<unknown> {\n if (rollupInstance) return rollupInstance;\n if (loadPromise) return loadPromise;\n\n loadPromise = (async () => {\n try {\n // Load @rollup/browser from CDN\n const rollup = await import(\n /* @vite-ignore */\n ROLLUP_BROWSER_CDN\n );\n rollupInstance = rollup;\n console.log('[rollup] Browser version loaded');\n return rollup;\n } catch (error) {\n console.error('[rollup] Failed to load browser version:', error);\n loadPromise = null;\n throw error;\n }\n })();\n\n return loadPromise;\n}\n\n// For synchronous require(), we need a stub that works before async load\n// This will be replaced when loadRollup() is called\n\nexport const VERSION = ROLLUP_BROWSER_VERSION;\n\nexport async function rollup(options: unknown): Promise<unknown> {\n const r = await loadRollup() as { rollup: (options: unknown) => Promise<unknown> };\n return r.rollup(options);\n}\n\nexport async function watch(options: unknown): Promise<unknown> {\n const r = await loadRollup() as { watch: (options: unknown) => unknown };\n return r.watch(options);\n}\n\n// Export a function to pre-load rollup\nexport { loadRollup };\n\n// Define plugin context types that Vite expects\nexport interface Plugin {\n name: string;\n [key: string]: unknown;\n}\n\nexport interface PluginContext {\n meta: { rollupVersion: string };\n parse: (code: string) => unknown;\n [key: string]: unknown;\n}\n\n// parseAst/parseAstAsync — used by Vite's module system for ESM analysis\n// Uses acorn as the parser (ESTree-compatible, like Rollup's native parser)\nexport function parseAst(input: string, options?: { allowReturnOutsideFunction?: boolean; jsx?: boolean }): unknown {\n return acorn.parse(input, {\n ecmaVersion: 'latest',\n sourceType: 'module',\n allowReturnOutsideFunction: options?.allowReturnOutsideFunction ?? false,\n locations: true,\n });\n}\n\nexport async function parseAstAsync(input: string, options?: { allowReturnOutsideFunction?: boolean; jsx?: boolean; signal?: AbortSignal }): Promise<unknown> {\n return parseAst(input, options);\n}\n\n// Stub for native module detection - this prevents the \"unsupported platform\" error\nexport function getPackageBase(): string {\n return '';\n}\n\n// Export default that matches Rollup's API\nexport default {\n VERSION,\n rollup,\n watch,\n loadRollup,\n parseAst,\n parseAstAsync,\n};\n","// This file was generated. Do not modify manually!\nvar astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 78, 5, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 199, 7, 137, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 55, 9, 266, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 233, 0, 3, 0, 8, 1, 6, 0, 475, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];\n\n// This file was generated. Do not modify manually!\nvar astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 7, 25, 39, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 5, 57, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 24, 43, 261, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 33, 24, 3, 24, 45, 74, 6, 0, 67, 12, 65, 1, 2, 0, 15, 4, 10, 7381, 42, 31, 98, 114, 8702, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 208, 30, 2, 2, 2, 1, 2, 6, 3, 4, 10, 1, 225, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4381, 3, 5773, 3, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 8489];\n\n// This file was generated. Do not modify manually!\nvar nonASCIIidentifierChars = \"\\u200c\\u200d\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0897-\\u089f\\u08ca-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3c\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0cf3\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ece\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u180f-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf-\\u1add\\u1ae0-\\u1aeb\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1dff\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\u30fb\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\\uff65\";\n\n// This file was generated. Do not modify manually!\nvar nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u0870-\\u0887\\u0889-\\u088f\\u08a0-\\u08c9\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c5c\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdc-\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u1711\\u171f-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4c\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c8a\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7dc\\ua7f1-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab69\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\n\n// These are a run-length and offset encoded representation of the\n// >0xffff code points that are a valid part of identifiers. The\n// offset starts at 0x10000, and each pair of numbers represents an\n// offset to the next range, and then a size of the range.\n\n// Reserved word lists for various dialects of the language\n\nvar reservedWords = {\n 3: \"abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile\",\n 5: \"class enum extends super const export import\",\n 6: \"enum\",\n strict: \"implements interface let package private protected public static yield\",\n strictBind: \"eval arguments\"\n};\n\n// And the keywords\n\nvar ecma5AndLessKeywords = \"break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this\";\n\nvar keywords$1 = {\n 5: ecma5AndLessKeywords,\n \"5module\": ecma5AndLessKeywords + \" export import\",\n 6: ecma5AndLessKeywords + \" const class extends export import super\"\n};\n\nvar keywordRelationalOperator = /^in(stanceof)?$/;\n\n// ## Character categories\n\nvar nonASCIIidentifierStart = new RegExp(\"[\" + nonASCIIidentifierStartChars + \"]\");\nvar nonASCIIidentifier = new RegExp(\"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\");\n\n// This has a complexity linear to the value of the code. The\n// assumption is that looking up astral identifier characters is\n// rare.\nfunction isInAstralSet(code, set) {\n var pos = 0x10000;\n for (var i = 0; i < set.length; i += 2) {\n pos += set[i];\n if (pos > code) { return false }\n pos += set[i + 1];\n if (pos >= code) { return true }\n }\n return false\n}\n\n// Test whether a given character code starts an identifier.\n\nfunction isIdentifierStart(code, astral) {\n if (code < 65) { return code === 36 }\n if (code < 91) { return true }\n if (code < 97) { return code === 95 }\n if (code < 123) { return true }\n if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)) }\n if (astral === false) { return false }\n return isInAstralSet(code, astralIdentifierStartCodes)\n}\n\n// Test whether a given character is part of an identifier.\n\nfunction isIdentifierChar(code, astral) {\n if (code < 48) { return code === 36 }\n if (code < 58) { return true }\n if (code < 65) { return false }\n if (code < 91) { return true }\n if (code < 97) { return code === 95 }\n if (code < 123) { return true }\n if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)) }\n if (astral === false) { return false }\n return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes)\n}\n\n// ## Token types\n\n// The assignment of fine-grained, information-carrying type objects\n// allows the tokenizer to store the information it has about a\n// token in a way that is very cheap for the parser to look up.\n\n// All token type variables start with an underscore, to make them\n// easy to recognize.\n\n// The `beforeExpr` property is used to disambiguate between regular\n// expressions and divisions. It is set on all token types that can\n// be followed by an expression (thus, a slash after them would be a\n// regular expression).\n//\n// The `startsExpr` property is used to check if the token ends a\n// `yield` expression. It is set on all token types that either can\n// directly start an expression (like a quotation mark) or can\n// continue an expression (like the body of a string).\n//\n// `isLoop` marks a keyword as starting a loop, which is important\n// to know when parsing a label, in order to allow or disallow\n// continue jumps to that label.\n\nvar TokenType = function TokenType(label, conf) {\n if ( conf === void 0 ) conf = {};\n\n this.label = label;\n this.keyword = conf.keyword;\n this.beforeExpr = !!conf.beforeExpr;\n this.startsExpr = !!conf.startsExpr;\n this.isLoop = !!conf.isLoop;\n this.isAssign = !!conf.isAssign;\n this.prefix = !!conf.prefix;\n this.postfix = !!conf.postfix;\n this.binop = conf.binop || null;\n this.updateContext = null;\n};\n\nfunction binop(name, prec) {\n return new TokenType(name, {beforeExpr: true, binop: prec})\n}\nvar beforeExpr = {beforeExpr: true}, startsExpr = {startsExpr: true};\n\n// Map keyword names to token types.\n\nvar keywords = {};\n\n// Succinct definitions of keyword token types\nfunction kw(name, options) {\n if ( options === void 0 ) options = {};\n\n options.keyword = name;\n return keywords[name] = new TokenType(name, options)\n}\n\nvar types$1 = {\n num: new TokenType(\"num\", startsExpr),\n regexp: new TokenType(\"regexp\", startsExpr),\n string: new TokenType(\"string\", startsExpr),\n name: new TokenType(\"name\", startsExpr),\n privateId: new TokenType(\"privateId\", startsExpr),\n eof: new TokenType(\"eof\"),\n\n // Punctuation token types.\n bracketL: new TokenType(\"[\", {beforeExpr: true, startsExpr: true}),\n bracketR: new TokenType(\"]\"),\n braceL: new TokenType(\"{\", {beforeExpr: true, startsExpr: true}),\n braceR: new TokenType(\"}\"),\n parenL: new TokenType(\"(\", {beforeExpr: true, startsExpr: true}),\n parenR: new TokenType(\")\"),\n comma: new TokenType(\",\", beforeExpr),\n semi: new TokenType(\";\", beforeExpr),\n colon: new TokenType(\":\", beforeExpr),\n dot: new TokenType(\".\"),\n question: new TokenType(\"?\", beforeExpr),\n questionDot: new TokenType(\"?.\"),\n arrow: new TokenType(\"=>\", beforeExpr),\n template: new TokenType(\"template\"),\n invalidTemplate: new TokenType(\"invalidTemplate\"),\n ellipsis: new TokenType(\"...\", beforeExpr),\n backQuote: new TokenType(\"`\", startsExpr),\n dollarBraceL: new TokenType(\"${\", {beforeExpr: true, startsExpr: true}),\n\n // Operators. These carry several kinds of properties to help the\n // parser use them properly (the presence of these properties is\n // what categorizes them as operators).\n //\n // `binop`, when present, specifies that this operator is a binary\n // operator, and will refer to its precedence.\n //\n // `prefix` and `postfix` mark the operator as a prefix or postfix\n // unary operator.\n //\n // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as\n // binary operators with a very low precedence, that should result\n // in AssignmentExpression nodes.\n\n eq: new TokenType(\"=\", {beforeExpr: true, isAssign: true}),\n assign: new TokenType(\"_=\", {beforeExpr: true, isAssign: true}),\n incDec: new TokenType(\"++/--\", {prefix: true, postfix: true, startsExpr: true}),\n prefix: new TokenType(\"!/~\", {beforeExpr: true, prefix: true, startsExpr: true}),\n logicalOR: binop(\"||\", 1),\n logicalAND: binop(\"&&\", 2),\n bitwiseOR: binop(\"|\", 3),\n bitwiseXOR: binop(\"^\", 4),\n bitwiseAND: binop(\"&\", 5),\n equality: binop(\"==/!=/===/!==\", 6),\n relational: binop(\"</>/<=/>=\", 7),\n bitShift: binop(\"<</>>/>>>\", 8),\n plusMin: new TokenType(\"+/-\", {beforeExpr: true, binop: 9, prefix: true, startsExpr: true}),\n modulo: binop(\"%\", 10),\n star: binop(\"*\", 10),\n slash: binop(\"/\", 10),\n starstar: new TokenType(\"**\", {beforeExpr: true}),\n coalesce: binop(\"??\", 1),\n\n // Keyword token types.\n _break: kw(\"break\"),\n _case: kw(\"case\", beforeExpr),\n _catch: kw(\"catch\"),\n _continue: kw(\"continue\"),\n _debugger: kw(\"debugger\"),\n _default: kw(\"default\", beforeExpr),\n _do: kw(\"do\", {isLoop: true, beforeExpr: true}),\n _else: kw(\"else\", beforeExpr),\n _finally: kw(\"finally\"),\n _for: kw(\"for\", {isLoop: true}),\n _function: kw(\"function\", startsExpr),\n _if: kw(\"if\"),\n _return: kw(\"return\", beforeExpr),\n _switch: kw(\"switch\"),\n _throw: kw(\"throw\", beforeExpr),\n _try: kw(\"try\"),\n _var: kw(\"var\"),\n _const: kw(\"const\"),\n _while: kw(\"while\", {isLoop: true}),\n _with: kw(\"with\"),\n _new: kw(\"new\", {beforeExpr: true, startsExpr: true}),\n _this: kw(\"this\", startsExpr),\n _super: kw(\"super\", startsExpr),\n _class: kw(\"class\", startsExpr),\n _extends: kw(\"extends\", beforeExpr),\n _export: kw(\"export\"),\n _import: kw(\"import\", startsExpr),\n _null: kw(\"null\", startsExpr),\n _true: kw(\"true\", startsExpr),\n _false: kw(\"false\", startsExpr),\n _in: kw(\"in\", {beforeExpr: true, binop: 7}),\n _instanceof: kw(\"instanceof\", {beforeExpr: true, binop: 7}),\n _typeof: kw(\"typeof\", {beforeExpr: true, prefix: true, startsExpr: true}),\n _void: kw(\"void\", {beforeExpr: true, prefix: true, startsExpr: true}),\n _delete: kw(\"delete\", {beforeExpr: true, prefix: true, startsExpr: true})\n};\n\n// Matches a whole line break (where CRLF is considered a single\n// line break). Used to count lines.\n\nvar lineBreak = /\\r\\n?|\\n|\\u2028|\\u2029/;\nvar lineBreakG = new RegExp(lineBreak.source, \"g\");\n\nfunction isNewLine(code) {\n return code === 10 || code === 13 || code === 0x2028 || code === 0x2029\n}\n\nfunction nextLineBreak(code, from, end) {\n if ( end === void 0 ) end = code.length;\n\n for (var i = from; i < end; i++) {\n var next = code.charCodeAt(i);\n if (isNewLine(next))\n { return i < end - 1 && next === 13 && code.charCodeAt(i + 1) === 10 ? i + 2 : i + 1 }\n }\n return -1\n}\n\nvar nonASCIIwhitespace = /[\\u1680\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff]/;\n\nvar skipWhiteSpace = /(?:\\s|\\/\\/.*|\\/\\*[^]*?\\*\\/)*/g;\n\nvar ref = Object.prototype;\nvar hasOwnProperty = ref.hasOwnProperty;\nvar toString = ref.toString;\n\nvar hasOwn = Object.hasOwn || (function (obj, propName) { return (\n hasOwnProperty.call(obj, propName)\n); });\n\nvar isArray = Array.isArray || (function (obj) { return (\n toString.call(obj) === \"[object Array]\"\n); });\n\nvar regexpCache = Object.create(null);\n\nfunction wordsRegexp(words) {\n return regexpCache[words] || (regexpCache[words] = new RegExp(\"^(?:\" + words.replace(/ /g, \"|\") + \")$\"))\n}\n\nfunction codePointToString(code) {\n // UTF-16 Decoding\n if (code <= 0xFFFF) { return String.fromCharCode(code) }\n code -= 0x10000;\n return String.fromCharCode((code >> 10) + 0xD800, (code & 1023) + 0xDC00)\n}\n\nvar loneSurrogate = /(?:[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])/;\n\n// These are used when `options.locations` is on, for the\n// `startLoc` and `endLoc` properties.\n\nvar Position = function Position(line, col) {\n this.line = line;\n this.column = col;\n};\n\nPosition.prototype.offset = function offset (n) {\n return new Position(this.line, this.column + n)\n};\n\nvar SourceLocation = function SourceLocation(p, start, end) {\n this.start = start;\n this.end = end;\n if (p.sourceFile !== null) { this.source = p.sourceFile; }\n};\n\n// The `getLineInfo` function is mostly useful when the\n// `locations` option is off (for performance reasons) and you\n// want to find the line/column position for a given character\n// offset. `input` should be the code string that the offset refers\n// into.\n\nfunction getLineInfo(input, offset) {\n for (var line = 1, cur = 0;;) {\n var nextBreak = nextLineBreak(input, cur, offset);\n if (nextBreak < 0) { return new Position(line, offset - cur) }\n ++line;\n cur = nextBreak;\n }\n}\n\n// A second argument must be given to configure the parser process.\n// These options are recognized (only `ecmaVersion` is required):\n\nvar defaultOptions = {\n // `ecmaVersion` indicates the ECMAScript version to parse. Must be\n // either 3, 5, 6 (or 2015), 7 (2016), 8 (2017), 9 (2018), 10\n // (2019), 11 (2020), 12 (2021), 13 (2022), 14 (2023), or `\"latest\"`\n // (the latest version the library supports). This influences\n // support for strict mode, the set of reserved words, and support\n // for new syntax features.\n ecmaVersion: null,\n // `sourceType` indicates the mode the code should be parsed in.\n // Can be either `\"script\"`, `\"module\"` or `\"commonjs\"`. This influences global\n // strict mode and parsing of `import` and `export` declarations.\n sourceType: \"script\",\n // `onInsertedSemicolon` can be a callback that will be called when\n // a semicolon is automatically inserted. It will be passed the\n // position of the inserted semicolon as an offset, and if\n // `locations` is enabled, it is given the location as a `{line,\n // column}` object as second argument.\n onInsertedSemicolon: null,\n // `onTrailingComma` is similar to `onInsertedSemicolon`, but for\n // trailing commas.\n onTrailingComma: null,\n // By default, reserved words are only enforced if ecmaVersion >= 5.\n // Set `allowReserved` to a boolean value to explicitly turn this on\n // an off. When this option has the value \"never\", reserved words\n // and keywords can also not be used as property names.\n allowReserved: null,\n // When enabled, a return at the top level is not considered an\n // error.\n allowReturnOutsideFunction: false,\n // When enabled, import/export statements are not constrained to\n // appearing at the top of the program, and an import.meta expression\n // in a script isn't considered an error.\n allowImportExportEverywhere: false,\n // By default, await identifiers are allowed to appear at the top-level scope only if ecmaVersion >= 2022.\n // When enabled, await identifiers are allowed to appear at the top-level scope,\n // but they are still not allowed in non-async functions.\n allowAwaitOutsideFunction: null,\n // When enabled, super identifiers are not constrained to\n // appearing in methods and do not raise an error when they appear elsewhere.\n allowSuperOutsideMethod: null,\n // When enabled, hashbang directive in the beginning of file is\n // allowed and treated as a line comment. Enabled by default when\n // `ecmaVersion` >= 2023.\n allowHashBang: false,\n // By default, the parser will verify that private properties are\n // only used in places where they are valid and have been declared.\n // Set this to false to turn such checks off.\n checkPrivateFields: true,\n // When `locations` is on, `loc` properties holding objects with\n // `start` and `end` properties in `{line, column}` form (with\n // line being 1-based and column 0-based) will be attached to the\n // nodes.\n locations: false,\n // A function can be passed as `onToken` option, which will\n // cause Acorn to call that function with object in the same\n // format as tokens returned from `tokenizer().getToken()`. Note\n // that you are not allowed to call the parser from the\n // callback—that will corrupt its internal state.\n onToken: null,\n // A function can be passed as `onComment` option, which will\n // cause Acorn to call that function with `(block, text, start,\n // end)` parameters whenever a comment is skipped. `block` is a\n // boolean indicating whether this is a block (`/* */`) comment,\n // `text` is the content of the comment, and `start` and `end` are\n // character offsets that denote the start and end of the comment.\n // When the `locations` option is on, two more parameters are\n // passed, the full `{line, column}` locations of the start and\n // end of the comments. Note that you are not allowed to call the\n // parser from the callback—that will corrupt its internal state.\n // When this option has an array as value, objects representing the\n // comments are pushed to it.\n onComment: null,\n // Nodes have their start and end characters offsets recorded in\n // `start` and `end` properties (directly on the node, rather than\n // the `loc` object, which holds line/column data. To also add a\n // [semi-standardized][range] `range` property holding a `[start,\n // end]` array with the same numbers, set the `ranges` option to\n // `true`.\n //\n // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678\n ranges: false,\n // It is possible to parse multiple files into a single AST by\n // passing the tree produced by parsing the first file as\n // `program` option in subsequent parses. This will add the\n // toplevel forms of the parsed file to the `Program` (top) node\n // of an existing parse tree.\n program: null,\n // When `locations` is on, you can pass this to record the source\n // file in every node's `loc` object.\n sourceFile: null,\n // This value, if given, is stored in every node, whether\n // `locations` is on or off.\n directSourceFile: null,\n // When enabled, parenthesized expressions are represented by\n // (non-standard) ParenthesizedExpression nodes\n preserveParens: false\n};\n\n// Interpret and default an options object\n\nvar warnedAboutEcmaVersion = false;\n\nfunction getOptions(opts) {\n var options = {};\n\n for (var opt in defaultOptions)\n { options[opt] = opts && hasOwn(opts, opt) ? opts[opt] : defaultOptions[opt]; }\n\n if (options.ecmaVersion === \"latest\") {\n options.ecmaVersion = 1e8;\n } else if (options.ecmaVersion == null) {\n if (!warnedAboutEcmaVersion && typeof console === \"object\" && console.warn) {\n warnedAboutEcmaVersion = true;\n console.warn(\"Since Acorn 8.0.0, options.ecmaVersion is required.\\nDefaulting to 2020, but this will stop working in the future.\");\n }\n options.ecmaVersion = 11;\n } else if (options.ecmaVersion >= 2015) {\n options.ecmaVersion -= 2009;\n }\n\n if (options.allowReserved == null)\n { options.allowReserved = options.ecmaVersion < 5; }\n\n if (!opts || opts.allowHashBang == null)\n { options.allowHashBang = options.ecmaVersion >= 14; }\n\n if (isArray(options.onToken)) {\n var tokens = options.onToken;\n options.onToken = function (token) { return tokens.push(token); };\n }\n if (isArray(options.onComment))\n { options.onComment = pushComment(options, options.onComment); }\n\n if (options.sourceType === \"commonjs\" && options.allowAwaitOutsideFunction)\n { throw new Error(\"Cannot use allowAwaitOutsideFunction with sourceType: commonjs\") }\n\n return options\n}\n\nfunction pushComment(options, array) {\n return function(block, text, start, end, startLoc, endLoc) {\n var comment = {\n type: block ? \"Block\" : \"Line\",\n value: text,\n start: start,\n end: end\n };\n if (options.locations)\n { comment.loc = new SourceLocation(this, startLoc, endLoc); }\n if (options.ranges)\n { comment.range = [start, end]; }\n array.push(comment);\n }\n}\n\n// Each scope gets a bitset that may contain these flags\nvar\n SCOPE_TOP = 1,\n SCOPE_FUNCTION = 2,\n SCOPE_ASYNC = 4,\n SCOPE_GENERATOR = 8,\n SCOPE_ARROW = 16,\n SCOPE_SIMPLE_CATCH = 32,\n SCOPE_SUPER = 64,\n SCOPE_DIRECT_SUPER = 128,\n SCOPE_CLASS_STATIC_BLOCK = 256,\n SCOPE_CLASS_FIELD_INIT = 512,\n SCOPE_SWITCH = 1024,\n SCOPE_VAR = SCOPE_TOP | SCOPE_FUNCTION | SCOPE_CLASS_STATIC_BLOCK;\n\nfunction functionFlags(async, generator) {\n return SCOPE_FUNCTION | (async ? SCOPE_ASYNC : 0) | (generator ? SCOPE_GENERATOR : 0)\n}\n\n// Used in checkLVal* and declareName to determine the type of a binding\nvar\n BIND_NONE = 0, // Not a binding\n BIND_VAR = 1, // Var-style binding\n BIND_LEXICAL = 2, // Let- or const-style binding\n BIND_FUNCTION = 3, // Function declaration\n BIND_SIMPLE_CATCH = 4, // Simple (identifier pattern) catch binding\n BIND_OUTSIDE = 5; // Special case for function names as bound inside the function\n\nvar Parser = function Parser(options, input, startPos) {\n this.options = options = getOptions(options);\n this.sourceFile = options.sourceFile;\n this.keywords = wordsRegexp(keywords$1[options.ecmaVersion >= 6 ? 6 : options.sourceType === \"module\" ? \"5module\" : 5]);\n var reserved = \"\";\n if (options.allowReserved !== true) {\n reserved = reservedWords[options.ecmaVersion >= 6 ? 6 : options.ecmaVersion === 5 ? 5 : 3];\n if (options.sourceType === \"module\") { reserved += \" await\"; }\n }\n this.reservedWords = wordsRegexp(reserved);\n var reservedStrict = (reserved ? reserved + \" \" : \"\") + reservedWords.strict;\n this.reservedWordsStrict = wordsRegexp(reservedStrict);\n this.reservedWordsStrictBind = wordsRegexp(reservedStrict + \" \" + reservedWords.strictBind);\n this.input = String(input);\n\n // Used to signal to callers of `readWord1` whether the word\n // contained any escape sequences. This is needed because words with\n // escape sequences must not be interpreted as keywords.\n this.containsEsc = false;\n\n // Set up token state\n\n // The current position of the tokenizer in the input.\n if (startPos) {\n this.pos = startPos;\n this.lineStart = this.input.lastIndexOf(\"\\n\", startPos - 1) + 1;\n this.curLine = this.input.slice(0, this.lineStart).split(lineBreak).length;\n } else {\n this.pos = this.lineStart = 0;\n this.curLine = 1;\n }\n\n // Properties of the current token:\n // Its type\n this.type = types$1.eof;\n // For tokens that include more information than their type, the value\n this.value = null;\n // Its start and end offset\n this.start = this.end = this.pos;\n // And, if locations are used, the {line, column} object\n // corresponding to those offsets\n this.startLoc = this.endLoc = this.curPosition();\n\n // Position information for the previous token\n this.lastTokEndLoc = this.lastTokStartLoc = null;\n this.lastTokStart = this.lastTokEnd = this.pos;\n\n // The context stack is used to superficially track syntactic\n // context to predict whether a regular expression is allowed in a\n // given position.\n this.context = this.initialContext();\n this.exprAllowed = true;\n\n // Figure out if it's a module code.\n this.inModule = options.sourceType === \"module\";\n this.strict = this.inModule || this.strictDirective(this.pos);\n\n // Used to signify the start of a potential arrow function\n this.potentialArrowAt = -1;\n this.potentialArrowInForAwait = false;\n\n // Positions to delayed-check that yield/await does not exist in default parameters.\n this.yieldPos = this.awaitPos = this.awaitIdentPos = 0;\n // Labels in scope.\n this.labels = [];\n // Thus-far undefined exports.\n this.undefinedExports = Object.create(null);\n\n // If enabled, skip leading hashbang line.\n if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === \"#!\")\n { this.skipLineComment(2); }\n\n // Scope tracking for duplicate variable names (see scope.js)\n this.scopeStack = [];\n this.enterScope(\n this.options.sourceType === \"commonjs\"\n // In commonjs, the top-level scope behaves like a function scope\n ? SCOPE_FUNCTION\n : SCOPE_TOP\n );\n\n // For RegExp validation\n this.regexpState = null;\n\n // The stack of private names.\n // Each element has two properties: 'declared' and 'used'.\n // When it exited from the outermost class definition, all used private names must be declared.\n this.privateNameStack = [];\n};\n\nvar prototypeAccessors = { inFunction: { configurable: true },inGenerator: { configurable: true },inAsync: { configurable: true },canAwait: { configurable: true },allowReturn: { configurable: true },allowSuper: { configurable: true },allowDirectSuper: { configurable: true },treatFunctionsAsVar: { configurable: true },allowNewDotTarget: { configurable: true },allowUsing: { configurable: true },inClassStaticBlock: { configurable: true } };\n\nParser.prototype.parse = function parse () {\n var node = this.options.program || this.startNode();\n this.nextToken();\n return this.parseTopLevel(node)\n};\n\nprototypeAccessors.inFunction.get = function () { return (this.currentVarScope().flags & SCOPE_FUNCTION) > 0 };\n\nprototypeAccessors.inGenerator.get = function () { return (this.currentVarScope().flags & SCOPE_GENERATOR) > 0 };\n\nprototypeAccessors.inAsync.get = function () { return (this.currentVarScope().flags & SCOPE_ASYNC) > 0 };\n\nprototypeAccessors.canAwait.get = function () {\n for (var i = this.scopeStack.length - 1; i >= 0; i--) {\n var ref = this.scopeStack[i];\n var flags = ref.flags;\n if (flags & (SCOPE_CLASS_STATIC_BLOCK | SCOPE_CLASS_FIELD_INIT)) { return false }\n if (flags & SCOPE_FUNCTION) { return (flags & SCOPE_ASYNC) > 0 }\n }\n return (this.inModule && this.options.ecmaVersion >= 13) || this.options.allowAwaitOutsideFunction\n};\n\nprototypeAccessors.allowReturn.get = function () {\n if (this.inFunction) { return true }\n if (this.options.allowReturnOutsideFunction && this.currentVarScope().flags & SCOPE_TOP) { return true }\n return false\n};\n\nprototypeAccessors.allowSuper.get = function () {\n var ref = this.currentThisScope();\n var flags = ref.flags;\n return (flags & SCOPE_SUPER) > 0 || this.options.allowSuperOutsideMethod\n};\n\nprototypeAccessors.allowDirectSuper.get = function () { return (this.currentThisScope().flags & SCOPE_DIRECT_SUPER) > 0 };\n\nprototypeAccessors.treatFunctionsAsVar.get = function () { return this.treatFunctionsAsVarInScope(this.currentScope()) };\n\nprototypeAccessors.allowNewDotTarget.get = function () {\n for (var i = this.scopeStack.length - 1; i >= 0; i--) {\n var ref = this.scopeStack[i];\n var flags = ref.flags;\n if (flags & (SCOPE_CLASS_STATIC_BLOCK | SCOPE_CLASS_FIELD_INIT) ||\n ((flags & SCOPE_FUNCTION) && !(flags & SCOPE_ARROW))) { return true }\n }\n return false\n};\n\nprototypeAccessors.allowUsing.get = function () {\n var ref = this.currentScope();\n var flags = ref.flags;\n if (flags & SCOPE_SWITCH) { return false }\n if (!this.inModule && flags & SCOPE_TOP) { return false }\n return true\n};\n\nprototypeAccessors.inClassStaticBlock.get = function () {\n return (this.currentVarScope().flags & SCOPE_CLASS_STATIC_BLOCK) > 0\n};\n\nParser.extend = function extend () {\n var plugins = [], len = arguments.length;\n while ( len-- ) plugins[ len ] = arguments[ len ];\n\n var cls = this;\n for (var i = 0; i < plugins.length; i++) { cls = plugins[i](cls); }\n return cls\n};\n\nParser.parse = function parse (input, options) {\n return new this(options, input).parse()\n};\n\nParser.parseExpressionAt = function parseExpressionAt (input, pos, options) {\n var parser = new this(options, input, pos);\n parser.nextToken();\n return parser.parseExpression()\n};\n\nParser.tokenizer = function tokenizer (input, options) {\n return new this(options, input)\n};\n\nObject.defineProperties( Parser.prototype, prototypeAccessors );\n\nvar pp$9 = Parser.prototype;\n\n// ## Parser utilities\n\nvar literal = /^(?:'((?:\\\\[^]|[^'\\\\])*?)'|\"((?:\\\\[^]|[^\"\\\\])*?)\")/;\npp$9.strictDirective = function(start) {\n if (this.options.ecmaVersion < 5) { return false }\n for (;;) {\n // Try to find string literal.\n skipWhiteSpace.lastIndex = start;\n start += skipWhiteSpace.exec(this.input)[0].length;\n var match = literal.exec(this.input.slice(start));\n if (!match) { return false }\n if ((match[1] || match[2]) === \"use strict\") {\n skipWhiteSpace.lastIndex = start + match[0].length;\n var spaceAfter = skipWhiteSpace.exec(this.input), end = spaceAfter.index + spaceAfter[0].length;\n var next = this.input.charAt(end);\n return next === \";\" || next === \"}\" ||\n (lineBreak.test(spaceAfter[0]) &&\n !(/[(`.[+\\-/*%<>=,?^&]/.test(next) || next === \"!\" && this.input.charAt(end + 1) === \"=\"))\n }\n start += match[0].length;\n\n // Skip semicolon, if any.\n skipWhiteSpace.lastIndex = start;\n start += skipWhiteSpace.exec(this.input)[0].length;\n if (this.input[start] === \";\")\n { start++; }\n }\n};\n\n// Predicate that tests whether the next token is of the given\n// type, and if yes, consumes it as a side effect.\n\npp$9.eat = function(type) {\n if (this.type === type) {\n this.next();\n return true\n } else {\n return false\n }\n};\n\n// Tests whether parsed token is a contextual keyword.\n\npp$9.isContextual = function(name) {\n return this.type === types$1.name && this.value === name && !this.containsEsc\n};\n\n// Consumes contextual keyword if possible.\n\npp$9.eatContextual = function(name) {\n if (!this.isContextual(name)) { return false }\n this.next();\n return true\n};\n\n// Asserts that following token is given contextual keyword.\n\npp$9.expectContextual = function(name) {\n if (!this.eatContextual(name)) { this.unexpected(); }\n};\n\n// Test whether a semicolon can be inserted at the current position.\n\npp$9.canInsertSemicolon = function() {\n return this.type === types$1.eof ||\n this.type === types$1.braceR ||\n lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n};\n\npp$9.insertSemicolon = function() {\n if (this.canInsertSemicolon()) {\n if (this.options.onInsertedSemicolon)\n { this.options.onInsertedSemicolon(this.lastTokEnd, this.lastTokEndLoc); }\n return true\n }\n};\n\n// Consume a semicolon, or, failing that, see if we are allowed to\n// pretend that there is a semicolon at this position.\n\npp$9.semicolon = function() {\n if (!this.eat(types$1.semi) && !this.insertSemicolon()) { this.unexpected(); }\n};\n\npp$9.afterTrailingComma = function(tokType, notNext) {\n if (this.type === tokType) {\n if (this.options.onTrailingComma)\n { this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc); }\n if (!notNext)\n { this.next(); }\n return true\n }\n};\n\n// Expect a token of a given type. If found, consume it, otherwise,\n// raise an unexpected token error.\n\npp$9.expect = function(type) {\n this.eat(type) || this.unexpected();\n};\n\n// Raise an unexpected token error.\n\npp$9.unexpected = function(pos) {\n this.raise(pos != null ? pos : this.start, \"Unexpected token\");\n};\n\nvar DestructuringErrors = function DestructuringErrors() {\n this.shorthandAssign =\n this.trailingComma =\n this.parenthesizedAssign =\n this.parenthesizedBind =\n this.doubleProto =\n -1;\n};\n\npp$9.checkPatternErrors = function(refDestructuringErrors, isAssign) {\n if (!refDestructuringErrors) { return }\n if (refDestructuringErrors.trailingComma > -1)\n { this.raiseRecoverable(refDestructuringErrors.trailingComma, \"Comma is not permitted after the rest element\"); }\n var parens = isAssign ? refDestructuringErrors.parenthesizedAssign : refDestructuringErrors.parenthesizedBind;\n if (parens > -1) { this.raiseRecoverable(parens, isAssign ? \"Assigning to rvalue\" : \"Parenthesized pattern\"); }\n};\n\npp$9.checkExpressionErrors = function(refDestructuringErrors, andThrow) {\n if (!refDestructuringErrors) { return false }\n var shorthandAssign = refDestructuringErrors.shorthandAssign;\n var doubleProto = refDestructuringErrors.doubleProto;\n if (!andThrow) { return shorthandAssign >= 0 || doubleProto >= 0 }\n if (shorthandAssign >= 0)\n { this.raise(shorthandAssign, \"Shorthand property assignments are valid only in destructuring patterns\"); }\n if (doubleProto >= 0)\n { this.raiseRecoverable(doubleProto, \"Redefinition of __proto__ property\"); }\n};\n\npp$9.checkYieldAwaitInDefaultParams = function() {\n if (this.yieldPos && (!this.awaitPos || this.yieldPos < this.awaitPos))\n { this.raise(this.yieldPos, \"Yield expression cannot be a default value\"); }\n if (this.awaitPos)\n { this.raise(this.awaitPos, \"Await expression cannot be a default value\"); }\n};\n\npp$9.isSimpleAssignTarget = function(expr) {\n if (expr.type === \"ParenthesizedExpression\")\n { return this.isSimpleAssignTarget(expr.expression) }\n return expr.type === \"Identifier\" || expr.type === \"MemberExpression\"\n};\n\nvar pp$8 = Parser.prototype;\n\n// ### Statement parsing\n\n// Parse a program. Initializes the parser, reads any number of\n// statements, and wraps them in a Program node. Optionally takes a\n// `program` argument. If present, the statements will be appended\n// to its body instead of creating a new node.\n\npp$8.parseTopLevel = function(node) {\n var exports = Object.create(null);\n if (!node.body) { node.body = []; }\n while (this.type !== types$1.eof) {\n var stmt = this.parseStatement(null, true, exports);\n node.body.push(stmt);\n }\n if (this.inModule)\n { for (var i = 0, list = Object.keys(this.undefinedExports); i < list.length; i += 1)\n {\n var name = list[i];\n\n this.raiseRecoverable(this.undefinedExports[name].start, (\"Export '\" + name + \"' is not defined\"));\n } }\n this.adaptDirectivePrologue(node.body);\n this.next();\n node.sourceType = this.options.sourceType === \"commonjs\" ? \"script\" : this.options.sourceType;\n return this.finishNode(node, \"Program\")\n};\n\nvar loopLabel = {kind: \"loop\"}, switchLabel = {kind: \"switch\"};\n\npp$8.isLet = function(context) {\n if (this.options.ecmaVersion < 6 || !this.isContextual(\"let\")) { return false }\n skipWhiteSpace.lastIndex = this.pos;\n var skip = skipWhiteSpace.exec(this.input);\n var next = this.pos + skip[0].length, nextCh = this.fullCharCodeAt(next);\n // For ambiguous cases, determine if a LexicalDeclaration (or only a\n // Statement) is allowed here. If context is not empty then only a Statement\n // is allowed. However, `let [` is an explicit negative lookahead for\n // ExpressionStatement, so special-case it first.\n if (nextCh === 91 || nextCh === 92) { return true } // '[', '\\'\n if (context) { return false }\n\n if (nextCh === 123) { return true } // '{'\n if (isIdentifierStart(nextCh)) {\n var start = next;\n do { next += nextCh <= 0xffff ? 1 : 2; }\n while (isIdentifierChar(nextCh = this.fullCharCodeAt(next)))\n if (nextCh === 92) { return true }\n var ident = this.input.slice(start, next);\n if (!keywordRelationalOperator.test(ident)) { return true }\n }\n return false\n};\n\n// check 'async [no LineTerminator here] function'\n// - 'async /*foo*/ function' is OK.\n// - 'async /*\\n*/ function' is invalid.\npp$8.isAsyncFunction = function() {\n if (this.options.ecmaVersion < 8 || !this.isContextual(\"async\"))\n { return false }\n\n skipWhiteSpace.lastIndex = this.pos;\n var skip = skipWhiteSpace.exec(this.input);\n var next = this.pos + skip[0].length, after;\n return !lineBreak.test(this.input.slice(this.pos, next)) &&\n this.input.slice(next, next + 8) === \"function\" &&\n (next + 8 === this.input.length ||\n !(isIdentifierChar(after = this.fullCharCodeAt(next + 8)) || after === 92 /* '\\' */))\n};\n\npp$8.isUsingKeyword = function(isAwaitUsing, isFor) {\n if (this.options.ecmaVersion < 17 || !this.isContextual(isAwaitUsing ? \"await\" : \"using\"))\n { return false }\n\n skipWhiteSpace.lastIndex = this.pos;\n var skip = skipWhiteSpace.exec(this.input);\n var next = this.pos + skip[0].length;\n\n if (lineBreak.test(this.input.slice(this.pos, next))) { return false }\n\n if (isAwaitUsing) {\n var usingEndPos = next + 5 /* using */, after;\n if (this.input.slice(next, usingEndPos) !== \"using\" ||\n usingEndPos === this.input.length ||\n isIdentifierChar(after = this.fullCharCodeAt(usingEndPos)) ||\n after === 92 /* '\\' */\n ) { return false }\n\n skipWhiteSpace.lastIndex = usingEndPos;\n var skipAfterUsing = skipWhiteSpace.exec(this.input);\n next = usingEndPos + skipAfterUsing[0].length;\n if (skipAfterUsing && lineBreak.test(this.input.slice(usingEndPos, next))) { return false }\n }\n\n var ch = this.fullCharCodeAt(next);\n if (!isIdentifierStart(ch) && ch !== 92 /* '\\' */) { return false }\n var idStart = next;\n do { next += ch <= 0xffff ? 1 : 2; }\n while (isIdentifierChar(ch = this.fullCharCodeAt(next)))\n if (ch === 92) { return true }\n var id = this.input.slice(idStart, next);\n if (keywordRelationalOperator.test(id) || isFor && id === \"of\") { return false }\n return true\n};\n\npp$8.isAwaitUsing = function(isFor) {\n return this.isUsingKeyword(true, isFor)\n};\n\npp$8.isUsing = function(isFor) {\n return this.isUsingKeyword(false, isFor)\n};\n\n// Parse a single statement.\n//\n// If expecting a statement and finding a slash operator, parse a\n// regular expression literal. This is to handle cases like\n// `if (foo) /blah/.exec(foo)`, where looking at the previous token\n// does not help.\n\npp$8.parseStatement = function(context, topLevel, exports) {\n var starttype = this.type, node = this.startNode(), kind;\n\n if (this.isLet(context)) {\n starttype = types$1._var;\n kind = \"let\";\n }\n\n // Most types of statements are recognized by the keyword they\n // start with. Many are trivial to parse, some require a bit of\n // complexity.\n\n switch (starttype) {\n case types$1._break: case types$1._continue: return this.parseBreakContinueStatement(node, starttype.keyword)\n case types$1._debugger: return this.parseDebuggerStatement(node)\n case types$1._do: return this.parseDoStatement(node)\n case types$1._for: return this.parseForStatement(node)\n case types$1._function:\n // Function as sole body of either an if statement or a labeled statement\n // works, but not when it is part of a labeled statement that is the sole\n // body of an if statement.\n if ((context && (this.strict || context !== \"if\" && context !== \"label\")) && this.options.ecmaVersion >= 6) { this.unexpected(); }\n return this.parseFunctionStatement(node, false, !context)\n case types$1._class:\n if (context) { this.unexpected(); }\n return this.parseClass(node, true)\n case types$1._if: return this.parseIfStatement(node)\n case types$1._return: return this.parseReturnStatement(node)\n case types$1._switch: return this.parseSwitchStatement(node)\n case types$1._throw: return this.parseThrowStatement(node)\n case types$1._try: return this.parseTryStatement(node)\n case types$1._const: case types$1._var:\n kind = kind || this.value;\n if (context && kind !== \"var\") { this.unexpected(); }\n return this.parseVarStatement(node, kind)\n case types$1._while: return this.parseWhileStatement(node)\n case types$1._with: return this.parseWithStatement(node)\n case types$1.braceL: return this.parseBlock(true, node)\n case types$1.semi: return this.parseEmptyStatement(node)\n case types$1._export:\n case types$1._import:\n if (this.options.ecmaVersion > 10 && starttype === types$1._import) {\n skipWhiteSpace.lastIndex = this.pos;\n var skip = skipWhiteSpace.exec(this.input);\n var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next);\n if (nextCh === 40 || nextCh === 46) // '(' or '.'\n { return this.parseExpressionStatement(node, this.parseExpression()) }\n }\n\n if (!this.options.allowImportExportEverywhere) {\n if (!topLevel)\n { this.raise(this.start, \"'import' and 'export' may only appear at the top level\"); }\n if (!this.inModule)\n { this.raise(this.start, \"'import' and 'export' may appear only with 'sourceType: module'\"); }\n }\n return starttype === types$1._import ? this.parseImport(node) : this.parseExport(node, exports)\n\n // If the statement does not start with a statement keyword or a\n // brace, it's an ExpressionStatement or LabeledStatement. We\n // simply start parsing an expression, and afterwards, if the\n // next token is a colon and the expression was a simple\n // Identifier node, we switch to interpreting it as a label.\n default:\n if (this.isAsyncFunction()) {\n if (context) { this.unexpected(); }\n this.next();\n return this.parseFunctionStatement(node, true, !context)\n }\n\n var usingKind = this.isAwaitUsing(false) ? \"await using\" : this.isUsing(false) ? \"using\" : null;\n if (usingKind) {\n if (!this.allowUsing) {\n this.raise(this.start, \"Using declaration cannot appear in the top level when source type is `script` or in the bare case statement\");\n }\n if (usingKind === \"await using\") {\n if (!this.canAwait) {\n this.raise(this.start, \"Await using cannot appear outside of async function\");\n }\n this.next();\n }\n this.next();\n this.parseVar(node, false, usingKind);\n this.semicolon();\n return this.finishNode(node, \"VariableDeclaration\")\n }\n\n var maybeName = this.value, expr = this.parseExpression();\n if (starttype === types$1.name && expr.type === \"Identifier\" && this.eat(types$1.colon))\n { return this.parseLabeledStatement(node, maybeName, expr, context) }\n else { return this.parseExpressionStatement(node, expr) }\n }\n};\n\npp$8.parseBreakContinueStatement = function(node, keyword) {\n var isBreak = keyword === \"break\";\n this.next();\n if (this.eat(types$1.semi) || this.insertSemicolon()) { node.label = null; }\n else if (this.type !== types$1.name) { this.unexpected(); }\n else {\n node.label = this.parseIdent();\n this.semicolon();\n }\n\n // Verify that there is an actual destination to break or\n // continue to.\n var i = 0;\n for (; i < this.labels.length; ++i) {\n var lab = this.labels[i];\n if (node.label == null || lab.name === node.label.name) {\n if (lab.kind != null && (isBreak || lab.kind === \"loop\")) { break }\n if (node.label && isBreak) { break }\n }\n }\n if (i === this.labels.length) { this.raise(node.start, \"Unsyntactic \" + keyword); }\n return this.finishNode(node, isBreak ? \"BreakStatement\" : \"ContinueStatement\")\n};\n\npp$8.parseDebuggerStatement = function(node) {\n this.next();\n this.semicolon();\n return this.finishNode(node, \"DebuggerStatement\")\n};\n\npp$8.parseDoStatement = function(node) {\n this.next();\n this.labels.push(loopLabel);\n node.body = this.parseStatement(\"do\");\n this.labels.pop();\n this.expect(types$1._while);\n node.test = this.parseParenExpression();\n if (this.options.ecmaVersion >= 6)\n { this.eat(types$1.semi); }\n else\n { this.semicolon(); }\n return this.finishNode(node, \"DoWhileStatement\")\n};\n\n// Disambiguating between a `for` and a `for`/`in` or `for`/`of`\n// loop is non-trivial. Basically, we have to parse the init `var`\n// statement or expression, disallowing the `in` operator (see\n// the second parameter to `parseExpression`), and then check\n// whether the next token is `in` or `of`. When there is no init\n// part (semicolon immediately after the opening parenthesis), it\n// is a regular `for` loop.\n\npp$8.parseForStatement = function(node) {\n this.next();\n var awaitAt = (this.options.ecmaVersion >= 9 && this.canAwait && this.eatContextual(\"await\")) ? this.lastTokStart : -1;\n this.labels.push(loopLabel);\n this.enterScope(0);\n this.expect(types$1.parenL);\n if (this.type === types$1.semi) {\n if (awaitAt > -1) { this.unexpected(awaitAt); }\n return this.parseFor(node, null)\n }\n var isLet = this.isLet();\n if (this.type === types$1._var || this.type === types$1._const || isLet) {\n var init$1 = this.startNode(), kind = isLet ? \"let\" : this.value;\n this.next();\n this.parseVar(init$1, true, kind);\n this.finishNode(init$1, \"VariableDeclaration\");\n return this.parseForAfterInit(node, init$1, awaitAt)\n }\n var startsWithLet = this.isContextual(\"let\"), isForOf = false;\n\n var usingKind = this.isUsing(true) ? \"using\" : this.isAwaitUsing(true) ? \"await using\" : null;\n if (usingKind) {\n var init$2 = this.startNode();\n this.next();\n if (usingKind === \"await using\") {\n if (!this.canAwait) {\n this.raise(this.start, \"Await using cannot appear outside of async function\");\n }\n this.next();\n }\n this.parseVar(init$2, true, usingKind);\n this.finishNode(init$2, \"VariableDeclaration\");\n return this.parseForAfterInit(node, init$2, awaitAt)\n }\n var containsEsc = this.containsEsc;\n var refDestructuringErrors = new DestructuringErrors;\n var initPos = this.start;\n var init = awaitAt > -1\n ? this.parseExprSubscripts(refDestructuringErrors, \"await\")\n : this.parseExpression(true, refDestructuringErrors);\n if (this.type === types$1._in || (isForOf = this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) {\n if (awaitAt > -1) { // implies `ecmaVersion >= 9` (see declaration of awaitAt)\n if (this.type === types$1._in) { this.unexpected(awaitAt); }\n node.await = true;\n } else if (isForOf && this.options.ecmaVersion >= 8) {\n if (init.start === initPos && !containsEsc && init.type === \"Identifier\" && init.name === \"async\") { this.unexpected(); }\n else if (this.options.ecmaVersion >= 9) { node.await = false; }\n }\n if (startsWithLet && isForOf) { this.raise(init.start, \"The left-hand side of a for-of loop may not start with 'let'.\"); }\n this.toAssignable(init, false, refDestructuringErrors);\n this.checkLValPattern(init);\n return this.parseForIn(node, init)\n } else {\n this.checkExpressionErrors(refDestructuringErrors, true);\n }\n if (awaitAt > -1) { this.unexpected(awaitAt); }\n return this.parseFor(node, init)\n};\n\n// Helper method to parse for loop after variable initialization\npp$8.parseForAfterInit = function(node, init, awaitAt) {\n if ((this.type === types$1._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) && init.declarations.length === 1) {\n if (this.options.ecmaVersion >= 9) {\n if (this.type === types$1._in) {\n if (awaitAt > -1) { this.unexpected(awaitAt); }\n } else { node.await = awaitAt > -1; }\n }\n return this.parseForIn(node, init)\n }\n if (awaitAt > -1) { this.unexpected(awaitAt); }\n return this.parseFor(node, init)\n};\n\npp$8.parseFunctionStatement = function(node, isAsync, declarationPosition) {\n this.next();\n return this.parseFunction(node, FUNC_STATEMENT | (declarationPosition ? 0 : FUNC_HANGING_STATEMENT), false, isAsync)\n};\n\npp$8.parseIfStatement = function(node) {\n this.next();\n node.test = this.parseParenExpression();\n // allow function declarations in branches, but only in non-strict mode\n node.consequent = this.parseStatement(\"if\");\n node.alternate = this.eat(types$1._else) ? this.parseStatement(\"if\") : null;\n return this.finishNode(node, \"IfStatement\")\n};\n\npp$8.parseReturnStatement = function(node) {\n if (!this.allowReturn)\n { this.raise(this.start, \"'return' outside of function\"); }\n this.next();\n\n // In `return` (and `break`/`continue`), the keywords with\n // optional arguments, we eagerly look for a semicolon or the\n // possibility to insert one.\n\n if (this.eat(types$1.semi) || this.insertSemicolon()) { node.argument = null; }\n else { node.argument = this.parseExpression(); this.semicolon(); }\n return this.finishNode(node, \"ReturnStatement\")\n};\n\npp$8.parseSwitchStatement = function(node) {\n this.next();\n node.discriminant = this.parseParenExpression();\n node.cases = [];\n this.expect(types$1.braceL);\n this.labels.push(switchLabel);\n this.enterScope(SCOPE_SWITCH);\n\n // Statements under must be grouped (by label) in SwitchCase\n // nodes. `cur` is used to keep the node that we are currently\n // adding statements to.\n\n var cur;\n for (var sawDefault = false; this.type !== types$1.braceR;) {\n if (this.type === types$1._case || this.type === types$1._default) {\n var isCase = this.type === types$1._case;\n if (cur) { this.finishNode(cur, \"SwitchCase\"); }\n node.cases.push(cur = this.startNode());\n cur.consequent = [];\n this.next();\n if (isCase) {\n cur.test = this.parseExpression();\n } else {\n if (sawDefault) { this.raiseRecoverable(this.lastTokStart, \"Multiple default clauses\"); }\n sawDefault = true;\n cur.test = null;\n }\n this.expect(types$1.colon);\n } else {\n if (!cur) { this.unexpected(); }\n cur.consequent.push(this.parseStatement(null));\n }\n }\n this.exitScope();\n if (cur) { this.finishNode(cur, \"SwitchCase\"); }\n this.next(); // Closing brace\n this.labels.pop();\n return this.finishNode(node, \"SwitchStatement\")\n};\n\npp$8.parseThrowStatement = function(node) {\n this.next();\n if (lineBreak.test(this.input.slice(this.lastTokEnd, this.start)))\n { this.raise(this.lastTokEnd, \"Illegal newline after throw\"); }\n node.argument = this.parseExpression();\n this.semicolon();\n return this.finishNode(node, \"ThrowStatement\")\n};\n\n// Reused empty array added for node fields that are always empty.\n\nvar empty$1 = [];\n\npp$8.parseCatchClauseParam = function() {\n var param = this.parseBindingAtom();\n var simple = param.type === \"Identifier\";\n this.enterScope(simple ? SCOPE_SIMPLE_CATCH : 0);\n this.checkLValPattern(param, simple ? BIND_SIMPLE_CATCH : BIND_LEXICAL);\n this.expect(types$1.parenR);\n\n return param\n};\n\npp$8.parseTryStatement = function(node) {\n this.next();\n node.block = this.parseBlock();\n node.handler = null;\n if (this.type === types$1._catch) {\n var clause = this.startNode();\n this.next();\n if (this.eat(types$1.parenL)) {\n clause.param = this.parseCatchClauseParam();\n } else {\n if (this.options.ecmaVersion < 10) { this.unexpected(); }\n clause.param = null;\n this.enterScope(0);\n }\n clause.body = this.parseBlock(false);\n this.exitScope();\n node.handler = this.finishNode(clause, \"CatchClause\");\n }\n node.finalizer = this.eat(types$1._finally) ? this.parseBlock() : null;\n if (!node.handler && !node.finalizer)\n { this.raise(node.start, \"Missing catch or finally clause\"); }\n return this.finishNode(node, \"TryStatement\")\n};\n\npp$8.parseVarStatement = function(node, kind, allowMissingInitializer) {\n this.next();\n this.parseVar(node, false, kind, allowMissingInitializer);\n this.semicolon();\n return this.finishNode(node, \"VariableDeclaration\")\n};\n\npp$8.parseWhileStatement = function(node) {\n this.next();\n node.test = this.parseParenExpression();\n this.labels.push(loopLabel);\n node.body = this.parseStatement(\"while\");\n this.labels.pop();\n return this.finishNode(node, \"WhileStatement\")\n};\n\npp$8.parseWithStatement = function(node) {\n if (this.strict) { this.raise(this.start, \"'with' in strict mode\"); }\n this.next();\n node.object = this.parseParenExpression();\n node.body = this.parseStatement(\"with\");\n return this.finishNode(node, \"WithStatement\")\n};\n\npp$8.parseEmptyStatement = function(node) {\n this.next();\n return this.finishNode(node, \"EmptyStatement\")\n};\n\npp$8.parseLabeledStatement = function(node, maybeName, expr, context) {\n for (var i$1 = 0, list = this.labels; i$1 < list.length; i$1 += 1)\n {\n var label = list[i$1];\n\n if (label.name === maybeName)\n { this.raise(expr.start, \"Label '\" + maybeName + \"' is already declared\");\n } }\n var kind = this.type.isLoop ? \"loop\" : this.type === types$1._switch ? \"switch\" : null;\n for (var i = this.labels.length - 1; i >= 0; i--) {\n var label$1 = this.labels[i];\n if (label$1.statementStart === node.start) {\n // Update information about previous labels on this node\n label$1.statementStart = this.start;\n label$1.kind = kind;\n } else { break }\n }\n this.labels.push({name: maybeName, kind: kind, statementStart: this.start});\n node.body = this.parseStatement(context ? context.indexOf(\"label\") === -1 ? context + \"label\" : context : \"label\");\n this.labels.pop();\n node.label = expr;\n return this.finishNode(node, \"LabeledStatement\")\n};\n\npp$8.parseExpressionStatement = function(node, expr) {\n node.expression = expr;\n this.semicolon();\n return this.finishNode(node, \"ExpressionStatement\")\n};\n\n// Parse a semicolon-enclosed block of statements, handling `\"use\n// strict\"` declarations when `allowStrict` is true (used for\n// function bodies).\n\npp$8.parseBlock = function(createNewLexicalScope, node, exitStrict) {\n if ( createNewLexicalScope === void 0 ) createNewLexicalScope = true;\n if ( node === void 0 ) node = this.startNode();\n\n node.body = [];\n this.expect(types$1.braceL);\n if (createNewLexicalScope) { this.enterScope(0); }\n while (this.type !== types$1.braceR) {\n var stmt = this.parseStatement(null);\n node.body.push(stmt);\n }\n if (exitStrict) { this.strict = false; }\n this.next();\n if (createNewLexicalScope) { this.exitScope(); }\n return this.finishNode(node, \"BlockStatement\")\n};\n\n// Parse a regular `for` loop. The disambiguation code in\n// `parseStatement` will already have parsed the init statement or\n// expression.\n\npp$8.parseFor = function(node, init) {\n node.init = init;\n this.expect(types$1.semi);\n node.test = this.type === types$1.semi ? null : this.parseExpression();\n this.expect(types$1.semi);\n node.update = this.type === types$1.parenR ? null : this.parseExpression();\n this.expect(types$1.parenR);\n node.body = this.parseStatement(\"for\");\n this.exitScope();\n this.labels.pop();\n return this.finishNode(node, \"ForStatement\")\n};\n\n// Parse a `for`/`in` and `for`/`of` loop, which are almost\n// same from parser's perspective.\n\npp$8.parseForIn = function(node, init) {\n var isForIn = this.type === types$1._in;\n this.next();\n\n if (\n init.type === \"VariableDeclaration\" &&\n init.declarations[0].init != null &&\n (\n !isForIn ||\n this.options.ecmaVersion < 8 ||\n this.strict ||\n init.kind !== \"var\" ||\n init.declarations[0].id.type !== \"Identifier\"\n )\n ) {\n this.raise(\n init.start,\n ((isForIn ? \"for-in\" : \"for-of\") + \" loop variable declaration may not have an initializer\")\n );\n }\n node.left = init;\n node.right = isForIn ? this.parseExpression() : this.parseMaybeAssign();\n this.expect(types$1.parenR);\n node.body = this.parseStatement(\"for\");\n this.exitScope();\n this.labels.pop();\n return this.finishNode(node, isForIn ? \"ForInStatement\" : \"ForOfStatement\")\n};\n\n// Parse a list of variable declarations.\n\npp$8.parseVar = function(node, isFor, kind, allowMissingInitializer) {\n node.declarations = [];\n node.kind = kind;\n for (;;) {\n var decl = this.startNode();\n this.parseVarId(decl, kind);\n if (this.eat(types$1.eq)) {\n decl.init = this.parseMaybeAssign(isFor);\n } else if (!allowMissingInitializer && kind === \"const\" && !(this.type === types$1._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\")))) {\n this.unexpected();\n } else if (!allowMissingInitializer && (kind === \"using\" || kind === \"await using\") && this.options.ecmaVersion >= 17 && this.type !== types$1._in && !this.isContextual(\"of\")) {\n this.raise(this.lastTokEnd, (\"Missing initializer in \" + kind + \" declaration\"));\n } else if (!allowMissingInitializer && decl.id.type !== \"Identifier\" && !(isFor && (this.type === types$1._in || this.isContextual(\"of\")))) {\n this.raise(this.lastTokEnd, \"Complex binding patterns require an initialization value\");\n } else {\n decl.init = null;\n }\n node.declarations.push(this.finishNode(decl, \"VariableDeclarator\"));\n if (!this.eat(types$1.comma)) { break }\n }\n return node\n};\n\npp$8.parseVarId = function(decl, kind) {\n decl.id = kind === \"using\" || kind === \"await using\"\n ? this.parseIdent()\n : this.parseBindingAtom();\n\n this.checkLValPattern(decl.id, kind === \"var\" ? BIND_VAR : BIND_LEXICAL, false);\n};\n\nvar FUNC_STATEMENT = 1, FUNC_HANGING_STATEMENT = 2, FUNC_NULLABLE_ID = 4;\n\n// Parse a function declaration or literal (depending on the\n// `statement & FUNC_STATEMENT`).\n\n// Remove `allowExpressionBody` for 7.0.0, as it is only called with false\npp$8.parseFunction = function(node, statement, allowExpressionBody, isAsync, forInit) {\n this.initFunction(node);\n if (this.options.ecmaVersion >= 9 || this.options.ecmaVersion >= 6 && !isAsync) {\n if (this.type === types$1.star && (statement & FUNC_HANGING_STATEMENT))\n { this.unexpected(); }\n node.generator = this.eat(types$1.star);\n }\n if (this.options.ecmaVersion >= 8)\n { node.async = !!isAsync; }\n\n if (statement & FUNC_STATEMENT) {\n node.id = (statement & FUNC_NULLABLE_ID) && this.type !== types$1.name ? null : this.parseIdent();\n if (node.id && !(statement & FUNC_HANGING_STATEMENT))\n // If it is a regular function declaration in sloppy mode, then it is\n // subject to Annex B semantics (BIND_FUNCTION). Otherwise, the binding\n // mode depends on properties of the current scope (see\n // treatFunctionsAsVar).\n { this.checkLValSimple(node.id, (this.strict || node.generator || node.async) ? this.treatFunctionsAsVar ? BIND_VAR : BIND_LEXICAL : BIND_FUNCTION); }\n }\n\n var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n this.yieldPos = 0;\n this.awaitPos = 0;\n this.awaitIdentPos = 0;\n this.enterScope(functionFlags(node.async, node.generator));\n\n if (!(statement & FUNC_STATEMENT))\n { node.id = this.type === types$1.name ? this.parseIdent() : null; }\n\n this.parseFunctionParams(node);\n this.parseFunctionBody(node, allowExpressionBody, false, forInit);\n\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n this.awaitIdentPos = oldAwaitIdentPos;\n return this.finishNode(node, (statement & FUNC_STATEMENT) ? \"FunctionDeclaration\" : \"FunctionExpression\")\n};\n\npp$8.parseFunctionParams = function(node) {\n this.expect(types$1.parenL);\n node.params = this.parseBindingList(types$1.parenR, false, this.options.ecmaVersion >= 8);\n this.checkYieldAwaitInDefaultParams();\n};\n\n// Parse a class declaration or literal (depending on the\n// `isStatement` parameter).\n\npp$8.parseClass = function(node, isStatement) {\n this.next();\n\n // ecma-262 14.6 Class Definitions\n // A class definition is always strict mode code.\n var oldStrict = this.strict;\n this.strict = true;\n\n this.parseClassId(node, isStatement);\n this.parseClassSuper(node);\n var privateNameMap = this.enterClassBody();\n var classBody = this.startNode();\n var hadConstructor = false;\n classBody.body = [];\n this.expect(types$1.braceL);\n while (this.type !== types$1.braceR) {\n var element = this.parseClassElement(node.superClass !== null);\n if (element) {\n classBody.body.push(element);\n if (element.type === \"MethodDefinition\" && element.kind === \"constructor\") {\n if (hadConstructor) { this.raiseRecoverable(element.start, \"Duplicate constructor in the same class\"); }\n hadConstructor = true;\n } else if (element.key && element.key.type === \"PrivateIdentifier\" && isPrivateNameConflicted(privateNameMap, element)) {\n this.raiseRecoverable(element.key.start, (\"Identifier '#\" + (element.key.name) + \"' has already been declared\"));\n }\n }\n }\n this.strict = oldStrict;\n this.next();\n node.body = this.finishNode(classBody, \"ClassBody\");\n this.exitClassBody();\n return this.finishNode(node, isStatement ? \"ClassDeclaration\" : \"ClassExpression\")\n};\n\npp$8.parseClassElement = function(constructorAllowsSuper) {\n if (this.eat(types$1.semi)) { return null }\n\n var ecmaVersion = this.options.ecmaVersion;\n var node = this.startNode();\n var keyName = \"\";\n var isGenerator = false;\n var isAsync = false;\n var kind = \"method\";\n var isStatic = false;\n\n if (this.eatContextual(\"static\")) {\n // Parse static init block\n if (ecmaVersion >= 13 && this.eat(types$1.braceL)) {\n this.parseClassStaticBlock(node);\n return node\n }\n if (this.isClassElementNameStart() || this.type === types$1.star) {\n isStatic = true;\n } else {\n keyName = \"static\";\n }\n }\n node.static = isStatic;\n if (!keyName && ecmaVersion >= 8 && this.eatContextual(\"async\")) {\n if ((this.isClassElementNameStart() || this.type === types$1.star) && !this.canInsertSemicolon()) {\n isAsync = true;\n } else {\n keyName = \"async\";\n }\n }\n if (!keyName && (ecmaVersion >= 9 || !isAsync) && this.eat(types$1.star)) {\n isGenerator = true;\n }\n if (!keyName && !isAsync && !isGenerator) {\n var lastValue = this.value;\n if (this.eatContextual(\"get\") || this.eatContextual(\"set\")) {\n if (this.isClassElementNameStart()) {\n kind = lastValue;\n } else {\n keyName = lastValue;\n }\n }\n }\n\n // Parse element name\n if (keyName) {\n // 'async', 'get', 'set', or 'static' were not a keyword contextually.\n // The last token is any of those. Make it the element name.\n node.computed = false;\n node.key = this.startNodeAt(this.lastTokStart, this.lastTokStartLoc);\n node.key.name = keyName;\n this.finishNode(node.key, \"Identifier\");\n } else {\n this.parseClassElementName(node);\n }\n\n // Parse element value\n if (ecmaVersion < 13 || this.type === types$1.parenL || kind !== \"method\" || isGenerator || isAsync) {\n var isConstructor = !node.static && checkKeyName(node, \"constructor\");\n var allowsDirectSuper = isConstructor && constructorAllowsSuper;\n // Couldn't move this check into the 'parseClassMethod' method for backward compatibility.\n if (isConstructor && kind !== \"method\") { this.raise(node.key.start, \"Constructor can't have get/set modifier\"); }\n node.kind = isConstructor ? \"constructor\" : kind;\n this.parseClassMethod(node, isGenerator, isAsync, allowsDirectSuper);\n } else {\n this.parseClassField(node);\n }\n\n return node\n};\n\npp$8.isClassElementNameStart = function() {\n return (\n this.type === types$1.name ||\n this.type === types$1.privateId ||\n this.type === types$1.num ||\n this.type === types$1.string ||\n this.type === types$1.bracketL ||\n this.type.keyword\n )\n};\n\npp$8.parseClassElementName = function(element) {\n if (this.type === types$1.privateId) {\n if (this.value === \"constructor\") {\n this.raise(this.start, \"Classes can't have an element named '#constructor'\");\n }\n element.computed = false;\n element.key = this.parsePrivateIdent();\n } else {\n this.parsePropertyName(element);\n }\n};\n\npp$8.parseClassMethod = function(method, isGenerator, isAsync, allowsDirectSuper) {\n // Check key and flags\n var key = method.key;\n if (method.kind === \"constructor\") {\n if (isGenerator) { this.raise(key.start, \"Constructor can't be a generator\"); }\n if (isAsync) { this.raise(key.start, \"Constructor can't be an async method\"); }\n } else if (method.static && checkKeyName(method, \"prototype\")) {\n this.raise(key.start, \"Classes may not have a static property named prototype\");\n }\n\n // Parse value\n var value = method.value = this.parseMethod(isGenerator, isAsync, allowsDirectSuper);\n\n // Check value\n if (method.kind === \"get\" && value.params.length !== 0)\n { this.raiseRecoverable(value.start, \"getter should have no params\"); }\n if (method.kind === \"set\" && value.params.length !== 1)\n { this.raiseRecoverable(value.start, \"setter should have exactly one param\"); }\n if (method.kind === \"set\" && value.params[0].type === \"RestElement\")\n { this.raiseRecoverable(value.params[0].start, \"Setter cannot use rest params\"); }\n\n return this.finishNode(method, \"MethodDefinition\")\n};\n\npp$8.parseClassField = function(field) {\n if (checkKeyName(field, \"constructor\")) {\n this.raise(field.key.start, \"Classes can't have a field named 'constructor'\");\n } else if (field.static && checkKeyName(field, \"prototype\")) {\n this.raise(field.key.start, \"Classes can't have a static field named 'prototype'\");\n }\n\n if (this.eat(types$1.eq)) {\n // To raise SyntaxError if 'arguments' exists in the initializer.\n this.enterScope(SCOPE_CLASS_FIELD_INIT | SCOPE_SUPER);\n field.value = this.parseMaybeAssign();\n this.exitScope();\n } else {\n field.value = null;\n }\n this.semicolon();\n\n return this.finishNode(field, \"PropertyDefinition\")\n};\n\npp$8.parseClassStaticBlock = function(node) {\n node.body = [];\n\n var oldLabels = this.labels;\n this.labels = [];\n this.enterScope(SCOPE_CLASS_STATIC_BLOCK | SCOPE_SUPER);\n while (this.type !== types$1.braceR) {\n var stmt = this.parseStatement(null);\n node.body.push(stmt);\n }\n this.next();\n this.exitScope();\n this.labels = oldLabels;\n\n return this.finishNode(node, \"StaticBlock\")\n};\n\npp$8.parseClassId = function(node, isStatement) {\n if (this.type === types$1.name) {\n node.id = this.parseIdent();\n if (isStatement)\n { this.checkLValSimple(node.id, BIND_LEXICAL, false); }\n } else {\n if (isStatement === true)\n { this.unexpected(); }\n node.id = null;\n }\n};\n\npp$8.parseClassSuper = function(node) {\n node.superClass = this.eat(types$1._extends) ? this.parseExprSubscripts(null, false) : null;\n};\n\npp$8.enterClassBody = function() {\n var element = {declared: Object.create(null), used: []};\n this.privateNameStack.push(element);\n return element.declared\n};\n\npp$8.exitClassBody = function() {\n var ref = this.privateNameStack.pop();\n var declared = ref.declared;\n var used = ref.used;\n if (!this.options.checkPrivateFields) { return }\n var len = this.privateNameStack.length;\n var parent = len === 0 ? null : this.privateNameStack[len - 1];\n for (var i = 0; i < used.length; ++i) {\n var id = used[i];\n if (!hasOwn(declared, id.name)) {\n if (parent) {\n parent.used.push(id);\n } else {\n this.raiseRecoverable(id.start, (\"Private field '#\" + (id.name) + \"' must be declared in an enclosing class\"));\n }\n }\n }\n};\n\nfunction isPrivateNameConflicted(privateNameMap, element) {\n var name = element.key.name;\n var curr = privateNameMap[name];\n\n var next = \"true\";\n if (element.type === \"MethodDefinition\" && (element.kind === \"get\" || element.kind === \"set\")) {\n next = (element.static ? \"s\" : \"i\") + element.kind;\n }\n\n // `class { get #a(){}; static set #a(_){} }` is also conflict.\n if (\n curr === \"iget\" && next === \"iset\" ||\n curr === \"iset\" && next === \"iget\" ||\n curr === \"sget\" && next === \"sset\" ||\n curr === \"sset\" && next === \"sget\"\n ) {\n privateNameMap[name] = \"true\";\n return false\n } else if (!curr) {\n privateNameMap[name] = next;\n return false\n } else {\n return true\n }\n}\n\nfunction checkKeyName(node, name) {\n var computed = node.computed;\n var key = node.key;\n return !computed && (\n key.type === \"Identifier\" && key.name === name ||\n key.type === \"Literal\" && key.value === name\n )\n}\n\n// Parses module export declaration.\n\npp$8.parseExportAllDeclaration = function(node, exports) {\n if (this.options.ecmaVersion >= 11) {\n if (this.eatContextual(\"as\")) {\n node.exported = this.parseModuleExportName();\n this.checkExport(exports, node.exported, this.lastTokStart);\n } else {\n node.exported = null;\n }\n }\n this.expectContextual(\"from\");\n if (this.type !== types$1.string) { this.unexpected(); }\n node.source = this.parseExprAtom();\n if (this.options.ecmaVersion >= 16)\n { node.attributes = this.parseWithClause(); }\n this.semicolon();\n return this.finishNode(node, \"ExportAllDeclaration\")\n};\n\npp$8.parseExport = function(node, exports) {\n this.next();\n // export * from '...'\n if (this.eat(types$1.star)) {\n return this.parseExportAllDeclaration(node, exports)\n }\n if (this.eat(types$1._default)) { // export default ...\n this.checkExport(exports, \"default\", this.lastTokStart);\n node.declaration = this.parseExportDefaultDeclaration();\n return this.finishNode(node, \"ExportDefaultDeclaration\")\n }\n // export var|const|let|function|class ...\n if (this.shouldParseExportStatement()) {\n node.declaration = this.parseExportDeclaration(node);\n if (node.declaration.type === \"VariableDeclaration\")\n { this.checkVariableExport(exports, node.declaration.declarations); }\n else\n { this.checkExport(exports, node.declaration.id, node.declaration.id.start); }\n node.specifiers = [];\n node.source = null;\n if (this.options.ecmaVersion >= 16)\n { node.attributes = []; }\n } else { // export { x, y as z } [from '...']\n node.declaration = null;\n node.specifiers = this.parseExportSpecifiers(exports);\n if (this.eatContextual(\"from\")) {\n if (this.type !== types$1.string) { this.unexpected(); }\n node.source = this.parseExprAtom();\n if (this.options.ecmaVersion >= 16)\n { node.attributes = this.parseWithClause(); }\n } else {\n for (var i = 0, list = node.specifiers; i < list.length; i += 1) {\n // check for keywords used as local names\n var spec = list[i];\n\n this.checkUnreserved(spec.local);\n // check if export is defined\n this.checkLocalExport(spec.local);\n\n if (spec.local.type === \"Literal\") {\n this.raise(spec.local.start, \"A string literal cannot be used as an exported binding without `from`.\");\n }\n }\n\n node.source = null;\n if (this.options.ecmaVersion >= 16)\n { node.attributes = []; }\n }\n this.semicolon();\n }\n return this.finishNode(node, \"ExportNamedDeclaration\")\n};\n\npp$8.parseExportDeclaration = function(node) {\n return this.parseStatement(null)\n};\n\npp$8.parseExportDefaultDeclaration = function() {\n var isAsync;\n if (this.type === types$1._function || (isAsync = this.isAsyncFunction())) {\n var fNode = this.startNode();\n this.next();\n if (isAsync) { this.next(); }\n return this.parseFunction(fNode, FUNC_STATEMENT | FUNC_NULLABLE_ID, false, isAsync)\n } else if (this.type === types$1._class) {\n var cNode = this.startNode();\n return this.parseClass(cNode, \"nullableID\")\n } else {\n var declaration = this.parseMaybeAssign();\n this.semicolon();\n return declaration\n }\n};\n\npp$8.checkExport = function(exports, name, pos) {\n if (!exports) { return }\n if (typeof name !== \"string\")\n { name = name.type === \"Identifier\" ? name.name : name.value; }\n if (hasOwn(exports, name))\n { this.raiseRecoverable(pos, \"Duplicate export '\" + name + \"'\"); }\n exports[name] = true;\n};\n\npp$8.checkPatternExport = function(exports, pat) {\n var type = pat.type;\n if (type === \"Identifier\")\n { this.checkExport(exports, pat, pat.start); }\n else if (type === \"ObjectPattern\")\n { for (var i = 0, list = pat.properties; i < list.length; i += 1)\n {\n var prop = list[i];\n\n this.checkPatternExport(exports, prop);\n } }\n else if (type === \"ArrayPattern\")\n { for (var i$1 = 0, list$1 = pat.elements; i$1 < list$1.length; i$1 += 1) {\n var elt = list$1[i$1];\n\n if (elt) { this.checkPatternExport(exports, elt); }\n } }\n else if (type === \"Property\")\n { this.checkPatternExport(exports, pat.value); }\n else if (type === \"AssignmentPattern\")\n { this.checkPatternExport(exports, pat.left); }\n else if (type === \"RestElement\")\n { this.checkPatternExport(exports, pat.argument); }\n};\n\npp$8.checkVariableExport = function(exports, decls) {\n if (!exports) { return }\n for (var i = 0, list = decls; i < list.length; i += 1)\n {\n var decl = list[i];\n\n this.checkPatternExport(exports, decl.id);\n }\n};\n\npp$8.shouldParseExportStatement = function() {\n return this.type.keyword === \"var\" ||\n this.type.keyword === \"const\" ||\n this.type.keyword === \"class\" ||\n this.type.keyword === \"function\" ||\n this.isLet() ||\n this.isAsyncFunction()\n};\n\n// Parses a comma-separated list of module exports.\n\npp$8.parseExportSpecifier = function(exports) {\n var node = this.startNode();\n node.local = this.parseModuleExportName();\n\n node.exported = this.eatContextual(\"as\") ? this.parseModuleExportName() : node.local;\n this.checkExport(\n exports,\n node.exported,\n node.exported.start\n );\n\n return this.finishNode(node, \"ExportSpecifier\")\n};\n\npp$8.parseExportSpecifiers = function(exports) {\n var nodes = [], first = true;\n // export { x, y as z } [from '...']\n this.expect(types$1.braceL);\n while (!this.eat(types$1.braceR)) {\n if (!first) {\n this.expect(types$1.comma);\n if (this.afterTrailingComma(types$1.braceR)) { break }\n } else { first = false; }\n\n nodes.push(this.parseExportSpecifier(exports));\n }\n return nodes\n};\n\n// Parses import declaration.\n\npp$8.parseImport = function(node) {\n this.next();\n\n // import '...'\n if (this.type === types$1.string) {\n node.specifiers = empty$1;\n node.source = this.parseExprAtom();\n } else {\n node.specifiers = this.parseImportSpecifiers();\n this.expectContextual(\"from\");\n node.source = this.type === types$1.string ? this.parseExprAtom() : this.unexpected();\n }\n if (this.options.ecmaVersion >= 16)\n { node.attributes = this.parseWithClause(); }\n this.semicolon();\n return this.finishNode(node, \"ImportDeclaration\")\n};\n\n// Parses a comma-separated list of module imports.\n\npp$8.parseImportSpecifier = function() {\n var node = this.startNode();\n node.imported = this.parseModuleExportName();\n\n if (this.eatContextual(\"as\")) {\n node.local = this.parseIdent();\n } else {\n this.checkUnreserved(node.imported);\n node.local = node.imported;\n }\n this.checkLValSimple(node.local, BIND_LEXICAL);\n\n return this.finishNode(node, \"ImportSpecifier\")\n};\n\npp$8.parseImportDefaultSpecifier = function() {\n // import defaultObj, { x, y as z } from '...'\n var node = this.startNode();\n node.local = this.parseIdent();\n this.checkLValSimple(node.local, BIND_LEXICAL);\n return this.finishNode(node, \"ImportDefaultSpecifier\")\n};\n\npp$8.parseImportNamespaceSpecifier = function() {\n var node = this.startNode();\n this.next();\n this.expectContextual(\"as\");\n node.local = this.parseIdent();\n this.checkLValSimple(node.local, BIND_LEXICAL);\n return this.finishNode(node, \"ImportNamespaceSpecifier\")\n};\n\npp$8.parseImportSpecifiers = function() {\n var nodes = [], first = true;\n if (this.type === types$1.name) {\n nodes.push(this.parseImportDefaultSpecifier());\n if (!this.eat(types$1.comma)) { return nodes }\n }\n if (this.type === types$1.star) {\n nodes.push(this.parseImportNamespaceSpecifier());\n return nodes\n }\n this.expect(types$1.braceL);\n while (!this.eat(types$1.braceR)) {\n if (!first) {\n this.expect(types$1.comma);\n if (this.afterTrailingComma(types$1.braceR)) { break }\n } else { first = false; }\n\n nodes.push(this.parseImportSpecifier());\n }\n return nodes\n};\n\npp$8.parseWithClause = function() {\n var nodes = [];\n if (!this.eat(types$1._with)) {\n return nodes\n }\n this.expect(types$1.braceL);\n var attributeKeys = {};\n var first = true;\n while (!this.eat(types$1.braceR)) {\n if (!first) {\n this.expect(types$1.comma);\n if (this.afterTrailingComma(types$1.braceR)) { break }\n } else { first = false; }\n\n var attr = this.parseImportAttribute();\n var keyName = attr.key.type === \"Identifier\" ? attr.key.name : attr.key.value;\n if (hasOwn(attributeKeys, keyName))\n { this.raiseRecoverable(attr.key.start, \"Duplicate attribute key '\" + keyName + \"'\"); }\n attributeKeys[keyName] = true;\n nodes.push(attr);\n }\n return nodes\n};\n\npp$8.parseImportAttribute = function() {\n var node = this.startNode();\n node.key = this.type === types$1.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== \"never\");\n this.expect(types$1.colon);\n if (this.type !== types$1.string) {\n this.unexpected();\n }\n node.value = this.parseExprAtom();\n return this.finishNode(node, \"ImportAttribute\")\n};\n\npp$8.parseModuleExportName = function() {\n if (this.options.ecmaVersion >= 13 && this.type === types$1.string) {\n var stringLiteral = this.parseLiteral(this.value);\n if (loneSurrogate.test(stringLiteral.value)) {\n this.raise(stringLiteral.start, \"An export name cannot include a lone surrogate.\");\n }\n return stringLiteral\n }\n return this.parseIdent(true)\n};\n\n// Set `ExpressionStatement#directive` property for directive prologues.\npp$8.adaptDirectivePrologue = function(statements) {\n for (var i = 0; i < statements.length && this.isDirectiveCandidate(statements[i]); ++i) {\n statements[i].directive = statements[i].expression.raw.slice(1, -1);\n }\n};\npp$8.isDirectiveCandidate = function(statement) {\n return (\n this.options.ecmaVersion >= 5 &&\n statement.type === \"ExpressionStatement\" &&\n statement.expression.type === \"Literal\" &&\n typeof statement.expression.value === \"string\" &&\n // Reject parenthesized strings.\n (this.input[statement.start] === \"\\\"\" || this.input[statement.start] === \"'\")\n )\n};\n\nvar pp$7 = Parser.prototype;\n\n// Convert existing expression atom to assignable pattern\n// if possible.\n\npp$7.toAssignable = function(node, isBinding, refDestructuringErrors) {\n if (this.options.ecmaVersion >= 6 && node) {\n switch (node.type) {\n case \"Identifier\":\n if (this.inAsync && node.name === \"await\")\n { this.raise(node.start, \"Cannot use 'await' as identifier inside an async function\"); }\n break\n\n case \"ObjectPattern\":\n case \"ArrayPattern\":\n case \"AssignmentPattern\":\n case \"RestElement\":\n break\n\n case \"ObjectExpression\":\n node.type = \"ObjectPattern\";\n if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n for (var i = 0, list = node.properties; i < list.length; i += 1) {\n var prop = list[i];\n\n this.toAssignable(prop, isBinding);\n // Early error:\n // AssignmentRestProperty[Yield, Await] :\n // `...` DestructuringAssignmentTarget[Yield, Await]\n //\n // It is a Syntax Error if |DestructuringAssignmentTarget| is an |ArrayLiteral| or an |ObjectLiteral|.\n if (\n prop.type === \"RestElement\" &&\n (prop.argument.type === \"ArrayPattern\" || prop.argument.type === \"ObjectPattern\")\n ) {\n this.raise(prop.argument.start, \"Unexpected token\");\n }\n }\n break\n\n case \"Property\":\n // AssignmentProperty has type === \"Property\"\n if (node.kind !== \"init\") { this.raise(node.key.start, \"Object pattern can't contain getter or setter\"); }\n this.toAssignable(node.value, isBinding);\n break\n\n case \"ArrayExpression\":\n node.type = \"ArrayPattern\";\n if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n this.toAssignableList(node.elements, isBinding);\n break\n\n case \"SpreadElement\":\n node.type = \"RestElement\";\n this.toAssignable(node.argument, isBinding);\n if (node.argument.type === \"AssignmentPattern\")\n { this.raise(node.argument.start, \"Rest elements cannot have a default value\"); }\n break\n\n case \"AssignmentExpression\":\n if (node.operator !== \"=\") { this.raise(node.left.end, \"Only '=' operator can be used for specifying default value.\"); }\n node.type = \"AssignmentPattern\";\n delete node.operator;\n this.toAssignable(node.left, isBinding);\n break\n\n case \"ParenthesizedExpression\":\n this.toAssignable(node.expression, isBinding, refDestructuringErrors);\n break\n\n case \"ChainExpression\":\n this.raiseRecoverable(node.start, \"Optional chaining cannot appear in left-hand side\");\n break\n\n case \"MemberExpression\":\n if (!isBinding) { break }\n\n default:\n this.raise(node.start, \"Assigning to rvalue\");\n }\n } else if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n return node\n};\n\n// Convert list of expression atoms to binding list.\n\npp$7.toAssignableList = function(exprList, isBinding) {\n var end = exprList.length;\n for (var i = 0; i < end; i++) {\n var elt = exprList[i];\n if (elt) { this.toAssignable(elt, isBinding); }\n }\n if (end) {\n var last = exprList[end - 1];\n if (this.options.ecmaVersion === 6 && isBinding && last && last.type === \"RestElement\" && last.argument.type !== \"Identifier\")\n { this.unexpected(last.argument.start); }\n }\n return exprList\n};\n\n// Parses spread element.\n\npp$7.parseSpread = function(refDestructuringErrors) {\n var node = this.startNode();\n this.next();\n node.argument = this.parseMaybeAssign(false, refDestructuringErrors);\n return this.finishNode(node, \"SpreadElement\")\n};\n\npp$7.parseRestBinding = function() {\n var node = this.startNode();\n this.next();\n\n // RestElement inside of a function parameter must be an identifier\n if (this.options.ecmaVersion === 6 && this.type !== types$1.name)\n { this.unexpected(); }\n\n node.argument = this.parseBindingAtom();\n\n return this.finishNode(node, \"RestElement\")\n};\n\n// Parses lvalue (assignable) atom.\n\npp$7.parseBindingAtom = function() {\n if (this.options.ecmaVersion >= 6) {\n switch (this.type) {\n case types$1.bracketL:\n var node = this.startNode();\n this.next();\n node.elements = this.parseBindingList(types$1.bracketR, true, true);\n return this.finishNode(node, \"ArrayPattern\")\n\n case types$1.braceL:\n return this.parseObj(true)\n }\n }\n return this.parseIdent()\n};\n\npp$7.parseBindingList = function(close, allowEmpty, allowTrailingComma, allowModifiers) {\n var elts = [], first = true;\n while (!this.eat(close)) {\n if (first) { first = false; }\n else { this.expect(types$1.comma); }\n if (allowEmpty && this.type === types$1.comma) {\n elts.push(null);\n } else if (allowTrailingComma && this.afterTrailingComma(close)) {\n break\n } else if (this.type === types$1.ellipsis) {\n var rest = this.parseRestBinding();\n this.parseBindingListItem(rest);\n elts.push(rest);\n if (this.type === types$1.comma) { this.raiseRecoverable(this.start, \"Comma is not permitted after the rest element\"); }\n this.expect(close);\n break\n } else {\n elts.push(this.parseAssignableListItem(allowModifiers));\n }\n }\n return elts\n};\n\npp$7.parseAssignableListItem = function(allowModifiers) {\n var elem = this.parseMaybeDefault(this.start, this.startLoc);\n this.parseBindingListItem(elem);\n return elem\n};\n\npp$7.parseBindingListItem = function(param) {\n return param\n};\n\n// Parses assignment pattern around given atom if possible.\n\npp$7.parseMaybeDefault = function(startPos, startLoc, left) {\n left = left || this.parseBindingAtom();\n if (this.options.ecmaVersion < 6 || !this.eat(types$1.eq)) { return left }\n var node = this.startNodeAt(startPos, startLoc);\n node.left = left;\n node.right = this.parseMaybeAssign();\n return this.finishNode(node, \"AssignmentPattern\")\n};\n\n// The following three functions all verify that a node is an lvalue —\n// something that can be bound, or assigned to. In order to do so, they perform\n// a variety of checks:\n//\n// - Check that none of the bound/assigned-to identifiers are reserved words.\n// - Record name declarations for bindings in the appropriate scope.\n// - Check duplicate argument names, if checkClashes is set.\n//\n// If a complex binding pattern is encountered (e.g., object and array\n// destructuring), the entire pattern is recursively checked.\n//\n// There are three versions of checkLVal*() appropriate for different\n// circumstances:\n//\n// - checkLValSimple() shall be used if the syntactic construct supports\n// nothing other than identifiers and member expressions. Parenthesized\n// expressions are also correctly handled. This is generally appropriate for\n// constructs for which the spec says\n//\n// > It is a Syntax Error if AssignmentTargetType of [the production] is not\n// > simple.\n//\n// It is also appropriate for checking if an identifier is valid and not\n// defined elsewhere, like import declarations or function/class identifiers.\n//\n// Examples where this is used include:\n// a += …;\n// import a from '…';\n// where a is the node to be checked.\n//\n// - checkLValPattern() shall be used if the syntactic construct supports\n// anything checkLValSimple() supports, as well as object and array\n// destructuring patterns. This is generally appropriate for constructs for\n// which the spec says\n//\n// > It is a Syntax Error if [the production] is neither an ObjectLiteral nor\n// > an ArrayLiteral and AssignmentTargetType of [the production] is not\n// > simple.\n//\n// Examples where this is used include:\n// (a = …);\n// const a = …;\n// try { … } catch (a) { … }\n// where a is the node to be checked.\n//\n// - checkLValInnerPattern() shall be used if the syntactic construct supports\n// anything checkLValPattern() supports, as well as default assignment\n// patterns, rest elements, and other constructs that may appear within an\n// object or array destructuring pattern.\n//\n// As a special case, function parameters also use checkLValInnerPattern(),\n// as they also support defaults and rest constructs.\n//\n// These functions deliberately support both assignment and binding constructs,\n// as the logic for both is exceedingly similar. If the node is the target of\n// an assignment, then bindingType should be set to BIND_NONE. Otherwise, it\n// should be set to the appropriate BIND_* constant, like BIND_VAR or\n// BIND_LEXICAL.\n//\n// If the function is called with a non-BIND_NONE bindingType, then\n// additionally a checkClashes object may be specified to allow checking for\n// duplicate argument names. checkClashes is ignored if the provided construct\n// is an assignment (i.e., bindingType is BIND_NONE).\n\npp$7.checkLValSimple = function(expr, bindingType, checkClashes) {\n if ( bindingType === void 0 ) bindingType = BIND_NONE;\n\n var isBind = bindingType !== BIND_NONE;\n\n switch (expr.type) {\n case \"Identifier\":\n if (this.strict && this.reservedWordsStrictBind.test(expr.name))\n { this.raiseRecoverable(expr.start, (isBind ? \"Binding \" : \"Assigning to \") + expr.name + \" in strict mode\"); }\n if (isBind) {\n if (bindingType === BIND_LEXICAL && expr.name === \"let\")\n { this.raiseRecoverable(expr.start, \"let is disallowed as a lexically bound name\"); }\n if (checkClashes) {\n if (hasOwn(checkClashes, expr.name))\n { this.raiseRecoverable(expr.start, \"Argument name clash\"); }\n checkClashes[expr.name] = true;\n }\n if (bindingType !== BIND_OUTSIDE) { this.declareName(expr.name, bindingType, expr.start); }\n }\n break\n\n case \"ChainExpression\":\n this.raiseRecoverable(expr.start, \"Optional chaining cannot appear in left-hand side\");\n break\n\n case \"MemberExpression\":\n if (isBind) { this.raiseRecoverable(expr.start, \"Binding member expression\"); }\n break\n\n case \"ParenthesizedExpression\":\n if (isBind) { this.raiseRecoverable(expr.start, \"Binding parenthesized expression\"); }\n return this.checkLValSimple(expr.expression, bindingType, checkClashes)\n\n default:\n this.raise(expr.start, (isBind ? \"Binding\" : \"Assigning to\") + \" rvalue\");\n }\n};\n\npp$7.checkLValPattern = function(expr, bindingType, checkClashes) {\n if ( bindingType === void 0 ) bindingType = BIND_NONE;\n\n switch (expr.type) {\n case \"ObjectPattern\":\n for (var i = 0, list = expr.properties; i < list.length; i += 1) {\n var prop = list[i];\n\n this.checkLValInnerPattern(prop, bindingType, checkClashes);\n }\n break\n\n case \"ArrayPattern\":\n for (var i$1 = 0, list$1 = expr.elements; i$1 < list$1.length; i$1 += 1) {\n var elem = list$1[i$1];\n\n if (elem) { this.checkLValInnerPattern(elem, bindingType, checkClashes); }\n }\n break\n\n default:\n this.checkLValSimple(expr, bindingType, checkClashes);\n }\n};\n\npp$7.checkLValInnerPattern = function(expr, bindingType, checkClashes) {\n if ( bindingType === void 0 ) bindingType = BIND_NONE;\n\n switch (expr.type) {\n case \"Property\":\n // AssignmentProperty has type === \"Property\"\n this.checkLValInnerPattern(expr.value, bindingType, checkClashes);\n break\n\n case \"AssignmentPattern\":\n this.checkLValPattern(expr.left, bindingType, checkClashes);\n break\n\n case \"RestElement\":\n this.checkLValPattern(expr.argument, bindingType, checkClashes);\n break\n\n default:\n this.checkLValPattern(expr, bindingType, checkClashes);\n }\n};\n\n// The algorithm used to determine whether a regexp can appear at a\n// given point in the program is loosely based on sweet.js' approach.\n// See https://github.com/mozilla/sweet.js/wiki/design\n\n\nvar TokContext = function TokContext(token, isExpr, preserveSpace, override, generator) {\n this.token = token;\n this.isExpr = !!isExpr;\n this.preserveSpace = !!preserveSpace;\n this.override = override;\n this.generator = !!generator;\n};\n\nvar types = {\n b_stat: new TokContext(\"{\", false),\n b_expr: new TokContext(\"{\", true),\n b_tmpl: new TokContext(\"${\", false),\n p_stat: new TokContext(\"(\", false),\n p_expr: new TokContext(\"(\", true),\n q_tmpl: new TokContext(\"`\", true, true, function (p) { return p.tryReadTemplateToken(); }),\n f_stat: new TokContext(\"function\", false),\n f_expr: new TokContext(\"function\", true),\n f_expr_gen: new TokContext(\"function\", true, false, null, true),\n f_gen: new TokContext(\"function\", false, false, null, true)\n};\n\nvar pp$6 = Parser.prototype;\n\npp$6.initialContext = function() {\n return [types.b_stat]\n};\n\npp$6.curContext = function() {\n return this.context[this.context.length - 1]\n};\n\npp$6.braceIsBlock = function(prevType) {\n var parent = this.curContext();\n if (parent === types.f_expr || parent === types.f_stat)\n { return true }\n if (prevType === types$1.colon && (parent === types.b_stat || parent === types.b_expr))\n { return !parent.isExpr }\n\n // The check for `tt.name && exprAllowed` detects whether we are\n // after a `yield` or `of` construct. See the `updateContext` for\n // `tt.name`.\n if (prevType === types$1._return || prevType === types$1.name && this.exprAllowed)\n { return lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) }\n if (prevType === types$1._else || prevType === types$1.semi || prevType === types$1.eof || prevType === types$1.parenR || prevType === types$1.arrow)\n { return true }\n if (prevType === types$1.braceL)\n { return parent === types.b_stat }\n if (prevType === types$1._var || prevType === types$1._const || prevType === types$1.name)\n { return false }\n return !this.exprAllowed\n};\n\npp$6.inGeneratorContext = function() {\n for (var i = this.context.length - 1; i >= 1; i--) {\n var context = this.context[i];\n if (context.token === \"function\")\n { return context.generator }\n }\n return false\n};\n\npp$6.updateContext = function(prevType) {\n var update, type = this.type;\n if (type.keyword && prevType === types$1.dot)\n { this.exprAllowed = false; }\n else if (update = type.updateContext)\n { update.call(this, prevType); }\n else\n { this.exprAllowed = type.beforeExpr; }\n};\n\n// Used to handle edge cases when token context could not be inferred correctly during tokenization phase\n\npp$6.overrideContext = function(tokenCtx) {\n if (this.curContext() !== tokenCtx) {\n this.context[this.context.length - 1] = tokenCtx;\n }\n};\n\n// Token-specific context update code\n\ntypes$1.parenR.updateContext = types$1.braceR.updateContext = function() {\n if (this.context.length === 1) {\n this.exprAllowed = true;\n return\n }\n var out = this.context.pop();\n if (out === types.b_stat && this.curContext().token === \"function\") {\n out = this.context.pop();\n }\n this.exprAllowed = !out.isExpr;\n};\n\ntypes$1.braceL.updateContext = function(prevType) {\n this.context.push(this.braceIsBlock(prevType) ? types.b_stat : types.b_expr);\n this.exprAllowed = true;\n};\n\ntypes$1.dollarBraceL.updateContext = function() {\n this.context.push(types.b_tmpl);\n this.exprAllowed = true;\n};\n\ntypes$1.parenL.updateContext = function(prevType) {\n var statementParens = prevType === types$1._if || prevType === types$1._for || prevType === types$1._with || prevType === types$1._while;\n this.context.push(statementParens ? types.p_stat : types.p_expr);\n this.exprAllowed = true;\n};\n\ntypes$1.incDec.updateContext = function() {\n // tokExprAllowed stays unchanged\n};\n\ntypes$1._function.updateContext = types$1._class.updateContext = function(prevType) {\n if (prevType.beforeExpr && prevType !== types$1._else &&\n !(prevType === types$1.semi && this.curContext() !== types.p_stat) &&\n !(prevType === types$1._return && lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) &&\n !((prevType === types$1.colon || prevType === types$1.braceL) && this.curContext() === types.b_stat))\n { this.context.push(types.f_expr); }\n else\n { this.context.push(types.f_stat); }\n this.exprAllowed = false;\n};\n\ntypes$1.colon.updateContext = function() {\n if (this.curContext().token === \"function\") { this.context.pop(); }\n this.exprAllowed = true;\n};\n\ntypes$1.backQuote.updateContext = function() {\n if (this.curContext() === types.q_tmpl)\n { this.context.pop(); }\n else\n { this.context.push(types.q_tmpl); }\n this.exprAllowed = false;\n};\n\ntypes$1.star.updateContext = function(prevType) {\n if (prevType === types$1._function) {\n var index = this.context.length - 1;\n if (this.context[index] === types.f_expr)\n { this.context[index] = types.f_expr_gen; }\n else\n { this.context[index] = types.f_gen; }\n }\n this.exprAllowed = true;\n};\n\ntypes$1.name.updateContext = function(prevType) {\n var allowed = false;\n if (this.options.ecmaVersion >= 6 && prevType !== types$1.dot) {\n if (this.value === \"of\" && !this.exprAllowed ||\n this.value === \"yield\" && this.inGeneratorContext())\n { allowed = true; }\n }\n this.exprAllowed = allowed;\n};\n\n// A recursive descent parser operates by defining functions for all\n// syntactic elements, and recursively calling those, each function\n// advancing the input stream and returning an AST node. Precedence\n// of constructs (for example, the fact that `!x[1]` means `!(x[1])`\n// instead of `(!x)[1]` is handled by the fact that the parser\n// function that parses unary prefix operators is called first, and\n// in turn calls the function that parses `[]` subscripts — that\n// way, it'll receive the node for `x[1]` already parsed, and wraps\n// *that* in the unary operator node.\n//\n// Acorn uses an [operator precedence parser][opp] to handle binary\n// operator precedence, because it is much more compact than using\n// the technique outlined above, which uses different, nesting\n// functions to specify precedence, for all of the ten binary\n// precedence levels that JavaScript defines.\n//\n// [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser\n\n\nvar pp$5 = Parser.prototype;\n\n// Check if property name clashes with already added.\n// Object/class getters and setters are not allowed to clash —\n// either with each other or with an init property — and in\n// strict mode, init properties are also not allowed to be repeated.\n\npp$5.checkPropClash = function(prop, propHash, refDestructuringErrors) {\n if (this.options.ecmaVersion >= 9 && prop.type === \"SpreadElement\")\n { return }\n if (this.options.ecmaVersion >= 6 && (prop.computed || prop.method || prop.shorthand))\n { return }\n var key = prop.key;\n var name;\n switch (key.type) {\n case \"Identifier\": name = key.name; break\n case \"Literal\": name = String(key.value); break\n default: return\n }\n var kind = prop.kind;\n if (this.options.ecmaVersion >= 6) {\n if (name === \"__proto__\" && kind === \"init\") {\n if (propHash.proto) {\n if (refDestructuringErrors) {\n if (refDestructuringErrors.doubleProto < 0) {\n refDestructuringErrors.doubleProto = key.start;\n }\n } else {\n this.raiseRecoverable(key.start, \"Redefinition of __proto__ property\");\n }\n }\n propHash.proto = true;\n }\n return\n }\n name = \"$\" + name;\n var other = propHash[name];\n if (other) {\n var redefinition;\n if (kind === \"init\") {\n redefinition = this.strict && other.init || other.get || other.set;\n } else {\n redefinition = other.init || other[kind];\n }\n if (redefinition)\n { this.raiseRecoverable(key.start, \"Redefinition of property\"); }\n } else {\n other = propHash[name] = {\n init: false,\n get: false,\n set: false\n };\n }\n other[kind] = true;\n};\n\n// ### Expression parsing\n\n// These nest, from the most general expression type at the top to\n// 'atomic', nondivisible expression types at the bottom. Most of\n// the functions will simply let the function(s) below them parse,\n// and, *if* the syntactic construct they handle is present, wrap\n// the AST node that the inner parser gave them in another node.\n\n// Parse a full expression. The optional arguments are used to\n// forbid the `in` operator (in for loops initalization expressions)\n// and provide reference for storing '=' operator inside shorthand\n// property assignment in contexts where both object expression\n// and object pattern might appear (so it's possible to raise\n// delayed syntax error at correct position).\n\npp$5.parseExpression = function(forInit, refDestructuringErrors) {\n var startPos = this.start, startLoc = this.startLoc;\n var expr = this.parseMaybeAssign(forInit, refDestructuringErrors);\n if (this.type === types$1.comma) {\n var node = this.startNodeAt(startPos, startLoc);\n node.expressions = [expr];\n while (this.eat(types$1.comma)) { node.expressions.push(this.parseMaybeAssign(forInit, refDestructuringErrors)); }\n return this.finishNode(node, \"SequenceExpression\")\n }\n return expr\n};\n\n// Parse an assignment expression. This includes applications of\n// operators like `+=`.\n\npp$5.parseMaybeAssign = function(forInit, refDestructuringErrors, afterLeftParse) {\n if (this.isContextual(\"yield\")) {\n if (this.inGenerator) { return this.parseYield(forInit) }\n // The tokenizer will assume an expression is allowed after\n // `yield`, but this isn't that kind of yield\n else { this.exprAllowed = false; }\n }\n\n var ownDestructuringErrors = false, oldParenAssign = -1, oldTrailingComma = -1, oldDoubleProto = -1;\n if (refDestructuringErrors) {\n oldParenAssign = refDestructuringErrors.parenthesizedAssign;\n oldTrailingComma = refDestructuringErrors.trailingComma;\n oldDoubleProto = refDestructuringErrors.doubleProto;\n refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = -1;\n } else {\n refDestructuringErrors = new DestructuringErrors;\n ownDestructuringErrors = true;\n }\n\n var startPos = this.start, startLoc = this.startLoc;\n if (this.type === types$1.parenL || this.type === types$1.name) {\n this.potentialArrowAt = this.start;\n this.potentialArrowInForAwait = forInit === \"await\";\n }\n var left = this.parseMaybeConditional(forInit, refDestructuringErrors);\n if (afterLeftParse) { left = afterLeftParse.call(this, left, startPos, startLoc); }\n if (this.type.isAssign) {\n var node = this.startNodeAt(startPos, startLoc);\n node.operator = this.value;\n if (this.type === types$1.eq)\n { left = this.toAssignable(left, false, refDestructuringErrors); }\n if (!ownDestructuringErrors) {\n refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = refDestructuringErrors.doubleProto = -1;\n }\n if (refDestructuringErrors.shorthandAssign >= left.start)\n { refDestructuringErrors.shorthandAssign = -1; } // reset because shorthand default was used correctly\n if (this.type === types$1.eq)\n { this.checkLValPattern(left); }\n else\n { this.checkLValSimple(left); }\n node.left = left;\n this.next();\n node.right = this.parseMaybeAssign(forInit);\n if (oldDoubleProto > -1) { refDestructuringErrors.doubleProto = oldDoubleProto; }\n return this.finishNode(node, \"AssignmentExpression\")\n } else {\n if (ownDestructuringErrors) { this.checkExpressionErrors(refDestructuringErrors, true); }\n }\n if (oldParenAssign > -1) { refDestructuringErrors.parenthesizedAssign = oldParenAssign; }\n if (oldTrailingComma > -1) { refDestructuringErrors.trailingComma = oldTrailingComma; }\n return left\n};\n\n// Parse a ternary conditional (`?:`) operator.\n\npp$5.parseMaybeConditional = function(forInit, refDestructuringErrors) {\n var startPos = this.start, startLoc = this.startLoc;\n var expr = this.parseExprOps(forInit, refDestructuringErrors);\n if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n if (this.eat(types$1.question)) {\n var node = this.startNodeAt(startPos, startLoc);\n node.test = expr;\n node.consequent = this.parseMaybeAssign();\n this.expect(types$1.colon);\n node.alternate = this.parseMaybeAssign(forInit);\n return this.finishNode(node, \"ConditionalExpression\")\n }\n return expr\n};\n\n// Start the precedence parser.\n\npp$5.parseExprOps = function(forInit, refDestructuringErrors) {\n var startPos = this.start, startLoc = this.startLoc;\n var expr = this.parseMaybeUnary(refDestructuringErrors, false, false, forInit);\n if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n return expr.start === startPos && expr.type === \"ArrowFunctionExpression\" ? expr : this.parseExprOp(expr, startPos, startLoc, -1, forInit)\n};\n\n// Parse binary operators with the operator precedence parsing\n// algorithm. `left` is the left-hand side of the operator.\n// `minPrec` provides context that allows the function to stop and\n// defer further parser to one of its callers when it encounters an\n// operator that has a lower precedence than the set it is parsing.\n\npp$5.parseExprOp = function(left, leftStartPos, leftStartLoc, minPrec, forInit) {\n var prec = this.type.binop;\n if (prec != null && (!forInit || this.type !== types$1._in)) {\n if (prec > minPrec) {\n var logical = this.type === types$1.logicalOR || this.type === types$1.logicalAND;\n var coalesce = this.type === types$1.coalesce;\n if (coalesce) {\n // Handle the precedence of `tt.coalesce` as equal to the range of logical expressions.\n // In other words, `node.right` shouldn't contain logical expressions in order to check the mixed error.\n prec = types$1.logicalAND.binop;\n }\n var op = this.value;\n this.next();\n var startPos = this.start, startLoc = this.startLoc;\n var right = this.parseExprOp(this.parseMaybeUnary(null, false, false, forInit), startPos, startLoc, prec, forInit);\n var node = this.buildBinary(leftStartPos, leftStartLoc, left, right, op, logical || coalesce);\n if ((logical && this.type === types$1.coalesce) || (coalesce && (this.type === types$1.logicalOR || this.type === types$1.logicalAND))) {\n this.raiseRecoverable(this.start, \"Logical expressions and coalesce expressions cannot be mixed. Wrap either by parentheses\");\n }\n return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, forInit)\n }\n }\n return left\n};\n\npp$5.buildBinary = function(startPos, startLoc, left, right, op, logical) {\n if (right.type === \"PrivateIdentifier\") { this.raise(right.start, \"Private identifier can only be left side of binary expression\"); }\n var node = this.startNodeAt(startPos, startLoc);\n node.left = left;\n node.operator = op;\n node.right = right;\n return this.finishNode(node, logical ? \"LogicalExpression\" : \"BinaryExpression\")\n};\n\n// Parse unary operators, both prefix and postfix.\n\npp$5.parseMaybeUnary = function(refDestructuringErrors, sawUnary, incDec, forInit) {\n var startPos = this.start, startLoc = this.startLoc, expr;\n if (this.isContextual(\"await\") && this.canAwait) {\n expr = this.parseAwait(forInit);\n sawUnary = true;\n } else if (this.type.prefix) {\n var node = this.startNode(), update = this.type === types$1.incDec;\n node.operator = this.value;\n node.prefix = true;\n this.next();\n node.argument = this.parseMaybeUnary(null, true, update, forInit);\n this.checkExpressionErrors(refDestructuringErrors, true);\n if (update) { this.checkLValSimple(node.argument); }\n else if (this.strict && node.operator === \"delete\" && isLocalVariableAccess(node.argument))\n { this.raiseRecoverable(node.start, \"Deleting local variable in strict mode\"); }\n else if (node.operator === \"delete\" && isPrivateFieldAccess(node.argument))\n { this.raiseRecoverable(node.start, \"Private fields can not be deleted\"); }\n else { sawUnary = true; }\n expr = this.finishNode(node, update ? \"UpdateExpression\" : \"UnaryExpression\");\n } else if (!sawUnary && this.type === types$1.privateId) {\n if ((forInit || this.privateNameStack.length === 0) && this.options.checkPrivateFields) { this.unexpected(); }\n expr = this.parsePrivateIdent();\n // only could be private fields in 'in', such as #x in obj\n if (this.type !== types$1._in) { this.unexpected(); }\n } else {\n expr = this.parseExprSubscripts(refDestructuringErrors, forInit);\n if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n while (this.type.postfix && !this.canInsertSemicolon()) {\n var node$1 = this.startNodeAt(startPos, startLoc);\n node$1.operator = this.value;\n node$1.prefix = false;\n node$1.argument = expr;\n this.checkLValSimple(expr);\n this.next();\n expr = this.finishNode(node$1, \"UpdateExpression\");\n }\n }\n\n if (!incDec && this.eat(types$1.starstar)) {\n if (sawUnary)\n { this.unexpected(this.lastTokStart); }\n else\n { return this.buildBinary(startPos, startLoc, expr, this.parseMaybeUnary(null, false, false, forInit), \"**\", false) }\n } else {\n return expr\n }\n};\n\nfunction isLocalVariableAccess(node) {\n return (\n node.type === \"Identifier\" ||\n node.type === \"ParenthesizedExpression\" && isLocalVariableAccess(node.expression)\n )\n}\n\nfunction isPrivateFieldAccess(node) {\n return (\n node.type === \"MemberExpression\" && node.property.type === \"PrivateIdentifier\" ||\n node.type === \"ChainExpression\" && isPrivateFieldAccess(node.expression) ||\n node.type === \"ParenthesizedExpression\" && isPrivateFieldAccess(node.expression)\n )\n}\n\n// Parse call, dot, and `[]`-subscript expressions.\n\npp$5.parseExprSubscripts = function(refDestructuringErrors, forInit) {\n var startPos = this.start, startLoc = this.startLoc;\n var expr = this.parseExprAtom(refDestructuringErrors, forInit);\n if (expr.type === \"ArrowFunctionExpression\" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== \")\")\n { return expr }\n var result = this.parseSubscripts(expr, startPos, startLoc, false, forInit);\n if (refDestructuringErrors && result.type === \"MemberExpression\") {\n if (refDestructuringErrors.parenthesizedAssign >= result.start) { refDestructuringErrors.parenthesizedAssign = -1; }\n if (refDestructuringErrors.parenthesizedBind >= result.start) { refDestructuringErrors.parenthesizedBind = -1; }\n if (refDestructuringErrors.trailingComma >= result.start) { refDestructuringErrors.trailingComma = -1; }\n }\n return result\n};\n\npp$5.parseSubscripts = function(base, startPos, startLoc, noCalls, forInit) {\n var maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === \"Identifier\" && base.name === \"async\" &&\n this.lastTokEnd === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 &&\n this.potentialArrowAt === base.start;\n var optionalChained = false;\n\n while (true) {\n var element = this.parseSubscript(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit);\n\n if (element.optional) { optionalChained = true; }\n if (element === base || element.type === \"ArrowFunctionExpression\") {\n if (optionalChained) {\n var chainNode = this.startNodeAt(startPos, startLoc);\n chainNode.expression = element;\n element = this.finishNode(chainNode, \"ChainExpression\");\n }\n return element\n }\n\n base = element;\n }\n};\n\npp$5.shouldParseAsyncArrow = function() {\n return !this.canInsertSemicolon() && this.eat(types$1.arrow)\n};\n\npp$5.parseSubscriptAsyncArrow = function(startPos, startLoc, exprList, forInit) {\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, true, forInit)\n};\n\npp$5.parseSubscript = function(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit) {\n var optionalSupported = this.options.ecmaVersion >= 11;\n var optional = optionalSupported && this.eat(types$1.questionDot);\n if (noCalls && optional) { this.raise(this.lastTokStart, \"Optional chaining cannot appear in the callee of new expressions\"); }\n\n var computed = this.eat(types$1.bracketL);\n if (computed || (optional && this.type !== types$1.parenL && this.type !== types$1.backQuote) || this.eat(types$1.dot)) {\n var node = this.startNodeAt(startPos, startLoc);\n node.object = base;\n if (computed) {\n node.property = this.parseExpression();\n this.expect(types$1.bracketR);\n } else if (this.type === types$1.privateId && base.type !== \"Super\") {\n node.property = this.parsePrivateIdent();\n } else {\n node.property = this.parseIdent(this.options.allowReserved !== \"never\");\n }\n node.computed = !!computed;\n if (optionalSupported) {\n node.optional = optional;\n }\n base = this.finishNode(node, \"MemberExpression\");\n } else if (!noCalls && this.eat(types$1.parenL)) {\n var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n this.yieldPos = 0;\n this.awaitPos = 0;\n this.awaitIdentPos = 0;\n var exprList = this.parseExprList(types$1.parenR, this.options.ecmaVersion >= 8, false, refDestructuringErrors);\n if (maybeAsyncArrow && !optional && this.shouldParseAsyncArrow()) {\n this.checkPatternErrors(refDestructuringErrors, false);\n this.checkYieldAwaitInDefaultParams();\n if (this.awaitIdentPos > 0)\n { this.raise(this.awaitIdentPos, \"Cannot use 'await' as identifier inside an async function\"); }\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n this.awaitIdentPos = oldAwaitIdentPos;\n return this.parseSubscriptAsyncArrow(startPos, startLoc, exprList, forInit)\n }\n this.checkExpressionErrors(refDestructuringErrors, true);\n this.yieldPos = oldYieldPos || this.yieldPos;\n this.awaitPos = oldAwaitPos || this.awaitPos;\n this.awaitIdentPos = oldAwaitIdentPos || this.awaitIdentPos;\n var node$1 = this.startNodeAt(startPos, startLoc);\n node$1.callee = base;\n node$1.arguments = exprList;\n if (optionalSupported) {\n node$1.optional = optional;\n }\n base = this.finishNode(node$1, \"CallExpression\");\n } else if (this.type === types$1.backQuote) {\n if (optional || optionalChained) {\n this.raise(this.start, \"Optional chaining cannot appear in the tag of tagged template expressions\");\n }\n var node$2 = this.startNodeAt(startPos, startLoc);\n node$2.tag = base;\n node$2.quasi = this.parseTemplate({isTagged: true});\n base = this.finishNode(node$2, \"TaggedTemplateExpression\");\n }\n return base\n};\n\n// Parse an atomic expression — either a single token that is an\n// expression, an expression started by a keyword like `function` or\n// `new`, or an expression wrapped in punctuation like `()`, `[]`,\n// or `{}`.\n\npp$5.parseExprAtom = function(refDestructuringErrors, forInit, forNew) {\n // If a division operator appears in an expression position, the\n // tokenizer got confused, and we force it to read a regexp instead.\n if (this.type === types$1.slash) { this.readRegexp(); }\n\n var node, canBeArrow = this.potentialArrowAt === this.start;\n switch (this.type) {\n case types$1._super:\n if (!this.allowSuper)\n { this.raise(this.start, \"'super' keyword outside a method\"); }\n node = this.startNode();\n this.next();\n if (this.type === types$1.parenL && !this.allowDirectSuper)\n { this.raise(node.start, \"super() call outside constructor of a subclass\"); }\n // The `super` keyword can appear at below:\n // SuperProperty:\n // super [ Expression ]\n // super . IdentifierName\n // SuperCall:\n // super ( Arguments )\n if (this.type !== types$1.dot && this.type !== types$1.bracketL && this.type !== types$1.parenL)\n { this.unexpected(); }\n return this.finishNode(node, \"Super\")\n\n case types$1._this:\n node = this.startNode();\n this.next();\n return this.finishNode(node, \"ThisExpression\")\n\n case types$1.name:\n var startPos = this.start, startLoc = this.startLoc, containsEsc = this.containsEsc;\n var id = this.parseIdent(false);\n if (this.options.ecmaVersion >= 8 && !containsEsc && id.name === \"async\" && !this.canInsertSemicolon() && this.eat(types$1._function)) {\n this.overrideContext(types.f_expr);\n return this.parseFunction(this.startNodeAt(startPos, startLoc), 0, false, true, forInit)\n }\n if (canBeArrow && !this.canInsertSemicolon()) {\n if (this.eat(types$1.arrow))\n { return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], false, forInit) }\n if (this.options.ecmaVersion >= 8 && id.name === \"async\" && this.type === types$1.name && !containsEsc &&\n (!this.potentialArrowInForAwait || this.value !== \"of\" || this.containsEsc)) {\n id = this.parseIdent(false);\n if (this.canInsertSemicolon() || !this.eat(types$1.arrow))\n { this.unexpected(); }\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], true, forInit)\n }\n }\n return id\n\n case types$1.regexp:\n var value = this.value;\n node = this.parseLiteral(value.value);\n node.regex = {pattern: value.pattern, flags: value.flags};\n return node\n\n case types$1.num: case types$1.string:\n return this.parseLiteral(this.value)\n\n case types$1._null: case types$1._true: case types$1._false:\n node = this.startNode();\n node.value = this.type === types$1._null ? null : this.type === types$1._true;\n node.raw = this.type.keyword;\n this.next();\n return this.finishNode(node, \"Literal\")\n\n case types$1.parenL:\n var start = this.start, expr = this.parseParenAndDistinguishExpression(canBeArrow, forInit);\n if (refDestructuringErrors) {\n if (refDestructuringErrors.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(expr))\n { refDestructuringErrors.parenthesizedAssign = start; }\n if (refDestructuringErrors.parenthesizedBind < 0)\n { refDestructuringErrors.parenthesizedBind = start; }\n }\n return expr\n\n case types$1.bracketL:\n node = this.startNode();\n this.next();\n node.elements = this.parseExprList(types$1.bracketR, true, true, refDestructuringErrors);\n return this.finishNode(node, \"ArrayExpression\")\n\n case types$1.braceL:\n this.overrideContext(types.b_expr);\n return this.parseObj(false, refDestructuringErrors)\n\n case types$1._function:\n node = this.startNode();\n this.next();\n return this.parseFunction(node, 0)\n\n case types$1._class:\n return this.parseClass(this.startNode(), false)\n\n case types$1._new:\n return this.parseNew()\n\n case types$1.backQuote:\n return this.parseTemplate()\n\n case types$1._import:\n if (this.options.ecmaVersion >= 11) {\n return this.parseExprImport(forNew)\n } else {\n return this.unexpected()\n }\n\n default:\n return this.parseExprAtomDefault()\n }\n};\n\npp$5.parseExprAtomDefault = function() {\n this.unexpected();\n};\n\npp$5.parseExprImport = function(forNew) {\n var node = this.startNode();\n\n // Consume `import` as an identifier for `import.meta`.\n // Because `this.parseIdent(true)` doesn't check escape sequences, it needs the check of `this.containsEsc`.\n if (this.containsEsc) { this.raiseRecoverable(this.start, \"Escape sequence in keyword import\"); }\n this.next();\n\n if (this.type === types$1.parenL && !forNew) {\n return this.parseDynamicImport(node)\n } else if (this.type === types$1.dot) {\n var meta = this.startNodeAt(node.start, node.loc && node.loc.start);\n meta.name = \"import\";\n node.meta = this.finishNode(meta, \"Identifier\");\n return this.parseImportMeta(node)\n } else {\n this.unexpected();\n }\n};\n\npp$5.parseDynamicImport = function(node) {\n this.next(); // skip `(`\n\n // Parse node.source.\n node.source = this.parseMaybeAssign();\n\n if (this.options.ecmaVersion >= 16) {\n if (!this.eat(types$1.parenR)) {\n this.expect(types$1.comma);\n if (!this.afterTrailingComma(types$1.parenR)) {\n node.options = this.parseMaybeAssign();\n if (!this.eat(types$1.parenR)) {\n this.expect(types$1.comma);\n if (!this.afterTrailingComma(types$1.parenR)) {\n this.unexpected();\n }\n }\n } else {\n node.options = null;\n }\n } else {\n node.options = null;\n }\n } else {\n // Verify ending.\n if (!this.eat(types$1.parenR)) {\n var errorPos = this.start;\n if (this.eat(types$1.comma) && this.eat(types$1.parenR)) {\n this.raiseRecoverable(errorPos, \"Trailing comma is not allowed in import()\");\n } else {\n this.unexpected(errorPos);\n }\n }\n }\n\n return this.finishNode(node, \"ImportExpression\")\n};\n\npp$5.parseImportMeta = function(node) {\n this.next(); // skip `.`\n\n var containsEsc = this.containsEsc;\n node.property = this.parseIdent(true);\n\n if (node.property.name !== \"meta\")\n { this.raiseRecoverable(node.property.start, \"The only valid meta property for import is 'import.meta'\"); }\n if (containsEsc)\n { this.raiseRecoverable(node.start, \"'import.meta' must not contain escaped characters\"); }\n if (this.options.sourceType !== \"module\" && !this.options.allowImportExportEverywhere)\n { this.raiseRecoverable(node.start, \"Cannot use 'import.meta' outside a module\"); }\n\n return this.finishNode(node, \"MetaProperty\")\n};\n\npp$5.parseLiteral = function(value) {\n var node = this.startNode();\n node.value = value;\n node.raw = this.input.slice(this.start, this.end);\n if (node.raw.charCodeAt(node.raw.length - 1) === 110)\n { node.bigint = node.value != null ? node.value.toString() : node.raw.slice(0, -1).replace(/_/g, \"\"); }\n this.next();\n return this.finishNode(node, \"Literal\")\n};\n\npp$5.parseParenExpression = function() {\n this.expect(types$1.parenL);\n var val = this.parseExpression();\n this.expect(types$1.parenR);\n return val\n};\n\npp$5.shouldParseArrow = function(exprList) {\n return !this.canInsertSemicolon()\n};\n\npp$5.parseParenAndDistinguishExpression = function(canBeArrow, forInit) {\n var startPos = this.start, startLoc = this.startLoc, val, allowTrailingComma = this.options.ecmaVersion >= 8;\n if (this.options.ecmaVersion >= 6) {\n this.next();\n\n var innerStartPos = this.start, innerStartLoc = this.startLoc;\n var exprList = [], first = true, lastIsComma = false;\n var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, spreadStart;\n this.yieldPos = 0;\n this.awaitPos = 0;\n // Do not save awaitIdentPos to allow checking awaits nested in parameters\n while (this.type !== types$1.parenR) {\n first ? first = false : this.expect(types$1.comma);\n if (allowTrailingComma && this.afterTrailingComma(types$1.parenR, true)) {\n lastIsComma = true;\n break\n } else if (this.type === types$1.ellipsis) {\n spreadStart = this.start;\n exprList.push(this.parseParenItem(this.parseRestBinding()));\n if (this.type === types$1.comma) {\n this.raiseRecoverable(\n this.start,\n \"Comma is not permitted after the rest element\"\n );\n }\n break\n } else {\n exprList.push(this.parseMaybeAssign(false, refDestructuringErrors, this.parseParenItem));\n }\n }\n var innerEndPos = this.lastTokEnd, innerEndLoc = this.lastTokEndLoc;\n this.expect(types$1.parenR);\n\n if (canBeArrow && this.shouldParseArrow(exprList) && this.eat(types$1.arrow)) {\n this.checkPatternErrors(refDestructuringErrors, false);\n this.checkYieldAwaitInDefaultParams();\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n return this.parseParenArrowList(startPos, startLoc, exprList, forInit)\n }\n\n if (!exprList.length || lastIsComma) { this.unexpected(this.lastTokStart); }\n if (spreadStart) { this.unexpected(spreadStart); }\n this.checkExpressionErrors(refDestructuringErrors, true);\n this.yieldPos = oldYieldPos || this.yieldPos;\n this.awaitPos = oldAwaitPos || this.awaitPos;\n\n if (exprList.length > 1) {\n val = this.startNodeAt(innerStartPos, innerStartLoc);\n val.expressions = exprList;\n this.finishNodeAt(val, \"SequenceExpression\", innerEndPos, innerEndLoc);\n } else {\n val = exprList[0];\n }\n } else {\n val = this.parseParenExpression();\n }\n\n if (this.options.preserveParens) {\n var par = this.startNodeAt(startPos, startLoc);\n par.expression = val;\n return this.finishNode(par, \"ParenthesizedExpression\")\n } else {\n return val\n }\n};\n\npp$5.parseParenItem = function(item) {\n return item\n};\n\npp$5.parseParenArrowList = function(startPos, startLoc, exprList, forInit) {\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, false, forInit)\n};\n\n// New's precedence is slightly tricky. It must allow its argument to\n// be a `[]` or dot subscript expression, but not a call — at least,\n// not without wrapping it in parentheses. Thus, it uses the noCalls\n// argument to parseSubscripts to prevent it from consuming the\n// argument list.\n\nvar empty = [];\n\npp$5.parseNew = function() {\n if (this.containsEsc) { this.raiseRecoverable(this.start, \"Escape sequence in keyword new\"); }\n var node = this.startNode();\n this.next();\n if (this.options.ecmaVersion >= 6 && this.type === types$1.dot) {\n var meta = this.startNodeAt(node.start, node.loc && node.loc.start);\n meta.name = \"new\";\n node.meta = this.finishNode(meta, \"Identifier\");\n this.next();\n var containsEsc = this.containsEsc;\n node.property = this.parseIdent(true);\n if (node.property.name !== \"target\")\n { this.raiseRecoverable(node.property.start, \"The only valid meta property for new is 'new.target'\"); }\n if (containsEsc)\n { this.raiseRecoverable(node.start, \"'new.target' must not contain escaped characters\"); }\n if (!this.allowNewDotTarget)\n { this.raiseRecoverable(node.start, \"'new.target' can only be used in functions and class static block\"); }\n return this.finishNode(node, \"MetaProperty\")\n }\n var startPos = this.start, startLoc = this.startLoc;\n node.callee = this.parseSubscripts(this.parseExprAtom(null, false, true), startPos, startLoc, true, false);\n if (this.eat(types$1.parenL)) { node.arguments = this.parseExprList(types$1.parenR, this.options.ecmaVersion >= 8, false); }\n else { node.arguments = empty; }\n return this.finishNode(node, \"NewExpression\")\n};\n\n// Parse template expression.\n\npp$5.parseTemplateElement = function(ref) {\n var isTagged = ref.isTagged;\n\n var elem = this.startNode();\n if (this.type === types$1.invalidTemplate) {\n if (!isTagged) {\n this.raiseRecoverable(this.start, \"Bad escape sequence in untagged template literal\");\n }\n elem.value = {\n raw: this.value.replace(/\\r\\n?/g, \"\\n\"),\n cooked: null\n };\n } else {\n elem.value = {\n raw: this.input.slice(this.start, this.end).replace(/\\r\\n?/g, \"\\n\"),\n cooked: this.value\n };\n }\n this.next();\n elem.tail = this.type === types$1.backQuote;\n return this.finishNode(elem, \"TemplateElement\")\n};\n\npp$5.parseTemplate = function(ref) {\n if ( ref === void 0 ) ref = {};\n var isTagged = ref.isTagged; if ( isTagged === void 0 ) isTagged = false;\n\n var node = this.startNode();\n this.next();\n node.expressions = [];\n var curElt = this.parseTemplateElement({isTagged: isTagged});\n node.quasis = [curElt];\n while (!curElt.tail) {\n if (this.type === types$1.eof) { this.raise(this.pos, \"Unterminated template literal\"); }\n this.expect(types$1.dollarBraceL);\n node.expressions.push(this.parseExpression());\n this.expect(types$1.braceR);\n node.quasis.push(curElt = this.parseTemplateElement({isTagged: isTagged}));\n }\n this.next();\n return this.finishNode(node, \"TemplateLiteral\")\n};\n\npp$5.isAsyncProp = function(prop) {\n return !prop.computed && prop.key.type === \"Identifier\" && prop.key.name === \"async\" &&\n (this.type === types$1.name || this.type === types$1.num || this.type === types$1.string || this.type === types$1.bracketL || this.type.keyword || (this.options.ecmaVersion >= 9 && this.type === types$1.star)) &&\n !lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n};\n\n// Parse an object literal or binding pattern.\n\npp$5.parseObj = function(isPattern, refDestructuringErrors) {\n var node = this.startNode(), first = true, propHash = {};\n node.properties = [];\n this.next();\n while (!this.eat(types$1.braceR)) {\n if (!first) {\n this.expect(types$1.comma);\n if (this.options.ecmaVersion >= 5 && this.afterTrailingComma(types$1.braceR)) { break }\n } else { first = false; }\n\n var prop = this.parseProperty(isPattern, refDestructuringErrors);\n if (!isPattern) { this.checkPropClash(prop, propHash, refDestructuringErrors); }\n node.properties.push(prop);\n }\n return this.finishNode(node, isPattern ? \"ObjectPattern\" : \"ObjectExpression\")\n};\n\npp$5.parseProperty = function(isPattern, refDestructuringErrors) {\n var prop = this.startNode(), isGenerator, isAsync, startPos, startLoc;\n if (this.options.ecmaVersion >= 9 && this.eat(types$1.ellipsis)) {\n if (isPattern) {\n prop.argument = this.parseIdent(false);\n if (this.type === types$1.comma) {\n this.raiseRecoverable(this.start, \"Comma is not permitted after the rest element\");\n }\n return this.finishNode(prop, \"RestElement\")\n }\n // Parse argument.\n prop.argument = this.parseMaybeAssign(false, refDestructuringErrors);\n // To disallow trailing comma via `this.toAssignable()`.\n if (this.type === types$1.comma && refDestructuringErrors && refDestructuringErrors.trailingComma < 0) {\n refDestructuringErrors.trailingComma = this.start;\n }\n // Finish\n return this.finishNode(prop, \"SpreadElement\")\n }\n if (this.options.ecmaVersion >= 6) {\n prop.method = false;\n prop.shorthand = false;\n if (isPattern || refDestructuringErrors) {\n startPos = this.start;\n startLoc = this.startLoc;\n }\n if (!isPattern)\n { isGenerator = this.eat(types$1.star); }\n }\n var containsEsc = this.containsEsc;\n this.parsePropertyName(prop);\n if (!isPattern && !containsEsc && this.options.ecmaVersion >= 8 && !isGenerator && this.isAsyncProp(prop)) {\n isAsync = true;\n isGenerator = this.options.ecmaVersion >= 9 && this.eat(types$1.star);\n this.parsePropertyName(prop);\n } else {\n isAsync = false;\n }\n this.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc);\n return this.finishNode(prop, \"Property\")\n};\n\npp$5.parseGetterSetter = function(prop) {\n var kind = prop.key.name;\n this.parsePropertyName(prop);\n prop.value = this.parseMethod(false);\n prop.kind = kind;\n var paramCount = prop.kind === \"get\" ? 0 : 1;\n if (prop.value.params.length !== paramCount) {\n var start = prop.value.start;\n if (prop.kind === \"get\")\n { this.raiseRecoverable(start, \"getter should have no params\"); }\n else\n { this.raiseRecoverable(start, \"setter should have exactly one param\"); }\n } else {\n if (prop.kind === \"set\" && prop.value.params[0].type === \"RestElement\")\n { this.raiseRecoverable(prop.value.params[0].start, \"Setter cannot use rest params\"); }\n }\n};\n\npp$5.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc) {\n if ((isGenerator || isAsync) && this.type === types$1.colon)\n { this.unexpected(); }\n\n if (this.eat(types$1.colon)) {\n prop.value = isPattern ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(false, refDestructuringErrors);\n prop.kind = \"init\";\n } else if (this.options.ecmaVersion >= 6 && this.type === types$1.parenL) {\n if (isPattern) { this.unexpected(); }\n prop.method = true;\n prop.value = this.parseMethod(isGenerator, isAsync);\n prop.kind = \"init\";\n } else if (!isPattern && !containsEsc &&\n this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === \"Identifier\" &&\n (prop.key.name === \"get\" || prop.key.name === \"set\") &&\n (this.type !== types$1.comma && this.type !== types$1.braceR && this.type !== types$1.eq)) {\n if (isGenerator || isAsync) { this.unexpected(); }\n this.parseGetterSetter(prop);\n } else if (this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === \"Identifier\") {\n if (isGenerator || isAsync) { this.unexpected(); }\n this.checkUnreserved(prop.key);\n if (prop.key.name === \"await\" && !this.awaitIdentPos)\n { this.awaitIdentPos = startPos; }\n if (isPattern) {\n prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key));\n } else if (this.type === types$1.eq && refDestructuringErrors) {\n if (refDestructuringErrors.shorthandAssign < 0)\n { refDestructuringErrors.shorthandAssign = this.start; }\n prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key));\n } else {\n prop.value = this.copyNode(prop.key);\n }\n prop.kind = \"init\";\n prop.shorthand = true;\n } else { this.unexpected(); }\n};\n\npp$5.parsePropertyName = function(prop) {\n if (this.options.ecmaVersion >= 6) {\n if (this.eat(types$1.bracketL)) {\n prop.computed = true;\n prop.key = this.parseMaybeAssign();\n this.expect(types$1.bracketR);\n return prop.key\n } else {\n prop.computed = false;\n }\n }\n return prop.key = this.type === types$1.num || this.type === types$1.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== \"never\")\n};\n\n// Initialize empty function node.\n\npp$5.initFunction = function(node) {\n node.id = null;\n if (this.options.ecmaVersion >= 6) { node.generator = node.expression = false; }\n if (this.options.ecmaVersion >= 8) { node.async = false; }\n};\n\n// Parse object or class method.\n\npp$5.parseMethod = function(isGenerator, isAsync, allowDirectSuper) {\n var node = this.startNode(), oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n\n this.initFunction(node);\n if (this.options.ecmaVersion >= 6)\n { node.generator = isGenerator; }\n if (this.options.ecmaVersion >= 8)\n { node.async = !!isAsync; }\n\n this.yieldPos = 0;\n this.awaitPos = 0;\n this.awaitIdentPos = 0;\n this.enterScope(functionFlags(isAsync, node.generator) | SCOPE_SUPER | (allowDirectSuper ? SCOPE_DIRECT_SUPER : 0));\n\n this.expect(types$1.parenL);\n node.params = this.parseBindingList(types$1.parenR, false, this.options.ecmaVersion >= 8);\n this.checkYieldAwaitInDefaultParams();\n this.parseFunctionBody(node, false, true, false);\n\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n this.awaitIdentPos = oldAwaitIdentPos;\n return this.finishNode(node, \"FunctionExpression\")\n};\n\n// Parse arrow function expression with given parameters.\n\npp$5.parseArrowExpression = function(node, params, isAsync, forInit) {\n var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n\n this.enterScope(functionFlags(isAsync, false) | SCOPE_ARROW);\n this.initFunction(node);\n if (this.options.ecmaVersion >= 8) { node.async = !!isAsync; }\n\n this.yieldPos = 0;\n this.awaitPos = 0;\n this.awaitIdentPos = 0;\n\n node.params = this.toAssignableList(params, true);\n this.parseFunctionBody(node, true, false, forInit);\n\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n this.awaitIdentPos = oldAwaitIdentPos;\n return this.finishNode(node, \"ArrowFunctionExpression\")\n};\n\n// Parse function body and check parameters.\n\npp$5.parseFunctionBody = function(node, isArrowFunction, isMethod, forInit) {\n var isExpression = isArrowFunction && this.type !== types$1.braceL;\n var oldStrict = this.strict, useStrict = false;\n\n if (isExpression) {\n node.body = this.parseMaybeAssign(forInit);\n node.expression = true;\n this.checkParams(node, false);\n } else {\n var nonSimple = this.options.ecmaVersion >= 7 && !this.isSimpleParamList(node.params);\n if (!oldStrict || nonSimple) {\n useStrict = this.strictDirective(this.end);\n // If this is a strict mode function, verify that argument names\n // are not repeated, and it does not try to bind the words `eval`\n // or `arguments`.\n if (useStrict && nonSimple)\n { this.raiseRecoverable(node.start, \"Illegal 'use strict' directive in function with non-simple parameter list\"); }\n }\n // Start a new scope with regard to labels and the `inFunction`\n // flag (restore them to their old value afterwards).\n var oldLabels = this.labels;\n this.labels = [];\n if (useStrict) { this.strict = true; }\n\n // Add the params to varDeclaredNames to ensure that an error is thrown\n // if a let/const declaration in the function clashes with one of the params.\n this.checkParams(node, !oldStrict && !useStrict && !isArrowFunction && !isMethod && this.isSimpleParamList(node.params));\n // Ensure the function name isn't a forbidden identifier in strict mode, e.g. 'eval'\n if (this.strict && node.id) { this.checkLValSimple(node.id, BIND_OUTSIDE); }\n node.body = this.parseBlock(false, undefined, useStrict && !oldStrict);\n node.expression = false;\n this.adaptDirectivePrologue(node.body.body);\n this.labels = oldLabels;\n }\n this.exitScope();\n};\n\npp$5.isSimpleParamList = function(params) {\n for (var i = 0, list = params; i < list.length; i += 1)\n {\n var param = list[i];\n\n if (param.type !== \"Identifier\") { return false\n } }\n return true\n};\n\n// Checks function params for various disallowed patterns such as using \"eval\"\n// or \"arguments\" and duplicate parameters.\n\npp$5.checkParams = function(node, allowDuplicates) {\n var nameHash = Object.create(null);\n for (var i = 0, list = node.params; i < list.length; i += 1)\n {\n var param = list[i];\n\n this.checkLValInnerPattern(param, BIND_VAR, allowDuplicates ? null : nameHash);\n }\n};\n\n// Parses a comma-separated list of expressions, and returns them as\n// an array. `close` is the token type that ends the list, and\n// `allowEmpty` can be turned on to allow subsequent commas with\n// nothing in between them to be parsed as `null` (which is needed\n// for array literals).\n\npp$5.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestructuringErrors) {\n var elts = [], first = true;\n while (!this.eat(close)) {\n if (!first) {\n this.expect(types$1.comma);\n if (allowTrailingComma && this.afterTrailingComma(close)) { break }\n } else { first = false; }\n\n var elt = (void 0);\n if (allowEmpty && this.type === types$1.comma)\n { elt = null; }\n else if (this.type === types$1.ellipsis) {\n elt = this.parseSpread(refDestructuringErrors);\n if (refDestructuringErrors && this.type === types$1.comma && refDestructuringErrors.trailingComma < 0)\n { refDestructuringErrors.trailingComma = this.start; }\n } else {\n elt = this.parseMaybeAssign(false, refDestructuringErrors);\n }\n elts.push(elt);\n }\n return elts\n};\n\npp$5.checkUnreserved = function(ref) {\n var start = ref.start;\n var end = ref.end;\n var name = ref.name;\n\n if (this.inGenerator && name === \"yield\")\n { this.raiseRecoverable(start, \"Cannot use 'yield' as identifier inside a generator\"); }\n if (this.inAsync && name === \"await\")\n { this.raiseRecoverable(start, \"Cannot use 'await' as identifier inside an async function\"); }\n if (!(this.currentThisScope().flags & SCOPE_VAR) && name === \"arguments\")\n { this.raiseRecoverable(start, \"Cannot use 'arguments' in class field initializer\"); }\n if (this.inClassStaticBlock && (name === \"arguments\" || name === \"await\"))\n { this.raise(start, (\"Cannot use \" + name + \" in class static initialization block\")); }\n if (this.keywords.test(name))\n { this.raise(start, (\"Unexpected keyword '\" + name + \"'\")); }\n if (this.options.ecmaVersion < 6 &&\n this.input.slice(start, end).indexOf(\"\\\\\") !== -1) { return }\n var re = this.strict ? this.reservedWordsStrict : this.reservedWords;\n if (re.test(name)) {\n if (!this.inAsync && name === \"await\")\n { this.raiseRecoverable(start, \"Cannot use keyword 'await' outside an async function\"); }\n this.raiseRecoverable(start, (\"The keyword '\" + name + \"' is reserved\"));\n }\n};\n\n// Parse the next token as an identifier. If `liberal` is true (used\n// when parsing properties), it will also convert keywords into\n// identifiers.\n\npp$5.parseIdent = function(liberal) {\n var node = this.parseIdentNode();\n this.next(!!liberal);\n this.finishNode(node, \"Identifier\");\n if (!liberal) {\n this.checkUnreserved(node);\n if (node.name === \"await\" && !this.awaitIdentPos)\n { this.awaitIdentPos = node.start; }\n }\n return node\n};\n\npp$5.parseIdentNode = function() {\n var node = this.startNode();\n if (this.type === types$1.name) {\n node.name = this.value;\n } else if (this.type.keyword) {\n node.name = this.type.keyword;\n\n // To fix https://github.com/acornjs/acorn/issues/575\n // `class` and `function` keywords push new context into this.context.\n // But there is no chance to pop the context if the keyword is consumed as an identifier such as a property name.\n // If the previous token is a dot, this does not apply because the context-managing code already ignored the keyword\n if ((node.name === \"class\" || node.name === \"function\") &&\n (this.lastTokEnd !== this.lastTokStart + 1 || this.input.charCodeAt(this.lastTokStart) !== 46)) {\n this.context.pop();\n }\n this.type = types$1.name;\n } else {\n this.unexpected();\n }\n return node\n};\n\npp$5.parsePrivateIdent = function() {\n var node = this.startNode();\n if (this.type === types$1.privateId) {\n node.name = this.value;\n } else {\n this.unexpected();\n }\n this.next();\n this.finishNode(node, \"PrivateIdentifier\");\n\n // For validating existence\n if (this.options.checkPrivateFields) {\n if (this.privateNameStack.length === 0) {\n this.raise(node.start, (\"Private field '#\" + (node.name) + \"' must be declared in an enclosing class\"));\n } else {\n this.privateNameStack[this.privateNameStack.length - 1].used.push(node);\n }\n }\n\n return node\n};\n\n// Parses yield expression inside generator.\n\npp$5.parseYield = function(forInit) {\n if (!this.yieldPos) { this.yieldPos = this.start; }\n\n var node = this.startNode();\n this.next();\n if (this.type === types$1.semi || this.canInsertSemicolon() || (this.type !== types$1.star && !this.type.startsExpr)) {\n node.delegate = false;\n node.argument = null;\n } else {\n node.delegate = this.eat(types$1.star);\n node.argument = this.parseMaybeAssign(forInit);\n }\n return this.finishNode(node, \"YieldExpression\")\n};\n\npp$5.parseAwait = function(forInit) {\n if (!this.awaitPos) { this.awaitPos = this.start; }\n\n var node = this.startNode();\n this.next();\n node.argument = this.parseMaybeUnary(null, true, false, forInit);\n return this.finishNode(node, \"AwaitExpression\")\n};\n\nvar pp$4 = Parser.prototype;\n\n// This function is used to raise exceptions on parse errors. It\n// takes an offset integer (into the current `input`) to indicate\n// the location of the error, attaches the position to the end\n// of the error message, and then raises a `SyntaxError` with that\n// message.\n\npp$4.raise = function(pos, message) {\n var loc = getLineInfo(this.input, pos);\n message += \" (\" + loc.line + \":\" + loc.column + \")\";\n if (this.sourceFile) {\n message += \" in \" + this.sourceFile;\n }\n var err = new SyntaxError(message);\n err.pos = pos; err.loc = loc; err.raisedAt = this.pos;\n throw err\n};\n\npp$4.raiseRecoverable = pp$4.raise;\n\npp$4.curPosition = function() {\n if (this.options.locations) {\n return new Position(this.curLine, this.pos - this.lineStart)\n }\n};\n\nvar pp$3 = Parser.prototype;\n\nvar Scope = function Scope(flags) {\n this.flags = flags;\n // A list of var-declared names in the current lexical scope\n this.var = [];\n // A list of lexically-declared names in the current lexical scope\n this.lexical = [];\n // A list of lexically-declared FunctionDeclaration names in the current lexical scope\n this.functions = [];\n};\n\n// The functions in this module keep track of declared variables in the current scope in order to detect duplicate variable names.\n\npp$3.enterScope = function(flags) {\n this.scopeStack.push(new Scope(flags));\n};\n\npp$3.exitScope = function() {\n this.scopeStack.pop();\n};\n\n// The spec says:\n// > At the top level of a function, or script, function declarations are\n// > treated like var declarations rather than like lexical declarations.\npp$3.treatFunctionsAsVarInScope = function(scope) {\n return (scope.flags & SCOPE_FUNCTION) || !this.inModule && (scope.flags & SCOPE_TOP)\n};\n\npp$3.declareName = function(name, bindingType, pos) {\n var redeclared = false;\n if (bindingType === BIND_LEXICAL) {\n var scope = this.currentScope();\n redeclared = scope.lexical.indexOf(name) > -1 || scope.functions.indexOf(name) > -1 || scope.var.indexOf(name) > -1;\n scope.lexical.push(name);\n if (this.inModule && (scope.flags & SCOPE_TOP))\n { delete this.undefinedExports[name]; }\n } else if (bindingType === BIND_SIMPLE_CATCH) {\n var scope$1 = this.currentScope();\n scope$1.lexical.push(name);\n } else if (bindingType === BIND_FUNCTION) {\n var scope$2 = this.currentScope();\n if (this.treatFunctionsAsVar)\n { redeclared = scope$2.lexical.indexOf(name) > -1; }\n else\n { redeclared = scope$2.lexical.indexOf(name) > -1 || scope$2.var.indexOf(name) > -1; }\n scope$2.functions.push(name);\n } else {\n for (var i = this.scopeStack.length - 1; i >= 0; --i) {\n var scope$3 = this.scopeStack[i];\n if (scope$3.lexical.indexOf(name) > -1 && !((scope$3.flags & SCOPE_SIMPLE_CATCH) && scope$3.lexical[0] === name) ||\n !this.treatFunctionsAsVarInScope(scope$3) && scope$3.functions.indexOf(name) > -1) {\n redeclared = true;\n break\n }\n scope$3.var.push(name);\n if (this.inModule && (scope$3.flags & SCOPE_TOP))\n { delete this.undefinedExports[name]; }\n if (scope$3.flags & SCOPE_VAR) { break }\n }\n }\n if (redeclared) { this.raiseRecoverable(pos, (\"Identifier '\" + name + \"' has already been declared\")); }\n};\n\npp$3.checkLocalExport = function(id) {\n // scope.functions must be empty as Module code is always strict.\n if (this.scopeStack[0].lexical.indexOf(id.name) === -1 &&\n this.scopeStack[0].var.indexOf(id.name) === -1) {\n this.undefinedExports[id.name] = id;\n }\n};\n\npp$3.currentScope = function() {\n return this.scopeStack[this.scopeStack.length - 1]\n};\n\npp$3.currentVarScope = function() {\n for (var i = this.scopeStack.length - 1;; i--) {\n var scope = this.scopeStack[i];\n if (scope.flags & (SCOPE_VAR | SCOPE_CLASS_FIELD_INIT | SCOPE_CLASS_STATIC_BLOCK)) { return scope }\n }\n};\n\n// Could be useful for `this`, `new.target`, `super()`, `super.property`, and `super[property]`.\npp$3.currentThisScope = function() {\n for (var i = this.scopeStack.length - 1;; i--) {\n var scope = this.scopeStack[i];\n if (scope.flags & (SCOPE_VAR | SCOPE_CLASS_FIELD_INIT | SCOPE_CLASS_STATIC_BLOCK) &&\n !(scope.flags & SCOPE_ARROW)) { return scope }\n }\n};\n\nvar Node = function Node(parser, pos, loc) {\n this.type = \"\";\n this.start = pos;\n this.end = 0;\n if (parser.options.locations)\n { this.loc = new SourceLocation(parser, loc); }\n if (parser.options.directSourceFile)\n { this.sourceFile = parser.options.directSourceFile; }\n if (parser.options.ranges)\n { this.range = [pos, 0]; }\n};\n\n// Start an AST node, attaching a start offset.\n\nvar pp$2 = Parser.prototype;\n\npp$2.startNode = function() {\n return new Node(this, this.start, this.startLoc)\n};\n\npp$2.startNodeAt = function(pos, loc) {\n return new Node(this, pos, loc)\n};\n\n// Finish an AST node, adding `type` and `end` properties.\n\nfunction finishNodeAt(node, type, pos, loc) {\n node.type = type;\n node.end = pos;\n if (this.options.locations)\n { node.loc.end = loc; }\n if (this.options.ranges)\n { node.range[1] = pos; }\n return node\n}\n\npp$2.finishNode = function(node, type) {\n return finishNodeAt.call(this, node, type, this.lastTokEnd, this.lastTokEndLoc)\n};\n\n// Finish node at given position\n\npp$2.finishNodeAt = function(node, type, pos, loc) {\n return finishNodeAt.call(this, node, type, pos, loc)\n};\n\npp$2.copyNode = function(node) {\n var newNode = new Node(this, node.start, this.startLoc);\n for (var prop in node) { newNode[prop] = node[prop]; }\n return newNode\n};\n\n// This file was generated by \"bin/generate-unicode-script-values.js\". Do not modify manually!\nvar scriptValuesAddedInUnicode = \"Berf Beria_Erfe Gara Garay Gukh Gurung_Khema Hrkt Katakana_Or_Hiragana Kawi Kirat_Rai Krai Nag_Mundari Nagm Ol_Onal Onao Sidetic Sidt Sunu Sunuwar Tai_Yo Tayo Todhri Todr Tolong_Siki Tols Tulu_Tigalari Tutg Unknown Zzzz\";\n\n// This file contains Unicode properties extracted from the ECMAScript specification.\n// The lists are extracted like so:\n// $$('#table-binary-unicode-properties > figure > table > tbody > tr > td:nth-child(1) code').map(el => el.innerText)\n\n// #table-binary-unicode-properties\nvar ecma9BinaryProperties = \"ASCII ASCII_Hex_Digit AHex Alphabetic Alpha Any Assigned Bidi_Control Bidi_C Bidi_Mirrored Bidi_M Case_Ignorable CI Cased Changes_When_Casefolded CWCF Changes_When_Casemapped CWCM Changes_When_Lowercased CWL Changes_When_NFKC_Casefolded CWKCF Changes_When_Titlecased CWT Changes_When_Uppercased CWU Dash Default_Ignorable_Code_Point DI Deprecated Dep Diacritic Dia Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Extender Ext Grapheme_Base Gr_Base Grapheme_Extend Gr_Ext Hex_Digit Hex IDS_Binary_Operator IDSB IDS_Trinary_Operator IDST ID_Continue IDC ID_Start IDS Ideographic Ideo Join_Control Join_C Logical_Order_Exception LOE Lowercase Lower Math Noncharacter_Code_Point NChar Pattern_Syntax Pat_Syn Pattern_White_Space Pat_WS Quotation_Mark QMark Radical Regional_Indicator RI Sentence_Terminal STerm Soft_Dotted SD Terminal_Punctuation Term Unified_Ideograph UIdeo Uppercase Upper Variation_Selector VS White_Space space XID_Continue XIDC XID_Start XIDS\";\nvar ecma10BinaryProperties = ecma9BinaryProperties + \" Extended_Pictographic\";\nvar ecma11BinaryProperties = ecma10BinaryProperties;\nvar ecma12BinaryProperties = ecma11BinaryProperties + \" EBase EComp EMod EPres ExtPict\";\nvar ecma13BinaryProperties = ecma12BinaryProperties;\nvar ecma14BinaryProperties = ecma13BinaryProperties;\n\nvar unicodeBinaryProperties = {\n 9: ecma9BinaryProperties,\n 10: ecma10BinaryProperties,\n 11: ecma11BinaryProperties,\n 12: ecma12BinaryProperties,\n 13: ecma13BinaryProperties,\n 14: ecma14BinaryProperties\n};\n\n// #table-binary-unicode-properties-of-strings\nvar ecma14BinaryPropertiesOfStrings = \"Basic_Emoji Emoji_Keycap_Sequence RGI_Emoji_Modifier_Sequence RGI_Emoji_Flag_Sequence RGI_Emoji_Tag_Sequence RGI_Emoji_ZWJ_Sequence RGI_Emoji\";\n\nvar unicodeBinaryPropertiesOfStrings = {\n 9: \"\",\n 10: \"\",\n 11: \"\",\n 12: \"\",\n 13: \"\",\n 14: ecma14BinaryPropertiesOfStrings\n};\n\n// #table-unicode-general-category-values\nvar unicodeGeneralCategoryValues = \"Cased_Letter LC Close_Punctuation Pe Connector_Punctuation Pc Control Cc cntrl Currency_Symbol Sc Dash_Punctuation Pd Decimal_Number Nd digit Enclosing_Mark Me Final_Punctuation Pf Format Cf Initial_Punctuation Pi Letter L Letter_Number Nl Line_Separator Zl Lowercase_Letter Ll Mark M Combining_Mark Math_Symbol Sm Modifier_Letter Lm Modifier_Symbol Sk Nonspacing_Mark Mn Number N Open_Punctuation Ps Other C Other_Letter Lo Other_Number No Other_Punctuation Po Other_Symbol So Paragraph_Separator Zp Private_Use Co Punctuation P punct Separator Z Space_Separator Zs Spacing_Mark Mc Surrogate Cs Symbol S Titlecase_Letter Lt Unassigned Cn Uppercase_Letter Lu\";\n\n// #table-unicode-script-values\nvar ecma9ScriptValues = \"Adlam Adlm Ahom Anatolian_Hieroglyphs Hluw Arabic Arab Armenian Armn Avestan Avst Balinese Bali Bamum Bamu Bassa_Vah Bass Batak Batk Bengali Beng Bhaiksuki Bhks Bopomofo Bopo Brahmi Brah Braille Brai Buginese Bugi Buhid Buhd Canadian_Aboriginal Cans Carian Cari Caucasian_Albanian Aghb Chakma Cakm Cham Cham Cherokee Cher Common Zyyy Coptic Copt Qaac Cuneiform Xsux Cypriot Cprt Cyrillic Cyrl Deseret Dsrt Devanagari Deva Duployan Dupl Egyptian_Hieroglyphs Egyp Elbasan Elba Ethiopic Ethi Georgian Geor Glagolitic Glag Gothic Goth Grantha Gran Greek Grek Gujarati Gujr Gurmukhi Guru Han Hani Hangul Hang Hanunoo Hano Hatran Hatr Hebrew Hebr Hiragana Hira Imperial_Aramaic Armi Inherited Zinh Qaai Inscriptional_Pahlavi Phli Inscriptional_Parthian Prti Javanese Java Kaithi Kthi Kannada Knda Katakana Kana Kayah_Li Kali Kharoshthi Khar Khmer Khmr Khojki Khoj Khudawadi Sind Lao Laoo Latin Latn Lepcha Lepc Limbu Limb Linear_A Lina Linear_B Linb Lisu Lisu Lycian Lyci Lydian Lydi Mahajani Mahj Malayalam Mlym Mandaic Mand Manichaean Mani Marchen Marc Masaram_Gondi Gonm Meetei_Mayek Mtei Mende_Kikakui Mend Meroitic_Cursive Merc Meroitic_Hieroglyphs Mero Miao Plrd Modi Mongolian Mong Mro Mroo Multani Mult Myanmar Mymr Nabataean Nbat New_Tai_Lue Talu Newa Newa Nko Nkoo Nushu Nshu Ogham Ogam Ol_Chiki Olck Old_Hungarian Hung Old_Italic Ital Old_North_Arabian Narb Old_Permic Perm Old_Persian Xpeo Old_South_Arabian Sarb Old_Turkic Orkh Oriya Orya Osage Osge Osmanya Osma Pahawh_Hmong Hmng Palmyrene Palm Pau_Cin_Hau Pauc Phags_Pa Phag Phoenician Phnx Psalter_Pahlavi Phlp Rejang Rjng Runic Runr Samaritan Samr Saurashtra Saur Sharada Shrd Shavian Shaw Siddham Sidd SignWriting Sgnw Sinhala Sinh Sora_Sompeng Sora Soyombo Soyo Sundanese Sund Syloti_Nagri Sylo Syriac Syrc Tagalog Tglg Tagbanwa Tagb Tai_Le Tale Tai_Tham Lana Tai_Viet Tavt Takri Takr Tamil Taml Tangut Tang Telugu Telu Thaana Thaa Thai Thai Tibetan Tibt Tifinagh Tfng Tirhuta Tirh Ugaritic Ugar Vai Vaii Warang_Citi Wara Yi Yiii Zanabazar_Square Zanb\";\nvar ecma10ScriptValues = ecma9ScriptValues + \" Dogra Dogr Gunjala_Gondi Gong Hanifi_Rohingya Rohg Makasar Maka Medefaidrin Medf Old_Sogdian Sogo Sogdian Sogd\";\nvar ecma11ScriptValues = ecma10ScriptValues + \" Elymaic Elym Nandinagari Nand Nyiakeng_Puachue_Hmong Hmnp Wancho Wcho\";\nvar ecma12ScriptValues = ecma11ScriptValues + \" Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi\";\nvar ecma13ScriptValues = ecma12ScriptValues + \" Cypro_Minoan Cpmn Old_Uyghur Ougr Tangsa Tnsa Toto Vithkuqi Vith\";\nvar ecma14ScriptValues = ecma13ScriptValues + \" \" + scriptValuesAddedInUnicode;\n\nvar unicodeScriptValues = {\n 9: ecma9ScriptValues,\n 10: ecma10ScriptValues,\n 11: ecma11ScriptValues,\n 12: ecma12ScriptValues,\n 13: ecma13ScriptValues,\n 14: ecma14ScriptValues\n};\n\nvar data = {};\nfunction buildUnicodeData(ecmaVersion) {\n var d = data[ecmaVersion] = {\n binary: wordsRegexp(unicodeBinaryProperties[ecmaVersion] + \" \" + unicodeGeneralCategoryValues),\n binaryOfStrings: wordsRegexp(unicodeBinaryPropertiesOfStrings[ecmaVersion]),\n nonBinary: {\n General_Category: wordsRegexp(unicodeGeneralCategoryValues),\n Script: wordsRegexp(unicodeScriptValues[ecmaVersion])\n }\n };\n d.nonBinary.Script_Extensions = d.nonBinary.Script;\n\n d.nonBinary.gc = d.nonBinary.General_Category;\n d.nonBinary.sc = d.nonBinary.Script;\n d.nonBinary.scx = d.nonBinary.Script_Extensions;\n}\n\nfor (var i = 0, list = [9, 10, 11, 12, 13, 14]; i < list.length; i += 1) {\n var ecmaVersion = list[i];\n\n buildUnicodeData(ecmaVersion);\n}\n\nvar pp$1 = Parser.prototype;\n\n// Track disjunction structure to determine whether a duplicate\n// capture group name is allowed because it is in a separate branch.\nvar BranchID = function BranchID(parent, base) {\n // Parent disjunction branch\n this.parent = parent;\n // Identifies this set of sibling branches\n this.base = base || this;\n};\n\nBranchID.prototype.separatedFrom = function separatedFrom (alt) {\n // A branch is separate from another branch if they or any of\n // their parents are siblings in a given disjunction\n for (var self = this; self; self = self.parent) {\n for (var other = alt; other; other = other.parent) {\n if (self.base === other.base && self !== other) { return true }\n }\n }\n return false\n};\n\nBranchID.prototype.sibling = function sibling () {\n return new BranchID(this.parent, this.base)\n};\n\nvar RegExpValidationState = function RegExpValidationState(parser) {\n this.parser = parser;\n this.validFlags = \"gim\" + (parser.options.ecmaVersion >= 6 ? \"uy\" : \"\") + (parser.options.ecmaVersion >= 9 ? \"s\" : \"\") + (parser.options.ecmaVersion >= 13 ? \"d\" : \"\") + (parser.options.ecmaVersion >= 15 ? \"v\" : \"\");\n this.unicodeProperties = data[parser.options.ecmaVersion >= 14 ? 14 : parser.options.ecmaVersion];\n this.source = \"\";\n this.flags = \"\";\n this.start = 0;\n this.switchU = false;\n this.switchV = false;\n this.switchN = false;\n this.pos = 0;\n this.lastIntValue = 0;\n this.lastStringValue = \"\";\n this.lastAssertionIsQuantifiable = false;\n this.numCapturingParens = 0;\n this.maxBackReference = 0;\n this.groupNames = Object.create(null);\n this.backReferenceNames = [];\n this.branchID = null;\n};\n\nRegExpValidationState.prototype.reset = function reset (start, pattern, flags) {\n var unicodeSets = flags.indexOf(\"v\") !== -1;\n var unicode = flags.indexOf(\"u\") !== -1;\n this.start = start | 0;\n this.source = pattern + \"\";\n this.flags = flags;\n if (unicodeSets && this.parser.options.ecmaVersion >= 15) {\n this.switchU = true;\n this.switchV = true;\n this.switchN = true;\n } else {\n this.switchU = unicode && this.parser.options.ecmaVersion >= 6;\n this.switchV = false;\n this.switchN = unicode && this.parser.options.ecmaVersion >= 9;\n }\n};\n\nRegExpValidationState.prototype.raise = function raise (message) {\n this.parser.raiseRecoverable(this.start, (\"Invalid regular expression: /\" + (this.source) + \"/: \" + message));\n};\n\n// If u flag is given, this returns the code point at the index (it combines a surrogate pair).\n// Otherwise, this returns the code unit of the index (can be a part of a surrogate pair).\nRegExpValidationState.prototype.at = function at (i, forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n var s = this.source;\n var l = s.length;\n if (i >= l) {\n return -1\n }\n var c = s.charCodeAt(i);\n if (!(forceU || this.switchU) || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l) {\n return c\n }\n var next = s.charCodeAt(i + 1);\n return next >= 0xDC00 && next <= 0xDFFF ? (c << 10) + next - 0x35FDC00 : c\n};\n\nRegExpValidationState.prototype.nextIndex = function nextIndex (i, forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n var s = this.source;\n var l = s.length;\n if (i >= l) {\n return l\n }\n var c = s.charCodeAt(i), next;\n if (!(forceU || this.switchU) || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l ||\n (next = s.charCodeAt(i + 1)) < 0xDC00 || next > 0xDFFF) {\n return i + 1\n }\n return i + 2\n};\n\nRegExpValidationState.prototype.current = function current (forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n return this.at(this.pos, forceU)\n};\n\nRegExpValidationState.prototype.lookahead = function lookahead (forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n return this.at(this.nextIndex(this.pos, forceU), forceU)\n};\n\nRegExpValidationState.prototype.advance = function advance (forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n this.pos = this.nextIndex(this.pos, forceU);\n};\n\nRegExpValidationState.prototype.eat = function eat (ch, forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n if (this.current(forceU) === ch) {\n this.advance(forceU);\n return true\n }\n return false\n};\n\nRegExpValidationState.prototype.eatChars = function eatChars (chs, forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n var pos = this.pos;\n for (var i = 0, list = chs; i < list.length; i += 1) {\n var ch = list[i];\n\n var current = this.at(pos, forceU);\n if (current === -1 || current !== ch) {\n return false\n }\n pos = this.nextIndex(pos, forceU);\n }\n this.pos = pos;\n return true\n};\n\n/**\n * Validate the flags part of a given RegExpLiteral.\n *\n * @param {RegExpValidationState} state The state to validate RegExp.\n * @returns {void}\n */\npp$1.validateRegExpFlags = function(state) {\n var validFlags = state.validFlags;\n var flags = state.flags;\n\n var u = false;\n var v = false;\n\n for (var i = 0; i < flags.length; i++) {\n var flag = flags.charAt(i);\n if (validFlags.indexOf(flag) === -1) {\n this.raise(state.start, \"Invalid regular expression flag\");\n }\n if (flags.indexOf(flag, i + 1) > -1) {\n this.raise(state.start, \"Duplicate regular expression flag\");\n }\n if (flag === \"u\") { u = true; }\n if (flag === \"v\") { v = true; }\n }\n if (this.options.ecmaVersion >= 15 && u && v) {\n this.raise(state.start, \"Invalid regular expression flag\");\n }\n};\n\nfunction hasProp(obj) {\n for (var _ in obj) { return true }\n return false\n}\n\n/**\n * Validate the pattern part of a given RegExpLiteral.\n *\n * @param {RegExpValidationState} state The state to validate RegExp.\n * @returns {void}\n */\npp$1.validateRegExpPattern = function(state) {\n this.regexp_pattern(state);\n\n // The goal symbol for the parse is |Pattern[~U, ~N]|. If the result of\n // parsing contains a |GroupName|, reparse with the goal symbol\n // |Pattern[~U, +N]| and use this result instead. Throw a *SyntaxError*\n // exception if _P_ did not conform to the grammar, if any elements of _P_\n // were not matched by the parse, or if any Early Error conditions exist.\n if (!state.switchN && this.options.ecmaVersion >= 9 && hasProp(state.groupNames)) {\n state.switchN = true;\n this.regexp_pattern(state);\n }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Pattern\npp$1.regexp_pattern = function(state) {\n state.pos = 0;\n state.lastIntValue = 0;\n state.lastStringValue = \"\";\n state.lastAssertionIsQuantifiable = false;\n state.numCapturingParens = 0;\n state.maxBackReference = 0;\n state.groupNames = Object.create(null);\n state.backReferenceNames.length = 0;\n state.branchID = null;\n\n this.regexp_disjunction(state);\n\n if (state.pos !== state.source.length) {\n // Make the same messages as V8.\n if (state.eat(0x29 /* ) */)) {\n state.raise(\"Unmatched ')'\");\n }\n if (state.eat(0x5D /* ] */) || state.eat(0x7D /* } */)) {\n state.raise(\"Lone quantifier brackets\");\n }\n }\n if (state.maxBackReference > state.numCapturingParens) {\n state.raise(\"Invalid escape\");\n }\n for (var i = 0, list = state.backReferenceNames; i < list.length; i += 1) {\n var name = list[i];\n\n if (!state.groupNames[name]) {\n state.raise(\"Invalid named capture referenced\");\n }\n }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Disjunction\npp$1.regexp_disjunction = function(state) {\n var trackDisjunction = this.options.ecmaVersion >= 16;\n if (trackDisjunction) { state.branchID = new BranchID(state.branchID, null); }\n this.regexp_alternative(state);\n while (state.eat(0x7C /* | */)) {\n if (trackDisjunction) { state.branchID = state.branchID.sibling(); }\n this.regexp_alternative(state);\n }\n if (trackDisjunction) { state.branchID = state.branchID.parent; }\n\n // Make the same message as V8.\n if (this.regexp_eatQuantifier(state, true)) {\n state.raise(\"Nothing to repeat\");\n }\n if (state.eat(0x7B /* { */)) {\n state.raise(\"Lone quantifier brackets\");\n }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Alternative\npp$1.regexp_alternative = function(state) {\n while (state.pos < state.source.length && this.regexp_eatTerm(state)) {}\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Term\npp$1.regexp_eatTerm = function(state) {\n if (this.regexp_eatAssertion(state)) {\n // Handle `QuantifiableAssertion Quantifier` alternative.\n // `state.lastAssertionIsQuantifiable` is true if the last eaten Assertion\n // is a QuantifiableAssertion.\n if (state.lastAssertionIsQuantifiable && this.regexp_eatQuantifier(state)) {\n // Make the same message as V8.\n if (state.switchU) {\n state.raise(\"Invalid quantifier\");\n }\n }\n return true\n }\n\n if (state.switchU ? this.regexp_eatAtom(state) : this.regexp_eatExtendedAtom(state)) {\n this.regexp_eatQuantifier(state);\n return true\n }\n\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Assertion\npp$1.regexp_eatAssertion = function(state) {\n var start = state.pos;\n state.lastAssertionIsQuantifiable = false;\n\n // ^, $\n if (state.eat(0x5E /* ^ */) || state.eat(0x24 /* $ */)) {\n return true\n }\n\n // \\b \\B\n if (state.eat(0x5C /* \\ */)) {\n if (state.eat(0x42 /* B */) || state.eat(0x62 /* b */)) {\n return true\n }\n state.pos = start;\n }\n\n // Lookahead / Lookbehind\n if (state.eat(0x28 /* ( */) && state.eat(0x3F /* ? */)) {\n var lookbehind = false;\n if (this.options.ecmaVersion >= 9) {\n lookbehind = state.eat(0x3C /* < */);\n }\n if (state.eat(0x3D /* = */) || state.eat(0x21 /* ! */)) {\n this.regexp_disjunction(state);\n if (!state.eat(0x29 /* ) */)) {\n state.raise(\"Unterminated group\");\n }\n state.lastAssertionIsQuantifiable = !lookbehind;\n return true\n }\n }\n\n state.pos = start;\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Quantifier\npp$1.regexp_eatQuantifier = function(state, noError) {\n if ( noError === void 0 ) noError = false;\n\n if (this.regexp_eatQuantifierPrefix(state, noError)) {\n state.eat(0x3F /* ? */);\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-QuantifierPrefix\npp$1.regexp_eatQuantifierPrefix = function(state, noError) {\n return (\n state.eat(0x2A /* * */) ||\n state.eat(0x2B /* + */) ||\n state.eat(0x3F /* ? */) ||\n this.regexp_eatBracedQuantifier(state, noError)\n )\n};\npp$1.regexp_eatBracedQuantifier = function(state, noError) {\n var start = state.pos;\n if (state.eat(0x7B /* { */)) {\n var min = 0, max = -1;\n if (this.regexp_eatDecimalDigits(state)) {\n min = state.lastIntValue;\n if (state.eat(0x2C /* , */) && this.regexp_eatDecimalDigits(state)) {\n max = state.lastIntValue;\n }\n if (state.eat(0x7D /* } */)) {\n // SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-term\n if (max !== -1 && max < min && !noError) {\n state.raise(\"numbers out of order in {} quantifier\");\n }\n return true\n }\n }\n if (state.switchU && !noError) {\n state.raise(\"Incomplete quantifier\");\n }\n state.pos = start;\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Atom\npp$1.regexp_eatAtom = function(state) {\n return (\n this.regexp_eatPatternCharacters(state) ||\n state.eat(0x2E /* . */) ||\n this.regexp_eatReverseSolidusAtomEscape(state) ||\n this.regexp_eatCharacterClass(state) ||\n this.regexp_eatUncapturingGroup(state) ||\n this.regexp_eatCapturingGroup(state)\n )\n};\npp$1.regexp_eatReverseSolidusAtomEscape = function(state) {\n var start = state.pos;\n if (state.eat(0x5C /* \\ */)) {\n if (this.regexp_eatAtomEscape(state)) {\n return true\n }\n state.pos = start;\n }\n return false\n};\npp$1.regexp_eatUncapturingGroup = function(state) {\n var start = state.pos;\n if (state.eat(0x28 /* ( */)) {\n if (state.eat(0x3F /* ? */)) {\n if (this.options.ecmaVersion >= 16) {\n var addModifiers = this.regexp_eatModifiers(state);\n var hasHyphen = state.eat(0x2D /* - */);\n if (addModifiers || hasHyphen) {\n for (var i = 0; i < addModifiers.length; i++) {\n var modifier = addModifiers.charAt(i);\n if (addModifiers.indexOf(modifier, i + 1) > -1) {\n state.raise(\"Duplicate regular expression modifiers\");\n }\n }\n if (hasHyphen) {\n var removeModifiers = this.regexp_eatModifiers(state);\n if (!addModifiers && !removeModifiers && state.current() === 0x3A /* : */) {\n state.raise(\"Invalid regular expression modifiers\");\n }\n for (var i$1 = 0; i$1 < removeModifiers.length; i$1++) {\n var modifier$1 = removeModifiers.charAt(i$1);\n if (\n removeModifiers.indexOf(modifier$1, i$1 + 1) > -1 ||\n addModifiers.indexOf(modifier$1) > -1\n ) {\n state.raise(\"Duplicate regular expression modifiers\");\n }\n }\n }\n }\n }\n if (state.eat(0x3A /* : */)) {\n this.regexp_disjunction(state);\n if (state.eat(0x29 /* ) */)) {\n return true\n }\n state.raise(\"Unterminated group\");\n }\n }\n state.pos = start;\n }\n return false\n};\npp$1.regexp_eatCapturingGroup = function(state) {\n if (state.eat(0x28 /* ( */)) {\n if (this.options.ecmaVersion >= 9) {\n this.regexp_groupSpecifier(state);\n } else if (state.current() === 0x3F /* ? */) {\n state.raise(\"Invalid group\");\n }\n this.regexp_disjunction(state);\n if (state.eat(0x29 /* ) */)) {\n state.numCapturingParens += 1;\n return true\n }\n state.raise(\"Unterminated group\");\n }\n return false\n};\n// RegularExpressionModifiers ::\n// [empty]\n// RegularExpressionModifiers RegularExpressionModifier\npp$1.regexp_eatModifiers = function(state) {\n var modifiers = \"\";\n var ch = 0;\n while ((ch = state.current()) !== -1 && isRegularExpressionModifier(ch)) {\n modifiers += codePointToString(ch);\n state.advance();\n }\n return modifiers\n};\n// RegularExpressionModifier :: one of\n// `i` `m` `s`\nfunction isRegularExpressionModifier(ch) {\n return ch === 0x69 /* i */ || ch === 0x6d /* m */ || ch === 0x73 /* s */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedAtom\npp$1.regexp_eatExtendedAtom = function(state) {\n return (\n state.eat(0x2E /* . */) ||\n this.regexp_eatReverseSolidusAtomEscape(state) ||\n this.regexp_eatCharacterClass(state) ||\n this.regexp_eatUncapturingGroup(state) ||\n this.regexp_eatCapturingGroup(state) ||\n this.regexp_eatInvalidBracedQuantifier(state) ||\n this.regexp_eatExtendedPatternCharacter(state)\n )\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-InvalidBracedQuantifier\npp$1.regexp_eatInvalidBracedQuantifier = function(state) {\n if (this.regexp_eatBracedQuantifier(state, true)) {\n state.raise(\"Nothing to repeat\");\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-SyntaxCharacter\npp$1.regexp_eatSyntaxCharacter = function(state) {\n var ch = state.current();\n if (isSyntaxCharacter(ch)) {\n state.lastIntValue = ch;\n state.advance();\n return true\n }\n return false\n};\nfunction isSyntaxCharacter(ch) {\n return (\n ch === 0x24 /* $ */ ||\n ch >= 0x28 /* ( */ && ch <= 0x2B /* + */ ||\n ch === 0x2E /* . */ ||\n ch === 0x3F /* ? */ ||\n ch >= 0x5B /* [ */ && ch <= 0x5E /* ^ */ ||\n ch >= 0x7B /* { */ && ch <= 0x7D /* } */\n )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-PatternCharacter\n// But eat eager.\npp$1.regexp_eatPatternCharacters = function(state) {\n var start = state.pos;\n var ch = 0;\n while ((ch = state.current()) !== -1 && !isSyntaxCharacter(ch)) {\n state.advance();\n }\n return state.pos !== start\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedPatternCharacter\npp$1.regexp_eatExtendedPatternCharacter = function(state) {\n var ch = state.current();\n if (\n ch !== -1 &&\n ch !== 0x24 /* $ */ &&\n !(ch >= 0x28 /* ( */ && ch <= 0x2B /* + */) &&\n ch !== 0x2E /* . */ &&\n ch !== 0x3F /* ? */ &&\n ch !== 0x5B /* [ */ &&\n ch !== 0x5E /* ^ */ &&\n ch !== 0x7C /* | */\n ) {\n state.advance();\n return true\n }\n return false\n};\n\n// GroupSpecifier ::\n// [empty]\n// `?` GroupName\npp$1.regexp_groupSpecifier = function(state) {\n if (state.eat(0x3F /* ? */)) {\n if (!this.regexp_eatGroupName(state)) { state.raise(\"Invalid group\"); }\n var trackDisjunction = this.options.ecmaVersion >= 16;\n var known = state.groupNames[state.lastStringValue];\n if (known) {\n if (trackDisjunction) {\n for (var i = 0, list = known; i < list.length; i += 1) {\n var altID = list[i];\n\n if (!altID.separatedFrom(state.branchID))\n { state.raise(\"Duplicate capture group name\"); }\n }\n } else {\n state.raise(\"Duplicate capture group name\");\n }\n }\n if (trackDisjunction) {\n (known || (state.groupNames[state.lastStringValue] = [])).push(state.branchID);\n } else {\n state.groupNames[state.lastStringValue] = true;\n }\n }\n};\n\n// GroupName ::\n// `<` RegExpIdentifierName `>`\n// Note: this updates `state.lastStringValue` property with the eaten name.\npp$1.regexp_eatGroupName = function(state) {\n state.lastStringValue = \"\";\n if (state.eat(0x3C /* < */)) {\n if (this.regexp_eatRegExpIdentifierName(state) && state.eat(0x3E /* > */)) {\n return true\n }\n state.raise(\"Invalid capture group name\");\n }\n return false\n};\n\n// RegExpIdentifierName ::\n// RegExpIdentifierStart\n// RegExpIdentifierName RegExpIdentifierPart\n// Note: this updates `state.lastStringValue` property with the eaten name.\npp$1.regexp_eatRegExpIdentifierName = function(state) {\n state.lastStringValue = \"\";\n if (this.regexp_eatRegExpIdentifierStart(state)) {\n state.lastStringValue += codePointToString(state.lastIntValue);\n while (this.regexp_eatRegExpIdentifierPart(state)) {\n state.lastStringValue += codePointToString(state.lastIntValue);\n }\n return true\n }\n return false\n};\n\n// RegExpIdentifierStart ::\n// UnicodeIDStart\n// `$`\n// `_`\n// `\\` RegExpUnicodeEscapeSequence[+U]\npp$1.regexp_eatRegExpIdentifierStart = function(state) {\n var start = state.pos;\n var forceU = this.options.ecmaVersion >= 11;\n var ch = state.current(forceU);\n state.advance(forceU);\n\n if (ch === 0x5C /* \\ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU)) {\n ch = state.lastIntValue;\n }\n if (isRegExpIdentifierStart(ch)) {\n state.lastIntValue = ch;\n return true\n }\n\n state.pos = start;\n return false\n};\nfunction isRegExpIdentifierStart(ch) {\n return isIdentifierStart(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */\n}\n\n// RegExpIdentifierPart ::\n// UnicodeIDContinue\n// `$`\n// `_`\n// `\\` RegExpUnicodeEscapeSequence[+U]\n// <ZWNJ>\n// <ZWJ>\npp$1.regexp_eatRegExpIdentifierPart = function(state) {\n var start = state.pos;\n var forceU = this.options.ecmaVersion >= 11;\n var ch = state.current(forceU);\n state.advance(forceU);\n\n if (ch === 0x5C /* \\ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU)) {\n ch = state.lastIntValue;\n }\n if (isRegExpIdentifierPart(ch)) {\n state.lastIntValue = ch;\n return true\n }\n\n state.pos = start;\n return false\n};\nfunction isRegExpIdentifierPart(ch) {\n return isIdentifierChar(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */ || ch === 0x200C /* <ZWNJ> */ || ch === 0x200D /* <ZWJ> */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-AtomEscape\npp$1.regexp_eatAtomEscape = function(state) {\n if (\n this.regexp_eatBackReference(state) ||\n this.regexp_eatCharacterClassEscape(state) ||\n this.regexp_eatCharacterEscape(state) ||\n (state.switchN && this.regexp_eatKGroupName(state))\n ) {\n return true\n }\n if (state.switchU) {\n // Make the same message as V8.\n if (state.current() === 0x63 /* c */) {\n state.raise(\"Invalid unicode escape\");\n }\n state.raise(\"Invalid escape\");\n }\n return false\n};\npp$1.regexp_eatBackReference = function(state) {\n var start = state.pos;\n if (this.regexp_eatDecimalEscape(state)) {\n var n = state.lastIntValue;\n if (state.switchU) {\n // For SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-atomescape\n if (n > state.maxBackReference) {\n state.maxBackReference = n;\n }\n return true\n }\n if (n <= state.numCapturingParens) {\n return true\n }\n state.pos = start;\n }\n return false\n};\npp$1.regexp_eatKGroupName = function(state) {\n if (state.eat(0x6B /* k */)) {\n if (this.regexp_eatGroupName(state)) {\n state.backReferenceNames.push(state.lastStringValue);\n return true\n }\n state.raise(\"Invalid named reference\");\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-CharacterEscape\npp$1.regexp_eatCharacterEscape = function(state) {\n return (\n this.regexp_eatControlEscape(state) ||\n this.regexp_eatCControlLetter(state) ||\n this.regexp_eatZero(state) ||\n this.regexp_eatHexEscapeSequence(state) ||\n this.regexp_eatRegExpUnicodeEscapeSequence(state, false) ||\n (!state.switchU && this.regexp_eatLegacyOctalEscapeSequence(state)) ||\n this.regexp_eatIdentityEscape(state)\n )\n};\npp$1.regexp_eatCControlLetter = function(state) {\n var start = state.pos;\n if (state.eat(0x63 /* c */)) {\n if (this.regexp_eatControlLetter(state)) {\n return true\n }\n state.pos = start;\n }\n return false\n};\npp$1.regexp_eatZero = function(state) {\n if (state.current() === 0x30 /* 0 */ && !isDecimalDigit(state.lookahead())) {\n state.lastIntValue = 0;\n state.advance();\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ControlEscape\npp$1.regexp_eatControlEscape = function(state) {\n var ch = state.current();\n if (ch === 0x74 /* t */) {\n state.lastIntValue = 0x09; /* \\t */\n state.advance();\n return true\n }\n if (ch === 0x6E /* n */) {\n state.lastIntValue = 0x0A; /* \\n */\n state.advance();\n return true\n }\n if (ch === 0x76 /* v */) {\n state.lastIntValue = 0x0B; /* \\v */\n state.advance();\n return true\n }\n if (ch === 0x66 /* f */) {\n state.lastIntValue = 0x0C; /* \\f */\n state.advance();\n return true\n }\n if (ch === 0x72 /* r */) {\n state.lastIntValue = 0x0D; /* \\r */\n state.advance();\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ControlLetter\npp$1.regexp_eatControlLetter = function(state) {\n var ch = state.current();\n if (isControlLetter(ch)) {\n state.lastIntValue = ch % 0x20;\n state.advance();\n return true\n }\n return false\n};\nfunction isControlLetter(ch) {\n return (\n (ch >= 0x41 /* A */ && ch <= 0x5A /* Z */) ||\n (ch >= 0x61 /* a */ && ch <= 0x7A /* z */)\n )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-RegExpUnicodeEscapeSequence\npp$1.regexp_eatRegExpUnicodeEscapeSequence = function(state, forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n var start = state.pos;\n var switchU = forceU || state.switchU;\n\n if (state.eat(0x75 /* u */)) {\n if (this.regexp_eatFixedHexDigits(state, 4)) {\n var lead = state.lastIntValue;\n if (switchU && lead >= 0xD800 && lead <= 0xDBFF) {\n var leadSurrogateEnd = state.pos;\n if (state.eat(0x5C /* \\ */) && state.eat(0x75 /* u */) && this.regexp_eatFixedHexDigits(state, 4)) {\n var trail = state.lastIntValue;\n if (trail >= 0xDC00 && trail <= 0xDFFF) {\n state.lastIntValue = (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000;\n return true\n }\n }\n state.pos = leadSurrogateEnd;\n state.lastIntValue = lead;\n }\n return true\n }\n if (\n switchU &&\n state.eat(0x7B /* { */) &&\n this.regexp_eatHexDigits(state) &&\n state.eat(0x7D /* } */) &&\n isValidUnicode(state.lastIntValue)\n ) {\n return true\n }\n if (switchU) {\n state.raise(\"Invalid unicode escape\");\n }\n state.pos = start;\n }\n\n return false\n};\nfunction isValidUnicode(ch) {\n return ch >= 0 && ch <= 0x10FFFF\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-IdentityEscape\npp$1.regexp_eatIdentityEscape = function(state) {\n if (state.switchU) {\n if (this.regexp_eatSyntaxCharacter(state)) {\n return true\n }\n if (state.eat(0x2F /* / */)) {\n state.lastIntValue = 0x2F; /* / */\n return true\n }\n return false\n }\n\n var ch = state.current();\n if (ch !== 0x63 /* c */ && (!state.switchN || ch !== 0x6B /* k */)) {\n state.lastIntValue = ch;\n state.advance();\n return true\n }\n\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalEscape\npp$1.regexp_eatDecimalEscape = function(state) {\n state.lastIntValue = 0;\n var ch = state.current();\n if (ch >= 0x31 /* 1 */ && ch <= 0x39 /* 9 */) {\n do {\n state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */);\n state.advance();\n } while ((ch = state.current()) >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */)\n return true\n }\n return false\n};\n\n// Return values used by character set parsing methods, needed to\n// forbid negation of sets that can match strings.\nvar CharSetNone = 0; // Nothing parsed\nvar CharSetOk = 1; // Construct parsed, cannot contain strings\nvar CharSetString = 2; // Construct parsed, can contain strings\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClassEscape\npp$1.regexp_eatCharacterClassEscape = function(state) {\n var ch = state.current();\n\n if (isCharacterClassEscape(ch)) {\n state.lastIntValue = -1;\n state.advance();\n return CharSetOk\n }\n\n var negate = false;\n if (\n state.switchU &&\n this.options.ecmaVersion >= 9 &&\n ((negate = ch === 0x50 /* P */) || ch === 0x70 /* p */)\n ) {\n state.lastIntValue = -1;\n state.advance();\n var result;\n if (\n state.eat(0x7B /* { */) &&\n (result = this.regexp_eatUnicodePropertyValueExpression(state)) &&\n state.eat(0x7D /* } */)\n ) {\n if (negate && result === CharSetString) { state.raise(\"Invalid property name\"); }\n return result\n }\n state.raise(\"Invalid property name\");\n }\n\n return CharSetNone\n};\n\nfunction isCharacterClassEscape(ch) {\n return (\n ch === 0x64 /* d */ ||\n ch === 0x44 /* D */ ||\n ch === 0x73 /* s */ ||\n ch === 0x53 /* S */ ||\n ch === 0x77 /* w */ ||\n ch === 0x57 /* W */\n )\n}\n\n// UnicodePropertyValueExpression ::\n// UnicodePropertyName `=` UnicodePropertyValue\n// LoneUnicodePropertyNameOrValue\npp$1.regexp_eatUnicodePropertyValueExpression = function(state) {\n var start = state.pos;\n\n // UnicodePropertyName `=` UnicodePropertyValue\n if (this.regexp_eatUnicodePropertyName(state) && state.eat(0x3D /* = */)) {\n var name = state.lastStringValue;\n if (this.regexp_eatUnicodePropertyValue(state)) {\n var value = state.lastStringValue;\n this.regexp_validateUnicodePropertyNameAndValue(state, name, value);\n return CharSetOk\n }\n }\n state.pos = start;\n\n // LoneUnicodePropertyNameOrValue\n if (this.regexp_eatLoneUnicodePropertyNameOrValue(state)) {\n var nameOrValue = state.lastStringValue;\n return this.regexp_validateUnicodePropertyNameOrValue(state, nameOrValue)\n }\n return CharSetNone\n};\n\npp$1.regexp_validateUnicodePropertyNameAndValue = function(state, name, value) {\n if (!hasOwn(state.unicodeProperties.nonBinary, name))\n { state.raise(\"Invalid property name\"); }\n if (!state.unicodeProperties.nonBinary[name].test(value))\n { state.raise(\"Invalid property value\"); }\n};\n\npp$1.regexp_validateUnicodePropertyNameOrValue = function(state, nameOrValue) {\n if (state.unicodeProperties.binary.test(nameOrValue)) { return CharSetOk }\n if (state.switchV && state.unicodeProperties.binaryOfStrings.test(nameOrValue)) { return CharSetString }\n state.raise(\"Invalid property name\");\n};\n\n// UnicodePropertyName ::\n// UnicodePropertyNameCharacters\npp$1.regexp_eatUnicodePropertyName = function(state) {\n var ch = 0;\n state.lastStringValue = \"\";\n while (isUnicodePropertyNameCharacter(ch = state.current())) {\n state.lastStringValue += codePointToString(ch);\n state.advance();\n }\n return state.lastStringValue !== \"\"\n};\n\nfunction isUnicodePropertyNameCharacter(ch) {\n return isControlLetter(ch) || ch === 0x5F /* _ */\n}\n\n// UnicodePropertyValue ::\n// UnicodePropertyValueCharacters\npp$1.regexp_eatUnicodePropertyValue = function(state) {\n var ch = 0;\n state.lastStringValue = \"\";\n while (isUnicodePropertyValueCharacter(ch = state.current())) {\n state.lastStringValue += codePointToString(ch);\n state.advance();\n }\n return state.lastStringValue !== \"\"\n};\nfunction isUnicodePropertyValueCharacter(ch) {\n return isUnicodePropertyNameCharacter(ch) || isDecimalDigit(ch)\n}\n\n// LoneUnicodePropertyNameOrValue ::\n// UnicodePropertyValueCharacters\npp$1.regexp_eatLoneUnicodePropertyNameOrValue = function(state) {\n return this.regexp_eatUnicodePropertyValue(state)\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClass\npp$1.regexp_eatCharacterClass = function(state) {\n if (state.eat(0x5B /* [ */)) {\n var negate = state.eat(0x5E /* ^ */);\n var result = this.regexp_classContents(state);\n if (!state.eat(0x5D /* ] */))\n { state.raise(\"Unterminated character class\"); }\n if (negate && result === CharSetString)\n { state.raise(\"Negated character class may contain strings\"); }\n return true\n }\n return false\n};\n\n// https://tc39.es/ecma262/#prod-ClassContents\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassRanges\npp$1.regexp_classContents = function(state) {\n if (state.current() === 0x5D /* ] */) { return CharSetOk }\n if (state.switchV) { return this.regexp_classSetExpression(state) }\n this.regexp_nonEmptyClassRanges(state);\n return CharSetOk\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRanges\n// https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRangesNoDash\npp$1.regexp_nonEmptyClassRanges = function(state) {\n while (this.regexp_eatClassAtom(state)) {\n var left = state.lastIntValue;\n if (state.eat(0x2D /* - */) && this.regexp_eatClassAtom(state)) {\n var right = state.lastIntValue;\n if (state.switchU && (left === -1 || right === -1)) {\n state.raise(\"Invalid character class\");\n }\n if (left !== -1 && right !== -1 && left > right) {\n state.raise(\"Range out of order in character class\");\n }\n }\n }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtom\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtomNoDash\npp$1.regexp_eatClassAtom = function(state) {\n var start = state.pos;\n\n if (state.eat(0x5C /* \\ */)) {\n if (this.regexp_eatClassEscape(state)) {\n return true\n }\n if (state.switchU) {\n // Make the same message as V8.\n var ch$1 = state.current();\n if (ch$1 === 0x63 /* c */ || isOctalDigit(ch$1)) {\n state.raise(\"Invalid class escape\");\n }\n state.raise(\"Invalid escape\");\n }\n state.pos = start;\n }\n\n var ch = state.current();\n if (ch !== 0x5D /* ] */) {\n state.lastIntValue = ch;\n state.advance();\n return true\n }\n\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassEscape\npp$1.regexp_eatClassEscape = function(state) {\n var start = state.pos;\n\n if (state.eat(0x62 /* b */)) {\n state.lastIntValue = 0x08; /* <BS> */\n return true\n }\n\n if (state.switchU && state.eat(0x2D /* - */)) {\n state.lastIntValue = 0x2D; /* - */\n return true\n }\n\n if (!state.switchU && state.eat(0x63 /* c */)) {\n if (this.regexp_eatClassControlLetter(state)) {\n return true\n }\n state.pos = start;\n }\n\n return (\n this.regexp_eatCharacterClassEscape(state) ||\n this.regexp_eatCharacterEscape(state)\n )\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetExpression\n// https://tc39.es/ecma262/#prod-ClassUnion\n// https://tc39.es/ecma262/#prod-ClassIntersection\n// https://tc39.es/ecma262/#prod-ClassSubtraction\npp$1.regexp_classSetExpression = function(state) {\n var result = CharSetOk, subResult;\n if (this.regexp_eatClassSetRange(state)) ; else if (subResult = this.regexp_eatClassSetOperand(state)) {\n if (subResult === CharSetString) { result = CharSetString; }\n // https://tc39.es/ecma262/#prod-ClassIntersection\n var start = state.pos;\n while (state.eatChars([0x26, 0x26] /* && */)) {\n if (\n state.current() !== 0x26 /* & */ &&\n (subResult = this.regexp_eatClassSetOperand(state))\n ) {\n if (subResult !== CharSetString) { result = CharSetOk; }\n continue\n }\n state.raise(\"Invalid character in character class\");\n }\n if (start !== state.pos) { return result }\n // https://tc39.es/ecma262/#prod-ClassSubtraction\n while (state.eatChars([0x2D, 0x2D] /* -- */)) {\n if (this.regexp_eatClassSetOperand(state)) { continue }\n state.raise(\"Invalid character in character class\");\n }\n if (start !== state.pos) { return result }\n } else {\n state.raise(\"Invalid character in character class\");\n }\n // https://tc39.es/ecma262/#prod-ClassUnion\n for (;;) {\n if (this.regexp_eatClassSetRange(state)) { continue }\n subResult = this.regexp_eatClassSetOperand(state);\n if (!subResult) { return result }\n if (subResult === CharSetString) { result = CharSetString; }\n }\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetRange\npp$1.regexp_eatClassSetRange = function(state) {\n var start = state.pos;\n if (this.regexp_eatClassSetCharacter(state)) {\n var left = state.lastIntValue;\n if (state.eat(0x2D /* - */) && this.regexp_eatClassSetCharacter(state)) {\n var right = state.lastIntValue;\n if (left !== -1 && right !== -1 && left > right) {\n state.raise(\"Range out of order in character class\");\n }\n return true\n }\n state.pos = start;\n }\n return false\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetOperand\npp$1.regexp_eatClassSetOperand = function(state) {\n if (this.regexp_eatClassSetCharacter(state)) { return CharSetOk }\n return this.regexp_eatClassStringDisjunction(state) || this.regexp_eatNestedClass(state)\n};\n\n// https://tc39.es/ecma262/#prod-NestedClass\npp$1.regexp_eatNestedClass = function(state) {\n var start = state.pos;\n if (state.eat(0x5B /* [ */)) {\n var negate = state.eat(0x5E /* ^ */);\n var result = this.regexp_classContents(state);\n if (state.eat(0x5D /* ] */)) {\n if (negate && result === CharSetString) {\n state.raise(\"Negated character class may contain strings\");\n }\n return result\n }\n state.pos = start;\n }\n if (state.eat(0x5C /* \\ */)) {\n var result$1 = this.regexp_eatCharacterClassEscape(state);\n if (result$1) {\n return result$1\n }\n state.pos = start;\n }\n return null\n};\n\n// https://tc39.es/ecma262/#prod-ClassStringDisjunction\npp$1.regexp_eatClassStringDisjunction = function(state) {\n var start = state.pos;\n if (state.eatChars([0x5C, 0x71] /* \\q */)) {\n if (state.eat(0x7B /* { */)) {\n var result = this.regexp_classStringDisjunctionContents(state);\n if (state.eat(0x7D /* } */)) {\n return result\n }\n } else {\n // Make the same message as V8.\n state.raise(\"Invalid escape\");\n }\n state.pos = start;\n }\n return null\n};\n\n// https://tc39.es/ecma262/#prod-ClassStringDisjunctionContents\npp$1.regexp_classStringDisjunctionContents = function(state) {\n var result = this.regexp_classString(state);\n while (state.eat(0x7C /* | */)) {\n if (this.regexp_classString(state) === CharSetString) { result = CharSetString; }\n }\n return result\n};\n\n// https://tc39.es/ecma262/#prod-ClassString\n// https://tc39.es/ecma262/#prod-NonEmptyClassString\npp$1.regexp_classString = function(state) {\n var count = 0;\n while (this.regexp_eatClassSetCharacter(state)) { count++; }\n return count === 1 ? CharSetOk : CharSetString\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetCharacter\npp$1.regexp_eatClassSetCharacter = function(state) {\n var start = state.pos;\n if (state.eat(0x5C /* \\ */)) {\n if (\n this.regexp_eatCharacterEscape(state) ||\n this.regexp_eatClassSetReservedPunctuator(state)\n ) {\n return true\n }\n if (state.eat(0x62 /* b */)) {\n state.lastIntValue = 0x08; /* <BS> */\n return true\n }\n state.pos = start;\n return false\n }\n var ch = state.current();\n if (ch < 0 || ch === state.lookahead() && isClassSetReservedDoublePunctuatorCharacter(ch)) { return false }\n if (isClassSetSyntaxCharacter(ch)) { return false }\n state.advance();\n state.lastIntValue = ch;\n return true\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetReservedDoublePunctuator\nfunction isClassSetReservedDoublePunctuatorCharacter(ch) {\n return (\n ch === 0x21 /* ! */ ||\n ch >= 0x23 /* # */ && ch <= 0x26 /* & */ ||\n ch >= 0x2A /* * */ && ch <= 0x2C /* , */ ||\n ch === 0x2E /* . */ ||\n ch >= 0x3A /* : */ && ch <= 0x40 /* @ */ ||\n ch === 0x5E /* ^ */ ||\n ch === 0x60 /* ` */ ||\n ch === 0x7E /* ~ */\n )\n}\n\n// https://tc39.es/ecma262/#prod-ClassSetSyntaxCharacter\nfunction isClassSetSyntaxCharacter(ch) {\n return (\n ch === 0x28 /* ( */ ||\n ch === 0x29 /* ) */ ||\n ch === 0x2D /* - */ ||\n ch === 0x2F /* / */ ||\n ch >= 0x5B /* [ */ && ch <= 0x5D /* ] */ ||\n ch >= 0x7B /* { */ && ch <= 0x7D /* } */\n )\n}\n\n// https://tc39.es/ecma262/#prod-ClassSetReservedPunctuator\npp$1.regexp_eatClassSetReservedPunctuator = function(state) {\n var ch = state.current();\n if (isClassSetReservedPunctuator(ch)) {\n state.lastIntValue = ch;\n state.advance();\n return true\n }\n return false\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetReservedPunctuator\nfunction isClassSetReservedPunctuator(ch) {\n return (\n ch === 0x21 /* ! */ ||\n ch === 0x23 /* # */ ||\n ch === 0x25 /* % */ ||\n ch === 0x26 /* & */ ||\n ch === 0x2C /* , */ ||\n ch === 0x2D /* - */ ||\n ch >= 0x3A /* : */ && ch <= 0x3E /* > */ ||\n ch === 0x40 /* @ */ ||\n ch === 0x60 /* ` */ ||\n ch === 0x7E /* ~ */\n )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassControlLetter\npp$1.regexp_eatClassControlLetter = function(state) {\n var ch = state.current();\n if (isDecimalDigit(ch) || ch === 0x5F /* _ */) {\n state.lastIntValue = ch % 0x20;\n state.advance();\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence\npp$1.regexp_eatHexEscapeSequence = function(state) {\n var start = state.pos;\n if (state.eat(0x78 /* x */)) {\n if (this.regexp_eatFixedHexDigits(state, 2)) {\n return true\n }\n if (state.switchU) {\n state.raise(\"Invalid escape\");\n }\n state.pos = start;\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalDigits\npp$1.regexp_eatDecimalDigits = function(state) {\n var start = state.pos;\n var ch = 0;\n state.lastIntValue = 0;\n while (isDecimalDigit(ch = state.current())) {\n state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */);\n state.advance();\n }\n return state.pos !== start\n};\nfunction isDecimalDigit(ch) {\n return ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigits\npp$1.regexp_eatHexDigits = function(state) {\n var start = state.pos;\n var ch = 0;\n state.lastIntValue = 0;\n while (isHexDigit(ch = state.current())) {\n state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch);\n state.advance();\n }\n return state.pos !== start\n};\nfunction isHexDigit(ch) {\n return (\n (ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */) ||\n (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) ||\n (ch >= 0x61 /* a */ && ch <= 0x66 /* f */)\n )\n}\nfunction hexToInt(ch) {\n if (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) {\n return 10 + (ch - 0x41 /* A */)\n }\n if (ch >= 0x61 /* a */ && ch <= 0x66 /* f */) {\n return 10 + (ch - 0x61 /* a */)\n }\n return ch - 0x30 /* 0 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-LegacyOctalEscapeSequence\n// Allows only 0-377(octal) i.e. 0-255(decimal).\npp$1.regexp_eatLegacyOctalEscapeSequence = function(state) {\n if (this.regexp_eatOctalDigit(state)) {\n var n1 = state.lastIntValue;\n if (this.regexp_eatOctalDigit(state)) {\n var n2 = state.lastIntValue;\n if (n1 <= 3 && this.regexp_eatOctalDigit(state)) {\n state.lastIntValue = n1 * 64 + n2 * 8 + state.lastIntValue;\n } else {\n state.lastIntValue = n1 * 8 + n2;\n }\n } else {\n state.lastIntValue = n1;\n }\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-OctalDigit\npp$1.regexp_eatOctalDigit = function(state) {\n var ch = state.current();\n if (isOctalDigit(ch)) {\n state.lastIntValue = ch - 0x30; /* 0 */\n state.advance();\n return true\n }\n state.lastIntValue = 0;\n return false\n};\nfunction isOctalDigit(ch) {\n return ch >= 0x30 /* 0 */ && ch <= 0x37 /* 7 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Hex4Digits\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigit\n// And HexDigit HexDigit in https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence\npp$1.regexp_eatFixedHexDigits = function(state, length) {\n var start = state.pos;\n state.lastIntValue = 0;\n for (var i = 0; i < length; ++i) {\n var ch = state.current();\n if (!isHexDigit(ch)) {\n state.pos = start;\n return false\n }\n state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch);\n state.advance();\n }\n return true\n};\n\n// Object type used to represent tokens. Note that normally, tokens\n// simply exist as properties on the parser object. This is only\n// used for the onToken callback and the external tokenizer.\n\nvar Token = function Token(p) {\n this.type = p.type;\n this.value = p.value;\n this.start = p.start;\n this.end = p.end;\n if (p.options.locations)\n { this.loc = new SourceLocation(p, p.startLoc, p.endLoc); }\n if (p.options.ranges)\n { this.range = [p.start, p.end]; }\n};\n\n// ## Tokenizer\n\nvar pp = Parser.prototype;\n\n// Move to the next token\n\npp.next = function(ignoreEscapeSequenceInKeyword) {\n if (!ignoreEscapeSequenceInKeyword && this.type.keyword && this.containsEsc)\n { this.raiseRecoverable(this.start, \"Escape sequence in keyword \" + this.type.keyword); }\n if (this.options.onToken)\n { this.options.onToken(new Token(this)); }\n\n this.lastTokEnd = this.end;\n this.lastTokStart = this.start;\n this.lastTokEndLoc = this.endLoc;\n this.lastTokStartLoc = this.startLoc;\n this.nextToken();\n};\n\npp.getToken = function() {\n this.next();\n return new Token(this)\n};\n\n// If we're in an ES6 environment, make parsers iterable\nif (typeof Symbol !== \"undefined\")\n { pp[Symbol.iterator] = function() {\n var this$1$1 = this;\n\n return {\n next: function () {\n var token = this$1$1.getToken();\n return {\n done: token.type === types$1.eof,\n value: token\n }\n }\n }\n }; }\n\n// Toggle strict mode. Re-reads the next number or string to please\n// pedantic tests (`\"use strict\"; 010;` should fail).\n\n// Read a single token, updating the parser object's token-related\n// properties.\n\npp.nextToken = function() {\n var curContext = this.curContext();\n if (!curContext || !curContext.preserveSpace) { this.skipSpace(); }\n\n this.start = this.pos;\n if (this.options.locations) { this.startLoc = this.curPosition(); }\n if (this.pos >= this.input.length) { return this.finishToken(types$1.eof) }\n\n if (curContext.override) { return curContext.override(this) }\n else { this.readToken(this.fullCharCodeAtPos()); }\n};\n\npp.readToken = function(code) {\n // Identifier or keyword. '\\uXXXX' sequences are allowed in\n // identifiers, so '\\' also dispatches to that.\n if (isIdentifierStart(code, this.options.ecmaVersion >= 6) || code === 92 /* '\\' */)\n { return this.readWord() }\n\n return this.getTokenFromCode(code)\n};\n\npp.fullCharCodeAt = function(pos) {\n var code = this.input.charCodeAt(pos);\n if (code <= 0xd7ff || code >= 0xdc00) { return code }\n var next = this.input.charCodeAt(pos + 1);\n return next <= 0xdbff || next >= 0xe000 ? code : (code << 10) + next - 0x35fdc00\n};\n\npp.fullCharCodeAtPos = function() {\n return this.fullCharCodeAt(this.pos)\n};\n\npp.skipBlockComment = function() {\n var startLoc = this.options.onComment && this.curPosition();\n var start = this.pos, end = this.input.indexOf(\"*/\", this.pos += 2);\n if (end === -1) { this.raise(this.pos - 2, \"Unterminated comment\"); }\n this.pos = end + 2;\n if (this.options.locations) {\n for (var nextBreak = (void 0), pos = start; (nextBreak = nextLineBreak(this.input, pos, this.pos)) > -1;) {\n ++this.curLine;\n pos = this.lineStart = nextBreak;\n }\n }\n if (this.options.onComment)\n { this.options.onComment(true, this.input.slice(start + 2, end), start, this.pos,\n startLoc, this.curPosition()); }\n};\n\npp.skipLineComment = function(startSkip) {\n var start = this.pos;\n var startLoc = this.options.onComment && this.curPosition();\n var ch = this.input.charCodeAt(this.pos += startSkip);\n while (this.pos < this.input.length && !isNewLine(ch)) {\n ch = this.input.charCodeAt(++this.pos);\n }\n if (this.options.onComment)\n { this.options.onComment(false, this.input.slice(start + startSkip, this.pos), start, this.pos,\n startLoc, this.curPosition()); }\n};\n\n// Called at the start of the parse and after every token. Skips\n// whitespace and comments, and.\n\npp.skipSpace = function() {\n loop: while (this.pos < this.input.length) {\n var ch = this.input.charCodeAt(this.pos);\n switch (ch) {\n case 32: case 160: // ' '\n ++this.pos;\n break\n case 13:\n if (this.input.charCodeAt(this.pos + 1) === 10) {\n ++this.pos;\n }\n case 10: case 8232: case 8233:\n ++this.pos;\n if (this.options.locations) {\n ++this.curLine;\n this.lineStart = this.pos;\n }\n break\n case 47: // '/'\n switch (this.input.charCodeAt(this.pos + 1)) {\n case 42: // '*'\n this.skipBlockComment();\n break\n case 47:\n this.skipLineComment(2);\n break\n default:\n break loop\n }\n break\n default:\n if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) {\n ++this.pos;\n } else {\n break loop\n }\n }\n }\n};\n\n// Called at the end of every token. Sets `end`, `val`, and\n// maintains `context` and `exprAllowed`, and skips the space after\n// the token, so that the next one's `start` will point at the\n// right position.\n\npp.finishToken = function(type, val) {\n this.end = this.pos;\n if (this.options.locations) { this.endLoc = this.curPosition(); }\n var prevType = this.type;\n this.type = type;\n this.value = val;\n\n this.updateContext(prevType);\n};\n\n// ### Token reading\n\n// This is the function that is called to fetch the next token. It\n// is somewhat obscure, because it works in character codes rather\n// than characters, and because operator parsing has been inlined\n// into it.\n//\n// All in the name of speed.\n//\npp.readToken_dot = function() {\n var next = this.input.charCodeAt(this.pos + 1);\n if (next >= 48 && next <= 57) { return this.readNumber(true) }\n var next2 = this.input.charCodeAt(this.pos + 2);\n if (this.options.ecmaVersion >= 6 && next === 46 && next2 === 46) { // 46 = dot '.'\n this.pos += 3;\n return this.finishToken(types$1.ellipsis)\n } else {\n ++this.pos;\n return this.finishToken(types$1.dot)\n }\n};\n\npp.readToken_slash = function() { // '/'\n var next = this.input.charCodeAt(this.pos + 1);\n if (this.exprAllowed) { ++this.pos; return this.readRegexp() }\n if (next === 61) { return this.finishOp(types$1.assign, 2) }\n return this.finishOp(types$1.slash, 1)\n};\n\npp.readToken_mult_modulo_exp = function(code) { // '%*'\n var next = this.input.charCodeAt(this.pos + 1);\n var size = 1;\n var tokentype = code === 42 ? types$1.star : types$1.modulo;\n\n // exponentiation operator ** and **=\n if (this.options.ecmaVersion >= 7 && code === 42 && next === 42) {\n ++size;\n tokentype = types$1.starstar;\n next = this.input.charCodeAt(this.pos + 2);\n }\n\n if (next === 61) { return this.finishOp(types$1.assign, size + 1) }\n return this.finishOp(tokentype, size)\n};\n\npp.readToken_pipe_amp = function(code) { // '|&'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === code) {\n if (this.options.ecmaVersion >= 12) {\n var next2 = this.input.charCodeAt(this.pos + 2);\n if (next2 === 61) { return this.finishOp(types$1.assign, 3) }\n }\n return this.finishOp(code === 124 ? types$1.logicalOR : types$1.logicalAND, 2)\n }\n if (next === 61) { return this.finishOp(types$1.assign, 2) }\n return this.finishOp(code === 124 ? types$1.bitwiseOR : types$1.bitwiseAND, 1)\n};\n\npp.readToken_caret = function() { // '^'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 61) { return this.finishOp(types$1.assign, 2) }\n return this.finishOp(types$1.bitwiseXOR, 1)\n};\n\npp.readToken_plus_min = function(code) { // '+-'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === code) {\n if (next === 45 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 62 &&\n (this.lastTokEnd === 0 || lineBreak.test(this.input.slice(this.lastTokEnd, this.pos)))) {\n // A `-->` line comment\n this.skipLineComment(3);\n this.skipSpace();\n return this.nextToken()\n }\n return this.finishOp(types$1.incDec, 2)\n }\n if (next === 61) { return this.finishOp(types$1.assign, 2) }\n return this.finishOp(types$1.plusMin, 1)\n};\n\npp.readToken_lt_gt = function(code) { // '<>'\n var next = this.input.charCodeAt(this.pos + 1);\n var size = 1;\n if (next === code) {\n size = code === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2;\n if (this.input.charCodeAt(this.pos + size) === 61) { return this.finishOp(types$1.assign, size + 1) }\n return this.finishOp(types$1.bitShift, size)\n }\n if (next === 33 && code === 60 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 45 &&\n this.input.charCodeAt(this.pos + 3) === 45) {\n // `<!--`, an XML-style comment that should be interpreted as a line comment\n this.skipLineComment(4);\n this.skipSpace();\n return this.nextToken()\n }\n if (next === 61) { size = 2; }\n return this.finishOp(types$1.relational, size)\n};\n\npp.readToken_eq_excl = function(code) { // '=!'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 61) { return this.finishOp(types$1.equality, this.input.charCodeAt(this.pos + 2) === 61 ? 3 : 2) }\n if (code === 61 && next === 62 && this.options.ecmaVersion >= 6) { // '=>'\n this.pos += 2;\n return this.finishToken(types$1.arrow)\n }\n return this.finishOp(code === 61 ? types$1.eq : types$1.prefix, 1)\n};\n\npp.readToken_question = function() { // '?'\n var ecmaVersion = this.options.ecmaVersion;\n if (ecmaVersion >= 11) {\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 46) {\n var next2 = this.input.charCodeAt(this.pos + 2);\n if (next2 < 48 || next2 > 57) { return this.finishOp(types$1.questionDot, 2) }\n }\n if (next === 63) {\n if (ecmaVersion >= 12) {\n var next2$1 = this.input.charCodeAt(this.pos + 2);\n if (next2$1 === 61) { return this.finishOp(types$1.assign, 3) }\n }\n return this.finishOp(types$1.coalesce, 2)\n }\n }\n return this.finishOp(types$1.question, 1)\n};\n\npp.readToken_numberSign = function() { // '#'\n var ecmaVersion = this.options.ecmaVersion;\n var code = 35; // '#'\n if (ecmaVersion >= 13) {\n ++this.pos;\n code = this.fullCharCodeAtPos();\n if (isIdentifierStart(code, true) || code === 92 /* '\\' */) {\n return this.finishToken(types$1.privateId, this.readWord1())\n }\n }\n\n this.raise(this.pos, \"Unexpected character '\" + codePointToString(code) + \"'\");\n};\n\npp.getTokenFromCode = function(code) {\n switch (code) {\n // The interpretation of a dot depends on whether it is followed\n // by a digit or another two dots.\n case 46: // '.'\n return this.readToken_dot()\n\n // Punctuation tokens.\n case 40: ++this.pos; return this.finishToken(types$1.parenL)\n case 41: ++this.pos; return this.finishToken(types$1.parenR)\n case 59: ++this.pos; return this.finishToken(types$1.semi)\n case 44: ++this.pos; return this.finishToken(types$1.comma)\n case 91: ++this.pos; return this.finishToken(types$1.bracketL)\n case 93: ++this.pos; return this.finishToken(types$1.bracketR)\n case 123: ++this.pos; return this.finishToken(types$1.braceL)\n case 125: ++this.pos; return this.finishToken(types$1.braceR)\n case 58: ++this.pos; return this.finishToken(types$1.colon)\n\n case 96: // '`'\n if (this.options.ecmaVersion < 6) { break }\n ++this.pos;\n return this.finishToken(types$1.backQuote)\n\n case 48: // '0'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 120 || next === 88) { return this.readRadixNumber(16) } // '0x', '0X' - hex number\n if (this.options.ecmaVersion >= 6) {\n if (next === 111 || next === 79) { return this.readRadixNumber(8) } // '0o', '0O' - octal number\n if (next === 98 || next === 66) { return this.readRadixNumber(2) } // '0b', '0B' - binary number\n }\n\n // Anything else beginning with a digit is an integer, octal\n // number, or float.\n case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: // 1-9\n return this.readNumber(false)\n\n // Quotes produce strings.\n case 34: case 39: // '\"', \"'\"\n return this.readString(code)\n\n // Operators are parsed inline in tiny state machines. '=' (61) is\n // often referred to. `finishOp` simply skips the amount of\n // characters it is given as second argument, and returns a token\n // of the type given by its first argument.\n case 47: // '/'\n return this.readToken_slash()\n\n case 37: case 42: // '%*'\n return this.readToken_mult_modulo_exp(code)\n\n case 124: case 38: // '|&'\n return this.readToken_pipe_amp(code)\n\n case 94: // '^'\n return this.readToken_caret()\n\n case 43: case 45: // '+-'\n return this.readToken_plus_min(code)\n\n case 60: case 62: // '<>'\n return this.readToken_lt_gt(code)\n\n case 61: case 33: // '=!'\n return this.readToken_eq_excl(code)\n\n case 63: // '?'\n return this.readToken_question()\n\n case 126: // '~'\n return this.finishOp(types$1.prefix, 1)\n\n case 35: // '#'\n return this.readToken_numberSign()\n }\n\n this.raise(this.pos, \"Unexpected character '\" + codePointToString(code) + \"'\");\n};\n\npp.finishOp = function(type, size) {\n var str = this.input.slice(this.pos, this.pos + size);\n this.pos += size;\n return this.finishToken(type, str)\n};\n\npp.readRegexp = function() {\n var escaped, inClass, start = this.pos;\n for (;;) {\n if (this.pos >= this.input.length) { this.raise(start, \"Unterminated regular expression\"); }\n var ch = this.input.charAt(this.pos);\n if (lineBreak.test(ch)) { this.raise(start, \"Unterminated regular expression\"); }\n if (!escaped) {\n if (ch === \"[\") { inClass = true; }\n else if (ch === \"]\" && inClass) { inClass = false; }\n else if (ch === \"/\" && !inClass) { break }\n escaped = ch === \"\\\\\";\n } else { escaped = false; }\n ++this.pos;\n }\n var pattern = this.input.slice(start, this.pos);\n ++this.pos;\n var flagsStart = this.pos;\n var flags = this.readWord1();\n if (this.containsEsc) { this.unexpected(flagsStart); }\n\n // Validate pattern\n var state = this.regexpState || (this.regexpState = new RegExpValidationState(this));\n state.reset(start, pattern, flags);\n this.validateRegExpFlags(state);\n this.validateRegExpPattern(state);\n\n // Create Literal#value property value.\n var value = null;\n try {\n value = new RegExp(pattern, flags);\n } catch (e) {\n // ESTree requires null if it failed to instantiate RegExp object.\n // https://github.com/estree/estree/blob/a27003adf4fd7bfad44de9cef372a2eacd527b1c/es5.md#regexpliteral\n }\n\n return this.finishToken(types$1.regexp, {pattern: pattern, flags: flags, value: value})\n};\n\n// Read an integer in the given radix. Return null if zero digits\n// were read, the integer value otherwise. When `len` is given, this\n// will return `null` unless the integer has exactly `len` digits.\n\npp.readInt = function(radix, len, maybeLegacyOctalNumericLiteral) {\n // `len` is used for character escape sequences. In that case, disallow separators.\n var allowSeparators = this.options.ecmaVersion >= 12 && len === undefined;\n\n // `maybeLegacyOctalNumericLiteral` is true if it doesn't have prefix (0x,0o,0b)\n // and isn't fraction part nor exponent part. In that case, if the first digit\n // is zero then disallow separators.\n var isLegacyOctalNumericLiteral = maybeLegacyOctalNumericLiteral && this.input.charCodeAt(this.pos) === 48;\n\n var start = this.pos, total = 0, lastCode = 0;\n for (var i = 0, e = len == null ? Infinity : len; i < e; ++i, ++this.pos) {\n var code = this.input.charCodeAt(this.pos), val = (void 0);\n\n if (allowSeparators && code === 95) {\n if (isLegacyOctalNumericLiteral) { this.raiseRecoverable(this.pos, \"Numeric separator is not allowed in legacy octal numeric literals\"); }\n if (lastCode === 95) { this.raiseRecoverable(this.pos, \"Numeric separator must be exactly one underscore\"); }\n if (i === 0) { this.raiseRecoverable(this.pos, \"Numeric separator is not allowed at the first of digits\"); }\n lastCode = code;\n continue\n }\n\n if (code >= 97) { val = code - 97 + 10; } // a\n else if (code >= 65) { val = code - 65 + 10; } // A\n else if (code >= 48 && code <= 57) { val = code - 48; } // 0-9\n else { val = Infinity; }\n if (val >= radix) { break }\n lastCode = code;\n total = total * radix + val;\n }\n\n if (allowSeparators && lastCode === 95) { this.raiseRecoverable(this.pos - 1, \"Numeric separator is not allowed at the last of digits\"); }\n if (this.pos === start || len != null && this.pos - start !== len) { return null }\n\n return total\n};\n\nfunction stringToNumber(str, isLegacyOctalNumericLiteral) {\n if (isLegacyOctalNumericLiteral) {\n return parseInt(str, 8)\n }\n\n // `parseFloat(value)` stops parsing at the first numeric separator then returns a wrong value.\n return parseFloat(str.replace(/_/g, \"\"))\n}\n\nfunction stringToBigInt(str) {\n if (typeof BigInt !== \"function\") {\n return null\n }\n\n // `BigInt(value)` throws syntax error if the string contains numeric separators.\n return BigInt(str.replace(/_/g, \"\"))\n}\n\npp.readRadixNumber = function(radix) {\n var start = this.pos;\n this.pos += 2; // 0x\n var val = this.readInt(radix);\n if (val == null) { this.raise(this.start + 2, \"Expected number in radix \" + radix); }\n if (this.options.ecmaVersion >= 11 && this.input.charCodeAt(this.pos) === 110) {\n val = stringToBigInt(this.input.slice(start, this.pos));\n ++this.pos;\n } else if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n return this.finishToken(types$1.num, val)\n};\n\n// Read an integer, octal integer, or floating-point number.\n\npp.readNumber = function(startsWithDot) {\n var start = this.pos;\n if (!startsWithDot && this.readInt(10, undefined, true) === null) { this.raise(start, \"Invalid number\"); }\n var octal = this.pos - start >= 2 && this.input.charCodeAt(start) === 48;\n if (octal && this.strict) { this.raise(start, \"Invalid number\"); }\n var next = this.input.charCodeAt(this.pos);\n if (!octal && !startsWithDot && this.options.ecmaVersion >= 11 && next === 110) {\n var val$1 = stringToBigInt(this.input.slice(start, this.pos));\n ++this.pos;\n if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n return this.finishToken(types$1.num, val$1)\n }\n if (octal && /[89]/.test(this.input.slice(start, this.pos))) { octal = false; }\n if (next === 46 && !octal) { // '.'\n ++this.pos;\n this.readInt(10);\n next = this.input.charCodeAt(this.pos);\n }\n if ((next === 69 || next === 101) && !octal) { // 'eE'\n next = this.input.charCodeAt(++this.pos);\n if (next === 43 || next === 45) { ++this.pos; } // '+-'\n if (this.readInt(10) === null) { this.raise(start, \"Invalid number\"); }\n }\n if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n\n var val = stringToNumber(this.input.slice(start, this.pos), octal);\n return this.finishToken(types$1.num, val)\n};\n\n// Read a string value, interpreting backslash-escapes.\n\npp.readCodePoint = function() {\n var ch = this.input.charCodeAt(this.pos), code;\n\n if (ch === 123) { // '{'\n if (this.options.ecmaVersion < 6) { this.unexpected(); }\n var codePos = ++this.pos;\n code = this.readHexChar(this.input.indexOf(\"}\", this.pos) - this.pos);\n ++this.pos;\n if (code > 0x10FFFF) { this.invalidStringToken(codePos, \"Code point out of bounds\"); }\n } else {\n code = this.readHexChar(4);\n }\n return code\n};\n\npp.readString = function(quote) {\n var out = \"\", chunkStart = ++this.pos;\n for (;;) {\n if (this.pos >= this.input.length) { this.raise(this.start, \"Unterminated string constant\"); }\n var ch = this.input.charCodeAt(this.pos);\n if (ch === quote) { break }\n if (ch === 92) { // '\\'\n out += this.input.slice(chunkStart, this.pos);\n out += this.readEscapedChar(false);\n chunkStart = this.pos;\n } else if (ch === 0x2028 || ch === 0x2029) {\n if (this.options.ecmaVersion < 10) { this.raise(this.start, \"Unterminated string constant\"); }\n ++this.pos;\n if (this.options.locations) {\n this.curLine++;\n this.lineStart = this.pos;\n }\n } else {\n if (isNewLine(ch)) { this.raise(this.start, \"Unterminated string constant\"); }\n ++this.pos;\n }\n }\n out += this.input.slice(chunkStart, this.pos++);\n return this.finishToken(types$1.string, out)\n};\n\n// Reads template string tokens.\n\nvar INVALID_TEMPLATE_ESCAPE_ERROR = {};\n\npp.tryReadTemplateToken = function() {\n this.inTemplateElement = true;\n try {\n this.readTmplToken();\n } catch (err) {\n if (err === INVALID_TEMPLATE_ESCAPE_ERROR) {\n this.readInvalidTemplateToken();\n } else {\n throw err\n }\n }\n\n this.inTemplateElement = false;\n};\n\npp.invalidStringToken = function(position, message) {\n if (this.inTemplateElement && this.options.ecmaVersion >= 9) {\n throw INVALID_TEMPLATE_ESCAPE_ERROR\n } else {\n this.raise(position, message);\n }\n};\n\npp.readTmplToken = function() {\n var out = \"\", chunkStart = this.pos;\n for (;;) {\n if (this.pos >= this.input.length) { this.raise(this.start, \"Unterminated template\"); }\n var ch = this.input.charCodeAt(this.pos);\n if (ch === 96 || ch === 36 && this.input.charCodeAt(this.pos + 1) === 123) { // '`', '${'\n if (this.pos === this.start && (this.type === types$1.template || this.type === types$1.invalidTemplate)) {\n if (ch === 36) {\n this.pos += 2;\n return this.finishToken(types$1.dollarBraceL)\n } else {\n ++this.pos;\n return this.finishToken(types$1.backQuote)\n }\n }\n out += this.input.slice(chunkStart, this.pos);\n return this.finishToken(types$1.template, out)\n }\n if (ch === 92) { // '\\'\n out += this.input.slice(chunkStart, this.pos);\n out += this.readEscapedChar(true);\n chunkStart = this.pos;\n } else if (isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.pos);\n ++this.pos;\n switch (ch) {\n case 13:\n if (this.input.charCodeAt(this.pos) === 10) { ++this.pos; }\n case 10:\n out += \"\\n\";\n break\n default:\n out += String.fromCharCode(ch);\n break\n }\n if (this.options.locations) {\n ++this.curLine;\n this.lineStart = this.pos;\n }\n chunkStart = this.pos;\n } else {\n ++this.pos;\n }\n }\n};\n\n// Reads a template token to search for the end, without validating any escape sequences\npp.readInvalidTemplateToken = function() {\n for (; this.pos < this.input.length; this.pos++) {\n switch (this.input[this.pos]) {\n case \"\\\\\":\n ++this.pos;\n break\n\n case \"$\":\n if (this.input[this.pos + 1] !== \"{\") { break }\n // fall through\n case \"`\":\n return this.finishToken(types$1.invalidTemplate, this.input.slice(this.start, this.pos))\n\n case \"\\r\":\n if (this.input[this.pos + 1] === \"\\n\") { ++this.pos; }\n // fall through\n case \"\\n\": case \"\\u2028\": case \"\\u2029\":\n ++this.curLine;\n this.lineStart = this.pos + 1;\n break\n }\n }\n this.raise(this.start, \"Unterminated template\");\n};\n\n// Used to read escaped characters\n\npp.readEscapedChar = function(inTemplate) {\n var ch = this.input.charCodeAt(++this.pos);\n ++this.pos;\n switch (ch) {\n case 110: return \"\\n\" // 'n' -> '\\n'\n case 114: return \"\\r\" // 'r' -> '\\r'\n case 120: return String.fromCharCode(this.readHexChar(2)) // 'x'\n case 117: return codePointToString(this.readCodePoint()) // 'u'\n case 116: return \"\\t\" // 't' -> '\\t'\n case 98: return \"\\b\" // 'b' -> '\\b'\n case 118: return \"\\u000b\" // 'v' -> '\\u000b'\n case 102: return \"\\f\" // 'f' -> '\\f'\n case 13: if (this.input.charCodeAt(this.pos) === 10) { ++this.pos; } // '\\r\\n'\n case 10: // ' \\n'\n if (this.options.locations) { this.lineStart = this.pos; ++this.curLine; }\n return \"\"\n case 56:\n case 57:\n if (this.strict) {\n this.invalidStringToken(\n this.pos - 1,\n \"Invalid escape sequence\"\n );\n }\n if (inTemplate) {\n var codePos = this.pos - 1;\n\n this.invalidStringToken(\n codePos,\n \"Invalid escape sequence in template string\"\n );\n }\n default:\n if (ch >= 48 && ch <= 55) {\n var octalStr = this.input.substr(this.pos - 1, 3).match(/^[0-7]+/)[0];\n var octal = parseInt(octalStr, 8);\n if (octal > 255) {\n octalStr = octalStr.slice(0, -1);\n octal = parseInt(octalStr, 8);\n }\n this.pos += octalStr.length - 1;\n ch = this.input.charCodeAt(this.pos);\n if ((octalStr !== \"0\" || ch === 56 || ch === 57) && (this.strict || inTemplate)) {\n this.invalidStringToken(\n this.pos - 1 - octalStr.length,\n inTemplate\n ? \"Octal literal in template string\"\n : \"Octal literal in strict mode\"\n );\n }\n return String.fromCharCode(octal)\n }\n if (isNewLine(ch)) {\n // Unicode new line characters after \\ get removed from output in both\n // template literals and strings\n if (this.options.locations) { this.lineStart = this.pos; ++this.curLine; }\n return \"\"\n }\n return String.fromCharCode(ch)\n }\n};\n\n// Used to read character escape sequences ('\\x', '\\u', '\\U').\n\npp.readHexChar = function(len) {\n var codePos = this.pos;\n var n = this.readInt(16, len);\n if (n === null) { this.invalidStringToken(codePos, \"Bad character escape sequence\"); }\n return n\n};\n\n// Read an identifier, and return it as a string. Sets `this.containsEsc`\n// to whether the word contained a '\\u' escape.\n//\n// Incrementally adds only escaped chars, adding other chunks as-is\n// as a micro-optimization.\n\npp.readWord1 = function() {\n this.containsEsc = false;\n var word = \"\", first = true, chunkStart = this.pos;\n var astral = this.options.ecmaVersion >= 6;\n while (this.pos < this.input.length) {\n var ch = this.fullCharCodeAtPos();\n if (isIdentifierChar(ch, astral)) {\n this.pos += ch <= 0xffff ? 1 : 2;\n } else if (ch === 92) { // \"\\\"\n this.containsEsc = true;\n word += this.input.slice(chunkStart, this.pos);\n var escStart = this.pos;\n if (this.input.charCodeAt(++this.pos) !== 117) // \"u\"\n { this.invalidStringToken(this.pos, \"Expecting Unicode escape sequence \\\\uXXXX\"); }\n ++this.pos;\n var esc = this.readCodePoint();\n if (!(first ? isIdentifierStart : isIdentifierChar)(esc, astral))\n { this.invalidStringToken(escStart, \"Invalid Unicode escape\"); }\n word += codePointToString(esc);\n chunkStart = this.pos;\n } else {\n break\n }\n first = false;\n }\n return word + this.input.slice(chunkStart, this.pos)\n};\n\n// Read an identifier or keyword token. Will check for reserved\n// words when necessary.\n\npp.readWord = function() {\n var word = this.readWord1();\n var type = types$1.name;\n if (this.keywords.test(word)) {\n type = keywords[word];\n }\n return this.finishToken(type, word)\n};\n\n// Acorn is a tiny, fast JavaScript parser written in JavaScript.\n//\n// Acorn was written by Marijn Haverbeke, Ingvar Stepanyan, and\n// various contributors and released under an MIT license.\n//\n// Git repositories for Acorn are available at\n//\n// http://marijnhaverbeke.nl/git/acorn\n// https://github.com/acornjs/acorn.git\n//\n// Please use the [github bug tracker][ghbt] to report issues.\n//\n// [ghbt]: https://github.com/acornjs/acorn/issues\n\n\nvar version = \"8.16.0\";\n\nParser.acorn = {\n Parser: Parser,\n version: version,\n defaultOptions: defaultOptions,\n Position: Position,\n SourceLocation: SourceLocation,\n getLineInfo: getLineInfo,\n Node: Node,\n TokenType: TokenType,\n tokTypes: types$1,\n keywordTypes: keywords,\n TokContext: TokContext,\n tokContexts: types,\n isIdentifierChar: isIdentifierChar,\n isIdentifierStart: isIdentifierStart,\n Token: Token,\n isNewLine: isNewLine,\n lineBreak: lineBreak,\n lineBreakG: lineBreakG,\n nonASCIIwhitespace: nonASCIIwhitespace\n};\n\n// The main exported interface (under `self.acorn` when in the\n// browser) is a `parse` function that takes a code string and returns\n// an abstract syntax tree as specified by the [ESTree spec][estree].\n//\n// [estree]: https://github.com/estree/estree\n\nfunction parse(input, options) {\n return Parser.parse(input, options)\n}\n\n// This function tries to parse a single expression at a given\n// offset in a string. Useful for parsing mixed-language formats\n// that embed JavaScript expressions.\n\nfunction parseExpressionAt(input, pos, options) {\n return Parser.parseExpressionAt(input, pos, options)\n}\n\n// Acorn is organized as a tokenizer and a recursive-descent parser.\n// The `tokenizer` export provides an interface to the tokenizer.\n\nfunction tokenizer(input, options) {\n return Parser.tokenizer(input, options)\n}\n\nexport { Node, Parser, Position, SourceLocation, TokContext, Token, TokenType, defaultOptions, getLineInfo, isIdentifierChar, isIdentifierStart, isNewLine, keywords as keywordTypes, lineBreak, lineBreakG, nonASCIIwhitespace, parse, parseExpressionAt, types as tokContexts, types$1 as tokTypes, tokenizer, version };\n","/**\n * v8 shim - V8 engine internals are not available in browser\n * Provides stubs for common usage patterns\n */\n\n// Heap statistics stub\nexport function getHeapStatistics() {\n return {\n total_heap_size: 0,\n total_heap_size_executable: 0,\n total_physical_size: 0,\n total_available_size: 0,\n used_heap_size: 0,\n heap_size_limit: 0,\n malloced_memory: 0,\n peak_malloced_memory: 0,\n does_zap_garbage: 0,\n number_of_native_contexts: 0,\n number_of_detached_contexts: 0,\n };\n}\n\nexport function getHeapSpaceStatistics() {\n return [];\n}\n\nexport function getHeapCodeStatistics() {\n return {\n code_and_metadata_size: 0,\n bytecode_and_metadata_size: 0,\n external_script_source_size: 0,\n };\n}\n\nexport function getHeapSnapshot() {\n return null;\n}\n\nexport function writeHeapSnapshot() {\n return '';\n}\n\nexport function setFlagsFromString(_flags: string) {\n // No-op\n}\n\nexport function takeCoverage() {\n // No-op\n}\n\nexport function stopCoverage() {\n // No-op\n}\n\n// Serialization (basic stubs)\nexport function serialize(value: unknown): Buffer {\n const json = JSON.stringify(value);\n return Buffer.from(json);\n}\n\nexport function deserialize(buffer: Buffer): unknown {\n return JSON.parse(buffer.toString());\n}\n\nexport class Serializer {\n writeHeader() {}\n writeValue(_value: unknown) {}\n releaseBuffer(): Buffer {\n return Buffer.from('');\n }\n}\n\nexport class Deserializer {\n constructor(_buffer: Buffer) {}\n readHeader(): boolean {\n return true;\n }\n readValue(): unknown {\n return null;\n }\n}\n\nexport class DefaultSerializer extends Serializer {}\nexport class DefaultDeserializer extends Deserializer {}\n\n// Promise hooks (stubs)\nexport function promiseHooks() {\n return {\n onInit: () => {},\n onSettled: () => {},\n onBefore: () => {},\n onAfter: () => {},\n createHook: () => ({ enable: () => {}, disable: () => {} }),\n };\n}\n\nexport default {\n getHeapStatistics,\n getHeapSpaceStatistics,\n getHeapCodeStatistics,\n getHeapSnapshot,\n writeHeapSnapshot,\n setFlagsFromString,\n takeCoverage,\n stopCoverage,\n serialize,\n deserialize,\n Serializer,\n Deserializer,\n DefaultSerializer,\n DefaultDeserializer,\n promiseHooks,\n};\n","/**\n * readline shim - Terminal readline is not available in browser\n * Provides stubs for common usage patterns\n */\n\nimport { EventEmitter } from './events';\n\nexport interface ReadLineOptions {\n input?: unknown;\n output?: unknown;\n terminal?: boolean;\n prompt?: string;\n}\n\nexport class Interface extends EventEmitter {\n private promptText: string;\n\n constructor(_options?: ReadLineOptions) {\n super();\n this.promptText = _options?.prompt ?? '';\n }\n\n prompt(_preserveCursor?: boolean): void {\n // No-op in browser\n }\n\n setPrompt(prompt: string): void {\n this.promptText = prompt;\n }\n\n getPrompt(): string {\n return this.promptText;\n }\n\n question(_query: string, callback: (answer: string) => void): void {\n // In browser, we can't get input - just call callback with empty\n setTimeout(() => callback(''), 0);\n }\n\n pause(): this {\n return this;\n }\n\n resume(): this {\n return this;\n }\n\n close(): void {\n this.emit('close');\n }\n\n write(_data: string, _key?: { ctrl?: boolean; name?: string }): void {\n // No-op\n }\n\n line: string = '';\n cursor: number = 0;\n\n getCursorPos(): { rows: number; cols: number } {\n return { rows: 0, cols: 0 };\n }\n}\n\nexport function createInterface(options?: ReadLineOptions): Interface {\n return new Interface(options);\n}\n\nexport function clearLine(_stream: unknown, _dir: number, _callback?: () => void): boolean {\n _callback?.();\n return true;\n}\n\nexport function clearScreenDown(_stream: unknown, _callback?: () => void): boolean {\n _callback?.();\n return true;\n}\n\nexport function cursorTo(_stream: unknown, _x: number, _y?: number, _callback?: () => void): boolean {\n _callback?.();\n return true;\n}\n\nexport function moveCursor(_stream: unknown, _dx: number, _dy: number, _callback?: () => void): boolean {\n _callback?.();\n return true;\n}\n\nexport function emitKeypressEvents(_stream: unknown, _interface?: Interface): void {\n // No-op\n}\n\n// Promises API\nexport const promises = {\n createInterface: (options?: ReadLineOptions) => {\n const rl = createInterface(options);\n return {\n question: (query: string) => new Promise<string>((resolve) => {\n rl.question(query, resolve);\n }),\n close: () => rl.close(),\n [Symbol.asyncIterator]: async function* () {\n // No lines in browser\n },\n };\n },\n};\n\nexport default {\n Interface,\n createInterface,\n clearLine,\n clearScreenDown,\n cursorTo,\n moveCursor,\n emitKeypressEvents,\n promises,\n};\n","/**\n * tls shim - TLS/SSL is not available in browser\n * Provides stubs that allow code to load without crashing\n */\n\nimport { EventEmitter } from './events';\nimport * as net from './net';\n\nexport class TLSSocket extends EventEmitter {\n authorized = false;\n encrypted = true;\n\n constructor(_socket?: unknown, _options?: unknown) {\n super();\n }\n\n getPeerCertificate(_detailed?: boolean): object {\n return {};\n }\n\n getCipher(): { name: string; version: string } | null {\n return null;\n }\n\n getProtocol(): string | null {\n return null;\n }\n\n setServername(_name: string): void {}\n\n renegotiate(_options: unknown, _callback: (err: Error | null) => void): boolean {\n return false;\n }\n}\n\nexport class Server extends EventEmitter {\n constructor(_options?: unknown, _connectionListener?: (socket: TLSSocket) => void) {\n super();\n }\n\n listen(..._args: unknown[]): this {\n return this;\n }\n\n close(_callback?: (err?: Error) => void): this {\n return this;\n }\n\n address(): { port: number; family: string; address: string } | string | null {\n return null;\n }\n\n getTicketKeys(): Buffer {\n return Buffer.from('');\n }\n\n setTicketKeys(_keys: Buffer): void {}\n\n setSecureContext(_options: unknown): void {}\n}\n\nexport function createServer(_options?: unknown, _connectionListener?: (socket: TLSSocket) => void): Server {\n return new Server(_options, _connectionListener);\n}\n\nexport function connect(_options: unknown, _callback?: () => void): TLSSocket {\n const socket = new TLSSocket();\n if (_callback) {\n setTimeout(_callback, 0);\n }\n return socket;\n}\n\nexport const createSecureContext = (_options?: unknown) => ({});\n\nexport const getCiphers = () => ['TLS_AES_256_GCM_SHA384', 'TLS_AES_128_GCM_SHA256'];\n\nexport const DEFAULT_ECDH_CURVE = 'auto';\nexport const DEFAULT_MAX_VERSION = 'TLSv1.3';\nexport const DEFAULT_MIN_VERSION = 'TLSv1.2';\n\nexport const rootCertificates: string[] = [];\n\nexport default {\n TLSSocket,\n Server,\n createServer,\n connect,\n createSecureContext,\n getCiphers,\n DEFAULT_ECDH_CURVE,\n DEFAULT_MAX_VERSION,\n DEFAULT_MIN_VERSION,\n rootCertificates,\n};\n","/**\n * http2 shim - HTTP/2 is not available in browser\n */\n\nimport { EventEmitter } from './events';\n\nexport class Http2Session extends EventEmitter {\n close(_callback?: () => void): void {\n if (_callback) setTimeout(_callback, 0);\n }\n destroy(_error?: Error, _code?: number): void {}\n get destroyed(): boolean { return false; }\n get encrypted(): boolean { return false; }\n get closed(): boolean { return false; }\n ping(_callback: (err: Error | null, duration: number, payload: Buffer) => void): boolean {\n return false;\n }\n ref(): void {}\n unref(): void {}\n setTimeout(_msecs: number, _callback?: () => void): void {}\n}\n\nexport class ClientHttp2Session extends Http2Session {}\nexport class ServerHttp2Session extends Http2Session {}\n\nexport class Http2Stream extends EventEmitter {\n close(_code?: number, _callback?: () => void): void {}\n get id(): number { return 0; }\n get pending(): boolean { return false; }\n get destroyed(): boolean { return false; }\n get closed(): boolean { return false; }\n priority(_options: unknown): void {}\n setTimeout(_msecs: number, _callback?: () => void): void {}\n end(_data?: unknown, _encoding?: string, _callback?: () => void): void {}\n}\n\nexport class Http2ServerRequest extends EventEmitter {}\nexport class Http2ServerResponse extends EventEmitter {\n writeHead(_statusCode: number, _headers?: object): this { return this; }\n end(_data?: unknown): void {}\n}\n\nexport function createServer(_options?: unknown, _onRequestHandler?: unknown): EventEmitter {\n return new EventEmitter();\n}\n\nexport function createSecureServer(_options?: unknown, _onRequestHandler?: unknown): EventEmitter {\n return new EventEmitter();\n}\n\nexport function connect(_authority: string, _options?: unknown, _listener?: () => void): ClientHttp2Session {\n return new ClientHttp2Session();\n}\n\nexport const constants = {\n NGHTTP2_SESSION_SERVER: 0,\n NGHTTP2_SESSION_CLIENT: 1,\n HTTP2_HEADER_STATUS: ':status',\n HTTP2_HEADER_METHOD: ':method',\n HTTP2_HEADER_AUTHORITY: ':authority',\n HTTP2_HEADER_SCHEME: ':scheme',\n HTTP2_HEADER_PATH: ':path',\n HTTP_STATUS_OK: 200,\n HTTP_STATUS_NOT_FOUND: 404,\n};\n\nexport function getDefaultSettings(): object {\n return {};\n}\n\nexport function getPackedSettings(_settings?: object): Buffer {\n return Buffer.from('');\n}\n\nexport function getUnpackedSettings(_buf: Buffer): object {\n return {};\n}\n\nexport const sensitiveHeaders = Symbol('sensitiveHeaders');\n\nexport default {\n Http2Session,\n ClientHttp2Session,\n ServerHttp2Session,\n Http2Stream,\n Http2ServerRequest,\n Http2ServerResponse,\n createServer,\n createSecureServer,\n connect,\n constants,\n getDefaultSettings,\n getPackedSettings,\n getUnpackedSettings,\n sensitiveHeaders,\n};\n","/**\n * cluster shim - Clustering is not available in browser\n */\n\nimport { EventEmitter } from './events';\n\nexport const isMaster = true;\nexport const isPrimary = true;\nexport const isWorker = false;\n\nexport class Worker extends EventEmitter {\n id = 0;\n process = null;\n send(_message: unknown, _callback?: (error: Error | null) => void): boolean {\n return false;\n }\n kill(_signal?: string): void {}\n disconnect(): void {}\n isDead(): boolean { return false; }\n isConnected(): boolean { return false; }\n}\n\nexport const worker: Worker | null = null;\nexport const workers: Record<number, Worker> = {};\n\nexport function fork(_env?: object): Worker {\n return new Worker();\n}\n\nexport function disconnect(_callback?: () => void): void {\n if (_callback) setTimeout(_callback, 0);\n}\n\nexport const settings = {};\nexport const SCHED_NONE = 1;\nexport const SCHED_RR = 2;\nexport let schedulingPolicy = SCHED_RR;\n\nexport function setupMaster(_settings?: object): void {}\nexport function setupPrimary(_settings?: object): void {}\n\nconst clusterEmitter = new EventEmitter();\nexport const on = clusterEmitter.on.bind(clusterEmitter);\nexport const once = clusterEmitter.once.bind(clusterEmitter);\nexport const emit = clusterEmitter.emit.bind(clusterEmitter);\nexport const removeListener = clusterEmitter.removeListener.bind(clusterEmitter);\n\nexport default {\n isMaster,\n isPrimary,\n isWorker,\n Worker,\n worker,\n workers,\n fork,\n disconnect,\n settings,\n SCHED_NONE,\n SCHED_RR,\n schedulingPolicy,\n setupMaster,\n setupPrimary,\n on,\n once,\n emit,\n removeListener,\n};\n","/**\n * dgram shim - UDP sockets are not available in browser\n */\n\nimport { EventEmitter } from './events';\n\nexport class Socket extends EventEmitter {\n bind(_port?: number, _address?: string, _callback?: () => void): this {\n if (_callback) setTimeout(_callback, 0);\n return this;\n }\n\n close(_callback?: () => void): void {\n if (_callback) setTimeout(_callback, 0);\n }\n\n send(_msg: Buffer | string, _offset?: number, _length?: number, _port?: number, _address?: string, _callback?: (error: Error | null, bytes: number) => void): void {\n if (_callback) setTimeout(() => _callback(null, 0), 0);\n }\n\n address(): { address: string; family: string; port: number } {\n return { address: '0.0.0.0', family: 'IPv4', port: 0 };\n }\n\n setBroadcast(_flag: boolean): void {}\n setTTL(_ttl: number): number { return _ttl; }\n setMulticastTTL(_ttl: number): number { return _ttl; }\n setMulticastLoopback(_flag: boolean): boolean { return _flag; }\n setMulticastInterface(_multicastInterface: string): void {}\n addMembership(_multicastAddress: string, _multicastInterface?: string): void {}\n dropMembership(_multicastAddress: string, _multicastInterface?: string): void {}\n ref(): this { return this; }\n unref(): this { return this; }\n setRecvBufferSize(_size: number): void {}\n setSendBufferSize(_size: number): void {}\n getRecvBufferSize(): number { return 0; }\n getSendBufferSize(): number { return 0; }\n}\n\nexport function createSocket(_type: string | object, _callback?: (msg: Buffer, rinfo: object) => void): Socket {\n return new Socket();\n}\n\nexport default {\n Socket,\n createSocket,\n};\n","/**\n * vm shim - Basic VM functionality using eval\n */\n\nexport class Script {\n private code: string;\n\n constructor(code: string, _options?: object) {\n this.code = code;\n }\n\n runInThisContext(_options?: object): unknown {\n return eval(this.code);\n }\n\n runInNewContext(contextObject?: object, _options?: object): unknown {\n const keys = contextObject ? Object.keys(contextObject) : [];\n const values = contextObject ? Object.values(contextObject) : [];\n const fn = new Function(...keys, `return eval(${JSON.stringify(this.code)})`);\n return fn(...values);\n }\n\n runInContext(_context: object, _options?: object): unknown {\n return this.runInNewContext(_context, _options);\n }\n\n createCachedData(): Buffer {\n return Buffer.from('');\n }\n}\n\nexport function createContext(contextObject?: object, _options?: object): object {\n return contextObject || {};\n}\n\nexport function isContext(_sandbox: object): boolean {\n return true;\n}\n\nexport function runInThisContext(code: string, _options?: object): unknown {\n return eval(code);\n}\n\nexport function runInNewContext(code: string, contextObject?: object, _options?: object): unknown {\n const script = new Script(code);\n return script.runInNewContext(contextObject);\n}\n\nexport function runInContext(code: string, context: object, _options?: object): unknown {\n return runInNewContext(code, context);\n}\n\nexport function compileFunction(code: string, params?: string[], _options?: object): Function {\n return new Function(...(params || []), code);\n}\n\nexport class Module {\n constructor(_code: string, _options?: object) {}\n link(_linker: unknown): Promise<void> { return Promise.resolve(); }\n evaluate(_options?: object): Promise<unknown> { return Promise.resolve(); }\n get status(): string { return 'unlinked'; }\n get identifier(): string { return ''; }\n get context(): object { return {}; }\n get namespace(): object { return {}; }\n}\n\nexport class SourceTextModule extends Module {}\nexport class SyntheticModule extends Module {\n setExport(_name: string, _value: unknown): void {}\n}\n\nexport default {\n Script,\n createContext,\n isContext,\n runInThisContext,\n runInNewContext,\n runInContext,\n compileFunction,\n Module,\n SourceTextModule,\n SyntheticModule,\n};\n","/**\n * inspector shim - V8 inspector is not available in browser\n */\n\nimport { EventEmitter } from './events';\n\nexport class Session extends EventEmitter {\n connect(): void {}\n connectToMainThread(): void {}\n disconnect(): void {}\n post(_method: string, _params?: object, _callback?: (err: Error | null, result?: object) => void): void {\n if (_callback) setTimeout(() => _callback(null, {}), 0);\n }\n}\n\nexport function open(_port?: number, _host?: string, _wait?: boolean): void {}\nexport function close(): void {}\nexport function url(): string | undefined { return undefined; }\nexport function waitForDebugger(): void {}\n\nexport const console = globalThis.console;\n\nexport default {\n Session,\n open,\n close,\n url,\n waitForDebugger,\n console,\n};\n","/**\n * async_hooks shim - Async tracking is not available in browser\n */\n\nexport class AsyncResource {\n constructor(_type: string, _options?: object) {}\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n runInAsyncScope<T>(fn: (...args: any[]) => T, thisArg?: unknown, ...args: any[]): T {\n return fn.apply(thisArg, args);\n }\n\n emitDestroy(): this { return this; }\n asyncId(): number { return 0; }\n triggerAsyncId(): number { return 0; }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static bind<T extends (...args: any[]) => any>(fn: T, _type?: string): T {\n return fn;\n }\n}\n\nexport class AsyncLocalStorage<T> {\n private store: T | undefined;\n\n disable(): void {}\n\n getStore(): T | undefined {\n return this.store;\n }\n\n run<R>(store: T, callback: () => R): R {\n const prev = this.store;\n this.store = store;\n try {\n return callback();\n } finally {\n this.store = prev;\n }\n }\n\n exit<R>(callback: () => R): R {\n const prev = this.store;\n this.store = undefined;\n try {\n return callback();\n } finally {\n this.store = prev;\n }\n }\n\n enterWith(store: T): void {\n this.store = store;\n }\n}\n\nexport interface AsyncHook {\n enable(): this;\n disable(): this;\n}\n\nexport function createHook(_callbacks: object): AsyncHook {\n return {\n enable(): AsyncHook { return this; },\n disable(): AsyncHook { return this; },\n };\n}\n\nexport function executionAsyncId(): number {\n return 0;\n}\n\nexport function executionAsyncResource(): object {\n return {};\n}\n\nexport function triggerAsyncId(): number {\n return 0;\n}\n\nexport default {\n AsyncResource,\n AsyncLocalStorage,\n createHook,\n executionAsyncId,\n executionAsyncResource,\n triggerAsyncId,\n};\n","/**\n * Node.js domain module shim\n * The domain module is deprecated but some packages still use it\n */\n\nimport { EventEmitter } from './events';\n\nexport class Domain extends EventEmitter {\n members: unknown[] = [];\n\n add(emitter: EventEmitter): void {\n this.members.push(emitter);\n }\n\n remove(emitter: EventEmitter): void {\n const index = this.members.indexOf(emitter);\n if (index !== -1) {\n this.members.splice(index, 1);\n }\n }\n\n bind<T extends (...args: unknown[]) => unknown>(callback: T): T {\n return callback;\n }\n\n intercept<T extends (...args: unknown[]) => unknown>(callback: T): T {\n return callback;\n }\n\n run<T>(fn: () => T): T {\n return fn();\n }\n\n dispose(): void {\n this.members = [];\n }\n\n enter(): void {\n // Stub\n }\n\n exit(): void {\n // Stub\n }\n}\n\nexport function create(): Domain {\n return new Domain();\n}\n\n// Active domain (deprecated but some packages check for it)\nexport let active: Domain | null = null;\n\nexport default {\n Domain,\n create,\n active,\n};\n","/**\n * Node.js diagnostics_channel module shim\n * Provides basic diagnostics channel functionality for packages like undici\n */\n\nimport { EventEmitter } from './events';\n\n/**\n * A Channel is used to publish messages to subscribers\n */\nexport class Channel {\n private name: string;\n private _subscribers: Set<(message: unknown, name: string) => void> = new Set();\n\n constructor(name: string) {\n this.name = name;\n }\n\n get hasSubscribers(): boolean {\n return this._subscribers.size > 0;\n }\n\n publish(message: unknown): void {\n for (const subscriber of this._subscribers) {\n try {\n subscriber(message, this.name);\n } catch (err) {\n console.error('Error in diagnostics channel subscriber:', err);\n }\n }\n }\n\n subscribe(onMessage: (message: unknown, name: string) => void): void {\n this._subscribers.add(onMessage);\n }\n\n unsubscribe(onMessage: (message: unknown, name: string) => void): boolean {\n return this._subscribers.delete(onMessage);\n }\n\n bindStore(store: unknown, transform?: (message: unknown) => unknown): void {\n // Stub - AsyncLocalStorage integration not implemented\n }\n\n unbindStore(store: unknown): boolean {\n return false;\n }\n}\n\n// Channel registry\nconst channels = new Map<string, Channel>();\n\n/**\n * Get or create a channel by name\n */\nexport function channel(name: string): Channel {\n let ch = channels.get(name);\n if (!ch) {\n ch = new Channel(name);\n channels.set(name, ch);\n }\n return ch;\n}\n\n/**\n * Check if a channel has subscribers\n */\nexport function hasSubscribers(name: string): boolean {\n const ch = channels.get(name);\n return ch ? ch.hasSubscribers : false;\n}\n\n/**\n * Subscribe to a channel\n */\nexport function subscribe(name: string, onMessage: (message: unknown, name: string) => void): void {\n channel(name).subscribe(onMessage);\n}\n\n/**\n * Unsubscribe from a channel\n */\nexport function unsubscribe(name: string, onMessage: (message: unknown, name: string) => void): boolean {\n const ch = channels.get(name);\n return ch ? ch.unsubscribe(onMessage) : false;\n}\n\n/**\n * TracingChannel for distributed tracing\n */\nexport class TracingChannel {\n private channels: {\n start: Channel;\n end: Channel;\n asyncStart: Channel;\n asyncEnd: Channel;\n error: Channel;\n };\n\n constructor(nameOrChannels: string | { start: Channel; end: Channel; asyncStart: Channel; asyncEnd: Channel; error: Channel }) {\n if (typeof nameOrChannels === 'string') {\n this.channels = {\n start: channel(`tracing:${nameOrChannels}:start`),\n end: channel(`tracing:${nameOrChannels}:end`),\n asyncStart: channel(`tracing:${nameOrChannels}:asyncStart`),\n asyncEnd: channel(`tracing:${nameOrChannels}:asyncEnd`),\n error: channel(`tracing:${nameOrChannels}:error`),\n };\n } else {\n this.channels = nameOrChannels;\n }\n }\n\n get hasSubscribers(): boolean {\n return Object.values(this.channels).some(ch => ch.hasSubscribers);\n }\n\n subscribe(handlers: {\n start?: (message: unknown) => void;\n end?: (message: unknown) => void;\n asyncStart?: (message: unknown) => void;\n asyncEnd?: (message: unknown) => void;\n error?: (message: unknown) => void;\n }): void {\n if (handlers.start) this.channels.start.subscribe(handlers.start);\n if (handlers.end) this.channels.end.subscribe(handlers.end);\n if (handlers.asyncStart) this.channels.asyncStart.subscribe(handlers.asyncStart);\n if (handlers.asyncEnd) this.channels.asyncEnd.subscribe(handlers.asyncEnd);\n if (handlers.error) this.channels.error.subscribe(handlers.error);\n }\n\n unsubscribe(handlers: {\n start?: (message: unknown) => void;\n end?: (message: unknown) => void;\n asyncStart?: (message: unknown) => void;\n asyncEnd?: (message: unknown) => void;\n error?: (message: unknown) => void;\n }): void {\n if (handlers.start) this.channels.start.unsubscribe(handlers.start);\n if (handlers.end) this.channels.end.unsubscribe(handlers.end);\n if (handlers.asyncStart) this.channels.asyncStart.unsubscribe(handlers.asyncStart);\n if (handlers.asyncEnd) this.channels.asyncEnd.unsubscribe(handlers.asyncEnd);\n if (handlers.error) this.channels.error.unsubscribe(handlers.error);\n }\n\n traceSync<T>(fn: () => T, context?: unknown, thisArg?: unknown): T {\n this.channels.start.publish(context);\n try {\n const result = fn.call(thisArg);\n this.channels.end.publish(context);\n return result;\n } catch (error) {\n this.channels.error.publish({ error, ...context as object });\n throw error;\n }\n }\n\n async tracePromise<T>(fn: () => Promise<T>, context?: unknown, thisArg?: unknown): Promise<T> {\n this.channels.start.publish(context);\n try {\n const result = await fn.call(thisArg);\n this.channels.asyncEnd.publish(context);\n return result;\n } catch (error) {\n this.channels.error.publish({ error, ...context as object });\n throw error;\n }\n }\n\n traceCallback<T extends (...args: unknown[]) => unknown>(\n fn: T,\n position?: number,\n context?: unknown,\n thisArg?: unknown\n ): T {\n // Simplified callback tracing\n return fn;\n }\n}\n\n/**\n * Create a TracingChannel\n */\nexport function tracingChannel(name: string): TracingChannel {\n return new TracingChannel(name);\n}\n\nexport default {\n channel,\n hasSubscribers,\n subscribe,\n unsubscribe,\n tracingChannel,\n Channel,\n TracingChannel,\n};\n","/**\n * Node.js assert module shim\n * Provides assertion testing utilities\n */\n\n/**\n * AssertionError class - thrown when an assertion fails\n */\nexport class AssertionError extends Error {\n actual: unknown;\n expected: unknown;\n operator: string;\n generatedMessage: boolean;\n code: string = 'ERR_ASSERTION';\n\n constructor(options: {\n message?: string;\n actual?: unknown;\n expected?: unknown;\n operator?: string;\n stackStartFn?: Function;\n }) {\n const message = options.message ||\n `${JSON.stringify(options.actual)} ${options.operator || '=='} ${JSON.stringify(options.expected)}`;\n super(message);\n this.name = 'AssertionError';\n this.actual = options.actual;\n this.expected = options.expected;\n this.operator = options.operator || '';\n this.generatedMessage = !options.message;\n\n // Capture stack trace, excluding the constructor\n if (Error.captureStackTrace && options.stackStartFn) {\n Error.captureStackTrace(this, options.stackStartFn);\n }\n }\n}\n\n/**\n * Deep equality check\n */\nfunction isDeepStrictEqual(actual: unknown, expected: unknown): boolean {\n // Same reference or primitive equality\n if (actual === expected) {\n return true;\n }\n\n // Handle null/undefined\n if (actual === null || expected === null || actual === undefined || expected === undefined) {\n return actual === expected;\n }\n\n // Type check\n if (typeof actual !== typeof expected) {\n return false;\n }\n\n // NaN check\n if (typeof actual === 'number' && Number.isNaN(actual) && Number.isNaN(expected as number)) {\n return true;\n }\n\n // Date comparison\n if (actual instanceof Date && expected instanceof Date) {\n return actual.getTime() === expected.getTime();\n }\n\n // RegExp comparison\n if (actual instanceof RegExp && expected instanceof RegExp) {\n return actual.source === expected.source && actual.flags === expected.flags;\n }\n\n // Array comparison\n if (Array.isArray(actual) && Array.isArray(expected)) {\n if (actual.length !== expected.length) {\n return false;\n }\n for (let i = 0; i < actual.length; i++) {\n if (!isDeepStrictEqual(actual[i], expected[i])) {\n return false;\n }\n }\n return true;\n }\n\n // Buffer/Uint8Array comparison\n if (actual instanceof Uint8Array && expected instanceof Uint8Array) {\n if (actual.length !== expected.length) {\n return false;\n }\n for (let i = 0; i < actual.length; i++) {\n if (actual[i] !== expected[i]) {\n return false;\n }\n }\n return true;\n }\n\n // Map comparison\n if (actual instanceof Map && expected instanceof Map) {\n if (actual.size !== expected.size) {\n return false;\n }\n const actualEntries = Array.from(actual.entries());\n for (let i = 0; i < actualEntries.length; i++) {\n const [key, value] = actualEntries[i];\n if (!expected.has(key) || !isDeepStrictEqual(value, expected.get(key))) {\n return false;\n }\n }\n return true;\n }\n\n // Set comparison\n if (actual instanceof Set && expected instanceof Set) {\n if (actual.size !== expected.size) {\n return false;\n }\n const actualValues = Array.from(actual.values());\n const expectedValues = Array.from(expected.values());\n for (let i = 0; i < actualValues.length; i++) {\n const value = actualValues[i];\n if (!expected.has(value)) {\n // For objects, need deep comparison\n let found = false;\n for (let j = 0; j < expectedValues.length; j++) {\n if (isDeepStrictEqual(value, expectedValues[j])) {\n found = true;\n break;\n }\n }\n if (!found) return false;\n }\n }\n return true;\n }\n\n // Object comparison\n if (typeof actual === 'object' && typeof expected === 'object') {\n const actualKeys = Object.keys(actual as object);\n const expectedKeys = Object.keys(expected as object);\n\n if (actualKeys.length !== expectedKeys.length) {\n return false;\n }\n\n for (const key of actualKeys) {\n if (!Object.prototype.hasOwnProperty.call(expected, key)) {\n return false;\n }\n if (!isDeepStrictEqual(\n (actual as Record<string, unknown>)[key],\n (expected as Record<string, unknown>)[key]\n )) {\n return false;\n }\n }\n return true;\n }\n\n return false;\n}\n\n/**\n * Main assert function - tests if value is truthy\n */\nfunction assert(value: unknown, message?: string | Error): asserts value {\n if (!value) {\n if (message instanceof Error) {\n throw message;\n }\n throw new AssertionError({\n message: message || 'The expression evaluated to a falsy value',\n actual: value,\n expected: true,\n operator: '==',\n stackStartFn: assert,\n });\n }\n}\n\n/**\n * Alias for assert()\n */\nassert.ok = function ok(value: unknown, message?: string | Error): asserts value {\n if (!value) {\n if (message instanceof Error) {\n throw message;\n }\n throw new AssertionError({\n message: message || 'The expression evaluated to a falsy value',\n actual: value,\n expected: true,\n operator: '==',\n stackStartFn: ok,\n });\n }\n};\n\n/**\n * Tests strict equality (===)\n */\nassert.strictEqual = function strictEqual(\n actual: unknown,\n expected: unknown,\n message?: string | Error\n): void {\n if (actual !== expected) {\n if (message instanceof Error) {\n throw message;\n }\n throw new AssertionError({\n message,\n actual,\n expected,\n operator: '===',\n stackStartFn: strictEqual,\n });\n }\n};\n\n/**\n * Tests strict inequality (!==)\n */\nassert.notStrictEqual = function notStrictEqual(\n actual: unknown,\n expected: unknown,\n message?: string | Error\n): void {\n if (actual === expected) {\n if (message instanceof Error) {\n throw message;\n }\n throw new AssertionError({\n message,\n actual,\n expected,\n operator: '!==',\n stackStartFn: notStrictEqual,\n });\n }\n};\n\n/**\n * Tests deep strict equality\n */\nassert.deepStrictEqual = function deepStrictEqual<T>(\n actual: T,\n expected: T,\n message?: string | Error\n): void {\n if (!isDeepStrictEqual(actual, expected)) {\n if (message instanceof Error) {\n throw message;\n }\n throw new AssertionError({\n message,\n actual,\n expected,\n operator: 'deepStrictEqual',\n stackStartFn: deepStrictEqual,\n });\n }\n};\n\n/**\n * Tests deep strict inequality\n */\nassert.notDeepStrictEqual = function notDeepStrictEqual<T>(\n actual: T,\n expected: T,\n message?: string | Error\n): void {\n if (isDeepStrictEqual(actual, expected)) {\n if (message instanceof Error) {\n throw message;\n }\n throw new AssertionError({\n message,\n actual,\n expected,\n operator: 'notDeepStrictEqual',\n stackStartFn: notDeepStrictEqual,\n });\n }\n};\n\n/**\n * Expects function to throw an error\n */\nassert.throws = function throws(\n fn: () => unknown,\n errorOrMessage?: RegExp | Function | Error | { message?: RegExp | string; code?: string } | string,\n message?: string\n): void {\n let threw = false;\n let thrownError: unknown;\n\n try {\n fn();\n } catch (err) {\n threw = true;\n thrownError = err;\n }\n\n if (!threw) {\n throw new AssertionError({\n message: typeof errorOrMessage === 'string' ? errorOrMessage : (message || 'Expected function to throw'),\n actual: undefined,\n expected: errorOrMessage,\n operator: 'throws',\n stackStartFn: throws,\n });\n }\n\n // Validate the thrown error if a validator was provided\n if (errorOrMessage !== undefined && typeof errorOrMessage !== 'string') {\n if (errorOrMessage instanceof RegExp) {\n const errMessage = thrownError instanceof Error ? thrownError.message : String(thrownError);\n if (!errorOrMessage.test(errMessage)) {\n throw new AssertionError({\n message: message || `The error message did not match the regular expression`,\n actual: thrownError,\n expected: errorOrMessage,\n operator: 'throws',\n stackStartFn: throws,\n });\n }\n } else if (typeof errorOrMessage === 'function') {\n if (!(thrownError instanceof (errorOrMessage as new (...args: unknown[]) => Error))) {\n throw new AssertionError({\n message: message || `The error is not an instance of the expected type`,\n actual: thrownError,\n expected: errorOrMessage,\n operator: 'throws',\n stackStartFn: throws,\n });\n }\n } else if (typeof errorOrMessage === 'object') {\n const expected = errorOrMessage as { message?: RegExp | string; code?: string };\n const err = thrownError as Error & { code?: string };\n\n if (expected.message !== undefined) {\n const errMsg = err.message || String(thrownError);\n if (expected.message instanceof RegExp) {\n if (!expected.message.test(errMsg)) {\n throw new AssertionError({\n message: message || `The error message did not match`,\n actual: errMsg,\n expected: expected.message,\n operator: 'throws',\n stackStartFn: throws,\n });\n }\n } else if (errMsg !== expected.message) {\n throw new AssertionError({\n message: message || `The error message did not match`,\n actual: errMsg,\n expected: expected.message,\n operator: 'throws',\n stackStartFn: throws,\n });\n }\n }\n\n if (expected.code !== undefined && err.code !== expected.code) {\n throw new AssertionError({\n message: message || `The error code did not match`,\n actual: err.code,\n expected: expected.code,\n operator: 'throws',\n stackStartFn: throws,\n });\n }\n }\n }\n};\n\n/**\n * Expects function to not throw an error\n */\nassert.doesNotThrow = function doesNotThrow(\n fn: () => unknown,\n errorOrMessage?: RegExp | Function | string,\n message?: string\n): void {\n try {\n fn();\n } catch (err) {\n // If no validator provided, any throw is a failure\n if (errorOrMessage === undefined || typeof errorOrMessage === 'string') {\n throw new AssertionError({\n message: typeof errorOrMessage === 'string' ? errorOrMessage : (message || 'Expected function not to throw'),\n actual: err,\n expected: undefined,\n operator: 'doesNotThrow',\n stackStartFn: doesNotThrow,\n });\n }\n\n // If validator provided, only matching errors are failures\n if (errorOrMessage instanceof RegExp) {\n const errMessage = err instanceof Error ? err.message : String(err);\n if (errorOrMessage.test(errMessage)) {\n throw new AssertionError({\n message: message || 'Expected function not to throw matching error',\n actual: err,\n expected: errorOrMessage,\n operator: 'doesNotThrow',\n stackStartFn: doesNotThrow,\n });\n }\n } else if (typeof errorOrMessage === 'function') {\n if (err instanceof (errorOrMessage as new (...args: unknown[]) => Error)) {\n throw new AssertionError({\n message: message || 'Expected function not to throw error of this type',\n actual: err,\n expected: errorOrMessage,\n operator: 'doesNotThrow',\n stackStartFn: doesNotThrow,\n });\n }\n }\n }\n};\n\n/**\n * Expects promise to reject\n */\nassert.rejects = async function rejects(\n asyncFn: Promise<unknown> | (() => Promise<unknown>),\n errorOrMessage?: RegExp | Function | Error | { message?: RegExp | string; code?: string } | string,\n message?: string\n): Promise<void> {\n const promise = typeof asyncFn === 'function' ? asyncFn() : asyncFn;\n\n let rejected = false;\n let rejectionReason: unknown;\n\n try {\n await promise;\n } catch (err) {\n rejected = true;\n rejectionReason = err;\n }\n\n if (!rejected) {\n throw new AssertionError({\n message: typeof errorOrMessage === 'string' ? errorOrMessage : (message || 'Expected promise to reject'),\n actual: undefined,\n expected: errorOrMessage,\n operator: 'rejects',\n stackStartFn: rejects,\n });\n }\n\n // Validate the rejection reason if a validator was provided\n if (errorOrMessage !== undefined && typeof errorOrMessage !== 'string') {\n if (errorOrMessage instanceof RegExp) {\n const errMessage = rejectionReason instanceof Error ? rejectionReason.message : String(rejectionReason);\n if (!errorOrMessage.test(errMessage)) {\n throw new AssertionError({\n message: message || 'The rejection message did not match the regular expression',\n actual: rejectionReason,\n expected: errorOrMessage,\n operator: 'rejects',\n stackStartFn: rejects,\n });\n }\n } else if (typeof errorOrMessage === 'function') {\n if (!(rejectionReason instanceof (errorOrMessage as new (...args: unknown[]) => Error))) {\n throw new AssertionError({\n message: message || 'The rejection is not an instance of the expected type',\n actual: rejectionReason,\n expected: errorOrMessage,\n operator: 'rejects',\n stackStartFn: rejects,\n });\n }\n } else if (typeof errorOrMessage === 'object') {\n const expected = errorOrMessage as { message?: RegExp | string; code?: string };\n const err = rejectionReason as Error & { code?: string };\n\n if (expected.message !== undefined) {\n const errMsg = err.message || String(rejectionReason);\n if (expected.message instanceof RegExp) {\n if (!expected.message.test(errMsg)) {\n throw new AssertionError({\n message: message || 'The rejection message did not match',\n actual: errMsg,\n expected: expected.message,\n operator: 'rejects',\n stackStartFn: rejects,\n });\n }\n } else if (errMsg !== expected.message) {\n throw new AssertionError({\n message: message || 'The rejection message did not match',\n actual: errMsg,\n expected: expected.message,\n operator: 'rejects',\n stackStartFn: rejects,\n });\n }\n }\n\n if (expected.code !== undefined && err.code !== expected.code) {\n throw new AssertionError({\n message: message || 'The rejection code did not match',\n actual: err.code,\n expected: expected.code,\n operator: 'rejects',\n stackStartFn: rejects,\n });\n }\n }\n }\n};\n\n/**\n * Expects promise to not reject\n */\nassert.doesNotReject = async function doesNotReject(\n asyncFn: Promise<unknown> | (() => Promise<unknown>),\n errorOrMessage?: RegExp | Function | string,\n message?: string\n): Promise<void> {\n const promise = typeof asyncFn === 'function' ? asyncFn() : asyncFn;\n\n try {\n await promise;\n } catch (err) {\n // If no validator provided, any rejection is a failure\n if (errorOrMessage === undefined || typeof errorOrMessage === 'string') {\n throw new AssertionError({\n message: typeof errorOrMessage === 'string' ? errorOrMessage : (message || 'Expected promise not to reject'),\n actual: err,\n expected: undefined,\n operator: 'doesNotReject',\n stackStartFn: doesNotReject,\n });\n }\n\n // If validator provided, only matching rejections are failures\n if (errorOrMessage instanceof RegExp) {\n const errMessage = err instanceof Error ? err.message : String(err);\n if (errorOrMessage.test(errMessage)) {\n throw new AssertionError({\n message: message || 'Expected promise not to reject with matching error',\n actual: err,\n expected: errorOrMessage,\n operator: 'doesNotReject',\n stackStartFn: doesNotReject,\n });\n }\n } else if (typeof errorOrMessage === 'function') {\n if (err instanceof (errorOrMessage as new (...args: unknown[]) => Error)) {\n throw new AssertionError({\n message: message || 'Expected promise not to reject with error of this type',\n actual: err,\n expected: errorOrMessage,\n operator: 'doesNotReject',\n stackStartFn: doesNotReject,\n });\n }\n }\n }\n};\n\n/**\n * Throws an AssertionError\n */\nassert.fail = function fail(\n messageOrActual?: string | unknown,\n expected?: unknown,\n message?: string,\n operator?: string\n): never {\n if (arguments.length === 0 || arguments.length === 1) {\n throw new AssertionError({\n message: typeof messageOrActual === 'string' ? messageOrActual : 'Failed',\n stackStartFn: fail,\n });\n }\n\n throw new AssertionError({\n message,\n actual: messageOrActual,\n expected,\n operator: operator || 'fail',\n stackStartFn: fail,\n });\n};\n\n/**\n * Tests if string matches regular expression\n */\nassert.match = function match(\n string: string,\n regexp: RegExp,\n message?: string | Error\n): void {\n if (!regexp.test(string)) {\n if (message instanceof Error) {\n throw message;\n }\n throw new AssertionError({\n message: message || `The input did not match the regular expression`,\n actual: string,\n expected: regexp,\n operator: 'match',\n stackStartFn: match,\n });\n }\n};\n\n/**\n * Tests if string does not match regular expression\n */\nassert.doesNotMatch = function doesNotMatch(\n string: string,\n regexp: RegExp,\n message?: string | Error\n): void {\n if (regexp.test(string)) {\n if (message instanceof Error) {\n throw message;\n }\n throw new AssertionError({\n message: message || `The input was expected not to match the regular expression`,\n actual: string,\n expected: regexp,\n operator: 'doesNotMatch',\n stackStartFn: doesNotMatch,\n });\n }\n};\n\n/**\n * Throws if value is truthy (used for error-first callback patterns)\n */\nassert.ifError = function ifError(value: unknown): void {\n if (value !== null && value !== undefined) {\n if (value instanceof Error) {\n throw value;\n }\n throw new AssertionError({\n message: `ifError got unwanted exception: ${value}`,\n actual: value,\n expected: null,\n operator: 'ifError',\n stackStartFn: ifError,\n });\n }\n};\n\n// Export the AssertionError class on the assert function\nassert.AssertionError = AssertionError;\n\n// Strict mode (same behavior for this implementation)\nassert.strict = assert;\n\nexport default assert;\nexport { assert };\n","function e(e,n,r){throw new Error(r?`No known conditions for \"${n}\" specifier in \"${e}\" package`:`Missing \"${n}\" specifier in \"${e}\" package`)}function n(n,i,o,f){let s,u,l=r(n,o),c=function(e){let n=new Set([\"default\",...e.conditions||[]]);return e.unsafe||n.add(e.require?\"require\":\"import\"),e.unsafe||n.add(e.browser?\"browser\":\"node\"),n}(f||{}),a=i[l];if(void 0===a){let e,n,r,t;for(t in i)n&&t.length<n.length||(\"/\"===t[t.length-1]&&l.startsWith(t)?(u=l.substring(t.length),n=t):t.length>1&&(r=t.indexOf(\"*\",1),~r&&(e=RegExp(\"^\"+t.substring(0,r)+\"(.*)\"+t.substring(1+r)+\"$\").exec(l),e&&e[1]&&(u=e[1],n=t))));a=i[n]}return a||e(n,l),s=t(a,c),s||e(n,l,1),u&&function(e,n){let r,t=0,i=e.length,o=/[*]/g,f=/[/]$/;for(;t<i;t++)e[t]=o.test(r=e[t])?r.replace(o,n):f.test(r)?r+n:r}(s,u),s}function r(e,n,r){if(e===n||\".\"===n)return\".\";let t=e+\"/\",i=t.length,o=n.slice(0,i)===t,f=o?n.slice(i):n;return\"#\"===f[0]?f:o||!r?\"./\"===f.slice(0,2)?f:\"./\"+f:f}function t(e,n,r){if(e){if(\"string\"==typeof e)return r&&r.add(e),[e];let i,o;if(Array.isArray(e)){for(o=r||new Set,i=0;i<e.length;i++)t(e[i],n,o);if(!r&&o.size)return[...o]}else for(i in e)if(n.has(i))return t(e[i],n,r)}}function i(e,n={}){let t,i=0,o=n.browser,f=n.fields||[\"module\",\"main\"],s=\"string\"==typeof o;for(o&&!f.includes(\"browser\")&&(f.unshift(\"browser\"),s&&(o=r(e.name,o,!0)));i<f.length;i++)if(t=e[f[i]]){if(\"string\"==typeof t);else{if(\"object\"!=typeof t||\"browser\"!=f[i])continue;if(s&&(t=t[o],null==t))return o}return\"string\"==typeof t?\"./\"+t.replace(/^\\.?\\//,\"\"):t}}function o(e,r,t){let i,o=e.exports;if(o){if(\"string\"==typeof o)o={\".\":o};else for(i in o){\".\"!==i[0]&&(o={\".\":o});break}return n(e.name,o,r||\".\",t)}}function f(e,r,t){if(e.imports)return n(e.name,e.imports,r,t)}function s(e,n,t){return\"#\"===(n=r(e.name,n||\".\"))[0]?f(e,n,t):o(e,n,t)}export{o as exports,f as imports,i as legacy,s as resolve};","/**\n * Shared code transformation utilities.\n * Extracted from next-dev-server.ts and vite-dev-server.ts to avoid duplication\n * and enable AST-based replacements.\n */\n\nimport * as acorn from 'acorn';\nimport * as csstree from 'css-tree';\nimport { simpleHash } from '../utils/hash';\nimport { REACT_CDN, REACT_DOM_CDN } from '../config/cdn';\n\n/**\n * Interface for file system operations needed by CSS module transforms.\n */\nexport interface CssModuleContext {\n readFile: (path: string) => string;\n exists: (path: string) => boolean;\n}\n\n/**\n * Resolve a relative path from a directory.\n * Pure function — no dependencies.\n */\nexport function resolveRelativePath(dir: string, relativePath: string): string {\n const parts = dir.split('/').filter(Boolean);\n const relParts = relativePath.split('/');\n\n for (const part of relParts) {\n if (part === '..') {\n parts.pop();\n } else if (part !== '.' && part !== '') {\n parts.push(part);\n }\n }\n\n return '/' + parts.join('/');\n}\n\n/**\n * Resolve a CSS module path relative to the current file context.\n */\nexport function resolveCssModulePath(\n cssPath: string,\n currentFile: string | undefined,\n ctx: CssModuleContext,\n): string | null {\n // If relative path and we have a current file, resolve relative to it\n if (currentFile && (cssPath.startsWith('./') || cssPath.startsWith('../'))) {\n const dir = currentFile.replace(/\\/[^/]+$/, '');\n const resolved = resolveRelativePath(dir, cssPath);\n if (ctx.exists(resolved)) return resolved;\n }\n\n // Try the path as-is first (absolute)\n if (ctx.exists(cssPath)) return cssPath;\n\n // Try with leading slash\n const withSlash = '/' + cssPath.replace(/^\\.\\//, '');\n if (ctx.exists(withSlash)) return withSlash;\n\n return null;\n}\n\n/**\n * Generate replacement code for a CSS Module import.\n * Parses the CSS file, extracts class names, generates scoped names,\n * and injects the scoped CSS via a style tag.\n */\nexport function generateCssModuleReplacement(\n varName: string,\n cssPath: string,\n currentFile: string | undefined,\n ctx: CssModuleContext,\n): string {\n try {\n const resolvedPath = resolveCssModulePath(cssPath, currentFile, ctx);\n if (!resolvedPath) {\n return `const ${varName} = {};`;\n }\n\n const cssContent = ctx.readFile(resolvedPath);\n const fileHash = simpleHash(resolvedPath + cssContent).slice(0, 6);\n\n // Parse CSS into AST and extract class names\n const classMap: Record<string, string> = {};\n const ast = csstree.parse(cssContent);\n\n // First pass: collect all class selector names\n csstree.walk(ast, {\n visit: 'ClassSelector',\n enter(node: csstree.ClassSelector) {\n if (!classMap[node.name]) {\n classMap[node.name] = `${node.name}_${fileHash}`;\n }\n },\n });\n\n // Second pass: mutate class selectors to scoped names\n csstree.walk(ast, {\n visit: 'ClassSelector',\n enter(node: csstree.ClassSelector) {\n if (classMap[node.name]) {\n node.name = classMap[node.name];\n }\n },\n });\n\n // Generate scoped CSS from the mutated AST\n const scopedCss = csstree.generate(ast);\n\n // Escape the CSS for embedding in JS\n const escapedCss = scopedCss\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/`/g, '\\\\`')\n .replace(/\\$/g, '\\\\$');\n\n // Generate inline code that injects styles and exports class map\n const mapEntries = Object.entries(classMap)\n .map(([k, v]) => `${JSON.stringify(k)}: ${JSON.stringify(v)}`)\n .join(', ');\n\n return `const ${varName} = {${mapEntries}};\n(function() {\n if (typeof document !== 'undefined') {\n var id = ${JSON.stringify('cssmod-' + fileHash)};\n if (!document.getElementById(id)) {\n var s = document.createElement('style');\n s.id = id;\n s.textContent = \\`${escapedCss}\\`;\n document.head.appendChild(s);\n }\n }\n})();`;\n } catch {\n return `const ${varName} = {};`;\n }\n}\n\n/**\n * Strip CSS imports from code (they are loaded via <link> tags instead).\n * CSS Module imports (*.module.css) are converted to inline objects with class name mappings.\n * Regular CSS imports are stripped entirely.\n */\nexport function stripCssImports(\n code: string,\n currentFile: string | undefined,\n ctx: CssModuleContext,\n): string {\n // First handle CSS Module imports: import styles from './Component.module.css'\n code = code.replace(\n /import\\s+(\\w+)\\s+from\\s+['\"]([^'\"]+\\.module\\.css)['\"]\\s*;?/g,\n (_match, varName, cssPath) => {\n return generateCssModuleReplacement(varName, cssPath, currentFile, ctx);\n },\n );\n\n // Handle destructured CSS Module imports: import { foo, bar } from './Component.module.css'\n code = code.replace(\n /import\\s+\\{([^}]+)\\}\\s+from\\s+['\"]([^'\"]+\\.module\\.css)['\"]\\s*;?/g,\n (_match, names, cssPath) => {\n const varName = '__cssModule_' + simpleHash(cssPath);\n const replacement = generateCssModuleReplacement(varName, cssPath, currentFile, ctx);\n const namedExports = (names as string).split(',').map((n: string) => {\n const trimmed = n.trim();\n const parts = trimmed.split(/\\s+as\\s+/);\n const key = parts[0].trim();\n const alias = parts[1]?.trim() || key;\n return `const ${alias} = ${varName}[${JSON.stringify(key)}];`;\n }).join('\\n');\n return `${replacement}\\n${namedExports}`;\n },\n );\n\n // Strip remaining plain CSS imports (non-module)\n return code.replace(/import\\s+['\"][^'\"]+\\.css['\"]\\s*;?/g, '');\n}\n\n// Explicit mappings for common packages (ensures correct esm.sh URLs)\nconst EXPLICIT_MAPPINGS: Record<string, string> = {\n 'react': `${REACT_CDN}?dev`,\n 'react/jsx-runtime': `${REACT_CDN}&dev/jsx-runtime`,\n 'react/jsx-dev-runtime': `${REACT_CDN}&dev/jsx-dev-runtime`,\n 'react-dom': `${REACT_DOM_CDN}?dev`,\n 'react-dom/client': `${REACT_DOM_CDN}/client?dev`,\n};\n\n// Packages that are local, have custom shims, or are handled by the HTML import map.\n// These are NOT redirected to esm.sh by redirectNpmImports.\nconst LOCAL_PACKAGES = new Set([\n 'next/link', 'next/router', 'next/head', 'next/navigation',\n 'next/dynamic', 'next/image', 'next/script', 'next/font/google',\n 'next/font/local',\n]);\n\n/**\n * Extract the major version from a semver range string.\n * e.g., \"^4.0.0\" → \"4\", \"~1.2.3\" → \"1\", \">=2.0.0\" → \"2\", \"3.1.0\" → \"3\"\n */\nfunction extractMajorVersion(range: string): string | null {\n const match = range.match(/(\\d+)\\.\\d+/);\n return match ? match[1] : null;\n}\n\n/** Check if a package specifier is a bare npm import that should be redirected. */\nfunction resolveNpmPackage(\n packageName: string,\n extraLocalPackages?: Set<string>,\n dependencies?: Record<string, string>,\n esmShDeps?: string,\n installedPackages?: Set<string>,\n): string | null {\n // Skip relative, absolute, URL, and virtual paths\n if (packageName.startsWith('.') || packageName.startsWith('/') ||\n packageName.startsWith('http://') || packageName.startsWith('https://') ||\n packageName.startsWith('/__virtual__')) {\n return null;\n }\n\n if (EXPLICIT_MAPPINGS[packageName]) return EXPLICIT_MAPPINGS[packageName];\n if (LOCAL_PACKAGES.has(packageName)) return null;\n if (extraLocalPackages?.has(packageName)) return null;\n\n // Extract the base package name (handles scoped packages and subpath imports)\n const basePkg = packageName.includes('/') ? packageName.split('/')[0] : packageName;\n const isScoped = basePkg.startsWith('@');\n const scopedBasePkg = isScoped && packageName.includes('/')\n ? packageName.split('/').slice(0, 2).join('/')\n : basePkg;\n\n if (LOCAL_PACKAGES.has(scopedBasePkg)) return null;\n if (extraLocalPackages?.has(scopedBasePkg)) return null;\n\n // Serve from VFS bundle if package is installed locally\n if (installedPackages?.has(scopedBasePkg)) {\n return `/_npm/${packageName}`;\n }\n\n // Build versioned esm.sh URL. Include major version from package.json\n // dependencies when available — esm.sh requires this for subpath exports.\n let esmPkg = packageName;\n if (dependencies) {\n const depVersion = dependencies[scopedBasePkg];\n if (depVersion) {\n const major = extractMajorVersion(depVersion);\n if (major) {\n // Insert @version after the base package name\n const subpath = packageName.slice(scopedBasePkg.length); // e.g., \"/react\"\n esmPkg = `${scopedBasePkg}@${major}${subpath}`;\n }\n }\n }\n\n const depsParam = esmShDeps ? `&deps=${esmShDeps}` : '';\n return `https://esm.sh/${esmPkg}?external=react${depsParam}`;\n}\n\n/**\n * Redirect bare npm package imports to esm.sh CDN.\n * Uses acorn AST to precisely target import/export source strings,\n * avoiding false matches inside comments or string literals.\n * Falls back to regex if acorn fails.\n *\n * @param additionalLocalPackages - Extra packages to skip (not redirected to CDN).\n * Used by frameworks that add their own import map entries (e.g., Convex demo).\n * @param dependencies - Dependency versions from package.json (e.g., {\"ai\": \"^4.0.0\"}).\n * Used to include major version in esm.sh URLs for correct subpath resolution.\n * @param installedPackages - Packages installed in VFS node_modules. These are\n * served from /_npm/ instead of esm.sh, giving us full control over resolution.\n */\nexport function redirectNpmImports(\n code: string,\n additionalLocalPackages?: string[],\n dependencies?: Record<string, string>,\n esmShDeps?: string,\n installedPackages?: Set<string>,\n): string {\n const extraSet = additionalLocalPackages?.length ? new Set(additionalLocalPackages) : undefined;\n try {\n return redirectNpmImportsAst(code, extraSet, dependencies, esmShDeps, installedPackages);\n } catch {\n return redirectNpmImportsRegex(code, extraSet, dependencies, esmShDeps, installedPackages);\n }\n}\n\nfunction redirectNpmImportsAst(\n code: string,\n extraLocalPackages?: Set<string>,\n dependencies?: Record<string, string>,\n esmShDeps?: string,\n installedPackages?: Set<string>,\n): string {\n const ast = acorn.parse(code, { ecmaVersion: 'latest', sourceType: 'module' });\n\n // Collect source nodes that need redirecting: [start, end, newUrl]\n const replacements: Array<[number, number, string]> = [];\n\n function processSource(sourceNode: any) {\n if (!sourceNode || sourceNode.type !== 'Literal') return;\n const resolved = resolveNpmPackage(sourceNode.value, extraLocalPackages, dependencies, esmShDeps, installedPackages);\n if (resolved) {\n // Replace the string literal (including quotes) — sourceNode.start/end include quotes\n replacements.push([sourceNode.start, sourceNode.end, JSON.stringify(resolved)]);\n }\n }\n\n for (const node of (ast as any).body) {\n if (node.type === 'ImportDeclaration') {\n processSource(node.source);\n } else if (node.type === 'ExportNamedDeclaration' && node.source) {\n processSource(node.source);\n } else if (node.type === 'ExportAllDeclaration') {\n processSource(node.source);\n }\n }\n\n if (replacements.length === 0) return code;\n\n // Apply replacements from end to start\n let result = code;\n replacements.sort((a, b) => b[0] - a[0]);\n for (const [start, end, replacement] of replacements) {\n result = result.slice(0, start) + replacement + result.slice(end);\n }\n\n return result;\n}\n\nfunction redirectNpmImportsRegex(\n code: string,\n extraLocalPackages?: Set<string>,\n dependencies?: Record<string, string>,\n esmShDeps?: string,\n installedPackages?: Set<string>,\n): string {\n const importPattern = /(from\\s*['\"])([^'\"./][^'\"]*?)(['\"])/g;\n return code.replace(importPattern, (match, prefix, packageName, suffix) => {\n const resolved = resolveNpmPackage(packageName, extraLocalPackages, dependencies, esmShDeps, installedPackages);\n if (!resolved) return match;\n return `${prefix}${resolved}${suffix}`;\n });\n}\n\n/**\n * ESM to CJS transform using acorn AST parsing.\n * Used in non-browser (test) environments where esbuild is unavailable.\n * Falls back to regex if acorn fails to parse.\n */\nexport function transformEsmToCjsSimple(code: string): string {\n try {\n return transformEsmToCjsAst(code);\n } catch {\n return transformEsmToCjsRegex(code);\n }\n}\n\n/** AST-based ESM→CJS transform using acorn. */\nfunction transformEsmToCjsAst(code: string): string {\n const ast = acorn.parse(code, { ecmaVersion: 'latest', sourceType: 'module' });\n\n // Collect replacements as [start, end, replacement] sorted by start descending\n const replacements: Array<[number, number, string]> = [];\n\n for (const node of (ast as any).body) {\n if (node.type === 'ImportDeclaration') {\n const source = node.source.value;\n const specs = node.specifiers;\n\n if (specs.length === 0) {\n // Side-effect import: import './polyfill'\n replacements.push([node.start, node.end, `require(${JSON.stringify(source)})`]);\n } else {\n const defaultSpec = specs.find((s: any) => s.type === 'ImportDefaultSpecifier');\n const nsSpec = specs.find((s: any) => s.type === 'ImportNamespaceSpecifier');\n const namedSpecs = specs.filter((s: any) => s.type === 'ImportSpecifier');\n\n const parts: string[] = [];\n if (defaultSpec) {\n parts.push(`const ${defaultSpec.local.name} = require(${JSON.stringify(source)})`);\n }\n if (nsSpec) {\n parts.push(`const ${nsSpec.local.name} = require(${JSON.stringify(source)})`);\n }\n if (namedSpecs.length > 0) {\n const bindings = namedSpecs.map((s: any) => {\n if (s.imported.name === s.local.name) return s.local.name;\n return `${s.imported.name}: ${s.local.name}`;\n }).join(', ');\n if (defaultSpec) {\n // Mixed: import React, { useState } from 'react'\n // Default already handled, just destructure from same require\n parts.push(`const { ${bindings} } = require(${JSON.stringify(source)})`);\n } else {\n parts.push(`const { ${bindings} } = require(${JSON.stringify(source)})`);\n }\n }\n replacements.push([node.start, node.end, parts.join(';\\n')]);\n }\n } else if (node.type === 'ExportDefaultDeclaration') {\n const decl = node.declaration;\n if (decl.type === 'FunctionDeclaration') {\n // export default function X() {} → module.exports = function X() {}\n const funcCode = code.slice(decl.start, node.end);\n replacements.push([node.start, node.end, `module.exports = ${funcCode}`]);\n } else if (decl.type === 'ClassDeclaration') {\n const classCode = code.slice(decl.start, node.end);\n replacements.push([node.start, node.end, `module.exports = ${classCode}`]);\n } else {\n // export default <expression>\n const exprCode = code.slice(decl.start, node.end);\n replacements.push([node.start, node.end, `module.exports = ${exprCode}`]);\n }\n } else if (node.type === 'ExportNamedDeclaration') {\n if (node.declaration) {\n const decl = node.declaration;\n if (decl.type === 'FunctionDeclaration') {\n const name = decl.id.name;\n const funcCode = code.slice(decl.start, node.end);\n replacements.push([node.start, node.end, `exports.${name} = ${funcCode}`]);\n } else if (decl.type === 'ClassDeclaration') {\n const name = decl.id.name;\n const classCode = code.slice(decl.start, node.end);\n replacements.push([node.start, node.end, `exports.${name} = ${classCode}`]);\n } else if (decl.type === 'VariableDeclaration') {\n // export const X = ..., export let Y = ...\n const parts: string[] = [];\n for (const declarator of decl.declarations) {\n const name = declarator.id.name;\n const initCode = declarator.init ? code.slice(declarator.init.start, declarator.init.end) : 'undefined';\n parts.push(`exports.${name} = ${initCode}`);\n }\n replacements.push([node.start, node.end, parts.join(';\\n')]);\n }\n } else if (node.source) {\n // Re-export: export { X } from './module'\n const source = node.source.value;\n const parts: string[] = [];\n const tmpVar = `__reexport_${node.start}`;\n parts.push(`const ${tmpVar} = require(${JSON.stringify(source)})`);\n for (const spec of node.specifiers) {\n parts.push(`exports.${spec.exported.name} = ${tmpVar}.${spec.local.name}`);\n }\n replacements.push([node.start, node.end, parts.join(';\\n')]);\n } else {\n // Local re-export: export { foo, bar }\n const parts: string[] = [];\n for (const spec of node.specifiers) {\n parts.push(`exports.${spec.exported.name} = ${spec.local.name}`);\n }\n replacements.push([node.start, node.end, parts.join(';\\n')]);\n }\n } else if (node.type === 'ExportAllDeclaration') {\n // export * from './helpers'\n const source = node.source.value;\n replacements.push([node.start, node.end, `Object.assign(exports, require(${JSON.stringify(source)}))`]);\n }\n }\n\n // Apply replacements from end to start to preserve positions\n let result = code;\n replacements.sort((a, b) => b[0] - a[0]);\n for (const [start, end, replacement] of replacements) {\n result = result.slice(0, start) + replacement + result.slice(end);\n }\n\n return result;\n}\n\n/** Regex-based ESM→CJS fallback for code acorn can't parse. */\nfunction transformEsmToCjsRegex(code: string): string {\n let transformed = code;\n\n transformed = transformed.replace(\n /import\\s+(\\w+)\\s+from\\s+['\"]([^'\"]+)['\"]/g,\n 'const $1 = require(\"$2\")',\n );\n transformed = transformed.replace(\n /import\\s+\\{([^}]+)\\}\\s+from\\s+['\"]([^'\"]+)['\"]/g,\n 'const {$1} = require(\"$2\")',\n );\n transformed = transformed.replace(\n /export\\s+default\\s+function\\s+(\\w+)/g,\n 'module.exports = function $1',\n );\n transformed = transformed.replace(\n /export\\s+default\\s+function\\s*\\(/g,\n 'module.exports = function(',\n );\n transformed = transformed.replace(\n /export\\s+default\\s+/g,\n 'module.exports = ',\n );\n transformed = transformed.replace(\n /export\\s+async\\s+function\\s+(\\w+)/g,\n 'exports.$1 = async function $1',\n );\n transformed = transformed.replace(\n /export\\s+function\\s+(\\w+)/g,\n 'exports.$1 = function $1',\n );\n transformed = transformed.replace(\n /export\\s+const\\s+(\\w+)\\s*=/g,\n 'exports.$1 =',\n );\n\n return transformed;\n}\n\n/**\n * Add React Refresh registration to transformed code.\n * This enables true HMR (state-preserving) for React components.\n * Shared between NextDevServer and ViteDevServer.\n */\nexport function addReactRefresh(code: string, filename: string): string {\n const components = detectReactComponents(code);\n\n if (components.length === 0) {\n return `// HMR Setup\nimport.meta.hot = window.__vite_hot_context__(\"${filename}\");\n\n${code}\n\n// HMR Accept\nif (import.meta.hot) {\n import.meta.hot.accept();\n}\n`;\n }\n\n const registrations = components\n .map(name => ` $RefreshReg$(${name}, \"${filename} ${name}\");`)\n .join('\\n');\n\n return `// HMR Setup\nimport.meta.hot = window.__vite_hot_context__(\"${filename}\");\n\n${code}\n\n// React Refresh Registration\nif (import.meta.hot) {\n${registrations}\n import.meta.hot.accept(() => {\n if (window.$RefreshRuntime$) {\n window.$RefreshRuntime$.performReactRefresh();\n }\n });\n}\n`;\n}\n\nfunction isUppercaseStart(name: string): boolean {\n return name.length > 0 && name[0] >= 'A' && name[0] <= 'Z';\n}\n\n/**\n * Detect React components using acorn AST parsing.\n * Components are top-level functions/arrows with uppercase names.\n * Falls back to regex if acorn fails.\n */\nfunction detectReactComponents(code: string): string[] {\n try {\n return detectReactComponentsAst(code);\n } catch {\n return detectReactComponentsRegex(code);\n }\n}\n\nfunction detectReactComponentsAst(code: string): string[] {\n const ast = acorn.parse(code, { ecmaVersion: 'latest', sourceType: 'module' });\n const components: string[] = [];\n\n for (const node of (ast as any).body) {\n // function App() {} or async function App() {}\n if (node.type === 'FunctionDeclaration' && node.id && isUppercaseStart(node.id.name)) {\n if (!components.includes(node.id.name)) {\n components.push(node.id.name);\n }\n }\n\n // export default function App() {}\n if (node.type === 'ExportDefaultDeclaration' &&\n node.declaration?.type === 'FunctionDeclaration' &&\n node.declaration.id && isUppercaseStart(node.declaration.id.name)) {\n if (!components.includes(node.declaration.id.name)) {\n components.push(node.declaration.id.name);\n }\n }\n\n // export function App() {} or export async function App() {}\n if (node.type === 'ExportNamedDeclaration' &&\n node.declaration?.type === 'FunctionDeclaration' &&\n node.declaration.id && isUppercaseStart(node.declaration.id.name)) {\n if (!components.includes(node.declaration.id.name)) {\n components.push(node.declaration.id.name);\n }\n }\n\n // const App = () => {} or const App = function() {}\n // Handles both plain and export: export const App = () => {}\n const varDecl = node.type === 'VariableDeclaration' ? node\n : (node.type === 'ExportNamedDeclaration' && node.declaration?.type === 'VariableDeclaration')\n ? node.declaration : null;\n\n if (varDecl) {\n for (const declarator of varDecl.declarations) {\n if (declarator.id?.name && isUppercaseStart(declarator.id.name) && declarator.init) {\n const initType = declarator.init.type;\n // Only count as component if assigned a function/arrow, not a string/number/object\n if (initType === 'ArrowFunctionExpression' ||\n initType === 'FunctionExpression' ||\n // React.memo(Component), React.forwardRef(...)\n initType === 'CallExpression') {\n if (!components.includes(declarator.id.name)) {\n components.push(declarator.id.name);\n }\n }\n }\n }\n }\n }\n\n return components;\n}\n\nfunction detectReactComponentsRegex(code: string): string[] {\n const components: string[] = [];\n\n const funcDeclRegex = /(?:^|\\n)(?:export\\s+)?(?:async\\s+)?function\\s+([A-Z][a-zA-Z0-9]*)\\s*\\(/g;\n let match;\n while ((match = funcDeclRegex.exec(code)) !== null) {\n if (!components.includes(match[1])) {\n components.push(match[1]);\n }\n }\n\n const arrowRegex = /(?:^|\\n)(?:export\\s+)?(?:const|let|var)\\s+([A-Z][a-zA-Z0-9]*)\\s*=/g;\n while ((match = arrowRegex.exec(code)) !== null) {\n if (!components.includes(match[1])) {\n components.push(match[1]);\n }\n }\n\n return components;\n}\n","/**\n * Runtime - Execute user code with shimmed Node.js globals\n *\n * ESM to CJS transformation is now handled during npm install by transform.ts\n * using esbuild-wasm. This runtime just executes the pre-transformed CJS code.\n */\n\nimport { VirtualFS } from './virtual-fs';\nimport type { IRuntime, IExecuteResult, IRuntimeOptions } from './runtime-interface';\nimport type { PackageJson } from './types/package-json';\nimport { simpleHash } from './utils/hash';\nimport { uint8ToBase64, uint8ToHex } from './utils/binary-encoding';\nimport { createFsShim, FsShim } from './shims/fs';\nimport * as pathShim from './shims/path';\nimport { createProcess, Process } from './shims/process';\nimport * as httpShim from './shims/http';\nimport * as httpsShim from './shims/https';\nimport * as netShim from './shims/net';\nimport eventsShim from './shims/events';\nimport streamShim from './shims/stream';\nimport * as urlShim from './shims/url';\nimport * as querystringShim from './shims/querystring';\nimport * as utilShim from './shims/util';\nimport * as ttyShim from './shims/tty';\nimport * as osShim from './shims/os';\nimport * as cryptoShim from './shims/crypto';\nimport * as zlibShim from './shims/zlib';\nimport * as dnsShim from './shims/dns';\nimport bufferShim from './shims/buffer';\nimport * as childProcessShim from './shims/child_process';\nimport { initChildProcess } from './shims/child_process';\nimport { getServerBridge } from './server-bridge';\nimport * as chokidarShim from './shims/chokidar';\nimport * as wsShim from './shims/ws';\nimport * as fseventsShim from './shims/fsevents';\nimport * as readdirpShim from './shims/readdirp';\nimport * as moduleShim from './shims/module';\nimport * as perfHooksShim from './shims/perf_hooks';\nimport * as workerThreadsShim from './shims/worker_threads';\nimport * as esbuildShim from './shims/esbuild';\nimport * as rollupShim from './shims/rollup';\nimport * as v8Shim from './shims/v8';\nimport * as readlineShim from './shims/readline';\nimport * as tlsShim from './shims/tls';\nimport * as http2Shim from './shims/http2';\nimport * as clusterShim from './shims/cluster';\nimport * as dgramShim from './shims/dgram';\nimport * as vmShim from './shims/vm';\nimport * as inspectorShim from './shims/inspector';\nimport * as asyncHooksShim from './shims/async_hooks';\nimport * as domainShim from './shims/domain';\nimport * as diagnosticsChannelShim from './shims/diagnostics_channel';\n\nimport assertShim from './shims/assert';\nimport { resolve as resolveExports, imports as resolveImports } from 'resolve.exports';\nimport { transformEsmToCjsSimple } from './frameworks/code-transforms';\nimport * as acorn from 'acorn';\n\n/**\n * Walk an acorn AST recursively, calling the callback for every node.\n */\nfunction walkAst(node: any, callback: (node: any) => void): void {\n if (!node || typeof node !== 'object') return;\n if (typeof node.type === 'string') {\n callback(node);\n }\n for (const key of Object.keys(node)) {\n if (key === 'type' || key === 'start' || key === 'end' || key === 'loc' || key === 'range') continue;\n const child = node[key];\n if (child && typeof child === 'object') {\n if (Array.isArray(child)) {\n for (const item of child) {\n if (item && typeof item === 'object' && typeof item.type === 'string') {\n walkAst(item, callback);\n }\n }\n } else if (typeof child.type === 'string') {\n walkAst(child, callback);\n }\n }\n }\n}\n\n/**\n * Transform dynamic imports in code: import('x') -> __dynamicImport('x')\n * Regex-based fallback for when AST parsing fails.\n */\nfunction transformDynamicImportsRegex(code: string): string {\n return code.replace(/(?<![.$\\w])import\\s*\\(/g, '__dynamicImport(');\n}\n\n/**\n * All-in-one ESM to CJS transform using AST.\n * Handles import/export declarations, import.meta, and dynamic imports in a single pass.\n * Falls back to regex-based transforms if acorn can't parse the code.\n */\nfunction transformEsmToCjs(code: string, filename: string): string {\n // Quick check: does the code have any ESM-like patterns?\n const maybeEsm = /\\bimport\\b|\\bexport\\b/.test(code);\n if (!maybeEsm) return code;\n\n try {\n return transformEsmToCjsAst(code, filename);\n } catch {\n // Acorn can't parse — fall back to regex transforms\n return transformEsmToCjsRegexFallback(code, filename);\n }\n}\n\n/**\n * AST-based ESM to CJS transform. Parses once with acorn, then:\n * 1. Replaces import.meta with import_meta (the wrapper-provided variable)\n * 2. Replaces dynamic import() with __dynamicImport()\n * 3. Transforms import/export declarations to require/exports\n *\n * Steps 1 & 2 use a deep AST walk (handles nodes inside functions/classes).\n * Step 3 re-parses the modified code via transformEsmToCjsSimple.\n */\nfunction transformEsmToCjsAst(code: string, filename: string): string {\n const ast = acorn.parse(code, { ecmaVersion: 'latest', sourceType: 'module' }) as any;\n\n // Collect deep replacements: import.meta → import_meta, import() → __dynamicImport()\n const deepReplacements: Array<[number, number, string]> = [];\n\n walkAst(ast, (node: any) => {\n // import.meta → import_meta (variable provided by module wrapper)\n if (node.type === 'MetaProperty' && node.meta?.name === 'import' && node.property?.name === 'meta') {\n deepReplacements.push([node.start, node.end, 'import_meta']);\n }\n // import('x') → __dynamicImport('x')\n if (node.type === 'ImportExpression') {\n // Replace just the 'import' keyword, preserving the (...) part\n deepReplacements.push([node.start, node.start + 6, '__dynamicImport']);\n }\n });\n\n // Check for actual import/export declarations\n const hasImportDecl = ast.body.some((n: any) => n.type === 'ImportDeclaration');\n const hasExportDecl = ast.body.some((n: any) => n.type?.startsWith('Export'));\n\n // Apply deep replacements from end to start (preserves earlier positions)\n let transformed = code;\n deepReplacements.sort((a, b) => b[0] - a[0]);\n for (const [start, end, replacement] of deepReplacements) {\n transformed = transformed.slice(0, start) + replacement + transformed.slice(end);\n }\n\n // Transform import/export declarations (re-parses the modified code)\n if (hasImportDecl || hasExportDecl) {\n transformed = transformEsmToCjsSimple(transformed);\n\n if (hasExportDecl) {\n transformed = 'Object.defineProperty(exports, \"__esModule\", { value: true });\\n' + transformed;\n }\n }\n\n return transformed;\n}\n\n/**\n * Regex-based fallback for ESM to CJS transform (when acorn can't parse).\n */\nfunction transformEsmToCjsRegexFallback(code: string, filename: string): string {\n let transformed = code;\n\n // Replace import.meta (regex — may match in strings, but this is the fallback)\n transformed = transformed.replace(/\\bimport\\.meta\\.url\\b/g, `\"file://${filename}\"`);\n transformed = transformed.replace(/\\bimport\\.meta\\.dirname\\b/g, `\"${pathShim.dirname(filename)}\"`);\n transformed = transformed.replace(/\\bimport\\.meta\\.filename\\b/g, `\"${filename}\"`);\n transformed = transformed.replace(/\\bimport\\.meta\\b/g, `({ url: \"file://${filename}\", dirname: \"${pathShim.dirname(filename)}\", filename: \"${filename}\" })`);\n\n // Replace dynamic imports\n transformed = transformDynamicImportsRegex(transformed);\n\n // Transform import/export (AST with its own regex fallback)\n const hasImport = /\\bimport\\s+[\\w{*'\"]/m.test(code);\n const hasExport = /\\bexport\\s+(?:default|const|let|var|function|class|{|\\*)/m.test(code);\n if (hasImport || hasExport) {\n transformed = transformEsmToCjsSimple(transformed);\n if (hasExport) {\n transformed = 'Object.defineProperty(exports, \"__esModule\", { value: true });\\n' + transformed;\n }\n }\n\n return transformed;\n}\n\n/**\n * Create a dynamic import function for a module context\n * Returns a function that wraps require() in a Promise\n */\nfunction createDynamicImport(moduleRequire: RequireFunction): (specifier: string) => Promise<unknown> {\n return async (specifier: string): Promise<unknown> => {\n try {\n const mod = moduleRequire(specifier);\n\n // If the module has a default export or is already ESM-like, return as-is\n if (mod && typeof mod === 'object' && ('default' in (mod as object) || '__esModule' in (mod as object))) {\n return mod;\n }\n\n // For CommonJS modules, wrap in an object with default export\n // This matches how dynamic import() handles CJS modules\n return {\n default: mod,\n ...(mod && typeof mod === 'object' ? mod as object : {}),\n };\n } catch (error) {\n // Re-throw as a rejected promise (which is what dynamic import does)\n throw error;\n }\n };\n}\n\nexport interface Module {\n id: string;\n filename: string;\n exports: unknown;\n loaded: boolean;\n children: Module[];\n paths: string[];\n}\n\nexport interface RuntimeOptions {\n cwd?: string;\n env?: Record<string, string>;\n onConsole?: (method: string, args: unknown[]) => void;\n onStdout?: (data: string) => void;\n onStderr?: (data: string) => void;\n}\n\nexport interface RequireFunction {\n (id: string): unknown;\n resolve: (id: string) => string;\n cache: Record<string, Module>;\n}\n\n/**\n * Create a basic string_decoder module\n */\nfunction createStringDecoderModule() {\n class StringDecoder {\n encoding: string;\n constructor(encoding?: string) {\n this.encoding = encoding || 'utf8';\n }\n write(buffer: Uint8Array): string {\n return new TextDecoder(this.encoding).decode(buffer);\n }\n end(buffer?: Uint8Array): string {\n if (buffer) return this.write(buffer);\n return '';\n }\n }\n return { StringDecoder };\n}\n\n/**\n * Create a basic timers module\n */\nfunction createTimersModule() {\n return {\n setTimeout: globalThis.setTimeout,\n setInterval: globalThis.setInterval,\n setImmediate: (fn: () => void) => setTimeout(fn, 0),\n clearTimeout: globalThis.clearTimeout,\n clearInterval: globalThis.clearInterval,\n clearImmediate: globalThis.clearTimeout,\n };\n}\n\n/**\n * Minimal prettier shim - just returns input unchanged\n * This is needed because prettier uses createRequire which conflicts with our runtime\n */\nconst prettierShim = {\n format: (source: string, _options?: unknown) => Promise.resolve(source),\n formatWithCursor: (source: string, _options?: unknown) => Promise.resolve({ formatted: source, cursorOffset: 0 }),\n check: (_source: string, _options?: unknown) => Promise.resolve(true),\n resolveConfig: () => Promise.resolve(null),\n resolveConfigFile: () => Promise.resolve(null),\n clearConfigCache: () => {},\n getFileInfo: () => Promise.resolve({ ignored: false, inferredParser: null }),\n getSupportInfo: () => Promise.resolve({ languages: [], options: [] }),\n version: '3.0.0',\n doc: {\n builders: {},\n printer: {},\n utils: {},\n },\n};\n\n/**\n * Create a mutable copy of a module for packages that need to patch it\n * (e.g., Sentry needs to patch http.request/http.get)\n */\nfunction makeMutable(mod: Record<string, unknown>): Record<string, unknown> {\n const mutable: Record<string, unknown> = {};\n for (const key of Object.keys(mod)) {\n mutable[key] = mod[key];\n }\n return mutable;\n}\n\n/**\n * Built-in modules registry\n */\nconst builtinModules: Record<string, unknown> = {\n path: pathShim,\n // Make http/https mutable so packages like Sentry can patch them\n http: makeMutable(httpShim as unknown as Record<string, unknown>),\n https: makeMutable(httpsShim as unknown as Record<string, unknown>),\n net: netShim,\n events: eventsShim,\n stream: streamShim,\n buffer: bufferShim,\n url: urlShim,\n querystring: querystringShim,\n util: utilShim,\n tty: ttyShim,\n os: osShim,\n crypto: cryptoShim,\n zlib: zlibShim,\n dns: dnsShim,\n child_process: childProcessShim,\n assert: assertShim,\n string_decoder: createStringDecoderModule(),\n timers: createTimersModule(),\n _http_common: {},\n _http_incoming: {},\n _http_outgoing: {},\n // New shims for Vite support\n chokidar: chokidarShim,\n ws: wsShim,\n fsevents: fseventsShim,\n readdirp: readdirpShim,\n module: moduleShim,\n perf_hooks: perfHooksShim,\n worker_threads: workerThreadsShim,\n esbuild: esbuildShim,\n rollup: rollupShim,\n v8: v8Shim,\n readline: readlineShim,\n tls: tlsShim,\n http2: http2Shim,\n cluster: clusterShim,\n dgram: dgramShim,\n vm: vmShim,\n inspector: inspectorShim,\n 'inspector/promises': inspectorShim,\n async_hooks: asyncHooksShim,\n domain: domainShim,\n diagnostics_channel: diagnosticsChannelShim,\n // prettier uses createRequire which doesn't work in our runtime, so we shim it\n prettier: prettierShim,\n // Some packages explicitly require 'console' (with Console constructor)\n console: {\n ...console,\n Console: class Console {\n private _stdout: { write: (s: string) => void } | null;\n private _stderr: { write: (s: string) => void } | null;\n constructor(options?: unknown) {\n // Node's Console accepts (stdout, stderr) or { stdout, stderr }\n const opts = options as Record<string, unknown> | undefined;\n if (opts && typeof opts === 'object' && 'write' in opts) {\n // new Console(stdout, stderr) — first arg is stdout stream\n this._stdout = opts as unknown as { write: (s: string) => void };\n this._stderr = (arguments[1] as { write: (s: string) => void }) || this._stdout;\n } else if (opts && typeof opts === 'object' && 'stdout' in opts) {\n // new Console({ stdout, stderr })\n this._stdout = opts.stdout as { write: (s: string) => void } || null;\n this._stderr = (opts.stderr as { write: (s: string) => void }) || this._stdout;\n } else {\n this._stdout = null;\n this._stderr = null;\n }\n }\n private _write(stream: 'out' | 'err', args: unknown[]) {\n const msg = args.map(a => typeof a === 'string' ? a : JSON.stringify(a)).join(' ') + '\\n';\n const target = stream === 'err' ? this._stderr : this._stdout;\n if (target) target.write(msg);\n else if (stream === 'err') console.error(...args);\n else console.log(...args);\n }\n log(...args: unknown[]) { this._write('out', args); }\n error(...args: unknown[]) { this._write('err', args); }\n warn(...args: unknown[]) { this._write('err', args); }\n info(...args: unknown[]) { this._write('out', args); }\n debug(...args: unknown[]) { this._write('out', args); }\n trace(...args: unknown[]) { this._write('err', args); }\n dir(obj: unknown) { this._write('out', [obj]); }\n time(_label?: string) {}\n timeEnd(_label?: string) {}\n timeLog(_label?: string) {}\n assert(value: unknown, ...args: unknown[]) { if (!value) this._write('err', ['Assertion failed:', ...args]); }\n clear() {}\n count(_label?: string) {}\n countReset(_label?: string) {}\n group(..._args: unknown[]) {}\n groupCollapsed(..._args: unknown[]) {}\n groupEnd() {}\n table(data: unknown) { this._write('out', [data]); }\n },\n },\n // util/types is accessed as a subpath\n 'util/types': utilShim.types,\n // path subpaths (our path shim is already POSIX-based)\n 'path/posix': pathShim,\n 'path/win32': pathShim.win32,\n // timers subpaths\n 'timers/promises': {\n setTimeout: (ms: number) => new Promise(resolve => setTimeout(resolve, ms)),\n setInterval: globalThis.setInterval,\n setImmediate: (value?: unknown) => new Promise(resolve => setTimeout(() => resolve(value), 0)),\n scheduler: { wait: (ms: number) => new Promise(resolve => setTimeout(resolve, ms)) },\n },\n};\n\n/**\n * Create a require function for a specific module context\n */\nfunction createRequire(\n vfs: VirtualFS,\n fsShim: FsShim,\n process: Process,\n currentDir: string,\n moduleCache: Record<string, Module>,\n options: RuntimeOptions,\n processedCodeCache?: Map<string, string>\n): RequireFunction {\n // Module resolution cache for faster repeated imports\n const resolutionCache: Map<string, string | null> = new Map();\n\n // Package.json parsing cache\n const packageJsonCache: Map<string, PackageJson | null> = new Map();\n\n const getParsedPackageJson = (pkgPath: string): PackageJson | null => {\n if (packageJsonCache.has(pkgPath)) {\n return packageJsonCache.get(pkgPath)!;\n }\n try {\n const content = vfs.readFileSync(pkgPath, 'utf8');\n const parsed = JSON.parse(content) as PackageJson;\n packageJsonCache.set(pkgPath, parsed);\n return parsed;\n } catch {\n packageJsonCache.set(pkgPath, null);\n return null;\n }\n };\n\n const resolveModule = (id: string, fromDir: string): string => {\n // Handle node: protocol prefix (Node.js 16+)\n if (id.startsWith('node:')) {\n id = id.slice(5);\n }\n\n // Built-in modules\n if (builtinModules[id] || id === 'fs' || id === 'process' || id === 'url' || id === 'querystring' || id === 'util') {\n return id;\n }\n\n // Package imports: #something resolves via nearest package.json \"imports\" field\n if (id.startsWith('#')) {\n let searchDir = fromDir;\n while (searchDir !== '/') {\n const pkgPath = pathShim.join(searchDir, 'package.json');\n const pkg = getParsedPackageJson(pkgPath);\n if (pkg?.imports) {\n try {\n const resolved = resolveImports(pkg, id, { require: true });\n if (resolved && resolved.length > 0) {\n const fullPath = pathShim.join(searchDir, resolved[0]);\n if (vfs.existsSync(fullPath)) return fullPath;\n }\n } catch {\n // resolveImports throws if no match found\n }\n }\n searchDir = pathShim.dirname(searchDir);\n }\n throw new Error(`Cannot find module '${id}'`);\n }\n\n // Check resolution cache\n const cacheKey = `${fromDir}|${id}`;\n const cached = resolutionCache.get(cacheKey);\n if (cached !== undefined) {\n if (cached === null) {\n throw new Error(`Cannot find module '${id}'`);\n }\n return cached;\n }\n\n // Relative paths\n if (id.startsWith('./') || id.startsWith('../') || id.startsWith('/')) {\n const resolved = id.startsWith('/')\n ? id\n : pathShim.resolve(fromDir, id);\n\n // Try exact path\n if (vfs.existsSync(resolved)) {\n const stats = vfs.statSync(resolved);\n if (stats.isFile()) {\n resolutionCache.set(cacheKey, resolved);\n return resolved;\n }\n // Directory - look for index.js\n const indexPath = pathShim.join(resolved, 'index.js');\n if (vfs.existsSync(indexPath)) {\n resolutionCache.set(cacheKey, indexPath);\n return indexPath;\n }\n }\n\n // Try with extensions\n const extensions = ['.js', '.json'];\n for (const ext of extensions) {\n const withExt = resolved + ext;\n if (vfs.existsSync(withExt)) {\n resolutionCache.set(cacheKey, withExt);\n return withExt;\n }\n }\n\n resolutionCache.set(cacheKey, null);\n throw new Error(`Cannot find module '${id}' from '${fromDir}'`);\n }\n\n // Helper to try resolving a path with extensions\n const tryResolveFile = (basePath: string): string | null => {\n // Try exact path first\n if (vfs.existsSync(basePath)) {\n const stats = vfs.statSync(basePath);\n if (stats.isFile()) {\n return basePath;\n }\n // Directory - look for index.js\n const indexPath = pathShim.join(basePath, 'index.js');\n if (vfs.existsSync(indexPath)) {\n return indexPath;\n }\n }\n\n // Try with extensions\n const extensions = ['.js', '.json', '.node'];\n for (const ext of extensions) {\n const withExt = basePath + ext;\n if (vfs.existsSync(withExt)) {\n return withExt;\n }\n }\n\n return null;\n };\n\n // Apply browser field object remapping for a resolved file within a package\n const applyBrowserFieldRemap = (resolvedPath: string, pkg: PackageJson, pkgRoot: string): string | null => {\n if (!pkg.browser || typeof pkg.browser !== 'object') return resolvedPath;\n const browserMap = pkg.browser as Record<string, string | false>;\n // Build relative path from package root (e.g., \"./lib/node.js\")\n const relPath = './' + pathShim.relative(pkgRoot, resolvedPath);\n // Also check without extension for common patterns\n const relPathNoExt = relPath.replace(/\\.(js|json|cjs|mjs)$/, '');\n for (const key of [relPath, relPathNoExt]) {\n if (key in browserMap) {\n if (browserMap[key] === false) return null; // Module excluded in browser\n return tryResolveFile(pathShim.join(pkgRoot, browserMap[key] as string));\n }\n }\n return resolvedPath;\n };\n\n // Helper to resolve from a node_modules directory\n const tryResolveFromNodeModules = (nodeModulesDir: string, moduleId: string): string | null => {\n // Determine the package name and root\n const parts = moduleId.split('/');\n const pkgName = parts[0].startsWith('@') && parts.length > 1\n ? `${parts[0]}/${parts[1]}` // Scoped package\n : parts[0];\n\n const pkgRoot = pathShim.join(nodeModulesDir, pkgName);\n const pkgPath = pathShim.join(pkgRoot, 'package.json');\n\n // Check package.json first — it controls entry points (browser, main, exports)\n const pkg = getParsedPackageJson(pkgPath);\n if (pkg) {\n // Use resolve.exports to handle the exports field\n if (pkg.exports) {\n // Try require first, then import. Some packages have broken ESM builds (convex).\n // If the CJS entry throws \"cannot be imported with require()\", the loadModule\n // fallback will retry with the import condition.\n for (const conditions of [{ require: true }, { import: true }] as const) {\n try {\n const resolved = resolveExports(pkg, moduleId, conditions);\n if (resolved && resolved.length > 0) {\n const exportPath = resolved[0];\n const fullExportPath = pathShim.join(pkgRoot, exportPath);\n const resolvedFile = tryResolveFile(fullExportPath);\n if (resolvedFile) {\n // Skip CJS stub files that just throw \"cannot be imported with require()\"\n // These are common in ESM-only packages (vitest, etc.)\n if (resolvedFile.endsWith('.cjs')) {\n try {\n const content = vfs.readFileSync(resolvedFile, 'utf8') as string;\n if (content.trimStart().startsWith('throw ')) {\n continue; // Skip this entry, try next condition\n }\n } catch { /* proceed if we can't read */ }\n }\n return resolvedFile;\n }\n }\n } catch {\n // resolveExports throws if no match found, try next\n }\n }\n }\n\n // If this is the package root (no sub-path), use browser/main/module entry\n if (pkgName === moduleId) {\n // Prefer browser field (string form) since we're running in a browser\n let main: string | undefined;\n if (typeof pkg.browser === 'string') {\n main = pkg.browser;\n }\n if (!main && pkg.module) {\n // module field is used by ESM-only packages (e.g., estree-walker)\n main = pkg.module as string;\n }\n if (!main) {\n main = pkg.main || 'index.js';\n }\n const mainPath = pathShim.join(pkgRoot, main);\n const resolvedMain = tryResolveFile(mainPath);\n if (resolvedMain) return resolvedMain;\n }\n }\n\n // Fall back to direct file/directory resolution (for sub-paths or packages without package.json)\n const fullPath = pathShim.join(nodeModulesDir, moduleId);\n const resolved = tryResolveFile(fullPath);\n if (resolved) return resolved;\n\n return null;\n };\n\n // Node modules resolution\n let searchDir = fromDir;\n while (searchDir !== '/') {\n const nodeModulesDir = pathShim.join(searchDir, 'node_modules');\n const resolved = tryResolveFromNodeModules(nodeModulesDir, id);\n if (resolved) {\n resolutionCache.set(cacheKey, resolved);\n return resolved;\n }\n\n searchDir = pathShim.dirname(searchDir);\n }\n\n // Try root node_modules as last resort\n const rootResolved = tryResolveFromNodeModules('/node_modules', id);\n if (rootResolved) {\n resolutionCache.set(cacheKey, rootResolved);\n return rootResolved;\n }\n\n resolutionCache.set(cacheKey, null);\n throw new Error(`Cannot find module '${id}'`);\n };\n\n const loadModule = (resolvedPath: string): Module => {\n // Return cached module\n if (moduleCache[resolvedPath]) {\n return moduleCache[resolvedPath];\n }\n\n // Create module object\n const module: Module = {\n id: resolvedPath,\n filename: resolvedPath,\n exports: {},\n loaded: false,\n children: [],\n paths: [],\n };\n\n // Cache before loading to handle circular dependencies\n moduleCache[resolvedPath] = module;\n\n // Evict oldest entry if cache exceeds bounds\n const cacheKeys = Object.keys(moduleCache);\n if (cacheKeys.length > 2000) {\n delete moduleCache[cacheKeys[0]];\n }\n\n // Handle JSON files\n if (resolvedPath.endsWith('.json')) {\n const content = vfs.readFileSync(resolvedPath, 'utf8');\n module.exports = JSON.parse(content);\n module.loaded = true;\n return module;\n }\n\n // Read and execute JS file\n const rawCode = vfs.readFileSync(resolvedPath, 'utf8');\n const dirname = pathShim.dirname(resolvedPath);\n\n // Check processed code cache (useful for HMR when module cache is cleared but code hasn't changed)\n // Use a simple hash of the content for cache key to handle content changes\n const codeCacheKey = `${resolvedPath}|${simpleHash(rawCode)}`;\n let code = processedCodeCache?.get(codeCacheKey);\n\n if (!code) {\n code = rawCode;\n\n // Strip shebang line if present (e.g. #!/usr/bin/env node)\n if (code.startsWith('#!')) {\n code = code.slice(code.indexOf('\\n') + 1);\n }\n\n // Transform ESM to CJS if needed (for .mjs files or ESM that wasn't pre-transformed)\n // transformEsmToCjs uses AST to handle import/export, import.meta, and dynamic imports\n // It also handles already-CJS files safely (AST finds no ESM nodes → no-op)\n if (!resolvedPath.endsWith('.cjs')) {\n code = transformEsmToCjs(code, resolvedPath);\n }\n\n // Cache the processed code\n processedCodeCache?.set(codeCacheKey, code);\n }\n\n // Create require for this module\n const moduleRequire = createRequire(\n vfs,\n fsShim,\n process,\n dirname,\n moduleCache,\n options,\n processedCodeCache\n );\n moduleRequire.cache = moduleCache;\n\n // Create console wrapper\n const consoleWrapper = createConsoleWrapper(options.onConsole);\n\n // Execute module code\n // We use an outer/inner function pattern to avoid conflicts:\n // - Outer function receives parameters and sets up vars\n // - Inner function runs the code, allowing let/const to shadow without \"already declared\" errors\n // - import.meta is provided for ESM code that uses it\n try {\n const importMetaUrl = 'file://' + resolvedPath;\n const wrappedCode = `(function($exports, $require, $module, $filename, $dirname, $process, $console, $importMeta, $dynamicImport) {\nvar exports = $exports;\nvar require = $require;\nvar module = $module;\nvar __filename = $filename;\nvar __dirname = $dirname;\nvar process = $process;\nvar console = $console;\nvar import_meta = $importMeta;\nvar __dynamicImport = $dynamicImport;\n// Set up global.process and globalThis.process for code that accesses them directly\nvar global = globalThis;\nglobalThis.process = $process;\nglobal.process = $process;\nreturn (function() {\n${code}\n}).call(this);\n})`;\n\n let fn;\n try {\n fn = eval(wrappedCode);\n } catch (evalError) {\n const msg = evalError instanceof Error ? evalError.message : String(evalError);\n throw new SyntaxError(`${msg} (in ${resolvedPath})`);\n }\n // Create dynamic import function for this module context\n const dynamicImport = createDynamicImport(moduleRequire);\n\n fn(\n module.exports,\n moduleRequire,\n module,\n resolvedPath,\n dirname,\n process,\n consoleWrapper,\n { url: importMetaUrl, dirname, filename: resolvedPath },\n dynamicImport\n );\n\n module.loaded = true;\n } catch (error) {\n // Remove from cache on error\n delete moduleCache[resolvedPath];\n // Enhance runtime errors with the module path for easier debugging\n if (error instanceof Error && !error.message.includes('(in /')) {\n error.message = `${error.message} (in ${resolvedPath})`;\n }\n throw error;\n }\n\n return module;\n };\n\n const require: RequireFunction = (id: string): unknown => {\n // Handle node: protocol prefix (Node.js 16+)\n if (id.startsWith('node:')) {\n id = id.slice(5);\n }\n\n // Built-in modules\n if (id === 'fs') {\n return fsShim;\n }\n if (id === 'fs/promises') {\n return fsShim.promises;\n }\n if (id === 'process') {\n return process;\n }\n // Special handling for 'module' - provide a working createRequire\n if (id === 'module') {\n return {\n ...moduleShim,\n createRequire: (filenameOrUrl: string) => {\n // Convert file:// URL to path\n let fromPath = filenameOrUrl;\n if (filenameOrUrl.startsWith('file://')) {\n fromPath = filenameOrUrl.slice(7); // Remove 'file://'\n // Handle Windows-style file:///C:/ URLs (though unlikely in our env)\n if (fromPath.startsWith('/') && fromPath[2] === ':') {\n fromPath = fromPath.slice(1);\n }\n }\n // Get directory from the path\n const fromDir = pathShim.dirname(fromPath);\n // Return a require function that resolves from this directory\n const newRequire = createRequire(\n vfs,\n fsShim,\n process,\n fromDir,\n moduleCache,\n options\n );\n newRequire.cache = moduleCache;\n return newRequire;\n },\n };\n }\n if (builtinModules[id]) {\n return builtinModules[id];\n }\n\n // Intercept rollup and esbuild - always use our shims\n // These packages have native binaries that don't work in browser\n if (id === 'rollup' || id.startsWith('rollup/') || id.startsWith('@rollup/')) {\n console.log('[runtime] Intercepted rollup:', id);\n return builtinModules['rollup'];\n }\n if (id === 'esbuild' || id.startsWith('esbuild/') || id.startsWith('@esbuild/')) {\n console.log('[runtime] Intercepted esbuild:', id);\n return builtinModules['esbuild'];\n }\n // Intercept prettier - uses createRequire which doesn't work in our runtime\n if (id === 'prettier' || id.startsWith('prettier/')) {\n return builtinModules['prettier'];\n }\n const resolved = resolveModule(id, currentDir);\n\n // If resolved to a built-in name (shouldn't happen but safety check)\n if (builtinModules[resolved]) {\n return builtinModules[resolved];\n }\n\n // Also check if resolved path is to rollup, esbuild, or prettier in node_modules\n if (resolved.includes('/node_modules/rollup/') ||\n resolved.includes('/node_modules/@rollup/')) {\n return builtinModules['rollup'];\n }\n if (resolved.includes('/node_modules/esbuild/') ||\n resolved.includes('/node_modules/@esbuild/')) {\n return builtinModules['esbuild'];\n }\n if (resolved.includes('/node_modules/prettier/')) {\n return builtinModules['prettier'];\n }\n\n return loadModule(resolved).exports;\n };\n\n require.resolve = (id: string): string => {\n if (id === 'fs' || id === 'process' || builtinModules[id]) {\n return id;\n }\n return resolveModule(id, currentDir);\n };\n\n require.cache = moduleCache;\n\n return require;\n}\n\n/**\n * Create a console wrapper that can capture output\n */\nfunction createConsoleWrapper(\n onConsole?: (method: string, args: unknown[]) => void\n): Console {\n const wrapper = {\n log: (...args: unknown[]) => {\n console.log(...args);\n onConsole?.('log', args);\n },\n error: (...args: unknown[]) => {\n console.error(...args);\n onConsole?.('error', args);\n },\n warn: (...args: unknown[]) => {\n console.warn(...args);\n onConsole?.('warn', args);\n },\n info: (...args: unknown[]) => {\n console.info(...args);\n onConsole?.('info', args);\n },\n debug: (...args: unknown[]) => {\n console.debug(...args);\n onConsole?.('debug', args);\n },\n trace: (...args: unknown[]) => {\n console.trace(...args);\n onConsole?.('trace', args);\n },\n dir: (obj: unknown) => {\n console.dir(obj);\n onConsole?.('dir', [obj]);\n },\n time: console.time.bind(console),\n timeEnd: console.timeEnd.bind(console),\n timeLog: console.timeLog.bind(console),\n assert: console.assert.bind(console),\n clear: console.clear.bind(console),\n count: console.count.bind(console),\n countReset: console.countReset.bind(console),\n group: console.group.bind(console),\n groupCollapsed: console.groupCollapsed.bind(console),\n groupEnd: console.groupEnd.bind(console),\n table: console.table.bind(console),\n };\n\n return wrapper as unknown as Console;\n}\n\n/**\n * Runtime class for executing code in virtual environment\n * Note: This class has sync methods for backward compatibility.\n * Use createRuntime() factory for IRuntime interface compliance.\n */\nexport class Runtime {\n private vfs: VirtualFS;\n private fsShim: FsShim;\n private process: Process;\n private moduleCache: Record<string, Module> = {};\n private options: RuntimeOptions;\n /** Cache for pre-processed code (after ESM transform) before eval */\n private processedCodeCache: Map<string, string> = new Map();\n\n constructor(vfs: VirtualFS, options: RuntimeOptions = {}) {\n this.vfs = vfs;\n // Create process first so we can get cwd for fs shim\n this.process = createProcess({\n cwd: options.cwd || '/',\n env: options.env,\n onStdout: options.onStdout,\n onStderr: options.onStderr,\n });\n // Create fs shim with cwd getter for relative path resolution\n this.fsShim = createFsShim(vfs, () => this.process.cwd());\n this.options = options;\n\n // Initialize child_process with VFS for bash command support\n initChildProcess(vfs);\n\n // Initialize file watcher shims with VFS\n chokidarShim.setVFS(vfs);\n readdirpShim.setVFS(vfs);\n\n // Initialize esbuild shim with VFS for file access\n esbuildShim.setVFS(vfs);\n\n // Polyfill setImmediate/clearImmediate (Node.js globals not available in browsers)\n if (typeof globalThis.setImmediate === 'undefined') {\n (globalThis as any).setImmediate = (fn: (...args: unknown[]) => void, ...args: unknown[]) => setTimeout(fn, 0, ...args);\n (globalThis as any).clearImmediate = (id: number) => clearTimeout(id);\n }\n\n // Patch setTimeout/setInterval to return Node.js-compatible Timeout objects\n // Node.js timers return objects with .ref()/.unref()/.refresh()/.hasRef() methods\n // Browser timers return plain numbers. Many npm packages (vitest, etc.) call .unref()\n if (!(globalThis.setTimeout as any).__patched) {\n const origSetTimeout = globalThis.setTimeout.bind(globalThis);\n const origSetInterval = globalThis.setInterval.bind(globalThis);\n const origClearTimeout = globalThis.clearTimeout.bind(globalThis);\n const origClearInterval = globalThis.clearInterval.bind(globalThis);\n const wrapTimer = (id: ReturnType<typeof origSetTimeout>) => {\n const t = { _id: id, ref() { return t; }, unref() { return t; }, hasRef() { return true; }, refresh() { return t; }, [Symbol.toPrimitive]() { return id; } };\n return t;\n };\n (globalThis as any).setTimeout = Object.assign((...args: Parameters<typeof origSetTimeout>) => wrapTimer(origSetTimeout(...args)), { __patched: true });\n (globalThis as any).setInterval = Object.assign((...args: Parameters<typeof origSetInterval>) => wrapTimer(origSetInterval(...args)), { __patched: true });\n (globalThis as any).clearTimeout = (t: any) => origClearTimeout(t?._id ?? t);\n (globalThis as any).clearInterval = (t: any) => origClearInterval(t?._id ?? t);\n }\n\n // Polyfill Error.captureStackTrace/prepareStackTrace for Safari/WebKit\n // (V8-specific API used by Express's depd and other npm packages)\n this.setupStackTracePolyfill();\n\n // Polyfill TextDecoder to handle base64/base64url/hex gracefully\n // (Some CLI tools incorrectly try to use TextDecoder for these)\n this.setupTextDecoderPolyfill();\n }\n\n /**\n * Set up a polyfilled TextDecoder that handles binary encodings\n */\n private setupTextDecoderPolyfill(): void {\n const OriginalTextDecoder = globalThis.TextDecoder;\n\n class PolyfillTextDecoder {\n private encoding: string;\n private decoder: TextDecoder | null = null;\n\n constructor(encoding: string = 'utf-8', options?: TextDecoderOptions) {\n this.encoding = encoding.toLowerCase();\n\n // For valid text encodings, use the real TextDecoder\n const validTextEncodings = [\n 'utf-8', 'utf8', 'utf-16le', 'utf-16be', 'utf-16',\n 'ascii', 'iso-8859-1', 'latin1', 'windows-1252'\n ];\n\n if (validTextEncodings.includes(this.encoding)) {\n try {\n this.decoder = new OriginalTextDecoder(encoding, options);\n } catch {\n // Fall back to utf-8\n this.decoder = new OriginalTextDecoder('utf-8', options);\n }\n }\n // For binary encodings (base64, base64url, hex), decoder stays null\n }\n\n decode(input?: BufferSource, options?: TextDecodeOptions): string {\n if (this.decoder) {\n return this.decoder.decode(input, options);\n }\n\n // Handle binary encodings manually\n if (!input) return '';\n\n const bytes = input instanceof ArrayBuffer\n ? new Uint8Array(input)\n : new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\n\n if (this.encoding === 'base64') {\n return uint8ToBase64(bytes);\n }\n\n if (this.encoding === 'base64url') {\n return uint8ToBase64(bytes).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '');\n }\n\n if (this.encoding === 'hex') {\n return uint8ToHex(bytes);\n }\n\n // Fallback: decode as utf-8\n return new OriginalTextDecoder('utf-8').decode(input, options);\n }\n\n get fatal(): boolean {\n return this.decoder?.fatal ?? false;\n }\n\n get ignoreBOM(): boolean {\n return this.decoder?.ignoreBOM ?? false;\n }\n }\n\n globalThis.TextDecoder = PolyfillTextDecoder as unknown as typeof TextDecoder;\n }\n\n /**\n * Polyfill V8's Error.captureStackTrace and Error.prepareStackTrace for Safari/WebKit.\n * Express's `depd` and other npm packages use these V8-specific APIs which don't\n * exist in Safari, causing \"callSite.getFileName is not a function\" errors.\n */\n private setupStackTracePolyfill(): void {\n // Only polyfill if not already available (i.e., not V8/Chrome)\n if (typeof (Error as any).captureStackTrace === 'function') return;\n\n // Set a default stackTraceLimit so Math.max(10, undefined) doesn't produce NaN\n // (depd and other packages read this value)\n if ((Error as any).stackTraceLimit === undefined) {\n (Error as any).stackTraceLimit = 10;\n }\n\n // Parse a stack trace string into structured frames\n function parseStack(stack: string): Array<{fn: string, file: string, line: number, col: number}> {\n if (!stack) return [];\n const frames: Array<{fn: string, file: string, line: number, col: number}> = [];\n const lines = stack.split('\\n');\n\n for (const raw of lines) {\n const line = raw.trim();\n if (!line || line.startsWith('Error') || line.startsWith('TypeError')) continue;\n\n let fn = '', file = '', lineNo = 0, colNo = 0;\n\n // Safari format: \"functionName@file:line:col\" or \"@file:line:col\"\n const safariMatch = line.match(/^(.*)@(.*?):(\\d+):(\\d+)$/);\n if (safariMatch) {\n fn = safariMatch[1] || '';\n file = safariMatch[2];\n lineNo = parseInt(safariMatch[3], 10);\n colNo = parseInt(safariMatch[4], 10);\n frames.push({ fn, file, line: lineNo, col: colNo });\n continue;\n }\n\n // Chrome format: \"at functionName (file:line:col)\" or \"at file:line:col\"\n const chromeMatch = line.match(/^at\\s+(?:(.+?)\\s+\\()?(.*?):(\\d+):(\\d+)\\)?$/);\n if (chromeMatch) {\n fn = chromeMatch[1] || '';\n file = chromeMatch[2];\n lineNo = parseInt(chromeMatch[3], 10);\n colNo = parseInt(chromeMatch[4], 10);\n frames.push({ fn, file, line: lineNo, col: colNo });\n continue;\n }\n }\n return frames;\n }\n\n // Create a mock CallSite object from a parsed frame\n function createCallSite(frame: {fn: string, file: string, line: number, col: number}) {\n return {\n getFileName: () => frame.file || null,\n getLineNumber: () => frame.line || null,\n getColumnNumber: () => frame.col || null,\n getFunctionName: () => frame.fn || null,\n getMethodName: () => frame.fn || null,\n getTypeName: () => null,\n getThis: () => undefined,\n getFunction: () => undefined,\n getEvalOrigin: () => undefined,\n isNative: () => false,\n isConstructor: () => false,\n isToplevel: () => !frame.fn,\n isEval: () => false,\n toString: () => frame.fn\n ? `${frame.fn} (${frame.file}:${frame.line}:${frame.col})`\n : `${frame.file}:${frame.line}:${frame.col}`,\n };\n }\n\n // Helper: parse stack and create CallSite objects, used by both captureStackTrace and .stack getter\n function buildCallSites(stack: string, constructorOpt?: Function) {\n const frames = parseStack(stack);\n let startIdx = 0;\n if (constructorOpt && constructorOpt.name) {\n for (let i = 0; i < frames.length; i++) {\n if (frames[i].fn === constructorOpt.name) {\n startIdx = i + 1;\n break;\n }\n }\n }\n return frames.slice(startIdx).map(createCallSite);\n }\n\n // Symbol to store raw stack string, used by the .stack getter\n const stackSymbol = Symbol('rawStack');\n\n // Intercept .stack on Error.prototype so that packages using the V8 pattern\n // \"Error.prepareStackTrace = fn; new Error().stack\" also get CallSite objects.\n // In V8, reading .stack lazily triggers prepareStackTrace; Safari doesn't do this.\n Object.defineProperty(Error.prototype, 'stack', {\n get() {\n const rawStack = (this as any)[stackSymbol];\n if (rawStack !== undefined && typeof (Error as any).prepareStackTrace === 'function') {\n const callSites = buildCallSites(rawStack);\n try {\n return (Error as any).prepareStackTrace(this, callSites);\n } catch {\n return rawStack;\n }\n }\n return rawStack;\n },\n set(value: string) {\n (this as any)[stackSymbol] = value;\n },\n configurable: true,\n enumerable: false,\n });\n\n // Polyfill Error.captureStackTrace\n (Error as any).captureStackTrace = function(target: any, constructorOpt?: Function) {\n // Temporarily clear prepareStackTrace to get the raw stack string\n // (otherwise our .stack getter would call prepareStackTrace recursively)\n const savedPrepare = (Error as any).prepareStackTrace;\n (Error as any).prepareStackTrace = undefined;\n const err = new Error();\n const rawStack = err.stack || '';\n (Error as any).prepareStackTrace = savedPrepare;\n\n // If prepareStackTrace is set, provide structured call sites\n if (typeof savedPrepare === 'function') {\n const callSites = buildCallSites(rawStack, constructorOpt);\n try {\n target.stack = savedPrepare(target, callSites);\n } catch (e) {\n console.warn('[almostnode] Error.prepareStackTrace threw:', e);\n target.stack = rawStack;\n }\n } else {\n target.stack = rawStack;\n }\n };\n }\n\n /**\n * Execute code as a module (synchronous - backward compatible)\n */\n execute(\n code: string,\n filename: string = '/index.js'\n ): { exports: unknown; module: Module } {\n const dirname = pathShim.dirname(filename);\n\n // Write code to virtual file system\n this.vfs.writeFileSync(filename, code);\n\n // Create require function\n const require = createRequire(\n this.vfs,\n this.fsShim,\n this.process,\n dirname,\n this.moduleCache,\n this.options,\n this.processedCodeCache\n );\n\n // Create module object\n const module: Module = {\n id: filename,\n filename,\n exports: {},\n loaded: false,\n children: [],\n paths: [],\n };\n\n // Cache the module\n this.moduleCache[filename] = module;\n\n // Create console wrapper\n const consoleWrapper = createConsoleWrapper(this.options.onConsole);\n\n // Transform code the same way loadModule does\n // Strip shebang line if present (e.g. #!/usr/bin/env node)\n if (code.startsWith('#!')) {\n code = code.slice(code.indexOf('\\n') + 1);\n }\n\n // Transform ESM to CJS if needed (AST-based, handles import.meta and dynamic imports too)\n if (!filename.endsWith('.cjs')) {\n code = transformEsmToCjs(code, filename);\n }\n\n // Execute code\n // Use the same wrapper pattern as loadModule for consistency\n try {\n const importMetaUrl = 'file://' + filename;\n const wrappedCode = `(function($exports, $require, $module, $filename, $dirname, $process, $console, $importMeta, $dynamicImport) {\nvar exports = $exports;\nvar require = $require;\nvar module = $module;\nvar __filename = $filename;\nvar __dirname = $dirname;\nvar process = $process;\nvar console = $console;\nvar import_meta = $importMeta;\nvar __dynamicImport = $dynamicImport;\n// Set up global.process and globalThis.process for code that accesses them directly\nvar global = globalThis;\nglobalThis.process = $process;\nglobal.process = $process;\n\nreturn (function() {\n${code}\n}).call(this);\n})`;\n\n // Create dynamic import function for this module context\n const dynamicImport = createDynamicImport(require);\n\n const fn = eval(wrappedCode);\n fn(\n module.exports,\n require,\n module,\n filename,\n dirname,\n this.process,\n consoleWrapper,\n { url: importMetaUrl, dirname, filename },\n dynamicImport\n );\n\n module.loaded = true;\n } catch (error) {\n delete this.moduleCache[filename];\n throw error;\n }\n\n return { exports: module.exports, module };\n }\n\n /**\n * Execute code as a module (async version for IRuntime interface)\n * Alias: executeSync() is the same as execute() for backward compatibility\n */\n executeSync = this.execute;\n\n /**\n * Execute code as a module (async - for IRuntime interface)\n */\n async executeAsync(\n code: string,\n filename: string = '/index.js'\n ): Promise<IExecuteResult> {\n return Promise.resolve(this.execute(code, filename));\n }\n\n /**\n * Run a file from the virtual file system (synchronous - backward compatible)\n */\n runFile(filename: string): { exports: unknown; module: Module } {\n const code = this.vfs.readFileSync(filename, 'utf8');\n return this.execute(code, filename);\n }\n\n /**\n * Alias for runFile (backward compatibility)\n */\n runFileSync = this.runFile;\n\n /**\n * Run a file from the virtual file system (async - for IRuntime interface)\n */\n async runFileAsync(filename: string): Promise<IExecuteResult> {\n return Promise.resolve(this.runFile(filename));\n }\n\n /**\n * Clear the module cache\n */\n clearCache(): void {\n // Clear contents in-place so closures that captured the reference still see the cleared cache\n for (const key of Object.keys(this.moduleCache)) {\n delete this.moduleCache[key];\n }\n }\n\n /**\n * Get the virtual file system\n */\n getVFS(): VirtualFS {\n return this.vfs;\n }\n\n /**\n * Get the process object\n */\n getProcess(): Process {\n return this.process;\n }\n\n /**\n * Create a REPL context that evaluates expressions and persists state.\n *\n * Returns an object with an `eval` method that:\n * - Returns the value of the last expression (unlike `execute` which returns module.exports)\n * - Persists variables between calls (`var x = 1` then `x` works)\n * - Has access to `require`, `console`, `process`, `Buffer` (same as execute)\n *\n * Security: The eval runs inside a Generator's local scope via direct eval,\n * NOT in the global scope. Only the runtime's own require/console/process are\n * exposed — the same sandbox boundary as execute(). Variables created in the\n * REPL are confined to the generator's closure and cannot leak to the page.\n *\n * Note: `const`/`let` are transformed to `var` so they persist across calls\n * (var hoists to the generator's function scope, const/let are block-scoped\n * to each eval call and would be lost).\n */\n createREPL(): { eval: (code: string) => unknown } {\n const require = createRequire(\n this.vfs,\n this.fsShim,\n this.process,\n '/',\n this.moduleCache,\n this.options,\n this.processedCodeCache\n );\n const consoleWrapper = createConsoleWrapper(this.options.onConsole);\n const process = this.process;\n const buffer = bufferShim.Buffer;\n\n // Use a Generator to maintain a persistent eval scope.\n // Generator functions preserve their local scope across yields, so\n // var declarations from eval() persist between calls. Direct eval\n // runs in the generator's scope (not global), providing isolation.\n const GeneratorFunction = Object.getPrototypeOf(function* () {}).constructor;\n const replGen = new GeneratorFunction(\n 'require',\n 'console',\n 'process',\n 'Buffer',\n `var __code, __result;\nwhile (true) {\n __code = yield;\n try {\n __result = eval(__code);\n yield { value: __result, error: null };\n } catch (e) {\n yield { value: undefined, error: e };\n }\n}`\n )(require, consoleWrapper, process, buffer);\n replGen.next(); // prime the generator\n\n return {\n eval(code: string): unknown {\n // Transform const/let to var for persistence across REPL calls.\n // var declarations in direct eval are added to the enclosing function\n // scope (the generator), so they survive across yields.\n const transformed = code.replace(/^\\s*(const|let)\\s+/gm, 'var ');\n\n // Try as expression first (wrapping in parens), fall back to statement.\n // replGen.next(code) sends code to the generator, which evals it and\n // yields the result — so the result is in the return value of .next().\n const exprResult = replGen.next('(' + transformed + ')').value as { value: unknown; error: unknown };\n if (!exprResult.error) {\n // Advance past the wait-for-code yield so it's ready for next call\n replGen.next();\n return exprResult.value;\n }\n\n // Expression parse failed — advance past wait-for-code, then try as statement\n replGen.next();\n const stmtResult = replGen.next(transformed).value as { value: unknown; error: unknown };\n if (stmtResult.error) {\n replGen.next(); // advance past wait-for-code yield\n throw stmtResult.error;\n }\n replGen.next(); // advance past wait-for-code yield\n return stmtResult.value;\n },\n };\n }\n}\n\n/**\n * Create and execute code in a new runtime (synchronous - backward compatible)\n */\nexport function execute(\n code: string,\n vfs: VirtualFS,\n options?: RuntimeOptions\n): { exports: unknown; module: Module } {\n const runtime = new Runtime(vfs, options);\n return runtime.execute(code);\n}\n\n// Re-export types\nexport type { IRuntime, IExecuteResult, IRuntimeOptions } from './runtime-interface';\n\nexport default Runtime;\n","/**\n * Base DevServer class for framework-specific dev servers\n * This is a framework-agnostic base that can be extended for Vite, Next.js, etc.\n */\n\nimport { EventEmitter } from './shims/events';\nimport { VirtualFS } from './virtual-fs';\nimport { Buffer } from './shims/stream';\n\nexport interface DevServerOptions {\n port: number;\n root?: string;\n}\n\nexport interface ResponseData {\n statusCode: number;\n statusMessage: string;\n headers: Record<string, string>;\n body: Buffer;\n}\n\nexport interface HMRUpdate {\n type: 'update' | 'full-reload';\n path: string;\n timestamp?: number;\n}\n\n/**\n * MIME type mapping for common file extensions\n */\nconst MIME_TYPES: Record<string, string> = {\n html: 'text/html; charset=utf-8',\n htm: 'text/html; charset=utf-8',\n css: 'text/css; charset=utf-8',\n js: 'application/javascript; charset=utf-8',\n mjs: 'application/javascript; charset=utf-8',\n cjs: 'application/javascript; charset=utf-8',\n jsx: 'application/javascript; charset=utf-8',\n ts: 'application/javascript; charset=utf-8',\n tsx: 'application/javascript; charset=utf-8',\n json: 'application/json; charset=utf-8',\n png: 'image/png',\n jpg: 'image/jpeg',\n jpeg: 'image/jpeg',\n gif: 'image/gif',\n svg: 'image/svg+xml',\n ico: 'image/x-icon',\n webp: 'image/webp',\n woff: 'font/woff',\n woff2: 'font/woff2',\n ttf: 'font/ttf',\n otf: 'font/otf',\n eot: 'application/vnd.ms-fontobject',\n mp3: 'audio/mpeg',\n mp4: 'video/mp4',\n webm: 'video/webm',\n ogg: 'audio/ogg',\n wav: 'audio/wav',\n pdf: 'application/pdf',\n xml: 'application/xml',\n txt: 'text/plain; charset=utf-8',\n md: 'text/markdown; charset=utf-8',\n wasm: 'application/wasm',\n map: 'application/json',\n};\n\n/**\n * Base class for framework-specific dev servers.\n * Extend this to create Vite, Next.js, etc. implementations.\n */\nexport abstract class DevServer extends EventEmitter {\n protected vfs: VirtualFS;\n protected port: number;\n protected root: string;\n protected running: boolean = false;\n\n constructor(vfs: VirtualFS, options: DevServerOptions) {\n super();\n this.vfs = vfs;\n this.port = options.port;\n this.root = options.root || '/';\n }\n\n /**\n * Handle an incoming HTTP request\n * Must be implemented by framework-specific subclass\n */\n abstract handleRequest(\n method: string,\n url: string,\n headers: Record<string, string>,\n body?: Buffer\n ): Promise<ResponseData>;\n\n /**\n * Start file watching for HMR\n * Must be implemented by framework-specific subclass\n */\n abstract startWatching(): void;\n\n /**\n * Stop the server and cleanup\n */\n stop(): void {\n this.running = false;\n this.emit('close');\n }\n\n /**\n * Start the server\n */\n start(): void {\n this.running = true;\n this.startWatching();\n this.emit('listening', this.port);\n }\n\n /**\n * Check if server is running\n */\n isRunning(): boolean {\n return this.running;\n }\n\n /**\n * Get the server's port\n */\n getPort(): number {\n return this.port;\n }\n\n /**\n * Serve a static file from the virtual filesystem\n */\n protected serveFile(filePath: string): ResponseData {\n try {\n // Normalize path\n const normalizedPath = this.resolvePath(filePath);\n const content = this.vfs.readFileSync(normalizedPath);\n // Ensure we have a Buffer\n const buffer = typeof content === 'string'\n ? Buffer.from(content)\n : Buffer.from(content);\n\n return {\n statusCode: 200,\n statusMessage: 'OK',\n headers: {\n 'Content-Type': this.getMimeType(filePath),\n 'Content-Length': String(buffer.length),\n 'Cache-Control': 'no-cache',\n },\n body: buffer,\n };\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === 'ENOENT') {\n return this.notFound(filePath);\n }\n return this.serverError(error);\n }\n }\n\n /**\n * Resolve a URL path to a filesystem path\n */\n protected resolvePath(urlPath: string): string {\n // Remove query string and hash\n let path = urlPath.split('?')[0].split('#')[0];\n\n // Normalize path\n if (!path.startsWith('/')) {\n path = '/' + path;\n }\n\n // Join with root\n if (this.root !== '/') {\n path = this.root + path;\n }\n\n return path;\n }\n\n /**\n * Create a 404 Not Found response\n */\n protected notFound(path: string): ResponseData {\n const body = `Not found: ${path}`;\n return {\n statusCode: 404,\n statusMessage: 'Not Found',\n headers: {\n 'Content-Type': 'text/plain; charset=utf-8',\n 'Content-Length': String(Buffer.byteLength(body)),\n },\n body: Buffer.from(body),\n };\n }\n\n /**\n * Create a 500 Server Error response\n */\n protected serverError(error: unknown): ResponseData {\n const message = error instanceof Error ? error.message : 'Internal Server Error';\n const body = `Server Error: ${message}`;\n return {\n statusCode: 500,\n statusMessage: 'Internal Server Error',\n headers: {\n 'Content-Type': 'text/plain; charset=utf-8',\n 'Content-Length': String(Buffer.byteLength(body)),\n },\n body: Buffer.from(body),\n };\n }\n\n /**\n * Create a redirect response\n */\n protected redirect(location: string, status: 301 | 302 | 307 | 308 = 302): ResponseData {\n return {\n statusCode: status,\n statusMessage: status === 301 ? 'Moved Permanently' : 'Found',\n headers: {\n Location: location,\n 'Content-Type': 'text/plain; charset=utf-8',\n 'Content-Length': '0',\n },\n body: Buffer.from(''),\n };\n }\n\n /**\n * Get MIME type for a file path\n */\n protected getMimeType(path: string): string {\n const ext = path.split('.').pop()?.toLowerCase() || '';\n return MIME_TYPES[ext] || 'application/octet-stream';\n }\n\n /**\n * Check if a path exists in the virtual filesystem\n */\n protected exists(path: string): boolean {\n try {\n this.vfs.statSync(path);\n return true;\n } catch {\n return false;\n }\n }\n\n /**\n * Check if a path is a directory\n */\n protected isDirectory(path: string): boolean {\n try {\n return this.vfs.statSync(path).isDirectory();\n } catch {\n return false;\n }\n }\n\n /**\n * Emit an HMR update event\n */\n protected emitHMRUpdate(update: HMRUpdate): void {\n this.emit('hmr-update', {\n ...update,\n timestamp: update.timestamp || Date.now(),\n });\n }\n}\n\nexport default DevServer;\n","/**\n * ViteDevServer - Vite-compatible dev server for browser environment\n * Serves files from VirtualFS with JSX/TypeScript transformation\n */\n\nimport { DevServer, DevServerOptions, ResponseData, HMRUpdate } from '../dev-server';\nimport { VirtualFS } from '../virtual-fs';\nimport { Buffer } from '../shims/stream';\nimport { simpleHash } from '../utils/hash';\nimport { addReactRefresh as _addReactRefresh } from './code-transforms';\nimport { ESBUILD_WASM_ESM_CDN, ESBUILD_WASM_BINARY_CDN, REACT_REFRESH_CDN, REACT_CDN, REACT_DOM_CDN } from '../config/cdn';\n\n// Check if we're in a real browser environment (not jsdom or Node.js)\n// jsdom has window but doesn't have ServiceWorker or SharedArrayBuffer\nconst isBrowser = typeof window !== 'undefined' &&\n typeof window.navigator !== 'undefined' &&\n 'serviceWorker' in window.navigator;\n\n// Window.__esbuild type is declared in src/types/external.d.ts\n\n/**\n * Initialize esbuild-wasm for browser transforms\n * Uses window-level singleton to prevent \"Cannot call initialize more than once\" errors\n */\nasync function initEsbuild(): Promise<void> {\n if (!isBrowser) return;\n\n // Check if already initialized (survives HMR)\n if (window.__esbuild) {\n return;\n }\n\n // Check if initialization is in progress\n if (window.__esbuildInitPromise) {\n return window.__esbuildInitPromise;\n }\n\n window.__esbuildInitPromise = (async () => {\n try {\n const mod = await import(\n /* @vite-ignore */\n ESBUILD_WASM_ESM_CDN\n );\n\n const esbuildMod = mod.default || mod;\n\n try {\n await esbuildMod.initialize({\n wasmURL: ESBUILD_WASM_BINARY_CDN,\n });\n console.log('[ViteDevServer] esbuild-wasm initialized');\n } catch (initError) {\n // If esbuild is already initialized (e.g., from a previous HMR cycle),\n // the WASM is still loaded and the module is usable\n if (initError instanceof Error && initError.message.includes('Cannot call \"initialize\" more than once')) {\n console.log('[ViteDevServer] esbuild-wasm already initialized, reusing');\n } else {\n throw initError;\n }\n }\n\n window.__esbuild = esbuildMod;\n } catch (error) {\n console.error('[ViteDevServer] Failed to initialize esbuild:', error);\n window.__esbuildInitPromise = undefined;\n throw error;\n }\n })();\n\n return window.__esbuildInitPromise;\n}\n\n/**\n * Get the esbuild instance (after initialization)\n */\nfunction getEsbuild(): typeof import('esbuild-wasm') | undefined {\n return isBrowser ? window.__esbuild : undefined;\n}\n\nexport interface ViteDevServerOptions extends DevServerOptions {\n /**\n * Enable JSX transformation (default: true)\n */\n jsx?: boolean;\n\n /**\n * JSX factory function (default: 'React.createElement')\n */\n jsxFactory?: string;\n\n /**\n * JSX fragment function (default: 'React.Fragment')\n */\n jsxFragment?: string;\n\n /**\n * Auto-inject React import for JSX files (default: true)\n */\n jsxAutoImport?: boolean;\n}\n\n/**\n * React Refresh preamble - MUST run before React is loaded\n * This script is blocking to ensure injectIntoGlobalHook runs first\n */\nconst REACT_REFRESH_PREAMBLE = `\n<script type=\"module\">\n// Block until React Refresh is loaded and initialized\n// This MUST happen before React is imported\nconst RefreshRuntime = await import('${REACT_REFRESH_CDN}').then(m => m.default || m);\n\n// Hook into React BEFORE it's loaded\nRefreshRuntime.injectIntoGlobalHook(window);\nwindow.$RefreshRuntime$ = RefreshRuntime;\n\n// Track registrations for debugging\nwindow.$RefreshRegCount$ = 0;\n\n// Register function called by transformed modules\nwindow.$RefreshReg$ = (type, id) => {\n window.$RefreshRegCount$++;\n RefreshRuntime.register(type, id);\n};\n\n// Signature function (simplified - always returns identity)\nwindow.$RefreshSig$ = () => (type) => type;\n\nconsole.log('[HMR] React Refresh initialized');\n</script>\n`;\n\n/**\n * HMR client script injected into index.html\n * Implements the import.meta.hot API and handles HMR updates\n */\nconst HMR_CLIENT_SCRIPT = `\n<script type=\"module\">\n(function() {\n // Track hot modules and their callbacks\n const hotModules = new Map();\n const pendingUpdates = new Map();\n\n // Implement import.meta.hot API (Vite-compatible)\n window.__vite_hot_context__ = function createHotContext(ownerPath) {\n // Return existing context if already created\n if (hotModules.has(ownerPath)) {\n return hotModules.get(ownerPath);\n }\n\n const hot = {\n // Persisted data between updates\n data: {},\n\n // Accept self-updates\n accept(callback) {\n hot._acceptCallback = callback;\n },\n\n // Cleanup before update\n dispose(callback) {\n hot._disposeCallback = callback;\n },\n\n // Force full reload\n invalidate() {\n location.reload();\n },\n\n // Prune callback (called when module is no longer imported)\n prune(callback) {\n hot._pruneCallback = callback;\n },\n\n // Event handlers (not implemented)\n on(event, cb) {},\n off(event, cb) {},\n send(event, data) {},\n\n // Internal callbacks\n _acceptCallback: null,\n _disposeCallback: null,\n _pruneCallback: null,\n };\n\n hotModules.set(ownerPath, hot);\n return hot;\n };\n\n // Listen for HMR updates via postMessage (works with sandboxed iframes)\n window.addEventListener('message', async (event) => {\n // Filter for HMR messages only\n if (!event.data || event.data.channel !== 'vite-hmr') return;\n const { type, path, timestamp } = event.data;\n\n if (type === 'update') {\n console.log('[HMR] Update:', path);\n\n if (path.endsWith('.css')) {\n // CSS hot reload - update stylesheet href\n const links = document.querySelectorAll('link[rel=\"stylesheet\"]');\n links.forEach(link => {\n const href = link.getAttribute('href');\n if (href && href.includes(path.replace(/^\\\\//, ''))) {\n link.href = href.split('?')[0] + '?t=' + timestamp;\n }\n });\n\n // Also update any injected style tags\n const styles = document.querySelectorAll('style[data-vite-dev-id]');\n styles.forEach(style => {\n const id = style.getAttribute('data-vite-dev-id');\n if (id && id.includes(path.replace(/^\\\\//, ''))) {\n // Re-import the CSS module to get updated styles\n import(path + '?t=' + timestamp).catch(() => {});\n }\n });\n } else if (path.match(/\\\\.(jsx?|tsx?)$/)) {\n // JS/JSX hot reload with React Refresh\n await handleJSUpdate(path, timestamp);\n }\n } else if (type === 'full-reload') {\n console.log('[HMR] Full reload');\n location.reload();\n }\n });\n\n // Handle JS/JSX module updates\n async function handleJSUpdate(path, timestamp) {\n // Normalize path to match module keys\n const normalizedPath = path.startsWith('/') ? path : '/' + path;\n const hot = hotModules.get(normalizedPath);\n\n try {\n // Call dispose callback if registered\n if (hot && hot._disposeCallback) {\n hot._disposeCallback(hot.data);\n }\n\n // Enqueue React Refresh (batches multiple updates)\n if (window.$RefreshRuntime$) {\n pendingUpdates.set(normalizedPath, timestamp);\n\n // Schedule refresh after a short delay to batch updates\n if (pendingUpdates.size === 1) {\n setTimeout(async () => {\n try {\n // Re-import all pending modules\n for (const [modulePath, ts] of pendingUpdates) {\n const moduleUrl = '.' + modulePath + '?t=' + ts;\n await import(moduleUrl);\n }\n\n // Perform React Refresh\n window.$RefreshRuntime$.performReactRefresh();\n console.log('[HMR] Updated', pendingUpdates.size, 'module(s)');\n\n pendingUpdates.clear();\n } catch (error) {\n console.error('[HMR] Failed to apply update:', error);\n pendingUpdates.clear();\n location.reload();\n }\n }, 30);\n }\n } else {\n // No React Refresh available, fall back to page reload\n console.log('[HMR] React Refresh not available, reloading page');\n location.reload();\n }\n } catch (error) {\n console.error('[HMR] Update failed:', error);\n location.reload();\n }\n }\n\n console.log('[HMR] Client ready with React Refresh support');\n})();\n</script>\n`;\n\nexport class ViteDevServer extends DevServer {\n private watcherCleanup: (() => void) | null = null;\n private options: ViteDevServerOptions;\n private hmrTargetWindow: Window | null = null;\n private transformCache: Map<string, { code: string; hash: string }> = new Map();\n\n constructor(vfs: VirtualFS, options: ViteDevServerOptions) {\n super(vfs, options);\n this.options = {\n jsx: true,\n jsxFactory: 'React.createElement',\n jsxFragment: 'React.Fragment',\n jsxAutoImport: true,\n ...options,\n };\n }\n\n /**\n * Set the target window for HMR updates (typically iframe.contentWindow)\n * This enables HMR to work with sandboxed iframes via postMessage\n */\n setHMRTarget(targetWindow: Window): void {\n this.hmrTargetWindow = targetWindow;\n }\n\n /**\n * Handle an incoming HTTP request\n */\n async handleRequest(\n method: string,\n url: string,\n headers: Record<string, string>,\n body?: Buffer\n ): Promise<ResponseData> {\n // Parse URL\n const urlObj = new URL(url, 'http://localhost');\n let pathname = urlObj.pathname;\n\n // Handle root path - serve index.html\n if (pathname === '/') {\n pathname = '/index.html';\n }\n\n // Resolve the full path\n const filePath = this.resolvePath(pathname);\n\n // Check if file exists\n if (!this.exists(filePath)) {\n // Try with .html extension\n if (this.exists(filePath + '.html')) {\n return this.serveFile(filePath + '.html');\n }\n // Try index.html in directory\n if (this.isDirectory(filePath) && this.exists(filePath + '/index.html')) {\n return this.serveFile(filePath + '/index.html');\n }\n return this.notFound(pathname);\n }\n\n // If it's a directory, redirect to index.html\n if (this.isDirectory(filePath)) {\n if (this.exists(filePath + '/index.html')) {\n return this.serveFile(filePath + '/index.html');\n }\n return this.notFound(pathname);\n }\n\n // Check if file needs transformation (JSX/TS)\n if (this.needsTransform(pathname)) {\n return this.transformAndServe(filePath, pathname);\n }\n\n // Check if CSS is being imported as a module (needs to be converted to JS)\n // In browser context with ES modules, CSS imports need to be served as JS\n if (pathname.endsWith('.css')) {\n // Check various header formats for sec-fetch-dest\n const secFetchDest =\n headers['sec-fetch-dest'] ||\n headers['Sec-Fetch-Dest'] ||\n headers['SEC-FETCH-DEST'] ||\n '';\n\n // In browser, serve CSS as module when:\n // 1. Requested as a script (sec-fetch-dest: script)\n // 2. Empty dest (sec-fetch-dest: empty) - fetch() calls\n // 3. No sec-fetch-dest but in browser context - assume module import\n const isModuleImport =\n secFetchDest === 'script' ||\n secFetchDest === 'empty' ||\n (isBrowser && secFetchDest === '');\n\n if (isModuleImport) {\n return this.serveCssAsModule(filePath);\n }\n // Otherwise serve as regular CSS (e.g., <link> tags with sec-fetch-dest: style)\n return this.serveFile(filePath);\n }\n\n // Check if it's HTML that needs HMR client injection\n if (pathname.endsWith('.html')) {\n return this.serveHtmlWithHMR(filePath);\n }\n\n // Serve static file\n return this.serveFile(filePath);\n }\n\n /**\n * Start file watching for HMR\n */\n startWatching(): void {\n // Watch /src directory for changes\n const srcPath = this.root === '/' ? '/src' : `${this.root}/src`;\n\n try {\n const watcher = this.vfs.watch(srcPath, { recursive: true }, (eventType, filename) => {\n if (eventType === 'change' && filename) {\n const fullPath = filename.startsWith('/') ? filename : `${srcPath}/${filename}`;\n this.handleFileChange(fullPath);\n }\n });\n\n this.watcherCleanup = () => {\n watcher.close();\n };\n } catch (error) {\n console.warn('[ViteDevServer] Could not watch /src directory:', error);\n }\n\n // Also watch for CSS files in root\n try {\n const rootWatcher = this.vfs.watch(this.root, { recursive: false }, (eventType, filename) => {\n if (eventType === 'change' && filename && filename.endsWith('.css')) {\n this.handleFileChange(`${this.root}/${filename}`);\n }\n });\n\n const originalCleanup = this.watcherCleanup;\n this.watcherCleanup = () => {\n originalCleanup?.();\n rootWatcher.close();\n };\n } catch {\n // Ignore if root watching fails\n }\n }\n\n /**\n * Handle file change event\n */\n private handleFileChange(path: string): void {\n // Determine update type:\n // - CSS and JS/JSX/TSX files: 'update' (handled by HMR client)\n // - Other files: 'full-reload'\n const isCSS = path.endsWith('.css');\n const isJS = /\\.(jsx?|tsx?)$/.test(path);\n const updateType = (isCSS || isJS) ? 'update' : 'full-reload';\n\n const update: HMRUpdate = {\n type: updateType,\n path,\n timestamp: Date.now(),\n };\n\n // Emit event for ServerBridge\n this.emitHMRUpdate(update);\n\n // Send HMR update via postMessage (works with sandboxed iframes)\n if (this.hmrTargetWindow) {\n try {\n this.hmrTargetWindow.postMessage({ ...update, channel: 'vite-hmr' }, '*');\n } catch (e) {\n // Window may be closed or unavailable\n }\n }\n }\n\n /**\n * Stop the server\n */\n stop(): void {\n if (this.watcherCleanup) {\n this.watcherCleanup();\n this.watcherCleanup = null;\n }\n\n this.hmrTargetWindow = null;\n\n super.stop();\n }\n\n /**\n * Check if a file needs transformation\n */\n private needsTransform(path: string): boolean {\n return /\\.(jsx|tsx|ts)$/.test(path);\n }\n\n /**\n * Transform and serve a JSX/TS file\n */\n private async transformAndServe(filePath: string, urlPath: string): Promise<ResponseData> {\n try {\n const content = this.vfs.readFileSync(filePath, 'utf8');\n const hash = simpleHash(content);\n\n // Check transform cache\n const cached = this.transformCache.get(filePath);\n if (cached && cached.hash === hash) {\n const buffer = Buffer.from(cached.code);\n return {\n statusCode: 200,\n statusMessage: 'OK',\n headers: {\n 'Content-Type': 'application/javascript; charset=utf-8',\n 'Content-Length': String(buffer.length),\n 'Cache-Control': 'no-cache',\n 'X-Transformed': 'true',\n 'X-Cache': 'hit',\n },\n body: buffer,\n };\n }\n\n const transformed = await this.transformCode(content, urlPath);\n\n // Cache the transform result\n this.transformCache.set(filePath, { code: transformed, hash });\n\n const buffer = Buffer.from(transformed);\n return {\n statusCode: 200,\n statusMessage: 'OK',\n headers: {\n 'Content-Type': 'application/javascript; charset=utf-8',\n 'Content-Length': String(buffer.length),\n 'Cache-Control': 'no-cache',\n 'X-Transformed': 'true',\n },\n body: buffer,\n };\n } catch (error) {\n console.error('[ViteDevServer] Transform error:', error);\n const message = error instanceof Error ? error.message : 'Transform failed';\n const body = `// Transform Error: ${message}\\nconsole.error(${JSON.stringify(message)});`;\n return {\n statusCode: 200, // Return 200 with error in code to show in browser console\n statusMessage: 'OK',\n headers: {\n 'Content-Type': 'application/javascript; charset=utf-8',\n 'X-Transform-Error': 'true',\n },\n body: Buffer.from(body),\n };\n }\n }\n\n /**\n * Transform JSX/TS code to browser-compatible JavaScript\n */\n private async transformCode(code: string, filename: string): Promise<string> {\n if (!isBrowser) {\n // In test environment, just return code as-is\n return code;\n }\n\n // Initialize esbuild if needed\n await initEsbuild();\n\n const esbuild = getEsbuild();\n if (!esbuild) {\n throw new Error('esbuild not available');\n }\n\n // Determine loader based on extension\n let loader: 'js' | 'jsx' | 'ts' | 'tsx' = 'js';\n if (filename.endsWith('.jsx')) loader = 'jsx';\n else if (filename.endsWith('.tsx')) loader = 'tsx';\n else if (filename.endsWith('.ts')) loader = 'ts';\n\n const result = await esbuild.transform(code, {\n loader,\n format: 'esm', // Keep as ES modules for browser\n target: 'esnext',\n jsx: 'automatic', // Use React 17+ automatic runtime\n jsxImportSource: 'react',\n sourcemap: 'inline',\n sourcefile: filename,\n });\n\n // Add React Refresh registration for JSX/TSX files\n if (/\\.(jsx|tsx)$/.test(filename)) {\n return this.addReactRefresh(result.code, filename);\n }\n\n return result.code;\n }\n\n private addReactRefresh(code: string, filename: string): string {\n return _addReactRefresh(code, filename);\n }\n\n /**\n * Serve CSS file as a JavaScript module that injects styles\n * This is needed because ES module imports of CSS files need to return JS\n */\n private serveCssAsModule(filePath: string): ResponseData {\n try {\n const css = this.vfs.readFileSync(filePath, 'utf8');\n\n // Create JavaScript that injects the CSS into the document\n const js = `\n// CSS Module: ${filePath}\nconst css = ${JSON.stringify(css)};\nconst style = document.createElement('style');\nstyle.setAttribute('data-vite-dev-id', ${JSON.stringify(filePath)});\nstyle.textContent = css;\ndocument.head.appendChild(style);\nexport default css;\n`;\n\n const buffer = Buffer.from(js);\n return {\n statusCode: 200,\n statusMessage: 'OK',\n headers: {\n 'Content-Type': 'application/javascript; charset=utf-8',\n 'Content-Length': String(buffer.length),\n 'Cache-Control': 'no-cache',\n },\n body: buffer,\n };\n } catch (error) {\n return this.serverError(error);\n }\n }\n\n /**\n * Serve HTML file with HMR client script injected\n *\n * IMPORTANT: React Refresh preamble MUST be injected before any module scripts.\n * The preamble uses top-level await to block until React Refresh is loaded\n * and injectIntoGlobalHook is called. This ensures React Refresh hooks into\n * React BEFORE React is imported by any module.\n */\n private serveHtmlWithHMR(filePath: string): ResponseData {\n try {\n let content = this.vfs.readFileSync(filePath, 'utf8');\n\n // Inject a React import map if the HTML doesn't already have one.\n // This lets seed HTML omit the esm.sh boilerplate — the platform provides it.\n if (!content.includes('\"importmap\"')) {\n const importMap = `<script type=\"importmap\">\n{\n \"imports\": {\n \"react\": \"${REACT_CDN}?dev\",\n \"react/\": \"${REACT_CDN}&dev/\",\n \"react-dom\": \"${REACT_DOM_CDN}?dev\",\n \"react-dom/\": \"${REACT_DOM_CDN}&dev/\"\n }\n}\n</script>`;\n if (content.includes('</head>')) {\n content = content.replace('</head>', `${importMap}\\n</head>`);\n } else if (content.includes('<head>')) {\n content = content.replace('<head>', `<head>\\n${importMap}`);\n }\n }\n\n // Inject React Refresh preamble before any app module scripts.\n // Firefox requires all <script type=\"importmap\"> to appear before any <script type=\"module\">,\n // so if the HTML contains an import map, inject AFTER the last one (not right after <head>).\n const importMapRegex = /<script\\b[^>]*\\btype\\s*=\\s*[\"']importmap[\"'][^>]*>[\\s\\S]*?<\\/script>/gi;\n let lastImportMapEnd = -1;\n let match;\n while ((match = importMapRegex.exec(content)) !== null) {\n lastImportMapEnd = match.index + match[0].length;\n }\n\n if (lastImportMapEnd !== -1) {\n // Insert preamble right after the last import map </script>\n content = content.slice(0, lastImportMapEnd) + REACT_REFRESH_PREAMBLE + content.slice(lastImportMapEnd);\n } else if (content.includes('<head>')) {\n content = content.replace('<head>', `<head>${REACT_REFRESH_PREAMBLE}`);\n } else if (content.includes('<html')) {\n // If no <head>, inject after <html...>\n content = content.replace(/<html[^>]*>/, `$&${REACT_REFRESH_PREAMBLE}`);\n } else {\n // Prepend if no html tag\n content = REACT_REFRESH_PREAMBLE + content;\n }\n\n // Inject HMR client script before </head> or </body>\n if (content.includes('</head>')) {\n content = content.replace('</head>', `${HMR_CLIENT_SCRIPT}</head>`);\n } else if (content.includes('</body>')) {\n content = content.replace('</body>', `${HMR_CLIENT_SCRIPT}</body>`);\n } else {\n // Append at the end if no closing tag found\n content += HMR_CLIENT_SCRIPT;\n }\n\n const buffer = Buffer.from(content);\n return {\n statusCode: 200,\n statusMessage: 'OK',\n headers: {\n 'Content-Type': 'text/html; charset=utf-8',\n 'Content-Length': String(buffer.length),\n 'Cache-Control': 'no-cache',\n },\n body: buffer,\n };\n } catch (error) {\n return this.serverError(error);\n }\n }\n}\n\nexport default ViteDevServer;\n","/**\r\n * Lazy singleton holder for the almostnode ServerBridge.\r\n *\r\n * This module purposefully avoids a top-level `import \"almostnode\"` so that\r\n * bundlers (tsup/rollup) don't pull the entire almostnode package into the\r\n * shared chunk. The dynamic `import()` ensures almostnode only appears in the\r\n * lazily-loaded almostnode-session chunk.\r\n */\r\n\r\nexport type ServerBridge = {\r\n initServiceWorker(options?: { swUrl?: string }): Promise<void>\r\n registerServer(server: unknown, port: number): void\r\n unregisterServer(port: number): void\r\n getServerUrl(port: number): string\r\n}\r\n\r\nlet globalBridge: ServerBridge | null = null\r\nlet almostnodePromise: Promise<{ getServerBridge(): ServerBridge; resetServerBridge(): void }> | null = null\r\n\r\nfunction loadAlmostnode() {\r\n if (!almostnodePromise) {\r\n almostnodePromise = import(\"almostnode/server-bridge\") as Promise<{ getServerBridge(): ServerBridge; resetServerBridge(): void }>\r\n }\r\n return almostnodePromise\r\n}\r\n\r\nexport async function getServerBridge(): Promise<ServerBridge> {\r\n if (!globalBridge) {\r\n const mod = await loadAlmostnode()\r\n globalBridge = mod.getServerBridge()\r\n }\r\n return globalBridge\r\n}\r\n\r\nexport function resetServerBridge(): void {\r\n globalBridge = null\r\n}\r\n","import type { CommandContext, ExecResult } from \"just-bash/browser\"\nimport { posixPath as path } from \"./posix-path\"\nimport { PackageManager } from \"almostnode/npm\"\nimport { Runtime } from \"almostnode/runtime\"\nimport { VirtualFS } from \"almostnode/virtual-fs\"\nimport { ViteDevServer } from \"almostnode/frameworks/vite-dev-server\"\nimport { getServerBridge } from \"./server-bridge\"\n\nimport {\n ObservableInMemoryFs,\n} from \"./observable-in-memory-fs\"\n\nconst ALMOSTNODE_INTERNAL_ROOT = \"/.almostnode\"\nconst ALMOSTNODE_NODE_VERSION = \"v20.0.0\"\nconst ALMOSTNODE_NPM_VERSION = \"9.6.4\"\nconst NODE_EXEC_PATH = \"/usr/local/bin/node\"\nconst GLOBAL_NODE_MODULES_ROOT = \"/usr/local/lib/node_modules\"\nconst DEFAULT_PATH = \"/usr/local/bin:/usr/bin:/bin:/node_modules/.bin\"\nconst NPM_USAGE = [\n \"Usage: npm <command>\",\n \"\",\n \"Commands:\",\n \" run <script> Run a script from package.json\",\n \" start Run the start script\",\n \" test Run the test script\",\n \" install [pkg] Install packages\",\n \" ls List installed packages\",\n].join(\"\\n\")\n\nconst STATIC_MIME_TYPES: Record<string, string> = {\n css: \"text/css; charset=utf-8\",\n cjs: \"application/javascript; charset=utf-8\",\n gif: \"image/gif\",\n htm: \"text/html; charset=utf-8\",\n html: \"text/html; charset=utf-8\",\n ico: \"image/x-icon\",\n jpeg: \"image/jpeg\",\n jpg: \"image/jpeg\",\n js: \"application/javascript; charset=utf-8\",\n json: \"application/json; charset=utf-8\",\n map: \"application/json; charset=utf-8\",\n md: \"text/markdown; charset=utf-8\",\n mjs: \"application/javascript; charset=utf-8\",\n otf: \"font/otf\",\n pdf: \"application/pdf\",\n png: \"image/png\",\n svg: \"image/svg+xml\",\n txt: \"text/plain; charset=utf-8\",\n wasm: \"application/wasm\",\n webp: \"image/webp\",\n woff: \"font/woff\",\n woff2: \"font/woff2\",\n}\n\ntype PackageJsonLike = {\n name?: string\n version?: string\n scripts?: Record<string, string>\n dependencies?: Record<string, string>\n devDependencies?: Record<string, string>\n optionalDependencies?: Record<string, string>\n peerDependencies?: Record<string, string>\n}\n\ntype BinCommandRegistrar = (name: string, handler: (args: string[], ctx: CommandContext) => Promise<ExecResult>) => void\ntype VitePreviewListener = (previewUrl: string | null) => void\ntype BatchFileLoader = (paths: string[]) => Promise<Map<string, Uint8Array>>\n\nexport interface AlmostNodeSessionVfs {\n existsSync(path: string): boolean\n statSync(path: string): { isDirectory(): boolean; isFile(): boolean }\n readFileSync(path: string, encoding?: string): any\n writeFileSync(path: string, data: string | Uint8Array): void\n mkdirSync(path: string, options?: { recursive?: boolean }): void\n readdirSync(path: string): string[]\n unlinkSync(path: string): void\n rmdirSync(path: string): void\n renameSync(oldPath: string, newPath: string): void\n}\n\ndeclare global {\n interface Window {\n __esbuild?: unknown\n __esbuildInitPromise?: Promise<void>\n }\n}\n\n/** Strip leading \"./\" from a path (e.g. \"./esm/index.js\" → \"esm/index.js\") */\nfunction stripDotSlash(p: string): string {\n return p.startsWith(\"./\") ? p.slice(2) : p\n}\n\nfunction getStaticMimeType(filePath: string): string {\n const extension = filePath.split(\".\").pop()?.toLowerCase() || \"\"\n return STATIC_MIME_TYPES[extension] || \"application/octet-stream\"\n}\n\nfunction getRequestPathname(requestUrl: string): string {\n return new URL(requestUrl, \"http://localhost\").pathname\n}\n\n/**\n * Detect CJS modules and wrap them in an ESM shim so the browser can\n * import them. Detects `require(`, `module.exports`, or `exports.` at\n * statement level. Already-ESM sources (containing `import ` or\n * `export `) are returned untouched.\n *\n * `require('pkg')` calls are hoisted into ESM `import` declarations so\n * that transitive CJS dependencies are loaded by the browser's module\n * loader (and themselves shimmed when served).\n */\nfunction wrapCjsAsEsm(code: string, virtualPrefix = \"\", requestPath = \"\"): string {\n // Strip strings and comments so keyword detection is accurate\n const stripped = code.replace(\n /(\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*'|`(?:[^`\\\\]|\\\\.)*`|\\/\\*[\\s\\S]*?\\*\\/|\\/\\/[^\\n]*)/g,\n (match) => \" \".repeat(match.length),\n )\n\n // Quick ESM check – if it already has import/export syntax, leave it alone\n if (/\\b(import\\s+|export\\s+|export\\s*\\{|export\\s+default\\b)/.test(stripped)) {\n return code\n }\n // Quick CJS check – must have at least one CJS indicator\n if (!/\\b(require\\s*\\(|module\\.exports|exports\\.)/.test(stripped)) {\n return code\n }\n\n // Compute the directory of the file being served so relative requires\n // (e.g. require('./cjs/react-is.development.js')) resolve correctly.\n // requestPath should be the *resolved* file path (with extension), so\n // dirname always gives the correct parent directory.\n const requestDir = requestPath ? path.dirname(requestPath) : \"\"\n\n // Collect require() calls and replace them with references to\n // imported shim variables. We only handle string-literal requires.\n // Build a comment-free view of the code so we don't match require()\n // inside comments. Strings must be preserved since require specifiers\n // live inside them. We reuse the same tokenizer but only blank comments.\n const commentFree = code.replace(\n /(\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*'|`(?:[^`\\\\]|\\\\.)*`|\\/\\*[\\s\\S]*?\\*\\/|\\/\\/[^\\n]*)/g,\n (m) => {\n if (m.startsWith(\"/*\") || m.startsWith(\"//\")) {\n return \" \".repeat(m.length)\n }\n return m\n },\n )\n\n const imports: string[] = []\n let counter = 0\n // Match on comment-free version but replace in original code at same offsets\n const requirePattern = /\\brequire\\s*\\(\\s*(['\"])([^'\"]+)\\1\\s*\\)/g\n let rewritten = \"\"\n let lastIndex = 0\n let match: RegExpExecArray | null\n while ((match = requirePattern.exec(commentFree)) !== null) {\n const specifier = match[2]\n const varName = `__cjs_req_${counter++}__`\n let resolvedSpec: string\n if (specifier.startsWith(\".\")) {\n resolvedSpec = `${virtualPrefix}${path.resolve(requestDir, specifier)}`\n } else {\n resolvedSpec = `${virtualPrefix}/node_modules/${specifier}`\n }\n imports.push(`import ${varName} from \"${resolvedSpec}\";`)\n rewritten += code.slice(lastIndex, match.index)\n rewritten += `(${varName} && ${varName}.__esModule ? ${varName}.default : ${varName})`\n lastIndex = match.index + match[0].length\n }\n rewritten += code.slice(lastIndex)\n\n // Detect CJS \"re-export\" patterns:\n // module.exports = require('./some-file') (unconditional)\n // if (NODE_ENV === 'production') { module.exports = require(A) }\n // else { module.exports = require(B) } (conditional)\n // Add `export * from \"...\"` so named imports flow through.\n // Only emit ONE export-star to avoid \"conflicting star exports\" when\n // multiple conditional branches re-export modules with the same names.\n // Since our process shim sets NODE_ENV='production', prefer the\n // production variant if present; otherwise take the first match.\n const reExportPattern = /module\\.exports\\s*=\\s*\\(__cjs_req_(\\d+)__\\s*&&\\s*__cjs_req_\\1__\\.__esModule\\s*\\?\\s*__cjs_req_\\1__\\.default\\s*:\\s*__cjs_req_\\1__\\)/g\n const reExportCandidates: string[] = []\n let reM: RegExpExecArray | null\n while ((reM = reExportPattern.exec(rewritten)) !== null) {\n const reExportVar = `__cjs_req_${reM[1]}__`\n const reExportImport = imports.find((i) => i.includes(reExportVar))\n if (reExportImport) {\n const specMatch = reExportImport.match(/from\\s+\"([^\"]+)\"/)\n if (specMatch) reExportCandidates.push(specMatch[1])\n }\n }\n if (reExportCandidates.length > 0) {\n // Prefer production build (matches our NODE_ENV shim)\n const picked = reExportCandidates.find((s) => /production|\\.prod[\\.\\b]/.test(s))\n ?? reExportCandidates[0]\n return [\n \"// [monospace CJS→ESM re-export]\",\n ...imports,\n \"var module = { exports: {} };\",\n \"var exports = module.exports;\",\n \"var process = { env: { NODE_ENV: 'production' } };\",\n rewritten,\n \"export default module.exports;\",\n `export * from \"${picked}\";`,\n ].join(\"\\n\")\n }\n\n // Extract named exports by scanning for `exports.NAME =` patterns in\n // the rewritten code. These become static ESM named exports.\n const namedExports = new Set<string>()\n const exportsPattern = /\\bexports\\.(\\w+)\\s*=/g\n let expMatch: RegExpExecArray | null\n while ((expMatch = exportsPattern.exec(rewritten)) !== null) {\n const name = expMatch[1]\n if (name !== \"__esModule\") namedExports.add(name)\n }\n\n const namedExportLines: string[] = []\n if (namedExports.size > 0) {\n const names = [...namedExports]\n // Use prefixed variable names to avoid clashing with identifiers\n // already declared in the original CJS code (e.g. `function typeOf`).\n for (const name of names) {\n namedExportLines.push(`var __cjs_e_${name}__ = module.exports.${name};`)\n }\n namedExportLines.push(\n `export { ${names.map((n) => `__cjs_e_${n}__ as ${n}`).join(\", \")} };`,\n )\n }\n\n return [\n \"// [monospace CJS→ESM shim]\",\n ...imports,\n \"var module = { exports: {} };\",\n \"var exports = module.exports;\",\n \"var process = { env: { NODE_ENV: 'production' } };\",\n rewritten,\n \"export default module.exports;\",\n ...namedExportLines,\n ].join(\"\\n\")\n}\n\nconst ESBUILD_WASM_VERSION = \"0.20.0\"\n\n/**\n * Pre-initialize esbuild-wasm before ViteDevServer is created.\n *\n * Turbopack statically analyses `import(CDN_URL)` inside almostnode's\n * vite-dev-server.ts, replaces the specifier with 'unknown' and breaks\n * the runtime import. By loading the module ourselves with a URL\n * constructed at runtime (invisible to Turbopack's static pass) and\n * setting `window.__esbuild`, the ViteDevServer's `initEsbuild()` finds\n * the singleton already in place and skips its own broken import().\n */\nasync function ensureEsbuildWasm(): Promise<void> {\n if (typeof window === \"undefined\") return\n if (window.__esbuild) return\n if (window.__esbuildInitPromise) {\n await window.__esbuildInitPromise\n return\n }\n\n window.__esbuildInitPromise = (async () => {\n // Build URLs at runtime so Turbopack cannot statically resolve them\n const esmUrl = `https://esm.sh/esbuild-wasm@${ESBUILD_WASM_VERSION}`\n const wasmUrl = `https://unpkg.com/esbuild-wasm@${ESBUILD_WASM_VERSION}/esbuild.wasm`\n\n // Use indirect import to prevent Turbopack static analysis\n const dynamicImport = new Function(\"url\", \"return import(url)\") as (url: string) => Promise<Record<string, unknown>>\n const mod = await dynamicImport(esmUrl)\n const esbuildMod = (mod.default || mod) as { initialize: (opts: { wasmURL: string }) => Promise<void> }\n\n try {\n await esbuildMod.initialize({ wasmURL: wasmUrl })\n } catch (err) {\n if (err instanceof Error && err.message.includes(\"Cannot call \\\"initialize\\\" more than once\")) {\n // already initialized\n } else {\n window.__esbuildInitPromise = undefined\n throw err\n }\n }\n\n window.__esbuild = esbuildMod\n })()\n\n await window.__esbuildInitPromise\n}\n\nfunction normalizePath(inputPath: string): string {\n return path.normalize(inputPath.trim() || \"/\") || \"/\"\n}\n\nfunction isInternalAlmostNodePath(targetPath: string): boolean {\n const normalizedPath = normalizePath(targetPath)\n return normalizedPath === ALMOSTNODE_INTERNAL_ROOT\n || normalizedPath.startsWith(`${ALMOSTNODE_INTERNAL_ROOT}/`)\n}\n\nfunction appendChunk(chunks: string[], value: string): void {\n if (!value) {\n return\n }\n\n chunks.push(value)\n}\n\nfunction getPackageJsonDependencyNames(pkgJson: PackageJsonLike): string[] {\n const dependencyNames: string[] = []\n const dependencySections = [\n pkgJson.dependencies,\n pkgJson.devDependencies,\n pkgJson.optionalDependencies,\n pkgJson.peerDependencies,\n ]\n\n for (const section of dependencySections) {\n if (!section || typeof section !== \"object\") {\n continue\n }\n\n for (const packageName of Object.keys(section)) {\n if (!dependencyNames.includes(packageName)) {\n dependencyNames.push(packageName)\n }\n }\n }\n\n return dependencyNames\n}\n\nfunction getCommandEnvironment(ctx: CommandContext): Record<string, string> {\n const environment: Record<string, string> = {}\n\n for (const [key, value] of ctx.env.entries()) {\n environment[key] = value\n }\n\n return environment\n}\n\nasync function ensureObservableDirectory(fs: ObservableInMemoryFs, directoryPath: string): Promise<void> {\n const normalizedPath = normalizePath(directoryPath)\n if (normalizedPath === \"/\") {\n return\n }\n\n if (await fs.exists(normalizedPath)) {\n return\n }\n\n await fs.mkdir(normalizedPath, { recursive: true })\n}\n\nfunction removeVirtualPath(vfs: VirtualFS, targetPath: string): void {\n const normalizedPath = normalizePath(targetPath)\n if (normalizedPath === \"/\" || isInternalAlmostNodePath(normalizedPath) || !vfs.existsSync(normalizedPath)) {\n return\n }\n\n const stat = vfs.statSync(normalizedPath)\n if (!stat.isDirectory()) {\n vfs.unlinkSync(normalizedPath)\n return\n }\n\n for (const childName of vfs.readdirSync(normalizedPath)) {\n removeVirtualPath(vfs, path.join(normalizedPath, childName))\n }\n\n vfs.rmdirSync(normalizedPath)\n}\n\nclass AlmostNodeVirtualFs extends VirtualFS {\n private suppressMirrorCount = 0\n\n constructor(private readonly session: AlmostNodeSession) {\n super()\n }\n\n withoutMirror<T>(operation: () => T): T {\n this.suppressMirrorCount += 1\n\n try {\n return operation()\n } finally {\n this.suppressMirrorCount -= 1\n }\n }\n\n private shouldMirror(targetPath: string): boolean {\n return this.suppressMirrorCount === 0 && !isInternalAlmostNodePath(targetPath)\n }\n\n override writeFileSync(targetPath: string, data: string | Uint8Array): void {\n super.writeFileSync(targetPath, data)\n\n if (this.shouldMirror(targetPath)) {\n void this.session.applyVirtualWrite(targetPath, data)\n }\n }\n\n override mkdirSync(targetPath: string, options?: { recursive?: boolean }): void {\n super.mkdirSync(targetPath, options)\n\n if (this.shouldMirror(targetPath)) {\n void this.session.applyVirtualMkdir(targetPath)\n }\n }\n\n override unlinkSync(targetPath: string): void {\n super.unlinkSync(targetPath)\n\n if (this.shouldMirror(targetPath)) {\n void this.session.applyVirtualRemove(targetPath, false)\n }\n }\n\n override rmdirSync(targetPath: string): void {\n super.rmdirSync(targetPath)\n\n if (this.shouldMirror(targetPath)) {\n void this.session.applyVirtualRemove(targetPath, true)\n }\n }\n\n override renameSync(previousPath: string, nextPath: string): void {\n super.renameSync(previousPath, nextPath)\n\n if (this.shouldMirror(previousPath) && this.shouldMirror(nextPath)) {\n void this.session.applyVirtualRename(previousPath, nextPath)\n }\n }\n}\n\nexport class AlmostNodeSession {\n private readonly _vfs = new AlmostNodeVirtualFs(this)\n get vfs(): AlmostNodeSessionVfs { return this._vfs }\n\n private readonly disposeObservableSubscription: () => void\n private initializePromise: Promise<void> | null = null\n private initialized = false\n private pendingOperations = new Set<Promise<void>>()\n private suppressObservableMirrorCount = 0\n private registeredBinCommands = new Set<string>()\n private binCommandRegistrar?: BinCommandRegistrar\n private batchFileLoader?: BatchFileLoader\n private stdoutWriter?: (data: string) => void\n private _stdinHandler: ((data: string) => void) | null = null\n private _terminalColumns = 80\n private _terminalRows = 24\n private viteServer?: ViteDevServer\n private vitePort: number | null = null\n private vitePreviewUrl: string | null = null\n private vitePreviewListener?: VitePreviewListener\n private serverBridge?: import(\"./server-bridge\").ServerBridge\n private parsedPackageJsonCache = new Map<string, { raw: string; value: Record<string, unknown> | null }>()\n private transformedTextCache = new Map<string, { source: string; transformed: string }>()\n\n constructor(private readonly fs: ObservableInMemoryFs) {\n this._vfs.mkdirSync(ALMOSTNODE_INTERNAL_ROOT, { recursive: true })\n\n // Shim the deprecated `constants` module (missing from almostnode's builtins).\n // Many npm packages still `require('constants')`.\n this._vfs.mkdirSync(\"/node_modules/constants\", { recursive: true })\n this._vfs.writeFileSync(\"/node_modules/constants/package.json\", JSON.stringify({\n name: \"constants\",\n version: \"0.0.1\",\n main: \"index.js\",\n }))\n this._vfs.writeFileSync(\"/node_modules/constants/index.js\", [\n \"// Node.js `constants` shim (os.constants + fs.constants)\",\n \"var os = require('os');\",\n \"var constants = {};\",\n \"if (os.constants) {\",\n \" if (os.constants.signals) Object.assign(constants, os.constants.signals);\",\n \" if (os.constants.errno) Object.assign(constants, os.constants.errno);\",\n \" if (os.constants.priority) Object.assign(constants, os.constants.priority);\",\n \"}\",\n \"// Common fs.constants used by npm packages\",\n \"constants.O_RDONLY = 0;\",\n \"constants.O_WRONLY = 1;\",\n \"constants.O_RDWR = 2;\",\n \"constants.O_CREAT = 64;\",\n \"constants.O_EXCL = 128;\",\n \"constants.O_TRUNC = 512;\",\n \"constants.O_APPEND = 1024;\",\n \"constants.O_DIRECTORY = 65536;\",\n \"constants.O_NOFOLLOW = 131072;\",\n \"constants.O_SYNC = 1052672;\",\n \"constants.O_SYMLINK = 2097152;\",\n \"constants.O_NONBLOCK = 2048;\",\n \"constants.S_IFMT = 61440;\",\n \"constants.S_IFREG = 32768;\",\n \"constants.S_IFDIR = 16384;\",\n \"constants.S_IFCHR = 8192;\",\n \"constants.S_IFBLK = 24576;\",\n \"constants.S_IFIFO = 4096;\",\n \"constants.S_IFLNK = 40960;\",\n \"constants.S_IFSOCK = 49152;\",\n \"constants.S_IRWXU = 448;\",\n \"constants.S_IRUSR = 256;\",\n \"constants.S_IWUSR = 128;\",\n \"constants.S_IXUSR = 64;\",\n \"constants.S_IRWXG = 56;\",\n \"constants.S_IRGRP = 32;\",\n \"constants.S_IWGRP = 16;\",\n \"constants.S_IXGRP = 8;\",\n \"constants.S_IRWXO = 7;\",\n \"constants.S_IROTH = 4;\",\n \"constants.S_IWOTH = 2;\",\n \"constants.S_IXOTH = 1;\",\n \"constants.F_OK = 0;\",\n \"constants.R_OK = 4;\",\n \"constants.W_OK = 2;\",\n \"constants.X_OK = 1;\",\n \"constants.COPYFILE_EXCL = 1;\",\n \"constants.COPYFILE_FICLONE = 2;\",\n \"constants.COPYFILE_FICLONE_FORCE = 4;\",\n \"constants.UV_FS_COPYFILE_EXCL = 1;\",\n \"constants.UV_FS_COPYFILE_FICLONE = 2;\",\n \"constants.UV_FS_COPYFILE_FICLONE_FORCE = 4;\",\n \"module.exports = constants;\",\n ].join(\"\\n\"))\n\n // Shim `stream/promises` subpath (missing from almostnode's builtins).\n // The stream module has .promises but it's not registered as a subpath.\n this._vfs.mkdirSync(\"/node_modules/stream\", { recursive: true })\n this._vfs.writeFileSync(\"/node_modules/stream/package.json\", JSON.stringify({\n name: \"stream\",\n version: \"0.0.1\",\n main: \"index.js\",\n }))\n this._vfs.writeFileSync(\"/node_modules/stream/index.js\",\n \"module.exports = require('stream');\")\n this._vfs.mkdirSync(\"/node_modules/stream/promises\", { recursive: true })\n this._vfs.writeFileSync(\"/node_modules/stream/promises/package.json\", JSON.stringify({\n name: \"stream-promises\",\n version: \"0.0.1\",\n main: \"index.js\",\n }))\n this._vfs.writeFileSync(\"/node_modules/stream/promises/index.js\",\n \"var stream = require('stream');\\nmodule.exports = stream.promises || {};\")\n\n // Shim `stream/web` subpath (missing from almostnode's builtins).\n // Re-exports the browser-native Web Streams API (ReadableStream, WritableStream, etc.)\n this._vfs.mkdirSync(\"/node_modules/stream/web\", { recursive: true })\n this._vfs.writeFileSync(\"/node_modules/stream/web/package.json\", JSON.stringify({\n name: \"stream-web\",\n version: \"0.0.1\",\n main: \"index.js\",\n }))\n this._vfs.writeFileSync(\"/node_modules/stream/web/index.js\", [\n \"// Web Streams API shim — re-exports browser globals\",\n \"module.exports = {\",\n \" ReadableStream: typeof ReadableStream !== 'undefined' ? ReadableStream : undefined,\",\n \" ReadableStreamDefaultReader: typeof ReadableStreamDefaultReader !== 'undefined' ? ReadableStreamDefaultReader : undefined,\",\n \" ReadableStreamBYOBReader: typeof ReadableStreamBYOBReader !== 'undefined' ? ReadableStreamBYOBReader : undefined,\",\n \" ReadableStreamDefaultController: typeof ReadableStreamDefaultController !== 'undefined' ? ReadableStreamDefaultController : undefined,\",\n \" ReadableByteStreamController: typeof ReadableByteStreamController !== 'undefined' ? ReadableByteStreamController : undefined,\",\n \" WritableStream: typeof WritableStream !== 'undefined' ? WritableStream : undefined,\",\n \" WritableStreamDefaultWriter: typeof WritableStreamDefaultWriter !== 'undefined' ? WritableStreamDefaultWriter : undefined,\",\n \" WritableStreamDefaultController: typeof WritableStreamDefaultController !== 'undefined' ? WritableStreamDefaultController : undefined,\",\n \" TransformStream: typeof TransformStream !== 'undefined' ? TransformStream : undefined,\",\n \" TransformStreamDefaultController: typeof TransformStreamDefaultController !== 'undefined' ? TransformStreamDefaultController : undefined,\",\n \" ByteLengthQueuingStrategy: typeof ByteLengthQueuingStrategy !== 'undefined' ? ByteLengthQueuingStrategy : undefined,\",\n \" CountQueuingStrategy: typeof CountQueuingStrategy !== 'undefined' ? CountQueuingStrategy : undefined,\",\n \"};\",\n ].join(\"\\n\"))\n\n this.disposeObservableSubscription = this.fs.subscribe((event) => {\n void this.trackOperation((async () => {\n if (!this.initialized || this.suppressObservableMirrorCount > 0) {\n return\n }\n\n const normalizedPath = normalizePath(event.path)\n if (isInternalAlmostNodePath(normalizedPath)) {\n return\n }\n\n if (event.event === \"unlink\" || event.event === \"unlinkDir\") {\n this._vfs.withoutMirror(() => {\n removeVirtualPath(this._vfs, normalizedPath)\n })\n return\n }\n\n await this.copyObservablePathIntoVirtualFs(normalizedPath)\n })())\n })\n }\n\n dispose(): void {\n this.disposeObservableSubscription()\n this.stopViteServer()\n }\n\n setBinCommandRegistrar(registrar: BinCommandRegistrar): void {\n this.binCommandRegistrar = registrar\n }\n\n setBatchFileLoader(loader: BatchFileLoader): void {\n this.batchFileLoader = loader\n }\n\n setStdoutWriter(writer: ((data: string) => void) | undefined): void {\n this.stdoutWriter = writer\n }\n\n /** Send data to the stdin of the currently running interactive process. */\n writeStdin(data: string): void {\n this._stdinHandler?.(data)\n }\n\n /** Update terminal dimensions (used for process.stdout.columns/rows). */\n setTerminalSize(columns: number, rows: number): void {\n this._terminalColumns = columns\n this._terminalRows = rows\n }\n\n setVitePreviewListener(listener: VitePreviewListener | undefined): void {\n this.vitePreviewListener = listener\n listener?.(this.vitePreviewUrl)\n }\n\n setViteHmrTarget(target: Window | null): void {\n if (!target || !this.viteServer) {\n return\n }\n\n this.viteServer.setHMRTarget(target)\n }\n\n /**\n * Resolve a bare module specifier (e.g. \"@mui/material\" or \"react\") to a\n * `/node_modules/...` URL path that the ViteDevServer can serve.\n *\n * Resolution order mirrors Node/bundler conventions:\n * 1. package.json \"exports\" (condition \"import\" → \"default\")\n * 2. package.json \"module\"\n * 3. package.json \"main\"\n * 4. index.js / index.mjs fallback\n *\n * For deep imports like \"@mui/material/Button\", we resolve from the\n * package directory directly.\n */\n private resolveBarePkgEntryCache = new Map<string, string | null>()\n\n private parseCachedPackageJson(packageJsonPath: string, raw: string): Record<string, unknown> | null {\n const cached = this.parsedPackageJsonCache.get(packageJsonPath)\n if (cached && cached.raw === raw) {\n return cached.value\n }\n\n try {\n const parsed = JSON.parse(raw) as Record<string, unknown>\n this.parsedPackageJsonCache.set(packageJsonPath, { raw, value: parsed })\n return parsed\n } catch {\n this.parsedPackageJsonCache.set(packageJsonPath, { raw, value: null })\n return null\n }\n }\n\n private transformTextWithCache(\n cacheKey: string,\n source: string,\n transform: (value: string) => string,\n ): string {\n const cached = this.transformedTextCache.get(cacheKey)\n if (cached && cached.source === source) {\n return cached.transformed\n }\n\n const transformed = transform(source)\n this.transformedTextCache.set(cacheKey, { source, transformed })\n return transformed\n }\n\n private resolveBarePkgEntry(specifier: string, root: string): string | null {\n const cacheKey = `${root}\\u0000${specifier}`\n const cached = this.resolveBarePkgEntryCache.get(cacheKey)\n if (cached !== undefined) return cached\n\n const result = this._resolveBarePkgEntry(specifier, root)\n this.resolveBarePkgEntryCache.set(cacheKey, result)\n return result\n }\n\n private _resolveBarePkgEntry(specifier: string, root: string): string | null {\n // Split specifier into package name + sub-path\n let pkgName: string\n let subPath: string\n\n if (specifier.startsWith(\"@\")) {\n // scoped: @scope/pkg or @scope/pkg/sub\n const parts = specifier.split(\"/\")\n pkgName = `${parts[0]}/${parts[1]}`\n subPath = parts.slice(2).join(\"/\")\n } else {\n const slashIdx = specifier.indexOf(\"/\")\n if (slashIdx === -1) {\n pkgName = specifier\n subPath = \"\"\n } else {\n pkgName = specifier.slice(0, slashIdx)\n subPath = specifier.slice(slashIdx + 1)\n }\n }\n\n const nodeModulesPath = `${root}/node_modules/${pkgName}`\n const pkgJsonPath = `${nodeModulesPath}/package.json`\n\n let pkgJson: Record<string, unknown> | null = null\n try {\n if (this.vfs.existsSync(pkgJsonPath)) {\n pkgJson = this.parseCachedPackageJson(pkgJsonPath, this.vfs.readFileSync(pkgJsonPath, \"utf8\"))\n }\n } catch {\n // malformed package.json\n }\n\n if (subPath) {\n // Deep import: @mui/material/Button → resolve via exports map or direct path\n if (pkgJson?.exports && typeof pkgJson.exports === \"object\") {\n const exportsMap = pkgJson.exports as Record<string, unknown>\n const entry = this.resolveExportsEntry(exportsMap, `./${subPath}`)\n ?? this.resolveWildcardExports(exportsMap, subPath)\n if (entry) return `/node_modules/${pkgName}/${stripDotSlash(entry)}`\n }\n\n // Try direct file paths\n const candidates = [\n `/node_modules/${pkgName}/${subPath}`,\n `/node_modules/${pkgName}/${subPath}.js`,\n `/node_modules/${pkgName}/${subPath}.mjs`,\n `/node_modules/${pkgName}/${subPath}/index.js`,\n `/node_modules/${pkgName}/${subPath}/index.mjs`,\n ]\n for (const candidate of candidates) {\n if (this.vfs.existsSync(`${root}${candidate}`)) return candidate\n }\n return `/node_modules/${pkgName}/${subPath}`\n }\n\n // Root import: resolve entry point\n if (pkgJson?.exports && typeof pkgJson.exports === \"object\") {\n const entry = this.resolveExportsEntry(pkgJson.exports as Record<string, unknown>, \".\")\n if (entry) return `/node_modules/${pkgName}/${stripDotSlash(entry)}`\n }\n\n // \"module\" field (ESM entry)\n if (typeof pkgJson?.module === \"string\") {\n return `/node_modules/${pkgName}/${stripDotSlash(pkgJson.module)}`\n }\n\n // \"main\" field\n if (typeof pkgJson?.main === \"string\") {\n return `/node_modules/${pkgName}/${stripDotSlash(pkgJson.main)}`\n }\n\n // Fallback\n const fallbacks = [\n `/node_modules/${pkgName}/index.js`,\n `/node_modules/${pkgName}/index.mjs`,\n ]\n for (const fb of fallbacks) {\n if (this.vfs.existsSync(`${root}${fb}`)) return fb\n }\n\n return `/node_modules/${pkgName}/index.js`\n }\n\n private resolveExportsEntry(exports: Record<string, unknown>, key: string): string | null {\n const entry = exports[key]\n if (!entry) {\n // If exports is a single string (shorthand for \".\")\n if (key === \".\" && typeof exports === \"string\") return exports as unknown as string\n return null\n }\n\n return this.resolveConditionValue(entry)\n }\n\n /**\n * Handle wildcard exports like \"./*\" → { \"default\": { \"default\": \"./esm/* /index.js\" } }\n */\n private resolveWildcardExports(exports: Record<string, unknown>, subPath: string): string | null {\n const wildcardKey = \"./*\"\n const wildcardEntry = exports[wildcardKey]\n if (!wildcardEntry) return null\n\n const resolved = this.resolveConditionValue(wildcardEntry)\n if (!resolved) return null\n\n // Replace * with the actual sub-path\n return resolved.replace(/\\*/g, subPath)\n }\n\n /**\n * Recursively resolve a condition value from an exports entry.\n * Handles: string, { import, module, default, require }, and nested conditions.\n * Skips \"types\" conditions since we need JS, not .d.ts files.\n *\n * Priority: browser > module > import > default > require\n * \"browser\" and \"module\" are preferred because they point to true ESM bundles.\n * \"import\" is deprioritised because some packages (e.g. @emotion/*) map it to\n * a CJS-to-ESM wrapper (.cjs.mjs) that uses require()/exports which fails\n * in a browser context.\n */\n private resolveConditionValue(value: unknown): string | null {\n if (typeof value === \"string\") return value\n if (typeof value !== \"object\" || value === null) return null\n\n const conditions = value as Record<string, unknown>\n for (const condition of [\"browser\", \"module\", \"import\", \"default\", \"require\"]) {\n const condValue = conditions[condition]\n if (condValue === undefined) continue\n // Skip types-only entries\n if (condition === \"types\") continue\n const resolved = this.resolveConditionValue(condValue)\n if (resolved && !resolved.endsWith(\".d.ts\") && !resolved.endsWith(\".d.cts\") && !resolved.endsWith(\".d.mts\")) {\n return resolved\n }\n }\n return null\n }\n\n /**\n * Rewrite bare import specifiers in JavaScript source to /node_modules/... paths.\n * When virtualPrefix is provided (e.g. \"/__virtual__/5173\"), prepends it to\n * resolved paths so the browser stays within the service-worker-routed URL\n * namespace and cascading relative imports keep going through the SW.\n */\n rewriteBareImports(code: string, root: string, virtualPrefix = \"\"): string {\n // Match: import ... from 'specifier' / import 'specifier' / export ... from 'specifier'\n // Also dynamic: import('specifier')\n // Must NOT match relative (./ ../) or absolute (/) or URLs (http:// https://)\n //\n // Strip comments (but NOT strings — specifiers live in strings) then\n // run the import/export regex. To avoid false matches inside string\n // literals (e.g. \"forgot to export from the file\"), we require the\n // import/export keyword to appear at statement level: preceded by\n // line-start, semicolon, or opening brace.\n // Build a comment-free copy (same length, offsets preserved) so\n // the import/export regex doesn't match inside comments. Strings\n // are kept intact because specifiers live inside them. Regex\n // literals are NOT handled — their `//` can be falsely blanked —\n // so we must match on commentFree but apply edits to the original\n // `code` using the same offsets.\n const commentFree = code.replace(\n /(\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*'|`(?:[^`\\\\]|\\\\.)*`|\\/\\*[\\s\\S]*?\\*\\/|\\/\\/[^\\n]*)/g,\n (m) => {\n if (m.startsWith(\"/*\") || m.startsWith(\"//\")) return \" \".repeat(m.length)\n return m\n },\n )\n\n // Find matches on commentFree, apply replacements to original code\n const importRe = /((?:^|[;\\n{])\\s*(?:import|export)\\s+(?:[\\s\\S]*?\\s+from\\s+|)|(?:import\\s*\\())(['\"])([^'\".\\\\/][^'\"]*)\\2/gm\n let result = code\n let offset = 0\n let m: RegExpExecArray | null\n while ((m = importRe.exec(commentFree)) !== null) {\n const [fullMatch, prefix, quote, specifier] = m\n // Skip URLs\n if (/^https?:\\/\\//.test(specifier)) continue\n // Skip already-resolved paths\n if (specifier.startsWith(\"/\")) continue\n\n const resolved = this.resolveBarePkgEntry(specifier, root)\n if (!resolved) continue\n\n const replacement = `${prefix}${quote}${virtualPrefix}${resolved}${quote}`\n const start = m.index + offset\n const end = start + fullMatch.length\n result = result.slice(0, start) + replacement + result.slice(end)\n offset += replacement.length - fullMatch.length\n }\n return result\n }\n\n private async serveExistingVirtualStaticFile<TBody extends { length: number }>(\n root: string,\n requestUrl: string,\n bufferCtor: { from(input: string | Uint8Array): TBody },\n ): Promise<{\n statusCode: number\n statusMessage: string\n headers: Record<string, string>\n body: TBody\n resolvedPath: string\n } | null> {\n const basePath = normalizePath(path.join(root, getRequestPathname(requestUrl)))\n\n // When the request has no file extension, try common JS extensions\n // and also resolve directory package.json entry points\n const hasExtension = /\\.[a-zA-Z0-9]+$/.test(path.basename(basePath))\n let candidates: string[]\n if (hasExtension) {\n candidates = [basePath]\n } else {\n candidates = [basePath, `${basePath}.js`, `${basePath}.mjs`, `${basePath}.jsx`, `${basePath}/index.js`, `${basePath}/index.mjs`]\n const pkgPath = `${basePath}/package.json`\n\n try {\n if (this.vfs.existsSync(pkgPath)) {\n const raw = this.vfs.readFileSync(pkgPath, \"utf8\")\n const pkg = this.parseCachedPackageJson(pkgPath, raw)\n const entry = pkg\n ? (typeof pkg.module === \"string\" && pkg.module) || (typeof pkg.main === \"string\" && pkg.main)\n : null\n if (entry) candidates.push(normalizePath(path.join(basePath, entry)))\n }\n } catch { /* ignore */ }\n\n try {\n if (await this.fs.exists(pkgPath)) {\n const raw = await this.fs.readFile(pkgPath, \"utf-8\")\n const pkg = this.parseCachedPackageJson(pkgPath, raw as string)\n const entry = pkg\n ? (typeof pkg.module === \"string\" && pkg.module) || (typeof pkg.main === \"string\" && pkg.main)\n : null\n if (entry) candidates.push(normalizePath(path.join(basePath, entry)))\n }\n } catch { /* ignore */ }\n }\n\n // Try VFS first (already-loaded files)\n for (const targetPath of candidates) {\n try {\n const stat = this.vfs.statSync(targetPath)\n if (stat.isDirectory()) {\n continue\n }\n\n const content = this.vfs.readFileSync(targetPath)\n const body = typeof content === \"string\"\n ? bufferCtor.from(content)\n : bufferCtor.from(content)\n\n return {\n statusCode: 200,\n statusMessage: \"OK\",\n headers: {\n \"Content-Type\": getStaticMimeType(targetPath),\n \"Content-Length\": String(body.length),\n \"Cache-Control\": \"no-cache\",\n },\n body,\n resolvedPath: targetPath,\n }\n } catch {\n // not in VFS – continue trying\n }\n }\n\n // On-demand: load from observable FS (lazy files hydrated from server)\n for (const targetPath of candidates) {\n try {\n if (!(await this.fs.exists(targetPath))) {\n continue\n }\n\n const stat = await this.fs.stat(targetPath)\n if (stat.isDirectory) {\n continue\n }\n\n const content = await this.fs.readFileBuffer(targetPath)\n\n // Populate VFS so subsequent requests are fast\n this._vfs.withoutMirror(() => {\n this._vfs.mkdirSync(path.dirname(targetPath), { recursive: true })\n this._vfs.writeFileSync(targetPath, content)\n })\n\n const body = bufferCtor.from(content)\n\n return {\n statusCode: 200,\n statusMessage: \"OK\",\n headers: {\n \"Content-Type\": getStaticMimeType(targetPath),\n \"Content-Length\": String(body.length),\n \"Cache-Control\": \"no-cache\",\n },\n body,\n resolvedPath: targetPath,\n }\n } catch {\n // continue trying next candidate\n }\n }\n\n return null\n }\n\n private stopViteServer(): void {\n if (this.viteServer) {\n this.viteServer.stop()\n this.viteServer = undefined\n }\n\n if (this.vitePort !== null) {\n try {\n this.serverBridge?.unregisterServer(this.vitePort)\n } catch {\n // ignore if not registered\n }\n }\n\n this.vitePort = null\n this.vitePreviewUrl = null\n this.vitePreviewListener?.(null)\n }\n\n private resolveBinFromPackageJson(\n binName: string,\n packageName: string,\n pkgJson: Record<string, unknown>,\n pkgDir: string,\n ): string | null {\n if (typeof pkgJson.bin === \"string\") {\n const inferredBinName = typeof pkgJson.name === \"string\"\n ? pkgJson.name.split(\"/\").pop() ?? pkgJson.name\n : packageName.split(\"/\").pop() ?? packageName\n\n if (binName === inferredBinName) {\n return normalizePath(path.join(pkgDir, pkgJson.bin))\n }\n }\n\n if (typeof pkgJson.bin === \"object\" && pkgJson.bin !== null && binName in pkgJson.bin) {\n const namedBins = pkgJson.bin as Record<string, string>\n return normalizePath(path.join(pkgDir, namedBins[binName]))\n }\n\n return null\n }\n\n private async resolveNpmBinPath(binName: string, cwd: string): Promise<string | null> {\n const candidatePackageNames = [binName]\n const packageJsonResult = await this.readPackageJson(cwd)\n\n if (\"pkgJson\" in packageJsonResult) {\n for (const packageName of getPackageJsonDependencyNames(packageJsonResult.pkgJson)) {\n if (!candidatePackageNames.includes(packageName)) {\n candidatePackageNames.push(packageName)\n }\n }\n }\n\n // Check local node_modules first\n for (const packageName of candidatePackageNames) {\n const pkgJsonPath = normalizePath(path.join(cwd, \"node_modules\", packageName, \"package.json\"))\n\n if (!(await this.fs.exists(pkgJsonPath))) {\n continue\n }\n\n try {\n const content = await this.fs.readFile(pkgJsonPath, \"utf-8\")\n const pkgJson = this.parseCachedPackageJson(pkgJsonPath, content as string)\n if (!pkgJson) {\n continue\n }\n\n const pkgDir = normalizePath(path.join(cwd, \"node_modules\", packageName))\n const result = this.resolveBinFromPackageJson(binName, packageName, pkgJson, pkgDir)\n if (result) return result\n } catch {\n // ignore parse errors\n }\n }\n\n // Fallback: check global node_modules\n const globalResult = await this.resolveGlobalBinPath(binName)\n if (globalResult) return globalResult\n\n return null\n }\n\n private async resolveGlobalBinPath(binName: string): Promise<string | null> {\n try {\n const globalModulesDir = GLOBAL_NODE_MODULES_ROOT\n if (!this._vfs.existsSync(globalModulesDir)) return null\n\n const globalPackages = this._vfs.readdirSync(globalModulesDir)\n for (const entry of globalPackages) {\n const packageName = entry\n const pkgJsonPath = normalizePath(path.join(globalModulesDir, packageName, \"package.json\"))\n\n if (!this._vfs.existsSync(pkgJsonPath)) {\n // Check for scoped packages\n if (entry.startsWith(\"@\")) {\n try {\n const scopeDir = normalizePath(path.join(globalModulesDir, entry))\n const scopedPackages = this._vfs.readdirSync(scopeDir)\n for (const scopedPkg of scopedPackages) {\n const scopedName = `${entry}/${scopedPkg}`\n const scopedPkgJsonPath = normalizePath(path.join(globalModulesDir, scopedName, \"package.json\"))\n if (!this._vfs.existsSync(scopedPkgJsonPath)) continue\n\n const raw = this._vfs.readFileSync(scopedPkgJsonPath, \"utf8\")\n const pkgJson = this.parseCachedPackageJson(scopedPkgJsonPath, raw)\n if (!pkgJson) continue\n\n const pkgDir = normalizePath(path.join(globalModulesDir, scopedName))\n const result = this.resolveBinFromPackageJson(binName, scopedName, pkgJson, pkgDir)\n if (result) return result\n }\n } catch { /* ignore */ }\n }\n continue\n }\n\n try {\n const raw = this._vfs.readFileSync(pkgJsonPath, \"utf8\")\n const pkgJson = this.parseCachedPackageJson(pkgJsonPath, raw)\n if (!pkgJson) continue\n\n const pkgDir = normalizePath(path.join(globalModulesDir, packageName))\n const result = this.resolveBinFromPackageJson(binName, packageName, pkgJson, pkgDir)\n if (result) return result\n } catch { /* ignore */ }\n }\n } catch { /* ignore */ }\n\n return null\n }\n\n /**\n * Replace lru-cache CJS entry points with a browser-safe implementation.\n *\n * lru-cache v11's minified CJS uses `require(\"node:diagnostics_channel\")`\n * and private class fields (`static #t`) which can fail inside the browser\n * WASM runtime's `eval()` context, leaving `exports.LRUCache` undefined\n * (\"TypeError: LRUCache is not a constructor\").\n *\n * The fix: overwrite the CJS entry with a clean Map-based LRU cache that\n * covers the full API surface used by lru-cache consumers (hosted-git-info,\n * path-scurry, glob, etc.) without any diagnostics_channel dependency or\n * private class fields.\n */\n private patchLruCacheInNodeModules(nodeModulesDir: string): void {\n const lruCacheShim = `\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LRUCache = void 0;\nvar LRUCache = (function () {\n function LRUCache(options) {\n if (typeof options === \"number\") options = { max: options };\n if (!options) options = {};\n this._max = options.max || Infinity;\n this._maxSize = options.maxSize || 0;\n this._sizeCalculation = options.sizeCalculation || null;\n this._dispose = options.dispose || null;\n this._allowStale = !!options.allowStale;\n this._ttl = options.ttl || 0;\n this._noUpdateTTL = !!options.noUpdateTTL;\n this._map = new Map();\n this._order = [];\n this._sizes = new Map();\n this._totalSize = 0;\n this._timers = new Map();\n }\n Object.defineProperty(LRUCache.prototype, \"size\", { get: function () { return this._map.size; } });\n Object.defineProperty(LRUCache.prototype, \"max\", { get: function () { return this._max; } });\n Object.defineProperty(LRUCache.prototype, \"maxSize\", { get: function () { return this._maxSize; } });\n Object.defineProperty(LRUCache.prototype, \"calculatedSize\", { get: function () { return this._totalSize; } });\n LRUCache.prototype._touch = function (key) {\n var idx = this._order.indexOf(key);\n if (idx > -1) this._order.splice(idx, 1);\n this._order.push(key);\n };\n LRUCache.prototype._evict = function () {\n while (this._order.length > 0 && (this._map.size > this._max || (this._maxSize > 0 && this._totalSize > this._maxSize))) {\n var oldest = this._order.shift();\n if (oldest !== undefined && this._map.has(oldest)) {\n var val = this._map.get(oldest);\n this._map.delete(oldest);\n if (this._sizes.has(oldest)) { this._totalSize -= this._sizes.get(oldest); this._sizes.delete(oldest); }\n if (this._timers.has(oldest)) { clearTimeout(this._timers.get(oldest)); this._timers.delete(oldest); }\n if (this._dispose) this._dispose(val, oldest, \"evict\");\n }\n }\n };\n LRUCache.prototype._isStale = function (key) {\n return false; // TTL timers handle expiry via delete\n };\n LRUCache.prototype.set = function (key, value, options) {\n if (value === undefined) { this.delete(key); return this; }\n var opts = options || {};\n var size = 0;\n if (this._maxSize > 0) {\n size = opts.size || 0;\n if (!size && this._sizeCalculation) size = this._sizeCalculation(value, key);\n if (size > this._maxSize) return this;\n }\n if (this._map.has(key)) {\n var old = this._map.get(key);\n if (this._sizes.has(key)) { this._totalSize -= this._sizes.get(key); }\n if (this._timers.has(key)) { clearTimeout(this._timers.get(key)); this._timers.delete(key); }\n if (this._dispose && !opts.noDisposeOnSet) this._dispose(old, key, \"set\");\n }\n this._map.set(key, value);\n this._touch(key);\n if (this._maxSize > 0 && size > 0) { this._sizes.set(key, size); this._totalSize += size; }\n var ttl = opts.ttl !== undefined ? opts.ttl : this._ttl;\n if (ttl > 0) {\n var self = this;\n this._timers.set(key, setTimeout(function () { self.delete(key); }, ttl));\n }\n this._evict();\n return this;\n };\n LRUCache.prototype.get = function (key, options) {\n if (!this._map.has(key)) return undefined;\n var value = this._map.get(key);\n this._touch(key);\n return value;\n };\n LRUCache.prototype.peek = function (key) {\n return this._map.get(key);\n };\n LRUCache.prototype.has = function (key) {\n return this._map.has(key);\n };\n LRUCache.prototype.delete = function (key) {\n if (!this._map.has(key)) return false;\n var val = this._map.get(key);\n this._map.delete(key);\n var idx = this._order.indexOf(key);\n if (idx > -1) this._order.splice(idx, 1);\n if (this._sizes.has(key)) { this._totalSize -= this._sizes.get(key); this._sizes.delete(key); }\n if (this._timers.has(key)) { clearTimeout(this._timers.get(key)); this._timers.delete(key); }\n if (this._dispose) this._dispose(val, key, \"delete\");\n return true;\n };\n LRUCache.prototype.clear = function () {\n var self = this;\n if (this._dispose) {\n this._map.forEach(function (val, key) { self._dispose(val, key, \"delete\"); });\n }\n this._timers.forEach(function (t) { clearTimeout(t); });\n this._map.clear();\n this._order.length = 0;\n this._sizes.clear();\n this._totalSize = 0;\n this._timers.clear();\n };\n LRUCache.prototype.keys = function () { return this._map.keys(); };\n LRUCache.prototype.values = function () { return this._map.values(); };\n LRUCache.prototype.entries = function () { return this._map.entries(); };\n LRUCache.prototype.find = function (fn, options) {\n for (var it = this._map.entries(), r; !(r = it.next()).done;) {\n if (fn(r.value[1], r.value[0], this)) return this.get(r.value[0], options);\n }\n };\n LRUCache.prototype.forEach = function (fn, thisArg) {\n var self = this;\n this._map.forEach(function (val, key) { fn.call(thisArg || self, val, key, self); });\n };\n LRUCache.prototype.dump = function () { return []; };\n LRUCache.prototype.load = function (arr) {\n this.clear();\n for (var i = 0; i < arr.length; i++) { this.set(arr[i][0], arr[i][1].value, arr[i][1]); }\n };\n LRUCache.prototype.pop = function () {\n if (this._order.length === 0) return undefined;\n var oldest = this._order[0];\n var val = this._map.get(oldest);\n this.delete(oldest);\n return val;\n };\n LRUCache.prototype.purgeStale = function () { return false; };\n LRUCache.prototype.getRemainingTTL = function (key) { return this._map.has(key) ? Infinity : 0; };\n LRUCache.prototype.info = function (key) {\n if (!this._map.has(key)) return undefined;\n return { value: this._map.get(key) };\n };\n LRUCache.prototype[Symbol.iterator] = function () { return this._map.entries(); };\n LRUCache.prototype[Symbol.toStringTag] = \"LRUCache\";\n return LRUCache;\n})();\nexports.LRUCache = LRUCache;\n`\n\n const patchDir = (lruDir: string) => {\n // Overwrite all possible CJS entry points\n const cjsPaths = [\n normalizePath(path.join(lruDir, \"dist\", \"commonjs\", \"index.min.js\")),\n normalizePath(path.join(lruDir, \"dist\", \"commonjs\", \"index.js\")),\n // Also try the package root index (lru-cache v7 style)\n normalizePath(path.join(lruDir, \"index.js\")),\n ]\n let patched = false\n for (const p of cjsPaths) {\n if (this._vfs.existsSync(p)) {\n this._vfs.writeFileSync(p, lruCacheShim)\n patched = true\n }\n }\n // If no known entry was found, check package.json for the actual main field\n if (!patched) {\n const pkgPath = normalizePath(path.join(lruDir, \"package.json\"))\n if (this._vfs.existsSync(pkgPath)) {\n try {\n const pkg = JSON.parse(this._vfs.readFileSync(pkgPath, \"utf8\") as string)\n const mainField = pkg.main || pkg.exports?.[\".\"]?.require?.default || pkg.exports?.[\".\"]?.require\n if (mainField && typeof mainField === \"string\") {\n const mainPath = normalizePath(path.join(lruDir, mainField))\n if (this._vfs.existsSync(mainPath)) {\n this._vfs.writeFileSync(mainPath, lruCacheShim)\n patched = true\n }\n }\n } catch { /* ignore parse errors */ }\n }\n }\n return patched\n }\n\n // Recursively find all lru-cache directories in node_modules\n let patchCount = 0\n const walkNodeModules = (nmDir: string) => {\n if (!this._vfs.existsSync(nmDir)) return\n let entries: string[]\n try {\n entries = this._vfs.readdirSync(nmDir)\n } catch { return }\n for (const entry of entries) {\n if (entry === \"lru-cache\") {\n const lruDir = normalizePath(path.join(nmDir, \"lru-cache\"))\n if (patchDir(lruDir)) patchCount++\n }\n // Scoped packages (@scope/pkg)\n if (entry.startsWith(\"@\")) {\n const scopeDir = normalizePath(path.join(nmDir, entry))\n try {\n for (const scopedEntry of this._vfs.readdirSync(scopeDir)) {\n // Check for lru-cache nested inside scoped package\n const nestedNm = normalizePath(path.join(scopeDir, scopedEntry, \"node_modules\"))\n if (this._vfs.existsSync(nestedNm)) {\n walkNodeModules(nestedNm)\n }\n }\n } catch { /* ignore */ }\n } else {\n // Check nested node_modules inside each package\n const nestedNm = normalizePath(path.join(nmDir, entry, \"node_modules\"))\n if (this._vfs.existsSync(nestedNm)) {\n walkNodeModules(nestedNm)\n }\n }\n }\n }\n\n walkNodeModules(nodeModulesDir)\n\n if (patchCount === 0) {\n console.warn(`[agent-web-os] lru-cache patch: no lru-cache found in ${nodeModulesDir}`)\n } else {\n console.log(`[agent-web-os] lru-cache patch: patched ${patchCount} installation(s) in ${nodeModulesDir}`)\n }\n }\n\n private async registerGlobalBinCommands(packageName: string): Promise<void> {\n if (!this.binCommandRegistrar) return\n\n const pkgJsonPath = normalizePath(path.join(GLOBAL_NODE_MODULES_ROOT, packageName, \"package.json\"))\n if (!this._vfs.existsSync(pkgJsonPath)) return\n\n try {\n const raw = this._vfs.readFileSync(pkgJsonPath, \"utf8\")\n const pkgJson = this.parseCachedPackageJson(pkgJsonPath, raw)\n if (!pkgJson) return\n\n let binNames: string[]\n if (typeof pkgJson.bin === \"string\") {\n const name = typeof pkgJson.name === \"string\"\n ? pkgJson.name.split(\"/\").pop() ?? \"\"\n : \"\"\n binNames = name ? [name] : []\n } else if (typeof pkgJson.bin === \"object\" && pkgJson.bin !== null) {\n binNames = Object.keys(pkgJson.bin)\n } else {\n binNames = []\n }\n\n for (const binName of binNames) {\n if (this.registeredBinCommands.has(binName)) continue\n this.registeredBinCommands.add(binName)\n\n this.binCommandRegistrar(binName, async (args, ctx) => {\n const resolvedPath = await this.resolveGlobalBinPath(binName)\n ?? await this.resolveNpmBinPath(binName, normalizePath(ctx.cwd))\n if (!resolvedPath) {\n return {\n stdout: \"\",\n stderr: `bash: ${binName}: command not found\\n`,\n exitCode: 127,\n }\n }\n\n return this.executeNode([resolvedPath, ...args], ctx)\n })\n }\n } catch { /* ignore */ }\n }\n\n private async resolveAndRegisterBinCommands(command: string, cwd: string): Promise<void> {\n if (!this.binCommandRegistrar) {\n return\n }\n\n const potentialBins = command.split(/&&|\\|\\||;|\\|/).flatMap((part) => {\n const words = part.trim().split(/\\s+/)\n for (const word of words) {\n if (!word || word.includes(\"=\") || word.startsWith(\"/\") || word.startsWith(\"./\") || word.startsWith(\"..\")) {\n continue\n }\n\n return [word]\n }\n\n return []\n })\n\n for (const binName of potentialBins) {\n if (this.registeredBinCommands.has(binName)) {\n continue\n }\n\n const binPath = await this.resolveNpmBinPath(binName, cwd)\n if (!binPath) {\n continue\n }\n\n this.registeredBinCommands.add(binName)\n\n if (binName === \"vite\") {\n this.binCommandRegistrar(binName, async (args, ctx) => {\n return this.executeVite(args, ctx)\n })\n continue\n }\n\n this.binCommandRegistrar(binName, async (args, ctx) => {\n const resolvedPath = await this.resolveNpmBinPath(binName, normalizePath(ctx.cwd))\n if (!resolvedPath) {\n return {\n stdout: \"\",\n stderr: `bash: ${binName}: command not found\\n`,\n exitCode: 127,\n }\n }\n\n return this.executeNode([resolvedPath, ...args], ctx)\n })\n }\n }\n\n private trackOperation(operation: Promise<void>): Promise<void> {\n this.pendingOperations.add(operation)\n\n return operation.finally(() => {\n this.pendingOperations.delete(operation)\n })\n }\n\n private async flushPendingOperations(): Promise<void> {\n while (this.pendingOperations.size > 0) {\n await Promise.all(Array.from(this.pendingOperations))\n }\n }\n\n private async withSuppressedObservableMirroring<T>(operation: () => Promise<T>): Promise<T> {\n this.suppressObservableMirrorCount += 1\n\n try {\n return await operation()\n } finally {\n this.suppressObservableMirrorCount -= 1\n }\n }\n\n private async copyObservablePathIntoVirtualFs(targetPath: string, options?: { force?: boolean }): Promise<void> {\n const normalizedPath = normalizePath(targetPath)\n if (isInternalAlmostNodePath(normalizedPath)) {\n return\n }\n\n if (!options?.force && this.fs.isPathLazy(normalizedPath)) {\n return\n }\n\n try {\n const stat = await this.fs.stat(normalizedPath)\n\n if (stat.isDirectory) {\n this._vfs.withoutMirror(() => {\n this._vfs.mkdirSync(normalizedPath, { recursive: true })\n })\n return\n }\n\n const content = await this.fs.readFileBuffer(normalizedPath)\n this._vfs.withoutMirror(() => {\n this._vfs.mkdirSync(path.dirname(normalizedPath), { recursive: true })\n this._vfs.writeFileSync(normalizedPath, content)\n })\n } catch {\n this._vfs.withoutMirror(() => {\n removeVirtualPath(this._vfs, normalizedPath)\n })\n }\n }\n\n private getNodeModulesPackageRoot(targetPath: string): string | null {\n const normalizedPath = normalizePath(targetPath)\n const nodeModulesMarker = \"/node_modules/\"\n const nodeModulesIndex = normalizedPath.indexOf(nodeModulesMarker)\n\n if (nodeModulesIndex === -1) {\n return null\n }\n\n const packageSegments = normalizedPath.slice(nodeModulesIndex + nodeModulesMarker.length).split(\"/\").filter(Boolean)\n if (packageSegments.length === 0) {\n return null\n }\n\n const packageNameSegments = packageSegments[0]?.startsWith(\"@\")\n ? packageSegments.slice(0, 2)\n : packageSegments.slice(0, 1)\n\n if (packageNameSegments.length === 0) {\n return null\n }\n\n return normalizePath(`${normalizedPath.slice(0, nodeModulesIndex + nodeModulesMarker.length)}${packageNameSegments.join(\"/\")}`)\n }\n\n private async hydrateObservablePackageIntoVirtualFs(packageRoot: string): Promise<void> {\n const normalizedPackageRoot = normalizePath(packageRoot)\n const packagePaths = Array.from(new Set(this.fs.getAllPaths().map((targetPath) => normalizePath(targetPath))))\n .filter((targetPath) => targetPath === normalizedPackageRoot || targetPath.startsWith(`${normalizedPackageRoot}/`))\n .sort((leftPath, rightPath) => leftPath.split(\"/\").length - rightPath.split(\"/\").length)\n\n await this.hydrateObservablePathsIntoVirtualFs(packagePaths)\n }\n\n private async hydrateObservablePathsIntoVirtualFs(targetPaths: string[]): Promise<void> {\n const normalizedPaths = Array.from(new Set(targetPaths.map((targetPath) => normalizePath(targetPath))))\n .sort((leftPath, rightPath) => leftPath.split(\"/\").length - rightPath.split(\"/\").length)\n\n const lazyFilePaths: string[] = []\n\n for (const targetPath of normalizedPaths) {\n try {\n if (this.fs.isPathLazy(targetPath)) {\n lazyFilePaths.push(targetPath)\n continue\n }\n\n const stat = await this.fs.stat(targetPath)\n\n if (stat.isDirectory) {\n this._vfs.withoutMirror(() => {\n this._vfs.mkdirSync(targetPath, { recursive: true })\n })\n continue\n }\n\n await this.copyObservablePathIntoVirtualFs(targetPath, { force: true })\n } catch {\n // ignore paths that disappear during hydration\n }\n }\n\n if (lazyFilePaths.length === 0) {\n return\n }\n\n if (this.batchFileLoader) {\n const contents = await this.batchFileLoader(lazyFilePaths)\n\n await this.fs.suppressObservability(async () => {\n for (const [filePath, content] of contents) {\n this.fs.writeFileSync(filePath, content)\n }\n })\n\n this._vfs.withoutMirror(() => {\n for (const [filePath, content] of contents) {\n this._vfs.mkdirSync(path.dirname(filePath), { recursive: true })\n this._vfs.writeFileSync(filePath, content)\n }\n })\n\n const missingPaths = lazyFilePaths.filter((lazyPath) => !contents.has(lazyPath))\n for (const missingPath of missingPaths) {\n await this.copyObservablePathIntoVirtualFs(missingPath, { force: true })\n }\n return\n }\n\n for (const lazyPath of lazyFilePaths) {\n await this.copyObservablePathIntoVirtualFs(lazyPath, { force: true })\n }\n }\n\n private async hydrateObservableDependencyPackagesIntoVirtualFs(cwd: string): Promise<void> {\n const packageJsonResult = await this.readPackageJson(cwd)\n if (\"error\" in packageJsonResult) {\n return\n }\n\n const dependencyPaths: string[] = []\n\n for (const packageName of getPackageJsonDependencyNames(packageJsonResult.pkgJson)) {\n const packageRoot = normalizePath(path.join(cwd, \"node_modules\", packageName))\n\n if (!(await this.fs.exists(packageRoot))) {\n continue\n }\n\n for (const targetPath of this.fs.getAllPaths()) {\n const normalizedPath = normalizePath(targetPath)\n if (normalizedPath === packageRoot || normalizedPath.startsWith(`${packageRoot}/`)) {\n dependencyPaths.push(normalizedPath)\n }\n }\n }\n\n await this.hydrateObservablePathsIntoVirtualFs(dependencyPaths)\n }\n\n private async hydrateObservableProjectIntoVirtualFs(cwd: string): Promise<void> {\n const normalizedCwd = normalizePath(cwd)\n const cwdPrefix = normalizedCwd.endsWith(\"/\") ? normalizedCwd : `${normalizedCwd}/`\n const projectPaths = Array.from(new Set(this.fs.getAllPaths().map((targetPath) => normalizePath(targetPath))))\n .filter((targetPath) => {\n if (isInternalAlmostNodePath(targetPath)) {\n return false\n }\n\n if (targetPath !== normalizedCwd && !targetPath.startsWith(cwdPrefix)) {\n return false\n }\n\n return !targetPath.startsWith(`${cwdPrefix}node_modules/`)\n })\n .sort((leftPath, rightPath) => leftPath.split(\"/\").length - rightPath.split(\"/\").length)\n\n await this.hydrateObservablePathsIntoVirtualFs(projectPaths)\n }\n\n async applyVirtualWrite(targetPath: string, data: string | Uint8Array): Promise<void> {\n return this.trackOperation((async () => {\n const normalizedPath = normalizePath(targetPath)\n if (isInternalAlmostNodePath(normalizedPath)) {\n return\n }\n\n await this.withSuppressedObservableMirroring(async () => {\n await ensureObservableDirectory(this.fs, path.dirname(normalizedPath))\n await this.fs.writeFile(normalizedPath, data)\n })\n })())\n }\n\n async applyVirtualMkdir(targetPath: string): Promise<void> {\n return this.trackOperation((async () => {\n const normalizedPath = normalizePath(targetPath)\n if (isInternalAlmostNodePath(normalizedPath)) {\n return\n }\n\n await this.withSuppressedObservableMirroring(async () => {\n await this.fs.mkdir(normalizedPath, { recursive: true })\n })\n })())\n }\n\n async applyVirtualRemove(targetPath: string, recursive: boolean): Promise<void> {\n return this.trackOperation((async () => {\n const normalizedPath = normalizePath(targetPath)\n if (isInternalAlmostNodePath(normalizedPath)) {\n return\n }\n\n await this.withSuppressedObservableMirroring(async () => {\n await this.fs.rm(normalizedPath, { force: true, recursive })\n })\n })())\n }\n\n async applyVirtualRename(previousPath: string, nextPath: string): Promise<void> {\n return this.trackOperation((async () => {\n const normalizedPreviousPath = normalizePath(previousPath)\n const normalizedNextPath = normalizePath(nextPath)\n if (isInternalAlmostNodePath(normalizedPreviousPath) || isInternalAlmostNodePath(normalizedNextPath)) {\n return\n }\n\n await this.withSuppressedObservableMirroring(async () => {\n await ensureObservableDirectory(this.fs, path.dirname(normalizedNextPath))\n await this.fs.mv(normalizedPreviousPath, normalizedNextPath)\n })\n })())\n }\n\n private async ensureInitialized(): Promise<void> {\n if (this.initialized) {\n return\n }\n\n if (!this.initializePromise) {\n this.initializePromise = (async () => {\n const allPaths = Array.from(new Set(this.fs.getAllPaths().map((targetPath) => normalizePath(targetPath))))\n .filter((targetPath) => !isInternalAlmostNodePath(targetPath))\n .sort((leftPath, rightPath) => leftPath.split(\"/\").length - rightPath.split(\"/\").length)\n\n for (const targetPath of allPaths) {\n await this.copyObservablePathIntoVirtualFs(targetPath)\n }\n\n this.initialized = true\n })()\n }\n\n await this.initializePromise\n }\n\n private async readPackageJson(cwd: string): Promise<{ pkgJson: PackageJsonLike } | { error: ExecResult }> {\n const packageJsonPath = normalizePath(path.join(cwd, \"package.json\"))\n\n if (!this.vfs.existsSync(packageJsonPath)) {\n await this.copyObservablePathIntoVirtualFs(packageJsonPath, { force: true })\n }\n\n if (!this.vfs.existsSync(packageJsonPath)) {\n return {\n error: {\n stdout: \"\",\n stderr: \"npm ERR! no package.json found\\n\",\n exitCode: 1,\n },\n }\n }\n\n try {\n return {\n pkgJson: (this.parseCachedPackageJson(packageJsonPath, this.vfs.readFileSync(packageJsonPath, \"utf8\")) ?? {}) as PackageJsonLike,\n }\n } catch {\n return {\n error: {\n stdout: \"\",\n stderr: \"npm ERR! Failed to parse package.json\\n\",\n exitCode: 1,\n },\n }\n }\n }\n\n private async runNpmScript(scriptName: string | undefined, cwd: string, ctx: CommandContext): Promise<ExecResult> {\n if (!scriptName) {\n const packageJsonResult = await this.readPackageJson(cwd)\n if (\"error\" in packageJsonResult) {\n return packageJsonResult.error\n }\n\n const scripts = packageJsonResult.pkgJson.scripts || {}\n const scriptNames = Object.keys(scripts)\n if (scriptNames.length === 0) {\n return { stdout: \"\", stderr: \"\", exitCode: 0 }\n }\n\n const lifecycleScripts = new Set([\n \"prestart\",\n \"start\",\n \"poststart\",\n \"pretest\",\n \"test\",\n \"posttest\",\n \"prestop\",\n \"stop\",\n \"poststop\",\n ])\n const lifecycleNames = scriptNames.filter((name) => lifecycleScripts.has(name))\n const customNames = scriptNames.filter((name) => !lifecycleScripts.has(name))\n\n let stdout = `Lifecycle scripts included in ${packageJsonResult.pkgJson.name || \"\"}:\\n`\n for (const listedScriptName of lifecycleNames) {\n stdout += ` ${listedScriptName}\\n ${scripts[listedScriptName]}\\n`\n }\n\n if (customNames.length > 0) {\n stdout += \"\\navailable via `npm run-script`:\\n\"\n for (const listedScriptName of customNames) {\n stdout += ` ${listedScriptName}\\n ${scripts[listedScriptName]}\\n`\n }\n }\n\n return { stdout, stderr: \"\", exitCode: 0 }\n }\n\n const packageJsonResult = await this.readPackageJson(cwd)\n if (\"error\" in packageJsonResult) {\n return packageJsonResult.error\n }\n\n const { pkgJson } = packageJsonResult\n const scripts = pkgJson.scripts || {}\n const scriptCommand = scripts[scriptName]\n if (!scriptCommand) {\n const availableScripts = Object.keys(scripts)\n let stderr = `npm ERR! Missing script: \"${scriptName}\"\\n`\n\n if (availableScripts.length > 0) {\n stderr += \"\\nnpm ERR! Available scripts:\\n\"\n for (const availableScript of availableScripts) {\n stderr += `npm ERR! ${availableScript}\\n`\n stderr += `npm ERR! ${scripts[availableScript]}\\n`\n }\n }\n\n return { stdout: \"\", stderr, exitCode: 1 }\n }\n\n if (!ctx.exec) {\n return {\n stdout: \"\",\n stderr: \"npm ERR! Script execution not available in this context\\n\",\n exitCode: 1,\n }\n }\n\n await this.resolveAndRegisterBinCommands(scriptCommand, cwd)\n\n const preScriptCommand = scripts[`pre${scriptName}`]\n if (preScriptCommand) {\n await this.resolveAndRegisterBinCommands(preScriptCommand, cwd)\n }\n\n const postScriptCommand = scripts[`post${scriptName}`]\n if (postScriptCommand) {\n await this.resolveAndRegisterBinCommands(postScriptCommand, cwd)\n }\n\n const execCommand = ctx.exec\n\n const baseEnv = getCommandEnvironment(ctx)\n const npmEnv: Record<string, string> = {\n ...baseEnv,\n npm_lifecycle_event: scriptName,\n PATH: Array.from(new Set([\n normalizePath(path.join(cwd, \"node_modules/.bin\")),\n \"/node_modules/.bin\",\n `${GLOBAL_NODE_MODULES_ROOT}/.bin`,\n ...(baseEnv.PATH?.trim() || DEFAULT_PATH).split(\":\").filter(Boolean),\n ])).join(\":\"),\n }\n\n if (pkgJson.name) {\n npmEnv.npm_package_name = pkgJson.name\n }\n\n if (pkgJson.version) {\n npmEnv.npm_package_version = pkgJson.version\n }\n\n let stdout = \"\"\n let stderr = \"\"\n const label = `${pkgJson.name || \"\"}@${pkgJson.version || \"\"}`\n\n const runScript = async (name: string, command: string) => {\n stderr += `\\n> ${label} ${name}\\n> ${command}\\n\\n`\n const result = await execCommand(command, { cwd, env: npmEnv })\n stdout += result.stdout\n stderr += result.stderr\n return result\n }\n\n if (preScriptCommand) {\n const preResult = await runScript(`pre${scriptName}`, preScriptCommand)\n if (preResult.exitCode !== 0) {\n return { stdout, stderr, exitCode: preResult.exitCode }\n }\n }\n\n const mainResult = await runScript(scriptName, scriptCommand)\n if (mainResult.exitCode !== 0) {\n return { stdout, stderr, exitCode: mainResult.exitCode }\n }\n\n if (postScriptCommand) {\n const postResult = await runScript(`post${scriptName}`, postScriptCommand)\n if (postResult.exitCode !== 0) {\n return { stdout, stderr, exitCode: postResult.exitCode }\n }\n }\n\n return { stdout, stderr, exitCode: 0 }\n }\n\n async executeNpm(args: string[], ctx: CommandContext): Promise<ExecResult> {\n const cwd = normalizePath(ctx.cwd)\n\n await this.ensureInitialized()\n await this.flushPendingOperations()\n\n const subcommand = args[0]\n let result: ExecResult\n\n switch (subcommand) {\n case undefined:\n case \"help\":\n case \"--help\":\n result = { stdout: `${NPM_USAGE}\\n`, stderr: \"\", exitCode: 0 }\n break\n case \"-v\":\n case \"--version\":\n result = { stdout: `${ALMOSTNODE_NPM_VERSION}\\n`, stderr: \"\", exitCode: 0 }\n break\n case \"run\":\n case \"run-script\":\n result = await this.runNpmScript(args[1], cwd, ctx)\n break\n case \"start\":\n result = await this.runNpmScript(\"start\", cwd, ctx)\n break\n case \"test\":\n case \"t\":\n case \"tst\":\n result = await this.runNpmScript(\"test\", cwd, ctx)\n break\n case \"install\":\n case \"i\":\n case \"add\": {\n const isGlobal = args.includes(\"-g\") || args.includes(\"--global\")\n const packageSpecs = args.slice(1).filter((arg) => !arg.startsWith(\"-\"))\n let stdout = \"\"\n\n try {\n if (isGlobal) {\n if (packageSpecs.length === 0) {\n result = { stdout: \"\", stderr: \"npm ERR! npm install -g requires a package name\\n\", exitCode: 1 }\n break\n }\n\n await ensureEsbuildWasm()\n\n // Ensure the global node_modules directory exists\n this._vfs.mkdirSync(GLOBAL_NODE_MODULES_ROOT, { recursive: true })\n await ensureObservableDirectory(this.fs, GLOBAL_NODE_MODULES_ROOT)\n\n // Ensure a minimal package.json exists at the global prefix\n const globalPkgJsonPath = normalizePath(path.join(GLOBAL_NODE_MODULES_ROOT, \"..\", \"package.json\"))\n if (!this._vfs.existsSync(globalPkgJsonPath)) {\n const minimalPkg = JSON.stringify({ name: \"global\", version: \"0.0.0\", private: true }, null, 2)\n this._vfs.mkdirSync(path.dirname(globalPkgJsonPath), { recursive: true })\n this._vfs.writeFileSync(globalPkgJsonPath, minimalPkg)\n await this.withSuppressedObservableMirroring(async () => {\n await ensureObservableDirectory(this.fs, path.dirname(globalPkgJsonPath))\n await this.fs.writeFile(globalPkgJsonPath, minimalPkg)\n })\n }\n\n const globalCwd = normalizePath(path.join(GLOBAL_NODE_MODULES_ROOT, \"..\"))\n const packageManager = new PackageManager(this.vfs as unknown as VirtualFS, { cwd: globalCwd })\n\n for (const packageSpec of packageSpecs) {\n const installResult = await packageManager.install(packageSpec, {\n save: true,\n onProgress: (message) => {\n const line = `${message}\\n`\n stdout += line\n this.stdoutWriter?.(line)\n },\n })\n stdout += `added ${installResult.added.length} packages\\n`\n\n // Register bin commands from the installed global package\n const installedPkgName = packageSpec.replace(/@[^/]*$/, \"\") || packageSpec\n await this.registerGlobalBinCommands(installedPkgName)\n\n // Also try to register by checking what was actually installed\n for (const added of installResult.added) {\n const addedName = typeof added === \"string\" ? String(added).replace(/@[^/]*$/, \"\") : (added as { name?: string })?.name\n if (addedName && addedName !== installedPkgName) {\n await this.registerGlobalBinCommands(addedName)\n }\n }\n }\n\n // Patch lru-cache to avoid diagnostics_channel crash in browser\n this.patchLruCacheInNodeModules(GLOBAL_NODE_MODULES_ROOT)\n\n result = { stdout, stderr: \"\", exitCode: 0 }\n } else {\n const packageJsonResult = await this.readPackageJson(cwd)\n if (\"error\" in packageJsonResult) {\n result = packageJsonResult.error\n break\n }\n\n await ensureEsbuildWasm()\n\n const packageManager = new PackageManager(this.vfs as unknown as VirtualFS, { cwd })\n\n if (packageSpecs.length === 0) {\n const installResult = await packageManager.installFromPackageJson({\n onProgress: (message) => {\n const line = `${message}\\n`\n stdout += line\n this.stdoutWriter?.(line)\n },\n })\n stdout += `added ${installResult.added.length} packages\\n`\n } else {\n for (const packageSpec of packageSpecs) {\n const installResult = await packageManager.install(packageSpec, {\n save: true,\n onProgress: (message) => {\n const line = `${message}\\n`\n stdout += line\n this.stdoutWriter?.(line)\n },\n })\n stdout += `added ${installResult.added.length} packages\\n`\n }\n }\n\n // Patch lru-cache to avoid diagnostics_channel crash in browser\n const localNodeModules = normalizePath(path.join(cwd, \"node_modules\"))\n this.patchLruCacheInNodeModules(localNodeModules)\n\n result = { stdout, stderr: \"\", exitCode: 0 }\n }\n } catch (error) {\n result = {\n stdout,\n stderr: `npm ERR! ${error instanceof Error ? error.message : String(error)}\\n`,\n exitCode: 1,\n }\n }\n break\n }\n case \"ls\":\n case \"list\": {\n const packageManager = new PackageManager(this.vfs as unknown as VirtualFS, { cwd })\n const packages = Object.entries(packageManager.list())\n\n if (packages.length === 0) {\n result = { stdout: \"(empty)\\n\", stderr: \"\", exitCode: 0 }\n break\n }\n\n result = {\n stdout: `${cwd}\\n${packages.map(([name, version]) => `+-- ${name}@${version}`).join(\"\\n\")}\\n`,\n stderr: \"\",\n exitCode: 0,\n }\n break\n }\n default:\n result = {\n stdout: \"\",\n stderr: `npm ERR! Unknown command: \"${subcommand}\"\\n`,\n exitCode: 1,\n }\n break\n }\n\n await this.flushPendingOperations()\n return result\n }\n\n async executeNode(args: string[], ctx: CommandContext): Promise<ExecResult> {\n const cwd = normalizePath(ctx.cwd)\n const invocation:\n | { kind: \"version\" }\n | { kind: \"eval\"; code: string; argv: string[]; filename: string }\n | { kind: \"run-file\"; scriptPath: string; argv: string[] }\n | { kind: \"error\"; message: string } = (() => {\n if (args.length === 0) {\n return {\n kind: \"error\",\n message: \"REPL mode is not supported in just-bash. Use node -e <code> or node <file>.\",\n }\n }\n\n const [firstArg, ...restArgs] = args\n\n if (firstArg === \"-v\" || firstArg === \"--version\") {\n return { kind: \"version\" }\n }\n\n if (firstArg === \"-h\" || firstArg === \"--help\") {\n return {\n kind: \"error\",\n message: \"Supported node modes in just-bash: node <file>, node -e <code>, node -p <expression>, node --version.\",\n }\n }\n\n if (firstArg === \"-e\" || firstArg === \"--eval\") {\n const code = restArgs[0]?.trim() || \"\"\n if (!code) {\n return { kind: \"error\", message: \"node -e requires inline code\" }\n }\n\n return {\n kind: \"eval\",\n code,\n argv: [\"node\", ...restArgs.slice(1)],\n filename: `${ALMOSTNODE_INTERNAL_ROOT}/eval.js`,\n }\n }\n\n if (firstArg === \"-p\" || firstArg === \"--print\") {\n const expression = restArgs[0]?.trim() || \"\"\n if (!expression) {\n return { kind: \"error\", message: \"node -p requires an expression\" }\n }\n\n return {\n kind: \"eval\",\n code: [\n `const __monospace_print_result = ((${expression}));`,\n \"if (typeof __monospace_print_result !== 'undefined') {\",\n \" process.stdout.write(String(__monospace_print_result) + '\\\\n')\",\n \"}\",\n ].join(\"\\n\"),\n argv: [\"node\", ...restArgs.slice(1)],\n filename: `${ALMOSTNODE_INTERNAL_ROOT}/print.js`,\n }\n }\n\n if (firstArg.startsWith(\"-\")) {\n return {\n kind: \"error\",\n message: `Unsupported node flag in just-bash: ${firstArg}`,\n }\n }\n\n const scriptPath = path.isAbsolute(firstArg)\n ? normalizePath(firstArg)\n : normalizePath(path.resolve(cwd, firstArg))\n\n return {\n kind: \"run-file\",\n scriptPath,\n argv: [\"node\", scriptPath, ...restArgs],\n }\n })()\n\n if (invocation.kind === \"error\") {\n return {\n stdout: \"\",\n stderr: `${invocation.message}\\n`,\n exitCode: 1,\n }\n }\n\n if (invocation.kind === \"version\") {\n return {\n stdout: `${ALMOSTNODE_NODE_VERSION}\\n`,\n stderr: \"\",\n exitCode: 0,\n }\n }\n\n await this.ensureInitialized()\n\n await this.flushPendingOperations()\n\n if (invocation.kind === \"run-file\") {\n if (!(await this.fs.exists(invocation.scriptPath))) {\n return {\n stdout: \"\",\n stderr: `Cannot find module '${invocation.scriptPath}'\\n`,\n exitCode: 1,\n }\n }\n\n const packageRoot = this.getNodeModulesPackageRoot(invocation.scriptPath)\n if (packageRoot) {\n await this.hydrateObservablePackageIntoVirtualFs(packageRoot)\n await this.hydrateObservableProjectIntoVirtualFs(cwd)\n await this.hydrateObservableDependencyPackagesIntoVirtualFs(cwd)\n } else {\n await this.copyObservablePathIntoVirtualFs(invocation.scriptPath, { force: true })\n }\n }\n\n const stdoutChunks: string[] = []\n const stderrChunks: string[] = []\n const runtimeEnv: Record<string, string> = {\n ...getCommandEnvironment(ctx),\n PWD: cwd,\n }\n\n const runtime = new Runtime(this.vfs as unknown as VirtualFS, {\n cwd,\n env: runtimeEnv,\n onStdout: (chunk) => {\n appendChunk(stdoutChunks, chunk)\n this.stdoutWriter?.(chunk)\n },\n onStderr: (chunk) => appendChunk(stderrChunks, chunk),\n onConsole: (method, consoleArgs) => {\n const formatted = consoleArgs.map((value) => {\n if (typeof value === \"string\") {\n return value\n }\n\n try {\n return JSON.stringify(value)\n } catch {\n return String(value)\n }\n }).join(\" \")\n if (\n !formatted\n || formatted.startsWith(\"[process] cwd() called\")\n || formatted.startsWith(\"[process] chdir called:\")\n || formatted.startsWith(\"[process] chdir result:\")\n ) {\n return\n }\n\n const chunk = `${formatted}\\n`\n if (method === \"error\" || method === \"warn\" || method === \"trace\") {\n appendChunk(stderrChunks, chunk)\n return\n }\n\n appendChunk(stdoutChunks, chunk)\n this.stdoutWriter?.(chunk)\n },\n })\n\n const process = runtime.getProcess()\n\n // Enable TTY mode so TUI applications detect a terminal\n process.stdout.isTTY = true\n process.stderr.isTTY = true\n if (process.stdin) {\n process.stdin.isTTY = true\n }\n const stdoutAny = process.stdout as unknown as Record<string, unknown>\n stdoutAny.columns = this._terminalColumns\n stdoutAny.rows = this._terminalRows\n stdoutAny.getWindowSize = () => [this._terminalColumns, this._terminalRows]\n\n // Shim stdin.setRawMode so TUI apps don't crash; track calls as\n // an interactivity signal for the exit-detection heuristic below.\n let rawModeRequested = false\n if (process.stdin) {\n const originalSetRawMode = process.stdin.setRawMode\n process.stdin.setRawMode = (mode: boolean) => {\n rawModeRequested = rawModeRequested || mode\n if (typeof originalSetRawMode === \"function\") {\n return originalSetRawMode.call(process.stdin, mode)\n }\n return process.stdin\n }\n }\n\n // Forward stdin from the host terminal into process.stdin\n this._stdinHandler = process.stdin\n ? (data: string) => { process.stdin.emit(\"data\", data) }\n : null\n\n const originalExit = process.exit\n let exitCalled = false\n let exitCode = 0\n let syncExecution = true\n let resolveExit: ((code: number) => void) | null = null\n const exitPromise = new Promise<number>((resolve) => {\n resolveExit = resolve\n })\n const previousConsole = {\n log: console.log,\n info: console.info,\n warn: console.warn,\n error: console.error,\n debug: console.debug,\n trace: console.trace,\n dir: console.dir,\n table: console.table,\n }\n\n console.log = () => undefined\n console.info = () => undefined\n console.warn = () => undefined\n console.error = () => undefined\n console.debug = () => undefined\n console.trace = () => undefined\n console.dir = () => undefined\n console.table = () => undefined\n\n process.exit = ((code = 0) => {\n if (!exitCalled) {\n exitCalled = true\n exitCode = code\n resolveExit?.(code)\n }\n\n if (syncExecution) {\n throw new Error(`Process exited with code ${code}`)\n }\n\n return undefined as never\n }) as typeof process.exit\n\n process.argv = invocation.argv\n process.argv0 = \"node\"\n process.execPath = NODE_EXEC_PATH\n\n // Shim process.pid and process.kill so TUI apps (e.g. pi-coding-agent)\n // that call process.kill(process.pid, signal) don't crash\n if (process.pid == null) {\n process.pid = 1\n }\n if (typeof (process as any).kill !== \"function\") {\n (process as any).kill = () => { /* no-op in browser */ }\n }\n\n const rejectionHandler = (event: PromiseRejectionEvent) => {\n const reason = event.reason\n if (reason instanceof Error && reason.message.startsWith(\"Process exited with code\")) {\n event.preventDefault()\n }\n }\n\n const canListenForUnhandledRejection = typeof globalThis.addEventListener === \"function\"\n && typeof globalThis.removeEventListener === \"function\"\n\n if (canListenForUnhandledRejection) {\n globalThis.addEventListener(\"unhandledrejection\", rejectionHandler)\n }\n\n try {\n if (invocation.kind === \"eval\") {\n runtime.execute(invocation.code, invocation.filename)\n } else {\n runtime.runFile(invocation.scriptPath)\n }\n\n syncExecution = false\n\n // If the process registered stdin listeners (interactive / TUI), keep\n // it alive until process.exit() is called instead of exiting after 0 ms.\n // Yield a tick first so async main() functions (like pi-coding-agent)\n // have a chance to register listeners / call setRawMode before we check.\n await new Promise<void>((resolve) => { setTimeout(resolve, 0) })\n\n const hasStdinListeners = process.stdin\n && (process.stdin.listenerCount(\"data\") > 0 || process.stdin.listenerCount(\"keypress\") > 0)\n const isInteractive = hasStdinListeners || rawModeRequested\n const asyncExitCode = isInteractive\n ? await exitPromise\n : await Promise.race<number | null>([\n exitPromise,\n new Promise<null>((resolve) => {\n setTimeout(() => resolve(null), 0)\n }),\n ])\n\n await this.flushPendingOperations()\n\n if (exitCalled || asyncExitCode !== null) {\n return {\n stdout: stdoutChunks.join(\"\"),\n stderr: stderrChunks.join(\"\"),\n exitCode: asyncExitCode ?? exitCode,\n }\n }\n\n return {\n stdout: stdoutChunks.join(\"\"),\n stderr: stderrChunks.join(\"\"),\n exitCode: 0,\n }\n } catch (error) {\n syncExecution = false\n await this.flushPendingOperations()\n\n if (error instanceof Error) {\n const match = /Process exited with code (\\d+)/.exec(error.message)\n if (match) {\n return {\n stdout: stdoutChunks.join(\"\"),\n stderr: stderrChunks.join(\"\"),\n exitCode: Number.parseInt(match[1] ?? \"\", 10),\n }\n }\n }\n\n appendChunk(stderrChunks, `${error instanceof Error ? (error.stack || error.message) : String(error)}\\n`)\n return {\n stdout: stdoutChunks.join(\"\"),\n stderr: stderrChunks.join(\"\"),\n exitCode: 1,\n }\n } finally {\n this._stdinHandler = null\n if (canListenForUnhandledRejection) {\n globalThis.removeEventListener(\"unhandledrejection\", rejectionHandler)\n }\n process.exit = originalExit\n console.log = previousConsole.log\n console.info = previousConsole.info\n console.warn = previousConsole.warn\n console.error = previousConsole.error\n console.debug = previousConsole.debug\n console.trace = previousConsole.trace\n console.dir = previousConsole.dir\n console.table = previousConsole.table\n }\n }\n\n async executeVite(args: string[], ctx: CommandContext): Promise<ExecResult> {\n const cwd = normalizePath(ctx.cwd)\n\n await this.ensureInitialized()\n await this.flushPendingOperations()\n\n const cwdPrefix = cwd.endsWith(\"/\") ? cwd : `${cwd}/`\n const allLazyPaths = this.fs.getAllPaths()\n .map((p) => normalizePath(p))\n .filter((p) => (p === cwd || p.startsWith(cwdPrefix)) && !isInternalAlmostNodePath(p) && this.fs.isPathLazy(p))\n\n // Eagerly hydrate the files Vite is likely to need immediately, but skip\n // declaration files, source maps, docs, and similar node_modules artifacts\n // that create unnecessary batch traffic during startup.\n const pathsToLoad = allLazyPaths.filter((targetPath) => {\n if (!targetPath.startsWith(`${cwdPrefix}node_modules/`)) {\n return true\n }\n\n const baseName = path.basename(targetPath).toLowerCase()\n if (baseName === \"package.json\") {\n return true\n }\n\n if (\n baseName.endsWith(\".d.ts\")\n || baseName.endsWith(\".d.mts\")\n || baseName.endsWith(\".d.cts\")\n || baseName.endsWith(\".map\")\n || baseName === \"readme\"\n || baseName.startsWith(\"readme.\")\n || baseName === \"license\"\n || baseName.startsWith(\"license.\")\n || baseName === \"changelog\"\n || baseName.startsWith(\"changelog.\")\n ) {\n return false\n }\n\n return /\\.(?:js|mjs|cjs|jsx|ts|tsx|json|css|scss|sass|less|wasm|svg)$/.test(baseName)\n })\n\n if (pathsToLoad.length > 0 && this.batchFileLoader) {\n const contents = await this.batchFileLoader(pathsToLoad)\n await this.fs.suppressObservability(async () => {\n for (const [filePath, content] of contents) {\n this.fs.writeFileSync(filePath, content)\n }\n })\n this._vfs.withoutMirror(() => {\n for (const [filePath, content] of contents) {\n this._vfs.mkdirSync(path.dirname(filePath), { recursive: true })\n this._vfs.writeFileSync(filePath, content)\n }\n })\n } else {\n for (const lazyPath of pathsToLoad) {\n await this.copyObservablePathIntoVirtualFs(lazyPath, { force: true })\n }\n }\n\n let port = 5173\n for (let i = 0; i < args.length; i++) {\n if (args[i] === \"--port\" && args[i + 1]) {\n const parsed = Number.parseInt(args[i + 1], 10)\n if (!Number.isNaN(parsed) && parsed > 0) {\n port = parsed\n }\n }\n }\n\n this.stopViteServer()\n\n const bridge = await getServerBridge()\n this.serverBridge = bridge\n\n await ensureEsbuildWasm()\n\n this.viteServer = new ViteDevServer(this.vfs as unknown as VirtualFS, { port, root: cwd })\n this.viteServer.start()\n\n await bridge.initServiceWorker()\n const virtualPrefix = `/__virtual__/${port}`\n bridge.registerServer({\n get listening() { return true },\n address: () => ({ port, address: \"127.0.0.1\", family: \"IPv4\" }),\n handleRequest: async (method, url, headers, body) => {\n let response = await this.viteServer!.handleRequest(method, url, headers, typeof body === \"string\" ? undefined : body)\n\n // almostnode's generic static file path goes through DevServer.serveFile(),\n // which resolves an already-resolved path a second time and can 404 files that\n // do exist in the session VFS. Fall back to serving the file directly when the\n // request path resolves to an existing workspace file.\n let resolvedFilePath = \"\"\n if (response.statusCode === 404 && response.body) {\n const BufferCtor = response.body.constructor as unknown as {\n from(input: string | Uint8Array): typeof response.body\n }\n const fallbackResponse = await this.serveExistingVirtualStaticFile(cwd, url, BufferCtor)\n if (fallbackResponse) {\n resolvedFilePath = fallbackResponse.resolvedPath.replace(cwd, \"\")\n response = fallbackResponse\n }\n }\n\n // Rewrite absolute paths in HTML responses so that resources\n // like /src/main.tsx resolve to /__virtual__/<port>/src/main.tsx.\n // Without this, the browser loads them from the Next.js origin\n // and the service worker's referer-based routing can't detect\n // they belong to the virtual server.\n const contentType = response.headers[\"Content-Type\"] || response.headers[\"content-type\"] || \"\"\n if (contentType.includes(\"text/html\") && response.body) {\n const rawHtml = response.body.toString(\"utf8\")\n const html = this.transformTextWithCache(\n `html:${virtualPrefix}:${url}`,\n rawHtml,\n (input) => input\n .replace(/<script\\s+type\\s*=\\s*[\"']importmap[\"'][^>]*>[\\s\\S]*?<\\/script>/gi, \"\")\n .replace(/(<script\\b[^>]*\\bsrc\\s*=\\s*[\"'])\\/((?!\\/)[^\"']*[\"'])/gi, `$1${virtualPrefix}/$2`)\n .replace(/(<link\\b[^>]*\\bhref\\s*=\\s*[\"'])\\/((?!\\/)[^\"']*[\"'])/gi, `$1${virtualPrefix}/$2`),\n )\n\n const BufferCtor = response.body.constructor as unknown as { from(s: string): typeof response.body }\n const newBody = BufferCtor.from(html)\n return {\n ...response,\n body: newBody,\n headers: {\n ...response.headers,\n \"Content-Length\": String(newBody.length),\n },\n }\n }\n\n // Rewrite bare import specifiers in JS responses so the browser\n // can resolve them to /__virtual__/<port>/node_modules/... paths\n // served by ViteDevServer through the service worker.\n // Also wrap CJS modules in an ESM shim so they can be imported.\n if (contentType.includes(\"javascript\") && response.body) {\n const requestPath = resolvedFilePath || getRequestPathname(url)\n const rawJs = response.body.toString(\"utf8\")\n const js = this.transformTextWithCache(\n `js:${virtualPrefix}:${requestPath}`,\n rawJs,\n (input) => {\n let transformed = this.rewriteBareImports(input, cwd, virtualPrefix)\n transformed = wrapCjsAsEsm(transformed, virtualPrefix, requestPath)\n if (/\\bprocess\\.env\\b/.test(transformed) && !/\\bvar\\s+process\\b/.test(transformed)) {\n transformed = `var process = { env: { NODE_ENV: \"production\" } };\\n${transformed}`\n }\n return transformed\n },\n )\n const BufferCtor = response.body.constructor as unknown as { from(s: string): typeof response.body }\n const newBody = BufferCtor.from(js)\n return {\n ...response,\n body: newBody,\n headers: {\n ...response.headers,\n \"Content-Length\": String(newBody.length),\n },\n }\n }\n\n return response\n },\n }, port)\n\n const serverUrl = bridge.getServerUrl(port)\n this.vitePort = port\n this.vitePreviewUrl = `${serverUrl}/`\n this.vitePreviewListener?.(this.vitePreviewUrl)\n\n return {\n stdout: [\n \"\",\n \" VITE ready\",\n \"\",\n ` ➜ Local: ${this.vitePreviewUrl}`,\n \"\",\n ].join(\"\\n\"),\n stderr: \"\",\n exitCode: 0,\n }\n }\n}","import { defineCommand } from \"just-bash/browser\"\r\nimport { AlmostNodeSession } from \"./almostnode-session\"\r\nimport {\r\n attachBrowserBashSessionRuntimeAdapter,\r\n createBrowserBashSession,\r\n type BrowserBashSession,\r\n} from \"./browser-bash-session\"\r\nimport { getServerBridge, resetServerBridge, type ServerBridge } from \"./server-bridge\"\r\n\r\nconst enabledNodeSessions = new WeakSet<BrowserBashSession>()\r\n\r\nexport type NodeBrowserBashSessionOptions = {\r\n rootPath?: string\r\n env?: Record<string, string>\r\n fsOptions?: import(\"./observable-in-memory-fs\").ObservableInMemoryFsOptions\r\n python?: boolean\r\n customCommands?: import(\"just-bash/browser\").CustomCommand[]\r\n}\r\n\r\nexport async function enableNode(session: BrowserBashSession): Promise<BrowserBashSession> {\r\n if (enabledNodeSessions.has(session)) {\r\n return session\r\n }\r\n\r\n const almostNodeSession = new AlmostNodeSession(session.fs)\r\n almostNodeSession.setBinCommandRegistrar((name, handler) => {\r\n session.bash.registerCommand(defineCommand(name, handler))\r\n })\r\n\r\n attachBrowserBashSessionRuntimeAdapter(session, {\r\n setStdoutWriter: (writer) => almostNodeSession.setStdoutWriter(writer),\r\n writeStdin: (data) => almostNodeSession.writeStdin(data),\r\n setTerminalSize: (columns, rows) => almostNodeSession.setTerminalSize(columns, rows),\r\n dispose: () => almostNodeSession.dispose(),\r\n })\r\n\r\n session.bash.registerCommand(\r\n defineCommand(\"node\", async (args, ctx) => almostNodeSession.executeNode(args, ctx)),\r\n )\r\n session.bash.registerCommand(\r\n defineCommand(\"npm\", async (args, ctx) => almostNodeSession.executeNpm(args, ctx)),\r\n )\r\n\r\n enabledNodeSessions.add(session)\r\n return session\r\n}\r\n\r\nexport async function createNodeBrowserBashSession(\r\n options: NodeBrowserBashSessionOptions = {},\r\n): Promise<BrowserBashSession> {\r\n const session = createBrowserBashSession(options)\r\n await enableNode(session)\r\n return session\r\n}\r\n\r\nexport { getServerBridge, resetServerBridge, type ServerBridge }"],"mappings":"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,IAAI,IAAI,GAAG,GAAG,KAAK,IAAI,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,MAAM,GAAG,GAAG,IAAI,OAAO,IAAI,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,IAAI,GAAG,IAAI,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,KAAK,GAAG,MAAM,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,MAAM,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,KAAK,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,MAAM,GAAG,QAAQ,GAAG;AAGlrC,IAAI,6BAA6B,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,IAAI,KAAK,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,KAAK,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,KAAK,GAAG,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,MAAM,IAAI,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,KAAK,MAAM,IAAI,MAAM,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,KAAK,IAAI,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,MAAM,IAAI,IAAI,IAAI,KAAK,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,KAAK,MAAM,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,MAAM,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,MAAM,IAAI,GAAG,GAAG,KAAK,IAAI,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI,GAAG,GAAG,KAAK,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,KAAK,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","names":["code","vfs","data","current","options","filename","offset","data","vfs","constants","promises","resolve","options","offset","resolvedPath","n","data","options","currentDir","code","process","URL","resolve","url","parse","options","TextDecoder","TextEncoder","format","match","options","type","entries","fn","code","resolve","constants","options","_options","constants","resolve","hostname","options","Buffer","constants","data","_decoder","vfs","options","_options","data","vfs","resolvedPath","resolve","code","r","n","PackageManager","version","options","vfs","options","filename","Server","CloseEvent","type","MessageEvent","url","channel","data","isBrowser","code","options","request","Server","constants","watch","setVFS","globalVFS","vfs","options","type","filename","require","performance","options","BroadcastChannel","filename","options","BroadcastChannel","setVFS","version","vfs","resolvedPath","globalVFS","setVFS","url","options","code","build","relative","_options","version","watch","code","TokenType","options","isArray","Position","n","SourceLocation","offset","Parser","parse","ref","match","type","DestructuringErrors","context","close","TokContext","types","Scope","Node","BranchID","RegExpValidationState","s","current","Token","e","version","rollup","options","r","watch","options","parse","watch","promises","_options","options","promises","resolve","Server","createServer","_options","Server","createServer","connect","constants","createServer","_options","createServer","connect","constants","Worker","fork","Worker","fork","Module","code","_options","fn","context","console","console","_options","fn","fn","transform","fn","context","options","fn","e","n","r","o","f","s","t","i","e","r","t","o","n","code","parse","s","filename","match","code","filename","transformEsmToCjsAst","parse","n","dirname","moduleRequire","fn","_options","builtinModules","options","data","resolve","createRequire","searchDir","resolvedPath","resolved","vfs","setVFS","t","e","require","consoleWrapper","process","vfs","options","vfs","options","url","filename","e","buffer","code","match","code","match","s","n","dynamicImport","vfs","data","options","transform","m","offset","resolvedPath","packageJsonResult","scripts","stdout","stderr","version","process","resolve","url","data","options"]}
|