@bagelink/blox 1.15.558 → 1.15.565
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/CmsPageView.vue.d.ts.map +1 -1
- package/dist/{PreviewApp-RWLkugBk.js → PreviewApp-B9SNVb5d.js} +1 -1
- package/dist/{PreviewApp-eEGjkQot.cjs → PreviewApp-DGaEtgeQ.cjs} +1 -1
- package/dist/{PreviewApp.vue_vue_type_style_index_0_lang-CMOb3zfF.cjs → PreviewApp.vue_vue_type_style_index_0_lang-CSGhU0Km.cjs} +1 -1
- package/dist/{PreviewApp.vue_vue_type_style_index_0_lang-DDcLQVr1.js → PreviewApp.vue_vue_type_style_index_0_lang-DmbZlg5I.js} +1 -1
- package/dist/api/types.d.ts +2 -0
- package/dist/api/types.d.ts.map +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +3 -3
- package/dist/{routes-CYYoiqvi.js → routes-BLRBaLOB.js} +12 -6
- package/dist/{routes-C82wA2VY.cjs → routes-ClmCqqhk.cjs} +12 -6
- package/dist/{shard-runner-C0zS2ZjC.js → shard-runner-BfYC7Pqz.js} +2 -2
- package/dist/{shard-runner-CYE0JuX0.cjs → shard-runner-C85NFl9i.cjs} +2 -2
- package/dist/ssg/cli.cjs +2 -2
- package/dist/ssg/cli.mjs +2 -2
- package/dist/ssg/index.cjs +5 -4
- package/dist/ssg/index.mjs +6 -5
- package/dist/ssg/prerender.d.ts +4 -1
- package/dist/ssg/prerender.d.ts.map +1 -1
- package/dist/ssg/render-resolved-page.d.ts +6 -1
- package/dist/ssg/render-resolved-page.d.ts.map +1 -1
- package/dist/ssg/seo.d.ts +1 -1
- package/dist/ssg/seo.d.ts.map +1 -1
- package/dist/{validate-output-CaMwqCa1.js → validate-output-BrMtm33e.js} +40 -4
- package/dist/{validate-output-BrUqMZIw.cjs → validate-output-DuIy6MyM.cjs} +40 -4
- package/dist/vite-plugin.cjs +11 -1
- package/dist/vite-plugin.d.ts +1 -1
- package/dist/vite-plugin.d.ts.map +1 -1
- package/dist/vite-plugin.mjs +11 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CmsPageView.vue.d.ts","sourceRoot":"","sources":["../src/CmsPageView.vue"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"CmsPageView.vue.d.ts","sourceRoot":"","sources":["../src/CmsPageView.vue"],"names":[],"mappings":";AAmkBA,wBAMG"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const PreviewApp_vue_vue_type_style_index_0_lang = require("./PreviewApp.vue_vue_type_style_index_0_lang-
|
|
3
|
+
const PreviewApp_vue_vue_type_style_index_0_lang = require("./PreviewApp.vue_vue_type_style_index_0_lang-CSGhU0Km.cjs");
|
|
4
4
|
exports.default = PreviewApp_vue_vue_type_style_index_0_lang._sfc_main;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { defineComponent, inject, ref, h, provide, onMounted, onUnmounted, openBlock, createElementBlock, createVNode, unref, nextTick } from "vue";
|
|
2
|
-
import { h as BLOX_REGISTRY_KEY, r as resolveBlockProps, u as useLocale, j as BLOX_RUNTIME_KEY } from "./routes-
|
|
2
|
+
import { h as BLOX_REGISTRY_KEY, r as resolveBlockProps, u as useLocale, j as BLOX_RUNTIME_KEY } from "./routes-BLRBaLOB.js";
|
|
3
3
|
function sendToEditor(msg) {
|
|
4
4
|
window.parent.postMessage(cloneForPostMessage(msg), "*");
|
|
5
5
|
}
|
package/dist/api/types.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export interface Block {
|
|
|
7
7
|
}
|
|
8
8
|
export interface PageContent {
|
|
9
9
|
blocks: Block[];
|
|
10
|
+
structured_data?: Record<string, unknown> | null;
|
|
10
11
|
}
|
|
11
12
|
export interface PageRead {
|
|
12
13
|
id: string;
|
|
@@ -17,6 +18,7 @@ export interface PageRead {
|
|
|
17
18
|
meta_title: string | null;
|
|
18
19
|
meta_description: string | null;
|
|
19
20
|
og_image: string | null;
|
|
21
|
+
structured_data?: Record<string, unknown> | null;
|
|
20
22
|
noindex?: boolean;
|
|
21
23
|
canonical_url?: string | null;
|
|
22
24
|
status: ContentStatus;
|
package/dist/api/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,WAAW,GAAG,UAAU,CAAA;AAM9D,MAAM,WAAW,KAAK;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,wEAAwE;IACxE,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACtC;AAED,MAAM,WAAW,WAAW;IAC3B,MAAM,EAAE,KAAK,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"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"}
|
package/dist/index.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const routes = require("./routes-
|
|
4
|
-
const PreviewApp_vue_vue_type_style_index_0_lang = require("./PreviewApp.vue_vue_type_style_index_0_lang-
|
|
3
|
+
const routes = require("./routes-ClmCqqhk.cjs");
|
|
4
|
+
const PreviewApp_vue_vue_type_style_index_0_lang = require("./PreviewApp.vue_vue_type_style_index_0_lang-CSGhU0Km.cjs");
|
|
5
5
|
const vue = require("vue");
|
|
6
6
|
const vueRouter = require("vue-router");
|
|
7
7
|
const pinia = require("pinia");
|
package/dist/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { k as BLOX_LOCALE_STRATEGY_KEY, u as useLocale, n as normalizeLink, j as BLOX_RUNTIME_KEY, l as useSeo, m as getRegistryData, o as getItemBySlug, q as getItemById, t as getContentRoute, p as provideBloxData, f as createBlox, g as generateContentRoutes, v as installContentFallback, i as installLocaleAwareResolve, b as setActiveLocale, w as installSmartLinks, x as consumePendingLocaleSwitch, B as BLOX_DATA_WINDOW_KEY } from "./routes-
|
|
2
|
-
import { _, y, z, A, C, D, E, F, G, P, H, I, c, d, J, K, L, M, N, O, Q, R, S, T, U, V, r, W, s, X, Y, Z, $ } from "./routes-
|
|
3
|
-
import { _ as _2, P as P2, s as s2, a } from "./PreviewApp.vue_vue_type_style_index_0_lang-
|
|
1
|
+
import { k as BLOX_LOCALE_STRATEGY_KEY, u as useLocale, n as normalizeLink, j as BLOX_RUNTIME_KEY, l as useSeo, m as getRegistryData, o as getItemBySlug, q as getItemById, t as getContentRoute, p as provideBloxData, f as createBlox, g as generateContentRoutes, v as installContentFallback, i as installLocaleAwareResolve, b as setActiveLocale, w as installSmartLinks, x as consumePendingLocaleSwitch, B as BLOX_DATA_WINDOW_KEY } from "./routes-BLRBaLOB.js";
|
|
2
|
+
import { _, y, z, A, C, D, E, F, G, P, H, I, c, d, J, K, L, M, N, O, Q, R, S, T, U, V, r, W, s, X, Y, Z, $ } from "./routes-BLRBaLOB.js";
|
|
3
|
+
import { _ as _2, P as P2, s as s2, a } from "./PreviewApp.vue_vue_type_style_index_0_lang-DmbZlg5I.js";
|
|
4
4
|
import { defineComponent, resolveComponent, openBlock, createBlock, withCtx, Transition, resolveDynamicComponent, inject, ref, watch, onMounted, onUnmounted, computed, onServerPrefetch, toValue, h, Suspense, markRaw, createSSRApp, createApp } from "vue";
|
|
5
5
|
import { useRouter, useRoute } from "vue-router";
|
|
6
6
|
import { createPinia } from "pinia";
|
|
@@ -374,6 +374,12 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
374
374
|
isPreview: ref(false),
|
|
375
375
|
loading: computed(() => initialLoading.value || navigating.value)
|
|
376
376
|
});
|
|
377
|
+
function currentRoutePath() {
|
|
378
|
+
return typeof (route == null ? void 0 : route.path) === "string" && route.path ? route.path : typeof window !== "undefined" ? window.location.pathname || "/" : "/";
|
|
379
|
+
}
|
|
380
|
+
function currentRouteTarget(fallback) {
|
|
381
|
+
return typeof (route == null ? void 0 : route.fullPath) === "string" && route.fullPath ? route.fullPath : currentRoutePath() || fallback;
|
|
382
|
+
}
|
|
377
383
|
function navigableAlternates(alternates, resolvedSlug) {
|
|
378
384
|
const keys = Object.keys(alternates ?? {});
|
|
379
385
|
if (!keys.length) return { [locale2.value]: resolvedSlug };
|
|
@@ -417,9 +423,9 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
417
423
|
var _a;
|
|
418
424
|
if (strategy) {
|
|
419
425
|
const hostname = typeof window !== "undefined" ? ((_a = window.location) == null ? void 0 : _a.hostname) ?? "" : "";
|
|
420
|
-
return strategy.detect(hostname,
|
|
426
|
+
return strategy.detect(hostname, currentRoutePath()).slug;
|
|
421
427
|
}
|
|
422
|
-
return
|
|
428
|
+
return currentRoutePath();
|
|
423
429
|
})();
|
|
424
430
|
const ssrHydrated = tryHydrateFromState(initialSlug);
|
|
425
431
|
if (ssrHydrated) initialLoading.value = false;
|
|
@@ -427,14 +433,14 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
427
433
|
var _a;
|
|
428
434
|
notFound.value = false;
|
|
429
435
|
error.value = null;
|
|
430
|
-
const { locale: urlLocale, slug } = strategy ? strategy.detect(typeof window !== "undefined" ? window.location.hostname : "",
|
|
436
|
+
const { locale: urlLocale, slug } = strategy ? strategy.detect(typeof window !== "undefined" ? window.location.hostname : "", currentRoutePath()) : { locale: locale2.value, slug: currentRoutePath() };
|
|
431
437
|
if (urlLocale !== locale2.value) setLocale(urlLocale);
|
|
432
438
|
if (tryHydrateFromState(slug)) {
|
|
433
439
|
initialLoading.value = false;
|
|
434
440
|
return;
|
|
435
441
|
}
|
|
436
442
|
if (hasEmbeddedState() && typeof window !== "undefined") {
|
|
437
|
-
window.location.assign(
|
|
443
|
+
window.location.assign(currentRouteTarget(slug));
|
|
438
444
|
return;
|
|
439
445
|
}
|
|
440
446
|
navigating.value = true;
|
|
@@ -461,7 +467,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
461
467
|
if (!ssrHydrated) {
|
|
462
468
|
load();
|
|
463
469
|
}
|
|
464
|
-
watch(
|
|
470
|
+
watch(currentRoutePath, load);
|
|
465
471
|
onMounted(() => {
|
|
466
472
|
if (adminConfig && !websiteId.value) {
|
|
467
473
|
getWebsiteId().then((id) => {
|
|
@@ -939,7 +945,7 @@ class BloxInstance {
|
|
|
939
945
|
}
|
|
940
946
|
router.addRoute({
|
|
941
947
|
path: "/_blox_preview",
|
|
942
|
-
component: () => import("./PreviewApp-
|
|
948
|
+
component: () => import("./PreviewApp-B9SNVb5d.js"),
|
|
943
949
|
beforeEnter: () => window.parent !== window ? true : "/"
|
|
944
950
|
});
|
|
945
951
|
router.addRoute({ path: "/:pathMatch(.*)*", component: _sfc_main$2 });
|
|
@@ -375,6 +375,12 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
|
|
|
375
375
|
isPreview: vue.ref(false),
|
|
376
376
|
loading: vue.computed(() => initialLoading.value || navigating.value)
|
|
377
377
|
});
|
|
378
|
+
function currentRoutePath() {
|
|
379
|
+
return typeof (route == null ? void 0 : route.path) === "string" && route.path ? route.path : typeof window !== "undefined" ? window.location.pathname || "/" : "/";
|
|
380
|
+
}
|
|
381
|
+
function currentRouteTarget(fallback) {
|
|
382
|
+
return typeof (route == null ? void 0 : route.fullPath) === "string" && route.fullPath ? route.fullPath : currentRoutePath() || fallback;
|
|
383
|
+
}
|
|
378
384
|
function navigableAlternates(alternates, resolvedSlug) {
|
|
379
385
|
const keys = Object.keys(alternates ?? {});
|
|
380
386
|
if (!keys.length) return { [locale2.value]: resolvedSlug };
|
|
@@ -418,9 +424,9 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
|
|
|
418
424
|
var _a;
|
|
419
425
|
if (strategy) {
|
|
420
426
|
const hostname = typeof window !== "undefined" ? ((_a = window.location) == null ? void 0 : _a.hostname) ?? "" : "";
|
|
421
|
-
return strategy.detect(hostname,
|
|
427
|
+
return strategy.detect(hostname, currentRoutePath()).slug;
|
|
422
428
|
}
|
|
423
|
-
return
|
|
429
|
+
return currentRoutePath();
|
|
424
430
|
})();
|
|
425
431
|
const ssrHydrated = tryHydrateFromState(initialSlug);
|
|
426
432
|
if (ssrHydrated) initialLoading.value = false;
|
|
@@ -428,14 +434,14 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
|
|
|
428
434
|
var _a;
|
|
429
435
|
notFound.value = false;
|
|
430
436
|
error.value = null;
|
|
431
|
-
const { locale: urlLocale, slug } = strategy ? strategy.detect(typeof window !== "undefined" ? window.location.hostname : "",
|
|
437
|
+
const { locale: urlLocale, slug } = strategy ? strategy.detect(typeof window !== "undefined" ? window.location.hostname : "", currentRoutePath()) : { locale: locale2.value, slug: currentRoutePath() };
|
|
432
438
|
if (urlLocale !== locale2.value) setLocale(urlLocale);
|
|
433
439
|
if (tryHydrateFromState(slug)) {
|
|
434
440
|
initialLoading.value = false;
|
|
435
441
|
return;
|
|
436
442
|
}
|
|
437
443
|
if (hasEmbeddedState() && typeof window !== "undefined") {
|
|
438
|
-
window.location.assign(
|
|
444
|
+
window.location.assign(currentRouteTarget(slug));
|
|
439
445
|
return;
|
|
440
446
|
}
|
|
441
447
|
navigating.value = true;
|
|
@@ -462,7 +468,7 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
|
|
|
462
468
|
if (!ssrHydrated) {
|
|
463
469
|
load();
|
|
464
470
|
}
|
|
465
|
-
vue.watch(
|
|
471
|
+
vue.watch(currentRoutePath, load);
|
|
466
472
|
vue.onMounted(() => {
|
|
467
473
|
if (adminConfig && !websiteId.value) {
|
|
468
474
|
getWebsiteId().then((id) => {
|
|
@@ -940,7 +946,7 @@ class BloxInstance {
|
|
|
940
946
|
}
|
|
941
947
|
router.addRoute({
|
|
942
948
|
path: "/_blox_preview",
|
|
943
|
-
component: () => Promise.resolve().then(() => require("./PreviewApp-
|
|
949
|
+
component: () => Promise.resolve().then(() => require("./PreviewApp-DGaEtgeQ.cjs")),
|
|
944
950
|
beforeEnter: () => window.parent !== window ? true : "/"
|
|
945
951
|
});
|
|
946
952
|
router.addRoute({ path: "/:pathMatch(.*)*", component: _sfc_main$2 });
|
|
@@ -2,7 +2,7 @@ import { spawn } from "node:child_process";
|
|
|
2
2
|
import os from "node:os";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import process from "node:process";
|
|
5
|
-
import { f as fetchCmsSiteData, g as generateSitemapArtifacts } from "./validate-output-
|
|
5
|
+
import { f as fetchCmsSiteData, g as generateSitemapArtifacts } from "./validate-output-BrMtm33e.js";
|
|
6
6
|
const AUTO_SHARD_CAP = Number(process.env.BLOX_SSG_SHARD_CAP) || 6;
|
|
7
7
|
const PREFETCH_BUDGET = Number(process.env.BLOX_SSG_PREFETCH_BUDGET) || 24;
|
|
8
8
|
const SEQUENTIAL_SHARDS = process.env.BLOX_SSG_SEQUENTIAL === "1";
|
|
@@ -142,7 +142,7 @@ async function runSharded(opts) {
|
|
|
142
142
|
}
|
|
143
143
|
if (process.env.BLOX_SSG_LLM !== "0") {
|
|
144
144
|
try {
|
|
145
|
-
const { mergeLlmParts } = await import("./validate-output-
|
|
145
|
+
const { mergeLlmParts } = await import("./validate-output-BrMtm33e.js").then((n) => n.A);
|
|
146
146
|
const mergeWebsite = website;
|
|
147
147
|
const partFiles = Array.from({ length: total }, (_, i) => path.join(llmPartsDir, `part.${i}.json`));
|
|
148
148
|
const { pages } = await mergeLlmParts({
|
|
@@ -26,7 +26,7 @@ const node_child_process = require("node:child_process");
|
|
|
26
26
|
const os = require("node:os");
|
|
27
27
|
const path = require("node:path");
|
|
28
28
|
const process = require("node:process");
|
|
29
|
-
const llmArtifacts = require("./validate-output-
|
|
29
|
+
const llmArtifacts = require("./validate-output-DuIy6MyM.cjs");
|
|
30
30
|
const AUTO_SHARD_CAP = Number(process.env.BLOX_SSG_SHARD_CAP) || 6;
|
|
31
31
|
const PREFETCH_BUDGET = Number(process.env.BLOX_SSG_PREFETCH_BUDGET) || 24;
|
|
32
32
|
const SEQUENTIAL_SHARDS = process.env.BLOX_SSG_SEQUENTIAL === "1";
|
|
@@ -166,7 +166,7 @@ async function runSharded(opts) {
|
|
|
166
166
|
}
|
|
167
167
|
if (process.env.BLOX_SSG_LLM !== "0") {
|
|
168
168
|
try {
|
|
169
|
-
const { mergeLlmParts } = await Promise.resolve().then(() => require("./validate-output-
|
|
169
|
+
const { mergeLlmParts } = await Promise.resolve().then(() => require("./validate-output-DuIy6MyM.cjs")).then((n) => n.llmArtifacts);
|
|
170
170
|
const mergeWebsite = website;
|
|
171
171
|
const partFiles = Array.from({ length: total }, (_, i) => path.join(llmPartsDir, `part.${i}.json`));
|
|
172
172
|
const { pages } = await mergeLlmParts({
|
package/dist/ssg/cli.cjs
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
const process = require("node:process");
|
|
4
4
|
const fs = require("node:fs/promises");
|
|
5
5
|
const ssg_buildGrant = require("./build-grant.cjs");
|
|
6
|
-
const llmArtifacts = require("../validate-output-
|
|
6
|
+
const llmArtifacts = require("../validate-output-DuIy6MyM.cjs");
|
|
7
7
|
function installFetchTimeout() {
|
|
8
8
|
const ms = Number(process.env.BLOX_SSG_FETCH_TIMEOUT_MS) || 2e4;
|
|
9
9
|
const original = globalThis.fetch;
|
|
@@ -141,7 +141,7 @@ Environment:
|
|
|
141
141
|
if (shardsOpt !== null || routesCmd) {
|
|
142
142
|
const { apiBase: apiBase2, websiteName: configWebsiteName2 } = await resolveApiBase(mode);
|
|
143
143
|
const websiteName2 = process.env.WEBSITE_NAME ?? configWebsiteName2 ?? "default";
|
|
144
|
-
const { runSharded } = await Promise.resolve().then(() => require("../shard-runner-
|
|
144
|
+
const { runSharded } = await Promise.resolve().then(() => require("../shard-runner-C85NFl9i.cjs"));
|
|
145
145
|
const code = await runSharded({
|
|
146
146
|
shards: shardsOpt ?? "auto",
|
|
147
147
|
mode,
|
package/dist/ssg/cli.mjs
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import process from "node:process";
|
|
3
3
|
import fs from "node:fs/promises";
|
|
4
4
|
import { resolveBloxBuildGrant } from "./build-grant.mjs";
|
|
5
|
-
import { v as validateSsgOutput, u as uploadBloxManifest, p as polyfillBloxSsgGlobals, f as fetchCmsSiteData, a as prerender } from "../validate-output-
|
|
5
|
+
import { v as validateSsgOutput, u as uploadBloxManifest, p as polyfillBloxSsgGlobals, f as fetchCmsSiteData, a as prerender } from "../validate-output-BrMtm33e.js";
|
|
6
6
|
function installFetchTimeout() {
|
|
7
7
|
const ms = Number(process.env.BLOX_SSG_FETCH_TIMEOUT_MS) || 2e4;
|
|
8
8
|
const original = globalThis.fetch;
|
|
@@ -140,7 +140,7 @@ Environment:
|
|
|
140
140
|
if (shardsOpt !== null || routesCmd) {
|
|
141
141
|
const { apiBase: apiBase2, websiteName: configWebsiteName2 } = await resolveApiBase(mode);
|
|
142
142
|
const websiteName2 = process.env.WEBSITE_NAME ?? configWebsiteName2 ?? "default";
|
|
143
|
-
const { runSharded } = await import("../shard-runner-
|
|
143
|
+
const { runSharded } = await import("../shard-runner-BfYC7Pqz.js");
|
|
144
144
|
const code = await runSharded({
|
|
145
145
|
shards: shardsOpt ?? "auto",
|
|
146
146
|
mode,
|
package/dist/ssg/index.cjs
CHANGED
|
@@ -22,12 +22,12 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
22
22
|
mod
|
|
23
23
|
));
|
|
24
24
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
25
|
-
const llmArtifacts = require("../validate-output-
|
|
25
|
+
const llmArtifacts = require("../validate-output-DuIy6MyM.cjs");
|
|
26
26
|
const ssg_buildGrant = require("./build-grant.cjs");
|
|
27
27
|
const ssg_client = require("./client.cjs");
|
|
28
28
|
const pinia = require("pinia");
|
|
29
29
|
const vue = require("vue");
|
|
30
|
-
const routes = require("../routes-
|
|
30
|
+
const routes = require("../routes-ClmCqqhk.cjs");
|
|
31
31
|
async function renderBloxSsgPage(options) {
|
|
32
32
|
var _a, _b, _c, _d;
|
|
33
33
|
const {
|
|
@@ -50,7 +50,8 @@ async function renderBloxSsgPage(options) {
|
|
|
50
50
|
const { app, router, dataRegistry } = createAppForUrl(url, resolvedData, stateKey);
|
|
51
51
|
await router.push(url);
|
|
52
52
|
await router.isReady();
|
|
53
|
-
const
|
|
53
|
+
const ssrContext = {};
|
|
54
|
+
const html = await renderToString(app, ssrContext);
|
|
54
55
|
const stateScript = resolvedData != null ? `<script>window[${JSON.stringify(stateWindowKey)}]=${safeJson({ [stateKey]: resolvedData })};${"<"}/script>` : "";
|
|
55
56
|
const collectionsScript = "";
|
|
56
57
|
const websiteIdScript = websiteId ? `<script>window[${JSON.stringify(ssg_client.BLOX_WEBSITE_ID_WINDOW_KEY)}]=${JSON.stringify(websiteId)};${"<"}/script>` : "";
|
|
@@ -107,7 +108,7 @@ ${jsonLd}`;
|
|
|
107
108
|
}
|
|
108
109
|
const lang = locale || (website == null ? void 0 : website.default_locale) || "en";
|
|
109
110
|
const htmlAttrs = `lang="${lang}"`;
|
|
110
|
-
return { html, head, htmlAttrs, llm: llmEntry };
|
|
111
|
+
return { html, head, htmlAttrs, teleports: ssrContext.teleports, llm: llmEntry };
|
|
111
112
|
}
|
|
112
113
|
function safeJson(value) {
|
|
113
114
|
return JSON.stringify(value).replace(/</g, "\\u003c");
|
package/dist/ssg/index.mjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { b as buildPageHead, c as primaryContextEntry, d as buildJsonLd, e as extractPageText, B as BloxBuildResponseError, h as bloxBuildJson } from "../validate-output-
|
|
2
|
-
import { i, j, k, f, l, m, n, o, g, q, r, s, t, w, x, p, a, y, z, u, v } from "../validate-output-
|
|
1
|
+
import { b as buildPageHead, c as primaryContextEntry, d as buildJsonLd, e as extractPageText, B as BloxBuildResponseError, h as bloxBuildJson } from "../validate-output-BrMtm33e.js";
|
|
2
|
+
import { i, j, k, f, l, m, n, o, g, q, r, s, t, w, x, p, a, y, z, u, v } from "../validate-output-BrMtm33e.js";
|
|
3
3
|
import { parseBloxBuildGrantBody, resolveBloxBuildGrant } from "./build-grant.mjs";
|
|
4
4
|
import { BLOX_STATE_WINDOW_KEY, BLOX_WEBSITE_ID_WINDOW_KEY } from "./client.mjs";
|
|
5
5
|
import { BLOX_COLLECTIONS_WINDOW_KEY, BLOX_DATA_WINDOW_KEY, BLOX_PAGE_SEO_WINDOW_KEY, getCollectionCache, getEmbeddedWebsiteId, installBloxStateCache, installCollectionCache } from "./client.mjs";
|
|
6
6
|
import { createPinia } from "pinia";
|
|
7
7
|
import { createSSRApp, h, Suspense, markRaw } from "vue";
|
|
8
|
-
import { B as BLOX_DATA_WINDOW_KEY2, s as setApiOrigin, a as setCollectionResolver, b as setActiveLocale, c as collectBloxData, d as collectBloxSeo, p as provideBloxData, e as BLOX_SSR_ROUTE_STATE_KEY, f as createBlox, g as generateContentRoutes, i as installLocaleAwareResolve } from "../routes-
|
|
8
|
+
import { B as BLOX_DATA_WINDOW_KEY2, s as setApiOrigin, a as setCollectionResolver, b as setActiveLocale, c as collectBloxData, d as collectBloxSeo, p as provideBloxData, e as BLOX_SSR_ROUTE_STATE_KEY, f as createBlox, g as generateContentRoutes, i as installLocaleAwareResolve } from "../routes-BLRBaLOB.js";
|
|
9
9
|
async function renderBloxSsgPage(options) {
|
|
10
10
|
var _a, _b, _c, _d;
|
|
11
11
|
const {
|
|
@@ -28,7 +28,8 @@ async function renderBloxSsgPage(options) {
|
|
|
28
28
|
const { app, router, dataRegistry } = createAppForUrl(url, resolvedData, stateKey);
|
|
29
29
|
await router.push(url);
|
|
30
30
|
await router.isReady();
|
|
31
|
-
const
|
|
31
|
+
const ssrContext = {};
|
|
32
|
+
const html = await renderToString(app, ssrContext);
|
|
32
33
|
const stateScript = resolvedData != null ? `<script>window[${JSON.stringify(stateWindowKey)}]=${safeJson({ [stateKey]: resolvedData })};${"<"}/script>` : "";
|
|
33
34
|
const collectionsScript = "";
|
|
34
35
|
const websiteIdScript = websiteId ? `<script>window[${JSON.stringify(BLOX_WEBSITE_ID_WINDOW_KEY)}]=${JSON.stringify(websiteId)};${"<"}/script>` : "";
|
|
@@ -85,7 +86,7 @@ ${jsonLd}`;
|
|
|
85
86
|
}
|
|
86
87
|
const lang = locale || (website == null ? void 0 : website.default_locale) || "en";
|
|
87
88
|
const htmlAttrs = `lang="${lang}"`;
|
|
88
|
-
return { html, head, htmlAttrs, llm: llmEntry };
|
|
89
|
+
return { html, head, htmlAttrs, teleports: ssrContext.teleports, llm: llmEntry };
|
|
89
90
|
}
|
|
90
91
|
function safeJson(value) {
|
|
91
92
|
return JSON.stringify(value).replace(/</g, "\\u003c");
|
package/dist/ssg/prerender.d.ts
CHANGED
|
@@ -62,6 +62,8 @@ export interface RenderResult {
|
|
|
62
62
|
html: string;
|
|
63
63
|
head?: string;
|
|
64
64
|
htmlAttrs?: string;
|
|
65
|
+
/** Vue SSR Teleport output keyed by target selector. */
|
|
66
|
+
teleports?: Record<string, string>;
|
|
65
67
|
state?: unknown;
|
|
66
68
|
/** Optional ISO last-modified for this page → sitemap <lastmod>. */
|
|
67
69
|
lastmod?: string;
|
|
@@ -101,6 +103,7 @@ export declare function prerender({ root, clientOutDir, serverEntry, paths, craw
|
|
|
101
103
|
* prefetch (render resolves inline). Default 8.
|
|
102
104
|
*/
|
|
103
105
|
resolvePrefetchConcurrency, appPaths, includeRoot, routePartsFile, mode, website, websiteId, redirects, collections, llm, }?: PrerenderOptions): Promise<PrerenderResult>;
|
|
104
|
-
export declare function injectIntoTemplate(template: string, head: string, appHtml: string, fontPreloads: string, htmlAttrs?: string): string;
|
|
106
|
+
export declare function injectIntoTemplate(template: string, head: string, appHtml: string, fontPreloads: string, htmlAttrs?: string, teleports?: Record<string, string>): string;
|
|
107
|
+
export declare function injectTeleports(html: string, teleports: Record<string, string>): string;
|
|
105
108
|
export {};
|
|
106
109
|
//# sourceMappingURL=prerender.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prerender.d.ts","sourceRoot":"","sources":["../../src/ssg/prerender.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"prerender.d.ts","sourceRoot":"","sources":["../../src/ssg/prerender.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAgBvE,KAAK,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,CAAA;AAEhE,MAAM,WAAW,gBAAgB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,YAAY,CAAC,EAAE,WAAW,GAAG,WAAW,EAAE,CAAA;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,6FAA6F;IAC7F,0BAA0B,CAAC,EAAE,MAAM,CAAA;IACnC,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,wEAAwE;IACxE,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,iFAAiF;IACjF,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,IAAI,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;IACrB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;IAC5B,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,kDAAkD;IAClD,SAAS,CAAC,EAAE,aAAa,EAAE,CAAA;IAC3B,qEAAqE;IACrE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;IACvC,wEAAwE;IACxE,GAAG,CAAC,EAAE,kBAAkB,CAAA;CACxB;AAED,MAAM,WAAW,aAAa;IAC7B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAA;IACzC,QAAQ,EAAE,MAAM,CAAA;IAChB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;IAC5B,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,qEAAqE;IACrE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;IACvC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,0EAA0E;IAC1E,GAAG,CAAC,EAAE,kBAAkB,CAAA;CACxB;AAED,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,4EAA4E;IAC5E,GAAG,CAAC,EAAE,YAAY,CAAA;CAClB;AAQD,MAAM,WAAW,eAAe;IAC/B,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;IAC7D,eAAe,EAAE,MAAM,CAAA;IACvB,eAAe,EAAE,MAAM,CAAA;CACvB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,SAAS,CAAC,EAC/B,IAAoB,EACpB,YAA4B,EAC5B,WAA0C,EAC1C,KAAU,EACV,KAAY,EACZ,YAAiB,EACjB,QAAgB,EAChB,QAAe,EACf,WAAe,EACf,iBAAwB;AACxB;;;;;;;;;GASG;AACH,0BAA8B,EAC9B,QAAa,EACb,WAAkB,EAClB,cAAc,EACd,IAAY,EACZ,OAAc,EACd,SAAc,EACd,SAAc,EACd,WAAgB,EAChB,GAAQ,GACR,GAAE,gBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC,CAoTlD;AA4FD,wBAAgB,kBAAkB,CACjC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,SAAS,SAAK,EACd,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GACpC,MAAM,CA+CR;AAED,wBAAgB,eAAe,CAC9B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,MAAM,CA2BR"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { WebsiteRead } from '../api/types';
|
|
2
2
|
import { BloxDataRegistry, BloxSeoHead } from '../data/useData';
|
|
3
3
|
import { LlmArtifactsConfig, LlmPageEntry } from './llm-artifacts';
|
|
4
|
+
interface BloxSsrContext {
|
|
5
|
+
teleports?: Record<string, string>;
|
|
6
|
+
}
|
|
4
7
|
export interface BloxSsgRouterLike {
|
|
5
8
|
push: (url: string) => Promise<void>;
|
|
6
9
|
isReady: () => Promise<void>;
|
|
@@ -20,7 +23,7 @@ export interface BloxSsgRouterLike {
|
|
|
20
23
|
export declare function renderBloxSsgPage<TApp>(options: {
|
|
21
24
|
url: string;
|
|
22
25
|
resolvedData: unknown | null;
|
|
23
|
-
renderToString: (app: TApp) => Promise<string>;
|
|
26
|
+
renderToString: (app: TApp, context?: BloxSsrContext) => Promise<string>;
|
|
24
27
|
createAppForUrl: (url: string, resolvedData: unknown | null, stateKey: string) => {
|
|
25
28
|
app: TApp;
|
|
26
29
|
router: BloxSsgRouterLike;
|
|
@@ -51,8 +54,10 @@ export declare function renderBloxSsgPage<TApp>(options: {
|
|
|
51
54
|
html: string;
|
|
52
55
|
head?: string;
|
|
53
56
|
htmlAttrs?: string;
|
|
57
|
+
teleports?: Record<string, string>;
|
|
54
58
|
llm?: LlmPageEntry;
|
|
55
59
|
}>;
|
|
56
60
|
/** JSON for embedding in a <script> tag — escapes `<` so `</script>` can't break out. */
|
|
57
61
|
export declare function safeJson(value: unknown): string;
|
|
62
|
+
export {};
|
|
58
63
|
//# sourceMappingURL=render-resolved-page.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-resolved-page.d.ts","sourceRoot":"","sources":["../../src/ssg/render-resolved-page.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAIpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAGvE,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACpC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC5B;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE;IACtD,GAAG,EAAE,MAAM,CAAA;IACX,YAAY,EAAE,OAAO,GAAG,IAAI,CAAA;IAC5B,cAAc,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"render-resolved-page.d.ts","sourceRoot":"","sources":["../../src/ssg/render-resolved-page.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAIpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAGvE,UAAU,cAAc;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAClC;AAED,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACpC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC5B;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE;IACtD,GAAG,EAAE,MAAM,CAAA;IACX,YAAY,EAAE,OAAO,GAAG,IAAI,CAAA;IAC5B,cAAc,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IACxE,eAAe,EAAE,CAChB,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,OAAO,GAAG,IAAI,EAC5B,QAAQ,EAAE,MAAM,KACZ;QAAE,GAAG,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,iBAAiB,CAAC;QAAC,YAAY,CAAC,EAAE,gBAAgB,CAAA;KAAE,CAAA;IAC9E,8EAA8E;IAC9E,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrE,sEAAsE;IACtE,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,WAAW,CAAA;IACxD,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+EAA+E;IAC/E,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;IAC5B,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;IACvC,8EAA8E;IAC9E,GAAG,CAAC,EAAE,kBAAkB,CAAA;CACxB,GAAG,OAAO,CAAC;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,GAAG,CAAC,EAAE,YAAY,CAAA;CAClB,CAAC,CAuHD;AAED,yFAAyF;AACzF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE/C"}
|
package/dist/ssg/seo.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export interface SeoPageData {
|
|
|
10
10
|
* Prefers `structured_data.org_by_locale[locale]` then falls back to the
|
|
11
11
|
* site-wide `structured_data.org`. Returns a serialized `<script>` tag or ''.
|
|
12
12
|
*/
|
|
13
|
-
export declare function buildStructuredData(sd: StructuredData | null | undefined, locale?: string): string;
|
|
13
|
+
export declare function buildStructuredData(sd: StructuredData | Record<string, unknown> | null | undefined, locale?: string): string;
|
|
14
14
|
export interface RedirectEntry {
|
|
15
15
|
from_path: string;
|
|
16
16
|
to_path: string;
|
package/dist/ssg/seo.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seo.d.ts","sourceRoot":"","sources":["../../src/ssg/seo.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAOzE,4DAA4D;AAC5D,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,QAAQ,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAA;CACzD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"seo.d.ts","sourceRoot":"","sources":["../../src/ssg/seo.ts"],"names":[],"mappings":"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"}
|
|
@@ -325,8 +325,9 @@ async function polyfillBloxSsgGlobals(options) {
|
|
|
325
325
|
function buildStructuredData(sd, locale) {
|
|
326
326
|
var _a;
|
|
327
327
|
if (!sd) return "";
|
|
328
|
-
const
|
|
329
|
-
const
|
|
328
|
+
const siteData = "org" in sd || "org_by_locale" in sd;
|
|
329
|
+
const perLocale = siteData && locale ? (_a = sd.org_by_locale) == null ? void 0 : _a[locale] : void 0;
|
|
330
|
+
const value = siteData ? perLocale ?? sd.org : sd;
|
|
330
331
|
if (value == null || typeof value === "string" && value === "") return "";
|
|
331
332
|
try {
|
|
332
333
|
const json = typeof value === "string" ? value : JSON.stringify(value);
|
|
@@ -402,6 +403,8 @@ function buildPageHead(options) {
|
|
|
402
403
|
}
|
|
403
404
|
const structuredData = buildStructuredData(website == null ? void 0 : website.structured_data, locale || (website == null ? void 0 : website.default_locale));
|
|
404
405
|
if (structuredData) parts.push(structuredData);
|
|
406
|
+
const pageStructuredData = buildStructuredData(page == null ? void 0 : page.structured_data);
|
|
407
|
+
if (pageStructuredData) parts.push(pageStructuredData);
|
|
405
408
|
if (stateScript) {
|
|
406
409
|
parts.push(stateScript);
|
|
407
410
|
}
|
|
@@ -944,6 +947,7 @@ async function prerender({
|
|
|
944
947
|
html,
|
|
945
948
|
head = "",
|
|
946
949
|
htmlAttrs = "",
|
|
950
|
+
teleports = {},
|
|
947
951
|
lastmod: pageLastmod,
|
|
948
952
|
llm: pageLlm
|
|
949
953
|
} = await serverMod.render(urlPath, {
|
|
@@ -955,7 +959,7 @@ async function prerender({
|
|
|
955
959
|
resolveCache,
|
|
956
960
|
llm
|
|
957
961
|
});
|
|
958
|
-
const outHtml = injectIntoTemplate(template, head, html, fontPreloads, htmlAttrs);
|
|
962
|
+
const outHtml = injectIntoTemplate(template, head, html, fontPreloads, htmlAttrs, teleports);
|
|
959
963
|
const outfile = outFilePath(absClient, urlPath, mode);
|
|
960
964
|
await fs.mkdir(path.dirname(outfile), { recursive: true });
|
|
961
965
|
await fs.writeFile(outfile, outHtml, "utf8");
|
|
@@ -1137,7 +1141,7 @@ async function discoverFontPreloads(clientOutDir) {
|
|
|
1137
1141
|
}
|
|
1138
1142
|
return [...seen].map((href) => `<link rel="preload" as="font" type="font/woff2" crossorigin href="${href}">`).join("\n");
|
|
1139
1143
|
}
|
|
1140
|
-
function injectIntoTemplate(template, head, appHtml, fontPreloads, htmlAttrs = "") {
|
|
1144
|
+
function injectIntoTemplate(template, head, appHtml, fontPreloads, htmlAttrs = "", teleports = {}) {
|
|
1141
1145
|
let out = template;
|
|
1142
1146
|
if (template.includes("<!--app-html-->")) {
|
|
1143
1147
|
out = template.replace("<!--app-html-->", appHtml);
|
|
@@ -1176,6 +1180,38 @@ ${head}`;
|
|
|
1176
1180
|
out = out.replace("</head>", `${head}
|
|
1177
1181
|
</head>`);
|
|
1178
1182
|
}
|
|
1183
|
+
out = injectTeleports(out, teleports);
|
|
1184
|
+
return out;
|
|
1185
|
+
}
|
|
1186
|
+
function injectTeleports(html, teleports) {
|
|
1187
|
+
var _a;
|
|
1188
|
+
let out = html;
|
|
1189
|
+
for (const [target, content] of Object.entries(teleports)) {
|
|
1190
|
+
if (!content) continue;
|
|
1191
|
+
if (target === "body") {
|
|
1192
|
+
out = out.replace("</body>", `${content}
|
|
1193
|
+
</body>`);
|
|
1194
|
+
continue;
|
|
1195
|
+
}
|
|
1196
|
+
if (target === "head") {
|
|
1197
|
+
out = out.replace("</head>", `${content}
|
|
1198
|
+
</head>`);
|
|
1199
|
+
continue;
|
|
1200
|
+
}
|
|
1201
|
+
const id = (_a = target.match(/^#([A-Za-z][\w:.-]*)$/)) == null ? void 0 : _a[1];
|
|
1202
|
+
if (!id) {
|
|
1203
|
+
throw new Error(`Unsupported SSR teleport target: ${target}`);
|
|
1204
|
+
}
|
|
1205
|
+
const targetPattern = new RegExp(
|
|
1206
|
+
`(<([A-Za-z][\\w:-]*)[^>]*\\bid=["']${id}["'][^>]*>)([\\s\\S]*?)(</\\2>)`
|
|
1207
|
+
);
|
|
1208
|
+
if (targetPattern.test(out)) {
|
|
1209
|
+
out = out.replace(targetPattern, `$1$3${content}$4`);
|
|
1210
|
+
} else {
|
|
1211
|
+
out = out.replace("</body>", `<div id="${id}">${content}</div>
|
|
1212
|
+
</body>`);
|
|
1213
|
+
}
|
|
1214
|
+
}
|
|
1179
1215
|
return out;
|
|
1180
1216
|
}
|
|
1181
1217
|
function outFilePath(absClientDir, urlPath, mode) {
|
|
@@ -348,8 +348,9 @@ async function polyfillBloxSsgGlobals(options) {
|
|
|
348
348
|
function buildStructuredData(sd, locale) {
|
|
349
349
|
var _a;
|
|
350
350
|
if (!sd) return "";
|
|
351
|
-
const
|
|
352
|
-
const
|
|
351
|
+
const siteData = "org" in sd || "org_by_locale" in sd;
|
|
352
|
+
const perLocale = siteData && locale ? (_a = sd.org_by_locale) == null ? void 0 : _a[locale] : void 0;
|
|
353
|
+
const value = siteData ? perLocale ?? sd.org : sd;
|
|
353
354
|
if (value == null || typeof value === "string" && value === "") return "";
|
|
354
355
|
try {
|
|
355
356
|
const json = typeof value === "string" ? value : JSON.stringify(value);
|
|
@@ -425,6 +426,8 @@ function buildPageHead(options) {
|
|
|
425
426
|
}
|
|
426
427
|
const structuredData = buildStructuredData(website == null ? void 0 : website.structured_data, locale || (website == null ? void 0 : website.default_locale));
|
|
427
428
|
if (structuredData) parts.push(structuredData);
|
|
429
|
+
const pageStructuredData = buildStructuredData(page == null ? void 0 : page.structured_data);
|
|
430
|
+
if (pageStructuredData) parts.push(pageStructuredData);
|
|
428
431
|
if (stateScript) {
|
|
429
432
|
parts.push(stateScript);
|
|
430
433
|
}
|
|
@@ -967,6 +970,7 @@ async function prerender({
|
|
|
967
970
|
html,
|
|
968
971
|
head = "",
|
|
969
972
|
htmlAttrs = "",
|
|
973
|
+
teleports = {},
|
|
970
974
|
lastmod: pageLastmod,
|
|
971
975
|
llm: pageLlm
|
|
972
976
|
} = await serverMod.render(urlPath, {
|
|
@@ -978,7 +982,7 @@ async function prerender({
|
|
|
978
982
|
resolveCache,
|
|
979
983
|
llm
|
|
980
984
|
});
|
|
981
|
-
const outHtml = injectIntoTemplate(template, head, html, fontPreloads, htmlAttrs);
|
|
985
|
+
const outHtml = injectIntoTemplate(template, head, html, fontPreloads, htmlAttrs, teleports);
|
|
982
986
|
const outfile = outFilePath(absClient, urlPath, mode);
|
|
983
987
|
await fs.mkdir(path.dirname(outfile), { recursive: true });
|
|
984
988
|
await fs.writeFile(outfile, outHtml, "utf8");
|
|
@@ -1160,7 +1164,7 @@ async function discoverFontPreloads(clientOutDir) {
|
|
|
1160
1164
|
}
|
|
1161
1165
|
return [...seen].map((href) => `<link rel="preload" as="font" type="font/woff2" crossorigin href="${href}">`).join("\n");
|
|
1162
1166
|
}
|
|
1163
|
-
function injectIntoTemplate(template, head, appHtml, fontPreloads, htmlAttrs = "") {
|
|
1167
|
+
function injectIntoTemplate(template, head, appHtml, fontPreloads, htmlAttrs = "", teleports = {}) {
|
|
1164
1168
|
let out = template;
|
|
1165
1169
|
if (template.includes("<!--app-html-->")) {
|
|
1166
1170
|
out = template.replace("<!--app-html-->", appHtml);
|
|
@@ -1199,6 +1203,38 @@ ${head}`;
|
|
|
1199
1203
|
out = out.replace("</head>", `${head}
|
|
1200
1204
|
</head>`);
|
|
1201
1205
|
}
|
|
1206
|
+
out = injectTeleports(out, teleports);
|
|
1207
|
+
return out;
|
|
1208
|
+
}
|
|
1209
|
+
function injectTeleports(html, teleports) {
|
|
1210
|
+
var _a;
|
|
1211
|
+
let out = html;
|
|
1212
|
+
for (const [target, content] of Object.entries(teleports)) {
|
|
1213
|
+
if (!content) continue;
|
|
1214
|
+
if (target === "body") {
|
|
1215
|
+
out = out.replace("</body>", `${content}
|
|
1216
|
+
</body>`);
|
|
1217
|
+
continue;
|
|
1218
|
+
}
|
|
1219
|
+
if (target === "head") {
|
|
1220
|
+
out = out.replace("</head>", `${content}
|
|
1221
|
+
</head>`);
|
|
1222
|
+
continue;
|
|
1223
|
+
}
|
|
1224
|
+
const id = (_a = target.match(/^#([A-Za-z][\w:.-]*)$/)) == null ? void 0 : _a[1];
|
|
1225
|
+
if (!id) {
|
|
1226
|
+
throw new Error(`Unsupported SSR teleport target: ${target}`);
|
|
1227
|
+
}
|
|
1228
|
+
const targetPattern = new RegExp(
|
|
1229
|
+
`(<([A-Za-z][\\w:-]*)[^>]*\\bid=["']${id}["'][^>]*>)([\\s\\S]*?)(</\\2>)`
|
|
1230
|
+
);
|
|
1231
|
+
if (targetPattern.test(out)) {
|
|
1232
|
+
out = out.replace(targetPattern, `$1$3${content}$4`);
|
|
1233
|
+
} else {
|
|
1234
|
+
out = out.replace("</body>", `<div id="${id}">${content}</div>
|
|
1235
|
+
</body>`);
|
|
1236
|
+
}
|
|
1237
|
+
}
|
|
1202
1238
|
return out;
|
|
1203
1239
|
}
|
|
1204
1240
|
function outFilePath(absClientDir, urlPath, mode) {
|
package/dist/vite-plugin.cjs
CHANGED
|
@@ -33,7 +33,8 @@ function bloxPlugin(options = {}) {
|
|
|
33
33
|
plugins.push({
|
|
34
34
|
name: "vite-plugin-blox-ssr",
|
|
35
35
|
enforce: "pre",
|
|
36
|
-
config(
|
|
36
|
+
config(config, { command }) {
|
|
37
|
+
var _a, _b;
|
|
37
38
|
const cwd = process.cwd();
|
|
38
39
|
function resolveVuePaths() {
|
|
39
40
|
const bases = [path.join(cwd, "..", "package.json"), path.join(cwd, "package.json")];
|
|
@@ -69,6 +70,15 @@ function bloxPlugin(options = {}) {
|
|
|
69
70
|
alias
|
|
70
71
|
}
|
|
71
72
|
};
|
|
73
|
+
if (command === "build") {
|
|
74
|
+
const output = (_b = (_a = config.build) == null ? void 0 : _a.rollupOptions) == null ? void 0 : _b.output;
|
|
75
|
+
const assetFileNames = "assets/[name][extname]";
|
|
76
|
+
ssrConfig.build = {
|
|
77
|
+
rollupOptions: {
|
|
78
|
+
output: Array.isArray(output) ? output.map((item) => ({ assetFileNames, ...item })) : { assetFileNames, ...output }
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
}
|
|
72
82
|
return ssrConfig;
|
|
73
83
|
}
|
|
74
84
|
});
|
package/dist/vite-plugin.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export interface BloxPluginOptions {
|
|
|
3
3
|
/**
|
|
4
4
|
* Enable SSR-aware config injection.
|
|
5
5
|
* When true, adds `resolve.dedupe`, `resolve.alias` for Vue,
|
|
6
|
-
*
|
|
6
|
+
* SSR build rollup options, and stable local asset filenames automatically.
|
|
7
7
|
* @default false
|
|
8
8
|
*/
|
|
9
9
|
ssr?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite-plugin.d.ts","sourceRoot":"","sources":["../src/vite-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAc,MAAM,MAAM,CAAA;AAM9C,MAAM,WAAW,iBAAiB;IACjC;;;;;OAKG;IACH,GAAG,CAAC,EAAE,OAAO,CAAA;IACb;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB;;;;;;;;;;;;;OAaG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;CACzB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"vite-plugin.d.ts","sourceRoot":"","sources":["../src/vite-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAc,MAAM,MAAM,CAAA;AAM9C,MAAM,WAAW,iBAAiB;IACjC;;;;;OAKG;IACH,GAAG,CAAC,EAAE,OAAO,CAAA;IACb;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB;;;;;;;;;;;;;OAaG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;CACzB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,MAAM,EAAE,CAuhBpE"}
|
package/dist/vite-plugin.mjs
CHANGED
|
@@ -9,7 +9,8 @@ function bloxPlugin(options = {}) {
|
|
|
9
9
|
plugins.push({
|
|
10
10
|
name: "vite-plugin-blox-ssr",
|
|
11
11
|
enforce: "pre",
|
|
12
|
-
config(
|
|
12
|
+
config(config, { command }) {
|
|
13
|
+
var _a, _b;
|
|
13
14
|
const cwd = process.cwd();
|
|
14
15
|
function resolveVuePaths() {
|
|
15
16
|
const bases = [join(cwd, "..", "package.json"), join(cwd, "package.json")];
|
|
@@ -45,6 +46,15 @@ function bloxPlugin(options = {}) {
|
|
|
45
46
|
alias
|
|
46
47
|
}
|
|
47
48
|
};
|
|
49
|
+
if (command === "build") {
|
|
50
|
+
const output = (_b = (_a = config.build) == null ? void 0 : _a.rollupOptions) == null ? void 0 : _b.output;
|
|
51
|
+
const assetFileNames = "assets/[name][extname]";
|
|
52
|
+
ssrConfig.build = {
|
|
53
|
+
rollupOptions: {
|
|
54
|
+
output: Array.isArray(output) ? output.map((item) => ({ assetFileNames, ...item })) : { assetFileNames, ...output }
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
}
|
|
48
58
|
return ssrConfig;
|
|
49
59
|
}
|
|
50
60
|
});
|
package/package.json
CHANGED