@absolutejs/absolute 0.19.0-beta.11 → 0.19.0-beta.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/build.js CHANGED
@@ -202101,16 +202101,213 @@ var init_pageHandler = __esm(() => {
202101
202101
  setSsrContextGetter(() => angularSsrContext.getStore());
202102
202102
  });
202103
202103
 
202104
+ // src/dev/transformCache.ts
202105
+ import { statSync } from "fs";
202106
+ var cache, getTransformed = (filePath) => {
202107
+ const entry = cache.get(filePath);
202108
+ if (!entry)
202109
+ return;
202110
+ try {
202111
+ const stat2 = statSync(filePath);
202112
+ if (stat2.mtimeMs === entry.mtime)
202113
+ return entry.content;
202114
+ } catch {
202115
+ cache.delete(filePath);
202116
+ }
202117
+ return;
202118
+ }, setTransformed = (filePath, content, mtime) => {
202119
+ cache.set(filePath, { content, mtime });
202120
+ }, invalidate = (filePath) => {
202121
+ cache.delete(filePath);
202122
+ };
202123
+ var init_transformCache = __esm(() => {
202124
+ cache = new Map;
202125
+ });
202126
+
202127
+ // src/dev/moduleServer.ts
202128
+ var exports_moduleServer = {};
202129
+ __export(exports_moduleServer, {
202130
+ invalidateModule: () => invalidateModule,
202131
+ createModuleServer: () => createModuleServer,
202132
+ SRC_URL_PREFIX: () => SRC_URL_PREFIX
202133
+ });
202134
+ import { readFileSync as readFileSync9, statSync as statSync2 } from "fs";
202135
+ import { dirname as dirname7, extname as extname3, resolve as resolve16, relative as relative6 } from "path";
202136
+ var {build: bunBuild5 } = globalThis.Bun;
202137
+ var SRC_PREFIX = "/@src/", jsTranspiler2, TRANSPILABLE, REACT_EXTENSIONS, escapeRegex3 = (str) => str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), buildImportRewriter = (vendorPaths) => {
202138
+ const entries = Object.entries(vendorPaths).sort(([a], [b]) => b.length - a.length);
202139
+ if (entries.length === 0)
202140
+ return null;
202141
+ const alt = entries.map(([spec]) => escapeRegex3(spec)).join("|");
202142
+ const lookup = new Map(entries);
202143
+ const fromRegex = new RegExp(`(from\\s*["'])(${alt})(["'])`, "g");
202144
+ const sideEffectRegex = new RegExp(`(import\\s*["'])(${alt})(["']\\s*;?)`, "g");
202145
+ const dynamicRegex = new RegExp(`(import\\s*\\(\\s*["'])(${alt})(["']\\s*\\))`, "g");
202146
+ return { dynamicRegex, fromRegex, lookup, sideEffectRegex };
202147
+ }, rewriteImports2 = (code, filePath, projectRoot, rewriter) => {
202148
+ let result = code;
202149
+ if (rewriter) {
202150
+ const replacer = (_match, prefix, specifier, suffix) => {
202151
+ const webPath = rewriter.lookup.get(specifier);
202152
+ if (!webPath)
202153
+ return _match;
202154
+ return `${prefix}${webPath}${suffix}`;
202155
+ };
202156
+ rewriter.fromRegex.lastIndex = 0;
202157
+ rewriter.sideEffectRegex.lastIndex = 0;
202158
+ rewriter.dynamicRegex.lastIndex = 0;
202159
+ result = result.replace(rewriter.fromRegex, replacer);
202160
+ result = result.replace(rewriter.sideEffectRegex, replacer);
202161
+ result = result.replace(rewriter.dynamicRegex, replacer);
202162
+ }
202163
+ const fileDir = dirname7(filePath);
202164
+ result = result.replace(/(from\s*["'])(\.\.?\/[^"']+)(["'])/g, (_match, prefix, relPath, suffix) => {
202165
+ const absPath = resolve16(fileDir, relPath);
202166
+ const rel = relative6(projectRoot, absPath);
202167
+ let srcPath = rel;
202168
+ if (!extname3(srcPath)) {
202169
+ const extensions = [".tsx", ".ts", ".jsx", ".js"];
202170
+ for (const ext of extensions) {
202171
+ try {
202172
+ statSync2(resolve16(projectRoot, srcPath + ext));
202173
+ srcPath += ext;
202174
+ break;
202175
+ } catch {}
202176
+ }
202177
+ }
202178
+ return `${prefix}${SRC_PREFIX}${srcPath.replace(/\\/g, "/")}${suffix}`;
202179
+ });
202180
+ result = result.replace(/(import\s*\(\s*["'])(\.\.?\/[^"']+)(["']\s*\))/g, (_match, prefix, relPath, suffix) => {
202181
+ const absPath = resolve16(fileDir, relPath);
202182
+ const rel = relative6(projectRoot, absPath);
202183
+ return `${prefix}${SRC_PREFIX}${rel.replace(/\\/g, "/")}${suffix}`;
202184
+ });
202185
+ result = result.replace(/(import\s*["'])(\.\.?\/[^"']+)(["']\s*;?)/g, (_match, prefix, relPath, suffix) => {
202186
+ const absPath = resolve16(fileDir, relPath);
202187
+ const rel = relative6(projectRoot, absPath);
202188
+ let srcPath = rel;
202189
+ if (!extname3(srcPath)) {
202190
+ const extensions = [".tsx", ".ts", ".jsx", ".js", ".css"];
202191
+ for (const ext of extensions) {
202192
+ try {
202193
+ statSync2(resolve16(projectRoot, srcPath + ext));
202194
+ srcPath += ext;
202195
+ break;
202196
+ } catch {}
202197
+ }
202198
+ }
202199
+ return `${prefix}${SRC_PREFIX}${srcPath.replace(/\\/g, "/")}${suffix}`;
202200
+ });
202201
+ return result;
202202
+ }, transformReactFile = async (filePath, projectRoot, vendorPaths, rewriter) => {
202203
+ const buildConfig = {
202204
+ entrypoints: [filePath],
202205
+ external: Object.keys(vendorPaths),
202206
+ format: "esm",
202207
+ jsx: { development: true },
202208
+ reactFastRefresh: true,
202209
+ splitting: false,
202210
+ target: "browser",
202211
+ throw: false,
202212
+ write: false
202213
+ };
202214
+ const result = await bunBuild5(buildConfig);
202215
+ if (!result.success || result.outputs.length === 0)
202216
+ return;
202217
+ const output = result.outputs[0];
202218
+ if (!output)
202219
+ return;
202220
+ const code = await output.text();
202221
+ return rewriteImports2(code, filePath, projectRoot, rewriter);
202222
+ }, transformPlainFile = (filePath, projectRoot, rewriter) => {
202223
+ const raw = readFileSync9(filePath, "utf-8");
202224
+ const ext = extname3(filePath);
202225
+ const transpiled = ext === ".js" || ext === ".mjs" ? jsTranspiler2.transformSync(raw) : new Bun.Transpiler({ loader: "tsx" }).transformSync(raw);
202226
+ return rewriteImports2(transpiled, filePath, projectRoot, rewriter);
202227
+ }, handleCssRequest = (filePath) => {
202228
+ const raw = readFileSync9(filePath, "utf-8");
202229
+ const escaped = raw.replace(/\\/g, "\\\\").replace(/`/g, "\\`").replace(/\$/g, "\\$");
202230
+ return [
202231
+ `const style = document.createElement('style');`,
202232
+ `style.textContent = \`${escaped}\`;`,
202233
+ `style.dataset.hmrId = ${JSON.stringify(filePath)};`,
202234
+ `const existing = document.querySelector(\`style[data-hmr-id="${filePath}"]\`);`,
202235
+ `if (existing) existing.remove();`,
202236
+ `document.head.appendChild(style);`
202237
+ ].join(`
202238
+ `);
202239
+ }, createModuleServer = (config) => {
202240
+ const { projectRoot, vendorPaths } = config;
202241
+ const rewriter = buildImportRewriter(vendorPaths);
202242
+ return async (pathname) => {
202243
+ if (!pathname.startsWith(SRC_PREFIX))
202244
+ return;
202245
+ const relPath = pathname.slice(SRC_PREFIX.length);
202246
+ const filePath = resolve16(projectRoot, relPath);
202247
+ const ext = extname3(filePath);
202248
+ try {
202249
+ if (ext === ".css") {
202250
+ return new Response(handleCssRequest(filePath), {
202251
+ headers: {
202252
+ "Cache-Control": "no-cache",
202253
+ "Content-Type": "application/javascript"
202254
+ }
202255
+ });
202256
+ }
202257
+ if (!TRANSPILABLE.has(ext))
202258
+ return;
202259
+ const cached = getTransformed(filePath);
202260
+ if (cached) {
202261
+ return new Response(cached, {
202262
+ headers: {
202263
+ "Cache-Control": "no-cache",
202264
+ "Content-Type": "application/javascript"
202265
+ }
202266
+ });
202267
+ }
202268
+ const stat2 = statSync2(filePath);
202269
+ let content;
202270
+ if (REACT_EXTENSIONS.has(ext)) {
202271
+ content = await transformReactFile(filePath, projectRoot, vendorPaths, rewriter);
202272
+ }
202273
+ if (!content) {
202274
+ content = transformPlainFile(filePath, projectRoot, rewriter);
202275
+ }
202276
+ setTransformed(filePath, content, stat2.mtimeMs);
202277
+ return new Response(content, {
202278
+ headers: {
202279
+ "Cache-Control": "no-cache",
202280
+ "Content-Type": "application/javascript"
202281
+ }
202282
+ });
202283
+ } catch (err) {
202284
+ const message = err instanceof Error ? err.message : String(err);
202285
+ return new Response(`console.error('[ModuleServer] Transform error:', ${JSON.stringify(message)});`, {
202286
+ headers: { "Content-Type": "application/javascript" },
202287
+ status: 500
202288
+ });
202289
+ }
202290
+ };
202291
+ }, invalidateModule, SRC_URL_PREFIX;
202292
+ var init_moduleServer = __esm(() => {
202293
+ init_transformCache();
202294
+ jsTranspiler2 = new Bun.Transpiler({ loader: "js" });
202295
+ TRANSPILABLE = new Set([".ts", ".tsx", ".js", ".jsx", ".mjs"]);
202296
+ REACT_EXTENSIONS = new Set([".tsx", ".jsx"]);
202297
+ invalidateModule = invalidate;
202298
+ SRC_URL_PREFIX = SRC_PREFIX;
202299
+ });
202300
+
202104
202301
  // src/dev/simpleHTMLHMR.ts
202105
202302
  var exports_simpleHTMLHMR = {};
202106
202303
  __export(exports_simpleHTMLHMR, {
202107
202304
  handleHTMLUpdate: () => handleHTMLUpdate
202108
202305
  });
202109
- import { resolve as resolve16 } from "path";
202306
+ import { resolve as resolve17 } from "path";
202110
202307
  var handleHTMLUpdate = async (htmlFilePath) => {
202111
202308
  let htmlContent;
202112
202309
  try {
202113
- const resolvedPath = resolve16(htmlFilePath);
202310
+ const resolvedPath = resolve17(htmlFilePath);
202114
202311
  const file3 = Bun.file(resolvedPath);
202115
202312
  if (!await file3.exists()) {
202116
202313
  return null;
@@ -202136,11 +202333,11 @@ var exports_simpleHTMXHMR = {};
202136
202333
  __export(exports_simpleHTMXHMR, {
202137
202334
  handleHTMXUpdate: () => handleHTMXUpdate
202138
202335
  });
202139
- import { resolve as resolve17 } from "path";
202336
+ import { resolve as resolve18 } from "path";
202140
202337
  var handleHTMXUpdate = async (htmxFilePath) => {
202141
202338
  let htmlContent;
202142
202339
  try {
202143
- const resolvedPath = resolve17(htmxFilePath);
202340
+ const resolvedPath = resolve18(htmxFilePath);
202144
202341
  const file3 = Bun.file(resolvedPath);
202145
202342
  if (!await file3.exists()) {
202146
202343
  return null;
@@ -202164,7 +202361,7 @@ var init_simpleHTMXHMR = () => {};
202164
202361
  // src/dev/rebuildTrigger.ts
202165
202362
  import { existsSync as existsSync13 } from "fs";
202166
202363
  import { rm as rm6 } from "fs/promises";
202167
- import { basename as basename7, relative as relative6, resolve as resolve18 } from "path";
202364
+ import { basename as basename7, relative as relative7, resolve as resolve19 } from "path";
202168
202365
  var parseErrorLocationFromMessage = (msg) => {
202169
202366
  const pathLineCol = msg.match(/^([^\s:]+):(\d+)(?::(\d+))?/);
202170
202367
  if (pathLineCol) {
@@ -202236,7 +202433,7 @@ var parseErrorLocationFromMessage = (msg) => {
202236
202433
  state.fileHashes.delete(filePathInSet);
202237
202434
  try {
202238
202435
  const affectedFiles = getAffectedFiles(state.dependencyGraph, filePathInSet);
202239
- const deletedPathResolved = resolve18(filePathInSet);
202436
+ const deletedPathResolved = resolve19(filePathInSet);
202240
202437
  affectedFiles.forEach((affectedFile) => {
202241
202438
  if (isValidDeletedAffectedFile(affectedFile, deletedPathResolved, processedFiles)) {
202242
202439
  validFiles.push(affectedFile);
@@ -202280,7 +202477,7 @@ var parseErrorLocationFromMessage = (msg) => {
202280
202477
  if (storedHash !== undefined && storedHash === fileHash) {
202281
202478
  return;
202282
202479
  }
202283
- const normalizedFilePath = resolve18(filePathInSet);
202480
+ const normalizedFilePath = resolve19(filePathInSet);
202284
202481
  if (!processedFiles.has(normalizedFilePath)) {
202285
202482
  validFiles.push(normalizedFilePath);
202286
202483
  processedFiles.add(normalizedFilePath);
@@ -202371,7 +202568,7 @@ var parseErrorLocationFromMessage = (msg) => {
202371
202568
  }
202372
202569
  if (!graph)
202373
202570
  return componentFile;
202374
- const dependents = graph.dependents.get(resolve18(componentFile));
202571
+ const dependents = graph.dependents.get(resolve19(componentFile));
202375
202572
  if (!dependents)
202376
202573
  return componentFile;
202377
202574
  for (const dep of dependents) {
@@ -202380,7 +202577,7 @@ var parseErrorLocationFromMessage = (msg) => {
202380
202577
  }
202381
202578
  return componentFile;
202382
202579
  }, resolveAngularPageEntries = (state, angularFiles, angularPagesPath) => {
202383
- const pageEntries = angularFiles.filter((file3) => file3.endsWith(".ts") && resolve18(file3).startsWith(angularPagesPath));
202580
+ const pageEntries = angularFiles.filter((file3) => file3.endsWith(".ts") && resolve19(file3).startsWith(angularPagesPath));
202384
202581
  if (pageEntries.length > 0 || !state.dependencyGraph) {
202385
202582
  return pageEntries;
202386
202583
  }
@@ -202389,7 +202586,7 @@ var parseErrorLocationFromMessage = (msg) => {
202389
202586
  const lookupFile = resolveComponentLookupFile(componentFile, state.dependencyGraph);
202390
202587
  const affected = getAffectedFiles(state.dependencyGraph, lookupFile);
202391
202588
  affected.forEach((file3) => {
202392
- if (file3.endsWith(".ts") && resolve18(file3).startsWith(angularPagesPath)) {
202589
+ if (file3.endsWith(".ts") && resolve19(file3).startsWith(angularPagesPath)) {
202393
202590
  resolvedPages.add(file3);
202394
202591
  }
202395
202592
  });
@@ -202413,7 +202610,7 @@ var parseErrorLocationFromMessage = (msg) => {
202413
202610
  }
202414
202611
  state.manifest[toPascal(baseName)] = artifact.path;
202415
202612
  }, bundleAngularClient = async (state, clientPaths, buildDir) => {
202416
- const { build: bunBuild5 } = await Promise.resolve(globalThis.Bun);
202613
+ const { build: bunBuild6 } = await Promise.resolve(globalThis.Bun);
202417
202614
  const { generateManifest: generateManifest2 } = await Promise.resolve().then(() => (init_generateManifest(), exports_generateManifest));
202418
202615
  const { getAngularVendorPaths: getAngularVendorPaths2 } = await Promise.resolve().then(() => exports_devVendorPaths);
202419
202616
  const clientRoot = await computeClientRoot(state.resolvedPaths);
@@ -202424,7 +202621,7 @@ var parseErrorLocationFromMessage = (msg) => {
202424
202621
  angVendorPaths = computeAngularVendorPaths2();
202425
202622
  setAngularVendorPaths2(angVendorPaths);
202426
202623
  }
202427
- const clientResult = await bunBuild5({
202624
+ const clientResult = await bunBuild6({
202428
202625
  entrypoints: clientPaths,
202429
202626
  ...angVendorPaths ? { external: Object.keys(angVendorPaths) } : {},
202430
202627
  format: "esm",
@@ -202438,8 +202635,8 @@ var parseErrorLocationFromMessage = (msg) => {
202438
202635
  return;
202439
202636
  }
202440
202637
  if (angVendorPaths) {
202441
- const { rewriteImports: rewriteImports2 } = await Promise.resolve().then(() => exports_rewriteImports);
202442
- await rewriteImports2(clientResult.outputs.map((artifact) => artifact.path), angVendorPaths);
202638
+ const { rewriteImports: rewriteImports3 } = await Promise.resolve().then(() => exports_rewriteImports);
202639
+ await rewriteImports3(clientResult.outputs.map((artifact) => artifact.path), angVendorPaths);
202443
202640
  }
202444
202641
  const clientManifest = generateManifest2(clientResult.outputs, buildDir);
202445
202642
  Object.assign(state.manifest, clientManifest);
@@ -202470,7 +202667,7 @@ var parseErrorLocationFromMessage = (msg) => {
202470
202667
  const { clientPaths, serverPaths } = await compileAngular2(pageEntries, angularDir, true);
202471
202668
  serverPaths.forEach((serverPath) => {
202472
202669
  const fileBase = basename7(serverPath, ".js");
202473
- state.manifest[toPascal(fileBase)] = resolve18(serverPath);
202670
+ state.manifest[toPascal(fileBase)] = resolve19(serverPath);
202474
202671
  });
202475
202672
  if (clientPaths.length > 0) {
202476
202673
  await bundleAngularClient(state, clientPaths, state.resolvedPaths.buildDir);
@@ -202478,14 +202675,14 @@ var parseErrorLocationFromMessage = (msg) => {
202478
202675
  }, handleAngularFastPath = async (state, config, filesToRebuild, startTime, onRebuildComplete) => {
202479
202676
  const angularDir = config.angularDirectory ?? "";
202480
202677
  const angularFiles = filesToRebuild.filter((file3) => detectFramework(file3, state.resolvedPaths) === "angular");
202481
- const angularPagesPath = resolve18(angularDir, "pages");
202678
+ const angularPagesPath = resolve19(angularDir, "pages");
202482
202679
  const pageEntries = resolveAngularPageEntries(state, angularFiles, angularPagesPath);
202483
202680
  if (pageEntries.length > 0) {
202484
202681
  await compileAndBundleAngular(state, pageEntries, angularDir);
202485
202682
  invalidateAngularSsrCache();
202486
202683
  }
202487
202684
  if (pageEntries.length > 0 && !config.options?.preserveIntermediateFiles) {
202488
- await rm6(resolve18(angularDir, "compiled"), {
202685
+ await rm6(resolve19(angularDir, "compiled"), {
202489
202686
  force: true,
202490
202687
  recursive: true
202491
202688
  });
@@ -202499,7 +202696,7 @@ var parseErrorLocationFromMessage = (msg) => {
202499
202696
  return manifest;
202500
202697
  }, resolveReactEntryForPageFile = (normalized, pagesPathResolved, reactIndexesPath) => {
202501
202698
  const pageName = basename7(normalized, ".tsx");
202502
- const indexPath = resolve18(reactIndexesPath, `${pageName}.tsx`);
202699
+ const indexPath = resolve19(reactIndexesPath, `${pageName}.tsx`);
202503
202700
  if (!existsSync13(indexPath)) {
202504
202701
  return;
202505
202702
  }
@@ -202511,13 +202708,13 @@ var parseErrorLocationFromMessage = (msg) => {
202511
202708
  return;
202512
202709
  }
202513
202710
  const pageName = basename7(dep, ".tsx");
202514
- const indexPath = resolve18(reactIndexesPath, `${pageName}.tsx`);
202711
+ const indexPath = resolve19(reactIndexesPath, `${pageName}.tsx`);
202515
202712
  if (existsSync13(indexPath) && !reactEntries.includes(indexPath)) {
202516
202713
  reactEntries.push(indexPath);
202517
202714
  }
202518
202715
  });
202519
202716
  }, resolveReactEntryForFile = (state, file3, pagesPathResolved, reactIndexesPath, reactEntries) => {
202520
- const normalized = resolve18(file3);
202717
+ const normalized = resolve19(file3);
202521
202718
  if (!normalized.startsWith(pagesPathResolved)) {
202522
202719
  resolveReactEntriesFromDeps(state, normalized, pagesPathResolved, reactIndexesPath, reactEntries);
202523
202720
  return;
@@ -202528,18 +202725,18 @@ var parseErrorLocationFromMessage = (msg) => {
202528
202725
  }
202529
202726
  }, collectReactEntries = (state, filesToRebuild, reactPagesPath, reactIndexesPath) => {
202530
202727
  const reactEntries = [];
202531
- const pagesPathResolved = resolve18(reactPagesPath);
202728
+ const pagesPathResolved = resolve19(reactPagesPath);
202532
202729
  filesToRebuild.forEach((file3) => {
202533
202730
  resolveReactEntryForFile(state, file3, pagesPathResolved, reactIndexesPath, reactEntries);
202534
202731
  });
202535
202732
  return reactEntries;
202536
202733
  }, bundleReactClient = async (state, reactEntries, reactIndexesPath, buildDir) => {
202537
- const { build: bunBuild5 } = await Promise.resolve(globalThis.Bun);
202734
+ const { build: bunBuild6 } = await Promise.resolve(globalThis.Bun);
202538
202735
  const { generateManifest: generateManifest2 } = await Promise.resolve().then(() => (init_generateManifest(), exports_generateManifest));
202539
202736
  const { getDevVendorPaths: getDevVendorPaths2 } = await Promise.resolve().then(() => exports_devVendorPaths);
202540
202737
  const { rewriteReactImports: rewriteReactImports2 } = await Promise.resolve().then(() => (init_rewriteReactImports(), exports_rewriteReactImports));
202541
202738
  const clientRoot = await computeClientRoot(state.resolvedPaths);
202542
- const refreshEntry = resolve18(reactIndexesPath, "_refresh.tsx");
202739
+ const refreshEntry = resolve19(reactIndexesPath, "_refresh.tsx");
202543
202740
  if (!reactEntries.includes(refreshEntry)) {
202544
202741
  reactEntries.push(refreshEntry);
202545
202742
  }
@@ -202551,11 +202748,11 @@ var parseErrorLocationFromMessage = (msg) => {
202551
202748
  setDevVendorPaths2(vendorPaths);
202552
202749
  }
202553
202750
  const { rmSync: rmSync2 } = await import("fs");
202554
- rmSync2(resolve18(buildDir, "react", "indexes"), {
202751
+ rmSync2(resolve19(buildDir, "react", "indexes"), {
202555
202752
  force: true,
202556
202753
  recursive: true
202557
202754
  });
202558
- const clientResult = await bunBuild5({
202755
+ const clientResult = await bunBuild6({
202559
202756
  entrypoints: reactEntries,
202560
202757
  format: "esm",
202561
202758
  jsx: { development: true },
@@ -202577,11 +202774,44 @@ var parseErrorLocationFromMessage = (msg) => {
202577
202774
  const clientManifest = generateManifest2(clientResult.outputs, buildDir);
202578
202775
  Object.assign(state.manifest, clientManifest);
202579
202776
  await populateAssetStore(state.assetStore, clientManifest, buildDir);
202777
+ }, getReactModuleUrl = async (pageFile) => {
202778
+ const { invalidateModule: invalidateModule2, SRC_URL_PREFIX: SRC_URL_PREFIX2 } = await Promise.resolve().then(() => (init_moduleServer(), exports_moduleServer));
202779
+ invalidateModule2(pageFile);
202780
+ const rel = relative7(process.cwd(), pageFile).replace(/\\/g, "/");
202781
+ return `${SRC_URL_PREFIX2}${rel}`;
202580
202782
  }, handleReactFastPath = async (state, config, filesToRebuild, startTime, onRebuildComplete) => {
202581
202783
  const reactDir = config.reactDirectory ?? "";
202582
- const reactPagesPath = resolve18(reactDir, "pages");
202583
- const reactIndexesPath = resolve18(reactDir, "indexes");
202784
+ const reactPagesPath = resolve19(reactDir, "pages");
202785
+ const reactIndexesPath = resolve19(reactDir, "indexes");
202584
202786
  const { buildDir } = state.resolvedPaths;
202787
+ const reactFiles = filesToRebuild.filter((file3) => detectFramework(file3, state.resolvedPaths) === "react");
202788
+ if (reactFiles.length > 0) {
202789
+ const [changedFile] = reactFiles;
202790
+ if (changedFile) {
202791
+ const pageModuleUrl = await getReactModuleUrl(changedFile);
202792
+ if (pageModuleUrl) {
202793
+ const duration2 = Date.now() - startTime;
202794
+ logHmrUpdate(changedFile, "react", duration2);
202795
+ broadcastToClients(state, {
202796
+ data: {
202797
+ framework: "react",
202798
+ hasComponentChanges: true,
202799
+ hasCSSChanges: false,
202800
+ manifest: state.manifest,
202801
+ pageModuleUrl,
202802
+ primarySource: changedFile,
202803
+ sourceFiles: reactFiles
202804
+ },
202805
+ type: "react-update"
202806
+ });
202807
+ onRebuildComplete({
202808
+ hmrState: state,
202809
+ manifest: state.manifest
202810
+ });
202811
+ return state.manifest;
202812
+ }
202813
+ }
202814
+ }
202585
202815
  const { generateReactIndexFiles: generateReactIndexFiles2 } = await Promise.resolve().then(() => (init_generateReactIndexes(), exports_generateReactIndexes));
202586
202816
  await generateReactIndexFiles2(reactPagesPath, reactIndexesPath, true);
202587
202817
  const reactEntries = collectReactEntries(state, filesToRebuild, reactPagesPath, reactIndexesPath);
@@ -202591,7 +202821,6 @@ var parseErrorLocationFromMessage = (msg) => {
202591
202821
  await rm6(reactIndexesPath, { force: true, recursive: true });
202592
202822
  const { manifest } = state;
202593
202823
  const duration = Date.now() - startTime;
202594
- const reactFiles = filesToRebuild.filter((file3) => detectFramework(file3, state.resolvedPaths) === "react");
202595
202824
  const reactPageFiles = reactFiles.filter((file3) => file3.replace(/\\/g, "/").includes("/pages/"));
202596
202825
  const sourceFiles = reactPageFiles.length > 0 ? reactPageFiles : reactFiles;
202597
202826
  logHmrUpdate(sourceFiles[0] ?? reactFiles[0] ?? "", "react", duration);
@@ -202626,18 +202855,18 @@ var parseErrorLocationFromMessage = (msg) => {
202626
202855
  }, handleSvelteFastPath = async (state, config, filesToRebuild, startTime, onRebuildComplete) => {
202627
202856
  const svelteDir = config.svelteDirectory ?? "";
202628
202857
  const { buildDir } = state.resolvedPaths;
202629
- const svelteFiles = filesToRebuild.filter((file3) => file3.endsWith(".svelte") && resolve18(file3).startsWith(resolve18(svelteDir, "pages")));
202858
+ const svelteFiles = filesToRebuild.filter((file3) => file3.endsWith(".svelte") && resolve19(file3).startsWith(resolve19(svelteDir, "pages")));
202630
202859
  if (svelteFiles.length > 0) {
202631
202860
  const { compileSvelte: compileSvelte2 } = await Promise.resolve().then(() => (init_compileSvelte(), exports_compileSvelte));
202632
- const { build: bunBuild5 } = await Promise.resolve(globalThis.Bun);
202861
+ const { build: bunBuild6 } = await Promise.resolve(globalThis.Bun);
202633
202862
  const clientRoot = await computeClientRoot(state.resolvedPaths);
202634
202863
  const { svelteServerPaths, svelteIndexPaths, svelteClientPaths } = await compileSvelte2(svelteFiles, svelteDir, new Map, true);
202635
202864
  const serverEntries = [...svelteServerPaths];
202636
202865
  const clientEntries = [...svelteIndexPaths, ...svelteClientPaths];
202637
- const serverRoot = resolve18(svelteDir, "server");
202638
- const serverOutDir = resolve18(buildDir, basename7(svelteDir));
202866
+ const serverRoot = resolve19(svelteDir, "server");
202867
+ const serverOutDir = resolve19(buildDir, basename7(svelteDir));
202639
202868
  const [serverResult, clientResult] = await Promise.all([
202640
- serverEntries.length > 0 ? bunBuild5({
202869
+ serverEntries.length > 0 ? bunBuild6({
202641
202870
  entrypoints: serverEntries,
202642
202871
  external: ["svelte", "svelte/*"],
202643
202872
  format: "esm",
@@ -202647,7 +202876,7 @@ var parseErrorLocationFromMessage = (msg) => {
202647
202876
  target: "bun",
202648
202877
  throw: false
202649
202878
  }) : undefined,
202650
- clientEntries.length > 0 ? bunBuild5({
202879
+ clientEntries.length > 0 ? bunBuild6({
202651
202880
  entrypoints: clientEntries,
202652
202881
  format: "esm",
202653
202882
  naming: "[dir]/[name].[hash].[ext]",
@@ -202661,15 +202890,15 @@ var parseErrorLocationFromMessage = (msg) => {
202661
202890
  await handleClientManifestUpdate(state, clientResult, buildDir);
202662
202891
  }
202663
202892
  await Promise.all([
202664
- rm6(resolve18(svelteDir, "client"), {
202893
+ rm6(resolve19(svelteDir, "client"), {
202665
202894
  force: true,
202666
202895
  recursive: true
202667
202896
  }),
202668
- rm6(resolve18(svelteDir, "indexes"), {
202897
+ rm6(resolve19(svelteDir, "indexes"), {
202669
202898
  force: true,
202670
202899
  recursive: true
202671
202900
  }),
202672
- rm6(resolve18(svelteDir, "server"), {
202901
+ rm6(resolve19(svelteDir, "server"), {
202673
202902
  force: true,
202674
202903
  recursive: true
202675
202904
  })
@@ -202702,23 +202931,23 @@ var parseErrorLocationFromMessage = (msg) => {
202702
202931
  }, handleVueFastPath = async (state, config, filesToRebuild, startTime, onRebuildComplete) => {
202703
202932
  const vueDir = config.vueDirectory ?? "";
202704
202933
  const { buildDir } = state.resolvedPaths;
202705
- const vueFiles = filesToRebuild.filter((file3) => file3.endsWith(".vue") && resolve18(file3).startsWith(resolve18(vueDir, "pages")));
202934
+ const vueFiles = filesToRebuild.filter((file3) => file3.endsWith(".vue") && resolve19(file3).startsWith(resolve19(vueDir, "pages")));
202706
202935
  if (vueFiles.length > 0) {
202707
202936
  const { compileVue: compileVue2 } = await Promise.resolve().then(() => (init_compileVue(), exports_compileVue));
202708
- const { build: bunBuild5 } = await Promise.resolve(globalThis.Bun);
202937
+ const { build: bunBuild6 } = await Promise.resolve(globalThis.Bun);
202709
202938
  const clientRoot = await computeClientRoot(state.resolvedPaths);
202710
202939
  const { vueServerPaths, vueIndexPaths, vueClientPaths } = await compileVue2(vueFiles, vueDir, true);
202711
202940
  const serverEntries = [...vueServerPaths];
202712
202941
  const clientEntries = [...vueIndexPaths, ...vueClientPaths];
202713
- const serverRoot = resolve18(vueDir, "server");
202714
- const serverOutDir = resolve18(buildDir, basename7(vueDir));
202942
+ const serverRoot = resolve19(vueDir, "server");
202943
+ const serverOutDir = resolve19(buildDir, basename7(vueDir));
202715
202944
  const vueFeatureFlags2 = {
202716
202945
  __VUE_OPTIONS_API__: "true",
202717
202946
  __VUE_PROD_DEVTOOLS__: "true",
202718
202947
  __VUE_PROD_HYDRATION_MISMATCH_DETAILS__: "true"
202719
202948
  };
202720
202949
  const [serverResult, clientResult] = await Promise.all([
202721
- serverEntries.length > 0 ? bunBuild5({
202950
+ serverEntries.length > 0 ? bunBuild6({
202722
202951
  entrypoints: serverEntries,
202723
202952
  external: ["vue", "vue/*"],
202724
202953
  format: "esm",
@@ -202728,7 +202957,7 @@ var parseErrorLocationFromMessage = (msg) => {
202728
202957
  target: "bun",
202729
202958
  throw: false
202730
202959
  }) : undefined,
202731
- clientEntries.length > 0 ? bunBuild5({
202960
+ clientEntries.length > 0 ? bunBuild6({
202732
202961
  define: vueFeatureFlags2,
202733
202962
  entrypoints: clientEntries,
202734
202963
  format: "esm",
@@ -202743,19 +202972,19 @@ var parseErrorLocationFromMessage = (msg) => {
202743
202972
  await handleClientManifestUpdate(state, clientResult, buildDir);
202744
202973
  }
202745
202974
  await Promise.all([
202746
- rm6(resolve18(vueDir, "client"), {
202975
+ rm6(resolve19(vueDir, "client"), {
202747
202976
  force: true,
202748
202977
  recursive: true
202749
202978
  }),
202750
- rm6(resolve18(vueDir, "indexes"), {
202979
+ rm6(resolve19(vueDir, "indexes"), {
202751
202980
  force: true,
202752
202981
  recursive: true
202753
202982
  }),
202754
- rm6(resolve18(vueDir, "server"), {
202983
+ rm6(resolve19(vueDir, "server"), {
202755
202984
  force: true,
202756
202985
  recursive: true
202757
202986
  }),
202758
- rm6(resolve18(vueDir, "compiled"), {
202987
+ rm6(resolve19(vueDir, "compiled"), {
202759
202988
  force: true,
202760
202989
  recursive: true
202761
202990
  })
@@ -202770,7 +202999,7 @@ var parseErrorLocationFromMessage = (msg) => {
202770
202999
  const cssKey = `${pascalName}CSS`;
202771
203000
  const cssUrl = manifest[cssKey] || null;
202772
203001
  const vueRoot = config.vueDirectory;
202773
- const hmrId = vueRoot ? relative6(vueRoot, vuePagePath).replace(/\\/g, "/").replace(/\.vue$/, "") : baseName;
203002
+ const hmrId = vueRoot ? relative7(vueRoot, vuePagePath).replace(/\\/g, "/").replace(/\.vue$/, "") : baseName;
202774
203003
  logHmrUpdate(vuePagePath, "vue", duration);
202775
203004
  broadcastToClients(state, {
202776
203005
  data: {
@@ -202875,10 +203104,10 @@ var parseErrorLocationFromMessage = (msg) => {
202875
203104
  }, computeOutputPagesDir = (state, config, framework) => {
202876
203105
  const isSingle = !config.reactDirectory && !config.svelteDirectory && !config.vueDirectory && (framework === "html" ? !config.htmxDirectory : !config.htmlDirectory);
202877
203106
  if (isSingle) {
202878
- return resolve18(state.resolvedPaths.buildDir, "pages");
203107
+ return resolve19(state.resolvedPaths.buildDir, "pages");
202879
203108
  }
202880
203109
  const dirName = framework === "html" ? basename7(config.htmlDirectory ?? "html") : basename7(config.htmxDirectory ?? "htmx");
202881
- return resolve18(state.resolvedPaths.buildDir, dirName, "pages");
203110
+ return resolve19(state.resolvedPaths.buildDir, dirName, "pages");
202882
203111
  }, processHtmlPageUpdate = async (state, pageFile, builtHtmlPagePath, manifest, duration) => {
202883
203112
  try {
202884
203113
  const { handleHTMLUpdate: handleHTMLUpdate2 } = await Promise.resolve().then(() => (init_simpleHTMLHMR(), exports_simpleHTMLHMR));
@@ -202914,7 +203143,7 @@ var parseErrorLocationFromMessage = (msg) => {
202914
203143
  const outputHtmlPages = computeOutputPagesDir(state, config, "html");
202915
203144
  for (const pageFile of htmlPageFiles) {
202916
203145
  const htmlPageName = basename7(pageFile);
202917
- const builtHtmlPagePath = resolve18(outputHtmlPages, htmlPageName);
203146
+ const builtHtmlPagePath = resolve19(outputHtmlPages, htmlPageName);
202918
203147
  await processHtmlPageUpdate(state, pageFile, builtHtmlPagePath, manifest, duration);
202919
203148
  }
202920
203149
  }, handleVueCssOnlyUpdate = (state, vueCssFiles, manifest, duration) => {
@@ -202975,11 +203204,11 @@ var parseErrorLocationFromMessage = (msg) => {
202975
203204
  const baseName = fileName.replace(/\.vue$/, "");
202976
203205
  const pascalName = toPascal(baseName);
202977
203206
  const vueRoot = config.vueDirectory;
202978
- const hmrId = vueRoot ? relative6(vueRoot, vuePagePath).replace(/\\/g, "/").replace(/\.vue$/, "") : baseName;
203207
+ const hmrId = vueRoot ? relative7(vueRoot, vuePagePath).replace(/\\/g, "/").replace(/\.vue$/, "") : baseName;
202979
203208
  const cssKey = `${pascalName}CSS`;
202980
203209
  const cssUrl = manifest[cssKey] || null;
202981
203210
  const { vueHmrMetadata: vueHmrMetadata2 } = await Promise.resolve().then(() => (init_compileVue(), exports_compileVue));
202982
- const hmrMeta = vueHmrMetadata2.get(resolve18(vuePagePath));
203211
+ const hmrMeta = vueHmrMetadata2.get(resolve19(vuePagePath));
202983
203212
  const changeType = hmrMeta?.changeType ?? "full";
202984
203213
  if (changeType === "style-only") {
202985
203214
  broadcastVueStyleOnly(state, vuePagePath, baseName, cssUrl, hmrId, manifest, duration);
@@ -203213,7 +203442,7 @@ var parseErrorLocationFromMessage = (msg) => {
203213
203442
  const outputHtmxPages = computeOutputPagesDir(state, config, "htmx");
203214
203443
  for (const htmxPageFile of htmxPageFiles) {
203215
203444
  const htmxPageName = basename7(htmxPageFile);
203216
- const builtHtmxPagePath = resolve18(outputHtmxPages, htmxPageName);
203445
+ const builtHtmxPagePath = resolve19(outputHtmxPages, htmxPageName);
203217
203446
  await processHtmxPageUpdate(state, htmxPageFile, builtHtmxPagePath, manifest, duration);
203218
203447
  }
203219
203448
  }, collectUpdatedModulePaths = (allModuleUpdates) => {
@@ -203431,8 +203660,8 @@ __export(exports_devBuild, {
203431
203660
  devBuild: () => devBuild
203432
203661
  });
203433
203662
  import { readdir as readdir3 } from "fs/promises";
203434
- import { statSync } from "fs";
203435
- import { resolve as resolve19 } from "path";
203663
+ import { statSync as statSync3 } from "fs";
203664
+ import { resolve as resolve20 } from "path";
203436
203665
  var FRAMEWORK_DIR_KEYS, parseDirectoryConfig = (source) => {
203437
203666
  const config = {};
203438
203667
  const dirPattern = /(\w+Directory)\s*:\s*['"]([^'"]+)['"]/g;
@@ -203445,7 +203674,7 @@ var FRAMEWORK_DIR_KEYS, parseDirectoryConfig = (source) => {
203445
203674
  return Object.keys(config).length > 0 ? config : null;
203446
203675
  }, reloadConfig = async () => {
203447
203676
  try {
203448
- const configPath2 = resolve19(process.env.ABSOLUTE_CONFIG ?? "absolute.config.ts");
203677
+ const configPath2 = resolve20(process.env.ABSOLUTE_CONFIG ?? "absolute.config.ts");
203449
203678
  const source = await Bun.file(configPath2).text();
203450
203679
  return parseDirectoryConfig(source);
203451
203680
  } catch {
@@ -203518,7 +203747,7 @@ var FRAMEWORK_DIR_KEYS, parseDirectoryConfig = (source) => {
203518
203747
  state.fileChangeQueue.clear();
203519
203748
  }
203520
203749
  }, handleCachedReload = async () => {
203521
- const serverMtime = statSync(resolve19(Bun.main)).mtimeMs;
203750
+ const serverMtime = statSync3(resolve20(Bun.main)).mtimeMs;
203522
203751
  const lastMtime = globalThis.__hmrServerMtime;
203523
203752
  globalThis.__hmrServerMtime = serverMtime;
203524
203753
  const cached = globalThis.__hmrDevResult;
@@ -203546,8 +203775,8 @@ var FRAMEWORK_DIR_KEYS, parseDirectoryConfig = (source) => {
203546
203775
  return true;
203547
203776
  }, resolveAbsoluteVersion2 = async () => {
203548
203777
  const candidates = [
203549
- resolve19(import.meta.dir, "..", "..", "package.json"),
203550
- resolve19(import.meta.dir, "..", "package.json")
203778
+ resolve20(import.meta.dir, "..", "..", "package.json"),
203779
+ resolve20(import.meta.dir, "..", "package.json")
203551
203780
  ];
203552
203781
  for (const candidate of candidates) {
203553
203782
  const found = await tryReadPackageVersion(candidate);
@@ -203560,7 +203789,7 @@ var FRAMEWORK_DIR_KEYS, parseDirectoryConfig = (source) => {
203560
203789
  const entries = await readdir3(vendorDir).catch(() => emptyStringArray);
203561
203790
  await Promise.all(entries.map(async (entry) => {
203562
203791
  const webPath = `/${framework}/vendor/${entry}`;
203563
- const bytes = await Bun.file(resolve19(vendorDir, entry)).bytes();
203792
+ const bytes = await Bun.file(resolve20(vendorDir, entry)).bytes();
203564
203793
  assetStore.set(webPath, bytes);
203565
203794
  }));
203566
203795
  }, devBuild = async (config) => {
@@ -203594,7 +203823,7 @@ var FRAMEWORK_DIR_KEYS, parseDirectoryConfig = (source) => {
203594
203823
  await populateAssetStore(state.assetStore, manifest ?? {}, state.resolvedPaths.buildDir);
203595
203824
  cleanStaleAssets(state.assetStore, manifest ?? {}, state.resolvedPaths.buildDir);
203596
203825
  const buildReactVendorTask = config.reactDirectory ? buildReactVendor(state.resolvedPaths.buildDir).then(async () => {
203597
- const vendorDir = resolve19(state.resolvedPaths.buildDir, "react", "vendor");
203826
+ const vendorDir = resolve20(state.resolvedPaths.buildDir, "react", "vendor");
203598
203827
  await loadVendorFiles(state.assetStore, vendorDir, "react");
203599
203828
  if (!globalThis.__reactModuleRef) {
203600
203829
  globalThis.__reactModuleRef = await import("react");
@@ -203602,7 +203831,7 @@ var FRAMEWORK_DIR_KEYS, parseDirectoryConfig = (source) => {
203602
203831
  return true;
203603
203832
  }) : undefined;
203604
203833
  const buildAngularVendorTask = config.angularDirectory ? buildAngularVendor(state.resolvedPaths.buildDir).then(async () => {
203605
- const vendorDir = resolve19(state.resolvedPaths.buildDir, "angular", "vendor");
203834
+ const vendorDir = resolve20(state.resolvedPaths.buildDir, "angular", "vendor");
203606
203835
  await loadVendorFiles(state.assetStore, vendorDir, "angular");
203607
203836
  return true;
203608
203837
  }) : undefined;
@@ -203620,7 +203849,7 @@ var FRAMEWORK_DIR_KEYS, parseDirectoryConfig = (source) => {
203620
203849
  manifest
203621
203850
  };
203622
203851
  globalThis.__hmrDevResult = result;
203623
- globalThis.__hmrServerMtime = statSync(resolve19(Bun.main)).mtimeMs;
203852
+ globalThis.__hmrServerMtime = statSync3(resolve20(Bun.main)).mtimeMs;
203624
203853
  return result;
203625
203854
  };
203626
203855
  var init_devBuild = __esm(() => {
@@ -203653,5 +203882,5 @@ export {
203653
203882
  build
203654
203883
  };
203655
203884
 
203656
- //# debugId=30FEE903D90C293764756E2164756E21
203885
+ //# debugId=9A12E077E476D2CB64756E2164756E21
203657
203886
  //# sourceMappingURL=build.js.map