@absolutejs/absolute 0.20.0-beta.127 → 0.20.0-beta.128

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.
@@ -371,9 +371,16 @@ var init_inlinePageCss = __esm(() => {
371
371
  // src/utils/ssrErrorPage.ts
372
372
  var exports_ssrErrorPage = {};
373
373
  __export(exports_ssrErrorPage, {
374
+ buildErrorPage: () => buildErrorPage,
374
375
  ssrErrorPage: () => ssrErrorPage
375
376
  });
376
- var ssrErrorPage = (framework, error) => {
377
+ var errorPageHtml = ({
378
+ framework,
379
+ hint,
380
+ kind,
381
+ message,
382
+ script = ""
383
+ }) => {
377
384
  const frameworkColors = {
378
385
  angular: "#dd0031",
379
386
  html: "#e34c26",
@@ -384,7 +391,6 @@ var ssrErrorPage = (framework, error) => {
384
391
  };
385
392
  const accent = frameworkColors[framework] ?? "#94a3b8";
386
393
  const label = framework.charAt(0).toUpperCase() + framework.slice(1);
387
- const message = error instanceof Error ? error.message : String(error);
388
394
  return `<!DOCTYPE html>
389
395
  <html>
390
396
  <head>
@@ -412,17 +418,31 @@ body{min-height:100vh;background:linear-gradient(135deg,rgba(15,23,42,0.98) 0%,r
412
418
  <span class="brand">AbsoluteJS</span>
413
419
  <span class="badge">${label}</span>
414
420
  </div>
415
- <span class="kind">Server Render Error</span>
421
+ <span class="kind">${kind}</span>
416
422
  </div>
417
423
  <div class="content">
418
424
  <div class="label">What went wrong</div>
419
425
  <pre class="message">${message.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;")}</pre>
420
- <div class="hint">A component threw during server-side rendering. Check the terminal for the full stack trace.</div>
426
+ <div class="hint">${hint}</div>
421
427
  </div>
422
428
  </div>
429
+ ${script}
423
430
  </body>
424
431
  </html>`;
425
- };
432
+ }, RELOAD_ON_REBUILD = `<script>(()=>{const url=(location.protocol==='https:'?'wss://':'ws://')+location.host+'/hmr';let seen=false;const connect=()=>{const socket=new WebSocket(url);socket.onopen=()=>{if(seen)location.reload();seen=true;};socket.onmessage=(event)=>{try{const message=JSON.parse(event.data);const type=message&&typeof message.type==='string'?message.type:'';if(type==='rebuild-complete'||type==='server-entry-reloaded'||type.endsWith('-update'))location.reload();}catch{}};socket.onclose=()=>setTimeout(connect,500);};connect();})();</script>`, buildErrorPage = (framework, pageName, error) => errorPageHtml({
433
+ framework,
434
+ hint: "Fix the file and save. This page reloads by itself when the build succeeds.",
435
+ kind: "Build Error",
436
+ message: `${pageName || "This page"} could not be built.
437
+
438
+ ${error ?? "The dev-server terminal has the build output."}`,
439
+ script: RELOAD_ON_REBUILD
440
+ }), ssrErrorPage = (framework, error) => errorPageHtml({
441
+ framework,
442
+ hint: "A component threw during server-side rendering. Check the terminal for the full stack trace.",
443
+ kind: "Server Render Error",
444
+ message: error instanceof Error ? error.message : String(error)
445
+ });
426
446
 
427
447
  // src/utils/stringModifiers.ts
428
448
  var normalizeSlug = (str) => str.trim().replace(/\s+/g, "-").replace(/[^A-Za-z0-9\-_]+/g, "").replace(/[-_]{2,}/g, "-"), toKebab = (str) => normalizeSlug(str).replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), toPascal = (str) => {
@@ -3327,6 +3347,19 @@ var init_devRouteRegistrationCallsite = __esm(() => {
3327
3347
  });
3328
3348
 
3329
3349
  // src/core/requestContext.ts
3350
+ var exports_requestContext = {};
3351
+ __export(exports_requestContext, {
3352
+ absoluteRequestContext: () => absoluteRequestContext,
3353
+ devBuildErrorResponse: () => devBuildErrorResponse,
3354
+ getCurrentAbsoluteRequest: () => getCurrentAbsoluteRequest,
3355
+ getDevPageWarmer: () => getDevPageWarmer,
3356
+ getMissingAssets: () => getMissingAssets,
3357
+ recordMissingAsset: () => recordMissingAsset,
3358
+ resolveDeferredPageAssets: () => resolveDeferredPageAssets,
3359
+ runWithAbsoluteRequest: () => runWithAbsoluteRequest,
3360
+ setDevPageWarmer: () => setDevPageWarmer,
3361
+ withDeferredStylesheets: () => withDeferredStylesheets
3362
+ });
3330
3363
  import { AsyncLocalStorage as AsyncLocalStorage2 } from "async_hooks";
3331
3364
  import { Elysia as Elysia2 } from "elysia";
3332
3365
  var REQUEST_STORAGE_KEY, PAGE_WARMER_KEY, isAbsoluteRequestStorage = (value) => typeof value === "object" && value !== null && ("getStore" in value) && typeof value.getStore === "function" && ("run" in value) && typeof value.run === "function", getRequestStorage = () => {
@@ -3339,7 +3372,17 @@ var REQUEST_STORAGE_KEY, PAGE_WARMER_KEY, isAbsoluteRequestStorage = (value) =>
3339
3372
  const storage = new AsyncLocalStorage2;
3340
3373
  Reflect.set(globalThis, REQUEST_STORAGE_KEY, storage);
3341
3374
  return storage;
3342
- }, absoluteRequestContext, getCurrentAbsoluteRequest = () => getRequestStorage()?.getStore()?.request, runWithAbsoluteRequest = (request, callback) => ensureRequestStorage().run({ request }, callback), CSS_KEY_RE, isDevPageWarmer = (value) => typeof value === "object" && value !== null && ("describe" in value) && typeof value.describe === "function" && ("warm" in value) && typeof value.warm === "function" && ("lookup" in value) && typeof value.lookup === "function", getDevPageWarmer = () => {
3375
+ }, absoluteRequestContext, getCurrentAbsoluteRequest = () => getRequestStorage()?.getStore()?.request, runWithAbsoluteRequest = (request, callback) => ensureRequestStorage().run({ request }, callback), CSS_KEY_RE, isDevPageWarmer = (value) => typeof value === "object" && value !== null && ("describe" in value) && typeof value.describe === "function" && ("warm" in value) && typeof value.warm === "function" && ("lookup" in value) && typeof value.lookup === "function", devBuildErrorResponse = (framework, assets) => {
3376
+ if (!assets?.failed)
3377
+ return null;
3378
+ return new Response(buildErrorPage(framework, assets.name, assets.error), {
3379
+ headers: {
3380
+ "cache-control": "no-store",
3381
+ "content-type": "text/html; charset=utf-8"
3382
+ },
3383
+ status: 500
3384
+ });
3385
+ }, getDevPageWarmer = () => {
3343
3386
  const value = Reflect.get(globalThis, PAGE_WARMER_KEY);
3344
3387
  return isDevPageWarmer(value) ? value : undefined;
3345
3388
  }, getMissingAssets = () => {
@@ -3369,6 +3412,7 @@ var REQUEST_STORAGE_KEY, PAGE_WARMER_KEY, isAbsoluteRequestStorage = (value) =>
3369
3412
  const cssHrefs = () => cssKeys.map(lookup).filter((href) => href.length > 0 && href.startsWith("/"));
3370
3413
  const assets = {
3371
3414
  cssHrefs,
3415
+ error: failed ? warmer.lastError?.() : undefined,
3372
3416
  failed,
3373
3417
  lookup,
3374
3418
  name: described.name
@@ -7198,6 +7242,9 @@ var handleAngularPageRequest = async (input) => {
7198
7242
  const requestId = `angular_${Date.now()}_${Math.random().toString(BASE_36_RADIX).substring(2, RANDOM_ID_END_INDEX)}`;
7199
7243
  const request = input.request ?? getCurrentAbsoluteRequest();
7200
7244
  const deferredAssets = input.pagePath === "" || input.indexPath === "" ? await resolveDeferredPageAssets() : null;
7245
+ const buildFailure = devBuildErrorResponse("angular", deferredAssets);
7246
+ if (buildFailure)
7247
+ return buildFailure;
7201
7248
  const deferredPagePath = deferredAssets && input.pagePath === "" ? deferredAssets.lookup(deferredAssets.name) : input.pagePath;
7202
7249
  const deferredIndexPath = deferredAssets && input.indexPath === "" ? deferredAssets.lookup(`${deferredAssets.name}Index`) : input.indexPath;
7203
7250
  const pageName = deferredAssets?.name ?? derivePageName(deferredPagePath);
@@ -7325,5 +7372,5 @@ export {
7325
7372
  withPendingTask
7326
7373
  };
7327
7374
 
7328
- //# debugId=A594F494E6F4308F64756E2164756E21
7375
+ //# debugId=FA925CD22D8D7B2864756E2164756E21
7329
7376
  //# sourceMappingURL=server.js.map