@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/vue/server.js
CHANGED
|
@@ -835,7 +835,96 @@ var init_devRouteRegistrationCallsite = __esm(() => {
|
|
|
835
835
|
pageHandlerWrappers = new WeakMap;
|
|
836
836
|
});
|
|
837
837
|
|
|
838
|
+
// src/utils/ssrErrorPage.ts
|
|
839
|
+
var exports_ssrErrorPage = {};
|
|
840
|
+
__export(exports_ssrErrorPage, {
|
|
841
|
+
buildErrorPage: () => buildErrorPage,
|
|
842
|
+
ssrErrorPage: () => ssrErrorPage
|
|
843
|
+
});
|
|
844
|
+
var errorPageHtml = ({
|
|
845
|
+
framework,
|
|
846
|
+
hint,
|
|
847
|
+
kind,
|
|
848
|
+
message,
|
|
849
|
+
script = ""
|
|
850
|
+
}) => {
|
|
851
|
+
const frameworkColors = {
|
|
852
|
+
angular: "#dd0031",
|
|
853
|
+
html: "#e34c26",
|
|
854
|
+
htmx: "#1a365d",
|
|
855
|
+
react: "#61dafb",
|
|
856
|
+
svelte: "#ff3e00",
|
|
857
|
+
vue: "#42b883"
|
|
858
|
+
};
|
|
859
|
+
const accent = frameworkColors[framework] ?? "#94a3b8";
|
|
860
|
+
const label = framework.charAt(0).toUpperCase() + framework.slice(1);
|
|
861
|
+
return `<!DOCTYPE html>
|
|
862
|
+
<html>
|
|
863
|
+
<head>
|
|
864
|
+
<meta charset="utf-8">
|
|
865
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
866
|
+
<title>SSR Error - AbsoluteJS</title>
|
|
867
|
+
<style>
|
|
868
|
+
*{margin:0;padding:0;box-sizing:border-box}
|
|
869
|
+
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}
|
|
870
|
+
.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}
|
|
871
|
+
.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)}
|
|
872
|
+
.brand{font-weight:700;font-size:20px;color:#fff;letter-spacing:-0.02em}
|
|
873
|
+
.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)}
|
|
874
|
+
.kind{color:#94a3b8;font-size:13px;font-weight:500}
|
|
875
|
+
.content{padding:24px}
|
|
876
|
+
.label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.08em;color:#94a3b8;margin-bottom:8px}
|
|
877
|
+
.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}
|
|
878
|
+
.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}
|
|
879
|
+
</style>
|
|
880
|
+
</head>
|
|
881
|
+
<body>
|
|
882
|
+
<div class="card">
|
|
883
|
+
<div class="header">
|
|
884
|
+
<div style="display:flex;align-items:center;gap:12px">
|
|
885
|
+
<span class="brand">AbsoluteJS</span>
|
|
886
|
+
<span class="badge">${label}</span>
|
|
887
|
+
</div>
|
|
888
|
+
<span class="kind">${kind}</span>
|
|
889
|
+
</div>
|
|
890
|
+
<div class="content">
|
|
891
|
+
<div class="label">What went wrong</div>
|
|
892
|
+
<pre class="message">${message.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">")}</pre>
|
|
893
|
+
<div class="hint">${hint}</div>
|
|
894
|
+
</div>
|
|
895
|
+
</div>
|
|
896
|
+
${script}
|
|
897
|
+
</body>
|
|
898
|
+
</html>`;
|
|
899
|
+
}, 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({
|
|
900
|
+
framework,
|
|
901
|
+
hint: "Fix the file and save. This page reloads by itself when the build succeeds.",
|
|
902
|
+
kind: "Build Error",
|
|
903
|
+
message: `${pageName || "This page"} could not be built.
|
|
904
|
+
|
|
905
|
+
${error ?? "The dev-server terminal has the build output."}`,
|
|
906
|
+
script: RELOAD_ON_REBUILD
|
|
907
|
+
}), ssrErrorPage = (framework, error) => errorPageHtml({
|
|
908
|
+
framework,
|
|
909
|
+
hint: "A component threw during server-side rendering. Check the terminal for the full stack trace.",
|
|
910
|
+
kind: "Server Render Error",
|
|
911
|
+
message: error instanceof Error ? error.message : String(error)
|
|
912
|
+
});
|
|
913
|
+
|
|
838
914
|
// src/core/requestContext.ts
|
|
915
|
+
var exports_requestContext = {};
|
|
916
|
+
__export(exports_requestContext, {
|
|
917
|
+
absoluteRequestContext: () => absoluteRequestContext,
|
|
918
|
+
devBuildErrorResponse: () => devBuildErrorResponse,
|
|
919
|
+
getCurrentAbsoluteRequest: () => getCurrentAbsoluteRequest,
|
|
920
|
+
getDevPageWarmer: () => getDevPageWarmer,
|
|
921
|
+
getMissingAssets: () => getMissingAssets,
|
|
922
|
+
recordMissingAsset: () => recordMissingAsset,
|
|
923
|
+
resolveDeferredPageAssets: () => resolveDeferredPageAssets,
|
|
924
|
+
runWithAbsoluteRequest: () => runWithAbsoluteRequest,
|
|
925
|
+
setDevPageWarmer: () => setDevPageWarmer,
|
|
926
|
+
withDeferredStylesheets: () => withDeferredStylesheets
|
|
927
|
+
});
|
|
839
928
|
import { AsyncLocalStorage as AsyncLocalStorage2 } from "async_hooks";
|
|
840
929
|
import { Elysia as Elysia2 } from "elysia";
|
|
841
930
|
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 = () => {
|
|
@@ -848,7 +937,17 @@ var REQUEST_STORAGE_KEY, PAGE_WARMER_KEY, isAbsoluteRequestStorage = (value) =>
|
|
|
848
937
|
const storage = new AsyncLocalStorage2;
|
|
849
938
|
Reflect.set(globalThis, REQUEST_STORAGE_KEY, storage);
|
|
850
939
|
return storage;
|
|
851
|
-
}, 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",
|
|
940
|
+
}, 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) => {
|
|
941
|
+
if (!assets?.failed)
|
|
942
|
+
return null;
|
|
943
|
+
return new Response(buildErrorPage(framework, assets.name, assets.error), {
|
|
944
|
+
headers: {
|
|
945
|
+
"cache-control": "no-store",
|
|
946
|
+
"content-type": "text/html; charset=utf-8"
|
|
947
|
+
},
|
|
948
|
+
status: 500
|
|
949
|
+
});
|
|
950
|
+
}, getDevPageWarmer = () => {
|
|
852
951
|
const value = Reflect.get(globalThis, PAGE_WARMER_KEY);
|
|
853
952
|
return isDevPageWarmer(value) ? value : undefined;
|
|
854
953
|
}, getMissingAssets = () => {
|
|
@@ -878,6 +977,7 @@ var REQUEST_STORAGE_KEY, PAGE_WARMER_KEY, isAbsoluteRequestStorage = (value) =>
|
|
|
878
977
|
const cssHrefs = () => cssKeys.map(lookup).filter((href) => href.length > 0 && href.startsWith("/"));
|
|
879
978
|
const assets = {
|
|
880
979
|
cssHrefs,
|
|
980
|
+
error: failed ? warmer.lastError?.() : undefined,
|
|
881
981
|
failed,
|
|
882
982
|
lookup,
|
|
883
983
|
name: described.name
|
|
@@ -2155,62 +2255,6 @@ var init_logger = __esm(() => {
|
|
|
2155
2255
|
};
|
|
2156
2256
|
});
|
|
2157
2257
|
|
|
2158
|
-
// src/utils/ssrErrorPage.ts
|
|
2159
|
-
var exports_ssrErrorPage = {};
|
|
2160
|
-
__export(exports_ssrErrorPage, {
|
|
2161
|
-
ssrErrorPage: () => ssrErrorPage
|
|
2162
|
-
});
|
|
2163
|
-
var ssrErrorPage = (framework, error) => {
|
|
2164
|
-
const frameworkColors2 = {
|
|
2165
|
-
angular: "#dd0031",
|
|
2166
|
-
html: "#e34c26",
|
|
2167
|
-
htmx: "#1a365d",
|
|
2168
|
-
react: "#61dafb",
|
|
2169
|
-
svelte: "#ff3e00",
|
|
2170
|
-
vue: "#42b883"
|
|
2171
|
-
};
|
|
2172
|
-
const accent = frameworkColors2[framework] ?? "#94a3b8";
|
|
2173
|
-
const label = framework.charAt(0).toUpperCase() + framework.slice(1);
|
|
2174
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
2175
|
-
return `<!DOCTYPE html>
|
|
2176
|
-
<html>
|
|
2177
|
-
<head>
|
|
2178
|
-
<meta charset="utf-8">
|
|
2179
|
-
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
2180
|
-
<title>SSR Error - AbsoluteJS</title>
|
|
2181
|
-
<style>
|
|
2182
|
-
*{margin:0;padding:0;box-sizing:border-box}
|
|
2183
|
-
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}
|
|
2184
|
-
.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}
|
|
2185
|
-
.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)}
|
|
2186
|
-
.brand{font-weight:700;font-size:20px;color:#fff;letter-spacing:-0.02em}
|
|
2187
|
-
.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)}
|
|
2188
|
-
.kind{color:#94a3b8;font-size:13px;font-weight:500}
|
|
2189
|
-
.content{padding:24px}
|
|
2190
|
-
.label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.08em;color:#94a3b8;margin-bottom:8px}
|
|
2191
|
-
.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}
|
|
2192
|
-
.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}
|
|
2193
|
-
</style>
|
|
2194
|
-
</head>
|
|
2195
|
-
<body>
|
|
2196
|
-
<div class="card">
|
|
2197
|
-
<div class="header">
|
|
2198
|
-
<div style="display:flex;align-items:center;gap:12px">
|
|
2199
|
-
<span class="brand">AbsoluteJS</span>
|
|
2200
|
-
<span class="badge">${label}</span>
|
|
2201
|
-
</div>
|
|
2202
|
-
<span class="kind">Server Render Error</span>
|
|
2203
|
-
</div>
|
|
2204
|
-
<div class="content">
|
|
2205
|
-
<div class="label">What went wrong</div>
|
|
2206
|
-
<pre class="message">${message.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">")}</pre>
|
|
2207
|
-
<div class="hint">A component threw during server-side rendering. Check the terminal for the full stack trace.</div>
|
|
2208
|
-
</div>
|
|
2209
|
-
</div>
|
|
2210
|
-
</body>
|
|
2211
|
-
</html>`;
|
|
2212
|
-
};
|
|
2213
|
-
|
|
2214
2258
|
// src/core/routeAssets.ts
|
|
2215
2259
|
var LINK_TAG_RE, REL_STYLESHEET_RE, HREF_RE, TITLE_RE, ENTITIES, ENTITY_RE, decodeEntities = (value) => value.replace(ENTITY_RE, (match) => ENTITIES[match] ?? match), readHeadStylesheets = (head) => {
|
|
2216
2260
|
if (!head)
|
|
@@ -2719,6 +2763,9 @@ var handleVuePageRequest = async (input) => {
|
|
|
2719
2763
|
const request = input.request ?? getCurrentAbsoluteRequest();
|
|
2720
2764
|
const clientMode = input.client ?? "auto";
|
|
2721
2765
|
const deferredAssets = input.pagePath === "" || clientMode === "auto" && input.indexPath === "" ? await resolveDeferredPageAssets() : null;
|
|
2766
|
+
const buildFailure = devBuildErrorResponse("vue", deferredAssets);
|
|
2767
|
+
if (buildFailure)
|
|
2768
|
+
return buildFailure;
|
|
2722
2769
|
const resolvedPagePath = deferredAssets && input.pagePath === "" ? deferredAssets.lookup(deferredAssets.name) : input.pagePath;
|
|
2723
2770
|
const resolvedIndexPath = deferredAssets && input.indexPath === "" ? deferredAssets.lookup(`${deferredAssets.name}Index`) : input.indexPath;
|
|
2724
2771
|
const resolvedOptions = input;
|
|
@@ -2920,5 +2967,5 @@ export {
|
|
|
2920
2967
|
handleVuePageRequest
|
|
2921
2968
|
};
|
|
2922
2969
|
|
|
2923
|
-
//# debugId=
|
|
2970
|
+
//# debugId=5476B8D1701EF25A64756E2164756E21
|
|
2924
2971
|
//# sourceMappingURL=server.js.map
|