@uniweb/runtime 1.2.4 → 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 CHANGED
@@ -9,7 +9,6 @@ import { DEFAULT_ICON_BASE, iconUrl } from "@uniweb/core/icon-corpus";
9
9
  import { buildTheme, FONT_LINKS_MARKER, buildSectionOverrides } from "@uniweb/theming";
10
10
  import "@uniweb/core/services";
11
11
  import "@uniweb/core/tracker";
12
- import { pageMarkdownUrls } from "@uniweb/projections/markdown-urls";
13
12
  import { escapeHtml } from "@uniweb/core/page-shell";
14
13
  import { escapeHtml as escapeHtml2, foundationCssUrl, pageShell } from "@uniweb/core/page-shell";
15
14
  import DataStore, { deriveCacheKey as deriveCacheKey$1 } from "@uniweb/core/datastore";
@@ -496,23 +495,19 @@ function documentTitle(pageTitle, siteName) {
496
495
  const title = String(pageTitle);
497
496
  return siteName ? `${title} | ${siteName}` : title;
498
497
  }
499
- const urlsOfPages = /* @__PURE__ */ new WeakMap();
500
- function pageHeadMeta(page) {
501
- return { ...page.getHeadMeta(), markdown: markdownUrlOf(page) };
498
+ const startPages = /* @__PURE__ */ new WeakMap();
499
+ function recordStartPage(website) {
500
+ if (website && !startPages.has(website)) startPages.set(website, website.activePage);
502
501
  }
503
- function markdownUrlOf(page) {
504
- const website = page?.website;
505
- if (!website) return null;
506
- let urls = urlsOfPages.get(website.pages);
507
- if (!urls) {
508
- urls = pageMarkdownUrls({ pages: website.getContentPages(), config: website.config });
509
- urlsOfPages.set(website.pages, urls);
510
- }
511
- return urls.get(page.route) ?? null;
502
+ function restoreStartPage(website) {
503
+ if (startPages.has(website)) website.activePage = startPages.get(website);
512
504
  }
513
505
  function resolvePage(website, route) {
514
506
  return website.getPage(route);
515
507
  }
508
+ function resolveRequestedPage(website, route) {
509
+ return website.resolveRoute(route).kind === "rewrite" ? void 0 : resolvePage(website, route);
510
+ }
516
511
  const VALID_CONTEXTS = ["light", "medium", "dark"];
517
512
  function getWrapperProps(block) {
518
513
  const theme = block.themeName;
@@ -671,6 +666,7 @@ function initPrerender(content, foundation, extensionsOrOptions, maybeOptions) {
671
666
  } } = options;
672
667
  onProgress("Initializing runtime...");
673
668
  const uniweb = createUniweb(content, foundation, extensions);
669
+ recordStartPage(uniweb.activeWebsite);
674
670
  if (content.config?.base && uniweb.activeWebsite?.setBasePath) {
675
671
  uniweb.activeWebsite.setBasePath(content.config.base);
676
672
  }
@@ -750,7 +746,7 @@ function classifyRenderError(err) {
750
746
  };
751
747
  }
752
748
  function renderPage(page, website) {
753
- website.setActivePage(page.route);
749
+ if (page !== website.getNotFoundPage()) website.setActivePage(page.route);
754
750
  if (page.hasContent?.() && page.getBodyBlocks().length === 0) {
755
751
  return {
756
752
  error: {
@@ -820,7 +816,7 @@ ${options.sectionOverrideCSS}
820
816
  return result;
821
817
  }
822
818
  function writeHeadMeta(html, page) {
823
- const meta = typeof page?.getHeadMeta === "function" ? pageHeadMeta(page) : { description: page?.description || null };
819
+ const meta = typeof page?.getHeadMeta === "function" ? page.getHeadMeta() : { description: page?.description || null };
824
820
  const end = html.indexOf("</head>");
825
821
  if (!meta || end === -1) return html;
826
822
  const og = meta.og || {};
@@ -853,8 +849,6 @@ function writeHeadMeta(html, page) {
853
849
  for (const { hreflang, url } of meta.alternates || []) {
854
850
  written.push(`<link rel="alternate" hreflang="${escapeHtml(hreflang)}" href="${escapeHtml(url)}">`);
855
851
  }
856
- head = head.replace(/<link\b(?=[^>]*\brel=["']alternate["'])(?=[^>]*\btype=["']text\/markdown["'])[^>]*>\s*/gi, "");
857
- if (meta.markdown) written.push(`<link rel="alternate" type="text/markdown" href="${escapeHtml(meta.markdown)}">`);
858
852
  return `${head}${written.join("\n")}
859
853
  ${html.slice(end)}`;
860
854
  }
@@ -1208,7 +1202,8 @@ async function loadPageData({ website, route, fetch: fetch2, dev = false, locale
1208
1202
  );
1209
1203
  }
1210
1204
  website.makeCurrent();
1211
- const resolved = typeof route === "string" ? resolvePage(website, route) : route;
1205
+ const named = typeof route === "string" ? resolveRequestedPage(website, route) : route;
1206
+ const resolved = named ?? (typeof route === "string" ? website.getNotFoundPage() : null);
1212
1207
  if (!resolved) return [];
1213
1208
  const page = typeof resolved.getRenderableSelf === "function" ? resolved.getRenderableSelf() : resolved;
1214
1209
  if (typeof page.getBodyBlocks !== "function") {
@@ -1261,10 +1256,13 @@ function createPageRenderer({ website, shell }) {
1261
1256
  website.forgetData();
1262
1257
  hydrateDataStore(website, fetchedData);
1263
1258
  }
1264
- const resolved = typeof target === "string" ? resolvePage(website, target) : target;
1259
+ const named = typeof target === "string" ? resolveRequestedPage(website, target) : target;
1260
+ const resolved = named ?? (typeof target === "string" ? website.getNotFoundPage() : null);
1265
1261
  if (!resolved) return { outcome: "notFound", html: null, page: null, error: null };
1266
1262
  const page = typeof resolved.getRenderableSelf === "function" ? resolved.getRenderableSelf() : resolved;
1267
- const missing = page?.notFound === true;
1263
+ const missing = !named || page?.notFound === true;
1264
+ restoreStartPage(website);
1265
+ if (typeof target === "string") website.setActivePage(target);
1268
1266
  let result;
1269
1267
  try {
1270
1268
  result = renderPage(page, website);