@bagelink/blox 1.15.585 → 1.15.591

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.
Files changed (56) hide show
  1. package/README.md +48 -22
  2. package/dist/CmsPageView.vue.d.ts.map +1 -1
  3. package/dist/{PreviewApp-D208UMZs.js → PreviewApp-BagepqPk.js} +1 -1
  4. package/dist/{PreviewApp-DNMYw1AS.cjs → PreviewApp-HVipxMQ3.cjs} +1 -1
  5. package/dist/{PreviewApp.vue_vue_type_style_index_0_lang-Dm0SmjEr.cjs → PreviewApp.vue_vue_type_style_index_0_lang-C6e-tDzD.cjs} +6 -6
  6. package/dist/{PreviewApp.vue_vue_type_style_index_0_lang-l6QisbG-.js → PreviewApp.vue_vue_type_style_index_0_lang-Dl3bKQTA.js} +1 -1
  7. package/dist/api/index.d.ts +24 -0
  8. package/dist/api/index.d.ts.map +1 -1
  9. package/dist/{routes-DDiQDksF.js → appRuntime-B6yWkH3M.js} +280 -82
  10. package/dist/{routes-DOcek9fP.cjs → appRuntime-D1Z3fX-G.cjs} +237 -39
  11. package/dist/appRuntime.d.ts +26 -0
  12. package/dist/appRuntime.d.ts.map +1 -0
  13. package/dist/composables/useLocale.d.ts +10 -3
  14. package/dist/composables/useLocale.d.ts.map +1 -1
  15. package/dist/content/routes.d.ts +4 -2
  16. package/dist/content/routes.d.ts.map +1 -1
  17. package/dist/content/useContentSeo.d.ts.map +1 -1
  18. package/dist/core.d.ts +2 -0
  19. package/dist/core.d.ts.map +1 -1
  20. package/dist/createBloxApp.d.ts +9 -19
  21. package/dist/createBloxApp.d.ts.map +1 -1
  22. package/dist/data/useData.d.ts.map +1 -1
  23. package/dist/index.cjs +91 -111
  24. package/dist/index.d.ts +2 -2
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.mjs +64 -84
  27. package/dist/{shard-runner-Bc4gTl71.js → shard-runner-DauYjwvg.js} +2 -2
  28. package/dist/{shard-runner-ZAwqteYY.cjs → shard-runner-xIPqGX-Q.cjs} +2 -2
  29. package/dist/ssg/cli.cjs +2 -4
  30. package/dist/ssg/cli.mjs +2 -4
  31. package/dist/ssg/client.cjs +0 -73
  32. package/dist/ssg/client.d.ts +1 -3
  33. package/dist/ssg/client.d.ts.map +1 -1
  34. package/dist/ssg/client.mjs +1 -74
  35. package/dist/ssg/constants.d.ts +0 -4
  36. package/dist/ssg/constants.d.ts.map +1 -1
  37. package/dist/ssg/createSSREntry.d.ts.map +1 -1
  38. package/dist/ssg/index.cjs +26 -47
  39. package/dist/ssg/index.d.ts +1 -3
  40. package/dist/ssg/index.d.ts.map +1 -1
  41. package/dist/ssg/index.mjs +24 -45
  42. package/dist/ssg/prerender.d.ts +1 -5
  43. package/dist/ssg/prerender.d.ts.map +1 -1
  44. package/dist/ssg/render-resolved-page.d.ts +0 -2
  45. package/dist/ssg/render-resolved-page.d.ts.map +1 -1
  46. package/dist/{validate-output-DRCseorw.js → validate-output-B56PuxEM.js} +0 -2
  47. package/dist/{validate-output-DlHgDBoV.cjs → validate-output-CRfMSrpx.cjs} +0 -2
  48. package/dist/vite-plugin.cjs +3 -64
  49. package/dist/vite-plugin.d.ts +0 -8
  50. package/dist/vite-plugin.d.ts.map +1 -1
  51. package/dist/vite-plugin.mjs +3 -64
  52. package/package.json +1 -1
  53. package/dist/ssg/collection-cache.d.ts +0 -53
  54. package/dist/ssg/collection-cache.d.ts.map +0 -1
  55. package/dist/ssg/state-cache.d.ts +0 -21
  56. package/dist/ssg/state-cache.d.ts.map +0 -1
@@ -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-DlHgDBoV.cjs");
29
+ const llmArtifacts = require("./validate-output-CRfMSrpx.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-DlHgDBoV.cjs")).then((n) => n.llmArtifacts);
169
+ const { mergeLlmParts } = await Promise.resolve().then(() => require("./validate-output-CRfMSrpx.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-DlHgDBoV.cjs");
6
+ const llmArtifacts = require("../validate-output-CRfMSrpx.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-ZAwqteYY.cjs"));
144
+ const { runSharded } = await Promise.resolve().then(() => require("../shard-runner-xIPqGX-Q.cjs"));
145
145
  const code = await runSharded({
146
146
  shards: shardsOpt ?? "auto",
147
147
  mode,
@@ -173,7 +173,6 @@ Environment:
173
173
  let website = null;
174
174
  let websiteId = "";
175
175
  let redirects = [];
176
- const collections = {};
177
176
  let cmsPathSet = /* @__PURE__ */ new Set();
178
177
  let cachedAppPaths = [];
179
178
  const productionBuild = process.env.NODE_ENV === "production" || mode === "production";
@@ -236,7 +235,6 @@ Environment:
236
235
  website,
237
236
  websiteId,
238
237
  redirects,
239
- collections,
240
238
  // LLM artifacts (llms.txt, llms-full.txt, per-page JSON-LD). On by
241
239
  // default; opt out with BLOX_SSG_LLM=0. Skip the *file* artifacts when
242
240
  // sharding (>1 shard) because the writing shard only has its own slice of
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-DRCseorw.js";
5
+ import { v as validateSsgOutput, u as uploadBloxManifest, p as polyfillBloxSsgGlobals, f as fetchCmsSiteData, a as prerender } from "../validate-output-B56PuxEM.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-Bc4gTl71.js");
143
+ const { runSharded } = await import("../shard-runner-DauYjwvg.js");
144
144
  const code = await runSharded({
145
145
  shards: shardsOpt ?? "auto",
146
146
  mode,
@@ -172,7 +172,6 @@ Environment:
172
172
  let website = null;
173
173
  let websiteId = "";
174
174
  let redirects = [];
175
- const collections = {};
176
175
  let cmsPathSet = /* @__PURE__ */ new Set();
177
176
  let cachedAppPaths = [];
178
177
  const productionBuild = process.env.NODE_ENV === "production" || mode === "production";
@@ -235,7 +234,6 @@ Environment:
235
234
  website,
236
235
  websiteId,
237
236
  redirects,
238
- collections,
239
237
  // LLM artifacts (llms.txt, llms-full.txt, per-page JSON-LD). On by
240
238
  // default; opt out with BLOX_SSG_LLM=0. Skip the *file* artifacts when
241
239
  // sharding (>1 shard) because the writing shard only has its own slice of
@@ -1,81 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const BLOX_STATE_WINDOW_KEY = "__BLOX_STATE__";
4
- const BLOX_COLLECTIONS_WINDOW_KEY = "__BLOX_COLLECTIONS__";
5
4
  const BLOX_WEBSITE_ID_WINDOW_KEY = "__BLOX_WEBSITE_ID__";
6
5
  const BLOX_DATA_WINDOW_KEY = "__BLOX_DATA__";
7
- const BLOX_PAGE_SEO_WINDOW_KEY = "__BLOX_PAGE_SEO__";
8
- let _cache = null;
9
- function readCache() {
10
- if (_cache != null) return _cache;
11
- if (typeof window === "undefined") return null;
12
- const raw = window[BLOX_COLLECTIONS_WINDOW_KEY];
13
- if (raw && typeof raw === "object" && !Array.isArray(raw)) {
14
- _cache = raw;
15
- return _cache;
16
- }
17
- return null;
18
- }
19
- function getCollectionCache() {
20
- return readCache();
21
- }
22
- function getEmbeddedWebsiteId() {
23
- if (typeof window === "undefined") return "";
24
- const id = window[BLOX_WEBSITE_ID_WINDOW_KEY];
25
- return typeof id === "string" ? id : "";
26
- }
27
- function installCollectionCache() {
28
- const cache = readCache();
29
- if (!cache || Object.keys(cache).length === 0) return null;
30
- return (config) => {
31
- if (config.method && config.method.toLowerCase() !== "get") return config;
32
- const url = config.url ?? "";
33
- const match = url.match(/\/datastore\/([^/?]+)\/collections\/([^/?]+)/);
34
- if (!match) return config;
35
- const key = `${match[1]}/${match[2]}`;
36
- if (cache[key] == null) return config;
37
- const items = cache[key];
38
- config.adapter = () => Promise.resolve({
39
- data: items,
40
- status: 200,
41
- statusText: "OK",
42
- headers: { "content-type": "application/json", "x-blox-cache": "hit" },
43
- config
44
- });
45
- return config;
46
- };
47
- }
48
- function installBloxStateCache(globalKey = BLOX_STATE_WINDOW_KEY) {
49
- if (typeof window === "undefined") return;
50
- const state = window[globalKey];
51
- if (!state || typeof state !== "object" || Object.keys(state).length === 0) return;
52
- const originalFetch = window.fetch.bind(window);
53
- window.fetch = async function(input, init) {
54
- const url = typeof input === "string" ? input : input instanceof URL ? input.href : input.url;
55
- if (typeof url === "string" && url.includes("resolve-path")) {
56
- try {
57
- const parsed = new URL(url, window.location.origin);
58
- const path = parsed.searchParams.get("path") ?? window.location.pathname;
59
- if (path !== "" && state[path] != null) {
60
- const cached = state[path];
61
- delete state[path];
62
- return new Response(JSON.stringify(cached), {
63
- status: 200,
64
- headers: { "Content-Type": "application/json" }
65
- });
66
- }
67
- } catch {
68
- }
69
- }
70
- return originalFetch(input, init);
71
- };
72
- }
73
- exports.BLOX_COLLECTIONS_WINDOW_KEY = BLOX_COLLECTIONS_WINDOW_KEY;
74
6
  exports.BLOX_DATA_WINDOW_KEY = BLOX_DATA_WINDOW_KEY;
75
- exports.BLOX_PAGE_SEO_WINDOW_KEY = BLOX_PAGE_SEO_WINDOW_KEY;
76
7
  exports.BLOX_STATE_WINDOW_KEY = BLOX_STATE_WINDOW_KEY;
77
8
  exports.BLOX_WEBSITE_ID_WINDOW_KEY = BLOX_WEBSITE_ID_WINDOW_KEY;
78
- exports.getCollectionCache = getCollectionCache;
79
- exports.getEmbeddedWebsiteId = getEmbeddedWebsiteId;
80
- exports.installBloxStateCache = installBloxStateCache;
81
- exports.installCollectionCache = installCollectionCache;
@@ -1,10 +1,8 @@
1
- export { getCollectionCache, getEmbeddedWebsiteId, installCollectionCache } from './collection-cache';
2
1
  /**
3
2
  * @bagelink/blox/ssg/client — browser-safe SSG utilities.
4
3
  *
5
4
  * Use this import in client entry files (main.ts / entry-client.ts).
6
5
  * It does NOT pull in Node.js modules (fs, path, url, happy-dom).
7
6
  */
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
- export { installBloxStateCache } from './state-cache';
7
+ export { BLOX_DATA_WINDOW_KEY, BLOX_STATE_WINDOW_KEY, BLOX_WEBSITE_ID_WINDOW_KEY } from './constants';
10
8
  //# sourceMappingURL=client.d.ts.map
@@ -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,oBAAoB,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAA;AAC5J,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/ssg/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAA"}
@@ -1,81 +1,8 @@
1
1
  const BLOX_STATE_WINDOW_KEY = "__BLOX_STATE__";
2
- const BLOX_COLLECTIONS_WINDOW_KEY = "__BLOX_COLLECTIONS__";
3
2
  const BLOX_WEBSITE_ID_WINDOW_KEY = "__BLOX_WEBSITE_ID__";
4
3
  const BLOX_DATA_WINDOW_KEY = "__BLOX_DATA__";
5
- const BLOX_PAGE_SEO_WINDOW_KEY = "__BLOX_PAGE_SEO__";
6
- let _cache = null;
7
- function readCache() {
8
- if (_cache != null) return _cache;
9
- if (typeof window === "undefined") return null;
10
- const raw = window[BLOX_COLLECTIONS_WINDOW_KEY];
11
- if (raw && typeof raw === "object" && !Array.isArray(raw)) {
12
- _cache = raw;
13
- return _cache;
14
- }
15
- return null;
16
- }
17
- function getCollectionCache() {
18
- return readCache();
19
- }
20
- function getEmbeddedWebsiteId() {
21
- if (typeof window === "undefined") return "";
22
- const id = window[BLOX_WEBSITE_ID_WINDOW_KEY];
23
- return typeof id === "string" ? id : "";
24
- }
25
- function installCollectionCache() {
26
- const cache = readCache();
27
- if (!cache || Object.keys(cache).length === 0) return null;
28
- return (config) => {
29
- if (config.method && config.method.toLowerCase() !== "get") return config;
30
- const url = config.url ?? "";
31
- const match = url.match(/\/datastore\/([^/?]+)\/collections\/([^/?]+)/);
32
- if (!match) return config;
33
- const key = `${match[1]}/${match[2]}`;
34
- if (cache[key] == null) return config;
35
- const items = cache[key];
36
- config.adapter = () => Promise.resolve({
37
- data: items,
38
- status: 200,
39
- statusText: "OK",
40
- headers: { "content-type": "application/json", "x-blox-cache": "hit" },
41
- config
42
- });
43
- return config;
44
- };
45
- }
46
- function installBloxStateCache(globalKey = BLOX_STATE_WINDOW_KEY) {
47
- if (typeof window === "undefined") return;
48
- const state = window[globalKey];
49
- if (!state || typeof state !== "object" || Object.keys(state).length === 0) return;
50
- const originalFetch = window.fetch.bind(window);
51
- window.fetch = async function(input, init) {
52
- const url = typeof input === "string" ? input : input instanceof URL ? input.href : input.url;
53
- if (typeof url === "string" && url.includes("resolve-path")) {
54
- try {
55
- const parsed = new URL(url, window.location.origin);
56
- const path = parsed.searchParams.get("path") ?? window.location.pathname;
57
- if (path !== "" && state[path] != null) {
58
- const cached = state[path];
59
- delete state[path];
60
- return new Response(JSON.stringify(cached), {
61
- status: 200,
62
- headers: { "Content-Type": "application/json" }
63
- });
64
- }
65
- } catch {
66
- }
67
- }
68
- return originalFetch(input, init);
69
- };
70
- }
71
4
  export {
72
- BLOX_COLLECTIONS_WINDOW_KEY,
73
5
  BLOX_DATA_WINDOW_KEY,
74
- BLOX_PAGE_SEO_WINDOW_KEY,
75
6
  BLOX_STATE_WINDOW_KEY,
76
- BLOX_WEBSITE_ID_WINDOW_KEY,
77
- getCollectionCache,
78
- getEmbeddedWebsiteId,
79
- installBloxStateCache,
80
- installCollectionCache
7
+ BLOX_WEBSITE_ID_WINDOW_KEY
81
8
  };
@@ -1,11 +1,7 @@
1
1
  /** Global key for embedded prerender payload (must match client interceptor). */
2
2
  export declare const BLOX_STATE_WINDOW_KEY: "__BLOX_STATE__";
3
- /** Global key for pre-fetched datastore collections (keyed by "store/collection"). */
4
- export declare const BLOX_COLLECTIONS_WINDOW_KEY: "__BLOX_COLLECTIONS__";
5
3
  /** Global key for the pre-resolved website ID (avoids GET /blox/websites on client). */
6
4
  export declare const BLOX_WEBSITE_ID_WINDOW_KEY: "__BLOX_WEBSITE_ID__";
7
5
  /** Global key for `useData()` payload (keyed by composable cache key). */
8
6
  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__";
11
7
  //# 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;AAExE,0EAA0E;AAC1E,eAAO,MAAM,oBAAoB,EAAG,eAAwB,CAAA;AAE5D,+EAA+E;AAC/E,eAAO,MAAM,wBAAwB,EAAG,mBAA4B,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,wFAAwF;AACxF,eAAO,MAAM,0BAA0B,EAAG,qBAA8B,CAAA;AAExE,0EAA0E;AAC1E,eAAO,MAAM,oBAAoB,EAAG,eAAwB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"createSSREntry.d.ts","sourceRoot":"","sources":["../../src/ssg/createSSREntry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createSSREntry.d.ts","sourceRoot":"","sources":["../../src/ssg/createSSREntry.ts"],"names":[],"mappings":"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"}
@@ -22,12 +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 llmArtifacts = require("../validate-output-DlHgDBoV.cjs");
25
+ const llmArtifacts = require("../validate-output-CRfMSrpx.cjs");
26
26
  const ssg_buildGrant = require("./build-grant.cjs");
27
27
  const ssg_client = require("./client.cjs");
28
- const pinia = require("pinia");
29
28
  const vue = require("vue");
30
- const routes = require("../routes-DOcek9fP.cjs");
29
+ const appRuntime = require("../appRuntime-D1Z3fX-G.cjs");
31
30
  async function renderBloxSsgPage(options) {
32
31
  var _a, _b, _c, _d;
33
32
  const {
@@ -53,7 +52,6 @@ async function renderBloxSsgPage(options) {
53
52
  const ssrContext = {};
54
53
  const html = await renderToString(app, ssrContext);
55
54
  const stateScript = resolvedData != null ? `<script>window[${JSON.stringify(stateWindowKey)}]=${safeJson({ [stateKey]: resolvedData })};${"<"}/script>` : "";
56
- const collectionsScript = "";
57
55
  const websiteIdScript = websiteId ? `<script>window[${JSON.stringify(ssg_client.BLOX_WEBSITE_ID_WINDOW_KEY)}]=${JSON.stringify(websiteId)};${"<"}/script>` : "";
58
56
  const seoHead = dataRegistry && collectSeo ? collectSeo(dataRegistry) : void 0;
59
57
  const seoOverride = seoHead && Object.keys(seoHead).length > 0 ? seoHead : void 0;
@@ -72,14 +70,14 @@ async function renderBloxSsgPage(options) {
72
70
  `Blox hydration payload for "${url}" is ${dataBytes} bytes (limit ${maxDataBytes}); largest keys: ${largest}`
73
71
  );
74
72
  }
75
- const dataScript = Object.keys(bloxData).length > 0 ? `<script>window[${JSON.stringify(routes.BLOX_DATA_WINDOW_KEY)}]=${serializedData};${"<"}/script>` : "";
73
+ const dataScript = Object.keys(bloxData).length > 0 ? `<script>window[${JSON.stringify(appRuntime.BLOX_DATA_WINDOW_KEY)}]=${serializedData};${"<"}/script>` : "";
76
74
  let head = llmArtifacts.buildPageHead({
77
75
  url,
78
76
  resolvedData,
79
77
  website,
80
78
  locale,
81
79
  override: seoOverride,
82
- stateScript: [stateScript, collectionsScript, websiteIdScript, dataScript].filter(Boolean).join("\n")
80
+ stateScript: [stateScript, websiteIdScript, dataScript].filter(Boolean).join("\n")
83
81
  });
84
82
  const seoData = resolvedData;
85
83
  const primary = llmArtifacts.primaryContextEntry(seoData == null ? void 0 : seoData.contexts);
@@ -174,8 +172,6 @@ function createBloxSSREntry(options) {
174
172
  const apiBase = options.apiBase ?? (typeof process !== "undefined" ? (_a = process.env) == null ? void 0 : _a.BAGELINK_API_URL : void 0) ?? "https://api.bagel.to";
175
173
  let websiteIdCache = null;
176
174
  const publishedBundleCache = /* @__PURE__ */ new Map();
177
- routes.setApiOrigin(apiBase);
178
- routes.setCollectionResolver(options.collectionResolver ?? null);
179
175
  async function getWebsiteId() {
180
176
  var _a2, _b, _c;
181
177
  if (websiteIdCache) return websiteIdCache;
@@ -238,54 +234,44 @@ function createBloxSSREntry(options) {
238
234
  }
239
235
  }
240
236
  function buildApp(url, resolvedData, stateKey) {
237
+ const pageLocale = detectLocale(url).locale;
241
238
  const router = createRouter("memory", url);
242
239
  const app = vue.createSSRApp({
243
240
  name: "BloxSsgRoot",
244
241
  render: () => vue.h(vue.Suspense, null, { default: () => vue.h(rootComponent) })
245
242
  });
246
- const dataRegistry = routes.provideBloxData(app, { server: true });
247
- app.provide(routes.BLOX_SSR_ROUTE_STATE_KEY, {
243
+ const dataRegistry = appRuntime.provideBloxData(app, { server: true });
244
+ const api = appRuntime.provideBloxApi(app, {
245
+ websiteName,
246
+ store,
247
+ origin: apiBase,
248
+ collectionResolver: options.collectionResolver
249
+ });
250
+ const localeState = appRuntime.provideBloxLocale(app, pageLocale);
251
+ app.provide(appRuntime.BLOX_SSR_ROUTE_STATE_KEY, {
248
252
  path: stateKey,
249
253
  resolved: resolvedData
250
254
  });
251
- const pinia$1 = pinia.createPinia();
252
- pinia$1.use(({ store: s }) => {
253
- s.router = vue.markRaw(router);
254
- });
255
- const blox = routes.createBlox({
255
+ appRuntime.installBloxRuntime({
256
+ app,
257
+ router,
256
258
  modules,
257
259
  websiteName,
258
260
  store,
259
- defaultLocale: locale,
261
+ locale,
260
262
  supportedLocales,
261
- router
263
+ plugins,
264
+ globalComponents,
265
+ setup: userSetup,
266
+ api,
267
+ localeState
262
268
  });
263
- for (const plugin of plugins) {
264
- if (Array.isArray(plugin)) {
265
- const [p, ...args] = plugin;
266
- app.use(p, ...args);
267
- } else {
268
- app.use(plugin);
269
- }
270
- }
271
- routes.setActiveLocale(detectLocale(url).locale);
272
- blox.install(app, {});
273
- app.use(pinia$1);
274
- app.use(router);
275
- for (const record of routes.generateContentRoutes(supportedLocales, locale)) {
276
- if (!router.hasRoute(record.name)) router.addRoute(record);
277
- }
278
- routes.installLocaleAwareResolve(router, blox.strategy);
279
- for (const [name, comp] of Object.entries(globalComponents)) {
280
- app.component(name, comp);
281
- }
282
- userSetup == null ? void 0 : userSetup(app);
269
+ appRuntime.setActiveLocale(pageLocale, localeState);
283
270
  return { app, router, dataRegistry };
284
271
  }
285
272
  async function render(url, ctx) {
286
273
  var _a2;
287
274
  const { locale: pageLocale, slug } = detectLocale(url);
288
- routes.setActiveLocale(pageLocale);
289
275
  let resolvedData = null;
290
276
  if ((_a2 = ctx.resolveCache) == null ? void 0 : _a2.has(url)) {
291
277
  resolvedData = ctx.resolveCache.get(url) ?? null;
@@ -302,11 +288,10 @@ function createBloxSSREntry(options) {
302
288
  resolvedData,
303
289
  renderToString,
304
290
  createAppForUrl: buildApp,
305
- collectData: routes.collectBloxData,
306
- collectSeo: routes.collectBloxSeo,
291
+ collectData: appRuntime.collectBloxData,
292
+ collectSeo: appRuntime.collectBloxSeo,
307
293
  website: ctx.website,
308
294
  websiteId: ctx.websiteId,
309
- collections: ctx.collections,
310
295
  llm: ctx.llm
311
296
  });
312
297
  }
@@ -414,15 +399,9 @@ exports.uploadBloxManifest = llmArtifacts.uploadBloxManifest;
414
399
  exports.validateSsgOutput = llmArtifacts.validateSsgOutput;
415
400
  exports.parseBloxBuildGrantBody = ssg_buildGrant.parseBloxBuildGrantBody;
416
401
  exports.resolveBloxBuildGrant = ssg_buildGrant.resolveBloxBuildGrant;
417
- exports.BLOX_COLLECTIONS_WINDOW_KEY = ssg_client.BLOX_COLLECTIONS_WINDOW_KEY;
418
402
  exports.BLOX_DATA_WINDOW_KEY = ssg_client.BLOX_DATA_WINDOW_KEY;
419
- exports.BLOX_PAGE_SEO_WINDOW_KEY = ssg_client.BLOX_PAGE_SEO_WINDOW_KEY;
420
403
  exports.BLOX_STATE_WINDOW_KEY = ssg_client.BLOX_STATE_WINDOW_KEY;
421
404
  exports.BLOX_WEBSITE_ID_WINDOW_KEY = ssg_client.BLOX_WEBSITE_ID_WINDOW_KEY;
422
- exports.getCollectionCache = ssg_client.getCollectionCache;
423
- exports.getEmbeddedWebsiteId = ssg_client.getEmbeddedWebsiteId;
424
- exports.installBloxStateCache = ssg_client.installBloxStateCache;
425
- exports.installCollectionCache = ssg_client.installCollectionCache;
426
405
  exports.createBloxSSREntry = createBloxSSREntry;
427
406
  exports.fetchDatastoreSnapshot = fetchDatastoreSnapshot;
428
407
  exports.querySnapshotRows = querySnapshotRows;
@@ -4,7 +4,6 @@ export { BloxBuildResponseError, bloxBuildJson, bloxBuildRequest, getBloxBuildRe
4
4
  export { parseBloxBuildGrantBody, resolveBloxBuildGrant } from './build-grant';
5
5
  export type { BloxBuildGrant, ResolveBloxBuildGrantOptions } from './build-grant';
6
6
  export type { BloxBuildRequestOptions } from './build-request';
7
- export { getCollectionCache, getEmbeddedWebsiteId, installCollectionCache } from './collection-cache';
8
7
  /**
9
8
  * @bagelink/blox/ssg — Static Site Generation helpers for Blox CMS sites.
10
9
  *
@@ -16,7 +15,7 @@ export { getCollectionCache, getEmbeddedWebsiteId, installCollectionCache } from
16
15
  * - Full prerender orchestrator with crawl support
17
16
  * - SEO asset generation (sitemap.xml, robots.txt, _redirects)
18
17
  */
19
- 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';
18
+ export { BLOX_DATA_WINDOW_KEY, BLOX_STATE_WINDOW_KEY, BLOX_WEBSITE_ID_WINDOW_KEY } from './constants';
20
19
  export { createBloxSSREntry } from './createSSREntry';
21
20
  export type { BloxSSREntry, CreateBloxSSREntryOptions } from './createSSREntry';
22
21
  export { fetchDatastoreSnapshot, querySnapshotRows, snapshotRows } from './datastore-snapshot';
@@ -30,7 +29,6 @@ export { buildPageHead, buildSiteHead, generateNetlifyRedirects, generateRobotsT
30
29
  export type { RedirectEntry, SeoPageData, SitemapArtifact, SitemapRoute } from './seo';
31
30
  export { buildJsonLd, extractPageText, generateLlmsFullTxt, generateLlmsTxt, mergeLlmParts } from './llm-artifacts';
32
31
  export type { LlmArtifactsConfig, LlmPageEntry } from './llm-artifacts';
33
- export { installBloxStateCache } from './state-cache';
34
32
  export { resolveManifestProvenance, uploadBloxManifest } from './manifest-upload';
35
33
  export type { ManifestProvenance, ManifestUpload } from './manifest-upload';
36
34
  export { validateSsgOutput } from './validate-output';
@@ -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,sBAAsB,EAAE,aAAa,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAA;AACrH,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAC9E,YAAY,EAAE,cAAc,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAA;AACjF,YAAY,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,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,iBAAiB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAC9F,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAC7D,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,wBAAwB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,OAAO,CAAA;AACxO,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,OAAO,CAAA;AACtF,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,mBAAmB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACnH,YAAY,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACjF,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,YAAY,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,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,sBAAsB,EAAE,aAAa,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAA;AACrH,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAC9E,YAAY,EAAE,cAAc,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAA;AACjF,YAAY,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAC9D;;;;;;;;;;GAUG;AACH,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAA;AACrG,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,YAAY,EAAE,YAAY,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAA;AAC/E,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAC9F,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAC7D,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,wBAAwB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,OAAO,CAAA;AACxO,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,OAAO,CAAA;AACtF,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,mBAAmB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACnH,YAAY,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACvE,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACjF,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,YAAY,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA"}
@@ -1,11 +1,10 @@
1
- import { b as buildPageHead, c as primaryContextEntry, d as buildJsonLd, e as extractPageText, B as BloxBuildResponseError, h as bloxBuildJson } from "../validate-output-DRCseorw.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-DRCseorw.js";
1
+ import { b as buildPageHead, c as primaryContextEntry, d as buildJsonLd, e as extractPageText, B as BloxBuildResponseError, h as bloxBuildJson } from "../validate-output-B56PuxEM.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-B56PuxEM.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
- import { BLOX_COLLECTIONS_WINDOW_KEY, BLOX_DATA_WINDOW_KEY, BLOX_PAGE_SEO_WINDOW_KEY, getCollectionCache, getEmbeddedWebsiteId, installBloxStateCache, installCollectionCache } from "./client.mjs";
6
- import { createPinia } from "pinia";
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-DDiQDksF.js";
5
+ import { BLOX_DATA_WINDOW_KEY } from "./client.mjs";
6
+ import { createSSRApp, h, Suspense } from "vue";
7
+ import { B as BLOX_DATA_WINDOW_KEY2, c as collectBloxData, a as collectBloxSeo, p as provideBloxData, b as provideBloxApi, d as provideBloxLocale, e as BLOX_SSR_ROUTE_STATE_KEY, i as installBloxRuntime, s as setActiveLocale } from "../appRuntime-B6yWkH3M.js";
9
8
  async function renderBloxSsgPage(options) {
10
9
  var _a, _b, _c, _d;
11
10
  const {
@@ -31,7 +30,6 @@ async function renderBloxSsgPage(options) {
31
30
  const ssrContext = {};
32
31
  const html = await renderToString(app, ssrContext);
33
32
  const stateScript = resolvedData != null ? `<script>window[${JSON.stringify(stateWindowKey)}]=${safeJson({ [stateKey]: resolvedData })};${"<"}/script>` : "";
34
- const collectionsScript = "";
35
33
  const websiteIdScript = websiteId ? `<script>window[${JSON.stringify(BLOX_WEBSITE_ID_WINDOW_KEY)}]=${JSON.stringify(websiteId)};${"<"}/script>` : "";
36
34
  const seoHead = dataRegistry && collectSeo ? collectSeo(dataRegistry) : void 0;
37
35
  const seoOverride = seoHead && Object.keys(seoHead).length > 0 ? seoHead : void 0;
@@ -57,7 +55,7 @@ async function renderBloxSsgPage(options) {
57
55
  website,
58
56
  locale,
59
57
  override: seoOverride,
60
- stateScript: [stateScript, collectionsScript, websiteIdScript, dataScript].filter(Boolean).join("\n")
58
+ stateScript: [stateScript, websiteIdScript, dataScript].filter(Boolean).join("\n")
61
59
  });
62
60
  const seoData = resolvedData;
63
61
  const primary = primaryContextEntry(seoData == null ? void 0 : seoData.contexts);
@@ -152,8 +150,6 @@ function createBloxSSREntry(options) {
152
150
  const apiBase = options.apiBase ?? (typeof process !== "undefined" ? (_a = process.env) == null ? void 0 : _a.BAGELINK_API_URL : void 0) ?? "https://api.bagel.to";
153
151
  let websiteIdCache = null;
154
152
  const publishedBundleCache = /* @__PURE__ */ new Map();
155
- setApiOrigin(apiBase);
156
- setCollectionResolver(options.collectionResolver ?? null);
157
153
  async function getWebsiteId() {
158
154
  var _a2, _b, _c;
159
155
  if (websiteIdCache) return websiteIdCache;
@@ -216,54 +212,44 @@ function createBloxSSREntry(options) {
216
212
  }
217
213
  }
218
214
  function buildApp(url, resolvedData, stateKey) {
215
+ const pageLocale = detectLocale(url).locale;
219
216
  const router = createRouter("memory", url);
220
217
  const app = createSSRApp({
221
218
  name: "BloxSsgRoot",
222
219
  render: () => h(Suspense, null, { default: () => h(rootComponent) })
223
220
  });
224
221
  const dataRegistry = provideBloxData(app, { server: true });
222
+ const api = provideBloxApi(app, {
223
+ websiteName,
224
+ store,
225
+ origin: apiBase,
226
+ collectionResolver: options.collectionResolver
227
+ });
228
+ const localeState = provideBloxLocale(app, pageLocale);
225
229
  app.provide(BLOX_SSR_ROUTE_STATE_KEY, {
226
230
  path: stateKey,
227
231
  resolved: resolvedData
228
232
  });
229
- const pinia = createPinia();
230
- pinia.use(({ store: s2 }) => {
231
- s2.router = markRaw(router);
232
- });
233
- const blox = createBlox({
233
+ installBloxRuntime({
234
+ app,
235
+ router,
234
236
  modules,
235
237
  websiteName,
236
238
  store,
237
- defaultLocale: locale,
239
+ locale,
238
240
  supportedLocales,
239
- router
241
+ plugins,
242
+ globalComponents,
243
+ setup: userSetup,
244
+ api,
245
+ localeState
240
246
  });
241
- for (const plugin of plugins) {
242
- if (Array.isArray(plugin)) {
243
- const [p2, ...args] = plugin;
244
- app.use(p2, ...args);
245
- } else {
246
- app.use(plugin);
247
- }
248
- }
249
- setActiveLocale(detectLocale(url).locale);
250
- blox.install(app, {});
251
- app.use(pinia);
252
- app.use(router);
253
- for (const record of generateContentRoutes(supportedLocales, locale)) {
254
- if (!router.hasRoute(record.name)) router.addRoute(record);
255
- }
256
- installLocaleAwareResolve(router, blox.strategy);
257
- for (const [name, comp] of Object.entries(globalComponents)) {
258
- app.component(name, comp);
259
- }
260
- userSetup == null ? void 0 : userSetup(app);
247
+ setActiveLocale(pageLocale, localeState);
261
248
  return { app, router, dataRegistry };
262
249
  }
263
250
  async function render(url, ctx) {
264
251
  var _a2;
265
252
  const { locale: pageLocale, slug } = detectLocale(url);
266
- setActiveLocale(pageLocale);
267
253
  let resolvedData = null;
268
254
  if ((_a2 = ctx.resolveCache) == null ? void 0 : _a2.has(url)) {
269
255
  resolvedData = ctx.resolveCache.get(url) ?? null;
@@ -284,7 +270,6 @@ function createBloxSSREntry(options) {
284
270
  collectSeo: collectBloxSeo,
285
271
  website: ctx.website,
286
272
  websiteId: ctx.websiteId,
287
- collections: ctx.collections,
288
273
  llm: ctx.llm
289
274
  });
290
275
  }
@@ -365,9 +350,7 @@ function querySnapshotRows(snapshot, options) {
365
350
  return rows;
366
351
  }
367
352
  export {
368
- BLOX_COLLECTIONS_WINDOW_KEY,
369
353
  BLOX_DATA_WINDOW_KEY,
370
- BLOX_PAGE_SEO_WINDOW_KEY,
371
354
  BLOX_STATE_WINDOW_KEY,
372
355
  BLOX_WEBSITE_ID_WINDOW_KEY,
373
356
  BloxBuildResponseError,
@@ -389,11 +372,7 @@ export {
389
372
  q as generateSitemapIndexXml,
390
373
  r as generateSitemapXml,
391
374
  s as getBloxBuildRequestOptions,
392
- getCollectionCache,
393
- getEmbeddedWebsiteId,
394
375
  t as getSiteIconFlags,
395
- installBloxStateCache,
396
- installCollectionCache,
397
376
  w as localeSitemapPath,
398
377
  x as mergeLlmParts,
399
378
  parseBloxBuildGrantBody,