@bagelink/blox 1.15.529 → 1.15.531

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.
@@ -46,6 +46,7 @@ export interface WebsiteSeo {
46
46
  site_name?: string | null;
47
47
  canonical_base_url?: string | null;
48
48
  noindex?: boolean;
49
+ sitemap_split_by_locale?: boolean;
49
50
  favicon_url?: string | null;
50
51
  webclip?: string | null;
51
52
  twitter_site?: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"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"}
@@ -44,9 +44,14 @@ function getBloxBuildRequestOptions(overrides = {}) {
44
44
  token: overrides.token ?? env("BLOX_BUILD_TOKEN"),
45
45
  tokenHeader: overrides.tokenHeader ?? env("BLOX_BUILD_TOKEN_HEADER") ?? "Authorization",
46
46
  tokenScheme: overrides.tokenScheme ?? env("BLOX_BUILD_TOKEN_SCHEME") ?? "Bearer",
47
- headers: overrides.headers
47
+ headers: overrides.headers,
48
+ retryAttempts: overrides.retryAttempts ?? (Number(env("BLOX_BUILD_RETRY_ATTEMPTS")) || 4),
49
+ retryBaseMs: overrides.retryBaseMs ?? (Number(env("BLOX_BUILD_RETRY_MS")) || 500)
48
50
  };
49
51
  }
52
+ function sleep(ms) {
53
+ return new Promise((resolve) => setTimeout(resolve, ms));
54
+ }
50
55
  async function bloxBuildRequest(input, init = {}, options = {}) {
51
56
  const config = getBloxBuildRequestOptions(options);
52
57
  const headers = new Headers(config.headers);
@@ -57,7 +62,28 @@ async function bloxBuildRequest(input, init = {}, options = {}) {
57
62
  config.tokenScheme ? `${config.tokenScheme} ${config.token}` : config.token
58
63
  );
59
64
  }
60
- return fetch(input, { ...init, headers });
65
+ const attempts = Math.max(1, config.retryAttempts ?? 4);
66
+ const retryBaseMs = Math.max(0, config.retryBaseMs ?? 500);
67
+ for (let attempt = 1; attempt <= attempts; attempt++) {
68
+ try {
69
+ const response = await fetch(input, { ...init, headers });
70
+ const transient = response.status === 429 || response.status >= 500;
71
+ if (response.ok || !transient || attempt === attempts) return response;
72
+ const delay = retryBaseMs * 2 ** (attempt - 1);
73
+ console.warn(
74
+ `[blox-build] retry ${attempt}/${attempts} after HTTP ${response.status} in ${delay}ms`
75
+ );
76
+ if (delay) await sleep(delay);
77
+ } catch (error) {
78
+ if (attempt === attempts) throw error;
79
+ const delay = retryBaseMs * 2 ** (attempt - 1);
80
+ console.warn(
81
+ `[blox-build] retry ${attempt}/${attempts} after ${error.message} in ${delay}ms`
82
+ );
83
+ if (delay) await sleep(delay);
84
+ }
85
+ }
86
+ throw new Error("Blox build request exhausted retries");
61
87
  }
62
88
  async function bloxBuildJson(input, init = {}, options = {}) {
63
89
  const response = await bloxBuildRequest(input, init, options);
@@ -432,8 +458,9 @@ function generateSitemapXml(options) {
432
458
  const mod = lastmod[p];
433
459
  const modLine = mod ? `
434
460
  <lastmod>${esc(mod)}</lastmod>` : "";
461
+ const loc = p === "/" ? base : base + p;
435
462
  return ` <url>
436
- <loc>${esc(base + p)}</loc>${modLine}
463
+ <loc>${esc(loc)}</loc>${modLine}
437
464
  <changefreq>${changefreq}</changefreq>
438
465
  <priority>${priority}</priority>
439
466
  </url>`;
@@ -444,6 +471,35 @@ ${urls.join("\n")}
444
471
  </urlset>
445
472
  `;
446
473
  }
474
+ function generateSitemapIndexXml(options) {
475
+ const base = options.canonicalBase.replace(/\/$/, "");
476
+ const sitemaps = options.sitemapPaths.map((path2) => ` <sitemap>
477
+ <loc>${esc(base + path2)}</loc>
478
+ </sitemap>`);
479
+ return `<?xml version="1.0" encoding="UTF-8"?>
480
+ <sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
481
+ ${sitemaps.join("\n")}
482
+ </sitemapindex>
483
+ `;
484
+ }
485
+ function splitSitemapPathsByLocale(options) {
486
+ const locales = new Set(options.supportedLocales);
487
+ const pathsByLocale = /* @__PURE__ */ new Map();
488
+ for (const path2 of options.renderedPaths) {
489
+ const firstSegment = path2.replace(/^\//, "").split("/")[0];
490
+ const locale = firstSegment && firstSegment !== options.defaultLocale && locales.has(firstSegment) ? firstSegment : options.defaultLocale;
491
+ const paths = pathsByLocale.get(locale) ?? [];
492
+ paths.push(path2);
493
+ pathsByLocale.set(locale, paths);
494
+ }
495
+ return pathsByLocale;
496
+ }
497
+ function localeSitemapPath(locale) {
498
+ if (!/^[A-Za-z0-9]+(?:-[A-Za-z0-9]+)*$/.test(locale)) {
499
+ throw new Error(`Invalid sitemap locale: ${locale}`);
500
+ }
501
+ return `/sitemap-${locale}.xml`;
502
+ }
447
503
  function generateRobotsTxt(options) {
448
504
  const { robotsTxt, canonicalBase, noindex } = options;
449
505
  if (noindex) {
@@ -769,7 +825,7 @@ async function prerender({
769
825
  collections = {},
770
826
  llm = {}
771
827
  } = {}) {
772
- var _a, _b;
828
+ var _a, _b, _c;
773
829
  const absRoot = path.resolve(root);
774
830
  const absClient = path.resolve(absRoot, clientOutDir);
775
831
  const absServerEntry = path.resolve(absRoot, serverEntry);
@@ -922,15 +978,43 @@ async function prerender({
922
978
  if (writeSharedAssets) {
923
979
  const sitemapPaths = rendered.filter((p) => !noindexPaths.has(p));
924
980
  if (canonicalBase && sitemapPaths.length > 0) {
925
- const sitemap = generateSitemapXml({ renderedPaths: sitemapPaths, canonicalBase, lastmod });
926
- await fs.writeFile(path.join(absClient, "sitemap.xml"), sitemap, "utf8");
981
+ if (((_b = website == null ? void 0 : website.seo) == null ? void 0 : _b.sitemap_split_by_locale) !== false) {
982
+ const pathsByLocale = splitSitemapPathsByLocale({
983
+ renderedPaths: sitemapPaths,
984
+ defaultLocale: (website == null ? void 0 : website.default_locale) ?? "en",
985
+ supportedLocales: (website == null ? void 0 : website.supported_locales) ?? [(website == null ? void 0 : website.default_locale) ?? "en"]
986
+ });
987
+ const sitemapFiles = [];
988
+ for (const [locale, localePaths] of pathsByLocale) {
989
+ const sitemapPath = localeSitemapPath(locale);
990
+ await fs.writeFile(
991
+ path.join(absClient, sitemapPath.slice(1)),
992
+ generateSitemapXml({ renderedPaths: localePaths, canonicalBase, lastmod }),
993
+ "utf8"
994
+ );
995
+ sitemapFiles.push(sitemapPath);
996
+ }
997
+ await fs.writeFile(
998
+ path.join(absClient, "sitemap.xml"),
999
+ generateSitemapIndexXml({ canonicalBase, sitemapPaths: sitemapFiles }),
1000
+ "utf8"
1001
+ );
1002
+ console.log(` Generated sitemap.xml (${sitemapFiles.length} locales, ${sitemapPaths.length} URLs)`);
1003
+ } else {
1004
+ await fs.writeFile(
1005
+ path.join(absClient, "sitemap.xml"),
1006
+ generateSitemapXml({ renderedPaths: sitemapPaths, canonicalBase, lastmod }),
1007
+ "utf8"
1008
+ );
1009
+ console.log(` Generated sitemap.xml (${sitemapPaths.length} URLs)`);
1010
+ }
927
1011
  const skipped = noindexPaths.size > 0 ? ` (${noindexPaths.size} noindex excluded)` : "";
928
- console.log(` Generated sitemap.xml (${sitemapPaths.length} URLs)${skipped}`);
1012
+ if (skipped) console.log(` Sitemap exclusions:${skipped}`);
929
1013
  }
930
1014
  const robotsTxt = generateRobotsTxt({
931
1015
  robotsTxt: website == null ? void 0 : website.robots_txt,
932
1016
  canonicalBase,
933
- noindex: (_b = website == null ? void 0 : website.seo) == null ? void 0 : _b.noindex
1017
+ noindex: (_c = website == null ? void 0 : website.seo) == null ? void 0 : _c.noindex
934
1018
  });
935
1019
  await fs.writeFile(path.join(absClient, "robots.txt"), robotsTxt, "utf8");
936
1020
  console.log(" Generated robots.txt");
@@ -1123,13 +1207,16 @@ exports.generateLlmsFullTxt = generateLlmsFullTxt;
1123
1207
  exports.generateLlmsTxt = generateLlmsTxt;
1124
1208
  exports.generateNetlifyRedirects = generateNetlifyRedirects;
1125
1209
  exports.generateRobotsTxt = generateRobotsTxt;
1210
+ exports.generateSitemapIndexXml = generateSitemapIndexXml;
1126
1211
  exports.generateSitemapXml = generateSitemapXml;
1127
1212
  exports.getBloxBuildRequestOptions = getBloxBuildRequestOptions;
1128
1213
  exports.getSiteIconFlags = getSiteIconFlags;
1129
1214
  exports.llmArtifacts = llmArtifacts;
1215
+ exports.localeSitemapPath = localeSitemapPath;
1130
1216
  exports.mergeLlmParts = mergeLlmParts;
1131
1217
  exports.polyfillBloxSsgGlobals = polyfillBloxSsgGlobals;
1132
1218
  exports.prerender = prerender;
1133
1219
  exports.primaryContextEntry = primaryContextEntry;
1134
1220
  exports.resolveManifestProvenance = resolveManifestProvenance;
1221
+ exports.splitSitemapPathsByLocale = splitSitemapPathsByLocale;
1135
1222
  exports.uploadBloxManifest = uploadBloxManifest;
@@ -21,9 +21,14 @@ function getBloxBuildRequestOptions(overrides = {}) {
21
21
  token: overrides.token ?? env("BLOX_BUILD_TOKEN"),
22
22
  tokenHeader: overrides.tokenHeader ?? env("BLOX_BUILD_TOKEN_HEADER") ?? "Authorization",
23
23
  tokenScheme: overrides.tokenScheme ?? env("BLOX_BUILD_TOKEN_SCHEME") ?? "Bearer",
24
- headers: overrides.headers
24
+ headers: overrides.headers,
25
+ retryAttempts: overrides.retryAttempts ?? (Number(env("BLOX_BUILD_RETRY_ATTEMPTS")) || 4),
26
+ retryBaseMs: overrides.retryBaseMs ?? (Number(env("BLOX_BUILD_RETRY_MS")) || 500)
25
27
  };
26
28
  }
29
+ function sleep(ms) {
30
+ return new Promise((resolve2) => setTimeout(resolve2, ms));
31
+ }
27
32
  async function bloxBuildRequest(input, init = {}, options = {}) {
28
33
  const config = getBloxBuildRequestOptions(options);
29
34
  const headers = new Headers(config.headers);
@@ -34,7 +39,28 @@ async function bloxBuildRequest(input, init = {}, options = {}) {
34
39
  config.tokenScheme ? `${config.tokenScheme} ${config.token}` : config.token
35
40
  );
36
41
  }
37
- return fetch(input, { ...init, headers });
42
+ const attempts = Math.max(1, config.retryAttempts ?? 4);
43
+ const retryBaseMs = Math.max(0, config.retryBaseMs ?? 500);
44
+ for (let attempt = 1; attempt <= attempts; attempt++) {
45
+ try {
46
+ const response = await fetch(input, { ...init, headers });
47
+ const transient = response.status === 429 || response.status >= 500;
48
+ if (response.ok || !transient || attempt === attempts) return response;
49
+ const delay = retryBaseMs * 2 ** (attempt - 1);
50
+ console.warn(
51
+ `[blox-build] retry ${attempt}/${attempts} after HTTP ${response.status} in ${delay}ms`
52
+ );
53
+ if (delay) await sleep(delay);
54
+ } catch (error) {
55
+ if (attempt === attempts) throw error;
56
+ const delay = retryBaseMs * 2 ** (attempt - 1);
57
+ console.warn(
58
+ `[blox-build] retry ${attempt}/${attempts} after ${error.message} in ${delay}ms`
59
+ );
60
+ if (delay) await sleep(delay);
61
+ }
62
+ }
63
+ throw new Error("Blox build request exhausted retries");
38
64
  }
39
65
  async function bloxBuildJson(input, init = {}, options = {}) {
40
66
  const response = await bloxBuildRequest(input, init, options);
@@ -409,8 +435,9 @@ function generateSitemapXml(options) {
409
435
  const mod = lastmod[p];
410
436
  const modLine = mod ? `
411
437
  <lastmod>${esc(mod)}</lastmod>` : "";
438
+ const loc = p === "/" ? base : base + p;
412
439
  return ` <url>
413
- <loc>${esc(base + p)}</loc>${modLine}
440
+ <loc>${esc(loc)}</loc>${modLine}
414
441
  <changefreq>${changefreq}</changefreq>
415
442
  <priority>${priority}</priority>
416
443
  </url>`;
@@ -421,6 +448,35 @@ ${urls.join("\n")}
421
448
  </urlset>
422
449
  `;
423
450
  }
451
+ function generateSitemapIndexXml(options) {
452
+ const base = options.canonicalBase.replace(/\/$/, "");
453
+ const sitemaps = options.sitemapPaths.map((path2) => ` <sitemap>
454
+ <loc>${esc(base + path2)}</loc>
455
+ </sitemap>`);
456
+ return `<?xml version="1.0" encoding="UTF-8"?>
457
+ <sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
458
+ ${sitemaps.join("\n")}
459
+ </sitemapindex>
460
+ `;
461
+ }
462
+ function splitSitemapPathsByLocale(options) {
463
+ const locales = new Set(options.supportedLocales);
464
+ const pathsByLocale = /* @__PURE__ */ new Map();
465
+ for (const path2 of options.renderedPaths) {
466
+ const firstSegment = path2.replace(/^\//, "").split("/")[0];
467
+ const locale = firstSegment && firstSegment !== options.defaultLocale && locales.has(firstSegment) ? firstSegment : options.defaultLocale;
468
+ const paths = pathsByLocale.get(locale) ?? [];
469
+ paths.push(path2);
470
+ pathsByLocale.set(locale, paths);
471
+ }
472
+ return pathsByLocale;
473
+ }
474
+ function localeSitemapPath(locale) {
475
+ if (!/^[A-Za-z0-9]+(?:-[A-Za-z0-9]+)*$/.test(locale)) {
476
+ throw new Error(`Invalid sitemap locale: ${locale}`);
477
+ }
478
+ return `/sitemap-${locale}.xml`;
479
+ }
424
480
  function generateRobotsTxt(options) {
425
481
  const { robotsTxt, canonicalBase, noindex } = options;
426
482
  if (noindex) {
@@ -746,7 +802,7 @@ async function prerender({
746
802
  collections = {},
747
803
  llm = {}
748
804
  } = {}) {
749
- var _a, _b;
805
+ var _a, _b, _c;
750
806
  const absRoot = path.resolve(root);
751
807
  const absClient = path.resolve(absRoot, clientOutDir);
752
808
  const absServerEntry = path.resolve(absRoot, serverEntry);
@@ -899,15 +955,43 @@ async function prerender({
899
955
  if (writeSharedAssets) {
900
956
  const sitemapPaths = rendered.filter((p) => !noindexPaths.has(p));
901
957
  if (canonicalBase && sitemapPaths.length > 0) {
902
- const sitemap = generateSitemapXml({ renderedPaths: sitemapPaths, canonicalBase, lastmod });
903
- await fs.writeFile(path.join(absClient, "sitemap.xml"), sitemap, "utf8");
958
+ if (((_b = website == null ? void 0 : website.seo) == null ? void 0 : _b.sitemap_split_by_locale) !== false) {
959
+ const pathsByLocale = splitSitemapPathsByLocale({
960
+ renderedPaths: sitemapPaths,
961
+ defaultLocale: (website == null ? void 0 : website.default_locale) ?? "en",
962
+ supportedLocales: (website == null ? void 0 : website.supported_locales) ?? [(website == null ? void 0 : website.default_locale) ?? "en"]
963
+ });
964
+ const sitemapFiles = [];
965
+ for (const [locale, localePaths] of pathsByLocale) {
966
+ const sitemapPath = localeSitemapPath(locale);
967
+ await fs.writeFile(
968
+ path.join(absClient, sitemapPath.slice(1)),
969
+ generateSitemapXml({ renderedPaths: localePaths, canonicalBase, lastmod }),
970
+ "utf8"
971
+ );
972
+ sitemapFiles.push(sitemapPath);
973
+ }
974
+ await fs.writeFile(
975
+ path.join(absClient, "sitemap.xml"),
976
+ generateSitemapIndexXml({ canonicalBase, sitemapPaths: sitemapFiles }),
977
+ "utf8"
978
+ );
979
+ console.log(` Generated sitemap.xml (${sitemapFiles.length} locales, ${sitemapPaths.length} URLs)`);
980
+ } else {
981
+ await fs.writeFile(
982
+ path.join(absClient, "sitemap.xml"),
983
+ generateSitemapXml({ renderedPaths: sitemapPaths, canonicalBase, lastmod }),
984
+ "utf8"
985
+ );
986
+ console.log(` Generated sitemap.xml (${sitemapPaths.length} URLs)`);
987
+ }
904
988
  const skipped = noindexPaths.size > 0 ? ` (${noindexPaths.size} noindex excluded)` : "";
905
- console.log(` Generated sitemap.xml (${sitemapPaths.length} URLs)${skipped}`);
989
+ if (skipped) console.log(` Sitemap exclusions:${skipped}`);
906
990
  }
907
991
  const robotsTxt = generateRobotsTxt({
908
992
  robotsTxt: website == null ? void 0 : website.robots_txt,
909
993
  canonicalBase,
910
- noindex: (_b = website == null ? void 0 : website.seo) == null ? void 0 : _b.noindex
994
+ noindex: (_c = website == null ? void 0 : website.seo) == null ? void 0 : _c.noindex
911
995
  });
912
996
  await fs.writeFile(path.join(absClient, "robots.txt"), robotsTxt, "utf8");
913
997
  console.log(" Generated robots.txt");
@@ -1090,25 +1174,28 @@ function discoverInternalLinks(html) {
1090
1174
  export {
1091
1175
  BloxBuildResponseError as B,
1092
1176
  prerender as a,
1093
- buildPageHead as b,
1094
- primaryContextEntry as c,
1095
- buildJsonLd as d,
1096
- extractPageText as e,
1177
+ generateSitemapIndexXml as b,
1178
+ buildPageHead as c,
1179
+ primaryContextEntry as d,
1180
+ buildJsonLd as e,
1097
1181
  fetchCmsSiteData as f,
1098
1182
  generateSitemapXml as g,
1099
- bloxBuildJson as h,
1100
- bloxBuildRequest as i,
1101
- buildSiteHead as j,
1102
- fetchCmsPrerenderPaths as k,
1103
- generateLlmsFullTxt as l,
1104
- generateLlmsTxt as m,
1105
- generateNetlifyRedirects as n,
1106
- generateRobotsTxt as o,
1183
+ extractPageText as h,
1184
+ bloxBuildJson as i,
1185
+ bloxBuildRequest as j,
1186
+ buildSiteHead as k,
1187
+ localeSitemapPath as l,
1188
+ fetchCmsPrerenderPaths as m,
1189
+ generateLlmsFullTxt as n,
1190
+ generateLlmsTxt as o,
1107
1191
  polyfillBloxSsgGlobals as p,
1108
- getBloxBuildRequestOptions as q,
1109
- getSiteIconFlags as r,
1110
- mergeLlmParts as s,
1111
- resolveManifestProvenance as t,
1192
+ generateNetlifyRedirects as q,
1193
+ generateRobotsTxt as r,
1194
+ splitSitemapPathsByLocale as s,
1195
+ getBloxBuildRequestOptions as t,
1112
1196
  uploadBloxManifest as u,
1113
- llmArtifacts as v
1197
+ getSiteIconFlags as v,
1198
+ mergeLlmParts as w,
1199
+ resolveManifestProvenance as x,
1200
+ llmArtifacts as y
1114
1201
  };
@@ -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("./prerender-BKt6NiaM.cjs");
29
+ const llmArtifacts = require("./prerender-Dc2Zl2PC.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
  function resolveShardCount(shards) {
@@ -82,7 +82,7 @@ function runShard(index, total, paths, opts, llmPartsDir, routePartsDir, siteDat
82
82
  });
83
83
  }
84
84
  async function runSharded(opts) {
85
- var _a;
85
+ var _a, _b;
86
86
  const total = resolveShardCount(opts.shards);
87
87
  const fs = await import("node:fs/promises");
88
88
  const paths = [...opts.extraPaths];
@@ -133,7 +133,7 @@ async function runSharded(opts) {
133
133
  }
134
134
  if (process.env.BLOX_SSG_LLM !== "0") {
135
135
  try {
136
- const { mergeLlmParts } = await Promise.resolve().then(() => require("./prerender-BKt6NiaM.cjs")).then((n) => n.llmArtifacts);
136
+ const { mergeLlmParts } = await Promise.resolve().then(() => require("./prerender-Dc2Zl2PC.cjs")).then((n) => n.llmArtifacts);
137
137
  const mergeWebsite = website;
138
138
  const partFiles = Array.from({ length: total }, (_, i) => path.join(llmPartsDir, `part.${i}.json`));
139
139
  const { pages } = await mergeLlmParts({
@@ -155,13 +155,38 @@ async function runSharded(opts) {
155
155
  const canonicalBase = (((_a = website.seo) == null ? void 0 : _a.canonical_base_url) || website.domain || "").replace(/\/$/, "");
156
156
  const indexableRoutes = [...byUrl.values()].filter((route) => !route.noindex);
157
157
  if (canonicalBase && indexableRoutes.length > 0) {
158
- await fs.writeFile(path.resolve("dist", "sitemap.xml"), llmArtifacts.generateSitemapXml({
159
- renderedPaths: indexableRoutes.map((route) => route.url),
160
- canonicalBase,
161
- lastmod: Object.fromEntries(
162
- indexableRoutes.flatMap((route) => route.lastmod ? [[route.url, route.lastmod]] : [])
163
- )
164
- }), "utf8");
158
+ const lastmod = Object.fromEntries(
159
+ indexableRoutes.flatMap((route) => route.lastmod ? [[route.url, route.lastmod]] : [])
160
+ );
161
+ const renderedPaths = indexableRoutes.map((route) => route.url);
162
+ if (((_b = website.seo) == null ? void 0 : _b.sitemap_split_by_locale) !== false) {
163
+ const pathsByLocale = llmArtifacts.splitSitemapPathsByLocale({
164
+ renderedPaths,
165
+ defaultLocale: website.default_locale,
166
+ supportedLocales: website.supported_locales
167
+ });
168
+ const sitemapPaths = [];
169
+ for (const [locale, localePaths] of pathsByLocale) {
170
+ const sitemapPath = llmArtifacts.localeSitemapPath(locale);
171
+ await fs.writeFile(path.resolve("dist", sitemapPath.slice(1)), llmArtifacts.generateSitemapXml({
172
+ renderedPaths: localePaths,
173
+ canonicalBase,
174
+ lastmod
175
+ }), "utf8");
176
+ sitemapPaths.push(sitemapPath);
177
+ }
178
+ await fs.writeFile(
179
+ path.resolve("dist", "sitemap.xml"),
180
+ llmArtifacts.generateSitemapIndexXml({ canonicalBase, sitemapPaths }),
181
+ "utf8"
182
+ );
183
+ } else {
184
+ await fs.writeFile(path.resolve("dist", "sitemap.xml"), llmArtifacts.generateSitemapXml({
185
+ renderedPaths,
186
+ canonicalBase,
187
+ lastmod
188
+ }), "utf8");
189
+ }
165
190
  }
166
191
  await fs.rm(routePartsDir, { recursive: true, force: true });
167
192
  await fs.rm(siteDataFile, { force: true }).catch(() => {
@@ -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 generateSitemapXml } from "./prerender-M2VjuOlc.js";
5
+ import { f as fetchCmsSiteData, s as splitSitemapPathsByLocale, l as localeSitemapPath, g as generateSitemapXml, b as generateSitemapIndexXml } from "./prerender-VtzdjvzI.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
  function resolveShardCount(shards) {
@@ -58,7 +58,7 @@ function runShard(index, total, paths, opts, llmPartsDir, routePartsDir, siteDat
58
58
  });
59
59
  }
60
60
  async function runSharded(opts) {
61
- var _a;
61
+ var _a, _b;
62
62
  const total = resolveShardCount(opts.shards);
63
63
  const fs = await import("node:fs/promises");
64
64
  const paths = [...opts.extraPaths];
@@ -109,7 +109,7 @@ async function runSharded(opts) {
109
109
  }
110
110
  if (process.env.BLOX_SSG_LLM !== "0") {
111
111
  try {
112
- const { mergeLlmParts } = await import("./prerender-M2VjuOlc.js").then((n) => n.v);
112
+ const { mergeLlmParts } = await import("./prerender-VtzdjvzI.js").then((n) => n.y);
113
113
  const mergeWebsite = website;
114
114
  const partFiles = Array.from({ length: total }, (_, i) => path.join(llmPartsDir, `part.${i}.json`));
115
115
  const { pages } = await mergeLlmParts({
@@ -131,13 +131,38 @@ async function runSharded(opts) {
131
131
  const canonicalBase = (((_a = website.seo) == null ? void 0 : _a.canonical_base_url) || website.domain || "").replace(/\/$/, "");
132
132
  const indexableRoutes = [...byUrl.values()].filter((route) => !route.noindex);
133
133
  if (canonicalBase && indexableRoutes.length > 0) {
134
- await fs.writeFile(path.resolve("dist", "sitemap.xml"), generateSitemapXml({
135
- renderedPaths: indexableRoutes.map((route) => route.url),
136
- canonicalBase,
137
- lastmod: Object.fromEntries(
138
- indexableRoutes.flatMap((route) => route.lastmod ? [[route.url, route.lastmod]] : [])
139
- )
140
- }), "utf8");
134
+ const lastmod = Object.fromEntries(
135
+ indexableRoutes.flatMap((route) => route.lastmod ? [[route.url, route.lastmod]] : [])
136
+ );
137
+ const renderedPaths = indexableRoutes.map((route) => route.url);
138
+ if (((_b = website.seo) == null ? void 0 : _b.sitemap_split_by_locale) !== false) {
139
+ const pathsByLocale = splitSitemapPathsByLocale({
140
+ renderedPaths,
141
+ defaultLocale: website.default_locale,
142
+ supportedLocales: website.supported_locales
143
+ });
144
+ const sitemapPaths = [];
145
+ for (const [locale, localePaths] of pathsByLocale) {
146
+ const sitemapPath = localeSitemapPath(locale);
147
+ await fs.writeFile(path.resolve("dist", sitemapPath.slice(1)), generateSitemapXml({
148
+ renderedPaths: localePaths,
149
+ canonicalBase,
150
+ lastmod
151
+ }), "utf8");
152
+ sitemapPaths.push(sitemapPath);
153
+ }
154
+ await fs.writeFile(
155
+ path.resolve("dist", "sitemap.xml"),
156
+ generateSitemapIndexXml({ canonicalBase, sitemapPaths }),
157
+ "utf8"
158
+ );
159
+ } else {
160
+ await fs.writeFile(path.resolve("dist", "sitemap.xml"), generateSitemapXml({
161
+ renderedPaths,
162
+ canonicalBase,
163
+ lastmod
164
+ }), "utf8");
165
+ }
141
166
  }
142
167
  await fs.rm(routePartsDir, { recursive: true, force: true });
143
168
  await fs.rm(siteDataFile, { force: true }).catch(() => {
@@ -7,6 +7,10 @@ export interface BloxBuildRequestOptions {
7
7
  tokenScheme?: string;
8
8
  /** Additional build-only headers. */
9
9
  headers?: HeadersInit;
10
+ /** Total attempts for transient network, 429, and 5xx failures. @default 4 */
11
+ retryAttempts?: number;
12
+ /** Initial retry delay in milliseconds; doubles per attempt. @default 500 */
13
+ retryBaseMs?: number;
10
14
  }
11
15
  export declare class BloxBuildResponseError extends Error {
12
16
  readonly status: number;
@@ -1 +1 @@
1
- {"version":3,"file":"build-request.d.ts","sourceRoot":"","sources":["../../src/ssg/build-request.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,uBAAuB;IACvC,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,qCAAqC;IACrC,OAAO,CAAC,EAAE,WAAW,CAAA;CACrB;AAED,qBAAa,sBAAuB,SAAQ,KAAK;aAE/B,MAAM,EAAE,MAAM;aACd,GAAG,EAAE,MAAM;gBADX,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EAC3B,UAAU,EAAE,MAAM;CAKnB;AAMD,uFAAuF;AACvF,wBAAgB,0BAA0B,CACzC,SAAS,GAAE,uBAA4B,GACrC,uBAAuB,CAOzB;AAED,gFAAgF;AAChF,wBAAsB,gBAAgB,CACrC,KAAK,EAAE,WAAW,GAAG,GAAG,EACxB,IAAI,GAAE,WAAgB,EACtB,OAAO,GAAE,uBAA4B,GACnC,OAAO,CAAC,QAAQ,CAAC,CAWnB;AAED,sEAAsE;AACtE,wBAAsB,aAAa,CAAC,CAAC,EACpC,KAAK,EAAE,WAAW,GAAG,GAAG,EACxB,IAAI,GAAE,WAAgB,EACtB,OAAO,GAAE,uBAA4B,GACnC,OAAO,CAAC,CAAC,CAAC,CAQZ"}
1
+ {"version":3,"file":"build-request.d.ts","sourceRoot":"","sources":["../../src/ssg/build-request.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,uBAAuB;IACvC,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,qCAAqC;IACrC,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,qBAAa,sBAAuB,SAAQ,KAAK;aAE/B,MAAM,EAAE,MAAM;aACd,GAAG,EAAE,MAAM;gBADX,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EAC3B,UAAU,EAAE,MAAM;CAKnB;AAMD,uFAAuF;AACvF,wBAAgB,0BAA0B,CACzC,SAAS,GAAE,uBAA4B,GACrC,uBAAuB,CAWzB;AAMD,gFAAgF;AAChF,wBAAsB,gBAAgB,CACrC,KAAK,EAAE,WAAW,GAAG,GAAG,EACxB,IAAI,GAAE,WAAgB,EACtB,OAAO,GAAE,uBAA4B,GACnC,OAAO,CAAC,QAAQ,CAAC,CAiCnB;AAED,sEAAsE;AACtE,wBAAsB,aAAa,CAAC,CAAC,EACpC,KAAK,EAAE,WAAW,GAAG,GAAG,EACxB,IAAI,GAAE,WAAgB,EACtB,OAAO,GAAE,uBAA4B,GACnC,OAAO,CAAC,CAAC,CAAC,CAQZ"}
package/dist/ssg/cli.cjs CHANGED
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  const process = require("node:process");
4
4
  const fs = require("node:fs/promises");
5
- const llmArtifacts = require("../prerender-BKt6NiaM.cjs");
5
+ const llmArtifacts = require("../prerender-Dc2Zl2PC.cjs");
6
6
  function installFetchTimeout() {
7
7
  const ms = Number(process.env.BLOX_SSG_FETCH_TIMEOUT_MS) || 2e4;
8
8
  const original = globalThis.fetch;
@@ -123,7 +123,7 @@ Environment:
123
123
  if (shardsOpt !== null || routesCmd) {
124
124
  const { apiBase: apiBase2, websiteName: configWebsiteName2 } = await resolveApiBase(mode);
125
125
  const websiteName2 = process.env.WEBSITE_NAME ?? configWebsiteName2 ?? "default";
126
- const { runSharded } = await Promise.resolve().then(() => require("../shard-runner-B_obJ3aA.cjs"));
126
+ const { runSharded } = await Promise.resolve().then(() => require("../shard-runner-Bn4JyeQC.cjs"));
127
127
  const code = await runSharded({
128
128
  shards: shardsOpt ?? "auto",
129
129
  mode,
package/dist/ssg/cli.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env bun
2
2
  import process from "node:process";
3
3
  import fs from "node:fs/promises";
4
- import { u as uploadBloxManifest, p as polyfillBloxSsgGlobals, f as fetchCmsSiteData, a as prerender } from "../prerender-M2VjuOlc.js";
4
+ import { u as uploadBloxManifest, p as polyfillBloxSsgGlobals, f as fetchCmsSiteData, a as prerender } from "../prerender-VtzdjvzI.js";
5
5
  function installFetchTimeout() {
6
6
  const ms = Number(process.env.BLOX_SSG_FETCH_TIMEOUT_MS) || 2e4;
7
7
  const original = globalThis.fetch;
@@ -122,7 +122,7 @@ Environment:
122
122
  if (shardsOpt !== null || routesCmd) {
123
123
  const { apiBase: apiBase2, websiteName: configWebsiteName2 } = await resolveApiBase(mode);
124
124
  const websiteName2 = process.env.WEBSITE_NAME ?? configWebsiteName2 ?? "default";
125
- const { runSharded } = await import("../shard-runner-BrakAYOw.js");
125
+ const { runSharded } = await import("../shard-runner-JAI_Tb4S.js");
126
126
  const code = await runSharded({
127
127
  shards: shardsOpt ?? "auto",
128
128
  mode,
@@ -22,7 +22,7 @@ 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("../prerender-BKt6NiaM.cjs");
25
+ const llmArtifacts = require("../prerender-Dc2Zl2PC.cjs");
26
26
  const ssg_client = require("./client.cjs");
27
27
  const pinia = require("pinia");
28
28
  const vue = require("vue");
@@ -268,13 +268,16 @@ exports.generateLlmsFullTxt = llmArtifacts.generateLlmsFullTxt;
268
268
  exports.generateLlmsTxt = llmArtifacts.generateLlmsTxt;
269
269
  exports.generateNetlifyRedirects = llmArtifacts.generateNetlifyRedirects;
270
270
  exports.generateRobotsTxt = llmArtifacts.generateRobotsTxt;
271
+ exports.generateSitemapIndexXml = llmArtifacts.generateSitemapIndexXml;
271
272
  exports.generateSitemapXml = llmArtifacts.generateSitemapXml;
272
273
  exports.getBloxBuildRequestOptions = llmArtifacts.getBloxBuildRequestOptions;
273
274
  exports.getSiteIconFlags = llmArtifacts.getSiteIconFlags;
275
+ exports.localeSitemapPath = llmArtifacts.localeSitemapPath;
274
276
  exports.mergeLlmParts = llmArtifacts.mergeLlmParts;
275
277
  exports.polyfillBloxSsgGlobals = llmArtifacts.polyfillBloxSsgGlobals;
276
278
  exports.prerender = llmArtifacts.prerender;
277
279
  exports.resolveManifestProvenance = llmArtifacts.resolveManifestProvenance;
280
+ exports.splitSitemapPathsByLocale = llmArtifacts.splitSitemapPathsByLocale;
278
281
  exports.uploadBloxManifest = llmArtifacts.uploadBloxManifest;
279
282
  exports.BLOX_COLLECTIONS_WINDOW_KEY = ssg_client.BLOX_COLLECTIONS_WINDOW_KEY;
280
283
  exports.BLOX_DATA_WINDOW_KEY = ssg_client.BLOX_DATA_WINDOW_KEY;
@@ -22,7 +22,7 @@ export { prerender } from './prerender';
22
22
  export type { PrerenderOptions, PrerenderResult, RenderContext, RenderResult } from './prerender';
23
23
  export { renderBloxSsgPage } from './render-resolved-page';
24
24
  export type { BloxSsgRouterLike } from './render-resolved-page';
25
- export { buildPageHead, buildSiteHead, generateNetlifyRedirects, generateRobotsTxt, generateSitemapXml, getSiteIconFlags } from './seo';
25
+ export { buildPageHead, buildSiteHead, generateNetlifyRedirects, generateRobotsTxt, generateSitemapIndexXml, generateSitemapXml, getSiteIconFlags, localeSitemapPath, splitSitemapPathsByLocale } from './seo';
26
26
  export type { RedirectEntry, SeoPageData } from './seo';
27
27
  export { buildJsonLd, extractPageText, generateLlmsFullTxt, generateLlmsTxt, mergeLlmParts } from './llm-artifacts';
28
28
  export type { LlmArtifactsConfig, LlmPageEntry } from './llm-artifacts';
@@ -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,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,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,MAAM,OAAO,CAAA;AACvD,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"}
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,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,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,uBAAuB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,OAAO,CAAA;AAC9M,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AACvD,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"}
@@ -1,5 +1,5 @@
1
- import { b as buildPageHead, c as primaryContextEntry, d as buildJsonLd, e as extractPageText, B as BloxBuildResponseError, h as bloxBuildJson } from "../prerender-M2VjuOlc.js";
2
- import { i, j, k, f, l, m, n, o, g, q, r, s, p, a, t, u } from "../prerender-M2VjuOlc.js";
1
+ import { c as buildPageHead, d as primaryContextEntry, e as buildJsonLd, h as extractPageText, B as BloxBuildResponseError, i as bloxBuildJson } from "../prerender-VtzdjvzI.js";
2
+ import { j, k, m, f, n, o, q, r, b, g, t, v, l, w, p, a, x, s, u } from "../prerender-VtzdjvzI.js";
3
3
  import { BLOX_STATE_WINDOW_KEY, BLOX_WEBSITE_ID_WINDOW_KEY } from "./client.mjs";
4
4
  import { BLOX_COLLECTIONS_WINDOW_KEY, BLOX_DATA_WINDOW_KEY, BLOX_PAGE_SEO_WINDOW_KEY, getCollectionCache, getEmbeddedWebsiteId, installBloxStateCache, installCollectionCache } from "./client.mjs";
5
5
  import { createPinia } from "pinia";
@@ -241,29 +241,32 @@ export {
241
241
  BLOX_WEBSITE_ID_WINDOW_KEY,
242
242
  BloxBuildResponseError,
243
243
  bloxBuildJson,
244
- i as bloxBuildRequest,
244
+ j as bloxBuildRequest,
245
245
  buildJsonLd,
246
246
  buildPageHead,
247
- j as buildSiteHead,
247
+ k as buildSiteHead,
248
248
  createBloxSSREntry,
249
249
  extractPageText,
250
- k as fetchCmsPrerenderPaths,
250
+ m as fetchCmsPrerenderPaths,
251
251
  f as fetchCmsSiteData,
252
- l as generateLlmsFullTxt,
253
- m as generateLlmsTxt,
254
- n as generateNetlifyRedirects,
255
- o as generateRobotsTxt,
252
+ n as generateLlmsFullTxt,
253
+ o as generateLlmsTxt,
254
+ q as generateNetlifyRedirects,
255
+ r as generateRobotsTxt,
256
+ b as generateSitemapIndexXml,
256
257
  g as generateSitemapXml,
257
- q as getBloxBuildRequestOptions,
258
+ t as getBloxBuildRequestOptions,
258
259
  getCollectionCache,
259
260
  getEmbeddedWebsiteId,
260
- r as getSiteIconFlags,
261
+ v as getSiteIconFlags,
261
262
  installBloxStateCache,
262
263
  installCollectionCache,
263
- s as mergeLlmParts,
264
+ l as localeSitemapPath,
265
+ w as mergeLlmParts,
264
266
  p as polyfillBloxSsgGlobals,
265
267
  a as prerender,
266
268
  renderBloxSsgPage,
267
- t as resolveManifestProvenance,
269
+ x as resolveManifestProvenance,
270
+ s as splitSitemapPathsByLocale,
268
271
  u as uploadBloxManifest
269
272
  };
@@ -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":"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"}
package/dist/ssg/seo.d.ts CHANGED
@@ -67,6 +67,16 @@ export declare function generateSitemapXml(options: {
67
67
  /** Per-path last-modified ISO timestamps (path → ISO). Emits <lastmod>. */
68
68
  lastmod?: Record<string, string>;
69
69
  }): string;
70
+ export declare function generateSitemapIndexXml(options: {
71
+ canonicalBase: string;
72
+ sitemapPaths: string[];
73
+ }): string;
74
+ export declare function splitSitemapPathsByLocale(options: {
75
+ renderedPaths: string[];
76
+ defaultLocale: string;
77
+ supportedLocales: string[];
78
+ }): Map<string, string[]>;
79
+ export declare function localeSitemapPath(locale: string): string;
70
80
  export declare function generateRobotsTxt(options: {
71
81
  robotsTxt?: string | null;
72
82
  canonicalBase?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"seo.d.ts","sourceRoot":"","sources":["../../src/ssg/seo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"seo.d.ts","sourceRoot":"","sources":["../../src/ssg/seo.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"shard-runner.d.ts","sourceRoot":"","sources":["../../src/ssg/shard-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAWH,MAAM,WAAW,kBAAkB;IAClC,qDAAqD;IACrD,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAA;IACZ,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAA;IACf,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAA;IACnB,iFAAiF;IACjF,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,8FAA8F;IAC9F,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB;AA4ED;;GAEG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAsH1E"}
1
+ {"version":3,"file":"shard-runner.d.ts","sourceRoot":"","sources":["../../src/ssg/shard-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAWH,MAAM,WAAW,kBAAkB;IAClC,qDAAqD;IACrD,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAA;IACZ,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAA;IACf,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAA;IACnB,iFAAiF;IACjF,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,8FAA8F;IAC9F,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB;AA4ED;;GAEG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CA+I1E"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@bagelink/blox",
3
3
  "type": "module",
4
- "version": "1.15.529",
4
+ "version": "1.15.531",
5
5
  "description": "Blox page builder library for drag-and-drop page building and static data management",
6
6
  "author": {
7
7
  "name": "Bagel Studio",