@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
|
@@ -37384,6 +37384,82 @@ var getCurrentRouteRegistrationCallsite = () => getRouteCallsiteStorage()?.getSt
|
|
|
37384
37384
|
// src/core/requestContext.ts
|
|
37385
37385
|
import { AsyncLocalStorage } from "async_hooks";
|
|
37386
37386
|
import { Elysia as Elysia2 } from "elysia";
|
|
37387
|
+
|
|
37388
|
+
// src/utils/ssrErrorPage.ts
|
|
37389
|
+
var errorPageHtml = ({
|
|
37390
|
+
framework,
|
|
37391
|
+
hint,
|
|
37392
|
+
kind,
|
|
37393
|
+
message,
|
|
37394
|
+
script = ""
|
|
37395
|
+
}) => {
|
|
37396
|
+
const frameworkColors = {
|
|
37397
|
+
angular: "#dd0031",
|
|
37398
|
+
html: "#e34c26",
|
|
37399
|
+
htmx: "#1a365d",
|
|
37400
|
+
react: "#61dafb",
|
|
37401
|
+
svelte: "#ff3e00",
|
|
37402
|
+
vue: "#42b883"
|
|
37403
|
+
};
|
|
37404
|
+
const accent = frameworkColors[framework] ?? "#94a3b8";
|
|
37405
|
+
const label = framework.charAt(0).toUpperCase() + framework.slice(1);
|
|
37406
|
+
return `<!DOCTYPE html>
|
|
37407
|
+
<html>
|
|
37408
|
+
<head>
|
|
37409
|
+
<meta charset="utf-8">
|
|
37410
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
37411
|
+
<title>SSR Error - AbsoluteJS</title>
|
|
37412
|
+
<style>
|
|
37413
|
+
*{margin:0;padding:0;box-sizing:border-box}
|
|
37414
|
+
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}
|
|
37415
|
+
.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}
|
|
37416
|
+
.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)}
|
|
37417
|
+
.brand{font-weight:700;font-size:20px;color:#fff;letter-spacing:-0.02em}
|
|
37418
|
+
.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)}
|
|
37419
|
+
.kind{color:#94a3b8;font-size:13px;font-weight:500}
|
|
37420
|
+
.content{padding:24px}
|
|
37421
|
+
.label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.08em;color:#94a3b8;margin-bottom:8px}
|
|
37422
|
+
.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}
|
|
37423
|
+
.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}
|
|
37424
|
+
</style>
|
|
37425
|
+
</head>
|
|
37426
|
+
<body>
|
|
37427
|
+
<div class="card">
|
|
37428
|
+
<div class="header">
|
|
37429
|
+
<div style="display:flex;align-items:center;gap:12px">
|
|
37430
|
+
<span class="brand">AbsoluteJS</span>
|
|
37431
|
+
<span class="badge">${label}</span>
|
|
37432
|
+
</div>
|
|
37433
|
+
<span class="kind">${kind}</span>
|
|
37434
|
+
</div>
|
|
37435
|
+
<div class="content">
|
|
37436
|
+
<div class="label">What went wrong</div>
|
|
37437
|
+
<pre class="message">${message.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">")}</pre>
|
|
37438
|
+
<div class="hint">${hint}</div>
|
|
37439
|
+
</div>
|
|
37440
|
+
</div>
|
|
37441
|
+
${script}
|
|
37442
|
+
</body>
|
|
37443
|
+
</html>`;
|
|
37444
|
+
};
|
|
37445
|
+
var 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>`;
|
|
37446
|
+
var buildErrorPage = (framework, pageName, error) => errorPageHtml({
|
|
37447
|
+
framework,
|
|
37448
|
+
hint: "Fix the file and save. This page reloads by itself when the build succeeds.",
|
|
37449
|
+
kind: "Build Error",
|
|
37450
|
+
message: `${pageName || "This page"} could not be built.
|
|
37451
|
+
|
|
37452
|
+
${error ?? "The dev-server terminal has the build output."}`,
|
|
37453
|
+
script: RELOAD_ON_REBUILD
|
|
37454
|
+
});
|
|
37455
|
+
var ssrErrorPage = (framework, error) => errorPageHtml({
|
|
37456
|
+
framework,
|
|
37457
|
+
hint: "A component threw during server-side rendering. Check the terminal for the full stack trace.",
|
|
37458
|
+
kind: "Server Render Error",
|
|
37459
|
+
message: error instanceof Error ? error.message : String(error)
|
|
37460
|
+
});
|
|
37461
|
+
|
|
37462
|
+
// src/core/requestContext.ts
|
|
37387
37463
|
var REQUEST_STORAGE_KEY = Symbol.for("absolutejs.requestAsyncLocalStorage");
|
|
37388
37464
|
var PAGE_WARMER_KEY = Symbol.for("absolutejs.devPageWarmer");
|
|
37389
37465
|
var isAbsoluteRequestStorage = (value) => typeof value === "object" && value !== null && ("getStore" in value) && typeof value.getStore === "function" && ("run" in value) && typeof value.run === "function";
|
|
@@ -37407,6 +37483,17 @@ var absoluteRequestContext = new Elysia2({
|
|
|
37407
37483
|
var getCurrentAbsoluteRequest = () => getRequestStorage()?.getStore()?.request;
|
|
37408
37484
|
var CSS_KEY_RE = /(?:CSS|Css)$/;
|
|
37409
37485
|
var 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";
|
|
37486
|
+
var devBuildErrorResponse = (framework, assets) => {
|
|
37487
|
+
if (!assets?.failed)
|
|
37488
|
+
return null;
|
|
37489
|
+
return new Response(buildErrorPage(framework, assets.name, assets.error), {
|
|
37490
|
+
headers: {
|
|
37491
|
+
"cache-control": "no-store",
|
|
37492
|
+
"content-type": "text/html; charset=utf-8"
|
|
37493
|
+
},
|
|
37494
|
+
status: 500
|
|
37495
|
+
});
|
|
37496
|
+
};
|
|
37410
37497
|
var getDevPageWarmer = () => {
|
|
37411
37498
|
const value = Reflect.get(globalThis, PAGE_WARMER_KEY);
|
|
37412
37499
|
return isDevPageWarmer(value) ? value : undefined;
|
|
@@ -37433,6 +37520,7 @@ var resolveDeferredPageAssets = async () => {
|
|
|
37433
37520
|
const cssHrefs = () => cssKeys.map(lookup).filter((href) => href.length > 0 && href.startsWith("/"));
|
|
37434
37521
|
const assets = {
|
|
37435
37522
|
cssHrefs,
|
|
37523
|
+
error: failed ? warmer.lastError?.() : undefined,
|
|
37436
37524
|
failed,
|
|
37437
37525
|
lookup,
|
|
37438
37526
|
name: described.name
|
|
@@ -38791,58 +38879,6 @@ var captureStreamingSlotWarningCallsite = () => {
|
|
|
38791
38879
|
};
|
|
38792
38880
|
var runWithStreamingSlotWarningScope = (task, metadata) => ensureWarningStorage().run({ handlerCallsite: metadata?.handlerCallsite, hasWarned: false }, task);
|
|
38793
38881
|
|
|
38794
|
-
// src/utils/ssrErrorPage.ts
|
|
38795
|
-
var ssrErrorPage = (framework, error) => {
|
|
38796
|
-
const frameworkColors2 = {
|
|
38797
|
-
angular: "#dd0031",
|
|
38798
|
-
html: "#e34c26",
|
|
38799
|
-
htmx: "#1a365d",
|
|
38800
|
-
react: "#61dafb",
|
|
38801
|
-
svelte: "#ff3e00",
|
|
38802
|
-
vue: "#42b883"
|
|
38803
|
-
};
|
|
38804
|
-
const accent = frameworkColors2[framework] ?? "#94a3b8";
|
|
38805
|
-
const label = framework.charAt(0).toUpperCase() + framework.slice(1);
|
|
38806
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
38807
|
-
return `<!DOCTYPE html>
|
|
38808
|
-
<html>
|
|
38809
|
-
<head>
|
|
38810
|
-
<meta charset="utf-8">
|
|
38811
|
-
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
38812
|
-
<title>SSR Error - AbsoluteJS</title>
|
|
38813
|
-
<style>
|
|
38814
|
-
*{margin:0;padding:0;box-sizing:border-box}
|
|
38815
|
-
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}
|
|
38816
|
-
.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}
|
|
38817
|
-
.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)}
|
|
38818
|
-
.brand{font-weight:700;font-size:20px;color:#fff;letter-spacing:-0.02em}
|
|
38819
|
-
.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)}
|
|
38820
|
-
.kind{color:#94a3b8;font-size:13px;font-weight:500}
|
|
38821
|
-
.content{padding:24px}
|
|
38822
|
-
.label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.08em;color:#94a3b8;margin-bottom:8px}
|
|
38823
|
-
.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}
|
|
38824
|
-
.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}
|
|
38825
|
-
</style>
|
|
38826
|
-
</head>
|
|
38827
|
-
<body>
|
|
38828
|
-
<div class="card">
|
|
38829
|
-
<div class="header">
|
|
38830
|
-
<div style="display:flex;align-items:center;gap:12px">
|
|
38831
|
-
<span class="brand">AbsoluteJS</span>
|
|
38832
|
-
<span class="badge">${label}</span>
|
|
38833
|
-
</div>
|
|
38834
|
-
<span class="kind">Server Render Error</span>
|
|
38835
|
-
</div>
|
|
38836
|
-
<div class="content">
|
|
38837
|
-
<div class="label">What went wrong</div>
|
|
38838
|
-
<pre class="message">${message.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">")}</pre>
|
|
38839
|
-
<div class="hint">A component threw during server-side rendering. Check the terminal for the full stack trace.</div>
|
|
38840
|
-
</div>
|
|
38841
|
-
</div>
|
|
38842
|
-
</body>
|
|
38843
|
-
</html>`;
|
|
38844
|
-
};
|
|
38845
|
-
|
|
38846
38882
|
// src/utils/stringModifiers.ts
|
|
38847
38883
|
var normalizeSlug = (str) => str.trim().replace(/\s+/g, "-").replace(/[^A-Za-z0-9\-_]+/g, "").replace(/[-_]{2,}/g, "-");
|
|
38848
38884
|
var toPascal = (str) => {
|
|
@@ -39240,6 +39276,9 @@ var buildRefreshSetup = () => {
|
|
|
39240
39276
|
var handleReactPageRequest = async (input) => {
|
|
39241
39277
|
const { Page } = input;
|
|
39242
39278
|
const deferredAssets = input.index === "" ? await resolveDeferredPageAssets() : null;
|
|
39279
|
+
const buildFailure = devBuildErrorResponse("react", deferredAssets);
|
|
39280
|
+
if (buildFailure)
|
|
39281
|
+
return buildFailure;
|
|
39243
39282
|
const resolvedIndex = deferredAssets && input.index === "" ? deferredAssets.lookup(`${deferredAssets.name}Index`) : input.index;
|
|
39244
39283
|
const options = input;
|
|
39245
39284
|
const userProps = input.props;
|
package/dist/index.js
CHANGED
|
@@ -5944,7 +5944,96 @@ var init_compileTailwind = __esm(() => {
|
|
|
5944
5944
|
// src/utils/runtimeMode.ts
|
|
5945
5945
|
var ENV_VAR = "NODE_ENV", isDevelopmentRuntime = () => process.env[ENV_VAR] === "development", isProductionRuntime = () => process.env[ENV_VAR] === "production";
|
|
5946
5946
|
|
|
5947
|
+
// src/utils/ssrErrorPage.ts
|
|
5948
|
+
var exports_ssrErrorPage = {};
|
|
5949
|
+
__export(exports_ssrErrorPage, {
|
|
5950
|
+
buildErrorPage: () => buildErrorPage,
|
|
5951
|
+
ssrErrorPage: () => ssrErrorPage
|
|
5952
|
+
});
|
|
5953
|
+
var errorPageHtml = ({
|
|
5954
|
+
framework,
|
|
5955
|
+
hint,
|
|
5956
|
+
kind,
|
|
5957
|
+
message,
|
|
5958
|
+
script = ""
|
|
5959
|
+
}) => {
|
|
5960
|
+
const frameworkColors = {
|
|
5961
|
+
angular: "#dd0031",
|
|
5962
|
+
html: "#e34c26",
|
|
5963
|
+
htmx: "#1a365d",
|
|
5964
|
+
react: "#61dafb",
|
|
5965
|
+
svelte: "#ff3e00",
|
|
5966
|
+
vue: "#42b883"
|
|
5967
|
+
};
|
|
5968
|
+
const accent = frameworkColors[framework] ?? "#94a3b8";
|
|
5969
|
+
const label = framework.charAt(0).toUpperCase() + framework.slice(1);
|
|
5970
|
+
return `<!DOCTYPE html>
|
|
5971
|
+
<html>
|
|
5972
|
+
<head>
|
|
5973
|
+
<meta charset="utf-8">
|
|
5974
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
5975
|
+
<title>SSR Error - AbsoluteJS</title>
|
|
5976
|
+
<style>
|
|
5977
|
+
*{margin:0;padding:0;box-sizing:border-box}
|
|
5978
|
+
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}
|
|
5979
|
+
.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}
|
|
5980
|
+
.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)}
|
|
5981
|
+
.brand{font-weight:700;font-size:20px;color:#fff;letter-spacing:-0.02em}
|
|
5982
|
+
.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)}
|
|
5983
|
+
.kind{color:#94a3b8;font-size:13px;font-weight:500}
|
|
5984
|
+
.content{padding:24px}
|
|
5985
|
+
.label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.08em;color:#94a3b8;margin-bottom:8px}
|
|
5986
|
+
.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}
|
|
5987
|
+
.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}
|
|
5988
|
+
</style>
|
|
5989
|
+
</head>
|
|
5990
|
+
<body>
|
|
5991
|
+
<div class="card">
|
|
5992
|
+
<div class="header">
|
|
5993
|
+
<div style="display:flex;align-items:center;gap:12px">
|
|
5994
|
+
<span class="brand">AbsoluteJS</span>
|
|
5995
|
+
<span class="badge">${label}</span>
|
|
5996
|
+
</div>
|
|
5997
|
+
<span class="kind">${kind}</span>
|
|
5998
|
+
</div>
|
|
5999
|
+
<div class="content">
|
|
6000
|
+
<div class="label">What went wrong</div>
|
|
6001
|
+
<pre class="message">${message.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">")}</pre>
|
|
6002
|
+
<div class="hint">${hint}</div>
|
|
6003
|
+
</div>
|
|
6004
|
+
</div>
|
|
6005
|
+
${script}
|
|
6006
|
+
</body>
|
|
6007
|
+
</html>`;
|
|
6008
|
+
}, 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({
|
|
6009
|
+
framework,
|
|
6010
|
+
hint: "Fix the file and save. This page reloads by itself when the build succeeds.",
|
|
6011
|
+
kind: "Build Error",
|
|
6012
|
+
message: `${pageName || "This page"} could not be built.
|
|
6013
|
+
|
|
6014
|
+
${error ?? "The dev-server terminal has the build output."}`,
|
|
6015
|
+
script: RELOAD_ON_REBUILD
|
|
6016
|
+
}), ssrErrorPage = (framework, error) => errorPageHtml({
|
|
6017
|
+
framework,
|
|
6018
|
+
hint: "A component threw during server-side rendering. Check the terminal for the full stack trace.",
|
|
6019
|
+
kind: "Server Render Error",
|
|
6020
|
+
message: error instanceof Error ? error.message : String(error)
|
|
6021
|
+
});
|
|
6022
|
+
|
|
5947
6023
|
// src/core/requestContext.ts
|
|
6024
|
+
var exports_requestContext = {};
|
|
6025
|
+
__export(exports_requestContext, {
|
|
6026
|
+
absoluteRequestContext: () => absoluteRequestContext,
|
|
6027
|
+
devBuildErrorResponse: () => devBuildErrorResponse,
|
|
6028
|
+
getCurrentAbsoluteRequest: () => getCurrentAbsoluteRequest,
|
|
6029
|
+
getDevPageWarmer: () => getDevPageWarmer,
|
|
6030
|
+
getMissingAssets: () => getMissingAssets,
|
|
6031
|
+
recordMissingAsset: () => recordMissingAsset,
|
|
6032
|
+
resolveDeferredPageAssets: () => resolveDeferredPageAssets,
|
|
6033
|
+
runWithAbsoluteRequest: () => runWithAbsoluteRequest,
|
|
6034
|
+
setDevPageWarmer: () => setDevPageWarmer,
|
|
6035
|
+
withDeferredStylesheets: () => withDeferredStylesheets
|
|
6036
|
+
});
|
|
5948
6037
|
import { AsyncLocalStorage } from "async_hooks";
|
|
5949
6038
|
import { Elysia } from "elysia";
|
|
5950
6039
|
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 = () => {
|
|
@@ -5957,7 +6046,17 @@ var REQUEST_STORAGE_KEY, PAGE_WARMER_KEY, isAbsoluteRequestStorage = (value) =>
|
|
|
5957
6046
|
const storage = new AsyncLocalStorage;
|
|
5958
6047
|
Reflect.set(globalThis, REQUEST_STORAGE_KEY, storage);
|
|
5959
6048
|
return storage;
|
|
5960
|
-
}, 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",
|
|
6049
|
+
}, 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) => {
|
|
6050
|
+
if (!assets?.failed)
|
|
6051
|
+
return null;
|
|
6052
|
+
return new Response(buildErrorPage(framework, assets.name, assets.error), {
|
|
6053
|
+
headers: {
|
|
6054
|
+
"cache-control": "no-store",
|
|
6055
|
+
"content-type": "text/html; charset=utf-8"
|
|
6056
|
+
},
|
|
6057
|
+
status: 500
|
|
6058
|
+
});
|
|
6059
|
+
}, getDevPageWarmer = () => {
|
|
5961
6060
|
const value = Reflect.get(globalThis, PAGE_WARMER_KEY);
|
|
5962
6061
|
return isDevPageWarmer(value) ? value : undefined;
|
|
5963
6062
|
}, getMissingAssets = () => {
|
|
@@ -5987,6 +6086,7 @@ var REQUEST_STORAGE_KEY, PAGE_WARMER_KEY, isAbsoluteRequestStorage = (value) =>
|
|
|
5987
6086
|
const cssHrefs = () => cssKeys.map(lookup).filter((href) => href.length > 0 && href.startsWith("/"));
|
|
5988
6087
|
const assets = {
|
|
5989
6088
|
cssHrefs,
|
|
6089
|
+
error: failed ? warmer.lastError?.() : undefined,
|
|
5990
6090
|
failed,
|
|
5991
6091
|
lookup,
|
|
5992
6092
|
name: described.name
|
|
@@ -30110,6 +30210,26 @@ var init_assetStore = __esm(() => {
|
|
|
30110
30210
|
HASHED_FILE_RE = /\.[a-z0-9]{8}\.(js|css|mjs)$/;
|
|
30111
30211
|
});
|
|
30112
30212
|
|
|
30213
|
+
// src/dev/restartScope.ts
|
|
30214
|
+
import { realpathSync as realpathSync3 } from "fs";
|
|
30215
|
+
var MODULE_FILE, DOCUMENT_FILE, realPath = (path2) => {
|
|
30216
|
+
try {
|
|
30217
|
+
return realpathSync3(path2);
|
|
30218
|
+
} catch {
|
|
30219
|
+
return path2;
|
|
30220
|
+
}
|
|
30221
|
+
}, isLoadedByThisProcess = (path2) => (path2 in __require.cache) || (realPath(path2) in __require.cache), changeNeedsRestart = (path2, isLoaded = isLoadedByThisProcess) => {
|
|
30222
|
+
if (DOCUMENT_FILE.test(path2) || isTestSourcePath(path2))
|
|
30223
|
+
return false;
|
|
30224
|
+
if (MODULE_FILE.test(path2))
|
|
30225
|
+
return isLoaded(path2);
|
|
30226
|
+
return true;
|
|
30227
|
+
};
|
|
30228
|
+
var init_restartScope = __esm(() => {
|
|
30229
|
+
MODULE_FILE = /\.(?:[cm]?[jt]sx?|mts|cts)$/;
|
|
30230
|
+
DOCUMENT_FILE = /\.(?:md|mdx|markdown|txt|rst|adoc|log|csv)$/i;
|
|
30231
|
+
});
|
|
30232
|
+
|
|
30113
30233
|
// src/dev/fileHashTracker.ts
|
|
30114
30234
|
import { readFileSync as readFileSync36 } from "fs";
|
|
30115
30235
|
var computeFileHash = (filePath) => {
|
|
@@ -30918,7 +31038,7 @@ __export(exports_moduleServer, {
|
|
|
30918
31038
|
warmPage: () => warmPage,
|
|
30919
31039
|
warnIfReactFastRefreshUnsupported: () => warnIfReactFastRefreshUnsupported
|
|
30920
31040
|
});
|
|
30921
|
-
import { existsSync as existsSync43, readFileSync as readFileSync38, realpathSync as
|
|
31041
|
+
import { existsSync as existsSync43, readFileSync as readFileSync38, realpathSync as realpathSync4, statSync as statSync8 } from "fs";
|
|
30922
31042
|
import { basename as basename19, dirname as dirname33, extname as extname15, join as join56, resolve as resolve48, relative as relative21 } from "path";
|
|
30923
31043
|
var SRC_PREFIX = "/@src/", BROWSER_DEFINE, jsTranspiler2, legacyDecoratorTsconfig, tsTranspiler2, tsxTranspiler, TRANSPILABLE, ALL_EXPORTS_RE, STRING_CONTENTS_RE, preserveTypeExports = (originalSource, transpiled, valueExports) => {
|
|
30924
31044
|
const codeOnly = originalSource.replace(STRING_CONTENTS_RE, '""');
|
|
@@ -31379,7 +31499,7 @@ ${code2}`;
|
|
|
31379
31499
|
const compiledScript = hasScript ? vueCompiler.compileScript(descriptor, {
|
|
31380
31500
|
fs: {
|
|
31381
31501
|
fileExists: isFile,
|
|
31382
|
-
realpath:
|
|
31502
|
+
realpath: realpathSync4,
|
|
31383
31503
|
readFile: (file6) => isFile(file6) ? readFileSync38(file6, "utf-8") : undefined
|
|
31384
31504
|
},
|
|
31385
31505
|
id: componentId,
|
|
@@ -31767,6 +31887,7 @@ export default {};
|
|
|
31767
31887
|
name: entry.name
|
|
31768
31888
|
};
|
|
31769
31889
|
},
|
|
31890
|
+
lastError: () => getDevResult()?.hmrState.lazyPages?.lastError,
|
|
31770
31891
|
lookup: (key) => getDevResult()?.manifest[key],
|
|
31771
31892
|
warm: (key) => warmPage(key)
|
|
31772
31893
|
};
|
|
@@ -32049,62 +32170,6 @@ var init_routeAssets = __esm(() => {
|
|
|
32049
32170
|
ENTITY_RE = /&(?:amp|lt|gt|quot|#0?39);/g;
|
|
32050
32171
|
});
|
|
32051
32172
|
|
|
32052
|
-
// src/utils/ssrErrorPage.ts
|
|
32053
|
-
var exports_ssrErrorPage = {};
|
|
32054
|
-
__export(exports_ssrErrorPage, {
|
|
32055
|
-
ssrErrorPage: () => ssrErrorPage
|
|
32056
|
-
});
|
|
32057
|
-
var ssrErrorPage = (framework, error) => {
|
|
32058
|
-
const frameworkColors2 = {
|
|
32059
|
-
angular: "#dd0031",
|
|
32060
|
-
html: "#e34c26",
|
|
32061
|
-
htmx: "#1a365d",
|
|
32062
|
-
react: "#61dafb",
|
|
32063
|
-
svelte: "#ff3e00",
|
|
32064
|
-
vue: "#42b883"
|
|
32065
|
-
};
|
|
32066
|
-
const accent = frameworkColors2[framework] ?? "#94a3b8";
|
|
32067
|
-
const label = framework.charAt(0).toUpperCase() + framework.slice(1);
|
|
32068
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
32069
|
-
return `<!DOCTYPE html>
|
|
32070
|
-
<html>
|
|
32071
|
-
<head>
|
|
32072
|
-
<meta charset="utf-8">
|
|
32073
|
-
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
32074
|
-
<title>SSR Error - AbsoluteJS</title>
|
|
32075
|
-
<style>
|
|
32076
|
-
*{margin:0;padding:0;box-sizing:border-box}
|
|
32077
|
-
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}
|
|
32078
|
-
.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}
|
|
32079
|
-
.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)}
|
|
32080
|
-
.brand{font-weight:700;font-size:20px;color:#fff;letter-spacing:-0.02em}
|
|
32081
|
-
.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)}
|
|
32082
|
-
.kind{color:#94a3b8;font-size:13px;font-weight:500}
|
|
32083
|
-
.content{padding:24px}
|
|
32084
|
-
.label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.08em;color:#94a3b8;margin-bottom:8px}
|
|
32085
|
-
.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}
|
|
32086
|
-
.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}
|
|
32087
|
-
</style>
|
|
32088
|
-
</head>
|
|
32089
|
-
<body>
|
|
32090
|
-
<div class="card">
|
|
32091
|
-
<div class="header">
|
|
32092
|
-
<div style="display:flex;align-items:center;gap:12px">
|
|
32093
|
-
<span class="brand">AbsoluteJS</span>
|
|
32094
|
-
<span class="badge">${label}</span>
|
|
32095
|
-
</div>
|
|
32096
|
-
<span class="kind">Server Render Error</span>
|
|
32097
|
-
</div>
|
|
32098
|
-
<div class="content">
|
|
32099
|
-
<div class="label">What went wrong</div>
|
|
32100
|
-
<pre class="message">${message.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">")}</pre>
|
|
32101
|
-
<div class="hint">A component threw during server-side rendering. Check the terminal for the full stack trace.</div>
|
|
32102
|
-
</div>
|
|
32103
|
-
</div>
|
|
32104
|
-
</body>
|
|
32105
|
-
</html>`;
|
|
32106
|
-
};
|
|
32107
|
-
|
|
32108
32173
|
// src/ember/pageHandler.ts
|
|
32109
32174
|
import { pathToFileURL as pathToFileURL4 } from "url";
|
|
32110
32175
|
var resolveRequestPathname = (request) => {
|
|
@@ -32147,6 +32212,9 @@ var resolveRequestPathname = (request) => {
|
|
|
32147
32212
|
return cachedEmberHmrShim;
|
|
32148
32213
|
}, handleEmberPageRequest = async (input) => {
|
|
32149
32214
|
const deferredAssets = input.pagePath === "" ? await resolveDeferredPageAssets() : null;
|
|
32215
|
+
const buildFailure = devBuildErrorResponse("ember", deferredAssets);
|
|
32216
|
+
if (buildFailure)
|
|
32217
|
+
return buildFailure;
|
|
32150
32218
|
const pagePath = deferredAssets && input.pagePath === "" ? deferredAssets.lookup(deferredAssets.name) : input.pagePath;
|
|
32151
32219
|
if (pagePath === "") {
|
|
32152
32220
|
throw new Error(`Asset "${deferredAssets?.name || "Page"}" not found in manifest.`);
|
|
@@ -32712,6 +32780,8 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, clearDevSs
|
|
|
32712
32780
|
} catch {}
|
|
32713
32781
|
}
|
|
32714
32782
|
if (!hasAngularDependent) {
|
|
32783
|
+
if (!changeNeedsRestart(resolvePath(filePath)))
|
|
32784
|
+
return;
|
|
32715
32785
|
console.log(`[abs:restart] ${resolvePath(filePath)}`);
|
|
32716
32786
|
return;
|
|
32717
32787
|
}
|
|
@@ -35014,6 +35084,7 @@ var moduleServerPromise, getModuleServer = () => moduleServerPromise, clearDevSs
|
|
|
35014
35084
|
}
|
|
35015
35085
|
};
|
|
35016
35086
|
var init_rebuildTrigger = __esm(() => {
|
|
35087
|
+
init_restartScope();
|
|
35017
35088
|
init_generatedDir();
|
|
35018
35089
|
init_build();
|
|
35019
35090
|
init_lazyPages();
|
|
@@ -37980,10 +38051,9 @@ var MS_PER_SECOND2 = 1000, DEFAULT_PORT2 = 3000, MAX_STATIC_ROUTE_COUNT, STATIC_
|
|
|
37980
38051
|
const missingAsset = assetMatch[1] ?? "";
|
|
37981
38052
|
const framework = /^(?:[A-Z][a-z]*)*?(Angular|Vue|Svelte|React|Html|Htmx|Ember)/.exec(missingAsset)?.[1]?.toLowerCase() ?? "absolutejs";
|
|
37982
38053
|
console.error(`[hmr] Build artifact "${missingAsset}" missing from manifest \u2014 ` + `the user likely has a build-time error. Save a fix to trigger a recovery rebuild.`);
|
|
37983
|
-
const {
|
|
37984
|
-
const
|
|
37985
|
-
|
|
37986
|
-
This usually means a build-time error in a source file. Check the dev-server terminal for the underlying error, fix the file, and save to trigger a recovery rebuild.`));
|
|
38054
|
+
const { buildErrorPage: buildErrorPage2 } = await Promise.resolve().then(() => exports_ssrErrorPage);
|
|
38055
|
+
const { getDevPageWarmer: getDevPageWarmer2 } = await Promise.resolve().then(() => (init_requestContext(), exports_requestContext));
|
|
38056
|
+
const html = buildErrorPage2(framework, missingAsset, getDevPageWarmer2()?.lastError?.());
|
|
37987
38057
|
return new Response(html, {
|
|
37988
38058
|
headers: { "content-type": "text/html; charset=utf-8" },
|
|
37989
38059
|
status: 500
|
|
@@ -45746,6 +45816,7 @@ export {
|
|
|
45746
45816
|
defineIslandRegistry,
|
|
45747
45817
|
defineRenderErrorPage,
|
|
45748
45818
|
defineRenderNotFoundPage,
|
|
45819
|
+
devBuildErrorResponse,
|
|
45749
45820
|
devtoolsJson,
|
|
45750
45821
|
disposeTailwindCompiler,
|
|
45751
45822
|
enhanceHtmlResponseWithStreamingSlots,
|
|
@@ -45813,5 +45884,5 @@ export {
|
|
|
45813
45884
|
wrapPageHandlerWithStreamingSlots
|
|
45814
45885
|
};
|
|
45815
45886
|
|
|
45816
|
-
//# debugId=
|
|
45887
|
+
//# debugId=9189760E6EEA8CAD64756E2164756E21
|
|
45817
45888
|
//# sourceMappingURL=index.js.map
|