@absolutejs/absolute 0.19.0-beta.805 → 0.19.0-beta.807

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.
Files changed (50) hide show
  1. package/dist/angular/index.js +5 -5
  2. package/dist/angular/server.js +5 -5
  3. package/dist/build.js +4 -4
  4. package/dist/{chunk-gxrsf71e.js → chunk-1rfh7hw9.js} +29 -15
  5. package/dist/chunk-1rfh7hw9.js.map +11 -0
  6. package/dist/{chunk-f8k0tb5z.js → chunk-1x4fxm57.js} +5 -5
  7. package/dist/{chunk-n5a5nxnt.js → chunk-3rea1gam.js} +20 -14
  8. package/dist/chunk-3rea1gam.js.map +28 -0
  9. package/dist/{chunk-pevt15h0.js → chunk-629x0yh4.js} +5 -5
  10. package/dist/{chunk-a0x4bf8d.js → chunk-92fsjfpp.js} +2 -14
  11. package/dist/{chunk-a0x4bf8d.js.map → chunk-92fsjfpp.js.map} +3 -3
  12. package/dist/{chunk-z6c8qcmw.js → chunk-9j59emg3.js} +2 -2
  13. package/dist/{chunk-r0w678ve.js → chunk-bgb8k1qs.js} +2 -2
  14. package/dist/{chunk-by7t1d3r.js → chunk-cm0g4q6w.js} +2 -2
  15. package/dist/{chunk-hf5fjykx.js → chunk-jpkjdgsk.js} +13 -53
  16. package/dist/chunk-jpkjdgsk.js.map +11 -0
  17. package/dist/{chunk-8zz4g25g.js → chunk-kwgh8rmg.js} +14 -17
  18. package/dist/chunk-kwgh8rmg.js.map +14 -0
  19. package/dist/{chunk-0r32762k.js → chunk-m97ze5hz.js} +3 -3
  20. package/dist/{chunk-0r32762k.js.map → chunk-m97ze5hz.js.map} +1 -1
  21. package/dist/{chunk-ccz4x8vr.js → chunk-p5zgj77m.js} +3 -3
  22. package/dist/chunk-pnscgw95.js +90 -0
  23. package/dist/chunk-pnscgw95.js.map +10 -0
  24. package/dist/{chunk-0fsxp5gc.js → chunk-r6e8pytx.js} +2 -2
  25. package/dist/client/index.js +4 -4
  26. package/dist/index.js +5 -6
  27. package/dist/index.js.map +2 -2
  28. package/dist/islands/index.js +1 -1
  29. package/dist/react/index.js +1 -1
  30. package/dist/src/angular/ssrRender.d.ts +1 -3
  31. package/dist/src/build/buildAngularVendor.d.ts +2 -2
  32. package/dist/src/index.d.ts +0 -1
  33. package/dist/svelte/index.js +1 -1
  34. package/dist/types/angular.d.ts +0 -6
  35. package/dist/vue/index.js +1 -1
  36. package/package.json +1 -1
  37. package/dist/chunk-8zz4g25g.js.map +0 -14
  38. package/dist/chunk-gxrsf71e.js.map +0 -11
  39. package/dist/chunk-hf5fjykx.js.map +0 -11
  40. package/dist/chunk-n5a5nxnt.js.map +0 -28
  41. package/dist/chunk-r8dzkm4s.js +0 -194
  42. package/dist/chunk-r8dzkm4s.js.map +0 -11
  43. package/dist/src/angular/injectorPatch.d.ts +0 -1
  44. /package/dist/{chunk-f8k0tb5z.js.map → chunk-1x4fxm57.js.map} +0 -0
  45. /package/dist/{chunk-pevt15h0.js.map → chunk-629x0yh4.js.map} +0 -0
  46. /package/dist/{chunk-z6c8qcmw.js.map → chunk-9j59emg3.js.map} +0 -0
  47. /package/dist/{chunk-r0w678ve.js.map → chunk-bgb8k1qs.js.map} +0 -0
  48. /package/dist/{chunk-by7t1d3r.js.map → chunk-cm0g4q6w.js.map} +0 -0
  49. /package/dist/{chunk-ccz4x8vr.js.map → chunk-p5zgj77m.js.map} +0 -0
  50. /package/dist/{chunk-0fsxp5gc.js.map → chunk-r6e8pytx.js.map} +0 -0
@@ -1,28 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/core/devBuild.ts", "../src/core/build.ts", "../src/build/wrapHTMLScript.ts", "../src/build/htmlScriptHMRPlugin.ts", "../src/build/outputLogs.ts", "../src/build/scanConventions.ts", "../src/build/scanCssEntryPoints.ts", "../src/dev/buildHMRClient.ts", "../src/utils/cleanStaleOutputs.ts", "../src/utils/cleanup.ts", "../src/dev/dependencyGraph.ts", "../src/dev/configResolver.ts", "../src/dev/clientManager.ts", "../src/dev/fileWatcher.ts", "../src/dev/pathUtils.ts", "../src/dev/rebuildTrigger.ts", "../src/dev/fileHashTracker.ts", "../src/dev/moduleMapper.ts", "../src/dev/reactComponentClassifier.ts"],
4
- "sourcesContent": [
5
- "import { readdir } from 'node:fs/promises';\nimport { statSync } from 'node:fs';\nimport { resolve } from 'node:path';\nimport { build } from './build';\nimport {\n\tgetAngularServerVendorPaths,\n\tgetAngularVendorPaths,\n\tgetDevVendorPaths,\n\tgetSvelteVendorPaths,\n\tgetVueVendorPaths,\n\tsetDevVendorPaths,\n\tsetAngularServerVendorPaths,\n\tsetAngularVendorPaths,\n\tsetSvelteVendorPaths,\n\tsetVueVendorPaths\n} from './devVendorPaths';\nimport type { BuildConfig } from '../../types/build';\nimport {\n\tbuildReactVendor,\n\tcomputeVendorPaths\n} from '../build/buildReactVendor';\nimport {\n\tbuildAngularServerVendor,\n\tbuildAngularVendor,\n\tcomputeAngularServerVendorPaths,\n\tcomputeAngularServerVendorPathsAsync,\n\tcomputeAngularVendorPaths,\n\tcomputeAngularVendorPathsAsync\n} from '../build/buildAngularVendor';\nimport {\n\tbuildSvelteVendor,\n\tcomputeSvelteVendorPaths\n} from '../build/buildSvelteVendor';\nimport { buildVueVendor, computeVueVendorPaths } from '../build/buildVueVendor';\nimport { createHMRState } from '../dev/clientManager';\nimport { resolveBuildPaths } from '../dev/configResolver';\nimport { buildInitialDependencyGraph } from '../dev/dependencyGraph';\nimport { addFileWatchers, startFileWatching } from '../dev/fileWatcher';\nimport { getWatchPaths } from '../dev/pathUtils';\nimport { cleanStaleAssets, populateAssetStore } from '../dev/assetStore';\nimport { queueFileChange } from '../dev/rebuildTrigger';\nimport { logServerReload } from '../utils/logger';\nimport { logStartupTimingBlock } from '../utils/startupTimings';\n\nconst FRAMEWORK_DIR_KEYS = [\n\t'reactDirectory',\n\t'svelteDirectory',\n\t'vueDirectory',\n\t'htmlDirectory',\n\t'htmxDirectory',\n\t'angularDirectory'\n] as const;\n\nconst collectDepVendorSourceDirs = (config: BuildConfig) => {\n\tconst configuredDirs = [\n\t\tconfig.reactDirectory,\n\t\tconfig.svelteDirectory,\n\t\tconfig.vueDirectory,\n\t\tconfig.angularDirectory,\n\t\tconfig.htmlDirectory,\n\t\tconfig.htmxDirectory\n\t].filter((dir): dir is string => Boolean(dir));\n\n\t// Only scan the configured framework directories themselves. Including the\n\t// parent dir would sweep in sibling backend code (e.g. src/backend when\n\t// angularDirectory is src/frontend), and the dep vendor build targets the\n\t// browser — bundling Node-only deps like postgres/firebase-admin from there\n\t// fails with \"Browser build cannot import Node.js builtin: tls/http2/...\".\n\treturn Array.from(new Set(configuredDirs));\n};\n\n/** Parse directory keys from config source text */\nconst parseDirectoryConfig = (source: string) => {\n\tconst config: Partial<BuildConfig> = {};\n\tconst dirPattern = /(\\w+Directory)\\s*:\\s*['\"]([^'\"]+)['\"]/g;\n\tlet match;\n\twhile ((match = dirPattern.exec(source)) !== null) {\n\t\tconst [, key, value] = match;\n\t\tif (key && value) Object.assign(config, { [key]: value });\n\t}\n\n\treturn Object.keys(config).length > 0 ? config : null;\n};\n\n/** Re-read absolute.config.ts bypassing Bun's module cache by parsing the file directly */\nconst reloadConfig = async () => {\n\ttry {\n\t\tconst configPath = resolve(\n\t\t\tprocess.env.ABSOLUTE_CONFIG ?? 'absolute.config.ts'\n\t\t);\n\t\tconst source = await Bun.file(configPath).text();\n\n\t\treturn parseDirectoryConfig(source);\n\t} catch {\n\t\treturn null;\n\t}\n};\n\n/** Detect config changes on HMR reload and update watchers for new framework directories */\nconst detectConfigChanges = async (\n\tcached: NonNullable<typeof globalThis.__hmrDevResult>\n) => {\n\tconst newConfig = await reloadConfig();\n\tif (!newConfig) return;\n\n\tconst state = cached.hmrState;\n\tconst oldConfig = state.config;\n\n\t// Check if any framework directory changed\n\tconst hasChanges = FRAMEWORK_DIR_KEYS.some(\n\t\t(key) => newConfig[key] !== oldConfig[key]\n\t);\n\tif (!hasChanges) return;\n\n\t// Snapshot old watch paths before updating config\n\tconst oldWatchPaths = new Set(\n\t\tgetWatchPaths(oldConfig, state.resolvedPaths)\n\t);\n\n\t// Update config in-place so all references stay valid\n\tfor (const key of FRAMEWORK_DIR_KEYS) {\n\t\tstate.config[key] = newConfig[key];\n\t}\n\tstate.resolvedPaths = resolveBuildPaths(state.config);\n\n\t// Set up vendor paths for newly added frameworks\n\tif (!oldConfig.reactDirectory && Boolean(newConfig.reactDirectory)) {\n\t\tsetDevVendorPaths(computeVendorPaths());\n\t}\n\tif (!oldConfig.angularDirectory && Boolean(newConfig.angularDirectory)) {\n\t\tsetAngularVendorPaths(computeAngularVendorPaths());\n\t}\n\tif (!oldConfig.svelteDirectory && Boolean(newConfig.svelteDirectory)) {\n\t\tsetSvelteVendorPaths(computeSvelteVendorPaths());\n\t}\n\tif (!oldConfig.vueDirectory && Boolean(newConfig.vueDirectory)) {\n\t\tsetVueVendorPaths(computeVueVendorPaths());\n\t}\n\n\t// Compute new watch paths and start watchers for additions\n\tconst newWatchPaths = getWatchPaths(state.config, state.resolvedPaths);\n\tconst addedPaths = newWatchPaths.filter((path) => !oldWatchPaths.has(path));\n\n\tif (addedPaths.length > 0) {\n\t\tbuildInitialDependencyGraph(state.dependencyGraph, addedPaths);\n\t\taddFileWatchers(state, addedPaths, (filePath: string) => {\n\t\t\tqueueFileChange(state, filePath, state.config, (newBuildResult) => {\n\t\t\t\tObject.assign(cached.manifest, newBuildResult.manifest);\n\t\t\t\tstate.manifest = cached.manifest;\n\t\t\t});\n\t\t});\n\t}\n};\n\n/** Remove keys from target that don't exist in source */\nconst removeStaleKeys = (\n\ttarget: Record<string, string>,\n\tsource: Record<string, string>\n) => {\n\tfor (const key of Object.keys(target)) {\n\t\tif (!(key in source)) delete target[key];\n\t}\n};\n\nconst REBUILD_POLL_MS = 10;\n\n/** Wait for any in-flight file-watcher build to finish */\nconst waitForRebuild = async (state: { isRebuilding: boolean }) => {\n\tif (!state.isRebuilding) {\n\t\treturn;\n\t}\n\n\tawait Bun.sleep(REBUILD_POLL_MS);\n\tawait waitForRebuild(state);\n};\n\n/** Rebuild manifest and update asset store — called on every server.ts HMR reload.\n * Sets isRebuilding to prevent the file-watcher fast path from running concurrently,\n * which would delete the indexes directory mid-build and cause ModuleNotFound errors. */\nconst rebuildManifest = async (\n\tcached: NonNullable<typeof globalThis.__hmrDevResult>\n) => {\n\tconst state = cached.hmrState;\n\n\t// Without this, a concurrent fast-path build (React, Vue, Svelte) can\n\t// delete intermediate directories (indexes/, server/) while this full\n\t// build is trying to read from them, causing ModuleNotFound errors.\n\tawait waitForRebuild(state);\n\n\tstate.isRebuilding = true;\n\n\ttry {\n\t\tconst buildResult = await build({\n\t\t\t...state.config,\n\t\t\tmode: 'development',\n\t\t\toptions: {\n\t\t\t\t...state.config.options,\n\t\t\t\tinjectHMR: true,\n\t\t\t\tthrowOnError: true\n\t\t\t}\n\t\t});\n\t\tif (!buildResult?.manifest) return;\n\t\tconst newManifest = buildResult.manifest;\n\n\t\t// Replace manifest contents instead of just merging.\n\t\t// Object.assign only adds/updates keys — it never removes them,\n\t\t// so deleted pages would leave dead keys in the manifest forever.\n\t\tremoveStaleKeys(cached.manifest, newManifest);\n\t\tObject.assign(cached.manifest, newManifest);\n\t\tstate.manifest = cached.manifest;\n\n\t\tawait populateAssetStore(\n\t\t\tstate.assetStore,\n\t\t\tcached.manifest,\n\t\t\tstate.resolvedPaths.buildDir\n\t\t);\n\t\tawait cleanStaleAssets(\n\t\t\tstate.assetStore,\n\t\t\tcached.manifest,\n\t\t\tstate.resolvedPaths.buildDir\n\t\t);\n\t} catch {\n\t\t// Build errors are logged by build() itself\n\t} finally {\n\t\tstate.rebuildCount++;\n\t\tstate.isRebuilding = false;\n\t\t// Clear any file-change queue entries that accumulated during the full build —\n\t\t// the full build already picked up those files, so they don't need rebuilding.\n\t\tstate.fileChangeQueue.clear();\n\t}\n};\n\nconst handleCachedReload = async () => {\n\tconst serverMtime = statSync(resolve(Bun.main)).mtimeMs;\n\tconst lastMtime = globalThis.__hmrServerMtime;\n\tglobalThis.__hmrServerMtime = serverMtime;\n\n\t/* Restore vendor paths — module-level state is reset on --hot reload\n\t but devBuild() returns early from cache, skipping setDevVendorPaths.\n\t Without this, HMR rebuilds bundle React inline instead of externalizing. */\n\tconst cached = globalThis.__hmrDevResult;\n\tif (cached?.hmrState.config.reactDirectory) {\n\t\tsetDevVendorPaths(computeVendorPaths());\n\t}\n\tif (cached?.hmrState.config.angularDirectory) {\n\t\t// Use cached transitive specifiers if available — reverting to defaults\n\t\t// would drop subpaths discovered through deps (e.g. @angular/core/rxjs-interop\n\t\t// imported by @angular/fire) and leave them as bare specifiers in rebuilds.\n\t\tsetAngularVendorPaths(\n\t\t\tcomputeAngularVendorPaths(globalThis.__angularVendorSpecifiers)\n\t\t);\n\t}\n\tif (cached?.hmrState.config.svelteDirectory) {\n\t\tsetSvelteVendorPaths(computeSvelteVendorPaths());\n\t}\n\tif (cached?.hmrState.config.vueDirectory) {\n\t\tsetVueVendorPaths(computeVueVendorPaths());\n\t}\n\n\tif (serverMtime === lastMtime) {\n\t\tglobalThis.__hmrSkipServerRestart = true;\n\n\t\treturn;\n\t}\n\n\tlogServerReload();\n\tif (!cached) return;\n\n\t// Detect config changes (new framework directories) and update watchers\n\tawait detectConfigChanges(cached);\n\t// Always rebuild when server.ts changes — new pages/routes may have been added\n\t// even if config directories haven't changed\n\tawait rebuildManifest(cached);\n};\n\nconst tryReadPackageVersion = async (path: string) => {\n\tconst pkg = await Bun.file(path)\n\t\t.json()\n\t\t.catch(() => null);\n\tif (!pkg || pkg.name !== '@absolutejs/absolute') {\n\t\treturn false;\n\t}\n\tglobalThis.__absoluteVersion = pkg.version;\n\n\treturn true;\n};\n\nconst resolveAbsoluteVersion = async () => {\n\tconst candidates = [\n\t\tresolve(import.meta.dir, '..', '..', 'package.json'),\n\t\tresolve(import.meta.dir, '..', 'package.json')\n\t];\n\tconst [candidate, ...remaining] = candidates;\n\tif (!candidate) {\n\t\treturn;\n\t}\n\n\tconst found = await tryReadPackageVersion(candidate);\n\tif (found) {\n\t\treturn;\n\t}\n\n\tawait resolveAbsoluteVersionFromCandidates(remaining);\n};\n\nconst resolveAbsoluteVersionFromCandidates = async (candidates: string[]) => {\n\tconst [candidate, ...remaining] = candidates;\n\tif (!candidate) {\n\t\treturn;\n\t}\n\n\tconst found = await tryReadPackageVersion(candidate);\n\tif (found) {\n\t\treturn;\n\t}\n\n\tawait resolveAbsoluteVersionFromCandidates(remaining);\n};\n\nconst loadVendorFiles = async (\n\tassetStore: Map<string, Uint8Array>,\n\tvendorDir: string,\n\tframework: string\n) => {\n\tconst emptyStringArray: string[] = [];\n\tconst entries = await readdir(vendorDir).catch(() => emptyStringArray);\n\tawait Promise.all(\n\t\tentries\n\t\t\t.filter((entry) => entry.endsWith('.js'))\n\t\t\t.map(async (entry) => {\n\t\t\t\tconst webPath = `/${framework}/vendor/${entry}`;\n\t\t\t\tconst bytes = await Bun.file(resolve(vendorDir, entry)).bytes();\n\t\t\t\tassetStore.set(webPath, bytes);\n\t\t\t})\n\t);\n};\n\n/* Development mode function - replaces build() during development\n Returns DevResult with manifest, buildDir, asset(), and hmrState for use with the hmr() plugin */\nexport const devBuild = async (config: BuildConfig) => {\n\t// On Bun --hot reload, return cached result instead of rebuilding\n\tconst cached = globalThis.__hmrDevResult;\n\tif (cached) {\n\t\tawait handleCachedReload();\n\n\t\treturn cached;\n\t}\n\n\tconst startupSteps: Array<{ label: string; durationMs: number }> = [];\n\tconst recordStep = (label: string, startedAt: number) => {\n\t\tconst durationMs = performance.now() - startedAt;\n\n\t\tstartupSteps.push({\n\t\t\tdurationMs,\n\t\t\tlabel\n\t\t});\n\t};\n\n\t// Create initial HMR state with config\n\tlet stepStartedAt = performance.now();\n\tconst state = createHMRState(config);\n\t// Make the build dir discoverable to the runtime (e.g. getAngularDeps\n\t// looks for `<buildDir>/angular/vendor/server/*.js`). The CLI's start\n\t// script sets this for prod; dev runs in the same process as build, so\n\t// set it here.\n\tprocess.env.ABSOLUTE_BUILD_DIR ??= state.resolvedPaths.buildDir;\n\trecordStep('create HMR state', stepStartedAt);\n\n\t// Initialize dependency graph by scanning all source files\n\tstepStartedAt = performance.now();\n\tconst watchPaths = getWatchPaths(config, state.resolvedPaths);\n\tbuildInitialDependencyGraph(state.dependencyGraph, watchPaths);\n\trecordStep('initialize dependency graph', stepStartedAt);\n\n\t// Pre-compute vendor paths so build() can externalize frameworks.\n\t// The actual vendor files are built after build() creates the output dir.\n\tstepStartedAt = performance.now();\n\tif (config.reactDirectory) {\n\t\tsetDevVendorPaths(computeVendorPaths());\n\t}\n\tif (config.svelteDirectory) {\n\t\tsetSvelteVendorPaths(computeSvelteVendorPaths());\n\t}\n\tif (config.vueDirectory) {\n\t\tsetVueVendorPaths(computeVueVendorPaths());\n\t}\n\tconst sourceDirs = collectDepVendorSourceDirs(config);\n\tif (config.angularDirectory) {\n\t\tsetAngularVendorPaths(await computeAngularVendorPathsAsync(sourceDirs));\n\t\tsetAngularServerVendorPaths(\n\t\t\tawait computeAngularServerVendorPathsAsync(\n\t\t\t\tstate.resolvedPaths.buildDir,\n\t\t\t\tsourceDirs\n\t\t\t)\n\t\t);\n\t}\n\tconst { computeDepVendorPaths } = await import('../build/buildDepVendor');\n\tglobalThis.__depVendorPaths = await computeDepVendorPaths(sourceDirs);\n\trecordStep('prepare vendor paths', stepStartedAt);\n\n\tstepStartedAt = performance.now();\n\tawait resolveAbsoluteVersion();\n\trecordStep('resolve version', stepStartedAt);\n\n\tconst buildStart = performance.now();\n\n\t// Initial build (HMR client is baked into index files and HTML/HTMX pages)\n\tconst buildResult = await build({\n\t\t...config,\n\t\tmode: 'development',\n\t\toptions: {\n\t\t\t...config.options,\n\t\t\tinjectHMR: true\n\t\t}\n\t});\n\tconst manifest = buildResult.manifest ?? {};\n\tconst conventions = buildResult.conventions ?? {};\n\trecordStep('initial build', buildStart);\n\n\tif (Object.keys(manifest).length === 0) {\n\t\tconsole.log(\n\t\t\t'⚠️ Manifest is empty - this is OK for HTML/HTMX-only projects'\n\t\t);\n\t}\n\n\t// Populate in-memory asset store so client assets are served from memory\n\tstepStartedAt = performance.now();\n\tawait populateAssetStore(\n\t\tstate.assetStore,\n\t\tmanifest,\n\t\tstate.resolvedPaths.buildDir\n\t);\n\tvoid cleanStaleAssets(\n\t\tstate.assetStore,\n\t\tmanifest,\n\t\tstate.resolvedPaths.buildDir\n\t);\n\trecordStep('populate asset store', stepStartedAt);\n\n\t// Build vendor files in parallel now that the build directory exists.\n\t// Each task only BUILDS — file rewriting + asset-store loading happen below\n\t// in a centralized post-step so cross-framework specifier rewrites can use\n\t// the FULL combined path map (react ∪ angular ∪ svelte ∪ vue ∪ dep).\n\tstepStartedAt = performance.now();\n\tconst reactVendorDir = resolve(\n\t\tstate.resolvedPaths.buildDir,\n\t\t'react',\n\t\t'vendor'\n\t);\n\tconst angularVendorDir = resolve(\n\t\tstate.resolvedPaths.buildDir,\n\t\t'angular',\n\t\t'vendor'\n\t);\n\tconst svelteVendorDir = resolve(\n\t\tstate.resolvedPaths.buildDir,\n\t\t'svelte',\n\t\t'vendor'\n\t);\n\tconst vueVendorDir = resolve(state.resolvedPaths.buildDir, 'vue', 'vendor');\n\tconst depVendorDir = resolve(state.resolvedPaths.buildDir, 'vendor');\n\n\tconst { buildDepVendor } = await import('../build/buildDepVendor');\n\n\tconst [, angularSpecs, angularServerSpecs, , , depPaths] =\n\t\tawait Promise.all([\n\t\t\tconfig.reactDirectory\n\t\t\t\t? buildReactVendor(state.resolvedPaths.buildDir)\n\t\t\t\t: Promise.resolve(undefined),\n\t\t\tconfig.angularDirectory\n\t\t\t\t? buildAngularVendor(\n\t\t\t\t\t\tstate.resolvedPaths.buildDir,\n\t\t\t\t\t\tsourceDirs,\n\t\t\t\t\t\t/* linkerJitMode */ true,\n\t\t\t\t\t\t/* depVendorSpecifiers */ Object.keys(\n\t\t\t\t\t\t\tglobalThis.__depVendorPaths ?? {}\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t: Promise.resolve(undefined),\n\t\t\tconfig.angularDirectory\n\t\t\t\t? buildAngularServerVendor(\n\t\t\t\t\t\tstate.resolvedPaths.buildDir,\n\t\t\t\t\t\tsourceDirs,\n\t\t\t\t\t\t/* linkerJitMode */ true\n\t\t\t\t\t)\n\t\t\t\t: Promise.resolve(undefined),\n\t\t\tconfig.svelteDirectory\n\t\t\t\t? buildSvelteVendor(state.resolvedPaths.buildDir)\n\t\t\t\t: Promise.resolve(undefined),\n\t\t\tconfig.vueDirectory\n\t\t\t\t? buildVueVendor(state.resolvedPaths.buildDir)\n\t\t\t\t: Promise.resolve(undefined),\n\t\t\tbuildDepVendor(state.resolvedPaths.buildDir, sourceDirs)\n\t\t]);\n\tif (angularSpecs) globalThis.__angularVendorSpecifiers = angularSpecs;\n\tif (angularServerSpecs) {\n\t\tsetAngularServerVendorPaths(\n\t\t\tcomputeAngularServerVendorPaths(\n\t\t\t\tstate.resolvedPaths.buildDir,\n\t\t\t\tangularServerSpecs\n\t\t\t)\n\t\t);\n\t}\n\tglobalThis.__depVendorPaths = depPaths;\n\trecordStep('build vendor bundles', stepStartedAt);\n\n\t// Cross-vendor specifier rewriting: a vendor file may externalize packages\n\t// owned by a different vendor pipeline (e.g. /vendor/sentry_angular.js\n\t// externalizes @angular/core; /vendor/firebase_auth_compat.js externalizes\n\t// @firebase/auth). Without rewriting these to their vendor paths, the\n\t// browser fetches the vendor file at runtime and chokes on bare specifiers.\n\t// Run AFTER all vendor builds so every framework's path map is included.\n\tstepStartedAt = performance.now();\n\tconst combinedVendorPaths: Record<string, string> = {\n\t\t...(getDevVendorPaths() ?? {}),\n\t\t...(getAngularVendorPaths() ?? {}),\n\t\t...(getSvelteVendorPaths() ?? {}),\n\t\t...(getVueVendorPaths() ?? {}),\n\t\t...depPaths\n\t};\n\tconst activeVendorDirs = [\n\t\tconfig.reactDirectory ? reactVendorDir : null,\n\t\tconfig.angularDirectory ? angularVendorDir : null,\n\t\tconfig.svelteDirectory ? svelteVendorDir : null,\n\t\tconfig.vueDirectory ? vueVendorDir : null,\n\t\tdepVendorDir\n\t].filter((d): d is string => d !== null);\n\tconst { rewriteVendorDirectories } = await import(\n\t\t'../build/rewriteImports'\n\t);\n\tawait rewriteVendorDirectories(activeVendorDirs, combinedVendorPaths);\n\trecordStep('rewrite vendor cross-references', stepStartedAt);\n\n\t// Load the (now-rewritten) vendor files into the in-memory asset store.\n\tstepStartedAt = performance.now();\n\tawait Promise.all([\n\t\tconfig.reactDirectory\n\t\t\t? loadVendorFiles(state.assetStore, reactVendorDir, 'react')\n\t\t\t: Promise.resolve(),\n\t\tconfig.angularDirectory\n\t\t\t? loadVendorFiles(state.assetStore, angularVendorDir, 'angular')\n\t\t\t: Promise.resolve(),\n\t\tconfig.svelteDirectory\n\t\t\t? loadVendorFiles(state.assetStore, svelteVendorDir, 'svelte')\n\t\t\t: Promise.resolve(),\n\t\tconfig.vueDirectory\n\t\t\t? loadVendorFiles(state.assetStore, vueVendorDir, 'vue')\n\t\t\t: Promise.resolve(),\n\t\tloadVendorFiles(state.assetStore, depVendorDir, 'vendor')\n\t]);\n\tif (config.reactDirectory && !globalThis.__reactModuleRef) {\n\t\tglobalThis.__reactModuleRef = await import('react');\n\t}\n\trecordStep('load vendor files', stepStartedAt);\n\n\t// Pre-warm framework compilers so the first HMR edit is fast.\n\t// Sets the module-level compiler references in moduleServer.ts\n\t// so transformSvelteFile/transformVueFile skip the dynamic import.\n\tstepStartedAt = performance.now();\n\tconst { warmCompilers } = await import('../dev/moduleServer');\n\tawait warmCompilers({\n\t\tsvelte: Boolean(config.svelteDirectory),\n\t\tvue: Boolean(config.vueDirectory)\n\t});\n\trecordStep('warm compilers', stepStartedAt);\n\n\t// Pre-build the persistent Tailwind compiler so the first HMR tick\n\t// after server start doesn't pay the parse + initial-scan cost.\n\tif (config.tailwind) {\n\t\tstepStartedAt = performance.now();\n\t\tconst { warmTailwindCompiler } = await import(\n\t\t\t'../build/tailwindCompiler'\n\t\t);\n\t\tawait warmTailwindCompiler(config.tailwind);\n\t\trecordStep('warm tailwind compiler', stepStartedAt);\n\t}\n\n\t// Store initial manifest on HMR state for Angular fast-path HMR\n\tstate.manifest = manifest;\n\n\tstepStartedAt = performance.now();\n\tstartFileWatching(state, config, (filePath: string) => {\n\t\tqueueFileChange(state, filePath, config, (newBuildResult) => {\n\t\t\tObject.assign(manifest, newBuildResult.manifest);\n\t\t\tstate.manifest = manifest;\n\t\t});\n\t});\n\trecordStep('start file watching', stepStartedAt);\n\n\t// Store build duration for the startup banner (printed by networking plugin)\n\tglobalThis.__hmrBuildDuration = performance.now() - buildStart;\n\tlogStartupTimingBlock('AbsoluteJS devBuild timing', startupSteps);\n\n\tconst result: NonNullable<typeof globalThis.__hmrDevResult> = {\n\t\tconventions,\n\t\thmrState: state,\n\t\tmanifest\n\t};\n\n\t// Cache for Bun --hot reloads\n\tglobalThis.__hmrDevResult = result;\n\tglobalThis.__hmrServerMtime = statSync(resolve(Bun.main)).mtimeMs;\n\n\treturn result;\n};\n",
6
- "import { UNFOUND_INDEX } from '../constants';\nimport {\n\tcopyFileSync,\n\tcpSync,\n\texistsSync,\n\tmkdirSync,\n\treadFileSync,\n\trmSync,\n\tstatSync,\n\twriteFileSync\n} from 'node:fs';\nimport { basename, dirname, extname, join, relative, resolve } from 'node:path';\nimport { cwd, env, exit } from 'node:process';\nimport { build as bunBuild, type BuildArtifact, Glob } from 'bun';\nimport { generateManifest } from '../build/generateManifest';\nimport {\n\tcollectIslandFrameworkSources,\n\tgenerateIslandEntryPoints,\n\tloadIslandRegistryBuildInfo\n} from '../build/islandEntries';\nimport { generateReactIndexFiles } from '../build/generateReactIndexes';\nimport { createHTMLScriptHMRPlugin } from '../build/htmlScriptHMRPlugin';\nimport { transformStaticPagesWithIslands } from '../build/staticIslandPages';\nimport { outputLogs } from '../build/outputLogs';\nimport { scanEntryPoints } from '../build/scanEntryPoints';\nimport { scanConventions } from '../build/scanConventions';\nimport type {\n\tConventionsMap,\n\tFrameworkConventionEntry\n} from '../../types/conventions';\nimport { scanCssEntryPoints } from '../build/scanCssEntryPoints';\nimport {\n\tcreateStyleTransformConfig,\n\tcreateStylePreprocessorPlugin,\n\tisStylePath\n} from '../build/stylePreprocessor';\nimport {\n\tcompileTailwindConfig,\n\tisTailwindCandidate\n} from '../build/compileTailwind';\nimport { disposeTailwindCompiler } from '../build/tailwindCompiler';\nimport { optimizeHtmlImages } from '../build/optimizeHtmlImages';\nimport { updateAssetPaths } from '../build/updateAssetPaths';\nimport { buildHMRClient } from '../dev/buildHMRClient';\nimport {\n\tpatchRefreshGlobals,\n\trewriteReactImports\n} from '../build/rewriteReactImports';\nimport { sendTelemetryEvent } from '../cli/telemetryEvent';\nimport {\n\tgetAngularServerVendorPaths,\n\tgetAngularVendorPaths,\n\tgetDevVendorPaths,\n\tgetSvelteVendorPaths,\n\tgetVueVendorPaths,\n\tsetAngularServerVendorPaths,\n\tsetAngularVendorPaths,\n\tsetDevVendorPaths,\n\tsetSvelteVendorPaths,\n\tsetVueVendorPaths\n} from './devVendorPaths';\nimport type {\n\tBuildConfig,\n\tBunBuildConfigOverride,\n\tBunBuildPassConfig,\n\tBunBuildPassKey\n} from '../../types/build';\nimport { createAngularLinkerPlugin } from '../build/angularLinkerPlugin';\nimport { cleanStaleOutputs } from '../utils/cleanStaleOutputs';\nimport { cleanup } from '../utils/cleanup';\nimport { commonAncestor } from '../utils/commonAncestor';\nimport { logError, logWarn } from '../utils/logger';\nimport { normalizePath } from '../utils/normalizePath';\nimport { toPascal } from '../utils/stringModifiers';\nimport { validateSafePath } from '../utils/validateSafePath';\n\nconst isDev = env.NODE_ENV === 'development';\n\ntype BuildTraceEvent = {\n\tdurationMs: number;\n\tmetadata?: Record<string, unknown>;\n\tname: string;\n\tok: boolean;\n\tstartMs: number;\n};\n\ntype BuildTracePhase = <T>(\n\tname: string,\n\tfn: () => Promise<T> | T,\n\tmetadata?: Record<string, unknown>\n) => Promise<T>;\n\nconst isBuildTraceEnabled = () => {\n\tconst value = env.ABSOLUTE_BUILD_TRACE?.toLowerCase();\n\n\treturn value === '1' || value === 'true' || value === 'yes';\n};\n\nconst collectConventionSourceFiles = (\n\tentry: FrameworkConventionEntry | undefined\n) => {\n\tif (!entry) return [];\n\tconst files: string[] = [];\n\tif (entry.defaults?.error) files.push(entry.defaults.error);\n\tif (entry.defaults?.loading) files.push(entry.defaults.loading);\n\tif (entry.defaults?.notFound) files.push(entry.defaults.notFound);\n\tif (!entry.pages) return files;\n\tfor (const page of Object.values(entry.pages)) {\n\t\tif (page.error) files.push(page.error);\n\t\tif (page.loading) files.push(page.loading);\n\t}\n\n\treturn files;\n};\n\nconst updateConventionCompiledPaths = (\n\tentry: FrameworkConventionEntry | undefined,\n\tsourcePaths: string[],\n\tcompiledPaths: string[]\n) => {\n\tif (!entry || sourcePaths.length !== compiledPaths.length) return;\n\tconst pathMap = new Map<string, string>();\n\tfor (let idx = 0; idx < sourcePaths.length; idx++) {\n\t\tconst src = sourcePaths[idx];\n\t\tconst compiled = compiledPaths[idx];\n\t\tif (src && compiled) pathMap.set(src, compiled);\n\t}\n\n\tif (entry.defaults) {\n\t\tconst errorPath = entry.defaults.error\n\t\t\t? pathMap.get(entry.defaults.error)\n\t\t\t: undefined;\n\t\tif (errorPath) entry.defaults.error = errorPath;\n\n\t\tconst loadingPath = entry.defaults.loading\n\t\t\t? pathMap.get(entry.defaults.loading)\n\t\t\t: undefined;\n\t\tif (loadingPath) entry.defaults.loading = loadingPath;\n\n\t\tconst notFoundPath = entry.defaults.notFound\n\t\t\t? pathMap.get(entry.defaults.notFound)\n\t\t\t: undefined;\n\t\tif (notFoundPath) entry.defaults.notFound = notFoundPath;\n\t}\n\tif (!entry.pages) return;\n\tfor (const page of Object.values(entry.pages)) {\n\t\tconst errorPath = page.error ? pathMap.get(page.error) : undefined;\n\t\tif (errorPath) page.error = errorPath;\n\n\t\tconst loadingPath = page.loading\n\t\t\t? pathMap.get(page.loading)\n\t\t\t: undefined;\n\t\tif (loadingPath) page.loading = loadingPath;\n\t}\n};\n\nconst extractBuildError = (\n\tlogs: (BuildMessage | ResolveMessage)[],\n\tpass: string,\n\tlabel: string,\n\tframeworkNames: string[],\n\tisIncremental: boolean | 0 | undefined,\n\tthrowOnError: boolean\n) => {\n\tconst errLog = logs.find((log) => log.level === 'error') ?? logs[0];\n\tif (!errLog) {\n\t\texit(1);\n\n\t\treturn;\n\t}\n\tconst err = new Error(\n\t\ttypeof errLog.message === 'string'\n\t\t\t? errLog.message\n\t\t\t: String(errLog.message)\n\t);\n\tObject.assign(err, { logs });\n\tsendTelemetryEvent('build:error', {\n\t\tframeworks: frameworkNames,\n\t\tincremental: Boolean(isIncremental),\n\t\tmessage: err.message,\n\t\tpass\n\t});\n\tlogError(`${label} build failed`, err);\n\tif (throwOnError) throw err;\n\texit(1);\n};\n\nconst copyHtmxVendor = (htmxDir: string, htmxDestDir: string) => {\n\tmkdirSync(htmxDestDir, { recursive: true });\n\tconst glob = new Glob('htmx*.min.js');\n\tfor (const relPath of glob.scanSync({ cwd: htmxDir })) {\n\t\tconst src = join(htmxDir, relPath);\n\t\tconst dest = join(htmxDestDir, 'htmx.min.js');\n\t\tcopyFileSync(src, dest);\n\n\t\treturn;\n\t}\n};\n\nconst tryReadPackageJson = async (path: string) => {\n\ttry {\n\t\treturn await Bun.file(path).json();\n\t} catch {\n\t\treturn null;\n\t}\n};\n\nconst resolveAbsoluteVersion = async () => {\n\tconst candidates = [\n\t\tresolve(import.meta.dir, '..', '..', 'package.json'),\n\t\tresolve(import.meta.dir, '..', 'package.json')\n\t];\n\tconst resolveCandidate = async (remaining: string[]) => {\n\t\tconst [candidate, ...rest] = remaining;\n\t\tif (!candidate) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst pkg = await tryReadPackageJson(candidate);\n\t\tif (!pkg || pkg.name !== '@absolutejs/absolute') {\n\t\t\tawait resolveCandidate(rest);\n\n\t\t\treturn;\n\t\t}\n\n\t\tglobalThis.__absoluteVersion = pkg.version;\n\t};\n\n\tawait resolveCandidate(candidates);\n};\n\n/** Scan source directories for files referenced by new URL('./path', import.meta.url) */\nconst SKIP_DIRS = new Set([\n\t'build',\n\t'node_modules',\n\t'.absolutejs',\n\t'generated'\n]);\nconst addWorkerPathIfExists = (\n\tfile: string,\n\trelPath: string,\n\tworkerPaths: Set<string>\n) => {\n\tconst absPath = resolve(file, '..', relPath);\n\ttry {\n\t\tstatSync(absPath);\n\t\tworkerPaths.add(absPath);\n\t} catch {\n\t\t// Referenced file doesn't exist, skip\n\t}\n};\n\nconst collectWorkerPathsFromContent = (\n\tcontent: string,\n\tpattern: RegExp,\n\tfile: string,\n\tworkerPaths: Set<string>\n) => {\n\tpattern.lastIndex = 0;\n\tlet match;\n\twhile ((match = pattern.exec(content)) !== null) {\n\t\tconst [, relPath] = match;\n\t\tif (!relPath) continue;\n\t\taddWorkerPathIfExists(file, relPath, workerPaths);\n\t}\n};\n\nconst collectWorkerPathsFromFile = (\n\tfile: string,\n\tpatterns: RegExp[],\n\tworkerPaths: Set<string>\n) => {\n\tconst content = readFileSync(file, 'utf-8');\n\tfor (const pattern of patterns) {\n\t\tcollectWorkerPathsFromContent(content, pattern, file, workerPaths);\n\t}\n};\n\nconst scanWorkerReferencesInDir = async (\n\tdir: string,\n\tpatterns: RegExp[],\n\tworkerPaths: Set<string>\n) => {\n\tconst glob = new Glob('**/*.{ts,tsx,js,jsx,svelte,vue}');\n\tfor await (const file of glob.scan({ absolute: true, cwd: dir })) {\n\t\t// Skip build-generated directories\n\t\tconst relToDir = file.slice(dir.length + 1);\n\t\tconst [firstSegment] = relToDir.split('/');\n\t\tif (firstSegment && SKIP_DIRS.has(firstSegment)) continue;\n\n\t\tcollectWorkerPathsFromFile(file, patterns, workerPaths);\n\t}\n};\n\nconst scanWorkerReferences = async (dirs: string[]) => {\n\tconst urlPattern =\n\t\t/new\\s+URL\\(\\s*[\"'](\\.\\.?\\/[^\"']+)[\"']\\s*,\\s*import\\.meta\\.url\\s*\\)/g;\n\tconst resolvePattern =\n\t\t/import\\.meta\\.resolve\\(\\s*[\"'](\\.\\.?\\/[^\"']+)[\"']\\s*\\)/g;\n\tconst workerPaths = new Set<string>();\n\n\tawait Promise.all(\n\t\tdirs.map((dir) =>\n\t\t\tscanWorkerReferencesInDir(\n\t\t\t\tdir,\n\t\t\t\t[urlPattern, resolvePattern],\n\t\t\t\tworkerPaths\n\t\t\t)\n\t\t)\n\t);\n\n\treturn [...workerPaths];\n};\n\nconst copyDevIndexes = async ({\n\tbuildPath,\n\treactIndexesPath,\n\treactPagesPath,\n\tsvelteDir,\n\tsvelteEntries,\n\tsveltePagesPath,\n\tvueDir,\n\tvueEntries,\n\tvuePagesPath\n}: {\n\tbuildPath: string;\n\treactIndexesPath: string | false | undefined;\n\treactPagesPath: string | false | undefined;\n\tsvelteDir: string | false | undefined;\n\tsvelteEntries: string[];\n\tsveltePagesPath: string | false | undefined;\n\tvueDir: string | false | undefined;\n\tvueEntries: string[];\n\tvuePagesPath: string | false | undefined;\n}) => {\n\tconst { readdirSync: readDir } = await import('node:fs');\n\tconst devIndexDir = join(buildPath, '_src_indexes');\n\tmkdirSync(devIndexDir, { recursive: true });\n\n\tif (reactIndexesPath && reactPagesPath) {\n\t\tcopyReactDevIndexes(\n\t\t\treactIndexesPath,\n\t\t\treactPagesPath,\n\t\t\tdevIndexDir,\n\t\t\treadDir\n\t\t);\n\t}\n\n\tif (svelteDir && sveltePagesPath) {\n\t\tcopySvelteDevIndexes(\n\t\t\tsvelteDir,\n\t\t\tsveltePagesPath,\n\t\t\tsvelteEntries,\n\t\t\tdevIndexDir\n\t\t);\n\t}\n\n\tif (vueDir && vuePagesPath) {\n\t\tcopyVueDevIndexes(vueDir, vuePagesPath, vueEntries, devIndexDir);\n\t}\n};\n\nconst copyReactDevIndexes = (\n\treactIndexesPath: string,\n\treactPagesPath: string,\n\tdevIndexDir: string,\n\treadDir: (path: string) => string[]\n) => {\n\tif (!existsSync(reactIndexesPath)) {\n\t\treturn;\n\t}\n\n\tconst indexFiles = readDir(reactIndexesPath).filter((file: string) =>\n\t\tfile.endsWith('.tsx')\n\t);\n\tconst pagesRel = relative(process.cwd(), resolve(reactPagesPath)).replace(\n\t\t/\\\\/g,\n\t\t'/'\n\t);\n\n\tfor (const file of indexFiles) {\n\t\tlet content = readFileSync(join(reactIndexesPath, file), 'utf-8');\n\t\tcontent = content.replace(\n\t\t\t/from\\s*['\"]([^'\"]*\\/pages\\/([^'\"]+))['\"]/g,\n\t\t\t(_match, _fullPath, componentName) =>\n\t\t\t\t`from '/@src/${pagesRel}/${componentName}'`\n\t\t);\n\t\twriteFileSync(join(devIndexDir, file), content);\n\t}\n};\n\nconst copySvelteDevIndexes = (\n\tsvelteDir: string,\n\tsveltePagesPath: string,\n\tsvelteEntries: string[],\n\tdevIndexDir: string\n) => {\n\tconst svelteIndexDir = join(svelteDir, 'generated', 'indexes');\n\tconst sveltePageEntries = svelteEntries.filter((file) =>\n\t\tresolve(file).startsWith(resolve(sveltePagesPath))\n\t);\n\tfor (const entry of sveltePageEntries) {\n\t\tconst name = basename(entry).replace(/\\.svelte(\\.(ts|js))?$/, '');\n\t\tconst indexFile = join(svelteIndexDir, 'pages', `${name}.js`);\n\t\tif (!existsSync(indexFile)) continue;\n\t\tlet content = readFileSync(indexFile, 'utf-8');\n\t\tconst srcRel = relative(process.cwd(), resolve(entry)).replace(\n\t\t\t/\\\\/g,\n\t\t\t'/'\n\t\t);\n\t\tcontent = content.replace(\n\t\t\t/import\\s+Component\\s+from\\s+['\"]([^'\"]+)['\"]/,\n\t\t\t`import Component from \"/@src/${srcRel}\"`\n\t\t);\n\t\twriteFileSync(join(devIndexDir, `${name}.svelte.js`), content);\n\t}\n};\n\nconst copyVueDevIndexes = (\n\tvueDir: string,\n\tvuePagesPath: string,\n\tvueEntries: string[],\n\tdevIndexDir: string\n) => {\n\tconst vueIndexDir = join(vueDir, 'generated', 'indexes');\n\tconst vuePageEntries = vueEntries.filter((file) =>\n\t\tresolve(file).startsWith(resolve(vuePagesPath))\n\t);\n\tfor (const entry of vuePageEntries) {\n\t\tconst name = basename(entry, '.vue');\n\t\tconst indexFile = join(vueIndexDir, `${name}.js`);\n\t\tif (!existsSync(indexFile)) continue;\n\t\tlet content = readFileSync(indexFile, 'utf-8');\n\t\tconst srcRel = relative(process.cwd(), resolve(entry)).replace(\n\t\t\t/\\\\/g,\n\t\t\t'/'\n\t\t);\n\t\tcontent = content.replace(\n\t\t\t/import\\s+Comp\\s+from\\s+['\"]([^'\"]+)['\"]/,\n\t\t\t`import Comp from \"/@src/${srcRel}\"`\n\t\t);\n\t\twriteFileSync(join(devIndexDir, `${name}.vue.js`), content);\n\t}\n};\n\nconst resolveVueRuntimeId = (\n\tcontent: string,\n\tfirstUseName: string,\n\toutputPath: string,\n\tprojectRoot: string\n) => {\n\tconst varIdx = content.indexOf(`var ${firstUseName} =`);\n\tif (varIdx <= 0) return JSON.stringify(outputPath);\n\t// Find all // src/...js comments before the var declaration\n\tconst before = content.slice(0, varIdx);\n\tconst allComments = [...before.matchAll(/\\/\\/\\s*(src\\/[^\\n]*\\.js)\\s*\\n/g)];\n\t// Use the last one (closest to the var declaration)\n\tconst last = allComments[allComments.length - 1];\n\tif (!last?.[1]) return JSON.stringify(outputPath);\n\tconst srcPath = resolve(\n\t\tprojectRoot,\n\t\tlast[1].replace('/client/', '/').replace(/\\.js$/, '.ts')\n\t);\n\n\treturn JSON.stringify(srcPath);\n};\n\nconst QUOTE_CHARS = new Set(['\"', \"'\", '`']);\nconst OPEN_BRACES = new Set(['{', '(']);\nconst CLOSE_BRACES = new Set(['}', ')']);\n\nconst findFunctionExpressionEnd = (content: string, startPos: number) => {\n\tlet depth = 0;\n\tlet inStr: string | false = false;\n\tfor (let i = startPos; i < content.length; i++) {\n\t\tconst char = content[i] ?? '';\n\t\tif (inStr && char === inStr && content[i - 1] !== '\\\\') inStr = false;\n\t\tif (inStr) continue;\n\t\tif (QUOTE_CHARS.has(char)) inStr = char;\n\t\tif (QUOTE_CHARS.has(char)) continue;\n\t\tif (OPEN_BRACES.has(char)) depth++;\n\t\tif (CLOSE_BRACES.has(char)) depth--;\n\t\tif (depth === 0 && char === ';') return i;\n\t}\n\n\treturn startPos;\n};\n\nconst wrapUseFunctions = (content: string, useNames: string[]) => {\n\tlet result = content;\n\tfor (const name of useNames) {\n\t\tconst marker = `var ${name} = `;\n\t\tconst pos = result.indexOf(marker);\n\t\tif (pos === UNFOUND_INDEX) continue;\n\t\tconst afterMarker = pos + marker.length;\n\t\tconst endPos = findFunctionExpressionEnd(result, afterMarker);\n\t\tconst funcBody = result.slice(afterMarker, endPos);\n\t\tresult = `${result.slice(0, afterMarker)}__hmr_wrap(${JSON.stringify(name)}, ${funcBody})${result.slice(endPos)}`;\n\t}\n\n\treturn result;\n};\n\nconst VUE_HMR_RUNTIME = [\n\t`var __hmr_cs=(globalThis.__HMR_COMPOSABLE_STATE__??={});`,\n\t`var __hmr_mid=__HMR_MID__;`,\n\t`var __hmr_prev_refs=__hmr_cs[__hmr_mid];`,\n\t`var __hmr_idx={};`,\n\t`__hmr_cs[__hmr_mid]={};`,\n\t`function __hmr_wrap(n,fn){return function(){`,\n\t`var i=(__hmr_idx[n]=(__hmr_idx[n]??-1)+1);`,\n\t`var r=fn.apply(this,arguments);`,\n\t`if(r&&typeof r===\"object\"){`,\n\t`var refs={};for(var k in r){var v=r[k];`,\n\t`if(v&&typeof v===\"object\"&&\"value\"in v&&!v.effect&&typeof v.value!==\"function\")refs[k]=v;}`,\n\t`(__hmr_cs[__hmr_mid][n]??=[])[i]=refs;`,\n\t`if(__hmr_prev_refs&&__hmr_prev_refs[n]&&__hmr_prev_refs[n][i]){`,\n\t`var old=__hmr_prev_refs[n][i];`,\n\t`for(var k in old){var nv=r[k],ov=old[k];`,\n\t`if(nv&&ov&&typeof nv===\"object\"&&\"value\"in nv&&!nv.effect&&typeof nv.value===typeof ov.value)nv.value=ov.value;}`,\n\t`}}return r;};}`\n].join('');\n\nconst injectVueComposableTracking = (\n\toutputPath: string,\n\tprojectRoot: string\n) => {\n\tlet content = readFileSync(outputPath, 'utf-8');\n\t// Find `var useXxx = (` patterns and the source file comment above them\n\tconst usePattern = /^var\\s+(use[A-Z]\\w*)\\s*=/gm;\n\tconst useNames: string[] = [];\n\tlet match;\n\twhile ((match = usePattern.exec(content)) !== null) {\n\t\tif (match[1]) useNames.push(match[1]);\n\t}\n\tif (useNames.length === 0) return;\n\n\tconst [firstUseName] = useNames;\n\tif (!firstUseName) return;\n\n\tconst runtimeId = resolveVueRuntimeId(\n\t\tcontent,\n\t\tfirstUseName,\n\t\toutputPath,\n\t\tprojectRoot\n\t);\n\tconst runtime = VUE_HMR_RUNTIME.replace('__HMR_MID__', runtimeId);\n\n\t// Insert runtime before the first use* function\n\tconst firstUseIdx = content.indexOf(`var ${firstUseName} =`);\n\tif (firstUseIdx === UNFOUND_INDEX) return;\n\tcontent = `${content.slice(0, firstUseIdx) + runtime}\\n${content.slice(firstUseIdx)}`;\n\n\tcontent = wrapUseFunctions(content, useNames);\n\twriteFileSync(outputPath, content);\n};\n\nconst buildDevUrlFileMap = (\n\turlReferencedFiles: string[],\n\tprojectRoot: string\n) => {\n\tconst urlFileMap = new Map<string, string>();\n\tfor (const srcPath of urlReferencedFiles) {\n\t\tconst rel = relative(projectRoot, srcPath).replace(/\\\\/g, '/');\n\t\tconst name = basename(srcPath);\n\t\tconst mtime = Math.round(statSync(srcPath).mtimeMs);\n\t\tconst url = `/@src/${rel}?v=${mtime}`;\n\t\turlFileMap.set(name, url);\n\t\t// Also map .js variant for when Bun rewrites .ts → .js\n\t\turlFileMap.set(name.replace(/\\.tsx?$/, '.js'), url);\n\t}\n\n\treturn urlFileMap;\n};\n\nconst buildProdUrlFileMap = (\n\turlReferencedFiles: string[],\n\tbuildPath: string,\n\tnonReactClientOutputs: BuildArtifact[]\n) => {\n\tconst urlFileMap = new Map<string, string>();\n\tfor (const srcPath of urlReferencedFiles) {\n\t\tconst srcBase = basename(srcPath).replace(/\\.[^.]+$/, '');\n\t\tconst output = nonReactClientOutputs.find((artifact) =>\n\t\t\tbasename(artifact.path).startsWith(`${srcBase}.`)\n\t\t);\n\t\tif (!output) continue;\n\t\turlFileMap.set(\n\t\t\tbasename(srcPath),\n\t\t\t`/${relative(buildPath, output.path).replace(/\\\\/g, '/')}`\n\t\t);\n\t}\n\n\treturn urlFileMap;\n};\n\nconst buildUrlFileMap = (\n\turlReferencedFiles: string[],\n\thmr: boolean,\n\tprojectRoot: string,\n\tbuildPath: string,\n\tnonReactClientOutputs: BuildArtifact[]\n) => {\n\tif (hmr) return buildDevUrlFileMap(urlReferencedFiles, projectRoot);\n\n\treturn buildProdUrlFileMap(\n\t\turlReferencedFiles,\n\t\tbuildPath,\n\t\tnonReactClientOutputs\n\t);\n};\n\nconst rewriteUrlReferences = (\n\toutputPaths: string[],\n\turlFileMap: Map<string, string>\n) => {\n\tconst urlPattern =\n\t\t/new\\s+URL\\(\\s*[\"'](\\.\\.?\\/[^\"']+)[\"']\\s*,\\s*import\\.meta\\.url\\s*\\)/g;\n\tfor (const outputPath of outputPaths) {\n\t\tlet content = readFileSync(outputPath, 'utf-8');\n\t\tlet changed = false;\n\t\tcontent = content.replace(urlPattern, (_match, relPath) => {\n\t\t\tconst targetName = basename(relPath);\n\t\t\tconst resolvedPath = urlFileMap.get(targetName);\n\t\t\tif (!resolvedPath) return _match;\n\t\t\tchanged = true;\n\n\t\t\treturn `new URL('${resolvedPath}', import.meta.url)`;\n\t\t});\n\t\tif (changed) writeFileSync(outputPath, content);\n\t}\n};\n\nconst vueFeatureFlags: Record<string, string> = {\n\t__VUE_OPTIONS_API__: 'true',\n\t__VUE_PROD_DEVTOOLS__: isDev ? 'true' : 'false',\n\t__VUE_PROD_HYDRATION_MISMATCH_DETAILS__: isDev ? 'true' : 'false'\n};\n\nconst bunBuildPassKeys: BunBuildPassKey[] = [\n\t'server',\n\t'reactClient',\n\t'nonReactClient',\n\t'islandClient',\n\t'globalCss',\n\t'vueCss'\n];\nconst bunBuildPassKeySet = new Set<string>(['default', ...bunBuildPassKeys]);\nconst reservedBunBuildConfigKeys = new Set<string>([\n\t'entrypoints',\n\t'outdir',\n\t'outfile',\n\t'root',\n\t'target',\n\t'format',\n\t'throw',\n\t'compile'\n]);\n\ntype BunBuildOptions = Parameters<typeof bunBuild>[0];\n\nconst isObject = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null;\n\nconst isBunBuildPassConfig = (\n\tconfig: BuildConfig['bunBuild']\n): config is BunBuildPassConfig =>\n\tisObject(config) &&\n\tObject.keys(config).some((key) => bunBuildPassKeySet.has(key));\n\nconst sanitizeBunBuildOverride = (\n\toverride: BunBuildConfigOverride | undefined\n): BunBuildConfigOverride => {\n\tif (!override) return {};\n\tconst sanitized: Record<string, unknown> = { ...override };\n\tfor (const key of reservedBunBuildConfigKeys) {\n\t\tdelete sanitized[key];\n\t}\n\n\treturn sanitized as BunBuildConfigOverride;\n};\n\nexport const resolveBunBuildOverride = (\n\tconfig: BuildConfig['bunBuild'],\n\tpass: BunBuildPassKey\n): BunBuildConfigOverride => {\n\tif (!config) return {};\n\tif (!isBunBuildPassConfig(config)) {\n\t\treturn sanitizeBunBuildOverride(config);\n\t}\n\n\treturn sanitizeBunBuildOverride({\n\t\t...(config.default ?? {}),\n\t\t...(config[pass] ?? {})\n\t});\n};\n\nconst dedupe = <T>(values: T[]) => [...new Set(values)];\n\nexport const mergeBunBuildConfig = (\n\tbase: BunBuildOptions,\n\toverride: BunBuildConfigOverride\n): BunBuildOptions => {\n\tconst sanitized = sanitizeBunBuildOverride(override);\n\tconst merged = {\n\t\t...base,\n\t\t...sanitized\n\t} as BunBuildOptions;\n\n\treturn {\n\t\t...merged,\n\t\tdefine:\n\t\t\tbase.define || sanitized.define\n\t\t\t\t? {\n\t\t\t\t\t\t...(sanitized.define ?? {}),\n\t\t\t\t\t\t...(base.define ?? {})\n\t\t\t\t\t}\n\t\t\t\t: undefined,\n\t\texternal: dedupe([\n\t\t\t...(base.external ?? []),\n\t\t\t...(sanitized.external ?? [])\n\t\t]),\n\t\tplugins: [...(base.plugins ?? []), ...(sanitized.plugins ?? [])]\n\t} as BunBuildOptions;\n};\n\nexport const build = async ({\n\tbuildDirectory = 'build',\n\tassetsDirectory,\n\tpublicDirectory,\n\tislands,\n\treactDirectory,\n\thtmlDirectory,\n\thtmxDirectory,\n\tangularDirectory,\n\tsvelteDirectory,\n\tvueDirectory,\n\tstylesConfig,\n\tstylePreprocessors,\n\tpostcss,\n\ttailwind,\n\tbunBuild: bunBuildConfig,\n\toptions,\n\tincrementalFiles,\n\tmode\n}: BuildConfig) => {\n\tconst buildStart = performance.now();\n\tconst projectRoot = cwd();\n\tconst traceEnabled = isBuildTraceEnabled();\n\tconst traceEvents: BuildTraceEvent[] = [];\n\tlet traceFrameworkNames: string[] = [];\n\tconst traceGlobal = globalThis as typeof globalThis & {\n\t\t__absoluteBuildTracePhase?: BuildTracePhase;\n\t};\n\tconst previousTracePhase = traceGlobal.__absoluteBuildTracePhase;\n\tconst restoreTracePhase = () => {\n\t\tif (previousTracePhase) {\n\t\t\ttraceGlobal.__absoluteBuildTracePhase = previousTracePhase;\n\t\t} else {\n\t\t\tdelete traceGlobal.__absoluteBuildTracePhase;\n\t\t}\n\t};\n\tconst tracePhase: BuildTracePhase = async <T>(\n\t\tname: string,\n\t\tfn: () => Promise<T> | T,\n\t\tmetadata?: Record<string, unknown>\n\t): Promise<T> => {\n\t\tif (!traceEnabled) return await fn();\n\t\tconst phaseStart = performance.now();\n\t\ttry {\n\t\t\tconst result = await fn();\n\t\t\ttraceEvents.push({\n\t\t\t\tdurationMs: performance.now() - phaseStart,\n\t\t\t\tmetadata,\n\t\t\t\tname,\n\t\t\t\tok: true,\n\t\t\t\tstartMs: phaseStart - buildStart\n\t\t\t});\n\n\t\t\treturn result;\n\t\t} catch (error) {\n\t\t\ttraceEvents.push({\n\t\t\t\tdurationMs: performance.now() - phaseStart,\n\t\t\t\tmetadata: {\n\t\t\t\t\t...metadata,\n\t\t\t\t\terror:\n\t\t\t\t\t\terror instanceof Error ? error.message : String(error)\n\t\t\t\t},\n\t\t\t\tname,\n\t\t\t\tok: false,\n\t\t\t\tstartMs: phaseStart - buildStart\n\t\t\t});\n\t\t\tthrow error;\n\t\t}\n\t};\n\tif (traceEnabled) {\n\t\ttraceGlobal.__absoluteBuildTracePhase = tracePhase;\n\t}\n\tconst writeBuildTrace = (buildPath: string) => {\n\t\tif (!traceEnabled) {\n\t\t\trestoreTracePhase();\n\n\t\t\treturn;\n\t\t}\n\t\tconst traceDir = join(buildPath, '.absolute-trace');\n\t\tconst timestamp = new Date().toISOString().replace(/[:.]/g, '-');\n\t\tmkdirSync(traceDir, { recursive: true });\n\t\twriteFileSync(\n\t\t\tjoin(traceDir, `build-trace-${timestamp}.json`),\n\t\t\tJSON.stringify(\n\t\t\t\t{\n\t\t\t\t\tevents: traceEvents,\n\t\t\t\t\tframeworks: traceFrameworkNames,\n\t\t\t\t\tgeneratedAt: new Date().toISOString(),\n\t\t\t\t\tmode: mode ?? (isDev ? 'development' : 'production'),\n\t\t\t\t\ttotalDurationMs: performance.now() - buildStart,\n\t\t\t\t\tversion: 1\n\t\t\t\t},\n\t\t\t\tnull,\n\t\t\t\t2\n\t\t\t)\n\t\t);\n\t\trestoreTracePhase();\n\t};\n\n\tawait tracePhase('absolute/version', () => resolveAbsoluteVersion());\n\tconst isIncremental = incrementalFiles && incrementalFiles.length > 0;\n\tconst styleTransformConfig = createStyleTransformConfig(\n\t\tstylePreprocessors,\n\t\tpostcss\n\t);\n\tconst stylePreprocessorPlugin =\n\t\tcreateStylePreprocessorPlugin(styleTransformConfig);\n\n\t// Normalize incrementalFiles for consistent cross-platform path checking\n\tconst normalizedIncrementalFiles = incrementalFiles?.map(normalizePath);\n\n\tconst throwOnError = options?.throwOnError === true;\n\tconst hmr = options?.injectHMR === true;\n\tconst buildPath = validateSafePath(buildDirectory, projectRoot);\n\tconst assetsPath =\n\t\tassetsDirectory && validateSafePath(assetsDirectory, projectRoot);\n\tconst reactDir =\n\t\treactDirectory && validateSafePath(reactDirectory, projectRoot);\n\tconst htmlDir =\n\t\thtmlDirectory && validateSafePath(htmlDirectory, projectRoot);\n\tconst htmxDir =\n\t\thtmxDirectory && validateSafePath(htmxDirectory, projectRoot);\n\tconst svelteDir =\n\t\tsvelteDirectory && validateSafePath(svelteDirectory, projectRoot);\n\tconst vueDir = vueDirectory && validateSafePath(vueDirectory, projectRoot);\n\tconst angularDir =\n\t\tangularDirectory && validateSafePath(angularDirectory, projectRoot);\n\tconst islandBootstrapPath =\n\t\tislands?.bootstrap && validateSafePath(islands.bootstrap, projectRoot);\n\tconst islandRegistryPath =\n\t\tislands?.registry && validateSafePath(islands.registry, projectRoot);\n\tconst stylesPath =\n\t\ttypeof stylesConfig === 'string' ? stylesConfig : stylesConfig?.path;\n\tconst stylesIgnore =\n\t\ttypeof stylesConfig === 'object' ? stylesConfig.ignore : undefined;\n\tconst stylesDir = stylesPath && validateSafePath(stylesPath, projectRoot);\n\n\tconst reactIndexesPath = reactDir && join(reactDir, 'generated', 'indexes');\n\tconst reactPagesPath = reactDir && join(reactDir, 'pages');\n\tconst htmlPagesPath = htmlDir && join(htmlDir, 'pages');\n\tconst htmlScriptsPath = htmlDir && join(htmlDir, 'scripts');\n\tconst sveltePagesPath = svelteDir && join(svelteDir, 'pages');\n\tconst vuePagesPath = vueDir && join(vueDir, 'pages');\n\tconst htmxPagesPath = htmxDir && join(htmxDir, 'pages');\n\tconst angularPagesPath = angularDir && join(angularDir, 'pages');\n\n\tconst frontends = [\n\t\treactDir,\n\t\thtmlDir,\n\t\thtmxDir,\n\t\tsvelteDir,\n\t\tvueDir,\n\t\tangularDir\n\t].filter(Boolean);\n\tconst isSingle = frontends.length === 1;\n\n\tconst frameworkNames = [\n\t\treactDir && 'react',\n\t\thtmlDir && 'html',\n\t\thtmxDir && 'htmx',\n\t\tsvelteDir && 'svelte',\n\t\tvueDir && 'vue',\n\t\tangularDir && 'angular'\n\t].filter((name): name is string => Boolean(name));\n\ttraceFrameworkNames = frameworkNames;\n\tsendTelemetryEvent('build:start', {\n\t\tframework: frameworkNames[0],\n\t\tframeworks: frameworkNames,\n\t\tmode: mode ?? (isDev ? 'development' : 'production'),\n\t\ttailwind: Boolean(tailwind)\n\t});\n\n\t// Compute client root from source framework dirs. Generated intermediate files\n\t// are placed under {frameworkDir}/generated/ so Bun.build's root stripping\n\t// produces correct output paths (react/generated/indexes/, svelte/generated/client/, etc.).\n\tconst sourceClientRoots: string[] = [\n\t\treactDir,\n\t\tsvelteDir,\n\t\thtmlDir,\n\t\tvueDir,\n\t\tangularDir,\n\t\tislandBootstrapPath && dirname(islandBootstrapPath)\n\t].filter((dir): dir is string => Boolean(dir));\n\tconst clientRoot = isSingle\n\t\t? (sourceClientRoots[0] ?? projectRoot)\n\t\t: commonAncestor(sourceClientRoots, projectRoot);\n\n\tconst serverDirMap: { dir: string; subdir: string }[] = [];\n\tif (svelteDir)\n\t\tserverDirMap.push({\n\t\t\tdir: svelteDir,\n\t\t\tsubdir: join('generated', 'server')\n\t\t});\n\tif (vueDir)\n\t\tserverDirMap.push({\n\t\t\tdir: vueDir,\n\t\t\tsubdir: join('generated', 'server')\n\t\t});\n\tif (angularDir) serverDirMap.push({ dir: angularDir, subdir: 'generated' });\n\n\tlet serverOutDir: string | undefined;\n\tlet serverRoot: string | undefined;\n\n\tif (serverDirMap.length === 1) {\n\t\tconst [firstEntry] = serverDirMap;\n\t\tif (!firstEntry)\n\t\t\tthrow new Error('Expected at least one server directory entry');\n\t\tserverRoot = join(firstEntry.dir, firstEntry.subdir);\n\t\tserverOutDir = join(buildPath, basename(firstEntry.dir));\n\t} else if (serverDirMap.length > 1) {\n\t\t// Use framework dirs (not generated subdirs) as input to commonAncestor\n\t\t// so the root directory actually exists on disk.\n\t\tserverRoot = commonAncestor(\n\t\t\tserverDirMap.map((entry) => entry.dir),\n\t\t\tprojectRoot\n\t\t);\n\t\tserverOutDir = buildPath;\n\t}\n\n\tconst publicPath =\n\t\tpublicDirectory && validateSafePath(publicDirectory, projectRoot);\n\tawait tracePhase('build-dir/create', () =>\n\t\tmkdirSync(buildPath, { recursive: true })\n\t);\n\n\tif (publicPath)\n\t\tawait tracePhase('public/copy', () =>\n\t\t\tcpSync(publicPath, buildPath, { force: true, recursive: true })\n\t\t);\n\n\t// Helper to find matching entry points for incremental files\n\t// The dependency graph already includes all dependent files in incrementalFiles\n\tconst filterToIncrementalEntries = (\n\t\tentryPoints: string[],\n\t\tmapToSource: (entry: string) => string | null\n\t) => {\n\t\tif (!isIncremental || !incrementalFiles) return entryPoints;\n\n\t\tconst normalizedIncremental = new Set(\n\t\t\tincrementalFiles.map((f) => resolve(f))\n\t\t);\n\t\tconst matchingEntries: string[] = [];\n\n\t\tfor (const entry of entryPoints) {\n\t\t\tconst sourceFile = mapToSource(entry);\n\t\t\tif (!sourceFile) continue;\n\t\t\tif (!normalizedIncremental.has(resolve(sourceFile))) continue;\n\t\t\tmatchingEntries.push(entry);\n\t\t}\n\n\t\treturn matchingEntries;\n\t};\n\n\t// For incremental React builds, only generate indexes for changed files\n\t// NOTE: We always regenerate index files to ensure they have the latest hydration error handling logic\n\tif (reactIndexesPath && reactPagesPath) {\n\t\t// Always regenerate React index files to ensure latest error handling is included\n\t\t// This is safe because index files are small and generation is fast\n\t\tawait tracePhase('react/index-generation', () =>\n\t\t\tgenerateReactIndexFiles(reactPagesPath, reactIndexesPath, hmr)\n\t\t);\n\t}\n\n\t// Copy assets on full builds or if assets changed\n\tif (\n\t\tassetsPath &&\n\t\t(!isIncremental ||\n\t\t\tnormalizedIncrementalFiles?.some((f) => f.includes('/assets/')))\n\t) {\n\t\tawait tracePhase('assets/copy', () =>\n\t\t\tcpSync(assetsPath, join(buildPath, 'assets'), {\n\t\t\t\tforce: true,\n\t\t\t\trecursive: true\n\t\t\t})\n\t\t);\n\t}\n\n\t// Tailwind + entry point scanning run in parallel (they're independent).\n\t// Tailwind also has to rerun whenever any file it scans for utility-class\n\t// candidates changes — that includes JS/TS/JSX/TSX/Vue/Svelte/HTML and the\n\t// other source extensions referenced via `@source`, not only stylesheets.\n\t// Without this, classes added to markup never show up in the emitted CSS.\n\tconst tailwindPromise =\n\t\ttailwind &&\n\t\t(!isIncremental ||\n\t\t\tnormalizedIncrementalFiles?.some(isTailwindCandidate))\n\t\t\t? tracePhase('tailwind/build', () =>\n\t\t\t\t\tcompileTailwindConfig(\n\t\t\t\t\t\ttailwind,\n\t\t\t\t\t\tbuildPath,\n\t\t\t\t\t\tstyleTransformConfig\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t: undefined;\n\n\tconst emptyConventionResult: {\n\t\tconventions: undefined;\n\t\tpageFiles: string[];\n\t} = {\n\t\tconventions: undefined,\n\t\tpageFiles: []\n\t};\n\tconst [\n\t\t,\n\t\tallReactEntries,\n\t\tallHtmlEntries,\n\t\treactConventionResult,\n\t\tsvelteConventionResult,\n\t\tvueConventionResult,\n\t\tangularConventionResult,\n\t\tallGlobalCssEntries\n\t] = await Promise.all([\n\t\ttailwindPromise,\n\t\treactIndexesPath\n\t\t\t? tracePhase('scan/react-indexes', () =>\n\t\t\t\t\tscanEntryPoints(reactIndexesPath, '*.tsx')\n\t\t\t\t)\n\t\t\t: [],\n\t\thtmlScriptsPath\n\t\t\t? tracePhase('scan/html-scripts', () =>\n\t\t\t\t\tscanEntryPoints(htmlScriptsPath, '*.{js,ts}')\n\t\t\t\t)\n\t\t\t: [],\n\t\treactPagesPath\n\t\t\t? tracePhase('scan/react-conventions', () =>\n\t\t\t\t\tscanConventions(reactPagesPath, '*.tsx')\n\t\t\t\t)\n\t\t\t: emptyConventionResult,\n\t\tsveltePagesPath\n\t\t\t? tracePhase('scan/svelte-conventions', () =>\n\t\t\t\t\tscanConventions(sveltePagesPath, '*.svelte')\n\t\t\t\t)\n\t\t\t: emptyConventionResult,\n\t\tvuePagesPath\n\t\t\t? tracePhase('scan/vue-conventions', () =>\n\t\t\t\t\tscanConventions(vuePagesPath, '*.vue')\n\t\t\t\t)\n\t\t\t: emptyConventionResult,\n\t\tangularPagesPath\n\t\t\t? tracePhase('scan/angular-conventions', () =>\n\t\t\t\t\tscanConventions(angularPagesPath, '*.ts')\n\t\t\t\t)\n\t\t\t: emptyConventionResult,\n\t\tstylesDir\n\t\t\t? tracePhase('scan/css', () =>\n\t\t\t\t\tscanCssEntryPoints(stylesDir, stylesIgnore)\n\t\t\t\t)\n\t\t\t: []\n\t]);\n\n\t// Convention files (colocated with pages) for error/loading/not-found\n\tconst allSvelteEntries = svelteConventionResult.pageFiles;\n\tconst allVueEntries = vueConventionResult.pageFiles;\n\tconst allAngularEntries = angularConventionResult.pageFiles;\n\n\tconst conventionsMap: ConventionsMap = {};\n\tif (reactConventionResult.conventions)\n\t\tconventionsMap.react = reactConventionResult.conventions;\n\tif (svelteConventionResult.conventions)\n\t\tconventionsMap.svelte = svelteConventionResult.conventions;\n\tif (vueConventionResult.conventions)\n\t\tconventionsMap.vue = vueConventionResult.conventions;\n\tif (angularConventionResult.conventions)\n\t\tconventionsMap.angular = angularConventionResult.conventions;\n\n\t// Warn if multiple frameworks define not-found convention files\n\tconst notFoundFrameworks = (\n\t\t['react', 'svelte', 'vue', 'angular'] as const\n\t).filter((framework) => conventionsMap[framework]?.defaults?.notFound);\n\tif (notFoundFrameworks.length > 1) {\n\t\tlogWarn(\n\t\t\t`Multiple frameworks define not-found convention files: ${notFoundFrameworks.join(', ')}. ` +\n\t\t\t\t`Only one will be used (priority: ${notFoundFrameworks[0]}). ` +\n\t\t\t\t`Remove not-found files from other frameworks to avoid ambiguity.`\n\t\t);\n\t}\n\t// When HTML/HTMX pages change, we must include their CSS and scripts in the build\n\t// so the manifest has those entries for updateAssetPaths. Otherwise incremental\n\t// builds drop them and updateAssetPaths fails with \"no manifest entry\".\n\tconst shouldIncludeHtmlAssets =\n\t\t!isIncremental ||\n\t\tnormalizedIncrementalFiles?.some(\n\t\t\t(f) =>\n\t\t\t\tf.includes('/html/') && (f.endsWith('.html') || isStylePath(f))\n\t\t);\n\t// Filter entries for incremental builds\n\t// For React: map index entries back to their source pages\n\tconst reactEntries =\n\t\tisIncremental && reactIndexesPath && reactPagesPath\n\t\t\t? filterToIncrementalEntries(allReactEntries, (entry) => {\n\t\t\t\t\t// Map index entry (indexes/ReactExample.tsx) to source page (pages/ReactExample.tsx)\n\t\t\t\t\tif (entry.startsWith(resolve(reactIndexesPath))) {\n\t\t\t\t\t\tconst pageName = basename(entry, '.tsx');\n\n\t\t\t\t\t\treturn join(reactPagesPath, `${pageName}.tsx`);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn null;\n\t\t\t\t})\n\t\t\t: allReactEntries;\n\n\tconst htmlEntries =\n\t\tisIncremental && htmlScriptsPath && !shouldIncludeHtmlAssets\n\t\t\t? filterToIncrementalEntries(allHtmlEntries, (entry) => entry)\n\t\t\t: allHtmlEntries;\n\n\t// For Svelte/Vue/Angular: entries are the page files themselves\n\tconst svelteEntries = isIncremental\n\t\t? filterToIncrementalEntries(allSvelteEntries, (entry) => entry)\n\t\t: allSvelteEntries;\n\n\tconst vueEntries = isIncremental\n\t\t? filterToIncrementalEntries(allVueEntries, (entry) => entry)\n\t\t: allVueEntries;\n\n\tconst angularEntries = isIncremental\n\t\t? filterToIncrementalEntries(allAngularEntries, (entry) => entry)\n\t\t: allAngularEntries;\n\n\t// CSS entries - entries are the style files themselves\n\tconst globalCssEntries = isIncremental\n\t\t? filterToIncrementalEntries(allGlobalCssEntries, (entry) => entry)\n\t\t: allGlobalCssEntries;\n\n\t// Start HMR client build early — it has no dependency on compile/bunBuild\n\t// results and will resolve during the compile phase for free.\n\tconst hmrClientBundlePromise =\n\t\thmr && (htmlDir || htmxDir) ? buildHMRClient() : undefined;\n\tconst allFrameworkDirs = [\n\t\treactDir,\n\t\tsvelteDir,\n\t\tvueDir,\n\t\tangularDir,\n\t\thtmlDir,\n\t\thtmxDir\n\t].filter((dir): dir is string => Boolean(dir));\n\tconst urlReferencedFilesPromise = tracePhase('scan/worker-references', () =>\n\t\tscanWorkerReferences(allFrameworkDirs)\n\t);\n\n\t// Angular HMR Optimization — Skip Svelte/Vue compilation when their entries are\n\t// empty during incremental builds (avoids importing/initializing unused compilers)\n\tconst shouldCompileSvelte = svelteDir && svelteEntries.length > 0;\n\tconst shouldCompileVue = vueDir && vueEntries.length > 0;\n\tconst shouldCompileAngular = angularDir && angularEntries.length > 0;\n\n\tconst emptyStringArray: string[] = [];\n\tconst islandBuildInfo = islandRegistryPath\n\t\t? await tracePhase('islands/registry', () =>\n\t\t\t\tloadIslandRegistryBuildInfo(islandRegistryPath)\n\t\t\t)\n\t\t: null;\n\tconst islandFrameworkSources = islandBuildInfo\n\t\t? collectIslandFrameworkSources(islandBuildInfo)\n\t\t: {};\n\tconst islandSvelteSources =\n\t\tislandFrameworkSources.svelte ?? emptyStringArray;\n\tconst islandVueSources = islandFrameworkSources.vue ?? emptyStringArray;\n\tconst islandAngularSources =\n\t\tislandFrameworkSources.angular ?? emptyStringArray;\n\tconst shouldCompileIslandSvelte =\n\t\tsvelteDir && islandSvelteSources.length > 0;\n\tconst shouldCompileIslandVue = vueDir && islandVueSources.length > 0;\n\tconst shouldCompileIslandAngular =\n\t\tangularDir && islandAngularSources.length > 0;\n\n\tconst [\n\t\t{ svelteServerPaths, svelteIndexPaths, svelteClientPaths },\n\t\t{ vueServerPaths, vueIndexPaths, vueClientPaths, vueCssPaths },\n\t\t{ clientPaths: angularClientPaths, serverPaths: angularServerPaths },\n\t\t{ svelteClientPaths: islandSvelteClientPaths },\n\t\t{ vueClientPaths: islandVueClientPaths },\n\t\t{ clientPaths: islandAngularClientPaths }\n\t] = await Promise.all([\n\t\tshouldCompileSvelte\n\t\t\t? tracePhase('compile/svelte', () =>\n\t\t\t\t\timport('../build/compileSvelte').then((mod) =>\n\t\t\t\t\t\tmod.compileSvelte(\n\t\t\t\t\t\t\tsvelteEntries,\n\t\t\t\t\t\t\tsvelteDir,\n\t\t\t\t\t\t\tnew Map(),\n\t\t\t\t\t\t\thmr,\n\t\t\t\t\t\t\tstyleTransformConfig\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t: {\n\t\t\t\t\tsvelteClientPaths: [...emptyStringArray],\n\t\t\t\t\tsvelteIndexPaths: [...emptyStringArray],\n\t\t\t\t\tsvelteServerPaths: [...emptyStringArray]\n\t\t\t\t},\n\t\tshouldCompileVue\n\t\t\t? tracePhase('compile/vue', () =>\n\t\t\t\t\timport('../build/compileVue').then((mod) =>\n\t\t\t\t\t\tmod.compileVue(\n\t\t\t\t\t\t\tvueEntries,\n\t\t\t\t\t\t\tvueDir,\n\t\t\t\t\t\t\thmr,\n\t\t\t\t\t\t\tstyleTransformConfig\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t: {\n\t\t\t\t\tvueClientPaths: [...emptyStringArray],\n\t\t\t\t\tvueCssPaths: [...emptyStringArray],\n\t\t\t\t\tvueIndexPaths: [...emptyStringArray],\n\t\t\t\t\tvueServerPaths: [...emptyStringArray]\n\t\t\t\t},\n\t\tshouldCompileAngular\n\t\t\t? tracePhase('compile/angular', () =>\n\t\t\t\t\timport('../build/compileAngular').then((mod) =>\n\t\t\t\t\t\tmod.compileAngular(\n\t\t\t\t\t\t\tangularEntries,\n\t\t\t\t\t\t\tangularDir,\n\t\t\t\t\t\t\thmr,\n\t\t\t\t\t\t\tstyleTransformConfig\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t: {\n\t\t\t\t\tclientPaths: [...emptyStringArray],\n\t\t\t\t\tserverPaths: [...emptyStringArray]\n\t\t\t\t},\n\t\tshouldCompileIslandSvelte\n\t\t\t? tracePhase('compile/island-svelte', () =>\n\t\t\t\t\timport('../build/compileSvelte').then((mod) =>\n\t\t\t\t\t\tmod.compileSvelte(\n\t\t\t\t\t\t\tislandSvelteSources,\n\t\t\t\t\t\t\tsvelteDir,\n\t\t\t\t\t\t\tnew Map(),\n\t\t\t\t\t\t\thmr,\n\t\t\t\t\t\t\tstyleTransformConfig\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t: {\n\t\t\t\t\tsvelteClientPaths: [...emptyStringArray]\n\t\t\t\t},\n\t\tshouldCompileIslandVue\n\t\t\t? tracePhase('compile/island-vue', () =>\n\t\t\t\t\timport('../build/compileVue').then((mod) =>\n\t\t\t\t\t\tmod.compileVue(\n\t\t\t\t\t\t\tislandVueSources,\n\t\t\t\t\t\t\tvueDir,\n\t\t\t\t\t\t\thmr,\n\t\t\t\t\t\t\tstyleTransformConfig\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t: {\n\t\t\t\t\tvueClientPaths: [...emptyStringArray]\n\t\t\t\t},\n\t\tshouldCompileIslandAngular\n\t\t\t? tracePhase('compile/island-angular', () =>\n\t\t\t\t\timport('../build/compileAngular').then((mod) =>\n\t\t\t\t\t\tmod.compileAngular(\n\t\t\t\t\t\t\tislandAngularSources,\n\t\t\t\t\t\t\tangularDir,\n\t\t\t\t\t\t\thmr,\n\t\t\t\t\t\t\tstyleTransformConfig\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t: {\n\t\t\t\t\tclientPaths: [...emptyStringArray]\n\t\t\t\t}\n\t]);\n\n\tconst islandSvelteClientPathMap = new Map<string, string>();\n\tfor (let idx = 0; idx < islandSvelteSources.length; idx++) {\n\t\tconst sourcePath = islandSvelteSources[idx];\n\t\tconst clientPath = islandSvelteClientPaths[idx];\n\t\tif (!sourcePath || !clientPath) continue;\n\t\tislandSvelteClientPathMap.set(resolve(sourcePath), clientPath);\n\t}\n\n\tconst islandVueClientPathMap = new Map<string, string>();\n\tfor (let idx = 0; idx < islandVueSources.length; idx++) {\n\t\tconst sourcePath = islandVueSources[idx];\n\t\tconst clientPath = islandVueClientPaths[idx];\n\t\tif (!sourcePath || !clientPath) continue;\n\t\tislandVueClientPathMap.set(resolve(sourcePath), clientPath);\n\t}\n\n\tconst islandAngularClientPathMap = new Map<string, string>();\n\tfor (let idx = 0; idx < islandAngularSources.length; idx++) {\n\t\tconst sourcePath = islandAngularSources[idx];\n\t\tconst clientPath = islandAngularClientPaths[idx];\n\t\tif (!sourcePath || !clientPath) continue;\n\t\tislandAngularClientPathMap.set(resolve(sourcePath), clientPath);\n\t}\n\n\t// Compile convention files (error/loading/not-found) into build/conventions/\n\t// so runtime SSR can import them from the build output instead of source.\n\tconst reactConventionSources = collectConventionSourceFiles(\n\t\tconventionsMap.react\n\t);\n\tconst svelteConventionSources = collectConventionSourceFiles(\n\t\tconventionsMap.svelte\n\t);\n\tconst vueConventionSources = collectConventionSourceFiles(\n\t\tconventionsMap.vue\n\t);\n\tconst angularConventionSources = collectConventionSourceFiles(\n\t\tconventionsMap.angular\n\t);\n\tlet conventionOutputPaths: string[] = [];\n\n\tif (\n\t\treactConventionSources.length > 0 ||\n\t\tsvelteConventionSources.length > 0 ||\n\t\tvueConventionSources.length > 0 ||\n\t\tangularConventionSources.length > 0\n\t) {\n\t\tconst compileReactConventions = async () => {\n\t\t\tif (reactConventionSources.length === 0) return emptyStringArray;\n\n\t\t\tconst destDir = join(buildPath, 'conventions', 'react');\n\t\t\trmSync(destDir, { force: true, recursive: true });\n\t\t\tmkdirSync(destDir, { recursive: true });\n\n\t\t\tconst destPaths: string[] = [];\n\t\t\tfor (let idx = 0; idx < reactConventionSources.length; idx++) {\n\t\t\t\tconst source = reactConventionSources[idx];\n\t\t\t\tif (!source) continue;\n\n\t\t\t\tconst result = await bunBuild({\n\t\t\t\t\tentrypoints: [source],\n\t\t\t\t\tformat: 'esm',\n\t\t\t\t\tjsx: { development: false },\n\t\t\t\t\tminify: !isDev,\n\t\t\t\t\tnaming: `${idx}-[name].[ext]`,\n\t\t\t\t\toutdir: destDir,\n\t\t\t\t\tplugins: [stylePreprocessorPlugin],\n\t\t\t\t\troot: dirname(source),\n\t\t\t\t\ttarget: 'bun',\n\t\t\t\t\tthrow: false,\n\t\t\t\t\ttsconfig: './tsconfig.json'\n\t\t\t\t});\n\t\t\t\tif (!result.success) {\n\t\t\t\t\toutputLogs(result.logs);\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Failed to compile React convention: ${source}`\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst output = result.outputs.find((artifact) =>\n\t\t\t\t\tartifact.path.endsWith('.js')\n\t\t\t\t);\n\t\t\t\tif (!output)\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`React convention did not emit JavaScript: ${source}`\n\t\t\t\t\t);\n\n\t\t\t\tdestPaths.push(output.path);\n\t\t\t}\n\n\t\t\treturn destPaths;\n\t\t};\n\n\t\tconst [\n\t\t\treactConvPaths,\n\t\t\tsvelteConvResult,\n\t\t\tvueConvResult,\n\t\t\tangularConvResult\n\t\t] = await Promise.all([\n\t\t\ttracePhase('compile/convention-react', compileReactConventions),\n\t\t\tsvelteConventionSources.length > 0 && svelteDir\n\t\t\t\t? tracePhase('compile/convention-svelte', () =>\n\t\t\t\t\t\timport('../build/compileSvelte').then((mod) =>\n\t\t\t\t\t\t\tmod.compileSvelte(\n\t\t\t\t\t\t\t\tsvelteConventionSources,\n\t\t\t\t\t\t\t\tsvelteDir,\n\t\t\t\t\t\t\t\tnew Map(),\n\t\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t\t\tstyleTransformConfig\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t: { svelteServerPaths: emptyStringArray },\n\t\t\tvueConventionSources.length > 0 && vueDir\n\t\t\t\t? tracePhase('compile/convention-vue', () =>\n\t\t\t\t\t\timport('../build/compileVue').then((mod) =>\n\t\t\t\t\t\t\tmod.compileVue(\n\t\t\t\t\t\t\t\tvueConventionSources,\n\t\t\t\t\t\t\t\tvueDir,\n\t\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t\t\tstyleTransformConfig\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t: { vueServerPaths: emptyStringArray },\n\t\t\tangularConventionSources.length > 0 && angularDir\n\t\t\t\t? tracePhase('compile/convention-angular', () =>\n\t\t\t\t\t\timport('../build/compileAngular').then((mod) =>\n\t\t\t\t\t\t\tmod.compileAngular(\n\t\t\t\t\t\t\t\tangularConventionSources,\n\t\t\t\t\t\t\t\tangularDir,\n\t\t\t\t\t\t\t\thmr,\n\t\t\t\t\t\t\t\tstyleTransformConfig\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t: { serverPaths: emptyStringArray }\n\t\t]);\n\n\t\t// Bundle compiled convention files to build/conventions/{framework}/\n\t\t// so compiled executables can import them from the materialized runtime\n\t\t// directory without relying on the app's node_modules tree.\n\t\tconst bundleConventionFiles = async (\n\t\t\tframework: string,\n\t\t\tcompiledPaths: string[]\n\t\t) => {\n\t\t\tconst destDir = join(buildPath, 'conventions', framework);\n\t\t\trmSync(destDir, { force: true, recursive: true });\n\t\t\tmkdirSync(destDir, { recursive: true });\n\t\t\tconst destPaths: string[] = [];\n\t\t\tfor (let idx = 0; idx < compiledPaths.length; idx++) {\n\t\t\t\tconst compiledPath = compiledPaths[idx];\n\t\t\t\tif (!compiledPath) continue;\n\t\t\t\tconst name = basename(compiledPath).replace(/\\.[^.]+$/, '');\n\t\t\t\tconst result = await bunBuild({\n\t\t\t\t\tentrypoints: [compiledPath],\n\t\t\t\t\tformat: 'esm',\n\t\t\t\t\tminify: !isDev,\n\t\t\t\t\tnaming: `${idx}-${name}.[ext]`,\n\t\t\t\t\toutdir: destDir,\n\t\t\t\t\tsplitting: false,\n\t\t\t\t\ttarget: 'bun',\n\t\t\t\t\tthrow: false\n\t\t\t\t});\n\t\t\t\tif (!result.success) {\n\t\t\t\t\toutputLogs(result.logs);\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Failed to bundle ${framework} convention: ${compiledPath}`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst output = result.outputs.find((artifact) =>\n\t\t\t\t\tartifact.path.endsWith('.js')\n\t\t\t\t);\n\t\t\t\tif (!output)\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`${framework} convention did not emit JavaScript: ${compiledPath}`\n\t\t\t\t\t);\n\n\t\t\t\tdestPaths.push(output.path);\n\t\t\t}\n\n\t\t\treturn destPaths;\n\t\t};\n\n\t\tconst [svelteDests, vueDests, angularDests] = await Promise.all([\n\t\t\ttracePhase('bundle/convention-svelte', () =>\n\t\t\t\tbundleConventionFiles(\n\t\t\t\t\t'svelte',\n\t\t\t\t\tsvelteConvResult.svelteServerPaths\n\t\t\t\t)\n\t\t\t),\n\t\t\ttracePhase('bundle/convention-vue', () =>\n\t\t\t\tbundleConventionFiles('vue', vueConvResult.vueServerPaths)\n\t\t\t),\n\t\t\ttracePhase('bundle/convention-angular', () =>\n\t\t\t\tbundleConventionFiles('angular', angularConvResult.serverPaths)\n\t\t\t)\n\t\t]);\n\t\tconventionOutputPaths = [\n\t\t\t...reactConvPaths,\n\t\t\t...svelteDests,\n\t\t\t...vueDests,\n\t\t\t...angularDests\n\t\t];\n\n\t\tupdateConventionCompiledPaths(\n\t\t\tconventionsMap.react,\n\t\t\treactConventionSources,\n\t\t\treactConvPaths\n\t\t);\n\t\tupdateConventionCompiledPaths(\n\t\t\tconventionsMap.svelte,\n\t\t\tsvelteConventionSources,\n\t\t\tsvelteDests\n\t\t);\n\t\tupdateConventionCompiledPaths(\n\t\t\tconventionsMap.vue,\n\t\t\tvueConventionSources,\n\t\t\tvueDests\n\t\t);\n\t\tupdateConventionCompiledPaths(\n\t\t\tconventionsMap.angular,\n\t\t\tangularConventionSources,\n\t\t\tangularDests\n\t\t);\n\t}\n\n\tconst serverEntryPoints = [\n\t\t...svelteServerPaths,\n\t\t...vueServerPaths,\n\t\t...angularServerPaths\n\t];\n\tconst reactClientEntryPoints = [...reactEntries];\n\t// Scan for files referenced by new URL('./path', import.meta.url) — these\n\t// are regular files (e.g. workers) that Bun.build won't follow automatically.\n\tconst urlReferencedFiles = await urlReferencedFilesPromise;\n\n\tconst nonReactClientEntryPoints = [\n\t\t...svelteIndexPaths,\n\t\t...svelteClientPaths,\n\t\t...htmlEntries,\n\t\t...vueIndexPaths,\n\t\t...vueClientPaths,\n\t\t...angularClientPaths,\n\t\t...(islandBootstrapPath ? [islandBootstrapPath] : []),\n\t\t...urlReferencedFiles\n\t];\n\tconst islandEntryResult = islandBuildInfo\n\t\t? await tracePhase('islands/client-entry-generation', () =>\n\t\t\t\tgenerateIslandEntryPoints({\n\t\t\t\t\tbuildInfo: islandBuildInfo,\n\t\t\t\t\tbuildPath,\n\t\t\t\t\tclientPathMaps: {\n\t\t\t\t\t\tangular: islandAngularClientPathMap,\n\t\t\t\t\t\tsvelte: islandSvelteClientPathMap,\n\t\t\t\t\t\tvue: islandVueClientPathMap\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t)\n\t\t: {\n\t\t\t\tentries: [],\n\t\t\t\tgeneratedRoot: join(buildPath, '_island_entries')\n\t\t\t};\n\tconst islandClientEntryPoints = islandEntryResult.entries.map(\n\t\t(entry) => entry.entryPath\n\t);\n\n\tif (\n\t\tserverEntryPoints.length === 0 &&\n\t\treactClientEntryPoints.length === 0 &&\n\t\tnonReactClientEntryPoints.length === 0 &&\n\t\tislandClientEntryPoints.length === 0 &&\n\t\thtmxDir === undefined &&\n\t\thtmlDir === undefined\n\t) {\n\t\tlogWarn('No entry points found, manifest will be empty');\n\t\tsendTelemetryEvent('build:empty', {\n\t\t\tconfiguredDirs: {\n\t\t\t\tangular: Boolean(angularDir),\n\t\t\t\thtml: Boolean(htmlDir),\n\t\t\t\thtmx: Boolean(htmxDir),\n\t\t\t\treact: Boolean(reactDir),\n\t\t\t\tsvelte: Boolean(svelteDir),\n\t\t\t\tvue: Boolean(vueDir)\n\t\t\t},\n\t\t\tfilteredEntries: {\n\t\t\t\tangular: angularEntries.length,\n\t\t\t\thtml: htmlEntries.length,\n\t\t\t\treact: reactEntries.length,\n\t\t\t\tsvelte: svelteEntries.length,\n\t\t\t\tvue: vueEntries.length\n\t\t\t},\n\t\t\tframeworks: frameworkNames,\n\t\t\tincremental: Boolean(isIncremental),\n\t\t\tmode: mode ?? (isDev ? 'development' : 'production'),\n\t\t\tscannedEntries: {\n\t\t\t\tangular: allAngularEntries.length,\n\t\t\t\thtml: allHtmlEntries.length,\n\t\t\t\treact: allReactEntries.length,\n\t\t\t\tsvelte: allSvelteEntries.length,\n\t\t\t\tvue: allVueEntries.length\n\t\t\t}\n\t\t});\n\t\twriteBuildTrace(buildPath);\n\n\t\treturn {};\n\t}\n\n\t// In dev, add the _refresh entry to force React into a shared chunk\n\t// so HMR can re-import component entries without duplicating React.\n\t// Only add when React entries exist (i.e. React files actually changed\n\t// or this is a full build) to avoid producing stale React outputs\n\t// during non-React incremental rebuilds.\n\tif (hmr && reactIndexesPath && reactClientEntryPoints.length > 0) {\n\t\tconst refreshEntry = join(reactIndexesPath, '_refresh.tsx');\n\t\tif (!reactClientEntryPoints.includes(refreshEntry))\n\t\t\treactClientEntryPoints.push(refreshEntry);\n\t}\n\n\t// In dev mode, externalize React so imports get rewritten to stable\n\t// vendor file paths. If module-level state was lost (Bun --hot\n\t// re-evaluated devVendorPaths.ts), recompute and restore it.\n\tlet vendorPaths = getDevVendorPaths();\n\tif (!vendorPaths && hmr && reactDir) {\n\t\tconst { computeVendorPaths } = await import(\n\t\t\t'../build/buildReactVendor'\n\t\t);\n\t\tvendorPaths = computeVendorPaths();\n\t\tsetDevVendorPaths(vendorPaths);\n\t}\n\tlet angularVendorPaths = getAngularVendorPaths();\n\tif (!angularVendorPaths && hmr && angularDir) {\n\t\tconst { computeAngularVendorPaths } = await import(\n\t\t\t'../build/buildAngularVendor'\n\t\t);\n\t\tangularVendorPaths = computeAngularVendorPaths(\n\t\t\tglobalThis.__angularVendorSpecifiers\n\t\t);\n\t\tsetAngularVendorPaths(angularVendorPaths);\n\t}\n\tlet angularServerVendorPaths = getAngularServerVendorPaths();\n\tif (!angularServerVendorPaths && hmr && angularDir) {\n\t\tconst { computeAngularServerVendorPaths } = await import(\n\t\t\t'../build/buildAngularVendor'\n\t\t);\n\t\tangularServerVendorPaths = computeAngularServerVendorPaths(\n\t\t\tbuildPath,\n\t\t\tglobalThis.__angularVendorSpecifiers ?? []\n\t\t);\n\t\tsetAngularServerVendorPaths(angularServerVendorPaths);\n\t}\n\t// Production: dev pre-builds vendor in devBuild.ts; prod has no\n\t// equivalent step, so do it here. Build the linked Angular vendor\n\t// (browser + server targets) ahead of the main bundle pass so\n\t// `rewriteImports` has a populated path map. linkerJitMode=false\n\t// because user pages are AOT-compiled in prod and have\n\t// `ɵcmp.dependencies` baked in — keeping NgModule.declarations\n\t// would just be dead bytes.\n\tif (!hmr && angularDir) {\n\t\tconst angularSourceDirs = [\n\t\t\tangularDir,\n\t\t\treactDir,\n\t\t\tsvelteDir,\n\t\t\tvueDir,\n\t\t\thtmlDir,\n\t\t\thtmxDir\n\t\t].filter((dir): dir is string => Boolean(dir));\n\t\tconst {\n\t\t\tbuildAngularVendor,\n\t\t\tbuildAngularServerVendor,\n\t\t\tcomputeAngularVendorPathsAsync,\n\t\t\tcomputeAngularServerVendorPathsAsync\n\t\t} = await import('../build/buildAngularVendor');\n\n\t\t[angularVendorPaths, angularServerVendorPaths] = await Promise.all([\n\t\t\tcomputeAngularVendorPathsAsync(angularSourceDirs),\n\t\t\tcomputeAngularServerVendorPathsAsync(buildPath, angularSourceDirs)\n\t\t]);\n\t\tsetAngularVendorPaths(angularVendorPaths);\n\t\tsetAngularServerVendorPaths(angularServerVendorPaths);\n\n\t\tawait Promise.all([\n\t\t\tbuildAngularVendor(\n\t\t\t\tbuildPath,\n\t\t\t\tangularSourceDirs,\n\t\t\t\t/* linkerJitMode */ false,\n\t\t\t\t[]\n\t\t\t),\n\t\t\tbuildAngularServerVendor(\n\t\t\t\tbuildPath,\n\t\t\t\tangularSourceDirs,\n\t\t\t\t/* linkerJitMode */ false\n\t\t\t)\n\t\t]);\n\n\t\t// `getAngularDeps` reads ABSOLUTE_BUILD_DIR to find the server\n\t\t// vendor at runtime. The CLI's `start` script sets this for the\n\t\t// production server, but if `build()` is invoked directly without\n\t\t// going through `start`, we still want the runtime to find vendor.\n\t\tprocess.env.ABSOLUTE_BUILD_DIR ??= buildPath;\n\t}\n\tlet vueVendorPaths = getVueVendorPaths();\n\tif (!vueVendorPaths && hmr && vueDir) {\n\t\tconst { computeVueVendorPaths } = await import(\n\t\t\t'../build/buildVueVendor'\n\t\t);\n\t\tvueVendorPaths = computeVueVendorPaths();\n\t\tsetVueVendorPaths(vueVendorPaths);\n\t}\n\tlet svelteVendorPaths = getSvelteVendorPaths();\n\tif (!svelteVendorPaths && hmr && svelteDir) {\n\t\tconst { computeSvelteVendorPaths } = await import(\n\t\t\t'../build/buildSvelteVendor'\n\t\t);\n\t\tsvelteVendorPaths = computeSvelteVendorPaths();\n\t\tsetSvelteVendorPaths(svelteVendorPaths);\n\t}\n\tconst depVendorPaths =\n\t\thmr && globalThis.__depVendorPaths ? globalThis.__depVendorPaths : {};\n\tconst reactExternalPaths: Record<string, string> = {\n\t\t...(vendorPaths ?? {}),\n\t\t...depVendorPaths\n\t};\n\tconst nonReactExternalPaths: Record<string, string> = {\n\t\t...reactExternalPaths,\n\t\t...(angularVendorPaths ?? {}),\n\t\t...(vueVendorPaths ?? {}),\n\t\t...(svelteVendorPaths ?? {})\n\t};\n\tconst serverBuildExternals = [\n\t\t'react',\n\t\t'react/*',\n\t\t'react-dom',\n\t\t'react-dom/*',\n\t\t'svelte',\n\t\t'svelte/*',\n\t\t'vue',\n\t\t'vue/*',\n\t\t// Always externalize @angular/* — bundling them duplicates Angular's\n\t\t// runtime classes (EnvironmentInjector, etc.) into the page bundle.\n\t\t// `inject(EnvironmentInjector)` from a standalone component then\n\t\t// looks up the bundled class, but the actual injector instance was\n\t\t// created by the node_modules class — different identity, NG0201.\n\t\t// Partial AOT declarations are handled at runtime via the\n\t\t// `getCompilerFacade` autoload patch in injectorPatch.ts.\n\t\t'@angular/*',\n\t\t'typescript'\n\t];\n\n\tconst htmlScriptPlugin = hmr\n\t\t? createHTMLScriptHMRPlugin(htmlDir, htmxDir)\n\t\t: undefined;\n\tconst reactBuildConfig: Parameters<typeof bunBuild>[0] | undefined =\n\t\treactClientEntryPoints.length > 0\n\t\t\t? mergeBunBuildConfig(\n\t\t\t\t\t{\n\t\t\t\t\t\tentrypoints: reactClientEntryPoints,\n\t\t\t\t\t\t...(Object.keys(reactExternalPaths).length > 0\n\t\t\t\t\t\t\t? { external: Object.keys(reactExternalPaths) }\n\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\tformat: 'esm',\n\t\t\t\t\t\tminify: !isDev,\n\t\t\t\t\t\tnaming: `[dir]/[name].[hash].[ext]`,\n\t\t\t\t\t\toutdir: buildPath,\n\t\t\t\t\t\t...(hmr\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\tjsx: { development: true },\n\t\t\t\t\t\t\t\t\treactFastRefresh: true\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\tplugins: [stylePreprocessorPlugin],\n\t\t\t\t\t\troot: clientRoot,\n\t\t\t\t\t\tsplitting: true,\n\t\t\t\t\t\ttarget: 'browser',\n\t\t\t\t\t\tthrow: false\n\t\t\t\t\t},\n\t\t\t\t\tresolveBunBuildOverride(bunBuildConfig, 'reactClient')\n\t\t\t\t)\n\t\t\t: undefined;\n\n\t// Remove old hashed indexes before bundling so stale files\n\t// from previous builds don't accumulate in dist/.\n\tif (reactDir && reactClientEntryPoints.length > 0) {\n\t\trmSync(join(buildPath, 'react', 'generated', 'indexes'), {\n\t\t\tforce: true,\n\t\t\trecursive: true\n\t\t});\n\t}\n\tif (angularDir && angularClientPaths.length > 0) {\n\t\trmSync(join(buildPath, 'angular', 'indexes'), {\n\t\t\tforce: true,\n\t\t\trecursive: true\n\t\t});\n\t}\n\tif (islandClientEntryPoints.length > 0) {\n\t\trmSync(join(buildPath, 'islands'), {\n\t\t\tforce: true,\n\t\t\trecursive: true\n\t\t});\n\t}\n\n\t// Run all 4 Bun.build passes in parallel — they write to different\n\t// directories and have independent entry points.\n\tconst [\n\t\tserverResult,\n\t\treactClientResult,\n\t\tnonReactClientResult,\n\t\tislandClientResult,\n\t\tglobalCssResult,\n\t\tvueCssResult\n\t] = await Promise.all([\n\t\tserverEntryPoints.length > 0\n\t\t\t? tracePhase('bun/server', () =>\n\t\t\t\t\tbunBuild(\n\t\t\t\t\t\tmergeBunBuildConfig(\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tentrypoints: serverEntryPoints,\n\t\t\t\t\t\t\t\texternal: serverBuildExternals,\n\t\t\t\t\t\t\t\tformat: 'esm',\n\t\t\t\t\t\t\t\tnaming: `[dir]/[name].[hash].[ext]`,\n\t\t\t\t\t\t\t\toutdir: serverOutDir,\n\t\t\t\t\t\t\t\tplugins: [stylePreprocessorPlugin],\n\t\t\t\t\t\t\t\troot: serverRoot,\n\t\t\t\t\t\t\t\ttarget: 'bun',\n\t\t\t\t\t\t\t\tthrow: false,\n\t\t\t\t\t\t\t\ttsconfig: './tsconfig.json'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tresolveBunBuildOverride(bunBuildConfig, 'server')\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t: undefined,\n\t\treactBuildConfig\n\t\t\t? tracePhase('bun/react-client', () => bunBuild(reactBuildConfig))\n\t\t\t: undefined,\n\t\tnonReactClientEntryPoints.length > 0\n\t\t\t? tracePhase('bun/non-react-client', () =>\n\t\t\t\t\tbunBuild(\n\t\t\t\t\t\tmergeBunBuildConfig(\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdefine: vueDirectory\n\t\t\t\t\t\t\t\t\t? vueFeatureFlags\n\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\t\tentrypoints: nonReactClientEntryPoints,\n\t\t\t\t\t\t\t\texternal: Object.keys(nonReactExternalPaths),\n\t\t\t\t\t\t\t\tformat: 'esm',\n\t\t\t\t\t\t\t\tminify: !isDev,\n\t\t\t\t\t\t\t\tnaming: `[dir]/[name].[hash].[ext]`,\n\t\t\t\t\t\t\t\toutdir: buildPath,\n\t\t\t\t\t\t\t\tplugins: [\n\t\t\t\t\t\t\t\t\tstylePreprocessorPlugin,\n\t\t\t\t\t\t\t\t\t...(angularDir\n\t\t\t\t\t\t\t\t\t\t? [createAngularLinkerPlugin(hmr)]\n\t\t\t\t\t\t\t\t\t\t: []),\n\t\t\t\t\t\t\t\t\t...(htmlScriptPlugin\n\t\t\t\t\t\t\t\t\t\t? [htmlScriptPlugin]\n\t\t\t\t\t\t\t\t\t\t: [])\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\troot: clientRoot,\n\t\t\t\t\t\t\t\tsplitting: !isDev,\n\t\t\t\t\t\t\t\ttarget: 'browser',\n\t\t\t\t\t\t\t\tthrow: false,\n\t\t\t\t\t\t\t\ttsconfig: './tsconfig.json'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tresolveBunBuildOverride(\n\t\t\t\t\t\t\t\tbunBuildConfig,\n\t\t\t\t\t\t\t\t'nonReactClient'\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t: undefined,\n\t\tislandClientEntryPoints.length > 0\n\t\t\t? tracePhase('bun/island-client', () =>\n\t\t\t\t\tbunBuild(\n\t\t\t\t\t\tmergeBunBuildConfig(\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdefine: vueDirectory\n\t\t\t\t\t\t\t\t\t? vueFeatureFlags\n\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\t\tentrypoints: islandClientEntryPoints,\n\t\t\t\t\t\t\t\texternal: Object.keys(nonReactExternalPaths),\n\t\t\t\t\t\t\t\tformat: 'esm',\n\t\t\t\t\t\t\t\tminify: !isDev,\n\t\t\t\t\t\t\t\tnaming: `[dir]/[name].[hash].[ext]`,\n\t\t\t\t\t\t\t\toutdir: buildPath,\n\t\t\t\t\t\t\t\tplugins: [\n\t\t\t\t\t\t\t\t\tstylePreprocessorPlugin,\n\t\t\t\t\t\t\t\t\t...(angularDir\n\t\t\t\t\t\t\t\t\t\t? [createAngularLinkerPlugin(hmr)]\n\t\t\t\t\t\t\t\t\t\t: [])\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\troot: islandEntryResult.generatedRoot,\n\t\t\t\t\t\t\t\tsplitting: !isDev,\n\t\t\t\t\t\t\t\ttarget: 'browser',\n\t\t\t\t\t\t\t\tthrow: false,\n\t\t\t\t\t\t\t\ttsconfig: './tsconfig.json'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tresolveBunBuildOverride(\n\t\t\t\t\t\t\t\tbunBuildConfig,\n\t\t\t\t\t\t\t\t'islandClient'\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t: undefined,\n\t\tglobalCssEntries.length > 0\n\t\t\t? tracePhase('bun/global-css', () =>\n\t\t\t\t\tbunBuild(\n\t\t\t\t\t\tmergeBunBuildConfig(\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tentrypoints: globalCssEntries,\n\t\t\t\t\t\t\t\tnaming: `[dir]/[name].[hash].[ext]`,\n\t\t\t\t\t\t\t\toutdir: stylesDir\n\t\t\t\t\t\t\t\t\t? join(buildPath, basename(stylesDir))\n\t\t\t\t\t\t\t\t\t: buildPath,\n\t\t\t\t\t\t\t\tplugins: [stylePreprocessorPlugin],\n\t\t\t\t\t\t\t\troot: stylesDir || clientRoot,\n\t\t\t\t\t\t\t\ttarget: 'browser',\n\t\t\t\t\t\t\t\tthrow: false\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tresolveBunBuildOverride(bunBuildConfig, 'globalCss')\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t: undefined,\n\t\tvueCssPaths.length > 0\n\t\t\t? tracePhase('bun/vue-css', () =>\n\t\t\t\t\tbunBuild(\n\t\t\t\t\t\tmergeBunBuildConfig(\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tentrypoints: vueCssPaths,\n\t\t\t\t\t\t\t\tnaming: `[name].[hash].[ext]`,\n\t\t\t\t\t\t\t\toutdir: join(\n\t\t\t\t\t\t\t\t\tbuildPath,\n\t\t\t\t\t\t\t\t\tassetsPath\n\t\t\t\t\t\t\t\t\t\t? basename(assetsPath)\n\t\t\t\t\t\t\t\t\t\t: 'assets',\n\t\t\t\t\t\t\t\t\t'css'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\ttarget: 'browser',\n\t\t\t\t\t\t\t\tthrow: false\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tresolveBunBuildOverride(bunBuildConfig, 'vueCss')\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t: undefined\n\t]);\n\n\tconst serverLogs = serverResult?.logs ?? [];\n\tconst serverOutputs = serverResult?.outputs ?? [];\n\n\tif (serverResult && !serverResult.success && serverLogs.length > 0) {\n\t\textractBuildError(\n\t\t\tserverLogs,\n\t\t\t'server',\n\t\t\t'Server',\n\t\t\tframeworkNames,\n\t\t\tisIncremental,\n\t\t\tthrowOnError\n\t\t);\n\t}\n\n\tconst reactClientLogs = reactClientResult?.logs ?? [];\n\tconst reactClientOutputs = reactClientResult?.outputs ?? [];\n\n\tif (\n\t\treactClientResult &&\n\t\t!reactClientResult.success &&\n\t\treactClientLogs.length > 0\n\t) {\n\t\textractBuildError(\n\t\t\treactClientLogs,\n\t\t\t'react-client',\n\t\t\t'React client',\n\t\t\tframeworkNames,\n\t\t\tisIncremental,\n\t\t\tthrowOnError\n\t\t);\n\t}\n\n\tconst reactClientOutputPaths = reactClientOutputs.map(\n\t\t(artifact) => artifact.path\n\t);\n\n\tif (vendorPaths && reactClientOutputPaths.length > 0) {\n\t\tawait tracePhase('postprocess/react-imports', () =>\n\t\t\trewriteReactImports(reactClientOutputPaths, vendorPaths)\n\t\t);\n\t}\n\n\tif (hmr && reactClientOutputPaths.length > 0) {\n\t\tawait tracePhase('postprocess/react-refresh-globals', () =>\n\t\t\tpatchRefreshGlobals(reactClientOutputPaths)\n\t\t);\n\t}\n\n\tconst nonReactClientLogs = nonReactClientResult?.logs ?? [];\n\tconst nonReactClientOutputs = nonReactClientResult?.outputs ?? [];\n\tconst nonReactClientOutputPaths = nonReactClientOutputs.map(\n\t\t(artifact) => artifact.path\n\t);\n\tconst islandClientLogs = islandClientResult?.logs ?? [];\n\tconst islandClientOutputs = islandClientResult?.outputs ?? [];\n\tconst islandClientOutputPaths = islandClientOutputs.map(\n\t\t(artifact) => artifact.path\n\t);\n\n\tif (vendorPaths && nonReactClientOutputPaths.length > 0) {\n\t\tawait tracePhase('postprocess/non-react-react-imports', () =>\n\t\t\trewriteReactImports(nonReactClientOutputPaths, vendorPaths)\n\t\t);\n\t}\n\tif (hmr && nonReactClientOutputPaths.length > 0) {\n\t\tawait tracePhase('postprocess/non-react-refresh-globals', () =>\n\t\t\tpatchRefreshGlobals(nonReactClientOutputPaths)\n\t\t);\n\t}\n\n\tif (vendorPaths && islandClientOutputPaths.length > 0) {\n\t\tawait tracePhase('postprocess/island-react-imports', () =>\n\t\t\trewriteReactImports(islandClientOutputPaths, vendorPaths)\n\t\t);\n\t}\n\tif (hmr && islandClientOutputPaths.length > 0) {\n\t\tawait tracePhase('postprocess/island-refresh-globals', () =>\n\t\t\tpatchRefreshGlobals(islandClientOutputPaths)\n\t\t);\n\t}\n\n\tif (\n\t\tnonReactClientResult &&\n\t\t!nonReactClientResult.success &&\n\t\tnonReactClientLogs.length > 0\n\t) {\n\t\textractBuildError(\n\t\t\tnonReactClientLogs,\n\t\t\t'non-react-client',\n\t\t\t'Non-React client',\n\t\t\tframeworkNames,\n\t\t\tisIncremental,\n\t\t\tthrowOnError\n\t\t);\n\t}\n\tif (\n\t\tislandClientResult &&\n\t\t!islandClientResult.success &&\n\t\tislandClientLogs.length > 0\n\t) {\n\t\textractBuildError(\n\t\t\tislandClientLogs,\n\t\t\t'island-client',\n\t\t\t'Island client',\n\t\t\tframeworkNames,\n\t\t\tisIncremental,\n\t\t\tthrowOnError\n\t\t);\n\t}\n\n\t// Post-process: rewrite bare Angular/Vue specifiers to vendor paths.\n\tconst allNonReactVendorPaths: Record<string, string> = {\n\t\t...depVendorPaths,\n\t\t...(angularVendorPaths ?? {}),\n\t\t...(vueVendorPaths ?? {}),\n\t\t...(svelteVendorPaths ?? {})\n\t};\n\tconst allIslandVendorPaths: Record<string, string> = {\n\t\t...reactExternalPaths,\n\t\t...allNonReactVendorPaths\n\t};\n\tif (\n\t\tnonReactClientOutputs.length > 0 &&\n\t\tObject.keys(allNonReactVendorPaths).length > 0\n\t) {\n\t\tconst { rewriteImports } = await import('../build/rewriteImports');\n\t\tawait tracePhase('postprocess/non-react-vendor-imports', () =>\n\t\t\trewriteImports(\n\t\t\t\tnonReactClientOutputs.map((artifact) => artifact.path),\n\t\t\t\tallNonReactVendorPaths\n\t\t\t)\n\t\t);\n\t}\n\tif (\n\t\tislandClientOutputs.length > 0 &&\n\t\tObject.keys(allIslandVendorPaths).length > 0\n\t) {\n\t\tconst { rewriteImports } = await import('../build/rewriteImports');\n\t\tawait tracePhase('postprocess/island-vendor-imports', () =>\n\t\t\trewriteImports(\n\t\t\t\tislandClientOutputs.map((artifact) => artifact.path),\n\t\t\t\tallIslandVendorPaths\n\t\t\t)\n\t\t);\n\t}\n\n\t// Server-side: rewrite bare @angular/* specifiers in SSR outputs to\n\t// absolute paths under build/angular/vendor/server/. This ensures every\n\t// page bundle (and the absolutejs runtime, via getAngularDeps) imports\n\t// the same fully-linked Angular files — single instance, no NG0201,\n\t// no @angular/compiler at runtime in AOT mode.\n\tif (\n\t\tserverOutputs.length > 0 &&\n\t\tangularServerVendorPaths &&\n\t\tObject.keys(angularServerVendorPaths).length > 0\n\t) {\n\t\tconst { rewriteImports } = await import('../build/rewriteImports');\n\t\tawait tracePhase('postprocess/server-angular-vendor-imports', () =>\n\t\t\trewriteImports(\n\t\t\t\tserverOutputs\n\t\t\t\t\t.filter((artifact) => artifact.path.endsWith('.js'))\n\t\t\t\t\t.map((artifact) => artifact.path),\n\t\t\t\tangularServerVendorPaths\n\t\t\t)\n\t\t);\n\t}\n\n\tconst cssLogs: (BuildMessage | ResolveMessage)[] = [\n\t\t...(globalCssResult?.logs ?? []),\n\t\t...(vueCssResult?.logs ?? [])\n\t];\n\tconst cssOutputs: BuildArtifact[] = [\n\t\t...(globalCssResult?.outputs ?? []),\n\t\t...(vueCssResult?.outputs ?? [])\n\t];\n\n\tif (\n\t\tglobalCssResult &&\n\t\t!globalCssResult.success &&\n\t\tglobalCssResult.logs.length > 0\n\t) {\n\t\textractBuildError(\n\t\t\tglobalCssResult.logs,\n\t\t\t'global-css',\n\t\t\t'Global CSS',\n\t\t\tframeworkNames,\n\t\t\tisIncremental,\n\t\t\tthrowOnError\n\t\t);\n\t}\n\n\tif (vueCssResult && !vueCssResult.success && vueCssResult.logs.length > 0) {\n\t\textractBuildError(\n\t\t\tvueCssResult.logs,\n\t\t\t'vue-css',\n\t\t\t'Vue CSS',\n\t\t\tframeworkNames,\n\t\t\tisIncremental,\n\t\t\tthrowOnError\n\t\t);\n\t}\n\n\t// In dev mode, rewrite new URL('./path', import.meta.url) in all bundled\n\t// client outputs to /@src/ URLs so workers resolve through the module server.\n\t// In prod mode, rewrite to the hashed output path from the build.\n\tconst allClientOutputPaths = [\n\t\t...reactClientOutputPaths,\n\t\t...nonReactClientOutputs.map((artifact) => artifact.path)\n\t];\n\tif (urlReferencedFiles.length > 0) {\n\t\tconst urlFileMap = buildUrlFileMap(\n\t\t\turlReferencedFiles,\n\t\t\thmr,\n\t\t\tprojectRoot,\n\t\t\tbuildPath,\n\t\t\tnonReactClientOutputs\n\t\t);\n\t\tawait tracePhase('postprocess/url-references', () =>\n\t\t\trewriteUrlReferences(allClientOutputPaths, urlFileMap)\n\t\t);\n\t}\n\n\t// In dev mode, inject composable state tracking into Vue bundled output\n\t// so the first HMR cycle can preserve ref values.\n\tconst vueOutputPaths = nonReactClientOutputs\n\t\t.map((artifact) => artifact.path)\n\t\t.filter((path) => path.includes('/vue/'));\n\tif (hmr && vueDirectory) {\n\t\tawait tracePhase('postprocess/vue-hmr', () =>\n\t\t\tvueOutputPaths.forEach((outputPath) =>\n\t\t\t\tinjectVueComposableTracking(outputPath, projectRoot)\n\t\t\t)\n\t\t);\n\t}\n\n\tconst allLogs = [\n\t\t...serverLogs,\n\t\t...reactClientLogs,\n\t\t...nonReactClientLogs,\n\t\t...islandClientLogs,\n\t\t...cssLogs\n\t];\n\toutputLogs(allLogs);\n\n\tconst manifest: Record<string, string> = {\n\t\t...(options?.baseManifest || {}),\n\t\t...generateManifest(\n\t\t\t[\n\t\t\t\t...serverOutputs,\n\t\t\t\t...reactClientOutputs,\n\t\t\t\t...nonReactClientOutputs,\n\t\t\t\t...islandClientOutputs,\n\t\t\t\t...cssOutputs\n\t\t\t],\n\t\t\tbuildPath\n\t\t)\n\t};\n\n\t// Server pages (Svelte, Vue, Angular) need absolute file paths for SSR\n\t// import(), not web-relative paths. Overwrite with absolute paths.\n\t// Skip co-emitted CSS — it already has its own `${Page}BundledCSS` key\n\t// from generateManifest and would otherwise clobber the JS entry.\n\tfor (const artifact of serverOutputs) {\n\t\tif (extname(artifact.path) !== '.js') continue;\n\t\tconst fileWithHash = basename(artifact.path);\n\t\tconst [baseName] = fileWithHash.split(`.${artifact.hash}.`);\n\t\tif (!baseName) continue;\n\t\tmanifest[toPascal(baseName)] = artifact.path;\n\t}\n\n\tconst shouldCopyHtmx =\n\t\t!isIncremental ||\n\t\tnormalizedIncrementalFiles?.some(\n\t\t\t(f) => f.includes('/htmx/') && f.endsWith('.html')\n\t\t);\n\n\t// Update asset paths if CSS changed (even if HTML files didn't change)\n\tconst shouldUpdateHtmlAssetPaths =\n\t\t!isIncremental ||\n\t\tnormalizedIncrementalFiles?.some(\n\t\t\t(f) =>\n\t\t\t\tf.includes('/html/') && (f.endsWith('.html') || isStylePath(f))\n\t\t);\n\tconst shouldUpdateHtmxAssetPaths =\n\t\t!isIncremental ||\n\t\tnormalizedIncrementalFiles?.some(\n\t\t\t(f) =>\n\t\t\t\tf.includes('/htmx/') && (f.endsWith('.html') || isStylePath(f))\n\t\t);\n\n\t// Await the HMR client bundle that was started before the compile phase\n\tconst hmrClientBundle = hmrClientBundlePromise\n\t\t? await hmrClientBundlePromise\n\t\t: null;\n\n\tconst injectHMRIntoHTMLFile = (filePath: string, framework: string) => {\n\t\tif (!hmrClientBundle) return;\n\t\tlet html = readFileSync(filePath, 'utf-8');\n\t\tif (html.includes('data-hmr-client')) return;\n\t\tconst tag =\n\t\t\t`<script>window.__HMR_FRAMEWORK__=\"${framework}\";</script>` +\n\t\t\t`<script data-hmr-client>${hmrClientBundle}</script>`;\n\t\tconst bodyClose = /<\\/body\\s*>/i.exec(html);\n\t\thtml = bodyClose\n\t\t\t? html.slice(0, bodyClose.index) + tag + html.slice(bodyClose.index)\n\t\t\t: html + tag;\n\t\twriteFileSync(filePath, html);\n\t};\n\n\t// HTML + HTMX post-processing run in parallel (independent directories)\n\tconst processHtmlPages = async () => {\n\t\tif (!(htmlDir && htmlPagesPath)) return;\n\t\tconst outputHtmlPages = isSingle\n\t\t\t? join(buildPath, 'pages')\n\t\t\t: join(buildPath, basename(htmlDir), 'pages');\n\n\t\tmkdirSync(outputHtmlPages, { recursive: true });\n\t\tcpSync(htmlPagesPath, outputHtmlPages, {\n\t\t\tforce: true,\n\t\t\trecursive: true\n\t\t});\n\n\t\t// Update asset paths if HTML files changed OR CSS changed\n\t\tif (shouldUpdateHtmlAssetPaths) {\n\t\t\tawait updateAssetPaths(manifest, outputHtmlPages);\n\t\t\tawait optimizeHtmlImages(outputHtmlPages);\n\t\t}\n\n\t\t// Add HTML pages to manifest (absolute paths for Bun.file())\n\t\tconst htmlPageFiles = await scanEntryPoints(outputHtmlPages, '*.html');\n\t\tawait transformStaticPagesWithIslands(\n\t\t\tislandRegistryPath,\n\t\t\thtmlPageFiles\n\t\t);\n\t\tfor (const htmlFile of htmlPageFiles) {\n\t\t\tif (hmr) injectHMRIntoHTMLFile(htmlFile, 'html');\n\t\t\tconst fileName = basename(htmlFile, '.html');\n\t\t\tmanifest[fileName] = htmlFile;\n\t\t}\n\t};\n\n\tconst processHtmxPages = async () => {\n\t\tif (!(htmxDir && htmxPagesPath)) return;\n\t\tconst outputHtmxPages = isSingle\n\t\t\t? join(buildPath, 'pages')\n\t\t\t: join(buildPath, basename(htmxDir), 'pages');\n\n\t\tmkdirSync(outputHtmxPages, { recursive: true });\n\t\tcpSync(htmxPagesPath, outputHtmxPages, {\n\t\t\tforce: true,\n\t\t\trecursive: true\n\t\t});\n\n\t\tif (shouldCopyHtmx) {\n\t\t\tconst htmxDestDir = isSingle\n\t\t\t\t? buildPath\n\t\t\t\t: join(buildPath, basename(htmxDir));\n\t\t\tcopyHtmxVendor(htmxDir, htmxDestDir);\n\t\t}\n\n\t\t// Update asset paths if HTMX files changed OR CSS changed\n\t\tif (shouldUpdateHtmxAssetPaths) {\n\t\t\tawait updateAssetPaths(manifest, outputHtmxPages);\n\t\t\tawait optimizeHtmlImages(outputHtmxPages);\n\t\t}\n\n\t\t// Add HTMX pages to manifest (absolute paths for Bun.file())\n\t\tconst htmxPageFiles = await scanEntryPoints(outputHtmxPages, '*.html');\n\t\tawait transformStaticPagesWithIslands(\n\t\t\tislandRegistryPath,\n\t\t\thtmxPageFiles\n\t\t);\n\t\tfor (const htmxFile of htmxPageFiles) {\n\t\t\tif (hmr) injectHMRIntoHTMLFile(htmxFile, 'htmx');\n\t\t\tconst fileName = basename(htmxFile, '.html');\n\t\t\tmanifest[fileName] = htmxFile;\n\t\t}\n\t};\n\n\tawait Promise.all([\n\t\ttracePhase('postprocess/html-pages', processHtmlPages),\n\t\ttracePhase('postprocess/htmx-pages', processHtmxPages)\n\t]);\n\n\tif (!isIncremental) {\n\t\tawait tracePhase('cleanup/stale-outputs', () =>\n\t\t\tcleanStaleOutputs(buildPath, [\n\t\t\t\t...serverOutputs.map((a) => a.path),\n\t\t\t\t...reactClientOutputs.map((a) => a.path),\n\t\t\t\t...nonReactClientOutputs.map((a) => a.path),\n\t\t\t\t...islandClientOutputs.map((a) => a.path),\n\t\t\t\t...cssOutputs.map((a) => a.path),\n\t\t\t\t...conventionOutputPaths\n\t\t\t])\n\t\t);\n\t}\n\n\t// In dev mode, copy source indexes to build dir before cleanup.\n\t// Rewrite relative page imports to absolute /@src/ paths since\n\t// the indexes are moved from src/frontend/indexes/ to build/_src_indexes/\n\tif (hmr) {\n\t\tawait tracePhase('dev/copy-indexes', () =>\n\t\t\tcopyDevIndexes({\n\t\t\t\tbuildPath,\n\t\t\t\treactIndexesPath,\n\t\t\t\treactPagesPath,\n\t\t\t\tsvelteDir,\n\t\t\t\tsvelteEntries,\n\t\t\t\tsveltePagesPath,\n\t\t\t\tvueDir,\n\t\t\t\tvueEntries,\n\t\t\t\tvuePagesPath\n\t\t\t})\n\t\t);\n\t}\n\n\tawait tracePhase('cleanup/generated', () =>\n\t\tcleanup({\n\t\t\tangularDir,\n\t\t\treactDir,\n\t\t\tsvelteDir,\n\t\t\tvueDir\n\t\t})\n\t);\n\n\tif (!isIncremental) {\n\t\tglobalThis.__hmrBuildDuration = performance.now() - buildStart;\n\t}\n\n\tsendTelemetryEvent('build:complete', {\n\t\tdurationMs: Math.round(performance.now() - buildStart),\n\t\tframeworks: frameworkNames,\n\t\tmode: mode ?? (isDev ? 'development' : 'production')\n\t});\n\n\t// Skip manifest.json disk write during incremental (HMR) builds —\n\t// the in-memory manifest is authoritative and writing to disk on\n\t// every keystroke adds unnecessary I/O latency.\n\tif (isIncremental) {\n\t\twriteBuildTrace(buildPath);\n\n\t\treturn { conventions: conventionsMap, manifest };\n\t}\n\n\twriteFileSync(\n\t\tjoin(buildPath, 'manifest.json'),\n\t\tJSON.stringify(manifest, null, '\\t')\n\t);\n\n\t// Write convention files map (error/loading/not-found) if any exist\n\tif (Object.keys(conventionsMap).length > 0) {\n\t\twriteFileSync(\n\t\t\tjoin(buildPath, 'conventions.json'),\n\t\t\tJSON.stringify(conventionsMap, null, '\\t')\n\t\t);\n\t}\n\n\twriteBuildTrace(buildPath);\n\n\t// Production builds don't need the persistent Tailwind compiler in\n\t// memory after the final write — release it. Dev / HMR builds keep\n\t// the compiler alive so subsequent rebuilds reuse its candidate cache.\n\tif (tailwind && mode === 'production') {\n\t\tdisposeTailwindCompiler(tailwind.input);\n\t}\n\n\treturn { conventions: conventionsMap, manifest };\n};\n",
7
- "/**\n * Wraps HTML/HTMX TypeScript/JavaScript scripts with import.meta.hot support\n * for granular HMR updates. This allows script changes to hot-reload\n * without triggering a full HTML page rebuild.\n *\n * The wrapper is minimal - it just adds import.meta.hot.accept() so Bun\n * knows this module can be hot-reloaded. Event listener cleanup is handled\n * by the HMR client (cloning elements before script re-execution).\n */\n\n/**\n * Wrap a script with HMR support using Bun's import.meta.hot API\n * @param code - The original script code\n * @param scriptId - Unique identifier for this script (usually the file path)\n * @returns Wrapped code with HMR support\n */\nexport const isHTMLScript = (\n\tfilePath: string,\n\thtmlDir?: string,\n\thtmxDir?: string\n) => {\n\tconst normalizedPath = filePath.replace(/\\\\/g, '/');\n\tconst isScript = /\\.(ts|js|tsx|jsx)$/.test(normalizedPath);\n\n\tif (!isScript) return false;\n\n\t// Check if it's in the HTML or HTMX directory\n\tif (htmlDir) {\n\t\tconst normalizedHtmlDir = htmlDir.replace(/\\\\/g, '/');\n\t\tif (normalizedPath.startsWith(normalizedHtmlDir)) return true;\n\t}\n\n\tif (htmxDir) {\n\t\tconst normalizedHtmxDir = htmxDir.replace(/\\\\/g, '/');\n\t\tif (normalizedPath.startsWith(normalizedHtmxDir)) return true;\n\t}\n\n\treturn false;\n};\nexport const wrapHTMLScriptWithHMR = (code: string, scriptId: string) => {\n\tconst escapedId = JSON.stringify(scriptId);\n\n\treturn `${code}\n\n// HMR acceptance - allows this script to be hot-reloaded\nif (typeof import.meta !== \"undefined\" && import.meta.hot) {\n import.meta.hot.accept();\n console.log('[HMR] Script ready:', ${escapedId});\n}\n`;\n};\n",
8
- "/**\n * Bun build plugin that wraps HTML/HTMX scripts with import.meta.hot support\n * for granular HMR. This allows script changes to hot-reload independently\n * without triggering a full HTML page rebuild.\n */\n\nimport type { BunPlugin } from 'bun';\nimport { wrapHTMLScriptWithHMR } from './wrapHTMLScript';\n\nconst scriptLoaders = new Set(['ts', 'js', 'tsx', 'jsx'] as const);\nconst toLoader = (ext: string) => {\n\tfor (const loader of scriptLoaders) {\n\t\tif (loader === ext) return loader;\n\t}\n\n\treturn 'ts' as const;\n};\n\n/**\n * Creates a Bun build plugin that wraps HTML/HTMX scripts with HMR support\n * @param htmlDir - The HTML directory path (normalized with forward slashes)\n * @param htmxDir - The HTMX directory path (normalized with forward slashes)\n * @returns Bun build plugin\n */\nexport const createHTMLScriptHMRPlugin = (\n\thtmlDir?: string,\n\thtmxDir?: string\n): BunPlugin => ({\n\t\tname: 'html-script-hmr',\n\t\tsetup(build) {\n\t\t\t// Only apply to TypeScript/JavaScript files\n\t\t\tbuild.onLoad({ filter: /\\.(ts|js|tsx|jsx)$/ }, async (args) => {\n\t\t\t\tconst normalizedPath = args.path.replace(/\\\\/g, '/');\n\n\t\t\t\t// Check if this file is in the HTML or HTMX scripts directory\n\t\t\t\tconst isHtmlScript =\n\t\t\t\t\thtmlDir &&\n\t\t\t\t\tnormalizedPath.includes(htmlDir.replace(/\\\\/g, '/')) &&\n\t\t\t\t\tnormalizedPath.includes('/scripts/');\n\t\t\t\tconst isHtmxScript =\n\t\t\t\t\thtmxDir &&\n\t\t\t\t\tnormalizedPath.includes(htmxDir.replace(/\\\\/g, '/')) &&\n\t\t\t\t\tnormalizedPath.includes('/scripts/');\n\n\t\t\t\tif (!isHtmlScript && !isHtmxScript) {\n\t\t\t\t\t// Not an HTML/HTMX script, let Bun handle it normally\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\n\t\t\t\t// Read the original script content\n\t\t\t\tconst text = await Bun.file(args.path).text();\n\n\t\t\t\t// Wrap with HMR support\n\t\t\t\tconst wrapped = wrapHTMLScriptWithHMR(text, normalizedPath);\n\n\t\t\t\t// Determine the loader based on file extension\n\t\t\t\tconst ext = args.path.split('.').pop() ?? 'ts';\n\t\t\t\tconst loader = toLoader(ext);\n\n\t\t\t\treturn {\n\t\t\t\t\tcontents: wrapped,\n\t\t\t\t\tloader\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\t});\n",
9
- "import { BUN_BUILD_WARNING_SUPPRESSION } from '../constants';\n\nexport const outputLogs = (logs: (BuildMessage | ResolveMessage)[]) => {\n\tfor (const log of logs) {\n\t\tif (\n\t\t\t// TODO: When bun supports wildcard sideEffects, remove this suppression\n\t\t\tlog.message.includes(BUN_BUILD_WARNING_SUPPRESSION)\n\t\t)\n\t\t\tcontinue;\n\n\t\tif (log.level === 'error') console.error(log);\n\t\telse if (log.level === 'warning') console.warn(log);\n\t\telse console.info(log);\n\t}\n};\n",
10
- "import { basename } from 'node:path';\nimport { Glob } from 'bun';\nimport { existsSync } from 'node:fs';\nimport type {\n\tFrameworkConventionEntry,\n\tPageConventions,\n\tFrameworkConventions\n} from '../../types/conventions';\n\nconst CONVENTION_RE = /^(?:(.+)\\.)?(error|loading|not-found)\\.[^.]+$/;\n\nconst classifyFile = (\n\tfile: string,\n\tpageFiles: string[],\n\tdefaults: FrameworkConventions,\n\tpages: Record<string, PageConventions>\n) => {\n\tconst fileName = basename(file);\n\tconst match = CONVENTION_RE.exec(fileName);\n\n\tif (!match) {\n\t\tpageFiles.push(file);\n\n\t\treturn;\n\t}\n\n\tconst [, pageName, kind] = match;\n\n\tif (!pageName) {\n\t\tif (kind === 'error') defaults.error = file;\n\t\telse if (kind === 'loading') defaults.loading = file;\n\t\telse if (kind === 'not-found') defaults.notFound = file;\n\n\t\treturn;\n\t}\n\n\tif (!pages[pageName]) pages[pageName] = {};\n\n\tif (kind === 'error') pages[pageName].error = file;\n\telse if (kind === 'loading') pages[pageName].loading = file;\n};\n\nexport const scanConventions = async (\n\tpagesDir: string,\n\tpattern: string\n) => {\n\tif (!existsSync(pagesDir)) {\n\t\tconst pageFiles: string[] = [];\n\n\t\treturn { conventions: undefined, pageFiles };\n\t}\n\n\tconst pageFiles: string[] = [];\n\tconst defaults: FrameworkConventions = {};\n\tconst pages: Record<string, PageConventions> = {};\n\n\tconst glob = new Glob(pattern);\n\tfor await (const file of glob.scan({ absolute: true, cwd: pagesDir })) {\n\t\tclassifyFile(file, pageFiles, defaults, pages);\n\t}\n\n\tconst hasConventions =\n\t\tdefaults.error !== undefined ||\n\t\tdefaults.loading !== undefined ||\n\t\tdefaults.notFound !== undefined ||\n\t\tObject.keys(pages).length > 0;\n\n\tconst conventions: FrameworkConventionEntry | undefined = hasConventions\n\t\t? {\n\t\t\t\t...(defaults.error || defaults.loading || defaults.notFound\n\t\t\t\t\t? { defaults }\n\t\t\t\t\t: {}),\n\t\t\t\t...(Object.keys(pages).length > 0 ? { pages } : {})\n\t\t\t}\n\t\t: undefined;\n\n\treturn { conventions, pageFiles };\n};\n",
11
- "import { existsSync } from 'node:fs';\nimport { Glob } from 'bun';\nimport { normalizePath } from '../utils/normalizePath';\nimport { isStyleModulePath } from './stylePreprocessor';\n\nexport const scanCssEntryPoints = async (dir: string, ignore?: string[]) => {\n\t// Gracefully handle missing directories — this happens during framework\n\t// scaffolding when the config references a directory being created.\n\tif (!existsSync(dir)) return [];\n\n\tconst entryPaths: string[] = [];\n\tconst glob = new Glob('**/*.{css,scss,sass,less,styl,stylus}');\n\tfor await (const file of glob.scan({ absolute: true, cwd: dir })) {\n\t\tconst normalized = normalizePath(file);\n\t\tif (\n\t\t\tisStyleModulePath(normalized) ||\n\t\t\tignore?.some((pattern) => normalized.includes(pattern))\n\t\t)\n\t\t\tcontinue;\n\n\t\tentryPaths.push(file);\n\t}\n\n\treturn entryPaths;\n};\n",
12
- "import { existsSync } from 'node:fs';\nimport { resolve } from 'node:path';\nimport { build as bunBuild } from 'bun';\nimport { sendTelemetryEvent } from '../cli/telemetryEvent';\n\nconst resolveHmrClientPath = () => {\n\tconst projectRoot = process.cwd();\n\tconst fromSource = resolve(import.meta.dir, 'client/hmrClient.ts');\n\n\tif (existsSync(fromSource) && fromSource.startsWith(projectRoot)) {\n\t\treturn fromSource;\n\t}\n\n\tconst fromNodeModules = resolve(\n\t\tprojectRoot,\n\t\t'node_modules/@absolutejs/absolute/dist/dev/client/hmrClient.ts'\n\t);\n\tif (existsSync(fromNodeModules)) return fromNodeModules;\n\n\treturn resolve(import.meta.dir, 'dev/client/hmrClient.ts');\n};\n\nconst hmrClientPath = resolveHmrClientPath();\n\nexport const buildHMRClient = async () => {\n\tconst entryPoint = hmrClientPath;\n\tconst result = await bunBuild({\n\t\tentrypoints: [entryPoint],\n\t\tformat: 'iife',\n\t\tminify: false,\n\t\ttarget: 'browser'\n\t});\n\tif (!result.success) {\n\t\tconsole.error('Failed to build HMR client:', result.logs);\n\t\tsendTelemetryEvent('hmr:client-build-failed', {\n\t\t\tlogCount: result.logs.length,\n\t\t\tmessage: result.logs.map((log) => log.message).join('; ')\n\t\t});\n\n\t\treturn '// HMR client build failed';\n\t}\n\n\tconst [firstOutput] = result.outputs;\n\tif (!firstOutput) return '// HMR client build failed';\n\n\treturn firstOutput.text();\n};\n",
13
- "import { rm } from 'node:fs/promises';\nimport { resolve } from 'node:path';\nimport { Glob } from 'bun';\n\nconst HASHED_FILE_PATTERN = /\\.[a-f0-9]{8,}\\.\\w+$/;\n\nexport const cleanStaleOutputs = async (\n\tbuildPath: string,\n\tcurrentOutputPaths: string[]\n) => {\n\tconst currentPaths = new Set(\n\t\tcurrentOutputPaths.map((path) => resolve(path))\n\t);\n\n\tconst glob = new Glob('**/*');\n\tconst removals: Promise<void>[] = [];\n\n\tfor (const relative of glob.scanSync({ cwd: buildPath })) {\n\t\tconst absolute = resolve(buildPath, relative);\n\t\tif (currentPaths.has(absolute)) continue;\n\t\tif (!HASHED_FILE_PATTERN.test(relative)) continue;\n\n\t\tremovals.push(rm(absolute, { force: true }));\n\t}\n\n\tawait Promise.all(removals);\n};\n",
14
- "import { rm } from 'node:fs/promises';\nimport { join } from 'node:path';\n\ntype CleanupProps = {\n\tangularDir?: string;\n\treactDir?: string;\n\tsvelteDir?: string;\n\tvueDir?: string;\n};\n\nexport const cleanup = async ({\n\tangularDir,\n\treactDir,\n\tsvelteDir,\n\tvueDir\n}: CleanupProps) => {\n\tawait Promise.all([\n\t\tangularDir\n\t\t\t? rm(join(angularDir, 'generated'), {\n\t\t\t\t\tforce: true,\n\t\t\t\t\trecursive: true\n\t\t\t\t})\n\t\t\t: undefined,\n\t\treactDir\n\t\t\t? rm(join(reactDir, 'generated'), {\n\t\t\t\t\tforce: true,\n\t\t\t\t\trecursive: true\n\t\t\t\t})\n\t\t\t: undefined,\n\t\tsvelteDir\n\t\t\t? rm(join(svelteDir, 'generated'), {\n\t\t\t\t\tforce: true,\n\t\t\t\t\trecursive: true\n\t\t\t\t})\n\t\t\t: undefined,\n\t\tvueDir\n\t\t\t? rm(join(vueDir, 'generated'), {\n\t\t\t\t\tforce: true,\n\t\t\t\t\trecursive: true\n\t\t\t\t})\n\t\t\t: undefined\n\t]);\n};\n",
15
- "import { existsSync, readFileSync } from 'node:fs';\nimport { Glob } from 'bun';\nimport { resolve } from 'node:path';\n\n/* Dependency graph for tracking file relationships\n This handles the \"what depends on what\" problem for incremental HMR */\nexport type DependencyGraph = {\n\t// filePath -> Set of files that depend on this file\n\tdependents: Map<string, Set<string>>;\n\t// filePath -> Set of files this file depends on\n\tdependencies: Map<string, Set<string>>;\n};\n\nexport const emptyDependencyGraph: DependencyGraph = {\n\tdependencies: new Map(),\n\tdependents: new Map()\n};\n\n/* Shared transpiler instance for scanImports(). Bun.Transpiler\n is a native Zig parser — much faster than regex for extracting\n imports from TS/TSX/JS/JSX files. */\nconst tsTranspiler = new Bun.Transpiler({ loader: 'tsx' });\nconst jsTranspiler = new Bun.Transpiler({ loader: 'js' });\n\nconst loaderForFile = (filePath: string) => {\n\tconst lower = filePath.toLowerCase();\n\tif (\n\t\tlower.endsWith('.ts') ||\n\t\tlower.endsWith('.tsx') ||\n\t\tlower.endsWith('.jsx')\n\t)\n\t\treturn 'tsx';\n\tif (lower.endsWith('.js') || lower.endsWith('.mjs')) return 'js';\n\tif (lower.endsWith('.html') || lower.endsWith('.htm')) return 'html';\n\n\treturn null;\n};\n\n/* Resolve relative import paths to absolute paths using existsSync\n instead of readFileSync — avoids reading file content just to check\n existence. */\nconst resolveImportPath = (importPath: string, fromFile: string) => {\n\t// Skip external packages\n\tif (!importPath.startsWith('.') && !importPath.startsWith('/')) {\n\t\treturn null;\n\t}\n\n\tconst fromDir = resolve(fromFile, '..');\n\tconst normalized = resolve(fromDir, importPath);\n\n\t// Try common extensions\n\tconst extensions = [\n\t\t'.ts',\n\t\t'.tsx',\n\t\t'.js',\n\t\t'.jsx',\n\t\t'.vue',\n\t\t'.svelte',\n\t\t'.css',\n\t\t'.html'\n\t];\n\n\tfor (const ext of extensions) {\n\t\tconst withExt = normalized + ext;\n\t\tif (existsSync(withExt)) return withExt;\n\t}\n\n\t// Try without extension (already has one, or is extensionless)\n\tif (existsSync(normalized)) return normalized;\n\n\treturn null;\n};\n\nconst clearExistingDependents = (\n\tgraph: DependencyGraph,\n\tnormalizedPath: string\n) => {\n\tconst existingDeps = graph.dependencies.get(normalizedPath);\n\tif (!existingDeps) return;\n\n\tfor (const dep of existingDeps) {\n\t\tconst dependents = graph.dependents.get(dep);\n\t\tif (!dependents) continue;\n\t\tdependents.delete(normalizedPath);\n\t}\n};\n\n/* Extract import/require statements from a file.\n Uses Bun.Transpiler.scanImports() for JS/TS files (native Zig parser)\n and falls back to regex for HTML (stylesheet links) and .vue/.svelte. */\nexport const addFileToGraph = (graph: DependencyGraph, filePath: string) => {\n\tconst normalizedPath = resolve(filePath);\n\n\tif (!existsSync(normalizedPath)) return;\n\n\tconst dependencies = extractDependencies(normalizedPath);\n\n\tclearExistingDependents(graph, normalizedPath);\n\n\tconst newDeps = new Set(dependencies);\n\tgraph.dependencies.set(normalizedPath, newDeps);\n\n\tconst addDependent = (dep: string) => {\n\t\tif (!graph.dependents.has(dep)) {\n\t\t\tgraph.dependents.set(dep, new Set());\n\t\t}\n\t\tgraph.dependents.get(dep)?.add(normalizedPath);\n\t};\n\n\tdependencies.forEach(addDependent);\n};\n\nconst IGNORED_SEGMENTS = [\n\t'/node_modules/',\n\t'/.git/',\n\t'/build/',\n\t'/compiled/',\n\t'/indexes/',\n\t'/server/',\n\t'/client/'\n];\n\nexport const buildInitialDependencyGraph = (\n\tgraph: DependencyGraph,\n\tdirectories: string[]\n) => {\n\t// Use Bun.Glob for fast recursive file scanning, then process\n\t// files in parallel batches. ~50-100ms faster than sync readdirSync.\n\tconst processedFiles = new Set<string>();\n\tconst glob = new Glob('**/*.{ts,tsx,js,jsx,vue,svelte,html,htm}');\n\n\tconst resolvedDirs = directories\n\t\t.map((dir) => resolve(dir))\n\t\t.filter((dir) => existsSync(dir));\n\n\tconst allFiles = resolvedDirs.flatMap((dir) =>\n\t\tArray.from(glob.scanSync({ absolute: true, cwd: dir }))\n\t);\n\n\tfor (const file of allFiles) {\n\t\tconst fullPath = resolve(file);\n\t\tif (IGNORED_SEGMENTS.some((seg) => fullPath.includes(seg))) continue;\n\t\tif (processedFiles.has(fullPath)) continue;\n\n\t\taddFileToGraph(graph, fullPath);\n\t\tprocessedFiles.add(fullPath);\n\t}\n};\n\nconst extractHtmlDependencies = (filePath: string, content: string) => {\n\tconst dependencies: string[] = [];\n\tconst linkRegex =\n\t\t/<link\\s+[^>]*rel=[\"']stylesheet[\"'][^>]*href=[\"']([^\"']+)[\"'][^>]*>/gi;\n\tlet matchLink;\n\twhile ((matchLink = linkRegex.exec(content)) !== null) {\n\t\tconst [, href] = matchLink;\n\t\tif (!href) continue;\n\t\tconst resolvedHref = resolveImportPath(href, filePath);\n\t\tif (resolvedHref) dependencies.push(resolvedHref);\n\t}\n\n\treturn dependencies;\n};\n\nconst resolveRegexMatches = (\n\tregex: RegExp,\n\tcontent: string,\n\tfilePath: string,\n\tdependencies: string[]\n) => {\n\tlet match;\n\twhile ((match = regex.exec(content)) !== null) {\n\t\tif (!match[1]) continue;\n\t\tconst resolved = resolveImportPath(match[1], filePath);\n\t\tif (resolved) dependencies.push(resolved);\n\t}\n};\n\nconst resolveStyleUrls = (\n\tmatchContent: string,\n\tfilePath: string,\n\tdependencies: string[]\n) => {\n\tconst stringLiteralRegex = /['\"]([^'\"]+)['\"]/g;\n\tlet urlMatch;\n\twhile ((urlMatch = stringLiteralRegex.exec(matchContent)) !== null) {\n\t\tif (!urlMatch[1]) continue;\n\t\tconst resolved = resolveImportPath(urlMatch[1], filePath);\n\t\tif (resolved) dependencies.push(resolved);\n\t}\n};\n\nconst extractStyleUrlsDependencies = (\n\tcontent: string,\n\tfilePath: string,\n\tdependencies: string[]\n) => {\n\tconst styleUrlsRegex = /styleUrls\\s*:\\s*\\[([^\\]]*)\\]/g;\n\n\tlet match;\n\twhile ((match = styleUrlsRegex.exec(content)) !== null) {\n\t\tif (!match[1]) continue;\n\t\tresolveStyleUrls(match[1], filePath, dependencies);\n\t}\n};\n\nconst extractAngularDependencies = (\n\tcontent: string,\n\tfilePath: string,\n\tdependencies: string[]\n) => {\n\tconst templateUrlRegex = /templateUrl\\s*:\\s*['\"]([^'\"]+)['\"]/g;\n\tconst styleUrlSingularRegex = /styleUrl\\s*:\\s*['\"]([^'\"]+)['\"]/g;\n\n\tresolveRegexMatches(templateUrlRegex, content, filePath, dependencies);\n\tresolveRegexMatches(styleUrlSingularRegex, content, filePath, dependencies);\n\textractStyleUrlsDependencies(content, filePath, dependencies);\n};\n\nconst extractJsDependencies = (\n\tfilePath: string,\n\tcontent: string,\n\tloader: 'tsx' | 'js'\n) => {\n\tconst transpiler = loader === 'tsx' ? tsTranspiler : jsTranspiler;\n\tconst imports = transpiler.scanImports(content);\n\tconst dependencies: string[] = [];\n\n\tfor (const imp of imports) {\n\t\tconst resolved = resolveImportPath(imp.path, filePath);\n\t\tif (resolved) dependencies.push(resolved);\n\t}\n\n\tif (content.includes('@Component')) {\n\t\textractAngularDependencies(content, filePath, dependencies);\n\t}\n\n\treturn dependencies;\n};\n\nconst resolveScannedImports = (\n\timports: ReturnType<typeof tsTranspiler.scanImports>,\n\tfilePath: string,\n\tdependencies: string[]\n) => {\n\tfor (const imp of imports) {\n\t\tconst resolved = resolveImportPath(imp.path, filePath);\n\t\tif (resolved) dependencies.push(resolved);\n\t}\n};\n\nconst extractScriptImports = (\n\tscriptContent: string,\n\tfilePath: string,\n\tdependencies: string[]\n) => {\n\ttry {\n\t\tconst imports = tsTranspiler.scanImports(scriptContent);\n\t\tresolveScannedImports(imports, filePath, dependencies);\n\t} catch {\n\t\t/* ignored */\n\t}\n};\n\nconst extractSvelteVueDependencies = (filePath: string, content: string) => {\n\tconst dependencies: string[] = [];\n\tconst scriptRegex = /<script[^>]*>([\\s\\S]*?)<\\/script>/gi;\n\tlet scriptMatch;\n\twhile ((scriptMatch = scriptRegex.exec(content)) !== null) {\n\t\tconst [, scriptContent] = scriptMatch;\n\t\tif (!scriptContent?.trim()) continue;\n\t\textractScriptImports(scriptContent, filePath, dependencies);\n\t}\n\n\treturn dependencies;\n};\n\nconst extractDependenciesForFile = (filePath: string) => {\n\tconst loader = loaderForFile(filePath);\n\tconst lowerPath = filePath.toLowerCase();\n\tconst isSvelteOrVue =\n\t\tlowerPath.endsWith('.svelte') || lowerPath.endsWith('.vue');\n\n\tif (loader === 'html') {\n\t\tconst content = readFileSync(filePath, 'utf-8');\n\n\t\treturn extractHtmlDependencies(filePath, content);\n\t}\n\n\tif (loader === 'tsx' || loader === 'js') {\n\t\tconst content = readFileSync(filePath, 'utf-8');\n\n\t\treturn extractJsDependencies(filePath, content, loader);\n\t}\n\n\tif (isSvelteOrVue) {\n\t\tconst content = readFileSync(filePath, 'utf-8');\n\n\t\treturn extractSvelteVueDependencies(filePath, content);\n\t}\n\n\treturn [];\n};\n\nexport const extractDependencies = (filePath: string) => {\n\ttry {\n\t\treturn extractDependenciesForFile(filePath);\n\t} catch {\n\t\treturn [];\n\t}\n};\n\nexport const getAffectedFiles = (\n\tgraph: DependencyGraph,\n\tchangedFile: string\n) => {\n\tconst normalizedPath = resolve(changedFile);\n\tconst affected = new Set<string>();\n\tconst toProcess = [normalizedPath];\n\n\tconst processNode = (current: string) => {\n\t\tif (affected.has(current)) return;\n\n\t\taffected.add(current);\n\n\t\tconst dependents = graph.dependents.get(current);\n\t\tif (!dependents) return;\n\n\t\tdependents.forEach((dependent) => toProcess.push(dependent));\n\t};\n\n\twhile (toProcess.length > 0) {\n\t\tconst current = toProcess.pop() ?? normalizedPath;\n\t\tprocessNode(current);\n\t}\n\n\treturn Array.from(affected);\n};\n\nconst removeDepsForFile = (graph: DependencyGraph, normalizedPath: string) => {\n\tconst deps = graph.dependencies.get(normalizedPath);\n\tif (!deps) return;\n\n\tfor (const dep of deps) {\n\t\tconst dependents = graph.dependents.get(dep);\n\t\tif (!dependents) continue;\n\t\tdependents.delete(normalizedPath);\n\t}\n\tgraph.dependencies.delete(normalizedPath);\n};\n\nconst removeDependentsForFile = (\n\tgraph: DependencyGraph,\n\tnormalizedPath: string\n) => {\n\tconst dependents = graph.dependents.get(normalizedPath);\n\tif (!dependents) return;\n\n\tfor (const dependent of dependents) {\n\t\tconst depList = graph.dependencies.get(dependent);\n\t\tif (!depList) continue;\n\t\tdepList.delete(normalizedPath);\n\t}\n\tgraph.dependents.delete(normalizedPath);\n};\n\nexport const removeFileFromGraph = (\n\tgraph: DependencyGraph,\n\tfilePath: string\n) => {\n\tconst normalizedPath = resolve(filePath);\n\n\tremoveDepsForFile(graph, normalizedPath);\n\tremoveDependentsForFile(graph, normalizedPath);\n};\n",
16
- "import { resolve } from 'node:path';\nimport type { BuildConfig } from '../../types/build';\n\n/** Normalize and default build paths so HMR works outside the example app. */\nexport const resolveBuildPaths = (config: BuildConfig) => {\n\tconst cwd = process.cwd();\n\t// Normalize to forward slashes for cross-platform compatibility (Windows uses backslashes)\n\tconst normalize = (path: string) => path.replace(/\\\\/g, '/');\n\tconst withDefault = (value: string | undefined, fallback: string) =>\n\t\tnormalize(resolve(cwd, value ?? fallback));\n\tconst optional = (value: string | undefined) =>\n\t\tvalue ? normalize(resolve(cwd, value)) : undefined;\n\n\treturn {\n\t\tangularDir: optional(config.angularDirectory),\n\t\tassetsDir: optional(config.assetsDirectory),\n\t\tbuildDir: withDefault(config.buildDirectory, 'build'),\n\t\thtmlDir: optional(config.htmlDirectory),\n\t\thtmxDir: optional(config.htmxDirectory),\n\t\treactDir: optional(config.reactDirectory),\n\t\tstylesDir: optional(\n\t\t\ttypeof config.stylesConfig === 'string'\n\t\t\t\t? config.stylesConfig\n\t\t\t\t: config.stylesConfig?.path\n\t\t),\n\t\tsvelteDir: optional(config.svelteDirectory),\n\t\tvueDir: optional(config.vueDirectory)\n\t};\n};\n\nexport type ResolvedBuildPaths = ReturnType<typeof resolveBuildPaths>;\n",
17
- "import type { FSWatcher } from 'fs';\nimport { emptyDependencyGraph, type DependencyGraph } from './dependencyGraph';\nimport {\n\tcreateModuleVersionTracker,\n\ttype ModuleVersions\n} from './moduleVersionTracker';\nimport type { HMRWebSocket } from '../../types/websocket';\nimport type { BuildConfig } from '../../types/build';\nimport { resolveBuildPaths, type ResolvedBuildPaths } from './configResolver';\n\n/* This handles the \"tracking clients\" problem */\nexport type HMRState = {\n\tconnectedClients: Set<HMRWebSocket>;\n\tactiveFrameworks: Set<string>; // Frameworks with active browser clients\n\tdependencyGraph: DependencyGraph;\n\tisRebuilding: boolean;\n\trebuildQueue: Set<string>;\n\trebuildTimeout: NodeJS.Timeout | null;\n\tfileChangeQueue: Map<string, string[]>;\n\tdebounceTimeout: NodeJS.Timeout | null;\n\tfileHashes: Map<string, number>; // filename -> Bun.hash (Wyhash) value\n\twatchers: FSWatcher[];\n\tmoduleVersions: ModuleVersions; // module path -> version number (for client-server sync)\n\tsourceFileVersions: Map<string, number>; // source file path -> version number (for cache busting)\n\tconfig: BuildConfig; // Build configuration for path resolution\n\tresolvedPaths: ResolvedBuildPaths; // Normalized paths derived from config\n\tvueChangeTypes: Map<string, 'template-only' | 'script' | 'full'>; // Vue HMR change type tracking\n\tassetStore: Map<string, Uint8Array>; // In-memory client asset store for dev mode\n\tmanifest: Record<string, string>; // Current build manifest (for Angular fast-path HMR)\n\trebuildCount: number; // Incremented after each successful rebuild\n\tlastHmrPath?: string;\n\tlastHmrFramework?: string;\n};\n\n/* Initialize HMR state */\nexport const createHMRState = (config: BuildConfig): HMRState => ({\n\tactiveFrameworks: new Set(), // Frameworks with active browser clients\n\tassetStore: new Map(), // In-memory client asset store for dev mode,,\n\tconfig,\n\tconnectedClients: new Set<HMRWebSocket>(),\n\tdebounceTimeout: null,\n\tdependencyGraph: emptyDependencyGraph,\n\tfileChangeQueue: new Map(),\n\tfileHashes: new Map(),\n\tisRebuilding: false,\n\tmanifest: {}, // Current build manifest (populated after initial build),\n\tmoduleVersions: createModuleVersionTracker(),\n\trebuildCount: 0,\n\trebuildQueue: new Set(),\n\trebuildTimeout: null,\n\tresolvedPaths: resolveBuildPaths(config), // Track versions for source files to bypass Bun's cache,\n\tsourceFileVersions: new Map(),\n\tvueChangeTypes: new Map(), // Vue HMR change type tracking,\n\twatchers: []\n});\n\n/* Increment version for a source file (forces Bun to treat it as a new module) */\nexport const incrementSourceFileVersion = (\n\tstate: HMRState,\n\tfilePath: string\n) => {\n\tconst currentVersion = state.sourceFileVersions.get(filePath) || 0;\n\tconst newVersion = currentVersion + 1;\n\tstate.sourceFileVersions.set(filePath, newVersion);\n\n\treturn newVersion;\n};\n\n/* Increment versions for multiple source files */\nexport const incrementSourceFileVersions = (\n\tstate: HMRState,\n\tfilePaths: string[]\n) => {\n\tfor (const filePath of filePaths) {\n\t\tincrementSourceFileVersion(state, filePath);\n\t}\n};\n",
18
- "import { watch } from 'fs';\nimport { existsSync } from 'node:fs';\nimport { join, resolve } from 'path';\nimport type { BuildConfig } from '../../types/build';\nimport { sendTelemetryEvent } from '../cli/telemetryEvent';\nimport type { HMRState } from './clientManager';\nimport { addFileToGraph, removeFileFromGraph } from './dependencyGraph';\nimport { getWatchPaths, shouldIgnorePath } from './pathUtils';\n\nconst safeRemoveFromGraph = (\n\tgraph: HMRState['dependencyGraph'],\n\tfullPath: string\n) => {\n\ttry {\n\t\tremoveFileFromGraph(graph, fullPath);\n\t} catch (err) {\n\t\tsendTelemetryEvent('hmr:graph-error', {\n\t\t\tmessage: err instanceof Error ? err.message : String(err),\n\t\t\toperation: 'remove'\n\t\t});\n\t}\n};\n\nconst safeAddToGraph = (\n\tgraph: HMRState['dependencyGraph'],\n\tfullPath: string\n) => {\n\ttry {\n\t\taddFileToGraph(graph, fullPath);\n\t} catch (err) {\n\t\tsendTelemetryEvent('hmr:graph-error', {\n\t\t\tmessage: err instanceof Error ? err.message : String(err),\n\t\t\toperation: 'add'\n\t\t});\n\t}\n};\n\nconst shouldSkipFilename = (filename: string, isStylesDir: boolean) =>\n\t(!isStylesDir &&\n\t\t(filename === 'compiled' ||\n\t\t\tfilename === 'generated' ||\n\t\t\tfilename === 'build' ||\n\t\t\tfilename === 'indexes' ||\n\t\t\tfilename === 'server' ||\n\t\t\tfilename === 'client' ||\n\t\t\tfilename.includes('/compiled/') ||\n\t\t\tfilename.includes('/generated/') ||\n\t\t\tfilename.includes('/build/') ||\n\t\t\tfilename.includes('/indexes/') ||\n\t\t\tfilename.includes('/server/') ||\n\t\t\tfilename.includes('/client/') ||\n\t\t\tfilename.startsWith('compiled/') ||\n\t\t\tfilename.startsWith('generated/') ||\n\t\t\tfilename.startsWith('build/') ||\n\t\t\tfilename.startsWith('indexes/') ||\n\t\t\tfilename.startsWith('server/') ||\n\t\t\tfilename.startsWith('client/'))) ||\n\tfilename.endsWith('/') ||\n\tfilename.includes('.tmp.') ||\n\tfilename.endsWith('.tmp') ||\n\tfilename.endsWith('~') ||\n\tfilename.startsWith('.#');\n\nconst setupWatcher = (\n\tabsolutePath: string,\n\tisStylesDir: boolean,\n\tstate: HMRState,\n\tonFileChange: (filePath: string) => void\n) => {\n\tconst watcher = watch(\n\t\tabsolutePath,\n\t\t{ recursive: true },\n\t\t(event, filename) => {\n\t\t\tif (!filename) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (shouldSkipFilename(filename, isStylesDir)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst fullPath = join(absolutePath, filename).replace(/\\\\/g, '/');\n\n\t\t\tif (shouldIgnorePath(fullPath, state.resolvedPaths)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (event === 'rename' && !existsSync(fullPath)) {\n\t\t\t\tsafeRemoveFromGraph(state.dependencyGraph, fullPath);\n\t\t\t\tonFileChange(fullPath);\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (existsSync(fullPath)) {\n\t\t\t\tonFileChange(fullPath);\n\t\t\t\tsafeAddToGraph(state.dependencyGraph, fullPath);\n\t\t\t}\n\t\t}\n\t);\n\n\tstate.watchers.push(watcher);\n};\n\n/* Add file watchers for specific paths (used when new framework directories are added at runtime) */\nexport const addFileWatchers = (\n\tstate: HMRState,\n\tpaths: string[],\n\tonFileChange: (filePath: string) => void\n) => {\n\tconst stylesDir = state.resolvedPaths?.stylesDir;\n\n\tpaths.forEach((path) => {\n\t\tconst absolutePath = resolve(path).replace(/\\\\/g, '/');\n\t\tif (!existsSync(absolutePath)) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst isStylesDir = Boolean(\n\t\t\tstylesDir && absolutePath.startsWith(stylesDir)\n\t\t);\n\t\tsetupWatcher(absolutePath, isStylesDir, state, onFileChange);\n\t});\n};\n\n/* Set up file watching for all configured directories\n This handles the \"watch files\" problem */\nexport const startFileWatching = (\n\tstate: HMRState,\n\tconfig: BuildConfig,\n\tonFileChange: (filePath: string) => void\n) => {\n\tconst watchPaths = getWatchPaths(config, state.resolvedPaths);\n\tconst stylesDir = state.resolvedPaths?.stylesDir;\n\n\twatchPaths.forEach((path) => {\n\t\tconst absolutePath = resolve(path).replace(/\\\\/g, '/');\n\t\tif (!existsSync(absolutePath)) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst isStylesDir = Boolean(\n\t\t\tstylesDir && absolutePath.startsWith(stylesDir)\n\t\t);\n\t\tsetupWatcher(absolutePath, isStylesDir, state, onFileChange);\n\t});\n};\n",
19
- "import { readdirSync } from 'node:fs';\nimport { BuildConfig } from '../../types/build';\nimport { commonAncestor } from '../utils/commonAncestor';\nimport { normalizePath } from '../utils/normalizePath';\nimport type { ResolvedBuildPaths } from './configResolver';\n\nconst STYLE_EXTENSION_PATTERN = /\\.(css|s[ac]ss|less|styl(?:us)?)$/i;\n\n/* Get the directories we should watch based on our config\n This handles the \"where to watch\" problem */\nexport const detectFramework = (\n\tfilePath: string,\n\tresolved?: ResolvedBuildPaths\n) => {\n\t// Check if this is an ignored file first\n\tif (shouldIgnorePath(filePath, resolved)) {\n\t\treturn 'ignored';\n\t}\n\n\tconst normalized = filePath.replace(/\\\\/g, '/');\n\n\tconst startsWithDir = (dir?: string) =>\n\t\tdir ? normalized.startsWith(dir.replace(/\\\\/g, '/')) : false;\n\n\t// Prefer resolved directory prefixes when available\n\tif (resolved) {\n\t\tif (startsWithDir(resolved.stylesDir)) return 'styles';\n\t\tif (startsWithDir(resolved.htmxDir)) return 'htmx';\n\t\tif (startsWithDir(resolved.reactDir)) return 'react';\n\t\tif (startsWithDir(resolved.svelteDir)) return 'svelte';\n\t\tif (startsWithDir(resolved.vueDir)) return 'vue';\n\t\tif (startsWithDir(resolved.angularDir)) return 'angular';\n\t\tif (startsWithDir(resolved.htmlDir)) return 'html';\n\t\tif (startsWithDir(resolved.assetsDir)) return 'assets';\n\t} else {\n\t\t// Fallback heuristics when resolved paths are not provided\n\t\tif (normalized.includes('/htmx/')) return 'htmx';\n\t\tif (normalized.includes('/react/')) return 'react';\n\t\tif (normalized.includes('/svelte/')) return 'svelte';\n\t\tif (normalized.includes('/vue/')) return 'vue';\n\t\tif (normalized.includes('/angular/')) return 'angular';\n\t\tif (normalized.includes('/html/')) return 'html';\n\t}\n\n\t// Then check file extensions for files not in framework directories\n\tif (normalized.endsWith('.tsx') || normalized.endsWith('.jsx'))\n\t\treturn 'react';\n\tif (normalized.endsWith('.svelte')) return 'svelte';\n\tif (normalized.endsWith('.vue')) return 'vue';\n\tif (normalized.endsWith('.html')) return 'html';\n\tif (normalized.endsWith('.ts') && normalized.includes('angular'))\n\t\treturn 'angular';\n\n\t// Generic assets (styles in root /assets/, images, etc.)\n\t// IMPORTANT: Only return 'assets' for style files that are NOT in framework directories.\n\t// Style files in framework directories (like /vue/styles/ or /svelte/styles/) should have\n\t// been caught by the framework checks above. If we reach here with a .css file, it means\n\t// the file wasn't in a framework directory, so it's a true asset.\n\tif (normalized.includes('/assets/')) return 'assets';\n\n\t// For style files not caught by framework directory checks, check one more time\n\t// using path segment matching (handles cases where resolved paths might not match exactly)\n\tif (STYLE_EXTENSION_PATTERN.test(normalized)) {\n\t\t// Check if this style is in a framework styles directory by looking for common patterns\n\t\tif (normalized.includes('/vue/') || normalized.includes('/vue-'))\n\t\t\treturn 'vue';\n\t\tif (normalized.includes('/svelte/') || normalized.includes('/svelte-'))\n\t\t\treturn 'svelte';\n\t\tif (normalized.includes('/react/') || normalized.includes('/react-'))\n\t\t\treturn 'react';\n\t\tif (\n\t\t\tnormalized.includes('/angular/') ||\n\t\t\tnormalized.includes('/angular-')\n\t\t)\n\t\t\treturn 'angular';\n\t\tif (normalized.includes('/html/') || normalized.includes('/html-'))\n\t\t\treturn 'html';\n\t\tif (normalized.includes('/htmx/') || normalized.includes('/htmx-'))\n\t\t\treturn 'htmx';\n\n\t\t// If no framework match, it's a generic asset\n\t\treturn 'assets';\n\t}\n\n\treturn 'unknown';\n};\nconst getSiblingDirs = (\n\tframeworkDirs: string[],\n\tcfg: { assetsDir?: string; stylesDir?: string }\n) => {\n\tif (frameworkDirs.length === 0) return [];\n\n\tconst root = commonAncestor(frameworkDirs);\n\tif (!root) return [];\n\n\tconst knownNames = new Set(\n\t\t[...frameworkDirs, cfg.assetsDir, cfg.stylesDir]\n\t\t\t.filter((dir): dir is string => Boolean(dir))\n\t\t\t.map((dir) => normalizePath(dir).split('/').pop())\n\t);\n\tknownNames.add('build');\n\tknownNames.add('node_modules');\n\tknownNames.add('.absolutejs');\n\n\ttry {\n\t\treturn readdirSync(root, { withFileTypes: true })\n\t\t\t.filter(\n\t\t\t\t(entry) => entry.isDirectory() && !knownNames.has(entry.name)\n\t\t\t)\n\t\t\t.map((entry) => `${root}/${entry.name}`);\n\t} catch {\n\t\t// root may not exist yet\n\t\treturn [];\n\t}\n};\n\nexport const getWatchPaths = (\n\tconfig: BuildConfig,\n\tresolved?: ResolvedBuildPaths\n) => {\n\tconst paths: string[] = [];\n\n\tconst push = (base?: string, sub?: string) => {\n\t\tif (!base) return;\n\t\tconst normalizedBase = normalizePath(base);\n\t\tpaths.push(sub ? `${normalizedBase}/${sub}` : normalizedBase);\n\t};\n\n\tconst cfg = resolved ?? {\n\t\tangularDir: config.angularDirectory,\n\t\tassetsDir: config.assetsDirectory,\n\t\thtmlDir: config.htmlDirectory,\n\t\thtmxDir: config.htmxDirectory,\n\t\treactDir: config.reactDirectory,\n\t\tstylesDir:\n\t\t\ttypeof config.stylesConfig === 'string'\n\t\t\t\t? config.stylesConfig\n\t\t\t\t: config.stylesConfig?.path,\n\t\tsvelteDir: config.svelteDirectory,\n\t\tvueDir: config.vueDirectory\n\t};\n\n\t// Watch entire framework directories. Intermediate build files live\n\t// under .absolutejs/generated/ which is already excluded from watching.\n\tpush(cfg.reactDir);\n\tpush(cfg.svelteDir);\n\tpush(cfg.vueDir);\n\n\tpush(cfg.angularDir);\n\n\tpush(cfg.htmlDir, 'pages');\n\tpush(cfg.htmlDir, 'scripts');\n\tpush(cfg.htmlDir, 'styles');\n\n\tpush(cfg.htmxDir, 'pages');\n\tpush(cfg.htmxDir, 'scripts');\n\tpush(cfg.htmxDir, 'styles');\n\n\tpush(cfg.assetsDir);\n\tpush(cfg.stylesDir);\n\n\t// Also watch sibling directories under the common parent of all\n\t// configured dirs — these contain shared files (workers, utils, etc.)\n\t// that may be referenced by multiple frameworks.\n\tconst frameworkDirs = [\n\t\tcfg.reactDir,\n\t\tcfg.svelteDir,\n\t\tcfg.vueDir,\n\t\tcfg.angularDir,\n\t\tcfg.htmlDir,\n\t\tcfg.htmxDir\n\t]\n\t\t.filter((dir): dir is string => Boolean(dir))\n\t\t.map(normalizePath);\n\n\tfor (const siblingPath of getSiblingDirs(frameworkDirs, cfg)) {\n\t\tpush(siblingPath);\n\t}\n\n\treturn paths;\n};\nexport const shouldIgnorePath = (\n\tpath: string,\n\tresolved?: ResolvedBuildPaths\n) => {\n\tconst normalizedPath = path.replace(/\\\\/g, '/');\n\n\t// Allow files inside the configured styles directory through\n\tif (resolved?.stylesDir && normalizedPath.startsWith(resolved.stylesDir)) {\n\t\treturn false;\n\t}\n\n\t// Ignore build output and framework-managed directories, including\n\t// directory-level watcher events like \".../generated\" (no trailing slash).\n\tconst managedDirPattern =\n\t\t/(^|\\/)(build|generated|\\.absolutejs|node_modules|\\.git)(\\/|$)/;\n\n\treturn (\n\t\tmanagedDirPattern.test(normalizedPath) ||\n\t\tnormalizedPath.endsWith('.log') ||\n\t\tnormalizedPath.endsWith('.tmp')\n\t);\n};\n",
20
- "import { existsSync } from 'node:fs';\nimport { basename, dirname, relative, resolve } from 'node:path';\nimport { build } from '../core/build';\nimport type { BuildConfig } from '../../types/build';\nimport { scanEntryPoints } from '../build/scanEntryPoints';\nimport { loadIslandRegistryBuildInfo } from '../build/islandEntries';\nimport {\n\tgetPagesUsingIslandSource,\n\tloadPageIslandMetadata,\n\tsetCurrentPageIslandMetadata\n} from '../islands/pageMetadata';\nimport {\n\tlogCssUpdate,\n\tlogHmrUpdate,\n\tlogScriptUpdate,\n\tlogWarn\n} from '../utils/logger';\nimport { incrementSourceFileVersions, type HMRState } from './clientManager';\nimport { getAffectedFiles } from './dependencyGraph';\nimport { DEFAULT_DEBOUNCE_MS, REBUILD_BATCH_DELAY_MS } from '../constants';\nimport { computeFileHash, hasFileChanged } from './fileHashTracker';\nimport { invalidate as invalidateTransformCache } from './transformCache';\n\n// Eagerly resolve the moduleServer import at load time so the first\n// HMR update doesn't pay the dynamic-import cost. By the time this\n// module is imported, prepare.ts has already loaded moduleServer, so\n// this resolves from Bun's module cache instantly.\nconst moduleServerPromise = import('../dev/moduleServer');\nconst getModuleServer = () => moduleServerPromise;\nimport {\n\tcreateModuleUpdates,\n\tgroupModuleUpdatesByFramework,\n\ttype ModuleUpdate\n} from './moduleMapper';\nimport {\n\tincrementModuleVersions,\n\tserializeModuleVersions\n} from './moduleVersionTracker';\nimport { sendTelemetryEvent } from '../cli/telemetryEvent';\nimport { cleanStaleAssets, populateAssetStore } from './assetStore';\nimport { detectFramework } from './pathUtils';\nimport { toPascal } from '../utils/stringModifiers';\nimport type { ResolvedBuildPaths } from './configResolver';\nimport { broadcastToClients } from './webSocket';\nimport {\n\tcreateStyleTransformConfig,\n\tcreateStylePreprocessorPlugin,\n\tfindStyleEntriesImporting,\n\tgetStyleBaseName,\n\tisStylePath\n} from '../build/stylePreprocessor';\nimport { isTailwindCandidate } from '../build/compileTailwind';\nimport { incrementalTailwindBuild } from '../build/tailwindCompiler';\nimport { markSsrCacheDirty } from '../core/ssrCache';\n\nconst runSequentially = <Item>(\n\titems: Item[],\n\taction: (item: Item) => Promise<void>\n) =>\n\titems.reduce(\n\t\t(chain, item) => chain.then(() => action(item)),\n\t\tPromise.resolve()\n\t);\n\nconst getStyleTransformConfig = (config: BuildConfig) =>\n\tcreateStyleTransformConfig(config.stylePreprocessors, config.postcss);\n\n/* When a fast path handles a file change, the full build doesn't run, so\n Tailwind never gets a chance to rescan source files. If the changed file\n is something Tailwind would scan (.tsx/.svelte/.vue/.html/etc.), we rerun\n Tailwind here and broadcast a CSS reload so newly-referenced utility\n classes actually appear in the emitted CSS. Without this the markup ends\n up referencing classes that have no rules behind them until the next\n full restart.\n\n Uses the persistent in-memory Tailwind compiler — instantiated once and\n reused — so HMR ticks pay only the candidate-scan + serialize cost, not\n the bundler-init + compiler-init cost of a fresh `bun.build`. The result\n is content-hashed so we suppress the CSS-reload broadcast when the\n emitted output didn't actually change (an edit that doesn't add or\n remove any utility classes shouldn't refetch every stylesheet). */\nconst recompileTailwindForFastPath = async (\n\tstate: HMRState,\n\tconfig: BuildConfig,\n\tfiles: string[]\n) => {\n\tif (!config.tailwind) return;\n\tif (!files.some(isTailwindCandidate)) return;\n\n\ttry {\n\t\tconst { cssChanged } = await incrementalTailwindBuild(\n\t\t\tconfig.tailwind,\n\t\t\tstate.resolvedPaths.buildDir,\n\t\t\tfiles,\n\t\t\tgetStyleTransformConfig(config)\n\t\t);\n\t\tif (!cssChanged) return;\n\n\t\tbroadcastToClients(state, {\n\t\t\tdata: { framework: 'tailwind', manifest: state.manifest },\n\t\t\tmessage: 'Tailwind utilities recompiled',\n\t\t\ttype: 'style-update'\n\t\t});\n\t} catch (err) {\n\t\tsendTelemetryEvent('hmr:error', {\n\t\t\tframework: 'tailwind',\n\t\t\tmessage: err instanceof Error ? err.message : String(err)\n\t\t});\n\t}\n};\n\ntype BuildLog = {\n\tlevel?: string;\n\tmessage: string | { text: string };\n\tposition?: {\n\t\tfile?: string;\n\t\tline?: number;\n\t\tcolumn?: number;\n\t\tlineText?: string;\n\t};\n};\n\nconst parseErrorLocationFromMessage = (msg: string) => {\n\tconst pathLineCol = msg.match(/^([^\\s:]+):(\\d+)(?::(\\d+))?/);\n\tif (pathLineCol) {\n\t\tconst [, file, lineStr, colStr] = pathLineCol;\n\n\t\treturn {\n\t\t\tcolumn: colStr ? parseInt(colStr, 10) : undefined,\n\t\t\tfile,\n\t\t\tline: lineStr ? parseInt(lineStr, 10) : undefined\n\t\t};\n\t}\n\tconst atMatch = msg.match(\n\t\t/(?:at|in)\\s+([^(:\\s]+)(?:\\s*\\([^)]*line\\s*(\\d+)[^)]*col(?:umn)?\\s*(\\d+)[^)]*\\)|:(\\d+):(\\d+)?)/i\n\t);\n\tif (atMatch) {\n\t\tconst [, file, line1, col1, line2, col2] = atMatch;\n\n\t\tlet parsedCol: number | undefined;\n\t\tif (col1) parsedCol = parseInt(col1, 10);\n\t\telse if (col2) parsedCol = parseInt(col2, 10);\n\n\t\tlet parsedLine: number | undefined;\n\t\tif (line1) parsedLine = parseInt(line1, 10);\n\t\telse if (line2) parsedLine = parseInt(line2, 10);\n\n\t\treturn {\n\t\t\tcolumn: parsedCol,\n\t\t\tfile: file?.trim(),\n\t\t\tline: parsedLine\n\t\t};\n\t}\n\tconst parenMatch = msg.match(\n\t\t/([^\\s(]+)\\s*\\([^)]*line\\s*(\\d+)[^)]*col(?:umn)?\\s*(\\d+)/i\n\t);\n\tif (parenMatch) {\n\t\tconst [, file, lineStr, colStr] = parenMatch;\n\n\t\treturn {\n\t\t\tcolumn: colStr ? parseInt(colStr, 10) : undefined,\n\t\t\tfile: file ?? undefined,\n\t\t\tline: lineStr ? parseInt(lineStr, 10) : undefined\n\t\t};\n\t}\n\n\treturn {};\n};\n\nconst extractBuildErrorDetails = (\n\terror: unknown,\n\taffectedFrameworks: string[],\n\tresolvedPaths?: ResolvedBuildPaths\n) => {\n\tconst errorObj = error && typeof error === 'object' ? error : undefined;\n\tconst rawLogs =\n\t\terrorObj && 'logs' in errorObj && Array.isArray(errorObj.logs)\n\t\t\t? errorObj.logs\n\t\t\t: undefined;\n\tconst logs: BuildLog[] | undefined =\n\t\trawLogs ??\n\t\t(error instanceof AggregateError && error.errors?.length\n\t\t\t? error.errors\n\t\t\t: undefined);\n\tif (logs && Array.isArray(logs) && logs.length > 0) {\n\t\tconst errLog = logs.find((l) => l.level === 'error') ?? logs[0];\n\t\tconst pos = errLog?.position;\n\t\tconst file = pos?.file;\n\t\tconst line = pos?.line;\n\t\tconst column = pos?.column;\n\t\tconst lineText = pos?.lineText;\n\t\tconst framework =\n\t\t\tfile && resolvedPaths\n\t\t\t\t? detectFramework(file, resolvedPaths)\n\t\t\t\t: (affectedFrameworks[0] ?? 'unknown');\n\n\t\treturn {\n\t\t\tcolumn,\n\t\t\tfile,\n\t\t\tframework:\n\t\t\t\tframework !== 'ignored' ? framework : affectedFrameworks[0],\n\t\t\tline,\n\t\t\tlineText\n\t\t};\n\t}\n\tconst msg = error instanceof Error ? error.message : String(error);\n\tconst parsed = parseErrorLocationFromMessage(msg);\n\tlet [detectedFw] = affectedFrameworks;\n\tif (parsed.file && resolvedPaths) {\n\t\tconst detected = detectFramework(parsed.file, resolvedPaths);\n\t\tdetectedFw = detected !== 'ignored' ? detected : affectedFrameworks[0];\n\t}\n\n\treturn { ...parsed, framework: detectedFw };\n};\n\nconst isValidDeletedAffectedFile = (\n\taffectedFile: string,\n\tdeletedPathResolved: string,\n\tprocessedFiles: Set<string>\n) =>\n\taffectedFile !== deletedPathResolved &&\n\t!processedFiles.has(affectedFile) &&\n\texistsSync(affectedFile);\n\nconst collectDeletedFileAffected = (\n\tstate: HMRState,\n\tfilePathInSet: string,\n\tprocessedFiles: Set<string>,\n\tvalidFiles: string[]\n) => {\n\tstate.fileHashes.delete(filePathInSet);\n\ttry {\n\t\tconst affectedFiles = getAffectedFiles(\n\t\t\tstate.dependencyGraph,\n\t\t\tfilePathInSet\n\t\t);\n\t\tconst deletedPathResolved = resolve(filePathInSet);\n\t\taffectedFiles.forEach((affectedFile) => {\n\t\t\tif (\n\t\t\t\tisValidDeletedAffectedFile(\n\t\t\t\t\taffectedFile,\n\t\t\t\t\tdeletedPathResolved,\n\t\t\t\t\tprocessedFiles\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tvalidFiles.push(affectedFile);\n\t\t\t\tprocessedFiles.add(affectedFile);\n\t\t\t}\n\t\t});\n\t} catch {\n\t\t/* ignored */\n\t}\n};\n\nconst incrementDependentVersions = (\n\tstate: HMRState,\n\tnormalizedFilePath: string\n) => {\n\ttry {\n\t\tconst dependents =\n\t\t\tstate.dependencyGraph.dependents.get(normalizedFilePath);\n\t\tif (!dependents || dependents.size === 0) {\n\t\t\treturn;\n\t\t}\n\t\tconst dependentFiles = Array.from(dependents).filter((file) =>\n\t\t\texistsSync(file)\n\t\t);\n\t\tif (dependentFiles.length === 0) {\n\t\t\treturn;\n\t\t}\n\t\tincrementSourceFileVersions(state, dependentFiles);\n\t} catch {\n\t\t/* ignored */\n\t}\n};\n\nconst addUnprocessedFile = (\n\tnormalizedFilePath: string,\n\tprocessedFiles: Set<string>,\n\tvalidFiles: string[]\n) => {\n\tif (processedFiles.has(normalizedFilePath)) {\n\t\treturn;\n\t}\n\n\tvalidFiles.push(normalizedFilePath);\n\tprocessedFiles.add(normalizedFilePath);\n};\n\nconst collectChangedFileAffected = (\n\tstate: HMRState,\n\tnormalizedFilePath: string,\n\tprocessedFiles: Set<string>,\n\tvalidFiles: string[]\n) => {\n\ttry {\n\t\tconst affectedFiles = getAffectedFiles(\n\t\t\tstate.dependencyGraph,\n\t\t\tnormalizedFilePath\n\t\t);\n\t\taffectedFiles.forEach((affectedFile) => {\n\t\t\tif (\n\t\t\t\t!processedFiles.has(affectedFile) &&\n\t\t\t\taffectedFile !== normalizedFilePath &&\n\t\t\t\texistsSync(affectedFile)\n\t\t\t) {\n\t\t\t\tvalidFiles.push(affectedFile);\n\t\t\t\tprocessedFiles.add(affectedFile);\n\t\t\t}\n\t\t});\n\t} catch {\n\t\taddUnprocessedFile(normalizedFilePath, processedFiles, validFiles);\n\t}\n};\n\nconst processChangedFile = (\n\tstate: HMRState,\n\tfilePathInSet: string,\n\tprocessedFiles: Set<string>,\n\tvalidFiles: string[]\n) => {\n\tconst fileHash = computeFileHash(filePathInSet);\n\tconst storedHash = state.fileHashes.get(filePathInSet);\n\n\tif (storedHash !== undefined && storedHash === fileHash) {\n\t\treturn;\n\t}\n\n\tconst normalizedFilePath = resolve(filePathInSet);\n\n\tif (!processedFiles.has(normalizedFilePath)) {\n\t\tvalidFiles.push(normalizedFilePath);\n\t\tprocessedFiles.add(normalizedFilePath);\n\t}\n\n\tstate.fileHashes.set(normalizedFilePath, fileHash);\n\tincrementSourceFileVersions(state, [normalizedFilePath]);\n\tincrementDependentVersions(state, normalizedFilePath);\n\tcollectChangedFileAffected(\n\t\tstate,\n\t\tnormalizedFilePath,\n\t\tprocessedFiles,\n\t\tvalidFiles\n\t);\n};\n\nconst processFilePathSet = (\n\tstate: HMRState,\n\tfilePathSet: Set<string>,\n\tprocessedFiles: Set<string>,\n\tvalidFiles: string[]\n) => {\n\tfilePathSet.forEach((filePathInSet) => {\n\t\tif (!existsSync(filePathInSet)) {\n\t\t\tcollectDeletedFileAffected(\n\t\t\t\tstate,\n\t\t\t\tfilePathInSet,\n\t\t\t\tprocessedFiles,\n\t\t\t\tvalidFiles\n\t\t\t);\n\n\t\t\treturn;\n\t\t}\n\t\tprocessChangedFile(state, filePathInSet, processedFiles, validFiles);\n\t});\n};\n\nconst detectFrameworkForValidFiles = (\n\tvalidFiles: string[],\n\tstate: HMRState\n) => {\n\tconst [firstFile] = validFiles;\n\tif (!firstFile) {\n\t\treturn undefined;\n\t}\n\n\treturn detectFramework(firstFile, state.resolvedPaths);\n};\n\nconst buildFilesToProcess = (state: HMRState) => {\n\tconst filesToProcess: Map<string, string[]> = new Map();\n\n\tconst uniqueFilesByFramework = new Map<string, Set<string>>();\n\tstate.fileChangeQueue.forEach((filePaths, fwKey) => {\n\t\tuniqueFilesByFramework.set(fwKey, new Set(filePaths));\n\t});\n\n\tuniqueFilesByFramework.forEach((filePathSet) => {\n\t\tconst validFiles: string[] = [];\n\t\tconst processedFiles = new Set<string>();\n\n\t\tprocessFilePathSet(state, filePathSet, processedFiles, validFiles);\n\n\t\tif (validFiles.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst detectedFramework = detectFrameworkForValidFiles(\n\t\t\tvalidFiles,\n\t\t\tstate\n\t\t);\n\t\tif (detectedFramework) {\n\t\t\tfilesToProcess.set(detectedFramework, validFiles);\n\t\t}\n\t});\n\n\treturn filesToProcess;\n};\n\nconst STABILITY_CHECK_ROUNDS = 5;\nconst STABILITY_CHECK_DELAY_MS = 10;\n\nconst isFileStable = async (file: string) => {\n\tconst hash1 = computeFileHash(file);\n\tawait Bun.sleep(STABILITY_CHECK_DELAY_MS);\n\tconst hash2 = computeFileHash(file);\n\n\treturn hash1 === hash2;\n};\n\nconst collectAllQueuedFiles = (fileChangeQueue: Map<string, string[]>) => {\n\tconst allFiles: string[] = [];\n\tfor (const files of fileChangeQueue.values()) {\n\t\tallFiles.push(...files);\n\t}\n\n\treturn allFiles;\n};\n\nconst areAllQueuedFilesStable = async (\n\tfileChangeQueue: Map<string, string[]>\n) => {\n\tconst allFiles = collectAllQueuedFiles(fileChangeQueue);\n\tconst checkFile = async (files: string[]) => {\n\t\tconst [file, ...remaining] = files;\n\t\tif (!file) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst stable = await isFileStable(file);\n\t\tif (!stable) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn checkFile(remaining);\n\t};\n\n\treturn checkFile(allFiles);\n};\n\nconst waitForStableWrites = async (state: HMRState) => {\n\tconst waitRound = async (round: number) => {\n\t\tif (round >= STABILITY_CHECK_ROUNDS) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst stable = await areAllQueuedFilesStable(state.fileChangeQueue);\n\t\tif (stable) {\n\t\t\treturn;\n\t\t}\n\n\t\tawait waitRound(round + 1);\n\t};\n\n\tawait waitRound(0);\n};\n\nconst enqueueImporter = (state: HMRState, importer: string) => {\n\tconst importerFramework = detectFramework(importer, state.resolvedPaths);\n\tif (importerFramework === 'ignored') return;\n\tif (!state.fileChangeQueue.has(importerFramework)) {\n\t\tstate.fileChangeQueue.set(importerFramework, []);\n\t}\n\tconst importerQueue = state.fileChangeQueue.get(importerFramework);\n\tif (importerQueue && !importerQueue.includes(importer)) {\n\t\timporterQueue.push(importer);\n\t}\n};\n\nconst enqueueStyleImporters = (state: HMRState, changedStylePath: string) => {\n\tfor (const importer of findStyleEntriesImporting(changedStylePath)) {\n\t\tenqueueImporter(state, importer);\n\t}\n};\n\nexport const queueFileChange = async (\n\tstate: HMRState,\n\tfilePath: string,\n\tconfig: BuildConfig,\n\tonRebuildComplete: (result: {\n\t\tmanifest: Record<string, string>;\n\t\thmrState: HMRState;\n\t}) => void\n) => {\n\tconst framework = detectFramework(filePath, state.resolvedPaths);\n\n\tif (framework === 'ignored') {\n\t\treturn;\n\t}\n\n\tconst currentHash = computeFileHash(filePath);\n\n\tif (!hasFileChanged(filePath, currentHash, state.fileHashes)) {\n\t\treturn;\n\t}\n\n\t// Shared files (workers, utils, etc.) that don't belong to any\n\t// framework just need their transform cache invalidated — no rebuild.\n\tif (framework === 'unknown') {\n\t\tinvalidateTransformCache(resolve(filePath));\n\t\tconst relPath = relative(process.cwd(), filePath);\n\t\tlogHmrUpdate(relPath);\n\n\t\treturn;\n\t}\n\n\tif (!state.fileChangeQueue.has(framework)) {\n\t\tstate.fileChangeQueue.set(framework, []);\n\t}\n\n\tconst queue = state.fileChangeQueue.get(framework);\n\tif (queue && !queue.includes(filePath)) {\n\t\tqueue.push(filePath);\n\t}\n\n\t// If a stylesheet partial (e.g. _tokens.scss) changed, also enqueue\n\t// every entry stylesheet that imported it during its last compile.\n\t// Without this the importer would silently keep the stale CSS until\n\t// the next full restart.\n\tif (isStylePath(filePath)) {\n\t\tenqueueStyleImporters(state, filePath);\n\t}\n\n\tif (state.isRebuilding) {\n\t\treturn;\n\t}\n\n\tif (state.rebuildTimeout) {\n\t\tclearTimeout(state.rebuildTimeout);\n\t}\n\n\tconst DEBOUNCE_MS = config.options?.hmr?.debounceMs ?? DEFAULT_DEBOUNCE_MS;\n\tstate.rebuildTimeout = setTimeout(async () => {\n\t\t// Wait for file writes to stabilize. Editors using atomic writes\n\t\t// (write .tmp → rename) can trigger the watcher before the rename\n\t\t// completes. Read the file twice with a gap — if hashes match,\n\t\t// the write is stable.\n\t\tawait waitForStableWrites(state);\n\n\t\tconst filesToProcess = buildFilesToProcess(state);\n\t\tstate.fileChangeQueue.clear();\n\n\t\tif (filesToProcess.size === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst affectedFrameworks = Array.from(filesToProcess.keys());\n\n\t\taffectedFrameworks.forEach((frameworkKey) => {\n\t\t\tstate.rebuildQueue.add(frameworkKey);\n\t\t});\n\n\t\tconst filesToRebuild: string[] = [];\n\t\tfilesToProcess.forEach((filePaths) => {\n\t\t\tfilesToRebuild.push(...filePaths);\n\t\t});\n\n\t\tvoid triggerRebuild(state, config, onRebuildComplete, filesToRebuild);\n\t}, DEBOUNCE_MS);\n};\n\nconst resolveComponentLookupFile = (\n\tcomponentFile: string,\n\tgraph?: HMRState['dependencyGraph']\n) => {\n\tif (!componentFile.endsWith('.html')) {\n\t\treturn componentFile;\n\t}\n\t// Try same-name .ts counterpart (co-located template)\n\tconst tsCounterpart = componentFile.replace(/\\.html$/, '.ts');\n\tif (existsSync(tsCounterpart)) {\n\t\treturn tsCounterpart;\n\t}\n\t// For external templates (templateUrl in a different dir),\n\t// use the dependency graph to find the .ts that references this .html\n\tif (!graph) return componentFile;\n\n\tconst dependents = graph.dependents.get(resolve(componentFile));\n\tif (!dependents) return componentFile;\n\n\tfor (const dep of dependents) {\n\t\tif (dep.endsWith('.ts')) return dep;\n\t}\n\n\treturn componentFile;\n};\n\nconst resolveAngularPageEntries = (\n\tstate: HMRState,\n\tangularFiles: string[],\n\tangularPagesPath: string\n) => {\n\tconst pageEntries = angularFiles.filter(\n\t\t(file) =>\n\t\t\tfile.endsWith('.ts') && resolve(file).startsWith(angularPagesPath)\n\t);\n\n\tif (pageEntries.length > 0 || !state.dependencyGraph) {\n\t\treturn pageEntries;\n\t}\n\n\tconst resolvedPages = new Set<string>();\n\tangularFiles.forEach((componentFile) => {\n\t\tconst lookupFile = resolveComponentLookupFile(\n\t\t\tcomponentFile,\n\t\t\tstate.dependencyGraph\n\t\t);\n\t\tconst affected = getAffectedFiles(state.dependencyGraph, lookupFile);\n\t\taffected.forEach((file) => {\n\t\t\tif (\n\t\t\t\tfile.endsWith('.ts') &&\n\t\t\t\tresolve(file).startsWith(angularPagesPath)\n\t\t\t) {\n\t\t\t\tresolvedPages.add(file);\n\t\t\t}\n\t\t});\n\t});\n\n\treturn Array.from(resolvedPages);\n};\n\nconst computeClientRoot = async (resolvedPaths: ResolvedBuildPaths) => {\n\tconst clientRoots = [\n\t\tresolvedPaths.reactDir,\n\t\tresolvedPaths.svelteDir,\n\t\tresolvedPaths.htmlDir,\n\t\tresolvedPaths.vueDir,\n\t\tresolvedPaths.angularDir\n\t].filter((dir): dir is string => Boolean(dir));\n\n\tconst { commonAncestor } = await import('../utils/commonAncestor');\n\n\treturn clientRoots.length === 1\n\t\t? (clientRoots[0] ?? process.cwd())\n\t\t: commonAncestor(clientRoots, process.cwd());\n};\n\nconst updateServerManifestEntry = (\n\tstate: HMRState,\n\tartifact: { path: string; hash: string | null }\n) => {\n\tconst fileWithHash = basename(artifact.path);\n\tconst [baseName] = fileWithHash.split(`.${artifact.hash}.`);\n\tif (!baseName) {\n\t\treturn;\n\t}\n\tstate.manifest[toPascal(baseName)] = artifact.path;\n};\n\nconst bundleAngularClient = async (\n\tstate: HMRState,\n\tclientPaths: string[],\n\tbuildDir: string\n) => {\n\tconst { build: bunBuild } = await import('bun');\n\tconst { generateManifest } = await import('../build/generateManifest');\n\tconst { getAngularVendorPaths } = await import('../core/devVendorPaths');\n\tconst clientRoot = await computeClientRoot(state.resolvedPaths);\n\tconst depVendorPaths = globalThis.__depVendorPaths ?? {};\n\n\tlet angVendorPaths = getAngularVendorPaths();\n\tif (!angVendorPaths) {\n\t\tconst { computeAngularVendorPaths } = await import(\n\t\t\t'../build/buildAngularVendor'\n\t\t);\n\t\tconst { setAngularVendorPaths } = await import(\n\t\t\t'../core/devVendorPaths'\n\t\t);\n\t\tangVendorPaths = computeAngularVendorPaths(\n\t\t\tglobalThis.__angularVendorSpecifiers\n\t\t);\n\t\tsetAngularVendorPaths(angVendorPaths);\n\t}\n\n\tconst clientResult = await bunBuild({\n\t\tentrypoints: clientPaths,\n\t\t...(Object.keys({\n\t\t\t...(angVendorPaths ?? {}),\n\t\t\t...depVendorPaths\n\t\t}).length > 0\n\t\t\t? {\n\t\t\t\t\texternal: Object.keys({\n\t\t\t\t\t\t...(angVendorPaths ?? {}),\n\t\t\t\t\t\t...depVendorPaths\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t: {}),\n\t\tformat: 'esm',\n\t\tnaming: '[dir]/[name].[hash].[ext]',\n\t\toutdir: buildDir,\n\t\tplugins: [\n\t\t\tcreateStylePreprocessorPlugin(getStyleTransformConfig(state.config))\n\t\t],\n\t\troot: clientRoot,\n\t\ttarget: 'browser',\n\t\tthrow: false\n\t});\n\n\tif (!clientResult.success) {\n\t\treturn;\n\t}\n\n\tif (angVendorPaths || Object.keys(depVendorPaths).length > 0) {\n\t\tconst { rewriteImports } = await import('../build/rewriteImports');\n\t\tawait rewriteImports(\n\t\t\tclientResult.outputs.map((artifact) => artifact.path),\n\t\t\t{\n\t\t\t\t...(angVendorPaths ?? {}),\n\t\t\t\t...depVendorPaths\n\t\t\t}\n\t\t);\n\t}\n\n\tconst clientManifest = generateManifest(clientResult.outputs, buildDir);\n\tObject.assign(state.manifest, clientManifest);\n\tawait populateAssetStore(state.assetStore, clientManifest, buildDir);\n};\n\nconst broadcastAngularPageUpdates = (\n\tstate: HMRState,\n\tpagesToUpdate: string[],\n\tmanifest: Record<string, string>,\n\tstartTime: number\n) => {\n\tpagesToUpdate.forEach((angularPagePath) => {\n\t\tconst fileName = basename(angularPagePath);\n\t\tconst baseName = fileName.replace(/\\.[tj]s$/, '');\n\t\tconst pascalName = toPascal(baseName);\n\t\tconst cssKey = `${pascalName}CSS`;\n\t\tconst cssUrl = manifest[cssKey] || null;\n\n\t\tconst duration = Date.now() - startTime;\n\t\tlogHmrUpdate(angularPagePath, 'angular', duration);\n\t\tbroadcastToClients(state, {\n\t\t\tdata: {\n\t\t\t\tcssBaseName: baseName,\n\t\t\t\tcssUrl,\n\t\t\t\tframework: 'angular',\n\t\t\t\tmanifest,\n\t\t\t\tsourceFile: angularPagePath,\n\t\t\t\tupdateType: 'logic' as const\n\t\t\t},\n\t\t\ttype: 'angular-update'\n\t\t});\n\t});\n};\n\nconst compileAndBundleAngular = async (\n\tstate: HMRState,\n\tpageEntries: string[],\n\tangularDir: string\n) => {\n\tconst { compileAngular } = await import('../build/compileAngular');\n\tconst { clientPaths, serverPaths } = await compileAngular(\n\t\tpageEntries,\n\t\tangularDir,\n\t\ttrue,\n\t\tgetStyleTransformConfig(state.config)\n\t);\n\tserverPaths.forEach((serverPath) => {\n\t\tconst fileBase = basename(serverPath, '.js');\n\t\tstate.manifest[toPascal(fileBase)] = resolve(serverPath);\n\t});\n\n\tif (clientPaths.length > 0) {\n\t\tawait bundleAngularClient(\n\t\t\tstate,\n\t\t\tclientPaths,\n\t\t\tstate.resolvedPaths.buildDir\n\t\t);\n\t}\n};\n\nconst handleAngularFastPath = async (\n\tstate: HMRState,\n\tconfig: BuildConfig,\n\tfilesToRebuild: string[],\n\tstartTime: number,\n\tonRebuildComplete: (result: {\n\t\tmanifest: Record<string, string>;\n\t\thmrState: HMRState;\n\t}) => void\n) => {\n\tconst angularDir = config.angularDirectory ?? '';\n\tconst angularFiles = filesToRebuild.filter(\n\t\t(file) => detectFramework(file, state.resolvedPaths) === 'angular'\n\t);\n\n\t// Update hashes so duplicate watcher events are filtered\n\tfor (const file of angularFiles) {\n\t\tstate.fileHashes.set(resolve(file), computeFileHash(file));\n\t}\n\n\tconst angularPagesPath = resolve(angularDir, 'pages');\n\tconst pageEntries = resolveAngularPageEntries(\n\t\tstate,\n\t\tangularFiles,\n\t\tangularPagesPath\n\t);\n\n\tif (pageEntries.length > 0) {\n\t\tawait compileAndBundleAngular(state, pageEntries, angularDir);\n\t\tmarkSsrCacheDirty('angular');\n\t}\n\n\tconst { manifest } = state;\n\tconst angularHmrFiles = angularFiles.filter(\n\t\t(file) => file.endsWith('.ts') || file.endsWith('.html')\n\t);\n\tconst angularPageFiles = angularHmrFiles.filter((file) =>\n\t\tfile.replace(/\\\\/g, '/').includes('/pages/')\n\t);\n\tconst pagesToUpdate =\n\t\tangularPageFiles.length > 0 ? angularPageFiles : pageEntries;\n\n\tbroadcastAngularPageUpdates(state, pagesToUpdate, manifest, startTime);\n\n\tonRebuildComplete({ hmrState: state, manifest });\n\n\treturn manifest;\n};\n\nconst resolveReactEntryForPageFile = (\n\tnormalized: string,\n\tpagesPathResolved: string,\n\treactIndexesPath: string\n) => {\n\tconst pageName = basename(normalized, '.tsx');\n\tconst indexPath = resolve(reactIndexesPath, `${pageName}.tsx`);\n\tif (!existsSync(indexPath)) {\n\t\treturn undefined;\n\t}\n\n\treturn indexPath;\n};\n\nconst resolveReactEntriesFromDeps = (\n\tstate: HMRState,\n\tnormalized: string,\n\tpagesPathResolved: string,\n\treactIndexesPath: string,\n\treactEntries: string[]\n) => {\n\tconst affected = getAffectedFiles(state.dependencyGraph, normalized);\n\taffected.forEach((dep) => {\n\t\tif (!dep.startsWith(pagesPathResolved)) {\n\t\t\treturn;\n\t\t}\n\t\tconst pageName = basename(dep, '.tsx');\n\t\tconst indexPath = resolve(reactIndexesPath, `${pageName}.tsx`);\n\t\tif (existsSync(indexPath) && !reactEntries.includes(indexPath)) {\n\t\t\treactEntries.push(indexPath);\n\t\t}\n\t});\n};\n\nconst resolveReactEntryForFile = (\n\tstate: HMRState,\n\tfile: string,\n\tpagesPathResolved: string,\n\treactIndexesPath: string,\n\treactEntries: string[]\n) => {\n\tconst normalized = resolve(file);\n\tif (!normalized.startsWith(pagesPathResolved)) {\n\t\tresolveReactEntriesFromDeps(\n\t\t\tstate,\n\t\t\tnormalized,\n\t\t\tpagesPathResolved,\n\t\t\treactIndexesPath,\n\t\t\treactEntries\n\t\t);\n\n\t\treturn;\n\t}\n\n\tconst entry = resolveReactEntryForPageFile(\n\t\tnormalized,\n\t\tpagesPathResolved,\n\t\treactIndexesPath\n\t);\n\tif (entry) {\n\t\treactEntries.push(entry);\n\t}\n};\n\nconst collectReactEntries = (\n\tstate: HMRState,\n\tfilesToRebuild: string[],\n\treactPagesPath: string,\n\treactIndexesPath: string\n) => {\n\tconst reactEntries: string[] = [];\n\tconst pagesPathResolved = resolve(reactPagesPath);\n\n\tfilesToRebuild.forEach((file) => {\n\t\tresolveReactEntryForFile(\n\t\t\tstate,\n\t\t\tfile,\n\t\t\tpagesPathResolved,\n\t\t\treactIndexesPath,\n\t\t\treactEntries\n\t\t);\n\t});\n\n\treturn reactEntries;\n};\n\nconst bundleReactClient = async (\n\tstate: HMRState,\n\treactEntries: string[],\n\treactIndexesPath: string,\n\tbuildDir: string\n) => {\n\tconst { build: bunBuild } = await import('bun');\n\tconst { generateManifest } = await import('../build/generateManifest');\n\tconst { getDevVendorPaths } = await import('../core/devVendorPaths');\n\tconst { rewriteReactImports } = await import(\n\t\t'../build/rewriteReactImports'\n\t);\n\tconst clientRoot = await computeClientRoot(state.resolvedPaths);\n\tconst depVendorPaths = globalThis.__depVendorPaths ?? {};\n\n\tconst refreshEntry = resolve(reactIndexesPath, '_refresh.tsx');\n\tif (!reactEntries.includes(refreshEntry)) {\n\t\treactEntries.push(refreshEntry);\n\t}\n\n\tlet vendorPaths = getDevVendorPaths();\n\tif (!vendorPaths) {\n\t\tconst { computeVendorPaths } = await import(\n\t\t\t'../build/buildReactVendor'\n\t\t);\n\t\tconst { setDevVendorPaths } = await import('../core/devVendorPaths');\n\t\tvendorPaths = computeVendorPaths();\n\t\tsetDevVendorPaths(vendorPaths);\n\t}\n\n\tconst { rmSync } = await import('node:fs');\n\trmSync(resolve(buildDir, 'react', 'generated', 'indexes'), {\n\t\tforce: true,\n\t\trecursive: true\n\t});\n\n\tconst clientResult = await bunBuild({\n\t\tentrypoints: reactEntries,\n\t\tformat: 'esm',\n\t\tjsx: { development: true },\n\t\tnaming: '[dir]/[name].[hash].[ext]',\n\t\toutdir: buildDir,\n\t\tplugins: [\n\t\t\tcreateStylePreprocessorPlugin(getStyleTransformConfig(state.config))\n\t\t],\n\t\treactFastRefresh: true,\n\t\troot: clientRoot,\n\t\tsplitting: true,\n\t\ttarget: 'browser',\n\t\tthrow: false,\n\t\t...(Object.keys({\n\t\t\t...(vendorPaths ?? {}),\n\t\t\t...depVendorPaths\n\t\t}).length > 0\n\t\t\t? {\n\t\t\t\t\texternal: Object.keys({\n\t\t\t\t\t\t...(vendorPaths ?? {}),\n\t\t\t\t\t\t...depVendorPaths\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t: {})\n\t});\n\n\tif (!clientResult.success) {\n\t\treturn;\n\t}\n\n\tif (vendorPaths || Object.keys(depVendorPaths).length > 0) {\n\t\tawait rewriteReactImports(\n\t\t\tclientResult.outputs.map((art) => art.path),\n\t\t\t{\n\t\t\t\t...(vendorPaths ?? {}),\n\t\t\t\t...depVendorPaths\n\t\t\t}\n\t\t);\n\t}\n\n\tconst clientManifest = generateManifest(clientResult.outputs, buildDir);\n\tObject.assign(state.manifest, clientManifest);\n\tawait populateAssetStore(state.assetStore, clientManifest, buildDir);\n};\n\n// O(1) HMR: invalidate cache, pre-transpile the changed file,\n// and return the /@src/ URL. Pre-warming ensures the browser fetch\n// hits a warm cache. Used by React and Vue (component-level swap).\nconst getModuleUrl = async (pageFile: string) => {\n\tconst { invalidateModule, warmCache, SRC_URL_PREFIX } = await import(\n\t\t'../dev/moduleServer'\n\t);\n\tinvalidateModule(pageFile);\n\tconst rel = relative(process.cwd(), pageFile).replace(/\\\\/g, '/');\n\tconst url = `${SRC_URL_PREFIX}${rel}`;\n\twarmCache(url);\n\n\treturn url;\n};\n\nconst getReactModuleUrl = getModuleUrl;\n\n// Svelte: invalidate changed files, resolve the PAGE component,\n// and return an /@hmr/ URL that bootstraps the full page remount.\n// (Svelte lacks a component-level HMR runtime like React/Vue.)\n\nconst resolveBroadcastTarget = async (primaryFile: string) => {\n\tconst isComponentFile =\n\t\tprimaryFile.endsWith('.tsx') || primaryFile.endsWith('.jsx');\n\n\tif (isComponentFile) return primaryFile;\n\n\tconst { findNearestComponent } = await import('./transformCache');\n\tconst nearest = findNearestComponent(resolve(primaryFile));\n\n\treturn nearest ?? primaryFile;\n};\n\nconst handleReactModuleServerPath = async (\n\tstate: HMRState,\n\treactFiles: string[],\n\tstartTime: number,\n\tonRebuildComplete: (result: {\n\t\tmanifest: Record<string, string>;\n\t\thmrState: HMRState;\n\t}) => void\n) => {\n\t// Update hashes so duplicate watcher events are filtered\n\tfor (const file of reactFiles) {\n\t\tstate.fileHashes.set(resolve(file), computeFileHash(file));\n\t}\n\n\tmarkSsrCacheDirty('react');\n\n\tconst primaryFile =\n\t\treactFiles.find(\n\t\t\t(file) => !file.replace(/\\\\/g, '/').includes('/pages/')\n\t\t) ?? reactFiles[0];\n\n\tif (!primaryFile) {\n\t\tonRebuildComplete({\n\t\t\thmrState: state,\n\t\t\tmanifest: state.manifest\n\t\t});\n\n\t\treturn state.manifest;\n\t}\n\n\t// Invalidate changed files + direct importers in transform cache\n\tconst { invalidateModule } = await getModuleServer();\n\tfor (const file of reactFiles) {\n\t\tinvalidateModule(file);\n\t}\n\n\tconst broadcastTarget = await resolveBroadcastTarget(primaryFile);\n\tconst pageModuleUrl = await getReactModuleUrl(broadcastTarget);\n\n\tif (pageModuleUrl) {\n\t\tconst serverDuration = Date.now() - startTime;\n\t\tstate.lastHmrPath = relative(process.cwd(), primaryFile).replace(\n\t\t\t/\\\\/g,\n\t\t\t'/'\n\t\t);\n\t\tstate.lastHmrFramework = 'react';\n\n\t\tbroadcastToClients(state, {\n\t\t\tdata: {\n\t\t\t\tframework: 'react',\n\t\t\t\thasComponentChanges: true,\n\t\t\t\thasCSSChanges: false,\n\t\t\t\tmanifest: state.manifest,\n\t\t\t\tpageModuleUrl,\n\t\t\t\tprimarySource: primaryFile,\n\t\t\t\tserverDuration,\n\t\t\t\tsourceFiles: reactFiles\n\t\t\t},\n\t\t\ttype: 'react-update'\n\t\t});\n\t}\n\n\tonRebuildComplete({\n\t\thmrState: state,\n\t\tmanifest: state.manifest\n\t});\n\n\treturn state.manifest;\n};\n\nconst handleReactFastPath = async (\n\tstate: HMRState,\n\tconfig: BuildConfig,\n\tfilesToRebuild: string[],\n\tstartTime: number,\n\tonRebuildComplete: (result: {\n\t\tmanifest: Record<string, string>;\n\t\thmrState: HMRState;\n\t}) => void\n) => {\n\tconst reactDir = config.reactDirectory ?? '';\n\tconst reactPagesPath = resolve(reactDir, 'pages');\n\tconst reactIndexesPath = resolve(reactDir, 'generated', 'indexes');\n\tconst { buildDir } = state.resolvedPaths;\n\n\t// O(1) fast path: serve the changed file via the module server.\n\t// No Bun.build() at all — the browser re-imports the single module\n\t// and React Fast Refresh swaps the component in place.\n\tconst reactFiles = filesToRebuild.filter(\n\t\t(file) => detectFramework(file, state.resolvedPaths) === 'react'\n\t);\n\n\t// O(1) fast path for ALL React files via the module server.\n\t// Component files → re-import directly via Fast Refresh.\n\t// Data/utility files → find nearest component boundary and\n\t// re-import that. Chain invalidation ensures the data file's\n\t// ?v= is bumped, so the browser fetches only 2 modules\n\t// (component + changed data file). State is preserved.\n\tif (reactFiles.length > 0) {\n\t\treturn handleReactModuleServerPath(\n\t\t\tstate,\n\t\t\treactFiles,\n\t\t\tstartTime,\n\t\t\tonRebuildComplete\n\t\t);\n\t}\n\n\t// Full rebuild path: component changes or fast path failed\n\tconst { generateReactIndexFiles } = await import(\n\t\t'../build/generateReactIndexes'\n\t);\n\tawait generateReactIndexFiles(reactPagesPath, reactIndexesPath, true);\n\n\tconst reactEntries = collectReactEntries(\n\t\tstate,\n\t\tfilesToRebuild,\n\t\treactPagesPath,\n\t\treactIndexesPath\n\t);\n\n\tif (reactEntries.length > 0) {\n\t\tawait bundleReactClient(\n\t\t\tstate,\n\t\t\treactEntries,\n\t\t\treactIndexesPath,\n\t\t\tbuildDir\n\t\t);\n\t}\n\n\tconst { manifest } = state;\n\tconst duration = Date.now() - startTime;\n\n\tconst reactPageFiles = reactFiles.filter((file) =>\n\t\tfile.replace(/\\\\/g, '/').includes('/pages/')\n\t);\n\tconst sourceFiles = reactPageFiles.length > 0 ? reactPageFiles : reactFiles;\n\n\tlogHmrUpdate(sourceFiles[0] ?? reactFiles[0] ?? '', 'react', duration);\n\tbroadcastToClients(state, {\n\t\tdata: {\n\t\t\tframework: 'react',\n\t\t\thasComponentChanges: true,\n\t\t\thasCSSChanges: false,\n\t\t\tmanifest,\n\t\t\tprimarySource: sourceFiles[0],\n\t\t\tsourceFiles\n\t\t},\n\t\ttype: 'react-update'\n\t});\n\n\tonRebuildComplete({ hmrState: state, manifest });\n\n\treturn manifest;\n};\n\nconst handleServerManifestUpdate = (\n\tstate: HMRState,\n\tserverResult: Awaited<ReturnType<typeof import('bun').build>> | undefined\n) => {\n\tif (!serverResult?.success) {\n\t\treturn;\n\t}\n\n\tserverResult.outputs.forEach((artifact) => {\n\t\tupdateServerManifestEntry(state, artifact);\n\t});\n};\n\nconst handleClientManifestUpdate = async (\n\tstate: HMRState,\n\tclientResult: Awaited<ReturnType<typeof import('bun').build>> | undefined,\n\tbuildDir: string\n) => {\n\tif (!clientResult?.success) {\n\t\treturn;\n\t}\n\n\tconst { generateManifest } = await import('../build/generateManifest');\n\tconst clientManifest = generateManifest(clientResult.outputs, buildDir);\n\tObject.assign(state.manifest, clientManifest);\n\tawait populateAssetStore(state.assetStore, clientManifest, buildDir);\n};\n\nconst broadcastSvelteModuleUpdate = async (\n\tstate: HMRState,\n\tchangedFile: string,\n\tsvelteFiles: string[],\n\tserverDuration: number\n) => {\n\tconst pageModuleUrl = await getModuleUrl(changedFile);\n\tstate.lastHmrPath = changedFile;\n\tstate.lastHmrFramework = 'svelte';\n\n\tbroadcastToClients(state, {\n\t\tdata: {\n\t\t\tframework: 'svelte',\n\t\t\tmanifest: state.manifest,\n\t\t\tpageModuleUrl,\n\t\t\tserverDuration,\n\t\t\tsourceFile: changedFile,\n\t\t\tsourceFiles: svelteFiles,\n\t\t\tupdateType: 'full'\n\t\t},\n\t\ttype: 'svelte-update'\n\t});\n};\n\nconst handleSvelteModuleServerPath = async (\n\tstate: HMRState,\n\tsvelteFiles: string[],\n\tstartTime: number,\n\tonRebuildComplete: (result: {\n\t\tmanifest: Record<string, string>;\n\t\thmrState: HMRState;\n\t}) => void\n) => {\n\tfor (const file of svelteFiles) {\n\t\tstate.fileHashes.set(resolve(file), computeFileHash(file));\n\t}\n\n\tmarkSsrCacheDirty('svelte');\n\n\tconst serverDuration = Date.now() - startTime;\n\n\tawait runSequentially(svelteFiles, (changedFile) =>\n\t\tbroadcastSvelteModuleUpdate(\n\t\t\tstate,\n\t\t\tchangedFile,\n\t\t\tsvelteFiles,\n\t\t\tserverDuration\n\t\t)\n\t);\n\n\tonRebuildComplete({\n\t\thmrState: state,\n\t\tmanifest: state.manifest\n\t});\n\n\treturn state.manifest;\n};\n\nconst handleSvelteFastPath = async (\n\tstate: HMRState,\n\tconfig: BuildConfig,\n\tfilesToRebuild: string[],\n\tstartTime: number,\n\tonRebuildComplete: (result: {\n\t\tmanifest: Record<string, string>;\n\t\thmrState: HMRState;\n\t}) => void\n) => {\n\tconst svelteDir = config.svelteDirectory ?? '';\n\n\tconst svelteFiles = filesToRebuild.filter(\n\t\t(file) =>\n\t\t\t(file.endsWith('.svelte') || file.includes('.svelte.')) &&\n\t\t\tdetectFramework(file, state.resolvedPaths) === 'svelte'\n\t);\n\n\t// O(1) fast path: Svelte 5's $.hmr() swaps components in place.\n\t// Handles ALL changed files — invalidate each, broadcast each.\n\tif (svelteFiles.length > 0) {\n\t\treturn handleSvelteModuleServerPath(\n\t\t\tstate,\n\t\t\tsvelteFiles,\n\t\t\tstartTime,\n\t\t\tonRebuildComplete\n\t\t);\n\t}\n\n\t// Bundled fallback\n\tconst { buildDir } = state.resolvedPaths;\n\n\tif (svelteFiles.length > 0) {\n\t\tconst { compileSvelte } = await import('../build/compileSvelte');\n\t\tconst { build: bunBuild } = await import('bun');\n\t\tconst clientRoot = await computeClientRoot(state.resolvedPaths);\n\n\t\tconst { svelteServerPaths, svelteIndexPaths, svelteClientPaths } =\n\t\t\tawait compileSvelte(\n\t\t\t\tsvelteFiles,\n\t\t\t\tsvelteDir,\n\t\t\t\tnew Map(),\n\t\t\t\ttrue,\n\t\t\t\tgetStyleTransformConfig(state.config)\n\t\t\t);\n\n\t\tconst serverEntries = [...svelteServerPaths];\n\t\tconst clientEntries = [...svelteIndexPaths, ...svelteClientPaths];\n\n\t\tconst serverRoot = resolve(svelteDir, 'generated', 'server');\n\t\tconst serverOutDir = resolve(buildDir, basename(svelteDir));\n\n\t\tconst [serverResult, clientResult] = await Promise.all([\n\t\t\tserverEntries.length > 0\n\t\t\t\t? bunBuild({\n\t\t\t\t\t\tentrypoints: serverEntries,\n\t\t\t\t\t\texternal: [\n\t\t\t\t\t\t\t'react',\n\t\t\t\t\t\t\t'react/*',\n\t\t\t\t\t\t\t'react-dom',\n\t\t\t\t\t\t\t'react-dom/*',\n\t\t\t\t\t\t\t'svelte',\n\t\t\t\t\t\t\t'svelte/*'\n\t\t\t\t\t\t],\n\t\t\t\t\t\tformat: 'esm',\n\t\t\t\t\t\tnaming: '[dir]/[name].[hash].[ext]',\n\t\t\t\t\t\toutdir: serverOutDir,\n\t\t\t\t\t\tplugins: [\n\t\t\t\t\t\t\tcreateStylePreprocessorPlugin(\n\t\t\t\t\t\t\t\tgetStyleTransformConfig(state.config)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t],\n\t\t\t\t\t\troot: serverRoot,\n\t\t\t\t\t\ttarget: 'bun',\n\t\t\t\t\t\tthrow: false\n\t\t\t\t\t})\n\t\t\t\t: undefined,\n\t\t\tclientEntries.length > 0\n\t\t\t\t? bunBuild({\n\t\t\t\t\t\tentrypoints: clientEntries,\n\t\t\t\t\t\tformat: 'esm',\n\t\t\t\t\t\tnaming: '[dir]/[name].[hash].[ext]',\n\t\t\t\t\t\toutdir: buildDir,\n\t\t\t\t\t\tplugins: [\n\t\t\t\t\t\t\tcreateStylePreprocessorPlugin(\n\t\t\t\t\t\t\t\tgetStyleTransformConfig(state.config)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t],\n\t\t\t\t\t\troot: clientRoot,\n\t\t\t\t\t\ttarget: 'browser',\n\t\t\t\t\t\tthrow: false\n\t\t\t\t\t})\n\t\t\t\t: undefined\n\t\t]);\n\n\t\thandleServerManifestUpdate(state, serverResult);\n\t\tawait handleClientManifestUpdate(state, clientResult, buildDir);\n\t}\n\n\tconst { manifest } = state;\n\tconst duration = Date.now() - startTime;\n\n\tconst broadcastFiles =\n\t\tsvelteFiles.length > 0 ? svelteFiles : filesToRebuild;\n\tbroadcastFiles.forEach((sveltePagePath) => {\n\t\tconst fileName = basename(sveltePagePath);\n\t\tconst baseName = fileName.replace(/\\.svelte$/, '');\n\t\tconst pascalName = toPascal(baseName);\n\t\tconst cssKey = `${pascalName}CSS`;\n\t\tconst cssUrl = manifest[cssKey] || null;\n\n\t\tlogHmrUpdate(sveltePagePath, 'svelte', duration);\n\t\tbroadcastToClients(state, {\n\t\t\tdata: {\n\t\t\t\tcssBaseName: baseName,\n\t\t\t\tcssUrl,\n\t\t\t\tframework: 'svelte',\n\t\t\t\thtml: null,\n\t\t\t\tmanifest,\n\t\t\t\tsourceFile: sveltePagePath,\n\t\t\t\tupdateType: 'full'\n\t\t\t},\n\t\t\ttype: 'svelte-update'\n\t\t});\n\t});\n\n\tonRebuildComplete({ hmrState: state, manifest });\n\n\treturn manifest;\n};\n\nconst collectAffectedVueFiles = (\n\tstate: HMRState,\n\tnonVueFiles: string[],\n\tvueFiles: string[]\n) => {\n\tfor (const tsFile of nonVueFiles) {\n\t\tconst affected = getAffectedFiles(state.dependencyGraph, tsFile);\n\t\tconst newVueDeps = affected.filter(\n\t\t\t(dep) => dep.endsWith('.vue') && !vueFiles.includes(dep)\n\t\t);\n\t\tvueFiles.push(...newVueDeps);\n\t}\n};\n\nconst invalidateNonVueModules = async (nonVueFiles: string[]) => {\n\tif (nonVueFiles.length === 0) return;\n\n\tconst { invalidateModule } = await getModuleServer();\n\tfor (const file of nonVueFiles) {\n\t\tinvalidateModule(file);\n\t}\n};\n\nconst broadcastVueModuleUpdate = async (\n\tstate: HMRState,\n\tchangedFile: string,\n\tvueFiles: string[],\n\tnonVueFiles: string[],\n\tforceReload: boolean,\n\tserverDuration: number\n) => {\n\tconst pageModuleUrl = await getModuleUrl(changedFile);\n\t// Log the actual changed file — the composable, not the page\n\tconst [firstNonVue] = nonVueFiles;\n\tstate.lastHmrPath =\n\t\tnonVueFiles.length > 0 && firstNonVue ? firstNonVue : changedFile;\n\tstate.lastHmrFramework = 'vue';\n\n\tbroadcastToClients(state, {\n\t\tdata: {\n\t\t\tchangeType: 'full',\n\t\t\tforceReload,\n\t\t\tframework: 'vue',\n\t\t\tmanifest: state.manifest,\n\t\t\tpageModuleUrl,\n\t\t\tserverDuration,\n\t\t\tsourceFile: changedFile,\n\t\t\tsourceFiles: vueFiles,\n\t\t\tupdateType: 'full'\n\t\t},\n\t\ttype: 'vue-update'\n\t});\n};\n\nconst handleVueModuleServerPath = async (\n\tstate: HMRState,\n\tvueFiles: string[],\n\tnonVueFiles: string[],\n\tstartTime: number,\n\tonRebuildComplete: (result: {\n\t\tmanifest: Record<string, string>;\n\t\thmrState: HMRState;\n\t}) => void\n) => {\n\tfor (const file of [...vueFiles, ...nonVueFiles]) {\n\t\tstate.fileHashes.set(resolve(file), computeFileHash(file));\n\t}\n\n\tmarkSsrCacheDirty('vue');\n\n\t// Also invalidate non-Vue files (composables) so the module\n\t// server serves the fresh version when the component re-imports.\n\tawait invalidateNonVueModules(nonVueFiles);\n\n\tconst serverDuration = Date.now() - startTime;\n\n\t// If triggered by a composable change, force reload so setup re-runs\n\tconst forceReload = nonVueFiles.length > 0;\n\n\tawait runSequentially(vueFiles, (changedFile) =>\n\t\tbroadcastVueModuleUpdate(\n\t\t\tstate,\n\t\t\tchangedFile,\n\t\t\tvueFiles,\n\t\t\tnonVueFiles,\n\t\t\tforceReload,\n\t\t\tserverDuration\n\t\t)\n\t);\n\n\tonRebuildComplete({\n\t\thmrState: state,\n\t\tmanifest: state.manifest\n\t});\n\n\treturn state.manifest;\n};\n\nconst handleVueFastPath = async (\n\tstate: HMRState,\n\tconfig: BuildConfig,\n\tfilesToRebuild: string[],\n\tstartTime: number,\n\tonRebuildComplete: (result: {\n\t\tmanifest: Record<string, string>;\n\t\thmrState: HMRState;\n\t}) => void\n) => {\n\tconst vueFiles = filesToRebuild.filter(\n\t\t(file) =>\n\t\t\tfile.endsWith('.vue') &&\n\t\t\tdetectFramework(file, state.resolvedPaths) === 'vue'\n\t);\n\n\t// For non-.vue files (composables, utilities) in the Vue directory,\n\t// find importing .vue files via the dependency graph and reload those.\n\tconst nonVueFiles = filesToRebuild.filter(\n\t\t(file) =>\n\t\t\t!file.endsWith('.vue') &&\n\t\t\tdetectFramework(file, state.resolvedPaths) === 'vue'\n\t);\n\tcollectAffectedVueFiles(state, nonVueFiles, vueFiles);\n\n\t// O(1) fast path: Vue HMR runtime swaps components in place.\n\t// Handles ALL changed files in the batch.\n\tif (vueFiles.length > 0) {\n\t\treturn handleVueModuleServerPath(\n\t\t\tstate,\n\t\t\tvueFiles,\n\t\t\tnonVueFiles,\n\t\t\tstartTime,\n\t\t\tonRebuildComplete\n\t\t);\n\t}\n\n\t// Bundled fallback\n\tonRebuildComplete({ hmrState: state, manifest: state.manifest });\n\n\treturn state.manifest;\n};\n\nconst collectModuleUpdatesForFramework = (\n\tframework: string,\n\tfilesToRebuild: string[],\n\tmanifest: Record<string, string>,\n\tstate: HMRState\n) => {\n\tconst frameworkFiles = filesToRebuild.filter(\n\t\t(file) => detectFramework(file, state.resolvedPaths) === framework\n\t);\n\n\tif (frameworkFiles.length === 0) {\n\t\treturn [];\n\t}\n\n\treturn createModuleUpdates(\n\t\tframeworkFiles,\n\t\tframework,\n\t\tmanifest,\n\t\tstate.resolvedPaths\n\t);\n};\n\nconst collectAllModuleUpdates = (\n\taffectedFrameworks: string[],\n\tfilesToRebuild: string[],\n\tmanifest: Record<string, string>,\n\tstate: HMRState\n) => {\n\tconst allModuleUpdates: ModuleUpdate[] = [];\n\n\taffectedFrameworks.forEach((framework) => {\n\t\tconst moduleUpdates = collectModuleUpdatesForFramework(\n\t\t\tframework,\n\t\t\tfilesToRebuild,\n\t\t\tmanifest,\n\t\t\tstate\n\t\t);\n\t\tmoduleUpdates.forEach((update) => {\n\t\t\tif (update) {\n\t\t\t\tallModuleUpdates.push(update);\n\t\t\t}\n\t\t});\n\t});\n\n\treturn allModuleUpdates;\n};\n\nconst handleReactHMR = (\n\tstate: HMRState,\n\taffectedFrameworks: string[],\n\tfilesToRebuild: string[],\n\tmanifest: Record<string, string>,\n\tduration: number\n) => {\n\tif (\n\t\t!affectedFrameworks.includes('react') ||\n\t\t!state.resolvedPaths.reactDir\n\t) {\n\t\treturn;\n\t}\n\n\tconst reactFiles = filesToRebuild.filter(\n\t\t(file) => detectFramework(file, state.resolvedPaths) === 'react'\n\t);\n\n\tif (reactFiles.length === 0) {\n\t\treturn;\n\t}\n\n\tconst reactPageFiles = reactFiles.filter((file) =>\n\t\tfile.replace(/\\\\/g, '/').includes('/pages/')\n\t);\n\tconst sourceFiles = reactPageFiles.length > 0 ? reactPageFiles : reactFiles;\n\tconst [primarySource] = sourceFiles;\n\n\ttry {\n\t\tconst hasComponentChanges = reactFiles.some(\n\t\t\t(file) =>\n\t\t\t\tfile.endsWith('.tsx') ||\n\t\t\t\tfile.endsWith('.ts') ||\n\t\t\t\tfile.endsWith('.jsx')\n\t\t);\n\t\tconst hasCSSChanges = reactFiles.some(isStylePath);\n\n\t\tlogHmrUpdate(primarySource ?? reactFiles[0] ?? '', 'react', duration);\n\n\t\tbroadcastToClients(state, {\n\t\t\tdata: {\n\t\t\t\tframework: 'react',\n\t\t\t\thasComponentChanges: hasComponentChanges,\n\t\t\t\thasCSSChanges: hasCSSChanges,\n\t\t\t\tmanifest,\n\t\t\t\tprimarySource,\n\t\t\t\tsourceFiles\n\t\t\t},\n\t\t\ttype: 'react-update'\n\t\t});\n\t} catch (err) {\n\t\tsendTelemetryEvent('hmr:error', {\n\t\t\tframework: 'react',\n\t\t\tmessage: err instanceof Error ? err.message : String(err)\n\t\t});\n\t}\n};\n\nconst handleScriptUpdate = (\n\tstate: HMRState,\n\tscriptFile: string,\n\tmanifest: Record<string, string>,\n\tframework: string,\n\tduration: number\n) => {\n\tconst scriptBaseName = basename(scriptFile).replace(\n\t\t/\\.(ts|js|tsx|jsx)$/,\n\t\t''\n\t);\n\tconst pascalName = toPascal(scriptBaseName);\n\tconst scriptPath = manifest[pascalName] || null;\n\n\tif (!scriptPath) {\n\t\tlogWarn(`Script not found in manifest: ${pascalName}`);\n\n\t\treturn;\n\t}\n\n\tlogScriptUpdate(scriptFile, framework, duration);\n\tbroadcastToClients(state, {\n\t\tdata: {\n\t\t\tframework,\n\t\t\tmanifest,\n\t\t\tscriptPath,\n\t\t\tsourceFile: scriptFile\n\t\t},\n\t\ttype: 'script-update'\n\t});\n};\n\nconst isScriptFile = (file: string) =>\n\t(file.endsWith('.ts') ||\n\t\tfile.endsWith('.js') ||\n\t\tfile.endsWith('.tsx') ||\n\t\tfile.endsWith('.jsx')) &&\n\tfile.replace(/\\\\/g, '/').includes('/scripts/');\n\nconst resolveIslandDefinitionSource = (\n\tdefinition: { buildReference: { source: string } | null },\n\tbuildInfo: { resolvedRegistryPath: string },\n\tislandFiles: Set<string>\n) => {\n\tconst { buildReference } = definition;\n\tif (!buildReference?.source) {\n\t\treturn;\n\t}\n\n\tconst sourcePath = buildReference.source.startsWith('file://')\n\t\t? new URL(buildReference.source).pathname\n\t\t: resolve(\n\t\t\t\tdirname(buildInfo.resolvedRegistryPath),\n\t\t\t\tbuildReference.source\n\t\t\t);\n\tislandFiles.add(resolve(sourcePath));\n};\n\nconst resolveIslandSourceFiles = async (config: BuildConfig) => {\n\tconst registryPath = config.islands?.registry;\n\tif (!registryPath) {\n\t\treturn new Set<string>();\n\t}\n\n\tconst buildInfo = await loadIslandRegistryBuildInfo(registryPath);\n\tconst islandFiles = new Set<string>([\n\t\tresolve(buildInfo.resolvedRegistryPath)\n\t]);\n\n\tfor (const definition of buildInfo.definitions) {\n\t\tresolveIslandDefinitionSource(definition, buildInfo, islandFiles);\n\t}\n\n\treturn islandFiles;\n};\n\nconst didStaticPagesNeedIslandRefresh = async (\n\tconfig: BuildConfig,\n\tfilesToRebuild: string[]\n) => {\n\tconst islandFiles = await resolveIslandSourceFiles(config);\n\tif (islandFiles.size === 0) {\n\t\treturn false;\n\t}\n\n\treturn filesToRebuild.some((file) => islandFiles.has(resolve(file)));\n};\n\nconst handleIslandSourceReload = async (\n\tstate: HMRState,\n\tconfig: BuildConfig,\n\tfilesToRebuild: string[],\n\tmanifest: Record<string, string>\n) => {\n\tconst shouldReload = await didStaticPagesNeedIslandRefresh(\n\t\tconfig,\n\t\tfilesToRebuild\n\t);\n\tif (!shouldReload) {\n\t\treturn false;\n\t}\n\n\tsetCurrentPageIslandMetadata(await loadPageIslandMetadata(config));\n\tconst affectedPages = filesToRebuild.flatMap((file) =>\n\t\tgetPagesUsingIslandSource(file)\n\t);\n\n\tbroadcastToClients(state, {\n\t\tdata: {\n\t\t\taffectedPages,\n\t\t\tmanifest\n\t\t},\n\t\ttype: 'full-reload'\n\t});\n\n\treturn true;\n};\n\nconst handleHTMLScriptHMR = (\n\tstate: HMRState,\n\tfilesToRebuild: string[],\n\tmanifest: Record<string, string>,\n\tduration: number\n) => {\n\tif (!state.resolvedPaths.htmlDir) {\n\t\treturn;\n\t}\n\n\tconst htmlFrameworkFiles = filesToRebuild.filter(\n\t\t(file) => detectFramework(file, state.resolvedPaths) === 'html'\n\t);\n\n\tif (htmlFrameworkFiles.length === 0) {\n\t\treturn;\n\t}\n\n\tconst scriptFiles = htmlFrameworkFiles.filter(isScriptFile);\n\tconst htmlPageFiles = htmlFrameworkFiles.filter((file) =>\n\t\tfile.endsWith('.html')\n\t);\n\n\tif (scriptFiles.length === 0 || htmlPageFiles.length > 0) {\n\t\treturn;\n\t}\n\n\tscriptFiles.forEach((scriptFile) => {\n\t\thandleScriptUpdate(state, scriptFile, manifest, 'html', duration);\n\t});\n};\n\nconst computeOutputPagesDir = (\n\tstate: HMRState,\n\tconfig: BuildConfig,\n\tframework: 'html' | 'htmx'\n) => {\n\tconst isSingle =\n\t\t!config.reactDirectory &&\n\t\t!config.svelteDirectory &&\n\t\t!config.vueDirectory &&\n\t\t(framework === 'html' ? !config.htmxDirectory : !config.htmlDirectory);\n\n\tif (isSingle) {\n\t\treturn resolve(state.resolvedPaths.buildDir, 'pages');\n\t}\n\n\tconst dirName =\n\t\tframework === 'html'\n\t\t\t? basename(config.htmlDirectory ?? 'html')\n\t\t\t: basename(config.htmxDirectory ?? 'htmx');\n\n\treturn resolve(state.resolvedPaths.buildDir, dirName, 'pages');\n};\n\nconst processHtmlPageUpdate = async (\n\tstate: HMRState,\n\tpageFile: string,\n\tbuiltHtmlPagePath: string,\n\tmanifest: Record<string, string>,\n\tduration: number\n) => {\n\ttry {\n\t\tconst { handleHTMLUpdate } = await import('./simpleHTMLHMR');\n\t\tconst newHTML = await handleHTMLUpdate(builtHtmlPagePath);\n\n\t\tif (!newHTML) {\n\t\t\treturn;\n\t\t}\n\n\t\tlogHmrUpdate(pageFile, 'html', duration);\n\t\tbroadcastToClients(state, {\n\t\t\tdata: {\n\t\t\t\tframework: 'html',\n\t\t\t\thtml: newHTML,\n\t\t\t\tmanifest,\n\t\t\t\tsourceFile: builtHtmlPagePath\n\t\t\t},\n\t\t\ttype: 'html-update'\n\t\t});\n\t} catch (err) {\n\t\tsendTelemetryEvent('hmr:error', {\n\t\t\tframework: 'html',\n\t\t\tmessage: err instanceof Error ? err.message : String(err)\n\t\t});\n\t}\n};\n\nconst handleHTMLPageHMR = async (\n\tstate: HMRState,\n\tconfig: BuildConfig,\n\tfilesToRebuild: string[],\n\tmanifest: Record<string, string>,\n\tduration: number\n) => {\n\tif (!state.resolvedPaths.htmlDir) {\n\t\treturn;\n\t}\n\n\tconst shouldRefreshFromIslandChange = await didStaticPagesNeedIslandRefresh(\n\t\tconfig,\n\t\tfilesToRebuild\n\t);\n\tconst htmlFrameworkFiles = filesToRebuild.filter(\n\t\t(file) => detectFramework(file, state.resolvedPaths) === 'html'\n\t);\n\n\tif (htmlFrameworkFiles.length === 0 && !shouldRefreshFromIslandChange) {\n\t\treturn;\n\t}\n\n\tconst htmlPageFiles = htmlFrameworkFiles.filter((file) =>\n\t\tfile.endsWith('.html')\n\t);\n\tconst outputHtmlPages = computeOutputPagesDir(state, config, 'html');\n\tconst shouldRefreshAllPages =\n\t\thtmlPageFiles.length === 0 && shouldRefreshFromIslandChange;\n\tconst pageFilesToUpdate = shouldRefreshAllPages\n\t\t? await scanEntryPoints(outputHtmlPages, '*.html')\n\t\t: htmlPageFiles;\n\n\tawait runSequentially(pageFilesToUpdate, async (pageFile) => {\n\t\tconst htmlPageName = basename(pageFile);\n\t\tconst builtHtmlPagePath = resolve(outputHtmlPages, htmlPageName);\n\t\tawait processHtmlPageUpdate(\n\t\t\tstate,\n\t\t\tpageFile,\n\t\t\tbuiltHtmlPagePath,\n\t\t\tmanifest,\n\t\t\tduration\n\t\t);\n\t});\n};\n\nconst handleVueCssOnlyUpdate = (\n\tstate: HMRState,\n\tvueCssFiles: string[],\n\tmanifest: Record<string, string>,\n\tduration: number\n) => {\n\tconst [cssFile] = vueCssFiles;\n\tif (!cssFile) {\n\t\treturn;\n\t}\n\n\tconst cssBaseName = basename(getStyleBaseName(cssFile));\n\tconst cssPascalName = toPascal(cssBaseName);\n\tconst cssKey = `${cssPascalName}CSS`;\n\tconst cssUrl = manifest[cssKey] || null;\n\n\tlogCssUpdate(cssFile, 'vue', duration);\n\tbroadcastToClients(state, {\n\t\tdata: {\n\t\t\tcssBaseName,\n\t\t\tcssUrl,\n\t\t\tframework: 'vue',\n\t\t\tmanifest,\n\t\t\tsourceFile: cssFile,\n\t\t\tupdateType: 'css-only'\n\t\t},\n\t\ttype: 'vue-update'\n\t});\n};\n\nconst broadcastVueStyleOnly = (\n\tstate: HMRState,\n\tvuePagePath: string,\n\tbaseName: string,\n\tcssUrl: string | null,\n\thmrId: string,\n\tmanifest: Record<string, string>,\n\tduration: number\n) => {\n\tlogCssUpdate(vuePagePath, 'vue', duration);\n\tbroadcastToClients(state, {\n\t\tdata: {\n\t\t\tchangeType: 'style-only',\n\t\t\tcssBaseName: baseName,\n\t\t\tcssUrl,\n\t\t\tframework: 'vue',\n\t\t\thmrId,\n\t\t\tmanifest,\n\t\t\tsourceFile: vuePagePath,\n\t\t\tupdateType: 'css-only'\n\t\t},\n\t\ttype: 'vue-update'\n\t});\n};\n\nconst broadcastVueFullUpdate = (\n\tstate: HMRState,\n\tvuePagePath: string,\n\tchangeType: string,\n\tcssUrl: string | null,\n\thmrId: string,\n\tmanifest: Record<string, string>,\n\tpascalName: string,\n\tduration: number\n) => {\n\tconst componentPath = manifest[`${pascalName}Client`] || null;\n\n\tlogHmrUpdate(vuePagePath, 'vue', duration);\n\tbroadcastToClients(state, {\n\t\tdata: {\n\t\t\tchangeType,\n\t\t\tcomponentPath,\n\t\t\tcssUrl,\n\t\t\tframework: 'vue',\n\t\t\thmrId,\n\t\t\thtml: null,\n\t\t\tmanifest,\n\t\t\tsourceFile: vuePagePath,\n\t\t\tupdateType: 'full'\n\t\t},\n\t\ttype: 'vue-update'\n\t});\n};\n\nconst broadcastVuePageChange = async (\n\tstate: HMRState,\n\tconfig: BuildConfig,\n\tvuePagePath: string,\n\tmanifest: Record<string, string>,\n\tduration: number\n) => {\n\tconst fileName = basename(vuePagePath);\n\tconst baseName = fileName.replace(/\\.vue$/, '');\n\tconst pascalName = toPascal(baseName);\n\n\tconst vueRoot = config.vueDirectory;\n\tconst hmrId = vueRoot\n\t\t? relative(vueRoot, vuePagePath)\n\t\t\t\t.replace(/\\\\/g, '/')\n\t\t\t\t.replace(/\\.vue$/, '')\n\t\t: baseName;\n\n\tconst cssKey = `${pascalName}CSS`;\n\tconst cssUrl = manifest[cssKey] || null;\n\n\tconst { vueHmrMetadata } = await import('../build/compileVue');\n\tconst hmrMeta = vueHmrMetadata.get(resolve(vuePagePath));\n\tconst changeType = hmrMeta?.changeType ?? 'full';\n\n\tif (changeType === 'style-only') {\n\t\tbroadcastVueStyleOnly(\n\t\t\tstate,\n\t\t\tvuePagePath,\n\t\t\tbaseName,\n\t\t\tcssUrl,\n\t\t\thmrId,\n\t\t\tmanifest,\n\t\t\tduration\n\t\t);\n\n\t\treturn;\n\t}\n\n\tbroadcastVueFullUpdate(\n\t\tstate,\n\t\tvuePagePath,\n\t\tchangeType,\n\t\tcssUrl,\n\t\thmrId,\n\t\tmanifest,\n\t\tpascalName,\n\t\tduration\n\t);\n};\n\nconst processVuePageUpdate = async (\n\tstate: HMRState,\n\tconfig: BuildConfig,\n\tvuePagePath: string,\n\tmanifest: Record<string, string>,\n\tduration: number\n) => {\n\ttry {\n\t\tawait broadcastVuePageChange(\n\t\t\tstate,\n\t\t\tconfig,\n\t\t\tvuePagePath,\n\t\t\tmanifest,\n\t\t\tduration\n\t\t);\n\t} catch (err) {\n\t\tsendTelemetryEvent('hmr:error', {\n\t\t\tframework: 'vue',\n\t\t\tmessage: err instanceof Error ? err.message : String(err)\n\t\t});\n\t}\n};\n\nconst handleVueHMR = async (\n\tstate: HMRState,\n\tconfig: BuildConfig,\n\tfilesToRebuild: string[],\n\tmanifest: Record<string, string>,\n\tduration: number\n) => {\n\tif (!config.vueDirectory) {\n\t\treturn;\n\t}\n\n\tconst vueFiles = filesToRebuild.filter(\n\t\t(file) => detectFramework(file, state.resolvedPaths) === 'vue'\n\t);\n\n\tif (vueFiles.length === 0) {\n\t\treturn;\n\t}\n\n\tconst vueComponentFiles = vueFiles.filter((file) => file.endsWith('.vue'));\n\tconst vueCssFiles = vueFiles.filter(isStylePath);\n\tconst isCssOnlyChange =\n\t\tvueComponentFiles.length === 0 && vueCssFiles.length > 0;\n\n\tconst vuePageFiles = vueFiles.filter((file) =>\n\t\tfile.replace(/\\\\/g, '/').includes('/pages/')\n\t);\n\tconst pagesToUpdate =\n\t\tvuePageFiles.length > 0 ? vuePageFiles : vueComponentFiles;\n\n\tif (isCssOnlyChange && vueCssFiles.length > 0) {\n\t\thandleVueCssOnlyUpdate(state, vueCssFiles, manifest, duration);\n\t}\n\n\tawait runSequentially(pagesToUpdate, (vuePagePath) =>\n\t\tprocessVuePageUpdate(state, config, vuePagePath, manifest, duration)\n\t);\n};\n\nconst handleSvelteCssOnlyUpdate = (\n\tstate: HMRState,\n\tsvelteCssFiles: string[],\n\tmanifest: Record<string, string>,\n\tduration: number\n) => {\n\tconst [cssFile] = svelteCssFiles;\n\tif (!cssFile) {\n\t\treturn;\n\t}\n\n\tconst cssBaseName = basename(getStyleBaseName(cssFile));\n\tconst cssPascalName = toPascal(cssBaseName);\n\tconst cssKey = `${cssPascalName}CSS`;\n\tconst cssUrl = manifest[cssKey] || null;\n\n\tlogCssUpdate(cssFile, 'svelte', duration);\n\tbroadcastToClients(state, {\n\t\tdata: {\n\t\t\tcssBaseName,\n\t\t\tcssUrl,\n\t\t\tframework: 'svelte',\n\t\t\tmanifest,\n\t\t\tsourceFile: cssFile,\n\t\t\tupdateType: 'css-only'\n\t\t},\n\t\ttype: 'svelte-update'\n\t});\n};\n\nconst broadcastSveltePageUpdate = (\n\tstate: HMRState,\n\tsveltePagePath: string,\n\tmanifest: Record<string, string>,\n\tduration: number\n) => {\n\ttry {\n\t\tconst fileName = basename(sveltePagePath);\n\t\tconst baseName = fileName.replace(/\\.svelte$/, '');\n\t\tconst pascalName = toPascal(baseName);\n\t\tconst cssKey = `${pascalName}CSS`;\n\t\tconst cssUrl = manifest[cssKey] || null;\n\n\t\tlogHmrUpdate(sveltePagePath, 'svelte', duration);\n\t\tbroadcastToClients(state, {\n\t\t\tdata: {\n\t\t\t\tcssBaseName: baseName,\n\t\t\t\tcssUrl,\n\t\t\t\tframework: 'svelte',\n\t\t\t\thtml: null,\n\t\t\t\tmanifest,\n\t\t\t\tsourceFile: sveltePagePath,\n\t\t\t\tupdateType: 'full'\n\t\t\t},\n\t\t\ttype: 'svelte-update'\n\t\t});\n\t} catch (err) {\n\t\tsendTelemetryEvent('hmr:error', {\n\t\t\tframework: 'svelte',\n\t\t\tmessage: err instanceof Error ? err.message : String(err)\n\t\t});\n\t}\n};\n\nconst handleSvelteHMR = (\n\tstate: HMRState,\n\tconfig: BuildConfig,\n\tfilesToRebuild: string[],\n\tmanifest: Record<string, string>,\n\tduration: number\n) => {\n\tif (!config.svelteDirectory) {\n\t\treturn;\n\t}\n\n\tconst svelteFiles = filesToRebuild.filter(\n\t\t(file) => detectFramework(file, state.resolvedPaths) === 'svelte'\n\t);\n\n\tif (svelteFiles.length === 0) {\n\t\treturn;\n\t}\n\n\tconst svelteComponentFiles = svelteFiles.filter((file) =>\n\t\tfile.endsWith('.svelte')\n\t);\n\tconst svelteCssFiles = svelteFiles.filter(isStylePath);\n\tconst isCssOnlyChange =\n\t\tsvelteComponentFiles.length === 0 && svelteCssFiles.length > 0;\n\n\tconst sveltePageFiles = svelteFiles.filter((file) =>\n\t\tfile.replace(/\\\\/g, '/').includes('/pages/')\n\t);\n\tconst pagesToUpdate =\n\t\tsveltePageFiles.length > 0 ? sveltePageFiles : svelteComponentFiles;\n\n\tif (isCssOnlyChange && svelteCssFiles.length > 0) {\n\t\thandleSvelteCssOnlyUpdate(state, svelteCssFiles, manifest, duration);\n\t}\n\n\tpagesToUpdate.forEach((sveltePagePath) => {\n\t\tbroadcastSveltePageUpdate(state, sveltePagePath, manifest, duration);\n\t});\n};\n\nconst collectAngularAffectedPages = (\n\taffected: string[],\n\tresolvedPages: Set<string>\n) => {\n\taffected.forEach((file) => {\n\t\tif (\n\t\t\tfile.replace(/\\\\/g, '/').includes('/pages/') &&\n\t\t\tfile.endsWith('.ts')\n\t\t) {\n\t\t\tresolvedPages.add(file);\n\t\t}\n\t});\n};\n\nconst resolveAngularPagesFromDependencyGraph = (\n\tstate: HMRState,\n\tangularFiles: string[]\n) => {\n\tconst resolvedPages = new Set<string>();\n\tangularFiles.forEach((componentFile) => {\n\t\tconst lookupFile = resolveComponentLookupFile(\n\t\t\tcomponentFile,\n\t\t\tstate.dependencyGraph\n\t\t);\n\t\tconst affected = getAffectedFiles(state.dependencyGraph, lookupFile);\n\t\tcollectAngularAffectedPages(affected, resolvedPages);\n\t});\n\n\treturn Array.from(resolvedPages);\n};\n\nconst handleAngularCssOnlyUpdate = (\n\tstate: HMRState,\n\tangularCssFiles: string[],\n\tmanifest: Record<string, string>,\n\tduration: number\n) => {\n\tconst [cssFile] = angularCssFiles;\n\tif (!cssFile) {\n\t\treturn;\n\t}\n\n\tconst cssBaseName = basename(getStyleBaseName(cssFile));\n\tconst cssPascalName = toPascal(cssBaseName);\n\tconst cssKey = `${cssPascalName}CSS`;\n\tconst cssUrl = manifest[cssKey] || null;\n\n\tlogCssUpdate(cssFile, 'angular', duration);\n\tbroadcastToClients(state, {\n\t\tdata: {\n\t\t\tcssBaseName,\n\t\t\tcssUrl,\n\t\t\tframework: 'angular',\n\t\t\tmanifest,\n\t\t\tsourceFile: cssFile,\n\t\t\tupdateType: 'style'\n\t\t},\n\t\ttype: 'angular-update'\n\t});\n};\n\nconst broadcastAngularPageHmrUpdate = (\n\tstate: HMRState,\n\tangularPagePath: string,\n\tmanifest: Record<string, string>,\n\tduration: number\n) => {\n\ttry {\n\t\tconst fileName = basename(angularPagePath);\n\t\tconst baseName = fileName.replace(/\\.[tj]s$/, '');\n\t\tconst pascalName = toPascal(baseName);\n\t\tconst cssKey = `${pascalName}CSS`;\n\t\tconst cssUrl = manifest[cssKey] || null;\n\n\t\tlogHmrUpdate(angularPagePath, 'angular', duration);\n\t\tbroadcastToClients(state, {\n\t\t\tdata: {\n\t\t\t\tcssBaseName: baseName,\n\t\t\t\tcssUrl,\n\t\t\t\tframework: 'angular',\n\t\t\t\tmanifest,\n\t\t\t\tsourceFile: angularPagePath,\n\t\t\t\tupdateType: 'logic' as const\n\t\t\t},\n\t\t\ttype: 'angular-update'\n\t\t});\n\t} catch (err) {\n\t\tsendTelemetryEvent('hmr:error', {\n\t\t\tframework: 'angular',\n\t\t\tmessage: err instanceof Error ? err.message : String(err)\n\t\t});\n\t}\n};\n\nconst handleAngularHMR = (\n\tstate: HMRState,\n\tconfig: BuildConfig,\n\tfilesToRebuild: string[],\n\tmanifest: Record<string, string>,\n\tduration: number\n) => {\n\tif (!config.angularDirectory) {\n\t\treturn;\n\t}\n\n\tconst angularFiles = filesToRebuild.filter(\n\t\t(file) => detectFramework(file, state.resolvedPaths) === 'angular'\n\t);\n\n\tif (angularFiles.length === 0) {\n\t\treturn;\n\t}\n\n\tconst angularCssFiles = angularFiles.filter(isStylePath);\n\tconst isCssOnlyChange =\n\t\tangularFiles.every(isStylePath) && angularCssFiles.length > 0;\n\n\tconst angularPageFiles = angularFiles.filter((file) =>\n\t\tfile.replace(/\\\\/g, '/').includes('/pages/')\n\t);\n\n\tlet pagesToUpdate = angularPageFiles;\n\tif (pagesToUpdate.length === 0 && state.dependencyGraph) {\n\t\tpagesToUpdate = resolveAngularPagesFromDependencyGraph(\n\t\t\tstate,\n\t\t\tangularFiles\n\t\t);\n\t}\n\n\tif (isCssOnlyChange && angularCssFiles.length > 0) {\n\t\thandleAngularCssOnlyUpdate(state, angularCssFiles, manifest, duration);\n\n\t\treturn;\n\t}\n\n\tpagesToUpdate.forEach((angularPagePath) => {\n\t\tbroadcastAngularPageHmrUpdate(\n\t\t\tstate,\n\t\t\tangularPagePath,\n\t\t\tmanifest,\n\t\t\tduration\n\t\t);\n\t});\n};\n\nconst handleHTMXScriptHMR = (\n\tstate: HMRState,\n\tfilesToRebuild: string[],\n\tmanifest: Record<string, string>,\n\tduration: number\n) => {\n\tif (!state.resolvedPaths.htmxDir) {\n\t\treturn;\n\t}\n\n\tconst htmxFrameworkFiles = filesToRebuild.filter(\n\t\t(file) => detectFramework(file, state.resolvedPaths) === 'htmx'\n\t);\n\n\tif (htmxFrameworkFiles.length === 0) {\n\t\treturn;\n\t}\n\n\tconst htmxScriptFiles = htmxFrameworkFiles.filter(isScriptFile);\n\tconst htmxHtmlFiles = htmxFrameworkFiles.filter((file) =>\n\t\tfile.endsWith('.html')\n\t);\n\n\tif (htmxScriptFiles.length === 0 || htmxHtmlFiles.length > 0) {\n\t\treturn;\n\t}\n\n\thtmxScriptFiles.forEach((scriptFile) => {\n\t\thandleScriptUpdate(state, scriptFile, manifest, 'htmx', duration);\n\t});\n};\n\nconst processHtmxPageUpdate = async (\n\tstate: HMRState,\n\thtmxPageFile: string,\n\tbuiltHtmxPagePath: string,\n\tmanifest: Record<string, string>,\n\tduration: number\n) => {\n\ttry {\n\t\tconst { handleHTMXUpdate } = await import('./simpleHTMXHMR');\n\t\tconst newHTML = await handleHTMXUpdate(builtHtmxPagePath);\n\n\t\tif (!newHTML) {\n\t\t\treturn;\n\t\t}\n\n\t\tlogHmrUpdate(htmxPageFile, 'htmx', duration);\n\t\tbroadcastToClients(state, {\n\t\t\tdata: {\n\t\t\t\tframework: 'htmx',\n\t\t\t\thtml: newHTML,\n\t\t\t\tmanifest,\n\t\t\t\tsourceFile: builtHtmxPagePath\n\t\t\t},\n\t\t\ttype: 'htmx-update'\n\t\t});\n\t} catch (err) {\n\t\tsendTelemetryEvent('hmr:error', {\n\t\t\tframework: 'htmx',\n\t\t\tmessage: err instanceof Error ? err.message : String(err)\n\t\t});\n\t}\n};\n\nconst handleHTMXPageHMR = async (\n\tstate: HMRState,\n\tconfig: BuildConfig,\n\tfilesToRebuild: string[],\n\tmanifest: Record<string, string>,\n\tduration: number\n) => {\n\tif (!state.resolvedPaths.htmxDir) {\n\t\treturn;\n\t}\n\n\tconst shouldRefreshFromIslandChange = await didStaticPagesNeedIslandRefresh(\n\t\tconfig,\n\t\tfilesToRebuild\n\t);\n\tconst htmxFrameworkFiles = filesToRebuild.filter(\n\t\t(file) => detectFramework(file, state.resolvedPaths) === 'htmx'\n\t);\n\n\tif (htmxFrameworkFiles.length === 0 && !shouldRefreshFromIslandChange) {\n\t\treturn;\n\t}\n\n\tconst htmxPageFiles = htmxFrameworkFiles.filter((file) =>\n\t\tfile.endsWith('.html')\n\t);\n\tconst outputHtmxPages = computeOutputPagesDir(state, config, 'htmx');\n\tconst shouldRefreshAllPages =\n\t\thtmxPageFiles.length === 0 && shouldRefreshFromIslandChange;\n\tconst pageFilesToUpdate = shouldRefreshAllPages\n\t\t? await scanEntryPoints(outputHtmxPages, '*.html')\n\t\t: htmxPageFiles;\n\n\tawait runSequentially(pageFilesToUpdate, async (htmxPageFile) => {\n\t\tconst htmxPageName = basename(htmxPageFile);\n\t\tconst builtHtmxPagePath = resolve(outputHtmxPages, htmxPageName);\n\t\tawait processHtmxPageUpdate(\n\t\t\tstate,\n\t\t\thtmxPageFile,\n\t\t\tbuiltHtmxPagePath,\n\t\t\tmanifest,\n\t\t\tduration\n\t\t);\n\t});\n};\n\nconst collectUpdatedModulePaths = (\n\tallModuleUpdates: Array<{\n\t\tsourceFile: string;\n\t\tmodulePaths: Record<string, string>;\n\t}>\n) => {\n\tconst paths: string[] = [];\n\tallModuleUpdates.forEach((update) => {\n\t\tpaths.push(update.sourceFile);\n\t\tObject.values(update.modulePaths).forEach((modulePath) => {\n\t\t\tpaths.push(modulePath);\n\t\t});\n\t});\n\n\treturn paths;\n};\n\nconst buildModuleVersionsForUpdate = (\n\tupdate: { sourceFile: string; modulePaths: Record<string, string> },\n\tmoduleVersionsStore: Map<string, number>,\n\tmoduleVersions: Record<string, number>\n) => {\n\tconst sourceVersion = moduleVersionsStore.get(update.sourceFile);\n\tif (sourceVersion !== undefined) {\n\t\tmoduleVersions[update.sourceFile] = sourceVersion;\n\t}\n\tObject.values(update.modulePaths).forEach((path) => {\n\t\tconst pathVersion = moduleVersionsStore.get(path);\n\t\tif (pathVersion !== undefined) {\n\t\t\tmoduleVersions[path] = pathVersion;\n\t\t}\n\t});\n};\n\nconst handleModuleUpdates = (\n\tstate: HMRState,\n\tallModuleUpdates: ModuleUpdate[],\n\tmanifest: Record<string, string>\n) => {\n\tconst updatedModulePaths = collectUpdatedModulePaths(allModuleUpdates);\n\n\tif (updatedModulePaths.length > 0) {\n\t\tincrementModuleVersions(state.moduleVersions, updatedModulePaths);\n\t}\n\n\tif (allModuleUpdates.length === 0) {\n\t\treturn;\n\t}\n\n\tconst updatesByFramework = groupModuleUpdatesByFramework(allModuleUpdates);\n\tconst serverVersions = serializeModuleVersions(state.moduleVersions);\n\n\tfor (const [framework, updates] of updatesByFramework) {\n\t\tconst moduleVersions: Record<string, number> = {};\n\t\tupdates.forEach((update) => {\n\t\t\tbuildModuleVersionsForUpdate(\n\t\t\t\tupdate,\n\t\t\t\tstate.moduleVersions,\n\t\t\t\tmoduleVersions\n\t\t\t);\n\t\t});\n\n\t\tbroadcastToClients(state, {\n\t\t\tdata: {\n\t\t\t\tframework,\n\t\t\t\tmanifest,\n\t\t\t\tmodules: updates.map((update) => ({\n\t\t\t\t\tcomponentType: update.componentType,\n\t\t\t\t\tmoduleKeys: update.moduleKeys,\n\t\t\t\t\tmodulePaths: update.modulePaths,\n\t\t\t\t\tsourceFile: update.sourceFile,\n\t\t\t\t\tversion: state.moduleVersions.get(update.sourceFile)\n\t\t\t\t})),\n\t\t\t\tmoduleVersions: moduleVersions,\n\t\t\t\tserverVersions: serverVersions\n\t\t\t},\n\t\t\tmessage: `${framework} modules updated`,\n\t\t\ttype: 'module-update'\n\t\t});\n\t}\n};\n\nconst handleFullBuildHMR = async (\n\tstate: HMRState,\n\tconfig: BuildConfig,\n\taffectedFrameworks: string[],\n\tfilesToRebuild: string[],\n\tmanifest: Record<string, string>,\n\tduration: number\n) => {\n\tconst allModuleUpdates = collectAllModuleUpdates(\n\t\taffectedFrameworks,\n\t\tfilesToRebuild,\n\t\tmanifest,\n\t\tstate\n\t);\n\n\thandleReactHMR(\n\t\tstate,\n\t\taffectedFrameworks,\n\t\tfilesToRebuild,\n\t\tmanifest,\n\t\tduration\n\t);\n\n\thandleHTMLScriptHMR(state, filesToRebuild, manifest, duration);\n\n\tawait handleHTMLPageHMR(state, config, filesToRebuild, manifest, duration);\n\n\tawait handleVueHMR(state, config, filesToRebuild, manifest, duration);\n\n\thandleSvelteHMR(state, config, filesToRebuild, manifest, duration);\n\n\thandleAngularHMR(state, config, filesToRebuild, manifest, duration);\n\n\thandleHTMXScriptHMR(state, filesToRebuild, manifest, duration);\n\n\tawait handleHTMXPageHMR(state, config, filesToRebuild, manifest, duration);\n\n\thandleModuleUpdates(state, allModuleUpdates, manifest);\n};\n\nconst logStyleUpdatesForFramework = (\n\tstate: HMRState,\n\tframework: string,\n\tfilesToRebuild: string[],\n\tstartTime: number\n) => {\n\tconst dur = Date.now() - startTime;\n\tfilesToRebuild.forEach((file) => {\n\t\tif (detectFramework(file, state.resolvedPaths) === framework) {\n\t\t\tlogCssUpdate(file, framework, dur);\n\t\t}\n\t});\n};\n\nconst broadcastSingleFrameworkUpdate = (\n\tstate: HMRState,\n\tframework: string,\n\tfilesToRebuild: string[] | undefined,\n\tmanifest: Record<string, string>,\n\tstartTime: number\n) => {\n\tconst type =\n\t\tframework === 'styles' || framework === 'assets'\n\t\t\t? 'style-update'\n\t\t\t: 'framework-update';\n\n\tif (type === 'style-update' && filesToRebuild) {\n\t\tlogStyleUpdatesForFramework(\n\t\t\tstate,\n\t\t\tframework,\n\t\t\tfilesToRebuild,\n\t\t\tstartTime\n\t\t);\n\t}\n\tbroadcastToClients(state, {\n\t\tdata: {\n\t\t\tframework,\n\t\t\tmanifest\n\t\t},\n\t\tmessage: `${framework} framework updated`,\n\t\ttype\n\t});\n};\n\nconst broadcastFrameworkUpdates = (\n\tstate: HMRState,\n\taffectedFrameworks: string[],\n\tfilesToRebuild: string[] | undefined,\n\tmanifest: Record<string, string>,\n\tstartTime: number\n) => {\n\taffectedFrameworks.forEach((framework) => {\n\t\tbroadcastSingleFrameworkUpdate(\n\t\t\tstate,\n\t\t\tframework,\n\t\t\tfilesToRebuild,\n\t\t\tmanifest,\n\t\t\tstartTime\n\t\t);\n\t});\n};\n\nconst HMR_SCRIPT_PATTERN =\n\t/<script>window\\.__HMR_FRAMEWORK__[\\s\\S]*?<\\/script>\\s*<script data-hmr-client>[\\s\\S]*?<\\/script>/;\n\nconst extractHmrScript = (\n\tdestPath: string,\n\treadFs: (path: string, encoding: 'utf-8') => string\n) => {\n\ttry {\n\t\tconst existing = readFs(destPath, 'utf-8');\n\t\tconst [matched] = existing.match(HMR_SCRIPT_PATTERN) ?? [];\n\n\t\treturn matched ?? '';\n\t} catch {\n\t\t// built file doesn't exist yet\n\t\treturn '';\n\t}\n};\n\nconst injectHmrScript = (\n\tdestPath: string,\n\thmrScript: string,\n\treadFs: (path: string, encoding: 'utf-8') => string,\n\twriteFs: (path: string, data: string) => void\n) => {\n\tif (!hmrScript) return;\n\n\tlet html = readFs(destPath, 'utf-8');\n\tconst bodyClose = /<\\/body\\s*>/i.exec(html);\n\tif (!bodyClose) return;\n\n\thtml =\n\t\thtml.slice(0, bodyClose.index) +\n\t\thmrScript +\n\t\thtml.slice(bodyClose.index);\n\twriteFs(destPath, html);\n};\n\nconst processMarkupFileFastPath = async (\n\tstate: HMRState,\n\tsourceFile: string,\n\toutputDir: string,\n\tframework: 'html' | 'htmx',\n\tstartTime: number,\n\tupdateAssetPaths: (\n\t\tmanifest: Record<string, string>,\n\t\tdir: string\n\t) => Promise<void>,\n\thandleUpdate: (path: string) => Promise<unknown>,\n\treadFs: (path: string, encoding: 'utf-8') => string,\n\twriteFs: (path: string, data: string) => void\n) => {\n\tconst destPath = resolve(outputDir, basename(sourceFile));\n\n\t// Save HMR script from existing built file\n\tconst hmrScript = extractHmrScript(destPath, readFs);\n\n\t// Atomic copy: Bun.write ensures content is flushed\n\tconst source = await Bun.file(sourceFile).text();\n\tawait Bun.write(destPath, source);\n\n\t// Rewrite asset paths using manifest\n\tawait updateAssetPaths(state.manifest, outputDir);\n\n\t// Rewrite <img data-optimized> tags to use the optimization endpoint\n\tconst { optimizeHtmlImages } = await import('../build/optimizeHtmlImages');\n\tawait optimizeHtmlImages(outputDir);\n\n\t// Re-inject HMR script\n\tinjectHmrScript(destPath, hmrScript, readFs, writeFs);\n\n\t// Read processed file and broadcast body only\n\tconst newHTML = await handleUpdate(destPath);\n\tif (!newHTML) return;\n\n\tconst dur = Date.now() - startTime;\n\tlogHmrUpdate(sourceFile, framework, dur);\n\tbroadcastToClients(state, {\n\t\tdata: {\n\t\t\tframework,\n\t\t\thtml: newHTML,\n\t\t\tmanifest: state.manifest,\n\t\t\tsourceFile\n\t\t},\n\t\ttype: `${framework}-update`\n\t});\n};\n\nconst tryProcessMarkupFile = async (\n\tstate: HMRState,\n\tsourceFile: string,\n\toutputDir: string,\n\tframework: 'html' | 'htmx',\n\tstartTime: number,\n\tupdateAssetPaths: (\n\t\tmanifest: Record<string, string>,\n\t\tdir: string\n\t) => Promise<void>,\n\thandleUpdate: (path: string) => Promise<unknown>,\n\treadFs: (path: string, encoding: 'utf-8') => string,\n\twriteFs: (path: string, data: string) => void\n) => {\n\ttry {\n\t\tawait processMarkupFileFastPath(\n\t\t\tstate,\n\t\t\tsourceFile,\n\t\t\toutputDir,\n\t\t\tframework,\n\t\t\tstartTime,\n\t\t\tupdateAssetPaths,\n\t\t\thandleUpdate,\n\t\t\treadFs,\n\t\t\twriteFs\n\t\t);\n\n\t\treturn true;\n\t} catch {\n\t\t// fall through to full rebuild\n\t\treturn false;\n\t}\n};\n\nconst runMarkupFastPath = async (\n\tstate: HMRState,\n\tconfig: BuildConfig,\n\tfilesToRebuild: string[] | undefined,\n\tstartTime: number,\n\tframework: 'html' | 'htmx'\n) => {\n\tconst markupFiles = (filesToRebuild ?? []).filter((file) =>\n\t\tfile.endsWith('.html')\n\t);\n\n\tif (markupFiles.length === 0) return;\n\n\tconst outputDir = computeOutputPagesDir(state, config, framework);\n\tconst { updateAssetPaths } = await import('../build/updateAssetPaths');\n\tconst handleUpdate =\n\t\tframework === 'html'\n\t\t\t? (await import('./simpleHTMLHMR')).handleHTMLUpdate\n\t\t\t: (await import('./simpleHTMXHMR')).handleHTMXUpdate;\n\tconst { readFileSync: readFs, writeFileSync: writeFs } = await import(\n\t\t'node:fs'\n\t);\n\n\tconst processMarkupFiles = async (files: string[]) => {\n\t\tconst [markupFile, ...remaining] = files;\n\t\tif (!markupFile) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst success = await tryProcessMarkupFile(\n\t\t\tstate,\n\t\t\tmarkupFile,\n\t\t\toutputDir,\n\t\t\tframework,\n\t\t\tstartTime,\n\t\t\tupdateAssetPaths,\n\t\t\thandleUpdate,\n\t\t\treadFs,\n\t\t\twriteFs\n\t\t);\n\t\tif (!success) {\n\t\t\treturn;\n\t\t}\n\n\t\tawait processMarkupFiles(remaining);\n\t};\n\n\tawait processMarkupFiles(markupFiles);\n};\n\nconst runHtmlFastPath = async (\n\tstate: HMRState,\n\tconfig: BuildConfig,\n\tfilesToRebuild: string[] | undefined,\n\tstartTime: number\n) => runMarkupFastPath(state, config, filesToRebuild, startTime, 'html');\n\nconst runHtmxFastPath = async (\n\tstate: HMRState,\n\tconfig: BuildConfig,\n\tfilesToRebuild: string[] | undefined,\n\tstartTime: number\n) => runMarkupFastPath(state, config, filesToRebuild, startTime, 'htmx');\n\ntype FrameworkFastPathConfig = {\n\tdirectory: string | undefined;\n\tframework: string;\n\thandler: (\n\t\tstate: HMRState,\n\t\tconfig: BuildConfig,\n\t\tfiles: string[],\n\t\tstartTime: number,\n\t\tonRebuildComplete: (result: {\n\t\t\tmanifest: Record<string, string>;\n\t\t\thmrState: HMRState;\n\t\t}) => void\n\t) => Promise<Record<string, string> | undefined>;\n};\n\nconst markHandledFiles = (\n\tfiles: string[],\n\tframework: string,\n\tresolvedPaths: ResolvedBuildPaths,\n\thandled: Set<string>\n) => {\n\tfiles\n\t\t.filter((f) => detectFramework(f, resolvedPaths) === framework)\n\t\t.forEach((f) => handled.add(f));\n};\n\nconst runFrameworkFastPaths = async (\n\tstate: HMRState,\n\tconfig: BuildConfig,\n\taffectedFrameworks: string[],\n\tfiles: string[],\n\tstartTime: number,\n\tonRebuildComplete: (result: {\n\t\tmanifest: Record<string, string>;\n\t\thmrState: HMRState;\n\t}) => void\n) => {\n\tconst handled = new Set<string>();\n\n\tconst fastPaths: FrameworkFastPathConfig[] = [\n\t\t{\n\t\t\tdirectory: config.angularDirectory,\n\t\t\tframework: 'angular',\n\t\t\thandler: handleAngularFastPath\n\t\t},\n\t\t{\n\t\t\tdirectory: config.reactDirectory,\n\t\t\tframework: 'react',\n\t\t\thandler: handleReactFastPath\n\t\t},\n\t\t{\n\t\t\tdirectory: config.svelteDirectory,\n\t\t\tframework: 'svelte',\n\t\t\thandler: handleSvelteFastPath\n\t\t},\n\t\t{\n\t\t\tdirectory: config.vueDirectory,\n\t\t\tframework: 'vue',\n\t\t\thandler: handleVueFastPath\n\t\t}\n\t];\n\n\tawait runSequentially(fastPaths, async (fastPath) => {\n\t\tif (\n\t\t\t!fastPath.directory ||\n\t\t\t!affectedFrameworks.includes(fastPath.framework)\n\t\t)\n\t\t\treturn;\n\n\t\tawait fastPath.handler(\n\t\t\tstate,\n\t\t\tconfig,\n\t\t\tfiles,\n\t\t\tstartTime,\n\t\t\tonRebuildComplete\n\t\t);\n\t\tmarkHandledFiles(\n\t\t\tfiles,\n\t\t\tfastPath.framework,\n\t\t\tstate.resolvedPaths,\n\t\t\thandled\n\t\t);\n\t});\n\n\t// Check if any files weren't handled by a fast path.\n\t// CSS/styles and copied assets need the full build so outputs stay in sync.\n\treturn files.every((f) => handled.has(f));\n};\n\nconst performFullRebuild = async (\n\tstate: HMRState,\n\tconfig: BuildConfig,\n\taffectedFrameworks: string[],\n\tfilesToRebuild: string[] | undefined,\n\tstartTime: number,\n\tonRebuildComplete: (result: {\n\t\tmanifest: Record<string, string>;\n\t\thmrState: HMRState;\n\t}) => void\n) => {\n\t// Run each framework's fast path for its files independently.\n\t// This handles cross-framework batches (e.g., editing a React\n\t// and Svelte file in the same save) without falling through\n\t// to the full build.\n\tconst hasManifest = Object.keys(state.manifest).length > 0;\n\tconst files = filesToRebuild ?? [];\n\tlet allHandled = files.length > 0 && hasManifest;\n\tconst hasIslandSourceChanges =\n\t\tfiles.length > 0\n\t\t\t? await didStaticPagesNeedIslandRefresh(config, files)\n\t\t\t: false;\n\n\tif (allHandled && !hasIslandSourceChanges) {\n\t\tallHandled = await runFrameworkFastPaths(\n\t\t\tstate,\n\t\t\tconfig,\n\t\t\taffectedFrameworks,\n\t\t\tfiles,\n\t\t\tstartTime,\n\t\t\tonRebuildComplete\n\t\t);\n\t}\n\n\t// HTML fast path\n\tif (\n\t\tallHandled &&\n\t\tconfig.htmlDirectory &&\n\t\taffectedFrameworks.includes('html')\n\t) {\n\t\tawait runHtmlFastPath(state, config, filesToRebuild, startTime);\n\t}\n\n\t// HTMX fast path\n\tif (\n\t\tallHandled &&\n\t\tconfig.htmxDirectory &&\n\t\taffectedFrameworks.includes('htmx')\n\t) {\n\t\tawait runHtmxFastPath(state, config, filesToRebuild, startTime);\n\t}\n\n\t// If all frameworks were handled by fast paths, skip the full build —\n\t// but Tailwind still needs to rescan source files when a candidate\n\t// changed (the fast path skips the build, which is where Tailwind runs).\n\tif (allHandled) {\n\t\tawait recompileTailwindForFastPath(state, config, files);\n\n\t\tonRebuildComplete({\n\t\t\thmrState: state,\n\t\t\tmanifest: state.manifest\n\t\t});\n\n\t\treturn state.manifest;\n\t}\n\n\tconst buildConfig: BuildConfig = {\n\t\t...config,\n\t\tincrementalFiles:\n\t\t\tfilesToRebuild && filesToRebuild.length > 0\n\t\t\t\t? filesToRebuild\n\t\t\t\t: undefined,\n\t\toptions: {\n\t\t\t...config.options,\n\t\t\tbaseManifest: state.manifest,\n\t\t\tinjectHMR: true,\n\t\t\tthrowOnError: true\n\t\t}\n\t};\n\n\tconst buildResult = await build(buildConfig);\n\n\tif (!buildResult?.manifest) {\n\t\tthrow new Error('Build failed - no manifest generated');\n\t}\n\tconst { manifest } = buildResult;\n\n\tconst duration = Date.now() - startTime;\n\n\tsendTelemetryEvent('hmr:rebuild-complete', {\n\t\tdurationMs: duration,\n\t\tfileCount: filesToRebuild?.length ?? 0,\n\t\tframework: affectedFrameworks[0] ?? 'unknown'\n\t});\n\n\tawait populateAssetStore(\n\t\tstate.assetStore,\n\t\tmanifest,\n\t\tstate.resolvedPaths.buildDir\n\t);\n\n\tvoid cleanStaleAssets(\n\t\tstate.assetStore,\n\t\tmanifest,\n\t\tstate.resolvedPaths.buildDir\n\t);\n\n\tbroadcastToClients(state, {\n\t\tdata: {\n\t\t\taffectedFrameworks,\n\t\t\tmanifest\n\t\t},\n\t\tmessage: 'Rebuild completed successfully',\n\t\ttype: 'rebuild-complete'\n\t});\n\n\t// `build()` already rebuilt the Tailwind output if a candidate changed;\n\t// trigger a CSS reload so the browser picks up the new utilities.\n\tif (\n\t\tconfig.tailwind &&\n\t\tfilesToRebuild &&\n\t\tfilesToRebuild.some(isTailwindCandidate)\n\t) {\n\t\tbroadcastToClients(state, {\n\t\t\tdata: { framework: 'tailwind', manifest },\n\t\t\tmessage: 'Tailwind utilities recompiled',\n\t\t\ttype: 'style-update'\n\t\t});\n\t}\n\n\tconst hasFilesToRebuild = filesToRebuild && filesToRebuild.length > 0;\n\tconst didReloadForIslandChange = hasFilesToRebuild\n\t\t? await handleIslandSourceReload(\n\t\t\t\tstate,\n\t\t\t\tconfig,\n\t\t\t\tfilesToRebuild,\n\t\t\t\tmanifest\n\t\t\t)\n\t\t: false;\n\n\tif (didReloadForIslandChange) {\n\t\tonRebuildComplete({ hmrState: state, manifest });\n\n\t\treturn manifest;\n\t}\n\n\tif (hasFilesToRebuild) {\n\t\tawait handleFullBuildHMR(\n\t\t\tstate,\n\t\t\tconfig,\n\t\t\taffectedFrameworks,\n\t\t\tfilesToRebuild,\n\t\t\tmanifest,\n\t\t\tduration\n\t\t);\n\t}\n\n\tbroadcastFrameworkUpdates(\n\t\tstate,\n\t\taffectedFrameworks,\n\t\tfilesToRebuild,\n\t\tmanifest,\n\t\tstartTime\n\t);\n\n\tif (affectedFrameworks.includes('angular')) {\n\t\tmarkSsrCacheDirty('angular');\n\t}\n\tif (affectedFrameworks.includes('react')) {\n\t\tmarkSsrCacheDirty('react');\n\t}\n\tif (affectedFrameworks.includes('svelte')) {\n\t\tmarkSsrCacheDirty('svelte');\n\t}\n\tif (affectedFrameworks.includes('vue')) {\n\t\tmarkSsrCacheDirty('vue');\n\t}\n\n\tonRebuildComplete({ hmrState: state, manifest });\n\n\treturn manifest;\n};\n\nconst drainPendingQueue = (\n\tstate: HMRState,\n\tconfig: BuildConfig,\n\tonRebuildComplete: (result: {\n\t\tmanifest: Record<string, string>;\n\t\thmrState: HMRState;\n\t}) => void\n) => {\n\tif (state.fileChangeQueue.size === 0) {\n\t\treturn;\n\t}\n\n\tconst pending = Array.from(state.fileChangeQueue.keys());\n\tconst queuedFiles: string[] = [];\n\tstate.fileChangeQueue.forEach((filePaths) => {\n\t\tqueuedFiles.push(...filePaths);\n\t});\n\tstate.fileChangeQueue.clear();\n\tpending.forEach((file) => state.rebuildQueue.add(file));\n\tif (state.rebuildTimeout) clearTimeout(state.rebuildTimeout);\n\tstate.rebuildTimeout = setTimeout(() => {\n\t\tvoid triggerRebuild(\n\t\t\tstate,\n\t\t\tconfig,\n\t\t\tonRebuildComplete,\n\t\t\tqueuedFiles.length > 0 ? queuedFiles : undefined\n\t\t);\n\t}, REBUILD_BATCH_DELAY_MS);\n};\n\nexport const triggerRebuild = async (\n\tstate: HMRState,\n\tconfig: BuildConfig,\n\tonRebuildComplete: (result: {\n\t\tmanifest: Record<string, string>;\n\t\thmrState: HMRState;\n\t}) => void,\n\tfilesToRebuild?: string[]\n) => {\n\tif (state.isRebuilding) {\n\t\treturn null;\n\t}\n\n\tstate.isRebuilding = true;\n\tconst affectedFrameworks = Array.from(state.rebuildQueue);\n\tstate.rebuildQueue.clear();\n\n\tconst startTime = Date.now();\n\n\tbroadcastToClients(state, {\n\t\tdata: { affectedFrameworks },\n\t\tmessage: 'Rebuild started...',\n\t\ttype: 'rebuild-start'\n\t});\n\n\ttry {\n\t\treturn await performFullRebuild(\n\t\t\tstate,\n\t\t\tconfig,\n\t\t\taffectedFrameworks,\n\t\t\tfilesToRebuild,\n\t\t\tstartTime,\n\t\t\tonRebuildComplete\n\t\t);\n\t} catch (error) {\n\t\tsendTelemetryEvent('hmr:rebuild-error', {\n\t\t\tdurationMs: Date.now() - startTime,\n\t\t\tfileCount: filesToRebuild?.length ?? 0,\n\t\t\tframework: affectedFrameworks[0] ?? 'unknown',\n\t\t\tframeworks: affectedFrameworks,\n\t\t\tmessage: error instanceof Error ? error.message : String(error)\n\t\t});\n\t\tconst errorData = extractBuildErrorDetails(\n\t\t\terror,\n\t\t\taffectedFrameworks,\n\t\t\tstate.resolvedPaths\n\t\t);\n\t\tbroadcastToClients(state, {\n\t\t\tdata: {\n\t\t\t\taffectedFrameworks,\n\t\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t\t\t...errorData\n\t\t\t},\n\t\t\tmessage: 'Rebuild failed',\n\t\t\ttype: 'rebuild-error'\n\t\t});\n\n\t\treturn null;\n\t} finally {\n\t\tstate.isRebuilding = false;\n\t\tdrainPendingQueue(state, config, onRebuildComplete);\n\t}\n};\n",
21
- "import { readFileSync } from 'node:fs';\nimport { UNFOUND_INDEX } from '../constants';\nimport { normalizePath } from '../utils/normalizePath';\n\n/* Bun.hash (Wyhash) returns a number — comparing numbers is faster\n than comparing strings and avoids the .toString() allocation. We\n use -1 as the \"file unreadable\" sentinel (impossible hash value). */\nexport const computeFileHash = (filePath: string) => {\n\ttry {\n\t\tconst fileContent = readFileSync(filePath);\n\n\t\treturn Number(Bun.hash(fileContent));\n\t} catch {\n\t\treturn UNFOUND_INDEX;\n\t}\n};\n\n/* This function checks if the file has changed by comparing its\n current hash to the previous hash\n this handles the detection of actual changes */\nexport const hasFileChanged = (\n\tfilePath: string,\n\tcurrentHash: number,\n\tpreviousHashes: Map<string, number>\n) => {\n\t// Normalize path for consistent Map key lookup across platforms\n\tconst normalizedPath = normalizePath(filePath);\n\tconst previousHash = previousHashes.get(normalizedPath);\n\n\tif (previousHash === undefined) {\n\t\t// First time seeing this file, definitely changed\n\t\treturn true;\n\t}\n\n\treturn previousHash !== currentHash;\n};\n",
22
- "import { basename, resolve } from 'node:path';\nimport { isStylePath } from '../build/stylePreprocessor';\nimport { toPascal } from '../utils/stringModifiers';\nimport {\n\tclassifyComponent,\n\ttype ComponentType\n} from './reactComponentClassifier';\n\n/* Maps source files to their manifest entries\n This handles the \"what modules changed\" problem for Smart Module Updates */\nexport type ModuleUpdate = {\n\tsourceFile: string;\n\tframework: string;\n\tmoduleKeys: string[]; // Manifest keys for this module (e.g., ['ReactExampleIndex', 'ReactExampleCSS'])\n\tmodulePaths: Record<string, string>; // Map of manifest keys to their new paths\n\tcomponentType?: ComponentType; // 'client' | 'server' - only for React components\n};\n\n/* Map a source file to its manifest entry keys\n This handles framework-specific manifest key derivation */\nconst buildModulePaths = (\n\tmoduleKeys: string[],\n\tmanifest: Record<string, string>\n) => {\n\tconst modulePaths: Record<string, string> = {};\n\tmoduleKeys.forEach((key) => {\n\t\tif (manifest[key]) {\n\t\t\tmodulePaths[key] = manifest[key];\n\t\t}\n\t});\n\n\treturn modulePaths;\n};\n\nconst processChangedFile = (\n\tsourceFile: string,\n\tframework: string,\n\tmanifest: Record<string, string>,\n\tresolvedPaths:\n\t\t| {\n\t\t\t\treactDir?: string;\n\t\t\t\tsvelteDir?: string;\n\t\t\t\tvueDir?: string;\n\t\t\t\tangularDir?: string;\n\t\t }\n\t\t| undefined,\n\tprocessedFiles: Set<string>\n) => {\n\tconst normalizedFile = resolve(sourceFile);\n\tconst normalizedPath = normalizedFile.replace(/\\\\/g, '/');\n\n\tif (processedFiles.has(normalizedFile)) {\n\t\treturn null;\n\t}\n\tprocessedFiles.add(normalizedFile);\n\n\tconst moduleKeys = mapSourceFileToManifestKeys(\n\t\tnormalizedFile,\n\t\tframework,\n\t\tresolvedPaths\n\t);\n\n\tconst isReactPage = resolvedPaths?.reactDir\n\t\t? normalizedPath.startsWith(\n\t\t\t\t`${resolvedPaths.reactDir.replace(/\\\\/g, '/')}/pages/`\n\t\t\t)\n\t\t: normalizedPath.includes('/react/pages/');\n\n\tif (framework === 'react' && !isReactPage) {\n\t\treturn null;\n\t}\n\n\tconst modulePaths = buildModulePaths(moduleKeys, manifest);\n\n\tif (Object.keys(modulePaths).length === 0) {\n\t\treturn null;\n\t}\n\n\tconst componentType =\n\t\tframework === 'react' ? classifyComponent(normalizedFile) : undefined;\n\n\treturn {\n\t\tcomponentType,\n\t\tframework,\n\t\tmoduleKeys: Object.keys(modulePaths),\n\t\tmodulePaths,\n\t\tsourceFile: normalizedFile\n\t} satisfies ModuleUpdate;\n};\n\nexport const createModuleUpdates = (\n\tchangedFiles: string[],\n\tframework: string,\n\tmanifest: Record<string, string>,\n\tresolvedPaths?: {\n\t\treactDir?: string;\n\t\tsvelteDir?: string;\n\t\tvueDir?: string;\n\t\tangularDir?: string;\n\t}\n) => {\n\tconst processedFiles = new Set<string>();\n\n\treturn changedFiles\n\t\t.map((sourceFile) =>\n\t\t\tprocessChangedFile(\n\t\t\t\tsourceFile,\n\t\t\t\tframework,\n\t\t\t\tmanifest,\n\t\t\t\tresolvedPaths,\n\t\t\t\tprocessedFiles\n\t\t\t)\n\t\t)\n\t\t.filter((update) => update !== null);\n};\nexport const groupModuleUpdatesByFramework = (updates: ModuleUpdate[]) => {\n\tconst grouped = new Map<string, ModuleUpdate[]>();\n\n\tupdates.forEach((update) => {\n\t\tif (!grouped.has(update.framework)) {\n\t\t\tgrouped.set(update.framework, []);\n\t\t}\n\t\tgrouped.get(update.framework)?.push(update);\n\t});\n\n\treturn grouped;\n};\nexport const mapSourceFileToManifestKeys = (\n\tsourceFile: string,\n\tframework: string,\n\tresolvedPaths?: {\n\t\treactDir?: string;\n\t\tsvelteDir?: string;\n\t\tvueDir?: string;\n\t\tangularDir?: string;\n\t}\n) => {\n\tconst normalizedFile = resolve(sourceFile);\n\tconst fileName = basename(normalizedFile);\n\n\t// Extract base name without extension\n\tconst baseName = fileName.replace(/\\.(tsx?|jsx?|vue|svelte|css|html)$/, '');\n\tconst pascalName = toPascal(baseName);\n\n\tconst keys: string[] = [];\n\n\tconst inSubdir = (dir: string | undefined, sub: string) => {\n\t\tif (!dir) return false;\n\t\tconst prefix = `${dir.replace(/\\\\/g, '/')}/${sub}/`;\n\n\t\treturn normalizedFile.startsWith(prefix);\n\t};\n\n\tswitch (framework) {\n\t\tcase 'react':\n\t\t\t// React pages (in pages/ directory) have Index entries\n\t\t\tif (\n\t\t\t\tinSubdir(resolvedPaths?.reactDir, 'pages') ||\n\t\t\t\tnormalizedFile.includes('/react/pages/')\n\t\t\t) {\n\t\t\t\tkeys.push(`${pascalName}Index`);\n\t\t\t\tkeys.push(`${pascalName}CSS`); // CSS might exist\n\t\t\t}\n\t\t\t// React components don't have direct manifest entries\n\t\t\t// They're bundled into the page that imports them\n\t\t\t// The dependency graph ensures the page is rebuilt when a component changes\n\t\t\tbreak;\n\n\t\tcase 'svelte':\n\t\t\t// Svelte pages have both main entry and index\n\t\t\tif (\n\t\t\t\tinSubdir(resolvedPaths?.svelteDir, 'pages') ||\n\t\t\t\tnormalizedFile.includes('/svelte/pages/')\n\t\t\t) {\n\t\t\t\tkeys.push(pascalName);\n\t\t\t\tkeys.push(`${pascalName}Index`);\n\t\t\t\tkeys.push(`${pascalName}CSS`); // CSS might exist\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'vue':\n\t\t\t// Vue pages have main entry, index, and CSS\n\t\t\tif (\n\t\t\t\tinSubdir(resolvedPaths?.vueDir, 'pages') ||\n\t\t\t\tnormalizedFile.includes('/vue/pages/')\n\t\t\t) {\n\t\t\t\tkeys.push(pascalName);\n\t\t\t\tkeys.push(`${pascalName}Index`);\n\t\t\t\tkeys.push(`${pascalName}CSS`);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'angular':\n\t\t\t// Angular pages have main entry and index\n\t\t\tif (\n\t\t\t\tinSubdir(resolvedPaths?.angularDir, 'pages') ||\n\t\t\t\tnormalizedFile.includes('/angular/pages/')\n\t\t\t) {\n\t\t\t\tkeys.push(pascalName);\n\t\t\t\tkeys.push(`${pascalName}Index`);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'html':\n\t\tcase 'htmx':\n\t\t\t// HTML/HTMX files are directly referenced, no manifest entries needed\n\t\t\tbreak;\n\n\t\tcase 'assets':\n\t\t\t// Style files use CSS suffix after preprocessing.\n\t\t\tif (isStylePath(normalizedFile)) {\n\t\t\t\tkeys.push(`${pascalName}CSS`);\n\t\t\t}\n\t\t\tbreak;\n\t}\n\n\treturn keys;\n};\n",
23
- "import { resolve } from 'node:path';\n\n/* Component classification for React Fast Refresh\n Distinguishes between Client Components and Server Components */\nexport type ComponentType = 'client' | 'server';\n\n/* Classify a React component file as either 'client' or 'server'\n \n Rules:\n - Files in /react/pages/ → 'server' (Server Components - rendered on server)\n - Files in /react/components/ → 'client' (Client Components - client-only)\n - Files in /react/composables/ → 'client' (Client Components - client-only)\n - All other React files → 'client' (default to client for safety)\n \n This classification determines how HMR updates are handled:\n - Server Components: Re-render on server, send flight data, patch DOM\n - Client Components: Hot-replace module, re-render in client tree\n*/\nexport const classifyComponent = (filePath: string) => {\n\tconst normalizedPath = resolve(filePath);\n\n\t// Server Components: Pages are rendered on the server\n\tif (normalizedPath.includes('/react/pages/')) {\n\t\treturn 'server';\n\t}\n\n\t// Client Components: Components and composables are client-only\n\tif (\n\t\tnormalizedPath.includes('/react/components/') ||\n\t\tnormalizedPath.includes('/react/composables/')\n\t) {\n\t\treturn 'client';\n\t}\n\n\t// Default to 'client' for any other React files\n\t// This is safer than defaulting to 'server' because client components\n\t// can always be hot-replaced, but server components require special handling\n\treturn 'client';\n};\n"
24
- ],
25
- "mappings": "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",
26
- "debugId": "522511C75F3F794F64756E2164756E21",
27
- "names": []
28
- }