@absolutejs/absolute 0.20.0-beta.122 → 0.20.0-beta.123

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -25889,7 +25889,7 @@ var init_compileAngular = __esm(() => {
25889
25889
 
25890
25890
  // node_modules/content-tag/pkg/node/content_tag.cjs
25891
25891
  var require_content_tag = __commonJS(function(exports, module) {
25892
- var __dirname = "/tmp/abs-translation-fix/node_modules/content-tag/pkg/node";
25892
+ var __dirname = "/home/alexkahn/abs/absolutejs/.claude/worktrees/release/node_modules/content-tag/pkg/node";
25893
25893
  var imports = {};
25894
25894
  imports["__wbindgen_placeholder__"] = exports;
25895
25895
  var wasm;
@@ -30115,15 +30115,6 @@ var init_fileHashTracker = __esm(() => {
30115
30115
  });
30116
30116
 
30117
30117
  // src/dev/transformCache.ts
30118
- var exports_transformCache = {};
30119
- __export(exports_transformCache, {
30120
- findNearestComponent: () => findNearestComponent,
30121
- getInvalidationVersion: () => getInvalidationVersion,
30122
- getTransformed: () => getTransformed,
30123
- invalidate: () => invalidate,
30124
- invalidateAll: () => invalidateAll,
30125
- setTransformed: () => setTransformed
30126
- });
30127
30118
  var cache, importers, getTransformed = (filePath) => cache.get(filePath)?.content, setTransformed = (filePath, content, mtime, imports) => {
30128
30119
  const resolvedImports = imports ?? [];
30129
30120
  cache.set(filePath, { content, imports: resolvedImports, mtime });
@@ -30175,10 +30166,6 @@ var cache, importers, getTransformed = (filePath) => cache.get(filePath)?.conten
30175
30166
  queue.push(parent);
30176
30167
  }
30177
30168
  }
30178
- }, invalidateAll = () => {
30179
- cache.clear();
30180
- importers.clear();
30181
- invalidationVersions.clear();
30182
30169
  };
30183
30170
  var init_transformCache = __esm(() => {
30184
30171
  cache = globalThis.__transformCache ?? new Map;
@@ -30890,6 +30877,7 @@ __export(exports_moduleServer, {
30890
30877
  SRC_URL_PREFIX: () => SRC_URL_PREFIX2,
30891
30878
  createDevPageWarmer: () => createDevPageWarmer,
30892
30879
  createModuleServer: () => createModuleServer,
30880
+ getTransformError: () => getTransformError,
30893
30881
  importedBindingNames: () => importedBindingNames,
30894
30882
  invalidateModule: () => invalidateModule,
30895
30883
  isReactFastRefreshSupported: () => isReactFastRefreshSupported,
@@ -31090,7 +31078,7 @@ ${code2}`;
31090
31078
  reactFastRefresh: true
31091
31079
  };
31092
31080
  const probe = new Bun.Transpiler(probeOptions);
31093
- const out = probe.transformSync("export function __AbsoluteRefreshProbe(){return null;}");
31081
+ const out = probe.transformSync("export function AbsoluteRefreshProbe(){return null;}");
31094
31082
  return out.includes("$RefreshReg$");
31095
31083
  } catch {
31096
31084
  return false;
@@ -31099,7 +31087,7 @@ ${code2}`;
31099
31087
  if (reactFastRefreshSupported || reactFastRefreshWarningEmitted)
31100
31088
  return;
31101
31089
  reactFastRefreshWarningEmitted = true;
31102
- logWarn("React HMR is blocked: this Bun build ignores " + "`reactFastRefresh` on Bun.Transpiler, so component state " + "cannot be preserved across edits. Tracking " + "https://github.com/oven-sh/bun/pull/28312 \u2014 if it still has " + "not merged, leave a \uD83D\uDC4D on the PR so the Bun team knows it " + "is blocking you. Until then, React edits trigger a targeted " + "page remount instead of a state-preserving fast refresh.");
31090
+ logWarn("React edits remount the page instead of keeping component state: " + "this Bun ignores `reactFastRefresh` on Bun.Transpiler " + "(https://github.com/oven-sh/bun/issues/32919). Run " + "`absolute bun-patch install` to use AbsoluteJS's patched Bun, " + "which has the fix; `absolute dev` then uses it automatically.");
31103
31091
  }, transformReactFile = (filePath, projectRoot, rewriter) => {
31104
31092
  const raw = readFileSync38(filePath, "utf-8");
31105
31093
  const valueExports = tsxTranspiler.scan(raw).exports;
@@ -31649,7 +31637,27 @@ export default {};
31649
31637
  const content = await transformVueFile(filePath, projectRoot, rewriter, vueDir, stylePreprocessors);
31650
31638
  setTransformed(filePath, content, stat4.mtimeMs, extractImportedFiles(content, projectRoot));
31651
31639
  return jsResponse(content);
31652
- }, transformErrorResponse = (err) => {
31640
+ }, transformErrors, readPosition = (value) => {
31641
+ if (!value || typeof value !== "object")
31642
+ return;
31643
+ const position = Reflect.get(value, "position");
31644
+ if (!position || typeof position !== "object")
31645
+ return;
31646
+ const line = Reflect.get(position, "line");
31647
+ const column = Reflect.get(position, "column");
31648
+ const lineText = Reflect.get(position, "lineText");
31649
+ return {
31650
+ column: typeof column === "number" ? column : undefined,
31651
+ line: typeof line === "number" ? line : undefined,
31652
+ lineText: typeof lineText === "string" ? lineText : undefined
31653
+ };
31654
+ }, describeTransformError = (err) => {
31655
+ const [first] = err instanceof AggregateError && Array.isArray(err.errors) ? err.errors : [err];
31656
+ const source = first ?? err;
31657
+ const ownMessage = source && typeof source === "object" ? Reflect.get(source, "message") : undefined;
31658
+ const message = typeof ownMessage === "string" ? ownMessage : String(source);
31659
+ return { message, ...readPosition(first) };
31660
+ }, getTransformError = (filePath) => transformErrors.get(resolve48(filePath)), transformErrorResponse = (err) => {
31653
31661
  const errMsg = err instanceof Error ? err.message : String(err);
31654
31662
  return new Response(`console.error('[ModuleServer] Transform error:', ${JSON.stringify(errMsg)});`, {
31655
31663
  headers: { "Content-Type": "application/javascript" },
@@ -31677,8 +31685,11 @@ export default {};
31677
31685
  return virtualCssResponse;
31678
31686
  const { filePath, ext } = resolveSourcePath2(relPath, projectRoot);
31679
31687
  try {
31680
- return await transformAndCache(filePath, ext, projectRoot, rewriter, frameworkDirs?.vue, stylePreprocessors);
31688
+ const response = await transformAndCache(filePath, ext, projectRoot, rewriter, frameworkDirs?.vue, stylePreprocessors);
31689
+ transformErrors.delete(resolve48(filePath));
31690
+ return response;
31681
31691
  } catch (err) {
31692
+ transformErrors.set(resolve48(filePath), describeTransformError(err));
31682
31693
  return transformErrorResponse(err);
31683
31694
  }
31684
31695
  };
@@ -31691,21 +31702,23 @@ export default {};
31691
31702
  files.push(resolve48(projectRoot, match[1]));
31692
31703
  }
31693
31704
  return files;
31694
- }, invalidateModule = (filePath) => {
31705
+ }, SRC_URL_PREFIX2, invalidateModule = (filePath) => {
31695
31706
  const resolved = resolve48(filePath);
31707
+ transformErrors.delete(resolved);
31696
31708
  invalidate(filePath);
31697
31709
  if (resolved !== filePath)
31698
31710
  invalidate(resolved);
31699
31711
  mtimeCache.delete(filePath);
31700
31712
  mtimeCache.delete(resolved);
31713
+ }, setGlobalModuleServer = (handler) => {
31714
+ globalThis.__absoluteModuleServer = handler ?? undefined;
31701
31715
  }, warmCache = async (pathname) => {
31702
31716
  if (!pathname.startsWith(SRC_PREFIX))
31703
31717
  return;
31704
- if (!globalModuleServer)
31718
+ const handler = globalThis.__absoluteModuleServer;
31719
+ if (!handler)
31705
31720
  return;
31706
- await globalModuleServer(pathname);
31707
- }, globalModuleServer = null, SRC_URL_PREFIX2, setGlobalModuleServer = (handler) => {
31708
- globalModuleServer = handler;
31721
+ await handler(pathname);
31709
31722
  }, REBUILD_IDLE_POLL_MS = 10, getDevResult = () => globalThis.__hmrDevResult, resolveDevPageEntry = (keyOrPath) => {
31710
31723
  const cached = getDevResult();
31711
31724
  const lazy = cached?.hmrState.lazyPages;
@@ -31876,6 +31889,8 @@ export function __legacyDecorateParamTS(paramIndex, decorator) {
31876
31889
  return function (target, key) { decorator(target, key, paramIndex); };
31877
31890
  }
31878
31891
  `.trim();
31892
+ transformErrors = globalThis.__absoluteTransformErrors ?? new Map;
31893
+ globalThis.__absoluteTransformErrors = transformErrors;
31879
31894
  SRC_IMPORT_RE = /\/@src\/([^"'?\s]+)/g;
31880
31895
  SRC_URL_PREFIX2 = SRC_PREFIX;
31881
31896
  });
@@ -32245,7 +32260,7 @@ __export(exports_rebuildTrigger, {
32245
32260
  queueFileChange: () => queueFileChange,
32246
32261
  triggerRebuild: () => triggerRebuild
32247
32262
  });
32248
- import { existsSync as existsSync45, readdirSync as readdirSync12, rmSync as rmSync4 } from "fs";
32263
+ import { existsSync as existsSync45, readdirSync as readdirSync12, rmSync as rmSync4, statSync as statSync8 } from "fs";
32249
32264
  import {
32250
32265
  basename as basename20,
32251
32266
  dirname as dirname35,
@@ -33390,28 +33405,76 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, clearDevSs
33390
33405
  const url = `${SRC_URL_PREFIX3}${rel}`;
33391
33406
  await warmCache2(url);
33392
33407
  return url;
33393
- }, getReactModuleUrl, resolveBroadcastTarget = async (primaryFile) => {
33394
- const isComponentFile2 = primaryFile.endsWith(".tsx") || primaryFile.endsWith(".jsx");
33395
- if (isComponentFile2)
33396
- return primaryFile;
33397
- const { findNearestComponent: findNearestComponent2 } = await Promise.resolve().then(() => (init_transformCache(), exports_transformCache));
33398
- const nearest = findNearestComponent2(resolvePath(primaryFile));
33399
- return nearest ?? primaryFile;
33408
+ }, getReactModuleUrl, isReactComponentPath = (file6) => file6.endsWith(".tsx") || file6.endsWith(".jsx"), isReactPagePath = (file6) => file6.replace(/\\/g, "/").includes("/pages/"), isImportableModule = (file6) => {
33409
+ try {
33410
+ return statSync8(file6).isFile();
33411
+ } catch {
33412
+ return false;
33413
+ }
33414
+ }, resolveComponentTarget = (file6, reactFiles, edited) => {
33415
+ if (isReactComponentPath(file6))
33416
+ return file6;
33417
+ const nearest = findNearestComponent(resolvePath(file6));
33418
+ if (nearest && isImportableModule(nearest))
33419
+ return nearest;
33420
+ const dependents = reactFiles.filter((candidate) => !edited.has(candidate) && isReactComponentPath(candidate) && isImportableModule(candidate));
33421
+ return dependents.find((candidate) => !isReactPagePath(candidate)) ?? dependents[0] ?? file6;
33422
+ }, resolveReactUpdateTargets = (state, reactFiles) => {
33423
+ const importable = reactFiles.filter(isImportableModule);
33424
+ const userEdited = importable.filter((file6) => state.lastUserEditedFiles?.has(resolvePath(file6)));
33425
+ const editedFiles = userEdited.length > 0 ? userEdited : importable;
33426
+ const edited = new Set(editedFiles);
33427
+ const ordered = [
33428
+ ...editedFiles.filter((file6) => !isReactPagePath(file6)),
33429
+ ...editedFiles.filter(isReactPagePath)
33430
+ ];
33431
+ const targets = ordered.map((file6) => resolveComponentTarget(file6, reactFiles, edited));
33432
+ return { editedFiles, targets: [...new Set(targets)] };
33433
+ }, resolveAffectedPageModules = async (reactFiles) => {
33434
+ const pages = reactFiles.filter((file6) => isReactPagePath(file6) && isReactComponentPath(file6) && isImportableModule(file6));
33435
+ const entries = await Promise.all(pages.map(async (page) => [
33436
+ `${basename20(page).replace(/\.[jt]sx$/, "")}Index`,
33437
+ await getReactModuleUrl(page)
33438
+ ]));
33439
+ return Object.fromEntries(entries);
33400
33440
  }, handleReactModuleServerPath = async (state, reactFiles, startTime, fastRefreshSupported, onRebuildComplete) => {
33401
- const primaryFile = reactFiles.find((file6) => !file6.replace(/\\/g, "/").includes("/pages/")) ?? reactFiles[0];
33402
- if (!primaryFile) {
33441
+ const { invalidateModule: invalidateModule2 } = await getModuleServer();
33442
+ for (const file6 of reactFiles) {
33443
+ invalidateModule2(file6);
33444
+ }
33445
+ const { editedFiles, targets } = resolveReactUpdateTargets(state, reactFiles);
33446
+ const [primaryTarget] = targets;
33447
+ if (!primaryTarget) {
33403
33448
  onRebuildComplete({
33404
33449
  hmrState: state,
33405
33450
  manifest: state.manifest
33406
33451
  });
33407
33452
  return state.manifest;
33408
33453
  }
33409
- const { invalidateModule: invalidateModule2 } = await getModuleServer();
33410
- for (const file6 of reactFiles) {
33411
- invalidateModule2(file6);
33454
+ const moduleUrls = await Promise.all(targets.map(getReactModuleUrl));
33455
+ await Promise.all(editedFiles.filter((file6) => !targets.includes(file6)).map(getReactModuleUrl));
33456
+ const { getTransformError: getTransformError2 } = await getModuleServer();
33457
+ const failed = [...new Set([...editedFiles, ...targets])].map((file6) => ({ error: getTransformError2(file6), file: file6 })).find((entry) => entry.error !== undefined);
33458
+ if (failed?.error) {
33459
+ broadcastToClients(state, {
33460
+ data: {
33461
+ affectedFrameworks: ["react"],
33462
+ column: failed.error.column,
33463
+ error: failed.error.message,
33464
+ file: failed.file,
33465
+ framework: "react",
33466
+ line: failed.error.line,
33467
+ lineText: failed.error.lineText
33468
+ },
33469
+ message: "React module failed to compile",
33470
+ type: "rebuild-error"
33471
+ });
33472
+ onRebuildComplete({ hmrState: state, manifest: state.manifest });
33473
+ return state.manifest;
33412
33474
  }
33413
- const broadcastTarget = await resolveBroadcastTarget(primaryFile);
33414
- const pageModuleUrl = await getReactModuleUrl(broadcastTarget);
33475
+ const pageModuleUrls = fastRefreshSupported ? undefined : await resolveAffectedPageModules(reactFiles);
33476
+ const [pageModuleUrl] = moduleUrls;
33477
+ const primaryFile = reactFiles.find((file6) => isImportableModule(file6) && !isReactPagePath(file6)) ?? primaryTarget;
33415
33478
  if (pageModuleUrl) {
33416
33479
  const serverDuration = Date.now() - startTime;
33417
33480
  state.lastHmrPath = relative23(process.cwd(), primaryFile).replace(/\\/g, "/");
@@ -33423,7 +33486,9 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, clearDevSs
33423
33486
  hasComponentChanges: true,
33424
33487
  hasCSSChanges: false,
33425
33488
  manifest: state.manifest,
33489
+ moduleUrls,
33426
33490
  pageModuleUrl,
33491
+ pageModuleUrls,
33427
33492
  primarySource: primaryFile,
33428
33493
  serverDuration,
33429
33494
  sourceFiles: reactFiles
@@ -35434,7 +35499,7 @@ __export(exports_devBuild, {
35434
35499
  devBuild: () => devBuild
35435
35500
  });
35436
35501
  import { readdir as readdir5 } from "fs/promises";
35437
- import { existsSync as existsSync47, statSync as statSync8 } from "fs";
35502
+ import { existsSync as existsSync47, statSync as statSync9 } from "fs";
35438
35503
  import { resolve as resolve53 } from "path";
35439
35504
  var FRAMEWORK_DIR_KEYS, devClientVendorSourceDir = () => resolve53(import.meta.dir, "../dev/client"), collectDepVendorSourceDirs = (config) => {
35440
35505
  const configuredDirs = [
@@ -35574,7 +35639,7 @@ var FRAMEWORK_DIR_KEYS, devClientVendorSourceDir = () => resolve53(import.meta.d
35574
35639
  });
35575
35640
  }
35576
35641
  }, handleCachedReload = async () => {
35577
- const serverMtime = statSync8(resolve53(Bun.main)).mtimeMs;
35642
+ const serverMtime = statSync9(resolve53(Bun.main)).mtimeMs;
35578
35643
  const lastMtime = globalThis.__hmrServerMtime;
35579
35644
  globalThis.__hmrServerMtime = serverMtime;
35580
35645
  const cached = globalThis.__hmrDevResult;
@@ -35955,7 +36020,7 @@ var FRAMEWORK_DIR_KEYS, devClientVendorSourceDir = () => resolve53(import.meta.d
35955
36020
  manifest
35956
36021
  };
35957
36022
  globalThis.__hmrDevResult = result;
35958
- globalThis.__hmrServerMtime = statSync8(resolve53(Bun.main)).mtimeMs;
36023
+ globalThis.__hmrServerMtime = statSync9(resolve53(Bun.main)).mtimeMs;
35959
36024
  return result;
35960
36025
  };
35961
36026
  var init_devBuild = __esm(() => {
@@ -38098,7 +38163,7 @@ import {
38098
38163
  existsSync as existsSync52,
38099
38164
  readdirSync as readdirSync16,
38100
38165
  readFileSync as readFileSync45,
38101
- statSync as statSync9,
38166
+ statSync as statSync10,
38102
38167
  watch as watch2
38103
38168
  } from "fs";
38104
38169
  import { createHash as createHash13 } from "crypto";
@@ -38257,7 +38322,7 @@ var ATOMIC_RECOVERY_WINDOW_MS = 1000, RELOAD_DEBOUNCE_MS = 80, ENTRY_IMPORT_RETR
38257
38322
  continue;
38258
38323
  let st2;
38259
38324
  try {
38260
- st2 = statSync9(join67(dir, entry.name));
38325
+ st2 = statSync10(join67(dir, entry.name));
38261
38326
  } catch {
38262
38327
  continue;
38263
38328
  }
@@ -45713,5 +45778,5 @@ export {
45713
45778
  wrapPageHandlerWithStreamingSlots
45714
45779
  };
45715
45780
 
45716
- //# debugId=3A630DBA79A9DB3064756E2164756E21
45781
+ //# debugId=B86705ABD58A04A464756E2164756E21
45717
45782
  //# sourceMappingURL=index.js.map