@absolutejs/absolute 0.19.0-beta.12 → 0.19.0-beta.14

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,68 +202774,23 @@ 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);
202580
- }, buildSingleReactPage = async (state, pageFile, buildDir) => {
202581
- const { build: bunBuild5 } = await Promise.resolve(globalThis.Bun);
202582
- const { generateManifest: generateManifest2 } = await Promise.resolve().then(() => (init_generateManifest(), exports_generateManifest));
202583
- const { getDevVendorPaths: getDevVendorPaths2 } = await Promise.resolve().then(() => exports_devVendorPaths);
202584
- const { rewriteReactImports: rewriteReactImports2 } = await Promise.resolve().then(() => (init_rewriteReactImports(), exports_rewriteReactImports));
202585
- const { commonAncestor: commonAncestor2 } = await Promise.resolve().then(() => (init_commonAncestor(), exports_commonAncestor));
202586
- const clientRoots = [
202587
- state.resolvedPaths.reactDir,
202588
- state.resolvedPaths.svelteDir,
202589
- state.resolvedPaths.htmlDir,
202590
- state.resolvedPaths.vueDir,
202591
- state.resolvedPaths.angularDir
202592
- ].filter((dir) => Boolean(dir));
202593
- const clientRoot = clientRoots.length === 1 ? clientRoots[0] ?? process.cwd() : commonAncestor2(clientRoots, process.cwd());
202594
- let vendorPaths = getDevVendorPaths2();
202595
- if (!vendorPaths) {
202596
- const { computeVendorPaths: computeVendorPaths2 } = await Promise.resolve().then(() => (init_buildReactVendor(), exports_buildReactVendor));
202597
- const { setDevVendorPaths: setDevVendorPaths2 } = await Promise.resolve().then(() => exports_devVendorPaths);
202598
- vendorPaths = computeVendorPaths2();
202599
- setDevVendorPaths2(vendorPaths);
202600
- }
202601
- const result = await bunBuild5({
202602
- entrypoints: [pageFile],
202603
- external: vendorPaths ? Object.keys(vendorPaths) : [],
202604
- format: "esm",
202605
- jsx: { development: true },
202606
- naming: "[dir]/[name].[hash].[ext]",
202607
- outdir: buildDir,
202608
- reactFastRefresh: true,
202609
- root: clientRoot,
202610
- splitting: false,
202611
- target: "browser",
202612
- throw: false
202613
- });
202614
- if (!result.success)
202615
- return;
202616
- const outputPaths = result.outputs.map((a) => a.path);
202617
- if (vendorPaths) {
202618
- await rewriteReactImports2(outputPaths, vendorPaths);
202619
- }
202620
- const pageManifest = generateManifest2(result.outputs, buildDir);
202621
- Object.assign(state.manifest, pageManifest);
202622
- await populateAssetStore(state.assetStore, pageManifest, buildDir);
202623
- const [firstOutput] = result.outputs;
202624
- if (!firstOutput)
202625
- return;
202626
- return `/${relative6(buildDir, firstOutput.path).replace(/\\/g, "/")}`;
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}`;
202627
202782
  }, handleReactFastPath = async (state, config, filesToRebuild, startTime, onRebuildComplete) => {
202628
202783
  const reactDir = config.reactDirectory ?? "";
202629
- const reactPagesPath = resolve18(reactDir, "pages");
202630
- const reactIndexesPath = resolve18(reactDir, "indexes");
202784
+ const reactPagesPath = resolve19(reactDir, "pages");
202785
+ const reactIndexesPath = resolve19(reactDir, "indexes");
202631
202786
  const { buildDir } = state.resolvedPaths;
202632
202787
  const reactFiles = filesToRebuild.filter((file3) => detectFramework(file3, state.resolvedPaths) === "react");
202633
- const pagesPathResolved = resolve18(reactPagesPath);
202634
- const allArePageFiles = reactFiles.length > 0 && reactFiles.every((file3) => (file3.endsWith(".tsx") || file3.endsWith(".jsx")) && resolve18(file3).startsWith(pagesPathResolved));
202635
- if (allArePageFiles) {
202636
- const [pageFile] = reactFiles;
202637
- if (pageFile) {
202638
- const pageModuleUrl = await buildSingleReactPage(state, pageFile, buildDir);
202788
+ if (reactFiles.length > 0) {
202789
+ const [changedFile] = reactFiles;
202790
+ if (changedFile) {
202791
+ const pageModuleUrl = await getReactModuleUrl(changedFile);
202639
202792
  if (pageModuleUrl) {
202640
- const duration2 = Date.now() - startTime;
202641
- logHmrUpdate(pageFile, "react", duration2);
202793
+ logHmrUpdate(changedFile, "react", Date.now() - startTime);
202642
202794
  broadcastToClients(state, {
202643
202795
  data: {
202644
202796
  framework: "react",
@@ -202646,8 +202798,9 @@ var parseErrorLocationFromMessage = (msg) => {
202646
202798
  hasCSSChanges: false,
202647
202799
  manifest: state.manifest,
202648
202800
  pageModuleUrl,
202649
- primarySource: pageFile,
202650
- sourceFiles: reactFiles
202801
+ primarySource: changedFile,
202802
+ sourceFiles: reactFiles,
202803
+ startTime
202651
202804
  },
202652
202805
  type: "react-update"
202653
202806
  });
@@ -202702,18 +202855,18 @@ var parseErrorLocationFromMessage = (msg) => {
202702
202855
  }, handleSvelteFastPath = async (state, config, filesToRebuild, startTime, onRebuildComplete) => {
202703
202856
  const svelteDir = config.svelteDirectory ?? "";
202704
202857
  const { buildDir } = state.resolvedPaths;
202705
- 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")));
202706
202859
  if (svelteFiles.length > 0) {
202707
202860
  const { compileSvelte: compileSvelte2 } = await Promise.resolve().then(() => (init_compileSvelte(), exports_compileSvelte));
202708
- const { build: bunBuild5 } = await Promise.resolve(globalThis.Bun);
202861
+ const { build: bunBuild6 } = await Promise.resolve(globalThis.Bun);
202709
202862
  const clientRoot = await computeClientRoot(state.resolvedPaths);
202710
202863
  const { svelteServerPaths, svelteIndexPaths, svelteClientPaths } = await compileSvelte2(svelteFiles, svelteDir, new Map, true);
202711
202864
  const serverEntries = [...svelteServerPaths];
202712
202865
  const clientEntries = [...svelteIndexPaths, ...svelteClientPaths];
202713
- const serverRoot = resolve18(svelteDir, "server");
202714
- const serverOutDir = resolve18(buildDir, basename7(svelteDir));
202866
+ const serverRoot = resolve19(svelteDir, "server");
202867
+ const serverOutDir = resolve19(buildDir, basename7(svelteDir));
202715
202868
  const [serverResult, clientResult] = await Promise.all([
202716
- serverEntries.length > 0 ? bunBuild5({
202869
+ serverEntries.length > 0 ? bunBuild6({
202717
202870
  entrypoints: serverEntries,
202718
202871
  external: ["svelte", "svelte/*"],
202719
202872
  format: "esm",
@@ -202723,7 +202876,7 @@ var parseErrorLocationFromMessage = (msg) => {
202723
202876
  target: "bun",
202724
202877
  throw: false
202725
202878
  }) : undefined,
202726
- clientEntries.length > 0 ? bunBuild5({
202879
+ clientEntries.length > 0 ? bunBuild6({
202727
202880
  entrypoints: clientEntries,
202728
202881
  format: "esm",
202729
202882
  naming: "[dir]/[name].[hash].[ext]",
@@ -202737,15 +202890,15 @@ var parseErrorLocationFromMessage = (msg) => {
202737
202890
  await handleClientManifestUpdate(state, clientResult, buildDir);
202738
202891
  }
202739
202892
  await Promise.all([
202740
- rm6(resolve18(svelteDir, "client"), {
202893
+ rm6(resolve19(svelteDir, "client"), {
202741
202894
  force: true,
202742
202895
  recursive: true
202743
202896
  }),
202744
- rm6(resolve18(svelteDir, "indexes"), {
202897
+ rm6(resolve19(svelteDir, "indexes"), {
202745
202898
  force: true,
202746
202899
  recursive: true
202747
202900
  }),
202748
- rm6(resolve18(svelteDir, "server"), {
202901
+ rm6(resolve19(svelteDir, "server"), {
202749
202902
  force: true,
202750
202903
  recursive: true
202751
202904
  })
@@ -202778,23 +202931,23 @@ var parseErrorLocationFromMessage = (msg) => {
202778
202931
  }, handleVueFastPath = async (state, config, filesToRebuild, startTime, onRebuildComplete) => {
202779
202932
  const vueDir = config.vueDirectory ?? "";
202780
202933
  const { buildDir } = state.resolvedPaths;
202781
- 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")));
202782
202935
  if (vueFiles.length > 0) {
202783
202936
  const { compileVue: compileVue2 } = await Promise.resolve().then(() => (init_compileVue(), exports_compileVue));
202784
- const { build: bunBuild5 } = await Promise.resolve(globalThis.Bun);
202937
+ const { build: bunBuild6 } = await Promise.resolve(globalThis.Bun);
202785
202938
  const clientRoot = await computeClientRoot(state.resolvedPaths);
202786
202939
  const { vueServerPaths, vueIndexPaths, vueClientPaths } = await compileVue2(vueFiles, vueDir, true);
202787
202940
  const serverEntries = [...vueServerPaths];
202788
202941
  const clientEntries = [...vueIndexPaths, ...vueClientPaths];
202789
- const serverRoot = resolve18(vueDir, "server");
202790
- const serverOutDir = resolve18(buildDir, basename7(vueDir));
202942
+ const serverRoot = resolve19(vueDir, "server");
202943
+ const serverOutDir = resolve19(buildDir, basename7(vueDir));
202791
202944
  const vueFeatureFlags2 = {
202792
202945
  __VUE_OPTIONS_API__: "true",
202793
202946
  __VUE_PROD_DEVTOOLS__: "true",
202794
202947
  __VUE_PROD_HYDRATION_MISMATCH_DETAILS__: "true"
202795
202948
  };
202796
202949
  const [serverResult, clientResult] = await Promise.all([
202797
- serverEntries.length > 0 ? bunBuild5({
202950
+ serverEntries.length > 0 ? bunBuild6({
202798
202951
  entrypoints: serverEntries,
202799
202952
  external: ["vue", "vue/*"],
202800
202953
  format: "esm",
@@ -202804,7 +202957,7 @@ var parseErrorLocationFromMessage = (msg) => {
202804
202957
  target: "bun",
202805
202958
  throw: false
202806
202959
  }) : undefined,
202807
- clientEntries.length > 0 ? bunBuild5({
202960
+ clientEntries.length > 0 ? bunBuild6({
202808
202961
  define: vueFeatureFlags2,
202809
202962
  entrypoints: clientEntries,
202810
202963
  format: "esm",
@@ -202819,19 +202972,19 @@ var parseErrorLocationFromMessage = (msg) => {
202819
202972
  await handleClientManifestUpdate(state, clientResult, buildDir);
202820
202973
  }
202821
202974
  await Promise.all([
202822
- rm6(resolve18(vueDir, "client"), {
202975
+ rm6(resolve19(vueDir, "client"), {
202823
202976
  force: true,
202824
202977
  recursive: true
202825
202978
  }),
202826
- rm6(resolve18(vueDir, "indexes"), {
202979
+ rm6(resolve19(vueDir, "indexes"), {
202827
202980
  force: true,
202828
202981
  recursive: true
202829
202982
  }),
202830
- rm6(resolve18(vueDir, "server"), {
202983
+ rm6(resolve19(vueDir, "server"), {
202831
202984
  force: true,
202832
202985
  recursive: true
202833
202986
  }),
202834
- rm6(resolve18(vueDir, "compiled"), {
202987
+ rm6(resolve19(vueDir, "compiled"), {
202835
202988
  force: true,
202836
202989
  recursive: true
202837
202990
  })
@@ -202846,7 +202999,7 @@ var parseErrorLocationFromMessage = (msg) => {
202846
202999
  const cssKey = `${pascalName}CSS`;
202847
203000
  const cssUrl = manifest[cssKey] || null;
202848
203001
  const vueRoot = config.vueDirectory;
202849
- const hmrId = vueRoot ? relative6(vueRoot, vuePagePath).replace(/\\/g, "/").replace(/\.vue$/, "") : baseName;
203002
+ const hmrId = vueRoot ? relative7(vueRoot, vuePagePath).replace(/\\/g, "/").replace(/\.vue$/, "") : baseName;
202850
203003
  logHmrUpdate(vuePagePath, "vue", duration);
202851
203004
  broadcastToClients(state, {
202852
203005
  data: {
@@ -202951,10 +203104,10 @@ var parseErrorLocationFromMessage = (msg) => {
202951
203104
  }, computeOutputPagesDir = (state, config, framework) => {
202952
203105
  const isSingle = !config.reactDirectory && !config.svelteDirectory && !config.vueDirectory && (framework === "html" ? !config.htmxDirectory : !config.htmlDirectory);
202953
203106
  if (isSingle) {
202954
- return resolve18(state.resolvedPaths.buildDir, "pages");
203107
+ return resolve19(state.resolvedPaths.buildDir, "pages");
202955
203108
  }
202956
203109
  const dirName = framework === "html" ? basename7(config.htmlDirectory ?? "html") : basename7(config.htmxDirectory ?? "htmx");
202957
- return resolve18(state.resolvedPaths.buildDir, dirName, "pages");
203110
+ return resolve19(state.resolvedPaths.buildDir, dirName, "pages");
202958
203111
  }, processHtmlPageUpdate = async (state, pageFile, builtHtmlPagePath, manifest, duration) => {
202959
203112
  try {
202960
203113
  const { handleHTMLUpdate: handleHTMLUpdate2 } = await Promise.resolve().then(() => (init_simpleHTMLHMR(), exports_simpleHTMLHMR));
@@ -202990,7 +203143,7 @@ var parseErrorLocationFromMessage = (msg) => {
202990
203143
  const outputHtmlPages = computeOutputPagesDir(state, config, "html");
202991
203144
  for (const pageFile of htmlPageFiles) {
202992
203145
  const htmlPageName = basename7(pageFile);
202993
- const builtHtmlPagePath = resolve18(outputHtmlPages, htmlPageName);
203146
+ const builtHtmlPagePath = resolve19(outputHtmlPages, htmlPageName);
202994
203147
  await processHtmlPageUpdate(state, pageFile, builtHtmlPagePath, manifest, duration);
202995
203148
  }
202996
203149
  }, handleVueCssOnlyUpdate = (state, vueCssFiles, manifest, duration) => {
@@ -203051,11 +203204,11 @@ var parseErrorLocationFromMessage = (msg) => {
203051
203204
  const baseName = fileName.replace(/\.vue$/, "");
203052
203205
  const pascalName = toPascal(baseName);
203053
203206
  const vueRoot = config.vueDirectory;
203054
- const hmrId = vueRoot ? relative6(vueRoot, vuePagePath).replace(/\\/g, "/").replace(/\.vue$/, "") : baseName;
203207
+ const hmrId = vueRoot ? relative7(vueRoot, vuePagePath).replace(/\\/g, "/").replace(/\.vue$/, "") : baseName;
203055
203208
  const cssKey = `${pascalName}CSS`;
203056
203209
  const cssUrl = manifest[cssKey] || null;
203057
203210
  const { vueHmrMetadata: vueHmrMetadata2 } = await Promise.resolve().then(() => (init_compileVue(), exports_compileVue));
203058
- const hmrMeta = vueHmrMetadata2.get(resolve18(vuePagePath));
203211
+ const hmrMeta = vueHmrMetadata2.get(resolve19(vuePagePath));
203059
203212
  const changeType = hmrMeta?.changeType ?? "full";
203060
203213
  if (changeType === "style-only") {
203061
203214
  broadcastVueStyleOnly(state, vuePagePath, baseName, cssUrl, hmrId, manifest, duration);
@@ -203289,7 +203442,7 @@ var parseErrorLocationFromMessage = (msg) => {
203289
203442
  const outputHtmxPages = computeOutputPagesDir(state, config, "htmx");
203290
203443
  for (const htmxPageFile of htmxPageFiles) {
203291
203444
  const htmxPageName = basename7(htmxPageFile);
203292
- const builtHtmxPagePath = resolve18(outputHtmxPages, htmxPageName);
203445
+ const builtHtmxPagePath = resolve19(outputHtmxPages, htmxPageName);
203293
203446
  await processHtmxPageUpdate(state, htmxPageFile, builtHtmxPagePath, manifest, duration);
203294
203447
  }
203295
203448
  }, collectUpdatedModulePaths = (allModuleUpdates) => {
@@ -203507,8 +203660,8 @@ __export(exports_devBuild, {
203507
203660
  devBuild: () => devBuild
203508
203661
  });
203509
203662
  import { readdir as readdir3 } from "fs/promises";
203510
- import { statSync } from "fs";
203511
- import { resolve as resolve19 } from "path";
203663
+ import { statSync as statSync3 } from "fs";
203664
+ import { resolve as resolve20 } from "path";
203512
203665
  var FRAMEWORK_DIR_KEYS, parseDirectoryConfig = (source) => {
203513
203666
  const config = {};
203514
203667
  const dirPattern = /(\w+Directory)\s*:\s*['"]([^'"]+)['"]/g;
@@ -203521,7 +203674,7 @@ var FRAMEWORK_DIR_KEYS, parseDirectoryConfig = (source) => {
203521
203674
  return Object.keys(config).length > 0 ? config : null;
203522
203675
  }, reloadConfig = async () => {
203523
203676
  try {
203524
- const configPath2 = resolve19(process.env.ABSOLUTE_CONFIG ?? "absolute.config.ts");
203677
+ const configPath2 = resolve20(process.env.ABSOLUTE_CONFIG ?? "absolute.config.ts");
203525
203678
  const source = await Bun.file(configPath2).text();
203526
203679
  return parseDirectoryConfig(source);
203527
203680
  } catch {
@@ -203594,7 +203747,7 @@ var FRAMEWORK_DIR_KEYS, parseDirectoryConfig = (source) => {
203594
203747
  state.fileChangeQueue.clear();
203595
203748
  }
203596
203749
  }, handleCachedReload = async () => {
203597
- const serverMtime = statSync(resolve19(Bun.main)).mtimeMs;
203750
+ const serverMtime = statSync3(resolve20(Bun.main)).mtimeMs;
203598
203751
  const lastMtime = globalThis.__hmrServerMtime;
203599
203752
  globalThis.__hmrServerMtime = serverMtime;
203600
203753
  const cached = globalThis.__hmrDevResult;
@@ -203622,8 +203775,8 @@ var FRAMEWORK_DIR_KEYS, parseDirectoryConfig = (source) => {
203622
203775
  return true;
203623
203776
  }, resolveAbsoluteVersion2 = async () => {
203624
203777
  const candidates = [
203625
- resolve19(import.meta.dir, "..", "..", "package.json"),
203626
- resolve19(import.meta.dir, "..", "package.json")
203778
+ resolve20(import.meta.dir, "..", "..", "package.json"),
203779
+ resolve20(import.meta.dir, "..", "package.json")
203627
203780
  ];
203628
203781
  for (const candidate of candidates) {
203629
203782
  const found = await tryReadPackageVersion(candidate);
@@ -203636,7 +203789,7 @@ var FRAMEWORK_DIR_KEYS, parseDirectoryConfig = (source) => {
203636
203789
  const entries = await readdir3(vendorDir).catch(() => emptyStringArray);
203637
203790
  await Promise.all(entries.map(async (entry) => {
203638
203791
  const webPath = `/${framework}/vendor/${entry}`;
203639
- const bytes = await Bun.file(resolve19(vendorDir, entry)).bytes();
203792
+ const bytes = await Bun.file(resolve20(vendorDir, entry)).bytes();
203640
203793
  assetStore.set(webPath, bytes);
203641
203794
  }));
203642
203795
  }, devBuild = async (config) => {
@@ -203670,7 +203823,7 @@ var FRAMEWORK_DIR_KEYS, parseDirectoryConfig = (source) => {
203670
203823
  await populateAssetStore(state.assetStore, manifest ?? {}, state.resolvedPaths.buildDir);
203671
203824
  cleanStaleAssets(state.assetStore, manifest ?? {}, state.resolvedPaths.buildDir);
203672
203825
  const buildReactVendorTask = config.reactDirectory ? buildReactVendor(state.resolvedPaths.buildDir).then(async () => {
203673
- const vendorDir = resolve19(state.resolvedPaths.buildDir, "react", "vendor");
203826
+ const vendorDir = resolve20(state.resolvedPaths.buildDir, "react", "vendor");
203674
203827
  await loadVendorFiles(state.assetStore, vendorDir, "react");
203675
203828
  if (!globalThis.__reactModuleRef) {
203676
203829
  globalThis.__reactModuleRef = await import("react");
@@ -203678,7 +203831,7 @@ var FRAMEWORK_DIR_KEYS, parseDirectoryConfig = (source) => {
203678
203831
  return true;
203679
203832
  }) : undefined;
203680
203833
  const buildAngularVendorTask = config.angularDirectory ? buildAngularVendor(state.resolvedPaths.buildDir).then(async () => {
203681
- const vendorDir = resolve19(state.resolvedPaths.buildDir, "angular", "vendor");
203834
+ const vendorDir = resolve20(state.resolvedPaths.buildDir, "angular", "vendor");
203682
203835
  await loadVendorFiles(state.assetStore, vendorDir, "angular");
203683
203836
  return true;
203684
203837
  }) : undefined;
@@ -203696,7 +203849,7 @@ var FRAMEWORK_DIR_KEYS, parseDirectoryConfig = (source) => {
203696
203849
  manifest
203697
203850
  };
203698
203851
  globalThis.__hmrDevResult = result;
203699
- globalThis.__hmrServerMtime = statSync(resolve19(Bun.main)).mtimeMs;
203852
+ globalThis.__hmrServerMtime = statSync3(resolve20(Bun.main)).mtimeMs;
203700
203853
  return result;
203701
203854
  };
203702
203855
  var init_devBuild = __esm(() => {
@@ -203729,5 +203882,5 @@ export {
203729
203882
  build
203730
203883
  };
203731
203884
 
203732
- //# debugId=F0543EFD0D90CE9264756E2164756E21
203885
+ //# debugId=399551415B4FE8B664756E2164756E21
203733
203886
  //# sourceMappingURL=build.js.map