@bagelink/blox 1.15.174 → 1.15.178
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/{PreviewApp-Dz003khp.cjs → PreviewApp-B8EmNfyH.cjs} +1 -1
- package/dist/{PreviewApp-CsC6qej1.js → PreviewApp-DdkAQqw2.js} +1 -1
- package/dist/{PreviewApp.vue_vue_type_style_index_0_lang-C1SwhjdY.js → PreviewApp.vue_vue_type_style_index_0_lang-1JKQVLm2.js} +1 -1
- package/dist/{PreviewApp.vue_vue_type_style_index_0_lang-BNKK7Vhs.cjs → PreviewApp.vue_vue_type_style_index_0_lang-CPBuld3j.cjs} +1 -1
- package/dist/components/BloxRouterView.vue.d.ts +18 -0
- package/dist/components/BloxRouterView.vue.d.ts.map +1 -0
- package/dist/composables/useData.d.ts +22 -0
- package/dist/composables/useData.d.ts.map +1 -0
- package/dist/composables/useLocaleNav.d.ts +8 -0
- package/dist/composables/useLocaleNav.d.ts.map +1 -1
- package/dist/composables/useSeo.d.ts +20 -0
- package/dist/composables/useSeo.d.ts.map +1 -0
- package/dist/content/ContentDetailHost.vue.d.ts +3 -0
- package/dist/content/ContentDetailHost.vue.d.ts.map +1 -0
- package/dist/content/defineContent.d.ts +22 -0
- package/dist/content/defineContent.d.ts.map +1 -0
- package/dist/content/useContentItem.d.ts +6 -0
- package/dist/content/useContentItem.d.ts.map +1 -0
- package/dist/content/useContentSeo.d.ts +10 -0
- package/dist/content/useContentSeo.d.ts.map +1 -0
- package/dist/{core-CbOrSpOU.js → core-Bp2bf8e4.js} +187 -33
- package/dist/{core-fPjj9xyJ.cjs → core-KRHc4Bob.cjs} +171 -17
- package/dist/core.d.ts.map +1 -1
- package/dist/index.cjs +121 -4
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +141 -23
- package/dist/{prerender-BLECK5o5.cjs → prerender-H72-UrK4.cjs} +11 -11
- package/dist/{prerender-CzpA4sYd.js → prerender-NHAqrTm3.js} +11 -11
- package/dist/routing/withLocaleRoutes.d.ts +8 -0
- package/dist/routing/withLocaleRoutes.d.ts.map +1 -0
- package/dist/ssg/cli.cjs +1 -1
- package/dist/ssg/cli.mjs +1 -1
- package/dist/ssg/client.cjs +4 -0
- package/dist/ssg/client.d.ts +1 -1
- package/dist/ssg/client.d.ts.map +1 -1
- package/dist/ssg/client.mjs +4 -0
- package/dist/ssg/constants.d.ts +4 -0
- package/dist/ssg/constants.d.ts.map +1 -1
- package/dist/ssg/index.cjs +18 -3
- package/dist/ssg/index.d.ts +1 -1
- package/dist/ssg/index.d.ts.map +1 -1
- package/dist/ssg/index.mjs +20 -5
- package/dist/ssg/render-resolved-page.d.ts.map +1 -1
- package/dist/ssg/seo.d.ts +7 -0
- package/dist/ssg/seo.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { a as BLOX_LOCALE_STRATEGY_KEY, u as useLocale, n as normalizeLink, c as createBlox, i as installSmartLinks } from "./core-
|
|
2
|
-
import { _, b, d, e, f, h, j,
|
|
3
|
-
import { _ as _2, P as P2, s as s2, a } from "./PreviewApp.vue_vue_type_style_index_0_lang-
|
|
4
|
-
import { ref, onMounted, onUnmounted, inject, computed, createApp, markRaw } from "vue";
|
|
5
|
-
import { useRouter } from "vue-router";
|
|
1
|
+
import { a as BLOX_LOCALE_STRATEGY_KEY, u as useLocale, n as normalizeLink, c as createBlox, i as installSmartLinks } from "./core-Bp2bf8e4.js";
|
|
2
|
+
import { _, b, d, e, f, h, j, k, G, l, P, m, o, p, q, r, s, g, t, v, w, x, y, z, A, C, D, E } from "./core-Bp2bf8e4.js";
|
|
3
|
+
import { _ as _2, P as P2, s as s2, a } from "./PreviewApp.vue_vue_type_style_index_0_lang-1JKQVLm2.js";
|
|
4
|
+
import { ref, onMounted, onUnmounted, inject, computed, toValue, onServerPrefetch, watch, defineComponent, resolveComponent, openBlock, createBlock, Suspense, withCtx, createVNode, resolveDynamicComponent, renderSlot, createApp, markRaw } from "vue";
|
|
5
|
+
import { useRouter, useRoute } from "vue-router";
|
|
6
|
+
import { BLOX_PAGE_SEO_WINDOW_KEY, installBloxStateCache, installCollectionCache } from "./ssg/client.mjs";
|
|
7
|
+
import { BLOX_DATA_WINDOW_KEY } from "./ssg/client.mjs";
|
|
6
8
|
import { createPinia } from "pinia";
|
|
7
|
-
import { installBloxStateCache, installCollectionCache } from "./ssg/client.mjs";
|
|
8
9
|
function useGlobalBlock(blockType, loader) {
|
|
9
10
|
const data = ref(null);
|
|
10
11
|
const loading = ref(false);
|
|
@@ -41,6 +42,12 @@ function useLocaleNav() {
|
|
|
41
42
|
const strategy = inject(BLOX_LOCALE_STRATEGY_KEY, null);
|
|
42
43
|
const router = useRouter();
|
|
43
44
|
const { locale, currentAlternates } = useLocale();
|
|
45
|
+
const availableLocales = computed(() => {
|
|
46
|
+
var _a;
|
|
47
|
+
const alts = Object.keys(currentAlternates.value ?? {});
|
|
48
|
+
if (alts.length) return alts;
|
|
49
|
+
return ((_a = strategy == null ? void 0 : strategy.locales) == null ? void 0 : _a.length) ? [...strategy.locales] : [];
|
|
50
|
+
});
|
|
44
51
|
function switchLocale(targetLocale) {
|
|
45
52
|
if (!strategy) return;
|
|
46
53
|
const alts = currentAlternates.value;
|
|
@@ -55,7 +62,12 @@ function useLocaleNav() {
|
|
|
55
62
|
const loc = String(locale.value || "").slice(0, 2).toLowerCase();
|
|
56
63
|
return strategy.toPath(normalized, loc || void 0);
|
|
57
64
|
}
|
|
58
|
-
|
|
65
|
+
function detect(path) {
|
|
66
|
+
const hostname = typeof window !== "undefined" ? window.location.hostname : "";
|
|
67
|
+
if (!strategy) return { locale: String(locale.value || "en"), slug: path || "/" };
|
|
68
|
+
return strategy.detect(hostname, path);
|
|
69
|
+
}
|
|
70
|
+
return { switchLocale, toPath, locale, availableLocales, detect };
|
|
59
71
|
}
|
|
60
72
|
function usePageContext(key) {
|
|
61
73
|
const contexts = inject("contexts");
|
|
@@ -65,6 +77,101 @@ function usePageContext(key) {
|
|
|
65
77
|
return value;
|
|
66
78
|
});
|
|
67
79
|
}
|
|
80
|
+
function isServer() {
|
|
81
|
+
try {
|
|
82
|
+
if (false) ;
|
|
83
|
+
} catch {
|
|
84
|
+
}
|
|
85
|
+
return typeof window === "undefined";
|
|
86
|
+
}
|
|
87
|
+
function writePayload(seo) {
|
|
88
|
+
const root = typeof window !== "undefined" ? window : globalThis;
|
|
89
|
+
if (!seo) {
|
|
90
|
+
delete root[BLOX_PAGE_SEO_WINDOW_KEY];
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
root[BLOX_PAGE_SEO_WINDOW_KEY] = { ...seo };
|
|
94
|
+
}
|
|
95
|
+
function applyClientHead(seo) {
|
|
96
|
+
if (typeof document === "undefined" || !seo) return;
|
|
97
|
+
if (seo.title) document.title = seo.title;
|
|
98
|
+
const ensureMeta = (attr, key, content) => {
|
|
99
|
+
let el = document.head.querySelector(`meta[${attr}="${key}"]`);
|
|
100
|
+
if (!el) {
|
|
101
|
+
el = document.createElement("meta");
|
|
102
|
+
el.setAttribute(attr, key);
|
|
103
|
+
document.head.appendChild(el);
|
|
104
|
+
}
|
|
105
|
+
el.setAttribute("content", content);
|
|
106
|
+
};
|
|
107
|
+
if (seo.description) {
|
|
108
|
+
ensureMeta("name", "description", seo.description);
|
|
109
|
+
ensureMeta("property", "og:description", seo.description);
|
|
110
|
+
}
|
|
111
|
+
if (seo.title) {
|
|
112
|
+
ensureMeta("property", "og:title", seo.title);
|
|
113
|
+
}
|
|
114
|
+
if (seo.image) {
|
|
115
|
+
ensureMeta("property", "og:image", seo.image);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
function useSeo(getter) {
|
|
119
|
+
const resolved = computed(() => toValue(getter) ?? null);
|
|
120
|
+
function sync() {
|
|
121
|
+
const seo = resolved.value;
|
|
122
|
+
writePayload(seo ?? void 0);
|
|
123
|
+
if (!isServer()) applyClientHead(seo ?? void 0);
|
|
124
|
+
}
|
|
125
|
+
if (isServer()) {
|
|
126
|
+
onServerPrefetch(() => {
|
|
127
|
+
sync();
|
|
128
|
+
});
|
|
129
|
+
sync();
|
|
130
|
+
} else {
|
|
131
|
+
watch(resolved, sync, { immediate: true, deep: true });
|
|
132
|
+
}
|
|
133
|
+
onUnmounted(() => {
|
|
134
|
+
writePayload(void 0);
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
138
|
+
__name: "BloxRouterView",
|
|
139
|
+
setup(__props) {
|
|
140
|
+
return (_ctx, _cache) => {
|
|
141
|
+
const _component_RouterView = resolveComponent("RouterView");
|
|
142
|
+
return openBlock(), createBlock(Suspense, null, {
|
|
143
|
+
fallback: withCtx(() => [
|
|
144
|
+
renderSlot(_ctx.$slots, "fallback")
|
|
145
|
+
]),
|
|
146
|
+
default: withCtx(() => [
|
|
147
|
+
createVNode(_component_RouterView, null, {
|
|
148
|
+
default: withCtx(({ Component }) => [
|
|
149
|
+
(openBlock(), createBlock(resolveDynamicComponent(Component)))
|
|
150
|
+
]),
|
|
151
|
+
_: 1
|
|
152
|
+
})
|
|
153
|
+
]),
|
|
154
|
+
_: 3
|
|
155
|
+
});
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
function useContentSeo(item, getter) {
|
|
160
|
+
const route = useRoute();
|
|
161
|
+
const { detect } = useLocaleNav();
|
|
162
|
+
useSeo(() => {
|
|
163
|
+
const base = toValue(getter);
|
|
164
|
+
if (!base) return null;
|
|
165
|
+
const row = item.value;
|
|
166
|
+
if (!row) return base;
|
|
167
|
+
const locales = Array.isArray(row.available_locales) ? row.available_locales.map((l2) => String(l2).slice(0, 2).toLowerCase()) : [];
|
|
168
|
+
if (!locales.length) return base;
|
|
169
|
+
const bare = detect(route.path).slug || route.path || "/";
|
|
170
|
+
const alternates = {};
|
|
171
|
+
for (const loc of locales) alternates[loc] = bare;
|
|
172
|
+
return { ...base, alternates };
|
|
173
|
+
});
|
|
174
|
+
}
|
|
68
175
|
const DEFAULT_PLAUSIBLE_HOST = "https://analytics.bagel.to";
|
|
69
176
|
function injectPlausible(config) {
|
|
70
177
|
if (typeof document === "undefined") return;
|
|
@@ -199,39 +306,50 @@ export {
|
|
|
199
306
|
_ as AdminEditBar,
|
|
200
307
|
b as BLOX_ADMIN_CONFIG_KEY,
|
|
201
308
|
d as BLOX_CONFIG_KEY,
|
|
202
|
-
e as
|
|
309
|
+
e as BLOX_CONTENT_ITEM_KEY,
|
|
310
|
+
BLOX_DATA_WINDOW_KEY,
|
|
311
|
+
f as BLOX_GLOBAL_RESOLVER_KEY,
|
|
203
312
|
BLOX_LOCALE_STRATEGY_KEY,
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
j as
|
|
313
|
+
h as BloxInstance,
|
|
314
|
+
_sfc_main as BloxRouterView,
|
|
315
|
+
j as CmsPageView,
|
|
316
|
+
k as GLOBAL_REF_KEY,
|
|
207
317
|
G as GlobalBlockHost,
|
|
318
|
+
l as LocaleRouterLink,
|
|
208
319
|
P as PageRenderer,
|
|
209
320
|
_2 as PreviewApp,
|
|
210
321
|
P2 as PreviewRenderer,
|
|
211
322
|
buildBloxManifest,
|
|
212
|
-
|
|
213
|
-
|
|
323
|
+
m as classifyLink,
|
|
324
|
+
o as configureApi,
|
|
325
|
+
p as contentRoutes,
|
|
214
326
|
createBlox,
|
|
215
327
|
createBloxApp,
|
|
216
328
|
defineBlock,
|
|
217
|
-
|
|
218
|
-
|
|
329
|
+
q as defineContent,
|
|
330
|
+
r as getWebsiteId,
|
|
331
|
+
s as getWebsiteIdSync,
|
|
219
332
|
g as globalRefOf,
|
|
220
333
|
injectPlausible,
|
|
221
334
|
installSmartLinks,
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
335
|
+
t as isAbsoluteExternal,
|
|
336
|
+
v as isSpecialScheme,
|
|
337
|
+
w as listItems,
|
|
225
338
|
normalizeLink,
|
|
226
|
-
|
|
227
|
-
|
|
339
|
+
x as normalizeTo,
|
|
340
|
+
y as resolvePath,
|
|
228
341
|
s2 as sendToEditor,
|
|
229
342
|
a as sendToPreview,
|
|
230
343
|
serializeRegistry,
|
|
231
|
-
|
|
232
|
-
|
|
344
|
+
z as toInternalPath,
|
|
345
|
+
A as useBloxEdit,
|
|
346
|
+
C as useContentItem,
|
|
347
|
+
useContentSeo,
|
|
348
|
+
D as useData,
|
|
233
349
|
useGlobalBlock,
|
|
234
350
|
useLocale,
|
|
235
351
|
useLocaleNav,
|
|
236
|
-
usePageContext
|
|
352
|
+
usePageContext,
|
|
353
|
+
useSeo,
|
|
354
|
+
E as withLocaleRoutes
|
|
237
355
|
};
|
|
@@ -186,17 +186,17 @@ function buildStructuredData(meta, locale) {
|
|
|
186
186
|
}
|
|
187
187
|
}
|
|
188
188
|
function buildPageHead(options) {
|
|
189
|
-
const { url, resolvedData, website, stateScript, locale } = options;
|
|
189
|
+
const { url, resolvedData, website, stateScript, locale, pageSeo } = options;
|
|
190
190
|
const parts = [];
|
|
191
191
|
const meta = (website == null ? void 0 : website.meta) ?? {};
|
|
192
192
|
const page = resolvedData == null ? void 0 : resolvedData.page;
|
|
193
193
|
const ctx = extractPrimaryContext(resolvedData == null ? void 0 : resolvedData.contexts);
|
|
194
|
-
const title = (page == null ? void 0 : page.meta_title) || ctx.title || ((page == null ? void 0 : page.title) && meta.og_site_name ? `${page.title} · ${meta.og_site_name}` : null) || (page == null ? void 0 : page.title) || meta.default_meta_title;
|
|
194
|
+
const title = (pageSeo == null ? void 0 : pageSeo.title) || (page == null ? void 0 : page.meta_title) || ctx.title || ((page == null ? void 0 : page.title) && meta.og_site_name ? `${page.title} · ${meta.og_site_name}` : null) || (page == null ? void 0 : page.title) || meta.default_meta_title;
|
|
195
195
|
if (title) {
|
|
196
|
-
const fullTitle = ctx.title && meta.og_site_name && !ctx.title.includes(meta.og_site_name) ? `${esc(ctx.title)} · ${esc(meta.og_site_name)}` : esc(title);
|
|
196
|
+
const fullTitle = !(pageSeo == null ? void 0 : pageSeo.title) && ctx.title && meta.og_site_name && !ctx.title.includes(meta.og_site_name) ? `${esc(ctx.title)} · ${esc(meta.og_site_name)}` : esc(title);
|
|
197
197
|
parts.push(`<title>${fullTitle}</title>`);
|
|
198
198
|
}
|
|
199
|
-
const description = (page == null ? void 0 : page.meta_description) || ctx.description || meta.default_meta_description;
|
|
199
|
+
const description = (pageSeo == null ? void 0 : pageSeo.description) || (page == null ? void 0 : page.meta_description) || ctx.description || meta.default_meta_description;
|
|
200
200
|
if (description) {
|
|
201
201
|
parts.push(`<meta name="description" content="${esc(description)}">`);
|
|
202
202
|
}
|
|
@@ -204,9 +204,9 @@ function buildPageHead(options) {
|
|
|
204
204
|
if (canonicalBase) {
|
|
205
205
|
parts.push(`<link rel="canonical" href="${esc(canonicalBase + url)}">`);
|
|
206
206
|
}
|
|
207
|
-
const ogTitle = (page == null ? void 0 : page.meta_title) || ctx.title || (page == null ? void 0 : page.title) || meta.og_site_name || meta.default_meta_title;
|
|
208
|
-
const ogDesc = (page == null ? void 0 : page.meta_description) || ctx.description || meta.og_description || meta.default_meta_description;
|
|
209
|
-
const ogImage = absUrl((page == null ? void 0 : page.og_image) || ctx.image || meta.default_og_image);
|
|
207
|
+
const ogTitle = (pageSeo == null ? void 0 : pageSeo.title) || (page == null ? void 0 : page.meta_title) || ctx.title || (page == null ? void 0 : page.title) || meta.og_site_name || meta.default_meta_title;
|
|
208
|
+
const ogDesc = (pageSeo == null ? void 0 : pageSeo.description) || (page == null ? void 0 : page.meta_description) || ctx.description || meta.og_description || meta.default_meta_description;
|
|
209
|
+
const ogImage = absUrl((pageSeo == null ? void 0 : pageSeo.image) || (page == null ? void 0 : page.og_image) || ctx.image || meta.default_og_image);
|
|
210
210
|
const ogType = meta.og_type || "website";
|
|
211
211
|
if (ogTitle) parts.push(`<meta property="og:title" content="${esc(ogTitle)}">`);
|
|
212
212
|
if (ogDesc) parts.push(`<meta property="og:description" content="${esc(ogDesc)}">`);
|
|
@@ -220,12 +220,12 @@ function buildPageHead(options) {
|
|
|
220
220
|
if (ogDesc) parts.push(`<meta name="twitter:description" content="${esc(ogDesc)}">`);
|
|
221
221
|
if (ogImage) parts.push(`<meta name="twitter:image" content="${esc(ogImage)}">`);
|
|
222
222
|
if (meta.twitter_site) parts.push(`<meta name="twitter:site" content="${esc(meta.twitter_site)}">`);
|
|
223
|
-
const alternates = resolvedData == null ? void 0 : resolvedData.alternates;
|
|
223
|
+
const alternates = (pageSeo == null ? void 0 : pageSeo.alternates) || (resolvedData == null ? void 0 : resolvedData.alternates);
|
|
224
224
|
const defaultLocale = (website == null ? void 0 : website.default_locale) ?? "en";
|
|
225
225
|
if (alternates && canonicalBase) {
|
|
226
|
-
for (const [
|
|
227
|
-
const href =
|
|
228
|
-
parts.push(`<link rel="alternate" hreflang="${esc(
|
|
226
|
+
for (const [loc, slug] of Object.entries(alternates)) {
|
|
227
|
+
const href = loc === defaultLocale ? slug : slug === "/" ? `/${loc}` : `/${loc}${slug}`;
|
|
228
|
+
parts.push(`<link rel="alternate" hreflang="${esc(loc)}" href="${esc(canonicalBase + href)}">`);
|
|
229
229
|
}
|
|
230
230
|
const defaultSlug = alternates[defaultLocale] ?? url;
|
|
231
231
|
parts.push(`<link rel="alternate" hreflang="x-default" href="${esc(canonicalBase + defaultSlug)}">`);
|
|
@@ -163,17 +163,17 @@ function buildStructuredData(meta, locale) {
|
|
|
163
163
|
}
|
|
164
164
|
}
|
|
165
165
|
function buildPageHead(options) {
|
|
166
|
-
const { url, resolvedData, website, stateScript, locale } = options;
|
|
166
|
+
const { url, resolvedData, website, stateScript, locale, pageSeo } = options;
|
|
167
167
|
const parts = [];
|
|
168
168
|
const meta = (website == null ? void 0 : website.meta) ?? {};
|
|
169
169
|
const page = resolvedData == null ? void 0 : resolvedData.page;
|
|
170
170
|
const ctx = extractPrimaryContext(resolvedData == null ? void 0 : resolvedData.contexts);
|
|
171
|
-
const title = (page == null ? void 0 : page.meta_title) || ctx.title || ((page == null ? void 0 : page.title) && meta.og_site_name ? `${page.title} · ${meta.og_site_name}` : null) || (page == null ? void 0 : page.title) || meta.default_meta_title;
|
|
171
|
+
const title = (pageSeo == null ? void 0 : pageSeo.title) || (page == null ? void 0 : page.meta_title) || ctx.title || ((page == null ? void 0 : page.title) && meta.og_site_name ? `${page.title} · ${meta.og_site_name}` : null) || (page == null ? void 0 : page.title) || meta.default_meta_title;
|
|
172
172
|
if (title) {
|
|
173
|
-
const fullTitle = ctx.title && meta.og_site_name && !ctx.title.includes(meta.og_site_name) ? `${esc(ctx.title)} · ${esc(meta.og_site_name)}` : esc(title);
|
|
173
|
+
const fullTitle = !(pageSeo == null ? void 0 : pageSeo.title) && ctx.title && meta.og_site_name && !ctx.title.includes(meta.og_site_name) ? `${esc(ctx.title)} · ${esc(meta.og_site_name)}` : esc(title);
|
|
174
174
|
parts.push(`<title>${fullTitle}</title>`);
|
|
175
175
|
}
|
|
176
|
-
const description = (page == null ? void 0 : page.meta_description) || ctx.description || meta.default_meta_description;
|
|
176
|
+
const description = (pageSeo == null ? void 0 : pageSeo.description) || (page == null ? void 0 : page.meta_description) || ctx.description || meta.default_meta_description;
|
|
177
177
|
if (description) {
|
|
178
178
|
parts.push(`<meta name="description" content="${esc(description)}">`);
|
|
179
179
|
}
|
|
@@ -181,9 +181,9 @@ function buildPageHead(options) {
|
|
|
181
181
|
if (canonicalBase) {
|
|
182
182
|
parts.push(`<link rel="canonical" href="${esc(canonicalBase + url)}">`);
|
|
183
183
|
}
|
|
184
|
-
const ogTitle = (page == null ? void 0 : page.meta_title) || ctx.title || (page == null ? void 0 : page.title) || meta.og_site_name || meta.default_meta_title;
|
|
185
|
-
const ogDesc = (page == null ? void 0 : page.meta_description) || ctx.description || meta.og_description || meta.default_meta_description;
|
|
186
|
-
const ogImage = absUrl((page == null ? void 0 : page.og_image) || ctx.image || meta.default_og_image);
|
|
184
|
+
const ogTitle = (pageSeo == null ? void 0 : pageSeo.title) || (page == null ? void 0 : page.meta_title) || ctx.title || (page == null ? void 0 : page.title) || meta.og_site_name || meta.default_meta_title;
|
|
185
|
+
const ogDesc = (pageSeo == null ? void 0 : pageSeo.description) || (page == null ? void 0 : page.meta_description) || ctx.description || meta.og_description || meta.default_meta_description;
|
|
186
|
+
const ogImage = absUrl((pageSeo == null ? void 0 : pageSeo.image) || (page == null ? void 0 : page.og_image) || ctx.image || meta.default_og_image);
|
|
187
187
|
const ogType = meta.og_type || "website";
|
|
188
188
|
if (ogTitle) parts.push(`<meta property="og:title" content="${esc(ogTitle)}">`);
|
|
189
189
|
if (ogDesc) parts.push(`<meta property="og:description" content="${esc(ogDesc)}">`);
|
|
@@ -197,12 +197,12 @@ function buildPageHead(options) {
|
|
|
197
197
|
if (ogDesc) parts.push(`<meta name="twitter:description" content="${esc(ogDesc)}">`);
|
|
198
198
|
if (ogImage) parts.push(`<meta name="twitter:image" content="${esc(ogImage)}">`);
|
|
199
199
|
if (meta.twitter_site) parts.push(`<meta name="twitter:site" content="${esc(meta.twitter_site)}">`);
|
|
200
|
-
const alternates = resolvedData == null ? void 0 : resolvedData.alternates;
|
|
200
|
+
const alternates = (pageSeo == null ? void 0 : pageSeo.alternates) || (resolvedData == null ? void 0 : resolvedData.alternates);
|
|
201
201
|
const defaultLocale = (website == null ? void 0 : website.default_locale) ?? "en";
|
|
202
202
|
if (alternates && canonicalBase) {
|
|
203
|
-
for (const [
|
|
204
|
-
const href =
|
|
205
|
-
parts.push(`<link rel="alternate" hreflang="${esc(
|
|
203
|
+
for (const [loc, slug] of Object.entries(alternates)) {
|
|
204
|
+
const href = loc === defaultLocale ? slug : slug === "/" ? `/${loc}` : `/${loc}${slug}`;
|
|
205
|
+
parts.push(`<link rel="alternate" hreflang="${esc(loc)}" href="${esc(canonicalBase + href)}">`);
|
|
206
206
|
}
|
|
207
207
|
const defaultSlug = alternates[defaultLocale] ?? url;
|
|
208
208
|
parts.push(`<link rel="alternate" hreflang="x-default" href="${esc(canonicalBase + defaultSlug)}">`);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Component } from 'vue';
|
|
2
|
+
import { RouteRecordRaw } from 'vue-router';
|
|
3
|
+
/**
|
|
4
|
+
* Duplicate a route for the default locale (bare path) and every non-default
|
|
5
|
+
* locale as `/:locale(xx|yy)/…`.
|
|
6
|
+
*/
|
|
7
|
+
export declare function withLocaleRoutes(path: string, component: RouteRecordRaw['component'] | Component, locales: readonly string[], defaultLocale: string): RouteRecordRaw[];
|
|
8
|
+
//# sourceMappingURL=withLocaleRoutes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withLocaleRoutes.d.ts","sourceRoot":"","sources":["../../src/routing/withLocaleRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAA;AACpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC/B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,cAAc,CAAC,WAAW,CAAC,GAAG,SAAS,EAClD,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,aAAa,EAAE,MAAM,GACnB,cAAc,EAAE,CAiBlB"}
|
package/dist/ssg/cli.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
"use strict";
|
|
3
3
|
const process = require("node:process");
|
|
4
|
-
const prerender = require("../prerender-
|
|
4
|
+
const prerender = require("../prerender-H72-UrK4.cjs");
|
|
5
5
|
async function resolveApiBase(mode) {
|
|
6
6
|
if (process.env.BAGELINK_API_URL != null && process.env.BAGELINK_API_URL !== "") {
|
|
7
7
|
return { apiBase: process.env.BAGELINK_API_URL };
|
package/dist/ssg/cli.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
import process from "node:process";
|
|
3
|
-
import { p as polyfillBloxSsgGlobals, f as fetchCmsSiteData, a as prerender } from "../prerender-
|
|
3
|
+
import { p as polyfillBloxSsgGlobals, f as fetchCmsSiteData, a as prerender } from "../prerender-NHAqrTm3.js";
|
|
4
4
|
async function resolveApiBase(mode) {
|
|
5
5
|
if (process.env.BAGELINK_API_URL != null && process.env.BAGELINK_API_URL !== "") {
|
|
6
6
|
return { apiBase: process.env.BAGELINK_API_URL };
|
package/dist/ssg/client.cjs
CHANGED
|
@@ -3,6 +3,8 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
3
3
|
const BLOX_STATE_WINDOW_KEY = "__BLOX_STATE__";
|
|
4
4
|
const BLOX_COLLECTIONS_WINDOW_KEY = "__BLOX_COLLECTIONS__";
|
|
5
5
|
const BLOX_WEBSITE_ID_WINDOW_KEY = "__BLOX_WEBSITE_ID__";
|
|
6
|
+
const BLOX_DATA_WINDOW_KEY = "__BLOX_DATA__";
|
|
7
|
+
const BLOX_PAGE_SEO_WINDOW_KEY = "__BLOX_PAGE_SEO__";
|
|
6
8
|
let _cache = null;
|
|
7
9
|
function readCache() {
|
|
8
10
|
if (_cache != null) return _cache;
|
|
@@ -69,6 +71,8 @@ function installBloxStateCache(globalKey = BLOX_STATE_WINDOW_KEY) {
|
|
|
69
71
|
};
|
|
70
72
|
}
|
|
71
73
|
exports.BLOX_COLLECTIONS_WINDOW_KEY = BLOX_COLLECTIONS_WINDOW_KEY;
|
|
74
|
+
exports.BLOX_DATA_WINDOW_KEY = BLOX_DATA_WINDOW_KEY;
|
|
75
|
+
exports.BLOX_PAGE_SEO_WINDOW_KEY = BLOX_PAGE_SEO_WINDOW_KEY;
|
|
72
76
|
exports.BLOX_STATE_WINDOW_KEY = BLOX_STATE_WINDOW_KEY;
|
|
73
77
|
exports.BLOX_WEBSITE_ID_WINDOW_KEY = BLOX_WEBSITE_ID_WINDOW_KEY;
|
|
74
78
|
exports.getCollectionCache = getCollectionCache;
|
package/dist/ssg/client.d.ts
CHANGED
|
@@ -5,6 +5,6 @@ export { getCollectionCache, getEmbeddedWebsiteId, installCollectionCache } from
|
|
|
5
5
|
* Use this import in client entry files (main.ts / entry-client.ts).
|
|
6
6
|
* It does NOT pull in Node.js modules (fs, path, url, happy-dom).
|
|
7
7
|
*/
|
|
8
|
-
export { BLOX_COLLECTIONS_WINDOW_KEY, BLOX_STATE_WINDOW_KEY, BLOX_WEBSITE_ID_WINDOW_KEY } from './constants';
|
|
8
|
+
export { BLOX_COLLECTIONS_WINDOW_KEY, BLOX_DATA_WINDOW_KEY, BLOX_PAGE_SEO_WINDOW_KEY, BLOX_STATE_WINDOW_KEY, BLOX_WEBSITE_ID_WINDOW_KEY } from './constants';
|
|
9
9
|
export { installBloxStateCache } from './state-cache';
|
|
10
10
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/ssg/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/ssg/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AACrG;;;;;GAKG;AACH,OAAO,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/ssg/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AACrG;;;;;GAKG;AACH,OAAO,EAAE,2BAA2B,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAA;AAC5J,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA"}
|
package/dist/ssg/client.mjs
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
const BLOX_STATE_WINDOW_KEY = "__BLOX_STATE__";
|
|
2
2
|
const BLOX_COLLECTIONS_WINDOW_KEY = "__BLOX_COLLECTIONS__";
|
|
3
3
|
const BLOX_WEBSITE_ID_WINDOW_KEY = "__BLOX_WEBSITE_ID__";
|
|
4
|
+
const BLOX_DATA_WINDOW_KEY = "__BLOX_DATA__";
|
|
5
|
+
const BLOX_PAGE_SEO_WINDOW_KEY = "__BLOX_PAGE_SEO__";
|
|
4
6
|
let _cache = null;
|
|
5
7
|
function readCache() {
|
|
6
8
|
if (_cache != null) return _cache;
|
|
@@ -68,6 +70,8 @@ function installBloxStateCache(globalKey = BLOX_STATE_WINDOW_KEY) {
|
|
|
68
70
|
}
|
|
69
71
|
export {
|
|
70
72
|
BLOX_COLLECTIONS_WINDOW_KEY,
|
|
73
|
+
BLOX_DATA_WINDOW_KEY,
|
|
74
|
+
BLOX_PAGE_SEO_WINDOW_KEY,
|
|
71
75
|
BLOX_STATE_WINDOW_KEY,
|
|
72
76
|
BLOX_WEBSITE_ID_WINDOW_KEY,
|
|
73
77
|
getCollectionCache,
|
package/dist/ssg/constants.d.ts
CHANGED
|
@@ -4,4 +4,8 @@ export declare const BLOX_STATE_WINDOW_KEY: "__BLOX_STATE__";
|
|
|
4
4
|
export declare const BLOX_COLLECTIONS_WINDOW_KEY: "__BLOX_COLLECTIONS__";
|
|
5
5
|
/** Global key for the pre-resolved website ID (avoids GET /blox/websites on client). */
|
|
6
6
|
export declare const BLOX_WEBSITE_ID_WINDOW_KEY: "__BLOX_WEBSITE_ID__";
|
|
7
|
+
/** Global key for `useData()` payload (keyed by composable cache key). */
|
|
8
|
+
export declare const BLOX_DATA_WINDOW_KEY: "__BLOX_DATA__";
|
|
9
|
+
/** Global key for `useSeo()` payload written during SSR for head injection. */
|
|
10
|
+
export declare const BLOX_PAGE_SEO_WINDOW_KEY: "__BLOX_PAGE_SEO__";
|
|
7
11
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/ssg/constants.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,eAAO,MAAM,qBAAqB,EAAG,gBAAyB,CAAA;AAE9D,sFAAsF;AACtF,eAAO,MAAM,2BAA2B,EAAG,sBAA+B,CAAA;AAE1E,wFAAwF;AACxF,eAAO,MAAM,0BAA0B,EAAG,qBAA8B,CAAA"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/ssg/constants.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,eAAO,MAAM,qBAAqB,EAAG,gBAAyB,CAAA;AAE9D,sFAAsF;AACtF,eAAO,MAAM,2BAA2B,EAAG,sBAA+B,CAAA;AAE1E,wFAAwF;AACxF,eAAO,MAAM,0BAA0B,EAAG,qBAA8B,CAAA;AAExE,0EAA0E;AAC1E,eAAO,MAAM,oBAAoB,EAAG,eAAwB,CAAA;AAE5D,+EAA+E;AAC/E,eAAO,MAAM,wBAAwB,EAAG,mBAA4B,CAAA"}
|
package/dist/ssg/index.cjs
CHANGED
|
@@ -22,11 +22,11 @@ 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 prerender = require("../prerender-
|
|
25
|
+
const prerender = require("../prerender-H72-UrK4.cjs");
|
|
26
26
|
const ssg_client = require("./client.cjs");
|
|
27
27
|
const pinia = require("pinia");
|
|
28
28
|
const vue = require("vue");
|
|
29
|
-
const core = require("../core-
|
|
29
|
+
const core = require("../core-KRHc4Bob.cjs");
|
|
30
30
|
async function renderBloxSsgPage(options) {
|
|
31
31
|
const {
|
|
32
32
|
url,
|
|
@@ -42,9 +42,12 @@ async function renderBloxSsgPage(options) {
|
|
|
42
42
|
} = options;
|
|
43
43
|
const g = globalThis;
|
|
44
44
|
const prevState = g[stateWindowKey];
|
|
45
|
+
const prevData = g[ssg_client.BLOX_DATA_WINDOW_KEY];
|
|
45
46
|
if (resolvedData != null) {
|
|
46
47
|
g[stateWindowKey] = { [stateKey]: resolvedData };
|
|
47
48
|
}
|
|
49
|
+
g[ssg_client.BLOX_DATA_WINDOW_KEY] = {};
|
|
50
|
+
delete g[ssg_client.BLOX_PAGE_SEO_WINDOW_KEY];
|
|
48
51
|
try {
|
|
49
52
|
const { app, router } = createAppForUrl(url);
|
|
50
53
|
await router.push(url);
|
|
@@ -53,12 +56,16 @@ async function renderBloxSsgPage(options) {
|
|
|
53
56
|
const stateScript = resolvedData != null ? `<script>window[${JSON.stringify(stateWindowKey)}]=${JSON.stringify({ [stateKey]: resolvedData })};${"<"}/script>` : "";
|
|
54
57
|
const collectionsScript = collections && Object.keys(collections).length > 0 ? `<script>window[${JSON.stringify(ssg_client.BLOX_COLLECTIONS_WINDOW_KEY)}]=${JSON.stringify(collections)};${"<"}/script>` : "";
|
|
55
58
|
const websiteIdScript = websiteId ? `<script>window[${JSON.stringify(ssg_client.BLOX_WEBSITE_ID_WINDOW_KEY)}]=${JSON.stringify(websiteId)};${"<"}/script>` : "";
|
|
59
|
+
const bloxData = g[ssg_client.BLOX_DATA_WINDOW_KEY];
|
|
60
|
+
const dataScript = bloxData && Object.keys(bloxData).length > 0 ? `<script>window[${JSON.stringify(ssg_client.BLOX_DATA_WINDOW_KEY)}]=${JSON.stringify(bloxData)};${"<"}/script>` : "";
|
|
61
|
+
const pageSeo = g[ssg_client.BLOX_PAGE_SEO_WINDOW_KEY] ?? null;
|
|
56
62
|
const head = prerender.buildPageHead({
|
|
57
63
|
url,
|
|
58
64
|
resolvedData,
|
|
59
65
|
website,
|
|
60
66
|
locale,
|
|
61
|
-
|
|
67
|
+
pageSeo,
|
|
68
|
+
stateScript: [stateScript, collectionsScript, websiteIdScript, dataScript].filter(Boolean).join("\n")
|
|
62
69
|
});
|
|
63
70
|
const lang = locale || (website == null ? void 0 : website.default_locale) || "en";
|
|
64
71
|
const htmlAttrs = `lang="${lang}"`;
|
|
@@ -69,6 +76,12 @@ async function renderBloxSsgPage(options) {
|
|
|
69
76
|
} else {
|
|
70
77
|
delete g[stateWindowKey];
|
|
71
78
|
}
|
|
79
|
+
if (prevData !== void 0) {
|
|
80
|
+
g[ssg_client.BLOX_DATA_WINDOW_KEY] = prevData;
|
|
81
|
+
} else {
|
|
82
|
+
delete g[ssg_client.BLOX_DATA_WINDOW_KEY];
|
|
83
|
+
}
|
|
84
|
+
delete g[ssg_client.BLOX_PAGE_SEO_WINDOW_KEY];
|
|
72
85
|
}
|
|
73
86
|
}
|
|
74
87
|
let _websiteId = null;
|
|
@@ -179,6 +192,8 @@ exports.getSiteIconFlags = prerender.getSiteIconFlags;
|
|
|
179
192
|
exports.polyfillBloxSsgGlobals = prerender.polyfillBloxSsgGlobals;
|
|
180
193
|
exports.prerender = prerender.prerender;
|
|
181
194
|
exports.BLOX_COLLECTIONS_WINDOW_KEY = ssg_client.BLOX_COLLECTIONS_WINDOW_KEY;
|
|
195
|
+
exports.BLOX_DATA_WINDOW_KEY = ssg_client.BLOX_DATA_WINDOW_KEY;
|
|
196
|
+
exports.BLOX_PAGE_SEO_WINDOW_KEY = ssg_client.BLOX_PAGE_SEO_WINDOW_KEY;
|
|
182
197
|
exports.BLOX_STATE_WINDOW_KEY = ssg_client.BLOX_STATE_WINDOW_KEY;
|
|
183
198
|
exports.BLOX_WEBSITE_ID_WINDOW_KEY = ssg_client.BLOX_WEBSITE_ID_WINDOW_KEY;
|
|
184
199
|
exports.getCollectionCache = ssg_client.getCollectionCache;
|
package/dist/ssg/index.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ export { getCollectionCache, getEmbeddedWebsiteId, installCollectionCache } from
|
|
|
12
12
|
* - Full prerender orchestrator with crawl support
|
|
13
13
|
* - SEO asset generation (sitemap.xml, robots.txt, _redirects)
|
|
14
14
|
*/
|
|
15
|
-
export { BLOX_COLLECTIONS_WINDOW_KEY, BLOX_STATE_WINDOW_KEY, BLOX_WEBSITE_ID_WINDOW_KEY } from './constants';
|
|
15
|
+
export { BLOX_COLLECTIONS_WINDOW_KEY, BLOX_DATA_WINDOW_KEY, BLOX_PAGE_SEO_WINDOW_KEY, BLOX_STATE_WINDOW_KEY, BLOX_WEBSITE_ID_WINDOW_KEY } from './constants';
|
|
16
16
|
export { createBloxSSREntry } from './createSSREntry';
|
|
17
17
|
export type { BloxSSREntry, CreateBloxSSREntryOptions } from './createSSREntry';
|
|
18
18
|
export { polyfillBloxSsgGlobals } from './polyfill-node';
|
package/dist/ssg/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ssg/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AACvE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC9D,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AACrG;;;;;;;;;;GAUG;AACH,OAAO,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ssg/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AACvE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC9D,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AACrG;;;;;;;;;;GAUG;AACH,OAAO,EAAE,2BAA2B,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAA;AAC5J,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,YAAY,EAAE,YAAY,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAA;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AACjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,YAAY,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAA;AACvI,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA"}
|
package/dist/ssg/index.mjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { b as buildPageHead } from "../prerender-
|
|
2
|
-
import { c, d, f, g, e, h, i, p, a } from "../prerender-
|
|
3
|
-
import { BLOX_STATE_WINDOW_KEY, BLOX_COLLECTIONS_WINDOW_KEY, BLOX_WEBSITE_ID_WINDOW_KEY } from "./client.mjs";
|
|
1
|
+
import { b as buildPageHead } from "../prerender-NHAqrTm3.js";
|
|
2
|
+
import { c, d, f, g, e, h, i, p, a } from "../prerender-NHAqrTm3.js";
|
|
3
|
+
import { BLOX_STATE_WINDOW_KEY, BLOX_DATA_WINDOW_KEY, BLOX_PAGE_SEO_WINDOW_KEY, BLOX_COLLECTIONS_WINDOW_KEY, BLOX_WEBSITE_ID_WINDOW_KEY } from "./client.mjs";
|
|
4
4
|
import { getCollectionCache, getEmbeddedWebsiteId, installBloxStateCache, installCollectionCache } from "./client.mjs";
|
|
5
5
|
import { createPinia } from "pinia";
|
|
6
6
|
import { createSSRApp, markRaw } from "vue";
|
|
7
|
-
import { c as createBlox } from "../core-
|
|
7
|
+
import { c as createBlox } from "../core-Bp2bf8e4.js";
|
|
8
8
|
async function renderBloxSsgPage(options) {
|
|
9
9
|
const {
|
|
10
10
|
url,
|
|
@@ -20,9 +20,12 @@ async function renderBloxSsgPage(options) {
|
|
|
20
20
|
} = options;
|
|
21
21
|
const g2 = globalThis;
|
|
22
22
|
const prevState = g2[stateWindowKey];
|
|
23
|
+
const prevData = g2[BLOX_DATA_WINDOW_KEY];
|
|
23
24
|
if (resolvedData != null) {
|
|
24
25
|
g2[stateWindowKey] = { [stateKey]: resolvedData };
|
|
25
26
|
}
|
|
27
|
+
g2[BLOX_DATA_WINDOW_KEY] = {};
|
|
28
|
+
delete g2[BLOX_PAGE_SEO_WINDOW_KEY];
|
|
26
29
|
try {
|
|
27
30
|
const { app, router } = createAppForUrl(url);
|
|
28
31
|
await router.push(url);
|
|
@@ -31,12 +34,16 @@ async function renderBloxSsgPage(options) {
|
|
|
31
34
|
const stateScript = resolvedData != null ? `<script>window[${JSON.stringify(stateWindowKey)}]=${JSON.stringify({ [stateKey]: resolvedData })};${"<"}/script>` : "";
|
|
32
35
|
const collectionsScript = collections && Object.keys(collections).length > 0 ? `<script>window[${JSON.stringify(BLOX_COLLECTIONS_WINDOW_KEY)}]=${JSON.stringify(collections)};${"<"}/script>` : "";
|
|
33
36
|
const websiteIdScript = websiteId ? `<script>window[${JSON.stringify(BLOX_WEBSITE_ID_WINDOW_KEY)}]=${JSON.stringify(websiteId)};${"<"}/script>` : "";
|
|
37
|
+
const bloxData = g2[BLOX_DATA_WINDOW_KEY];
|
|
38
|
+
const dataScript = bloxData && Object.keys(bloxData).length > 0 ? `<script>window[${JSON.stringify(BLOX_DATA_WINDOW_KEY)}]=${JSON.stringify(bloxData)};${"<"}/script>` : "";
|
|
39
|
+
const pageSeo = g2[BLOX_PAGE_SEO_WINDOW_KEY] ?? null;
|
|
34
40
|
const head = buildPageHead({
|
|
35
41
|
url,
|
|
36
42
|
resolvedData,
|
|
37
43
|
website,
|
|
38
44
|
locale,
|
|
39
|
-
|
|
45
|
+
pageSeo,
|
|
46
|
+
stateScript: [stateScript, collectionsScript, websiteIdScript, dataScript].filter(Boolean).join("\n")
|
|
40
47
|
});
|
|
41
48
|
const lang = locale || (website == null ? void 0 : website.default_locale) || "en";
|
|
42
49
|
const htmlAttrs = `lang="${lang}"`;
|
|
@@ -47,6 +54,12 @@ async function renderBloxSsgPage(options) {
|
|
|
47
54
|
} else {
|
|
48
55
|
delete g2[stateWindowKey];
|
|
49
56
|
}
|
|
57
|
+
if (prevData !== void 0) {
|
|
58
|
+
g2[BLOX_DATA_WINDOW_KEY] = prevData;
|
|
59
|
+
} else {
|
|
60
|
+
delete g2[BLOX_DATA_WINDOW_KEY];
|
|
61
|
+
}
|
|
62
|
+
delete g2[BLOX_PAGE_SEO_WINDOW_KEY];
|
|
50
63
|
}
|
|
51
64
|
}
|
|
52
65
|
let _websiteId = null;
|
|
@@ -148,6 +161,8 @@ function createBloxSSREntry(options) {
|
|
|
148
161
|
}
|
|
149
162
|
export {
|
|
150
163
|
BLOX_COLLECTIONS_WINDOW_KEY,
|
|
164
|
+
BLOX_DATA_WINDOW_KEY,
|
|
165
|
+
BLOX_PAGE_SEO_WINDOW_KEY,
|
|
151
166
|
BLOX_STATE_WINDOW_KEY,
|
|
152
167
|
BLOX_WEBSITE_ID_WINDOW_KEY,
|
|
153
168
|
buildPageHead,
|
|
@@ -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;
|
|
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;AAM/C,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;IAC9C,eAAe,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK;QAAE,GAAG,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,iBAAiB,CAAA;KAAE,CAAA;IAC1E,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;CACvC,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAgF/D"}
|
package/dist/ssg/seo.d.ts
CHANGED
|
@@ -52,6 +52,13 @@ export declare function buildPageHead(options: {
|
|
|
52
52
|
stateScript?: string;
|
|
53
53
|
/** Active render locale — selects per-locale structured data. */
|
|
54
54
|
locale?: string;
|
|
55
|
+
/** Runtime SEO from `useSeo()` during SSR (detail pages / blocks). */
|
|
56
|
+
pageSeo?: {
|
|
57
|
+
title?: string;
|
|
58
|
+
description?: string;
|
|
59
|
+
image?: string;
|
|
60
|
+
alternates?: Record<string, string>;
|
|
61
|
+
} | null;
|
|
55
62
|
}): string;
|
|
56
63
|
/**
|
|
57
64
|
* Build site-wide `<head>` tags: verification, structured data, analytics, favicon.
|
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,WAAW,EAAE,MAAM,cAAc,CAAA;AAMzD,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,mEAAmE;AACnE,MAAM,WAAW,WAAW;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACtB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAU9E;AAED,MAAM,WAAW,aAAa;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;CACnB;AAMD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE;IACtC,GAAG,EAAE,MAAM,CAAA;IACX,YAAY,EAAE,WAAW,GAAG,IAAI,CAAA;IAChC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAA;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"seo.d.ts","sourceRoot":"","sources":["../../src/ssg/seo.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED