@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
|
@@ -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;
|
|
@@ -127,7 +127,7 @@ var jsxDevRuntimeCompatPath = resolveJsxDevRuntimeCompatPath();
|
|
|
127
127
|
var prerenderStaticPages = async (outputPath, prerenderPort, resolvedOutdir, staticConfig, absoluteVersion, configPath) => {
|
|
128
128
|
const prerenderStart = performance.now();
|
|
129
129
|
process.stdout.write(cliTag("\x1B[36m", "Pre-rendering static pages"));
|
|
130
|
-
const { prerenderWithServer } = await import("./prerender-
|
|
130
|
+
const { prerenderWithServer } = await import("./prerender-yex2zwj3.js");
|
|
131
131
|
try {
|
|
132
132
|
killStaleProcesses(prerenderPort);
|
|
133
133
|
const result = await prerenderWithServer(outputPath, prerenderPort, resolvedOutdir, staticConfig, {
|
package/dist/cli/index.js
CHANGED
|
@@ -74,7 +74,7 @@ if (command === "dev") {
|
|
|
74
74
|
const configPath = parseNamedArg("--config");
|
|
75
75
|
const positionalArgs = stripNamedArgs("--outdir", "--config").filter((arg) => arg !== "--prebuilt");
|
|
76
76
|
const serverEntry = positionalArgs[0] ?? DEFAULT_SERVER_ENTRY;
|
|
77
|
-
const { start } = await import("./start-
|
|
77
|
+
const { start } = await import("./start-m0p0qbep.js");
|
|
78
78
|
await start(serverEntry, outdir, configPath, {
|
|
79
79
|
prebuilt: args.includes("--prebuilt")
|
|
80
80
|
});
|
|
@@ -84,7 +84,7 @@ if (command === "dev") {
|
|
|
84
84
|
const configPath = parseNamedArg("--config");
|
|
85
85
|
const positionalArgs = stripNamedArgs("--outdir", "--config");
|
|
86
86
|
const serverEntry = positionalArgs[0] ?? DEFAULT_SERVER_ENTRY;
|
|
87
|
-
const { start } = await import("./start-
|
|
87
|
+
const { start } = await import("./start-m0p0qbep.js");
|
|
88
88
|
await start(serverEntry, outdir, configPath, { prepareOnly: true });
|
|
89
89
|
} else if (command === "build") {
|
|
90
90
|
sendTelemetryEvent("cli:command", { command });
|
|
@@ -205,13 +205,13 @@ if (command === "dev") {
|
|
|
205
205
|
const configPath = parseNamedArg("--config");
|
|
206
206
|
const positionalArgs = stripNamedArgs("--outdir", "--outfile", "--config");
|
|
207
207
|
const serverEntry = positionalArgs[0] ?? DEFAULT_SERVER_ENTRY;
|
|
208
|
-
const { compile } = await import("./compile-
|
|
208
|
+
const { compile } = await import("./compile-0epdbdcx.js");
|
|
209
209
|
await compile(serverEntry, outdir, outfile, configPath);
|
|
210
210
|
} else if (command === "mobile") {
|
|
211
211
|
sendTelemetryEvent("cli:command", {
|
|
212
212
|
command: `mobile:${workspaceCommand ?? "unknown"}`
|
|
213
213
|
});
|
|
214
|
-
const { runMobile } = await import("./mobile-
|
|
214
|
+
const { runMobile } = await import("./mobile-49hyrgrj.js");
|
|
215
215
|
try {
|
|
216
216
|
await runMobile(args);
|
|
217
217
|
} catch (error) {
|