@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.
- package/CHANGELOG.md +9 -0
- package/changelog.json +20 -0
- package/dist/angular/components/core/streamingSlotRegistrar.js +1 -1
- package/dist/angular/components/core/streamingSlotRegistry.js +2 -2
- package/dist/angular/index.js +54 -7
- package/dist/angular/index.js.map +5 -5
- package/dist/angular/server.js +54 -7
- package/dist/angular/server.js.map +5 -5
- package/dist/build.js +134 -64
- package/dist/build.js.map +10 -9
- package/dist/cli/config/server.js +91 -52
- package/dist/index.js +135 -64
- package/dist/index.js.map +10 -9
- package/dist/react/index.js +105 -58
- package/dist/react/index.js.map +6 -6
- 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/ssrErrorPage.d.ts +3 -0
- package/dist/svelte/index.js +105 -58
- package/dist/svelte/index.js.map +6 -6
- package/dist/svelte/server.js +105 -58
- package/dist/svelte/server.js.map +6 -6
- package/dist/vue/index.js +105 -58
- package/dist/vue/index.js.map +6 -6
- package/dist/vue/server.js +105 -58
- package/dist/vue/server.js.map +6 -6
- package/package.json +1 -1
package/dist/react/index.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("_")) {
|
|
@@ -4804,6 +4848,9 @@ var buildRefreshSetup = () => {
|
|
|
4804
4848
|
var handleReactPageRequest = async (input) => {
|
|
4805
4849
|
const { Page } = input;
|
|
4806
4850
|
const deferredAssets = input.index === "" ? await resolveDeferredPageAssets() : null;
|
|
4851
|
+
const buildFailure = devBuildErrorResponse("react", deferredAssets);
|
|
4852
|
+
if (buildFailure)
|
|
4853
|
+
return buildFailure;
|
|
4807
4854
|
const resolvedIndex = deferredAssets && input.index === "" ? deferredAssets.lookup(`${deferredAssets.name}Index`) : input.index;
|
|
4808
4855
|
const options = input;
|
|
4809
4856
|
const userProps = input.props;
|
|
@@ -5029,5 +5076,5 @@ export {
|
|
|
5029
5076
|
useIslandStore
|
|
5030
5077
|
};
|
|
5031
5078
|
|
|
5032
|
-
//# debugId=
|
|
5079
|
+
//# debugId=9893AAB6846669EF64756E2164756E21
|
|
5033
5080
|
//# sourceMappingURL=index.js.map
|