@bagelink/blox 1.18.3 → 1.18.7
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-BKrLRDBC.js → PreviewApp-9H9-jLVN.js} +1 -1
- package/dist/{PreviewApp-Kb3uTwtH.cjs → PreviewApp-D8ZBTG0j.cjs} +1 -1
- package/dist/{PreviewApp.vue_vue_type_style_index_0_lang-AC3W0NSJ.cjs → PreviewApp.vue_vue_type_style_index_0_lang-BYCayJs0.cjs} +1 -1
- package/dist/{PreviewApp.vue_vue_type_style_index_0_lang-BMGv1eSR.js → PreviewApp.vue_vue_type_style_index_0_lang-BwiLyRBw.js} +1 -1
- package/dist/{appRuntime-CWlPH_5r.js → appRuntime-DZSCSsnS.js} +39 -156
- package/dist/{appRuntime-BU2Ls-Y7.cjs → appRuntime-Z0AxTPxf.cjs} +17 -134
- package/dist/composables/useLocale.d.ts +3 -0
- package/dist/composables/useLocale.d.ts.map +1 -1
- package/dist/composables/useLocaleNav.d.ts.map +1 -1
- package/dist/createBloxApp.d.ts.map +1 -1
- package/dist/hydration.d.ts +2 -0
- package/dist/hydration.d.ts.map +1 -1
- package/dist/index.cjs +16 -9
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +44 -36
- package/dist/localeStrategy-OwRIn35C.cjs +207 -0
- package/dist/localeStrategy-hXlNof1E.js +208 -0
- package/dist/localeStrategy.d.ts +21 -0
- package/dist/localeStrategy.d.ts.map +1 -1
- package/dist/{shard-runner-zmTY7v3n.cjs → shard-runner-Bz46UqN8.cjs} +16 -7
- package/dist/{shard-runner-yZNy6pQy.js → shard-runner-CoFcUVGe.js} +17 -8
- package/dist/ssg/cli.cjs +10 -2
- package/dist/ssg/cli.mjs +10 -2
- package/dist/ssg/cms-routes.d.ts +7 -0
- package/dist/ssg/cms-routes.d.ts.map +1 -1
- package/dist/ssg/index.cjs +4 -2
- package/dist/ssg/index.mjs +19 -17
- package/dist/ssg/prerender.d.ts +5 -1
- package/dist/ssg/prerender.d.ts.map +1 -1
- package/dist/ssg/render-resolved-page.d.ts +2 -0
- package/dist/ssg/render-resolved-page.d.ts.map +1 -1
- package/dist/ssg/shard-runner.d.ts +3 -0
- package/dist/ssg/shard-runner.d.ts.map +1 -1
- package/dist/ssg/validate-output.d.ts +9 -0
- package/dist/ssg/validate-output.d.ts.map +1 -1
- package/dist/{validate-output-3fNPagvj.js → validate-output-B8pmE7hf.js} +115 -28
- package/dist/{validate-output-CrhXrC1l.cjs → validate-output-CbIQrCwa.cjs} +99 -12
- package/package.json +125 -124
- package/LICENSE +0 -21
- package/dist/pageTitle-B1mtDJKn.js +0 -59
- package/dist/pageTitle-wobGhtiZ.cjs +0 -58
|
@@ -26,7 +26,7 @@ const node_child_process = require("node:child_process");
|
|
|
26
26
|
const os = require("node:os");
|
|
27
27
|
const path = require("node:path");
|
|
28
28
|
const process = require("node:process");
|
|
29
|
-
const llmArtifacts = require("./validate-output-
|
|
29
|
+
const llmArtifacts = require("./validate-output-CbIQrCwa.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";
|
|
@@ -39,6 +39,9 @@ function matchesCmsPath(pathname, cmsPaths) {
|
|
|
39
39
|
}
|
|
40
40
|
return false;
|
|
41
41
|
}
|
|
42
|
+
function sitemapRoutesForWebsite(routes, siteNoindex) {
|
|
43
|
+
return siteNoindex ? routes : routes.filter((route) => !route.noindex);
|
|
44
|
+
}
|
|
42
45
|
function resolveShardCount(shards) {
|
|
43
46
|
if (shards === "auto") {
|
|
44
47
|
const cores = os.cpus().length || 4;
|
|
@@ -92,7 +95,7 @@ function runShard(index, total, paths, opts, llmPartsDir, routePartsDir, siteDat
|
|
|
92
95
|
});
|
|
93
96
|
}
|
|
94
97
|
async function runSharded(opts) {
|
|
95
|
-
var _a, _b;
|
|
98
|
+
var _a, _b, _c, _d;
|
|
96
99
|
const total = resolveShardCount(opts.shards);
|
|
97
100
|
const fs = await import("node:fs/promises");
|
|
98
101
|
const paths = [...opts.extraPaths];
|
|
@@ -164,9 +167,9 @@ async function runSharded(opts) {
|
|
|
164
167
|
);
|
|
165
168
|
return failed[0].code;
|
|
166
169
|
}
|
|
167
|
-
if (process.env.BLOX_SSG_LLM !== "0") {
|
|
170
|
+
if (process.env.BLOX_SSG_LLM !== "0" && !((_a = website == null ? void 0 : website.seo) == null ? void 0 : _a.noindex)) {
|
|
168
171
|
try {
|
|
169
|
-
const { mergeLlmParts } = await Promise.resolve().then(() => require("./validate-output-
|
|
172
|
+
const { mergeLlmParts } = await Promise.resolve().then(() => require("./validate-output-CbIQrCwa.cjs")).then((n) => n.llmArtifacts);
|
|
170
173
|
const mergeWebsite = website;
|
|
171
174
|
const partFiles = Array.from({ length: total }, (_, i) => path.join(llmPartsDir, `part.${i}.json`));
|
|
172
175
|
const { pages } = await mergeLlmParts({
|
|
@@ -185,8 +188,11 @@ async function runSharded(opts) {
|
|
|
185
188
|
return JSON.parse(await fs.readFile(file, "utf8"));
|
|
186
189
|
}));
|
|
187
190
|
const byUrl = new Map(routeParts.flat().map((route) => [route.url, route]));
|
|
188
|
-
const canonicalBase = (((
|
|
189
|
-
const indexableRoutes =
|
|
191
|
+
const canonicalBase = (((_b = website.seo) == null ? void 0 : _b.canonical_base_url) || website.domain || "").replace(/\/$/, "");
|
|
192
|
+
const indexableRoutes = sitemapRoutesForWebsite(
|
|
193
|
+
[...byUrl.values()],
|
|
194
|
+
(_c = website.seo) == null ? void 0 : _c.noindex
|
|
195
|
+
);
|
|
190
196
|
if (canonicalBase && indexableRoutes.length > 0) {
|
|
191
197
|
const artifacts = llmArtifacts.generateSitemapArtifacts({
|
|
192
198
|
routes: indexableRoutes.map((route) => ({
|
|
@@ -196,7 +202,7 @@ async function runSharded(opts) {
|
|
|
196
202
|
canonicalBase,
|
|
197
203
|
defaultLocale: website.default_locale,
|
|
198
204
|
supportedLocales: website.supported_locales,
|
|
199
|
-
splitByLocale: (
|
|
205
|
+
splitByLocale: (_d = website.seo) == null ? void 0 : _d.sitemap_split_by_locale
|
|
200
206
|
});
|
|
201
207
|
for (const artifact of artifacts) {
|
|
202
208
|
await fs.writeFile(
|
|
@@ -209,8 +215,11 @@ async function runSharded(opts) {
|
|
|
209
215
|
await fs.rm(routePartsDir, { recursive: true, force: true });
|
|
210
216
|
await fs.rm(siteDataFile, { force: true }).catch(() => {
|
|
211
217
|
});
|
|
218
|
+
await llmArtifacts.validateNoRedirectingLinks(path.resolve("dist"));
|
|
219
|
+
console.log("[blox-ssg] validated internal links (no redirecting URLs)");
|
|
212
220
|
console.log(`[blox-ssg] sharded run done in ${((Date.now() - start) / 1e3).toFixed(1)}s`);
|
|
213
221
|
return 0;
|
|
214
222
|
}
|
|
215
223
|
exports.matchesCmsPath = matchesCmsPath;
|
|
216
224
|
exports.runSharded = runSharded;
|
|
225
|
+
exports.sitemapRoutesForWebsite = sitemapRoutesForWebsite;
|
|
@@ -2,7 +2,7 @@ import { spawn } from "node:child_process";
|
|
|
2
2
|
import os from "node:os";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import process from "node:process";
|
|
5
|
-
import { f as fetchCmsSiteData, g as generateSitemapArtifacts } from "./validate-output-
|
|
5
|
+
import { f as fetchCmsSiteData, g as generateSitemapArtifacts, d as validateNoRedirectingLinks } from "./validate-output-B8pmE7hf.js";
|
|
6
6
|
const AUTO_SHARD_CAP = Number(process.env.BLOX_SSG_SHARD_CAP) || 6;
|
|
7
7
|
const PREFETCH_BUDGET = Number(process.env.BLOX_SSG_PREFETCH_BUDGET) || 24;
|
|
8
8
|
const SEQUENTIAL_SHARDS = process.env.BLOX_SSG_SEQUENTIAL === "1";
|
|
@@ -15,6 +15,9 @@ function matchesCmsPath(pathname, cmsPaths) {
|
|
|
15
15
|
}
|
|
16
16
|
return false;
|
|
17
17
|
}
|
|
18
|
+
function sitemapRoutesForWebsite(routes, siteNoindex) {
|
|
19
|
+
return siteNoindex ? routes : routes.filter((route) => !route.noindex);
|
|
20
|
+
}
|
|
18
21
|
function resolveShardCount(shards) {
|
|
19
22
|
if (shards === "auto") {
|
|
20
23
|
const cores = os.cpus().length || 4;
|
|
@@ -68,7 +71,7 @@ function runShard(index, total, paths, opts, llmPartsDir, routePartsDir, siteDat
|
|
|
68
71
|
});
|
|
69
72
|
}
|
|
70
73
|
async function runSharded(opts) {
|
|
71
|
-
var _a, _b;
|
|
74
|
+
var _a, _b, _c, _d;
|
|
72
75
|
const total = resolveShardCount(opts.shards);
|
|
73
76
|
const fs = await import("node:fs/promises");
|
|
74
77
|
const paths = [...opts.extraPaths];
|
|
@@ -140,9 +143,9 @@ async function runSharded(opts) {
|
|
|
140
143
|
);
|
|
141
144
|
return failed[0].code;
|
|
142
145
|
}
|
|
143
|
-
if (process.env.BLOX_SSG_LLM !== "0") {
|
|
146
|
+
if (process.env.BLOX_SSG_LLM !== "0" && !((_a = website == null ? void 0 : website.seo) == null ? void 0 : _a.noindex)) {
|
|
144
147
|
try {
|
|
145
|
-
const { mergeLlmParts } = await import("./validate-output-
|
|
148
|
+
const { mergeLlmParts } = await import("./validate-output-B8pmE7hf.js").then((n) => n.D);
|
|
146
149
|
const mergeWebsite = website;
|
|
147
150
|
const partFiles = Array.from({ length: total }, (_, i) => path.join(llmPartsDir, `part.${i}.json`));
|
|
148
151
|
const { pages } = await mergeLlmParts({
|
|
@@ -161,8 +164,11 @@ async function runSharded(opts) {
|
|
|
161
164
|
return JSON.parse(await fs.readFile(file, "utf8"));
|
|
162
165
|
}));
|
|
163
166
|
const byUrl = new Map(routeParts.flat().map((route) => [route.url, route]));
|
|
164
|
-
const canonicalBase = (((
|
|
165
|
-
const indexableRoutes =
|
|
167
|
+
const canonicalBase = (((_b = website.seo) == null ? void 0 : _b.canonical_base_url) || website.domain || "").replace(/\/$/, "");
|
|
168
|
+
const indexableRoutes = sitemapRoutesForWebsite(
|
|
169
|
+
[...byUrl.values()],
|
|
170
|
+
(_c = website.seo) == null ? void 0 : _c.noindex
|
|
171
|
+
);
|
|
166
172
|
if (canonicalBase && indexableRoutes.length > 0) {
|
|
167
173
|
const artifacts = generateSitemapArtifacts({
|
|
168
174
|
routes: indexableRoutes.map((route) => ({
|
|
@@ -172,7 +178,7 @@ async function runSharded(opts) {
|
|
|
172
178
|
canonicalBase,
|
|
173
179
|
defaultLocale: website.default_locale,
|
|
174
180
|
supportedLocales: website.supported_locales,
|
|
175
|
-
splitByLocale: (
|
|
181
|
+
splitByLocale: (_d = website.seo) == null ? void 0 : _d.sitemap_split_by_locale
|
|
176
182
|
});
|
|
177
183
|
for (const artifact of artifacts) {
|
|
178
184
|
await fs.writeFile(
|
|
@@ -185,10 +191,13 @@ async function runSharded(opts) {
|
|
|
185
191
|
await fs.rm(routePartsDir, { recursive: true, force: true });
|
|
186
192
|
await fs.rm(siteDataFile, { force: true }).catch(() => {
|
|
187
193
|
});
|
|
194
|
+
await validateNoRedirectingLinks(path.resolve("dist"));
|
|
195
|
+
console.log("[blox-ssg] validated internal links (no redirecting URLs)");
|
|
188
196
|
console.log(`[blox-ssg] sharded run done in ${((Date.now() - start) / 1e3).toFixed(1)}s`);
|
|
189
197
|
return 0;
|
|
190
198
|
}
|
|
191
199
|
export {
|
|
192
200
|
matchesCmsPath,
|
|
193
|
-
runSharded
|
|
201
|
+
runSharded,
|
|
202
|
+
sitemapRoutesForWebsite
|
|
194
203
|
};
|
package/dist/ssg/cli.cjs
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
const process = require("node:process");
|
|
4
4
|
const fs = require("node:fs/promises");
|
|
5
5
|
const ssg_buildGrant = require("./build-grant.cjs");
|
|
6
|
-
const llmArtifacts = require("../validate-output-
|
|
6
|
+
const llmArtifacts = require("../validate-output-CbIQrCwa.cjs");
|
|
7
|
+
const localeStrategy = require("../localeStrategy-OwRIn35C.cjs");
|
|
7
8
|
function installFetchTimeout() {
|
|
8
9
|
const ms = Number(process.env.BLOX_SSG_FETCH_TIMEOUT_MS) || 2e4;
|
|
9
10
|
const original = globalThis.fetch;
|
|
@@ -147,7 +148,7 @@ Environment:
|
|
|
147
148
|
if (shardsOpt !== null || routesCmd) {
|
|
148
149
|
const { apiBase: apiBase2, websiteName: configWebsiteName2 } = await resolveApiBase(mode);
|
|
149
150
|
const websiteName2 = process.env.WEBSITE_NAME ?? configWebsiteName2 ?? "default";
|
|
150
|
-
const { runSharded } = await Promise.resolve().then(() => require("../shard-runner-
|
|
151
|
+
const { runSharded } = await Promise.resolve().then(() => require("../shard-runner-Bz46UqN8.cjs"));
|
|
151
152
|
const code = await runSharded({
|
|
152
153
|
shards: shardsOpt ?? "auto",
|
|
153
154
|
mode,
|
|
@@ -183,6 +184,7 @@ Environment:
|
|
|
183
184
|
let cmsPathSet = /* @__PURE__ */ new Set();
|
|
184
185
|
let cachedAppPaths = [];
|
|
185
186
|
let collectionItems;
|
|
187
|
+
let pageSlugMap = {};
|
|
186
188
|
const productionBuild = process.env.NODE_ENV === "production" || mode === "production";
|
|
187
189
|
try {
|
|
188
190
|
const siteData = siteDataFile ? JSON.parse(await fs.readFile(siteDataFile, "utf8")) : await llmArtifacts.fetchCmsSiteData(apiBase, websiteName, buildRequest);
|
|
@@ -193,6 +195,8 @@ Environment:
|
|
|
193
195
|
websiteId = siteData.websiteId;
|
|
194
196
|
redirects = siteData.redirects;
|
|
195
197
|
collectionItems = siteData.collectionItems;
|
|
198
|
+
localeStrategy.setPageSlugMap(siteData.pageSlugMap);
|
|
199
|
+
pageSlugMap = siteData.pageSlugMap ?? {};
|
|
196
200
|
if (!siteDataFile) {
|
|
197
201
|
console.log(` Found ${paths.length} CMS routes`);
|
|
198
202
|
if (redirects.length > 0) console.log(` Found ${redirects.length} redirects`);
|
|
@@ -247,6 +251,9 @@ Environment:
|
|
|
247
251
|
website,
|
|
248
252
|
websiteId,
|
|
249
253
|
redirects,
|
|
254
|
+
// Canonical localized page paths, injected into each document's
|
|
255
|
+
// hydration payload so client-side links resolve without a redirect.
|
|
256
|
+
pageSlugMap,
|
|
250
257
|
// LLM artifacts (llms.txt, llms-full.txt, per-page JSON-LD). On by
|
|
251
258
|
// default; opt out with BLOX_SSG_LLM=0. Skip the *file* artifacts when
|
|
252
259
|
// sharding (>1 shard) because the writing shard only has its own slice of
|
|
@@ -288,6 +295,7 @@ ${"=".repeat(60)}`);
|
|
|
288
295
|
}
|
|
289
296
|
if (validateOutput && shardTotal === 1) {
|
|
290
297
|
await llmArtifacts.validateInternalLinks("dist");
|
|
298
|
+
await llmArtifacts.validateNoRedirectingLinks("dist");
|
|
291
299
|
console.log("[blox-ssg] validated internal links");
|
|
292
300
|
}
|
|
293
301
|
if (productionBuild && shardTotal === 1) {
|
package/dist/ssg/cli.mjs
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
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, b as buildCollectionResolver, a as prerender, c as validateInternalLinks } from "../validate-output-
|
|
5
|
+
import { v as validateSsgOutput, u as uploadBloxManifest, p as polyfillBloxSsgGlobals, f as fetchCmsSiteData, b as buildCollectionResolver, a as prerender, c as validateInternalLinks, d as validateNoRedirectingLinks } from "../validate-output-B8pmE7hf.js";
|
|
6
|
+
import { s as setPageSlugMap } from "../localeStrategy-hXlNof1E.js";
|
|
6
7
|
function installFetchTimeout() {
|
|
7
8
|
const ms = Number(process.env.BLOX_SSG_FETCH_TIMEOUT_MS) || 2e4;
|
|
8
9
|
const original = globalThis.fetch;
|
|
@@ -146,7 +147,7 @@ Environment:
|
|
|
146
147
|
if (shardsOpt !== null || routesCmd) {
|
|
147
148
|
const { apiBase: apiBase2, websiteName: configWebsiteName2 } = await resolveApiBase(mode);
|
|
148
149
|
const websiteName2 = process.env.WEBSITE_NAME ?? configWebsiteName2 ?? "default";
|
|
149
|
-
const { runSharded } = await import("../shard-runner-
|
|
150
|
+
const { runSharded } = await import("../shard-runner-CoFcUVGe.js");
|
|
150
151
|
const code = await runSharded({
|
|
151
152
|
shards: shardsOpt ?? "auto",
|
|
152
153
|
mode,
|
|
@@ -182,6 +183,7 @@ Environment:
|
|
|
182
183
|
let cmsPathSet = /* @__PURE__ */ new Set();
|
|
183
184
|
let cachedAppPaths = [];
|
|
184
185
|
let collectionItems;
|
|
186
|
+
let pageSlugMap = {};
|
|
185
187
|
const productionBuild = process.env.NODE_ENV === "production" || mode === "production";
|
|
186
188
|
try {
|
|
187
189
|
const siteData = siteDataFile ? JSON.parse(await fs.readFile(siteDataFile, "utf8")) : await fetchCmsSiteData(apiBase, websiteName, buildRequest);
|
|
@@ -192,6 +194,8 @@ Environment:
|
|
|
192
194
|
websiteId = siteData.websiteId;
|
|
193
195
|
redirects = siteData.redirects;
|
|
194
196
|
collectionItems = siteData.collectionItems;
|
|
197
|
+
setPageSlugMap(siteData.pageSlugMap);
|
|
198
|
+
pageSlugMap = siteData.pageSlugMap ?? {};
|
|
195
199
|
if (!siteDataFile) {
|
|
196
200
|
console.log(` Found ${paths.length} CMS routes`);
|
|
197
201
|
if (redirects.length > 0) console.log(` Found ${redirects.length} redirects`);
|
|
@@ -246,6 +250,9 @@ Environment:
|
|
|
246
250
|
website,
|
|
247
251
|
websiteId,
|
|
248
252
|
redirects,
|
|
253
|
+
// Canonical localized page paths, injected into each document's
|
|
254
|
+
// hydration payload so client-side links resolve without a redirect.
|
|
255
|
+
pageSlugMap,
|
|
249
256
|
// LLM artifacts (llms.txt, llms-full.txt, per-page JSON-LD). On by
|
|
250
257
|
// default; opt out with BLOX_SSG_LLM=0. Skip the *file* artifacts when
|
|
251
258
|
// sharding (>1 shard) because the writing shard only has its own slice of
|
|
@@ -287,6 +294,7 @@ ${"=".repeat(60)}`);
|
|
|
287
294
|
}
|
|
288
295
|
if (validateOutput && shardTotal === 1) {
|
|
289
296
|
await validateInternalLinks("dist");
|
|
297
|
+
await validateNoRedirectingLinks("dist");
|
|
290
298
|
console.log("[blox-ssg] validated internal links");
|
|
291
299
|
}
|
|
292
300
|
if (productionBuild && shardTotal === 1) {
|
package/dist/ssg/cms-routes.d.ts
CHANGED
|
@@ -12,6 +12,13 @@ export interface CmsSiteData {
|
|
|
12
12
|
paths: string[];
|
|
13
13
|
/** Locale-qualified published CMS page slugs, including dynamic templates. */
|
|
14
14
|
pageSlugs: string[];
|
|
15
|
+
/**
|
|
16
|
+
* Canonical localized path per locale for every static CMS page, keyed by its
|
|
17
|
+
* default-locale path (`{ "/about-us": { en, es, fr, it, nl } }`).
|
|
18
|
+
* `LocaleStrategy.toPath()` uses it to emit canonical links instead of
|
|
19
|
+
* default-locale slugs behind a redirect.
|
|
20
|
+
*/
|
|
21
|
+
pageSlugMap: Record<string, Record<string, string>>;
|
|
15
22
|
redirects: RedirectEntry[];
|
|
16
23
|
/** Datastore collections referenced by any page's data_bindings. */
|
|
17
24
|
collections: CollectionRef[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cms-routes.d.ts","sourceRoot":"","sources":["../../src/ssg/cms-routes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAoB9D,2EAA2E;AAC3E,MAAM,WAAW,aAAa;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,WAAW;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,WAAW,CAAA;IACpB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,8EAA8E;IAC9E,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,SAAS,EAAE,aAAa,EAAE,CAAA;IAC1B,oEAAoE;IACpE,WAAW,EAAE,aAAa,EAAE,CAAA;IAC5B;;;;;OAKG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;CAC3D;
|
|
1
|
+
{"version":3,"file":"cms-routes.d.ts","sourceRoot":"","sources":["../../src/ssg/cms-routes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAoB9D,2EAA2E;AAC3E,MAAM,WAAW,aAAa;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,WAAW;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,WAAW,CAAA;IACpB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,8EAA8E;IAC9E,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB;;;;;OAKG;IACH,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IACnD,SAAS,EAAE,aAAa,EAAE,CAAA;IAC1B,oEAAoE;IACpE,WAAW,EAAE,aAAa,EAAE,CAAA;IAC5B;;;;;OAKG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;CAC3D;AAwCD;;;GAGG;AACH,wBAAgB,iBAAiB,CAChC,KAAK,EAAE,MAAM,EAAE,EACf,aAAa,EAAE,MAAM,EACrB,gBAAgB,EAAE,MAAM,EAAE,GACxB,MAAM,EAAE,CASV;AAMD;;;GAGG;AACH,wBAAsB,gBAAgB,CACrC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,cAAc,GAAE,uBAA4B,GAC1C,OAAO,CAAC,WAAW,CAAC,CAuLtB;AAkID,MAAM,MAAM,kBAAkB,GAAG,CAChC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,KACrE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,CAAA;AAE9C;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACtC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,GACxD,kBAAkB,CAapB"}
|
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 llmArtifacts = require("../validate-output-
|
|
25
|
+
const llmArtifacts = require("../validate-output-CbIQrCwa.cjs");
|
|
26
26
|
const ssg_buildGrant = require("./build-grant.cjs");
|
|
27
27
|
const ssg_client = require("../client-AoDTJJXJ.cjs");
|
|
28
28
|
const vue = require("vue");
|
|
29
|
-
const appRuntime = require("../appRuntime-
|
|
29
|
+
const appRuntime = require("../appRuntime-Z0AxTPxf.cjs");
|
|
30
30
|
const index = require("../index-DUjEj7ts.cjs");
|
|
31
31
|
async function renderBloxSsgPage(options) {
|
|
32
32
|
var _a, _b, _c, _d;
|
|
@@ -41,6 +41,7 @@ async function renderBloxSsgPage(options) {
|
|
|
41
41
|
locale,
|
|
42
42
|
website = null,
|
|
43
43
|
websiteId = "",
|
|
44
|
+
pageSlugMap = {},
|
|
44
45
|
llm
|
|
45
46
|
} = options;
|
|
46
47
|
if (resolvedData != null && !websiteId) {
|
|
@@ -72,6 +73,7 @@ async function renderBloxSsgPage(options) {
|
|
|
72
73
|
version: 2,
|
|
73
74
|
...resolvedData != null ? { route: { path: stateKey, resolved: resolvedData } } : {},
|
|
74
75
|
...websiteId ? { websiteId } : {},
|
|
76
|
+
...Object.keys(pageSlugMap).length ? { pageSlugMap } : {},
|
|
75
77
|
data: bloxData
|
|
76
78
|
})};${"<"}/script>`;
|
|
77
79
|
let head = llmArtifacts.buildPageHead({
|
package/dist/ssg/index.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { e as buildPageHead, h as primaryContextEntry, i as buildJsonLd, j as extractPageText, B as BloxBuildResponseError, k as bloxBuildJson } from "../validate-output-B8pmE7hf.js";
|
|
2
|
+
import { l, m, f, n, o, q, r, g, s, t, w, x, y, z, p, a, A, C, u, c, v } from "../validate-output-B8pmE7hf.js";
|
|
3
3
|
import { parseBloxBuildGrantBody, resolveBloxBuildGrant } from "./build-grant.mjs";
|
|
4
4
|
import { a as BLOX_HYDRATION_WINDOW_KEY } from "../client-Ce9fRCGH.js";
|
|
5
5
|
import { createSSRApp, h, Suspense } from "vue";
|
|
6
|
-
import { c as collectBloxData, a as collectBloxSeo, p as provideBloxData, b as provideBloxLocale, B as BLOX_SSR_ROUTE_STATE_KEY, i as installBloxRuntime, s as setActiveLocale } from "../appRuntime-
|
|
6
|
+
import { c as collectBloxData, a as collectBloxSeo, p as provideBloxData, b as provideBloxLocale, B as BLOX_SSR_ROUTE_STATE_KEY, i as installBloxRuntime, s as setActiveLocale } from "../appRuntime-DZSCSsnS.js";
|
|
7
7
|
import { provideBloxApi, getCollectionResolver } from "../index-I81QTzv-.js";
|
|
8
8
|
async function renderBloxSsgPage(options) {
|
|
9
9
|
var _a, _b, _c, _d;
|
|
@@ -18,6 +18,7 @@ async function renderBloxSsgPage(options) {
|
|
|
18
18
|
locale,
|
|
19
19
|
website = null,
|
|
20
20
|
websiteId = "",
|
|
21
|
+
pageSlugMap = {},
|
|
21
22
|
llm
|
|
22
23
|
} = options;
|
|
23
24
|
if (resolvedData != null && !websiteId) {
|
|
@@ -49,6 +50,7 @@ async function renderBloxSsgPage(options) {
|
|
|
49
50
|
version: 2,
|
|
50
51
|
...resolvedData != null ? { route: { path: stateKey, resolved: resolvedData } } : {},
|
|
51
52
|
...websiteId ? { websiteId } : {},
|
|
53
|
+
...Object.keys(pageSlugMap).length ? { pageSlugMap } : {},
|
|
52
54
|
data: bloxData
|
|
53
55
|
})};${"<"}/script>`;
|
|
54
56
|
let head = buildPageHead({
|
|
@@ -414,34 +416,34 @@ export {
|
|
|
414
416
|
BLOX_HYDRATION_WINDOW_KEY,
|
|
415
417
|
BloxBuildResponseError,
|
|
416
418
|
bloxBuildJson,
|
|
417
|
-
|
|
419
|
+
l as bloxBuildRequest,
|
|
418
420
|
buildJsonLd,
|
|
419
421
|
buildPageHead,
|
|
420
|
-
|
|
422
|
+
m as buildSiteHead,
|
|
421
423
|
createBloxSSREntry,
|
|
422
424
|
extractPageText,
|
|
423
425
|
f as fetchCmsSiteData,
|
|
424
426
|
fetchDatastoreSnapshot,
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
427
|
+
n as generateLlmsFullTxt,
|
|
428
|
+
o as generateLlmsTxt,
|
|
429
|
+
q as generateNetlifyRedirects,
|
|
430
|
+
r as generateRobotsTxt,
|
|
429
431
|
g as generateSitemapArtifacts,
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
432
|
+
s as generateSitemapIndexXml,
|
|
433
|
+
t as generateSitemapXml,
|
|
434
|
+
w as getBloxBuildRequestOptions,
|
|
435
|
+
x as getSiteIconFlags,
|
|
436
|
+
y as localeSitemapPath,
|
|
437
|
+
z as mergeLlmParts,
|
|
436
438
|
parseBloxBuildGrantBody,
|
|
437
439
|
p as polyfillBloxSsgGlobals,
|
|
438
440
|
a as prerender,
|
|
439
441
|
querySnapshotRows,
|
|
440
442
|
renderBloxSsgPage,
|
|
441
443
|
resolveBloxBuildGrant,
|
|
442
|
-
|
|
444
|
+
A as resolveManifestProvenance,
|
|
443
445
|
snapshotRows,
|
|
444
|
-
|
|
446
|
+
C as splitSitemapPathsByLocale,
|
|
445
447
|
u as uploadBloxManifest,
|
|
446
448
|
c as validateInternalLinks,
|
|
447
449
|
v as validateSsgOutput
|
package/dist/ssg/prerender.d.ts
CHANGED
|
@@ -34,6 +34,8 @@ export interface PrerenderOptions {
|
|
|
34
34
|
websiteId?: string;
|
|
35
35
|
/** Redirects to write as _redirects (Netlify). */
|
|
36
36
|
redirects?: RedirectEntry[];
|
|
37
|
+
/** Canonical localized page paths, embedded in each document's hydration payload. */
|
|
38
|
+
pageSlugMap?: Record<string, Record<string, string>>;
|
|
37
39
|
/** LLM artifacts config (llms.txt, llms-full.txt, per-page JSON-LD). */
|
|
38
40
|
llm?: LlmArtifactsConfig;
|
|
39
41
|
}
|
|
@@ -44,6 +46,8 @@ export interface RenderContext {
|
|
|
44
46
|
website?: WebsiteRead | null;
|
|
45
47
|
/** Resolved website ID for client embedding. */
|
|
46
48
|
websiteId?: string;
|
|
49
|
+
/** Canonical localized page paths, embedded in the hydration payload. */
|
|
50
|
+
pageSlugMap?: Record<string, Record<string, string>>;
|
|
47
51
|
/**
|
|
48
52
|
* Pre-resolved page data keyed by render URL. When the prerender producer has
|
|
49
53
|
* already fetched a URL's `/resolve-path` result, the SSR entry reads it from
|
|
@@ -98,7 +102,7 @@ export declare function prerender({ root, clientOutDir, serverEntry, paths, craw
|
|
|
98
102
|
* sharded runner divides a global budget by the shard count. 0 disables
|
|
99
103
|
* prefetch (render resolves inline). Default 8.
|
|
100
104
|
*/
|
|
101
|
-
resolvePrefetchConcurrency, appPaths, includeRoot, routePartsFile, mode, website, websiteId, redirects, llm, }?: PrerenderOptions): Promise<PrerenderResult>;
|
|
105
|
+
resolvePrefetchConcurrency, appPaths, includeRoot, routePartsFile, mode, website, websiteId, redirects, pageSlugMap, llm, }?: PrerenderOptions): Promise<PrerenderResult>;
|
|
102
106
|
/**
|
|
103
107
|
* Collect `<link rel="preload">` tags for the web fonts a page is likely to use.
|
|
104
108
|
*
|
|
@@ -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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"}
|
|
@@ -39,6 +39,8 @@ export declare function renderBloxSsgPage<TApp>(options: {
|
|
|
39
39
|
website?: WebsiteRead | null;
|
|
40
40
|
/** Resolved website ID — embedded so client skips GET /blox/websites. */
|
|
41
41
|
websiteId?: string;
|
|
42
|
+
/** Canonical localized page paths, embedded for client-side link resolution. */
|
|
43
|
+
pageSlugMap?: Record<string, Record<string, string>>;
|
|
42
44
|
/** LLM artifacts config — gates JSON-LD injection + llms.txt text capture. */
|
|
43
45
|
llm?: LlmArtifactsConfig;
|
|
44
46
|
}): Promise<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-resolved-page.d.ts","sourceRoot":"","sources":["../../src/ssg/render-resolved-page.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAGpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAGvE,UAAU,cAAc;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAClC;AAED,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACpC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC5B;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE;IACtD,GAAG,EAAE,MAAM,CAAA;IACX,YAAY,EAAE,OAAO,GAAG,IAAI,CAAA;IAC5B,cAAc,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IACxE,eAAe,EAAE,CAChB,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,OAAO,GAAG,IAAI,EAC5B,QAAQ,EAAE,MAAM,KACZ;QAAE,GAAG,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,iBAAiB,CAAC;QAAC,YAAY,CAAC,EAAE,gBAAgB,CAAA;KAAE,CAAA;IAC9E,8EAA8E;IAC9E,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrE,sEAAsE;IACtE,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,WAAW,CAAA;IACxD;;OAEG;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,8EAA8E;IAC9E,GAAG,CAAC,EAAE,kBAAkB,CAAA;CACxB,GAAG,OAAO,CAAC;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,GAAG,CAAC,EAAE,YAAY,CAAA;CAClB,CAAC,
|
|
1
|
+
{"version":3,"file":"render-resolved-page.d.ts","sourceRoot":"","sources":["../../src/ssg/render-resolved-page.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAGpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAGvE,UAAU,cAAc;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAClC;AAED,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACpC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC5B;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE;IACtD,GAAG,EAAE,MAAM,CAAA;IACX,YAAY,EAAE,OAAO,GAAG,IAAI,CAAA;IAC5B,cAAc,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IACxE,eAAe,EAAE,CAChB,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,OAAO,GAAG,IAAI,EAC5B,QAAQ,EAAE,MAAM,KACZ;QAAE,GAAG,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,iBAAiB,CAAC;QAAC,YAAY,CAAC,EAAE,gBAAgB,CAAA;KAAE,CAAA;IAC9E,8EAA8E;IAC9E,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrE,sEAAsE;IACtE,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,WAAW,CAAA;IACxD;;OAEG;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,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IACpD,8EAA8E;IAC9E,GAAG,CAAC,EAAE,kBAAkB,CAAA;CACxB,GAAG,OAAO,CAAC;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,GAAG,CAAC,EAAE,YAAY,CAAA;CAClB,CAAC,CAgHD;AAED,yFAAyF;AACzF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE/C"}
|
|
@@ -23,6 +23,9 @@ export interface ShardRunnerOptions {
|
|
|
23
23
|
routesCmd?: string;
|
|
24
24
|
}
|
|
25
25
|
export declare function matchesCmsPath(pathname: string, cmsPaths: Set<string>): boolean;
|
|
26
|
+
export declare function sitemapRoutesForWebsite<T extends {
|
|
27
|
+
noindex: boolean;
|
|
28
|
+
}>(routes: T[], siteNoindex: boolean | undefined): T[];
|
|
26
29
|
/**
|
|
27
30
|
* Coordinate a sharded prerender. Returns the process exit code.
|
|
28
31
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shard-runner.d.ts","sourceRoot":"","sources":["../../src/ssg/shard-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAQH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"shard-runner.d.ts","sourceRoot":"","sources":["../../src/ssg/shard-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAQH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAK9D,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,yEAAyE;IACzE,YAAY,CAAC,EAAE,uBAAuB,CAAA;IACtC,iFAAiF;IACjF,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,8FAA8F;IAC9F,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB;AAWD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAQ/E;AAED,wBAAgB,uBAAuB,CAAC,CAAC,SAAS;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,EACrE,MAAM,EAAE,CAAC,EAAE,EACX,WAAW,EAAE,OAAO,GAAG,SAAS,GAC9B,CAAC,EAAE,CAIL;AAsED;;GAEG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAgK1E"}
|
|
@@ -26,5 +26,14 @@ export interface ValidateSsgOutputOptions {
|
|
|
26
26
|
*/
|
|
27
27
|
checkInternalLinks?: boolean;
|
|
28
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Fail when a prerendered page links to a URL that Netlify will redirect.
|
|
31
|
+
*
|
|
32
|
+
* Links must point at canonical URLs: a link to a redirect source (e.g.
|
|
33
|
+
* `/es/get-the-best-offer` → `/es/consigue-la-mejor-oferta`) costs a hop on
|
|
34
|
+
* every click and shows up as an internal redirect chain in crawlers. Redirects
|
|
35
|
+
* remain for external/legacy URLs only.
|
|
36
|
+
*/
|
|
37
|
+
export declare function validateNoRedirectingLinks(outDir: string): Promise<void>;
|
|
29
38
|
export declare function validateSsgOutput(options: ValidateSsgOutputOptions): Promise<void>;
|
|
30
39
|
//# sourceMappingURL=validate-output.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-output.d.ts","sourceRoot":"","sources":["../../src/ssg/validate-output.ts"],"names":[],"mappings":"AAWA;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBzE;AAED,MAAM,WAAW,wBAAwB;IACxC,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B;;;;;;;OAOG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC5B;
|
|
1
|
+
{"version":3,"file":"validate-output.d.ts","sourceRoot":"","sources":["../../src/ssg/validate-output.ts"],"names":[],"mappings":"AAWA;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBzE;AAED,MAAM,WAAW,wBAAwB;IACxC,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B;;;;;;;OAOG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC5B;AAED;;;;;;;GAOG;AACH,wBAAsB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB9E;AAqED,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2ExF"}
|