@uniweb/runtime 1.2.5 → 1.2.6
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/dist/ssr.js +19 -4
- package/dist/ssr.js.map +1 -1
- package/package.json +2 -2
- package/src/load-page-data.js +9 -4
- package/src/page-renderer.js +43 -15
- package/src/resolve-page.js +19 -0
- package/src/ssr-renderer.js +13 -2
- package/src/start-page.js +26 -0
package/dist/ssr.js
CHANGED
|
@@ -495,9 +495,19 @@ function documentTitle(pageTitle, siteName) {
|
|
|
495
495
|
const title = String(pageTitle);
|
|
496
496
|
return siteName ? `${title} | ${siteName}` : title;
|
|
497
497
|
}
|
|
498
|
+
const startPages = /* @__PURE__ */ new WeakMap();
|
|
499
|
+
function recordStartPage(website) {
|
|
500
|
+
if (website && !startPages.has(website)) startPages.set(website, website.activePage);
|
|
501
|
+
}
|
|
502
|
+
function restoreStartPage(website) {
|
|
503
|
+
if (startPages.has(website)) website.activePage = startPages.get(website);
|
|
504
|
+
}
|
|
498
505
|
function resolvePage(website, route) {
|
|
499
506
|
return website.getPage(route);
|
|
500
507
|
}
|
|
508
|
+
function resolveRequestedPage(website, route) {
|
|
509
|
+
return website.resolveRoute(route).kind === "rewrite" ? void 0 : resolvePage(website, route);
|
|
510
|
+
}
|
|
501
511
|
const VALID_CONTEXTS = ["light", "medium", "dark"];
|
|
502
512
|
function getWrapperProps(block) {
|
|
503
513
|
const theme = block.themeName;
|
|
@@ -656,6 +666,7 @@ function initPrerender(content, foundation, extensionsOrOptions, maybeOptions) {
|
|
|
656
666
|
} } = options;
|
|
657
667
|
onProgress("Initializing runtime...");
|
|
658
668
|
const uniweb = createUniweb(content, foundation, extensions);
|
|
669
|
+
recordStartPage(uniweb.activeWebsite);
|
|
659
670
|
if (content.config?.base && uniweb.activeWebsite?.setBasePath) {
|
|
660
671
|
uniweb.activeWebsite.setBasePath(content.config.base);
|
|
661
672
|
}
|
|
@@ -735,7 +746,7 @@ function classifyRenderError(err) {
|
|
|
735
746
|
};
|
|
736
747
|
}
|
|
737
748
|
function renderPage(page, website) {
|
|
738
|
-
website.setActivePage(page.route);
|
|
749
|
+
if (page !== website.getNotFoundPage()) website.setActivePage(page.route);
|
|
739
750
|
if (page.hasContent?.() && page.getBodyBlocks().length === 0) {
|
|
740
751
|
return {
|
|
741
752
|
error: {
|
|
@@ -1191,7 +1202,8 @@ async function loadPageData({ website, route, fetch: fetch2, dev = false, locale
|
|
|
1191
1202
|
);
|
|
1192
1203
|
}
|
|
1193
1204
|
website.makeCurrent();
|
|
1194
|
-
const
|
|
1205
|
+
const named = typeof route === "string" ? resolveRequestedPage(website, route) : route;
|
|
1206
|
+
const resolved = named ?? (typeof route === "string" ? website.getNotFoundPage() : null);
|
|
1195
1207
|
if (!resolved) return [];
|
|
1196
1208
|
const page = typeof resolved.getRenderableSelf === "function" ? resolved.getRenderableSelf() : resolved;
|
|
1197
1209
|
if (typeof page.getBodyBlocks !== "function") {
|
|
@@ -1244,10 +1256,13 @@ function createPageRenderer({ website, shell }) {
|
|
|
1244
1256
|
website.forgetData();
|
|
1245
1257
|
hydrateDataStore(website, fetchedData);
|
|
1246
1258
|
}
|
|
1247
|
-
const
|
|
1259
|
+
const named = typeof target === "string" ? resolveRequestedPage(website, target) : target;
|
|
1260
|
+
const resolved = named ?? (typeof target === "string" ? website.getNotFoundPage() : null);
|
|
1248
1261
|
if (!resolved) return { outcome: "notFound", html: null, page: null, error: null };
|
|
1249
1262
|
const page = typeof resolved.getRenderableSelf === "function" ? resolved.getRenderableSelf() : resolved;
|
|
1250
|
-
const missing = page?.notFound === true;
|
|
1263
|
+
const missing = !named || page?.notFound === true;
|
|
1264
|
+
restoreStartPage(website);
|
|
1265
|
+
if (typeof target === "string") website.setActivePage(target);
|
|
1251
1266
|
let result;
|
|
1252
1267
|
try {
|
|
1253
1268
|
result = renderPage(page, website);
|