@absolutejs/absolute 0.20.0-beta.126 → 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.
- package/CHANGELOG.md +18 -0
- package/README.md +19 -0
- package/changelog.json +36 -0
- package/dist/angular/components/core/streamingSlotRegistrar.js +1 -1
- package/dist/angular/components/core/streamingSlotRegistry.js +2 -2
- package/dist/angular/index.js +88 -35
- package/dist/angular/index.js.map +8 -7
- package/dist/angular/server.js +88 -35
- package/dist/angular/server.js.map +8 -7
- package/dist/build/buildWorker.js +9 -3
- package/dist/build.js +342 -263
- package/dist/build.js.map +14 -12
- package/dist/cli/{compile-smcnjyhb.js → compile-0epdbdcx.js} +1 -1
- package/dist/cli/config/server.js +91 -52
- package/dist/cli/{index-9q8yn5ax.js → index-54q7pxcx.js} +1 -0
- package/dist/cli/{index-fx42yxhy.js → index-79ppyst7.js} +1 -1
- package/dist/cli/index.js +4 -4
- package/dist/cli/{mobile-50c5tahh.js → mobile-49hyrgrj.js} +1 -1
- package/dist/cli/{prerender-vvrj9vjg.js → prerender-yex2zwj3.js} +1 -1
- package/dist/cli/{start-pdacfgcc.js → start-m0p0qbep.js} +1 -1
- package/dist/index.js +362 -279
- package/dist/index.js.map +17 -14
- package/dist/islands/index.js +10 -4
- package/dist/islands/index.js.map +5 -4
- package/dist/mobile/remoteMacAgentEntry.js +1 -1
- package/dist/react/index.js +114 -61
- package/dist/react/index.js.map +8 -7
- package/dist/react/server.js +105 -58
- package/dist/react/server.js.map +6 -6
- package/dist/src/core/requestContext.d.ts +5 -10
- package/dist/src/dev/restartScope.d.ts +1 -0
- package/dist/src/utils/index.d.ts +1 -0
- package/dist/src/utils/isFile.d.ts +4 -0
- package/dist/src/utils/isPrerendering.d.ts +5 -0
- package/dist/src/utils/ssrErrorPage.d.ts +3 -0
- package/dist/svelte/index.js +114 -61
- package/dist/svelte/index.js.map +8 -7
- package/dist/svelte/server.js +105 -58
- package/dist/svelte/server.js.map +6 -6
- package/dist/vue/index.js +114 -61
- package/dist/vue/index.js.map +8 -7
- package/dist/vue/server.js +105 -58
- package/dist/vue/server.js.map +6 -6
- package/package.json +2 -2
package/dist/react/server.js
CHANGED
|
@@ -374,7 +374,96 @@ var init_devRouteRegistrationCallsite = __esm(() => {
|
|
|
374
374
|
pageHandlerWrappers = new WeakMap;
|
|
375
375
|
});
|
|
376
376
|
|
|
377
|
+
// src/utils/ssrErrorPage.ts
|
|
378
|
+
var exports_ssrErrorPage = {};
|
|
379
|
+
__export(exports_ssrErrorPage, {
|
|
380
|
+
buildErrorPage: () => buildErrorPage,
|
|
381
|
+
ssrErrorPage: () => ssrErrorPage
|
|
382
|
+
});
|
|
383
|
+
var errorPageHtml = ({
|
|
384
|
+
framework,
|
|
385
|
+
hint,
|
|
386
|
+
kind,
|
|
387
|
+
message,
|
|
388
|
+
script = ""
|
|
389
|
+
}) => {
|
|
390
|
+
const frameworkColors = {
|
|
391
|
+
angular: "#dd0031",
|
|
392
|
+
html: "#e34c26",
|
|
393
|
+
htmx: "#1a365d",
|
|
394
|
+
react: "#61dafb",
|
|
395
|
+
svelte: "#ff3e00",
|
|
396
|
+
vue: "#42b883"
|
|
397
|
+
};
|
|
398
|
+
const accent = frameworkColors[framework] ?? "#94a3b8";
|
|
399
|
+
const label = framework.charAt(0).toUpperCase() + framework.slice(1);
|
|
400
|
+
return `<!DOCTYPE html>
|
|
401
|
+
<html>
|
|
402
|
+
<head>
|
|
403
|
+
<meta charset="utf-8">
|
|
404
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
405
|
+
<title>SSR Error - AbsoluteJS</title>
|
|
406
|
+
<style>
|
|
407
|
+
*{margin:0;padding:0;box-sizing:border-box}
|
|
408
|
+
body{min-height:100vh;background:linear-gradient(135deg,rgba(15,23,42,0.98) 0%,rgba(30,41,59,0.98) 100%);color:#e2e8f0;font-family:"JetBrains Mono","Fira Code",ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:14px;line-height:1.6;display:flex;align-items:flex-start;justify-content:center;padding:32px}
|
|
409
|
+
.card{max-width:720px;width:100%;background:rgba(30,41,59,0.6);border:1px solid rgba(71,85,105,0.5);border-radius:16px;box-shadow:0 25px 50px -12px rgba(0,0,0,0.5),0 0 0 1px rgba(255,255,255,0.05);overflow:hidden}
|
|
410
|
+
.header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 24px;background:rgba(15,23,42,0.5);border-bottom:1px solid rgba(71,85,105,0.4)}
|
|
411
|
+
.brand{font-weight:700;font-size:20px;color:#fff;letter-spacing:-0.02em}
|
|
412
|
+
.badge{padding:5px 10px;border-radius:8px;font-size:12px;font-weight:600;background:${accent};color:#fff;opacity:0.95;box-shadow:0 2px 4px rgba(0,0,0,0.2)}
|
|
413
|
+
.kind{color:#94a3b8;font-size:13px;font-weight:500}
|
|
414
|
+
.content{padding:24px}
|
|
415
|
+
.label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.08em;color:#94a3b8;margin-bottom:8px}
|
|
416
|
+
.message{margin:0;padding:16px 20px;background:rgba(239,68,68,0.12);border:1px solid rgba(239,68,68,0.25);border-radius:10px;overflow-x:auto;white-space:pre-wrap;word-break:break-word;color:#fca5a5;font-size:13px;line-height:1.5}
|
|
417
|
+
.hint{margin-top:20px;padding:12px 20px;background:rgba(71,85,105,0.3);border-radius:10px;border:1px solid rgba(71,85,105,0.4);color:#cbd5e1;font-size:13px}
|
|
418
|
+
</style>
|
|
419
|
+
</head>
|
|
420
|
+
<body>
|
|
421
|
+
<div class="card">
|
|
422
|
+
<div class="header">
|
|
423
|
+
<div style="display:flex;align-items:center;gap:12px">
|
|
424
|
+
<span class="brand">AbsoluteJS</span>
|
|
425
|
+
<span class="badge">${label}</span>
|
|
426
|
+
</div>
|
|
427
|
+
<span class="kind">${kind}</span>
|
|
428
|
+
</div>
|
|
429
|
+
<div class="content">
|
|
430
|
+
<div class="label">What went wrong</div>
|
|
431
|
+
<pre class="message">${message.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">")}</pre>
|
|
432
|
+
<div class="hint">${hint}</div>
|
|
433
|
+
</div>
|
|
434
|
+
</div>
|
|
435
|
+
${script}
|
|
436
|
+
</body>
|
|
437
|
+
</html>`;
|
|
438
|
+
}, 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({
|
|
439
|
+
framework,
|
|
440
|
+
hint: "Fix the file and save. This page reloads by itself when the build succeeds.",
|
|
441
|
+
kind: "Build Error",
|
|
442
|
+
message: `${pageName || "This page"} could not be built.
|
|
443
|
+
|
|
444
|
+
${error ?? "The dev-server terminal has the build output."}`,
|
|
445
|
+
script: RELOAD_ON_REBUILD
|
|
446
|
+
}), ssrErrorPage = (framework, error) => errorPageHtml({
|
|
447
|
+
framework,
|
|
448
|
+
hint: "A component threw during server-side rendering. Check the terminal for the full stack trace.",
|
|
449
|
+
kind: "Server Render Error",
|
|
450
|
+
message: error instanceof Error ? error.message : String(error)
|
|
451
|
+
});
|
|
452
|
+
|
|
377
453
|
// src/core/requestContext.ts
|
|
454
|
+
var exports_requestContext = {};
|
|
455
|
+
__export(exports_requestContext, {
|
|
456
|
+
absoluteRequestContext: () => absoluteRequestContext,
|
|
457
|
+
devBuildErrorResponse: () => devBuildErrorResponse,
|
|
458
|
+
getCurrentAbsoluteRequest: () => getCurrentAbsoluteRequest,
|
|
459
|
+
getDevPageWarmer: () => getDevPageWarmer,
|
|
460
|
+
getMissingAssets: () => getMissingAssets,
|
|
461
|
+
recordMissingAsset: () => recordMissingAsset,
|
|
462
|
+
resolveDeferredPageAssets: () => resolveDeferredPageAssets,
|
|
463
|
+
runWithAbsoluteRequest: () => runWithAbsoluteRequest,
|
|
464
|
+
setDevPageWarmer: () => setDevPageWarmer,
|
|
465
|
+
withDeferredStylesheets: () => withDeferredStylesheets
|
|
466
|
+
});
|
|
378
467
|
import { AsyncLocalStorage as AsyncLocalStorage2 } from "async_hooks";
|
|
379
468
|
import { Elysia as Elysia2 } from "elysia";
|
|
380
469
|
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 = () => {
|
|
@@ -387,7 +476,17 @@ var REQUEST_STORAGE_KEY, PAGE_WARMER_KEY, isAbsoluteRequestStorage = (value) =>
|
|
|
387
476
|
const storage = new AsyncLocalStorage2;
|
|
388
477
|
Reflect.set(globalThis, REQUEST_STORAGE_KEY, storage);
|
|
389
478
|
return storage;
|
|
390
|
-
}, 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",
|
|
479
|
+
}, 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) => {
|
|
480
|
+
if (!assets?.failed)
|
|
481
|
+
return null;
|
|
482
|
+
return new Response(buildErrorPage(framework, assets.name, assets.error), {
|
|
483
|
+
headers: {
|
|
484
|
+
"cache-control": "no-store",
|
|
485
|
+
"content-type": "text/html; charset=utf-8"
|
|
486
|
+
},
|
|
487
|
+
status: 500
|
|
488
|
+
});
|
|
489
|
+
}, getDevPageWarmer = () => {
|
|
391
490
|
const value = Reflect.get(globalThis, PAGE_WARMER_KEY);
|
|
392
491
|
return isDevPageWarmer(value) ? value : undefined;
|
|
393
492
|
}, getMissingAssets = () => {
|
|
@@ -417,6 +516,7 @@ var REQUEST_STORAGE_KEY, PAGE_WARMER_KEY, isAbsoluteRequestStorage = (value) =>
|
|
|
417
516
|
const cssHrefs = () => cssKeys.map(lookup).filter((href) => href.length > 0 && href.startsWith("/"));
|
|
418
517
|
const assets = {
|
|
419
518
|
cssHrefs,
|
|
519
|
+
error: failed ? warmer.lastError?.() : undefined,
|
|
420
520
|
failed,
|
|
421
521
|
lookup,
|
|
422
522
|
name: described.name
|
|
@@ -1694,62 +1794,6 @@ var init_logger = __esm(() => {
|
|
|
1694
1794
|
};
|
|
1695
1795
|
});
|
|
1696
1796
|
|
|
1697
|
-
// src/utils/ssrErrorPage.ts
|
|
1698
|
-
var exports_ssrErrorPage = {};
|
|
1699
|
-
__export(exports_ssrErrorPage, {
|
|
1700
|
-
ssrErrorPage: () => ssrErrorPage
|
|
1701
|
-
});
|
|
1702
|
-
var ssrErrorPage = (framework, error) => {
|
|
1703
|
-
const frameworkColors2 = {
|
|
1704
|
-
angular: "#dd0031",
|
|
1705
|
-
html: "#e34c26",
|
|
1706
|
-
htmx: "#1a365d",
|
|
1707
|
-
react: "#61dafb",
|
|
1708
|
-
svelte: "#ff3e00",
|
|
1709
|
-
vue: "#42b883"
|
|
1710
|
-
};
|
|
1711
|
-
const accent = frameworkColors2[framework] ?? "#94a3b8";
|
|
1712
|
-
const label = framework.charAt(0).toUpperCase() + framework.slice(1);
|
|
1713
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
1714
|
-
return `<!DOCTYPE html>
|
|
1715
|
-
<html>
|
|
1716
|
-
<head>
|
|
1717
|
-
<meta charset="utf-8">
|
|
1718
|
-
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
1719
|
-
<title>SSR Error - AbsoluteJS</title>
|
|
1720
|
-
<style>
|
|
1721
|
-
*{margin:0;padding:0;box-sizing:border-box}
|
|
1722
|
-
body{min-height:100vh;background:linear-gradient(135deg,rgba(15,23,42,0.98) 0%,rgba(30,41,59,0.98) 100%);color:#e2e8f0;font-family:"JetBrains Mono","Fira Code",ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:14px;line-height:1.6;display:flex;align-items:flex-start;justify-content:center;padding:32px}
|
|
1723
|
-
.card{max-width:720px;width:100%;background:rgba(30,41,59,0.6);border:1px solid rgba(71,85,105,0.5);border-radius:16px;box-shadow:0 25px 50px -12px rgba(0,0,0,0.5),0 0 0 1px rgba(255,255,255,0.05);overflow:hidden}
|
|
1724
|
-
.header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 24px;background:rgba(15,23,42,0.5);border-bottom:1px solid rgba(71,85,105,0.4)}
|
|
1725
|
-
.brand{font-weight:700;font-size:20px;color:#fff;letter-spacing:-0.02em}
|
|
1726
|
-
.badge{padding:5px 10px;border-radius:8px;font-size:12px;font-weight:600;background:${accent};color:#fff;opacity:0.95;box-shadow:0 2px 4px rgba(0,0,0,0.2)}
|
|
1727
|
-
.kind{color:#94a3b8;font-size:13px;font-weight:500}
|
|
1728
|
-
.content{padding:24px}
|
|
1729
|
-
.label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.08em;color:#94a3b8;margin-bottom:8px}
|
|
1730
|
-
.message{margin:0;padding:16px 20px;background:rgba(239,68,68,0.12);border:1px solid rgba(239,68,68,0.25);border-radius:10px;overflow-x:auto;white-space:pre-wrap;word-break:break-word;color:#fca5a5;font-size:13px;line-height:1.5}
|
|
1731
|
-
.hint{margin-top:20px;padding:12px 20px;background:rgba(71,85,105,0.3);border-radius:10px;border:1px solid rgba(71,85,105,0.4);color:#cbd5e1;font-size:13px}
|
|
1732
|
-
</style>
|
|
1733
|
-
</head>
|
|
1734
|
-
<body>
|
|
1735
|
-
<div class="card">
|
|
1736
|
-
<div class="header">
|
|
1737
|
-
<div style="display:flex;align-items:center;gap:12px">
|
|
1738
|
-
<span class="brand">AbsoluteJS</span>
|
|
1739
|
-
<span class="badge">${label}</span>
|
|
1740
|
-
</div>
|
|
1741
|
-
<span class="kind">Server Render Error</span>
|
|
1742
|
-
</div>
|
|
1743
|
-
<div class="content">
|
|
1744
|
-
<div class="label">What went wrong</div>
|
|
1745
|
-
<pre class="message">${message.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">")}</pre>
|
|
1746
|
-
<div class="hint">A component threw during server-side rendering. Check the terminal for the full stack trace.</div>
|
|
1747
|
-
</div>
|
|
1748
|
-
</div>
|
|
1749
|
-
</body>
|
|
1750
|
-
</html>`;
|
|
1751
|
-
};
|
|
1752
|
-
|
|
1753
1797
|
// src/utils/stringModifiers.ts
|
|
1754
1798
|
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) => {
|
|
1755
1799
|
if (!str.includes("-") && !str.includes("_")) {
|
|
@@ -2367,6 +2411,9 @@ var buildRefreshSetup = () => {
|
|
|
2367
2411
|
var handleReactPageRequest = async (input) => {
|
|
2368
2412
|
const { Page } = input;
|
|
2369
2413
|
const deferredAssets = input.index === "" ? await resolveDeferredPageAssets() : null;
|
|
2414
|
+
const buildFailure = devBuildErrorResponse("react", deferredAssets);
|
|
2415
|
+
if (buildFailure)
|
|
2416
|
+
return buildFailure;
|
|
2370
2417
|
const resolvedIndex = deferredAssets && input.index === "" ? deferredAssets.lookup(`${deferredAssets.name}Index`) : input.index;
|
|
2371
2418
|
const options = input;
|
|
2372
2419
|
const userProps = input.props;
|
|
@@ -2448,5 +2495,5 @@ export {
|
|
|
2448
2495
|
handleReactPageRequest
|
|
2449
2496
|
};
|
|
2450
2497
|
|
|
2451
|
-
//# debugId=
|
|
2498
|
+
//# debugId=62164936DE45DA6264756E2164756E21
|
|
2452
2499
|
//# sourceMappingURL=server.js.map
|