@bagelink/blox 1.15.226 → 1.15.230
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/{prerender-BTRIOCtF.js → prerender-uiciCJgS.js} +36 -1
- package/dist/{prerender-DQYBvxc_.cjs → prerender-yrgljW5F.cjs} +36 -1
- package/dist/ssg/cli.cjs +5 -1
- package/dist/ssg/cli.mjs +5 -1
- package/dist/ssg/createSSREntry.d.ts +2 -0
- package/dist/ssg/createSSREntry.d.ts.map +1 -1
- package/dist/ssg/index.cjs +19 -6
- package/dist/ssg/index.mjs +20 -7
- package/dist/ssg/prerender.d.ts +21 -1
- package/dist/ssg/prerender.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -361,6 +361,17 @@ async function prerender({
|
|
|
361
361
|
maxPages = 5e3,
|
|
362
362
|
concurrency = 6,
|
|
363
363
|
writeSharedAssets = true,
|
|
364
|
+
/**
|
|
365
|
+
* How many `/resolve-path` prefetches to run in parallel, ahead of the render
|
|
366
|
+
* pool. Decouples the (I/O-bound) resolve latency from the (CPU-bound) render
|
|
367
|
+
* so pages render from an in-memory cache with no per-page round-trip.
|
|
368
|
+
*
|
|
369
|
+
* NOTE: this is PER PROCESS. When running N shards, the *total* load on the
|
|
370
|
+
* API is `N × this`, so keep it modest (a small API saturates ~5-wide). The
|
|
371
|
+
* sharded runner divides a global budget by the shard count. 0 disables
|
|
372
|
+
* prefetch (render resolves inline). Default 8.
|
|
373
|
+
*/
|
|
374
|
+
resolvePrefetchConcurrency = 8,
|
|
364
375
|
mode = "dir",
|
|
365
376
|
website = null,
|
|
366
377
|
websiteId = "",
|
|
@@ -401,6 +412,27 @@ async function prerender({
|
|
|
401
412
|
const noindexPaths = /* @__PURE__ */ new Set();
|
|
402
413
|
const lastmod = {};
|
|
403
414
|
const failures = [];
|
|
415
|
+
const resolveCache = /* @__PURE__ */ new Map();
|
|
416
|
+
const prefetch = serverMod.prefetchResolve;
|
|
417
|
+
async function runResolvePrefetch() {
|
|
418
|
+
if (!prefetch || resolvePrefetchConcurrency <= 0) return;
|
|
419
|
+
const targets = [...new Set(paths)].filter((p) => p && !isExcluded(p));
|
|
420
|
+
let idx = 0;
|
|
421
|
+
async function prefetchWorker() {
|
|
422
|
+
while (idx < targets.length) {
|
|
423
|
+
const url = targets[idx++];
|
|
424
|
+
if (resolveCache.has(url)) continue;
|
|
425
|
+
try {
|
|
426
|
+
resolveCache.set(url, await prefetch(url));
|
|
427
|
+
} catch {
|
|
428
|
+
resolveCache.set(url, null);
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
await Promise.all(
|
|
433
|
+
Array.from({ length: Math.min(resolvePrefetchConcurrency, targets.length) }, () => prefetchWorker())
|
|
434
|
+
);
|
|
435
|
+
}
|
|
404
436
|
async function renderOne(urlPath) {
|
|
405
437
|
const {
|
|
406
438
|
html,
|
|
@@ -412,7 +444,8 @@ async function prerender({
|
|
|
412
444
|
template,
|
|
413
445
|
website,
|
|
414
446
|
websiteId,
|
|
415
|
-
collections
|
|
447
|
+
collections,
|
|
448
|
+
resolveCache
|
|
416
449
|
});
|
|
417
450
|
const outHtml = injectIntoTemplate(template, head, html, fontPreloads, htmlAttrs);
|
|
418
451
|
const outfile = outFilePath(absClient, urlPath, mode);
|
|
@@ -449,6 +482,8 @@ async function prerender({
|
|
|
449
482
|
}
|
|
450
483
|
}
|
|
451
484
|
}
|
|
485
|
+
await runResolvePrefetch().catch(() => {
|
|
486
|
+
});
|
|
452
487
|
while (queue.length && !stopped && rendered.length < maxPages) {
|
|
453
488
|
const workers = Array.from(
|
|
454
489
|
{ length: Math.min(concurrency, queue.length) },
|
|
@@ -384,6 +384,17 @@ async function prerender({
|
|
|
384
384
|
maxPages = 5e3,
|
|
385
385
|
concurrency = 6,
|
|
386
386
|
writeSharedAssets = true,
|
|
387
|
+
/**
|
|
388
|
+
* How many `/resolve-path` prefetches to run in parallel, ahead of the render
|
|
389
|
+
* pool. Decouples the (I/O-bound) resolve latency from the (CPU-bound) render
|
|
390
|
+
* so pages render from an in-memory cache with no per-page round-trip.
|
|
391
|
+
*
|
|
392
|
+
* NOTE: this is PER PROCESS. When running N shards, the *total* load on the
|
|
393
|
+
* API is `N × this`, so keep it modest (a small API saturates ~5-wide). The
|
|
394
|
+
* sharded runner divides a global budget by the shard count. 0 disables
|
|
395
|
+
* prefetch (render resolves inline). Default 8.
|
|
396
|
+
*/
|
|
397
|
+
resolvePrefetchConcurrency = 8,
|
|
387
398
|
mode = "dir",
|
|
388
399
|
website = null,
|
|
389
400
|
websiteId = "",
|
|
@@ -424,6 +435,27 @@ async function prerender({
|
|
|
424
435
|
const noindexPaths = /* @__PURE__ */ new Set();
|
|
425
436
|
const lastmod = {};
|
|
426
437
|
const failures = [];
|
|
438
|
+
const resolveCache = /* @__PURE__ */ new Map();
|
|
439
|
+
const prefetch = serverMod.prefetchResolve;
|
|
440
|
+
async function runResolvePrefetch() {
|
|
441
|
+
if (!prefetch || resolvePrefetchConcurrency <= 0) return;
|
|
442
|
+
const targets = [...new Set(paths)].filter((p) => p && !isExcluded(p));
|
|
443
|
+
let idx = 0;
|
|
444
|
+
async function prefetchWorker() {
|
|
445
|
+
while (idx < targets.length) {
|
|
446
|
+
const url = targets[idx++];
|
|
447
|
+
if (resolveCache.has(url)) continue;
|
|
448
|
+
try {
|
|
449
|
+
resolveCache.set(url, await prefetch(url));
|
|
450
|
+
} catch {
|
|
451
|
+
resolveCache.set(url, null);
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
await Promise.all(
|
|
456
|
+
Array.from({ length: Math.min(resolvePrefetchConcurrency, targets.length) }, () => prefetchWorker())
|
|
457
|
+
);
|
|
458
|
+
}
|
|
427
459
|
async function renderOne(urlPath) {
|
|
428
460
|
const {
|
|
429
461
|
html,
|
|
@@ -435,7 +467,8 @@ async function prerender({
|
|
|
435
467
|
template,
|
|
436
468
|
website,
|
|
437
469
|
websiteId,
|
|
438
|
-
collections
|
|
470
|
+
collections,
|
|
471
|
+
resolveCache
|
|
439
472
|
});
|
|
440
473
|
const outHtml = injectIntoTemplate(template, head, html, fontPreloads, htmlAttrs);
|
|
441
474
|
const outfile = outFilePath(absClient, urlPath, mode);
|
|
@@ -472,6 +505,8 @@ async function prerender({
|
|
|
472
505
|
}
|
|
473
506
|
}
|
|
474
507
|
}
|
|
508
|
+
await runResolvePrefetch().catch(() => {
|
|
509
|
+
});
|
|
475
510
|
while (queue.length && !stopped && rendered.length < maxPages) {
|
|
476
511
|
const workers = Array.from(
|
|
477
512
|
{ length: Math.min(concurrency, queue.length) },
|
package/dist/ssg/cli.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
"use strict";
|
|
3
3
|
const process = require("node:process");
|
|
4
|
-
const prerender = require("../prerender-
|
|
4
|
+
const prerender = require("../prerender-yrgljW5F.cjs");
|
|
5
5
|
function installFetchTimeout() {
|
|
6
6
|
const ms = Number(process.env.BLOX_SSG_FETCH_TIMEOUT_MS) || 2e4;
|
|
7
7
|
const original = globalThis.fetch;
|
|
@@ -156,6 +156,10 @@ Environment:
|
|
|
156
156
|
// Bounded concurrency — configurable so we don't overwhelm a small
|
|
157
157
|
// staging box. Defaults conservative; bump for beefy prod builds.
|
|
158
158
|
concurrency: Number(process.env.BLOX_SSG_CONCURRENCY) || 4,
|
|
159
|
+
// Per-process resolve-prefetch parallelism. The sharded runner sets
|
|
160
|
+
// this to (global budget / shard count) so N shards don't collectively
|
|
161
|
+
// hammer a small API. 0 disables prefetch (inline resolve).
|
|
162
|
+
resolvePrefetchConcurrency: process.env.BLOX_SSG_PREFETCH !== void 0 ? Number(process.env.BLOX_SSG_PREFETCH) : 8,
|
|
159
163
|
mode: "file",
|
|
160
164
|
// Only shard 0 writes shared, whole-site assets (sitemap/robots/_redirects)
|
|
161
165
|
// so parallel shards don't race/clobber them.
|
package/dist/ssg/cli.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
import process from "node:process";
|
|
3
|
-
import { p as polyfillBloxSsgGlobals, f as fetchCmsSiteData, a as prerender } from "../prerender-
|
|
3
|
+
import { p as polyfillBloxSsgGlobals, f as fetchCmsSiteData, a as prerender } from "../prerender-uiciCJgS.js";
|
|
4
4
|
function installFetchTimeout() {
|
|
5
5
|
const ms = Number(process.env.BLOX_SSG_FETCH_TIMEOUT_MS) || 2e4;
|
|
6
6
|
const original = globalThis.fetch;
|
|
@@ -155,6 +155,10 @@ Environment:
|
|
|
155
155
|
// Bounded concurrency — configurable so we don't overwhelm a small
|
|
156
156
|
// staging box. Defaults conservative; bump for beefy prod builds.
|
|
157
157
|
concurrency: Number(process.env.BLOX_SSG_CONCURRENCY) || 4,
|
|
158
|
+
// Per-process resolve-prefetch parallelism. The sharded runner sets
|
|
159
|
+
// this to (global budget / shard count) so N shards don't collectively
|
|
160
|
+
// hammer a small API. 0 disables prefetch (inline resolve).
|
|
161
|
+
resolvePrefetchConcurrency: process.env.BLOX_SSG_PREFETCH !== void 0 ? Number(process.env.BLOX_SSG_PREFETCH) : 8,
|
|
158
162
|
mode: "file",
|
|
159
163
|
// Only shard 0 writes shared, whole-site assets (sitemap/robots/_redirects)
|
|
160
164
|
// so parallel shards don't race/clobber them.
|
|
@@ -39,6 +39,8 @@ export interface CreateBloxSSREntryOptions {
|
|
|
39
39
|
}
|
|
40
40
|
export interface BloxSSREntry {
|
|
41
41
|
render: (url: string, ctx: RenderContext) => Promise<RenderResult>;
|
|
42
|
+
/** Resolve a URL's page data without rendering (for batched prefetch). */
|
|
43
|
+
prefetchResolve?: (url: string) => Promise<unknown>;
|
|
42
44
|
}
|
|
43
45
|
/**
|
|
44
46
|
* Factory that produces the `{ render }` export for `main.server.ts`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSSREntry.d.ts","sourceRoot":"","sources":["../../src/ssg/createSSREntry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAO,SAAS,EAAE,MAAM,KAAK,CAAA;AACzC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAY9D,MAAM,WAAW,yBAAyB;IACzC,oCAAoC;IACpC,aAAa,EAAE,SAAS,CAAA;IACxB;;;;OAIG;IACH,YAAY,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,QAAQ,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,MAAM,CAAA;IAC9D;;;OAGG;IACH,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;IACpD,wBAAwB;IACxB,WAAW,EAAE,MAAM,CAAA;IACnB,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,oGAAoG;IACpG,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,2CAA2C;IAC3C,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B;;;OAGG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,OAAO,KAAK,EAAE,MAAM,GAAG,CAAC,OAAO,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,CAAA;IAC5E;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;CAC5C;AAED,MAAM,WAAW,YAAY;IAC5B,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,YAAY,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"createSSREntry.d.ts","sourceRoot":"","sources":["../../src/ssg/createSSREntry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAO,SAAS,EAAE,MAAM,KAAK,CAAA;AACzC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAY9D,MAAM,WAAW,yBAAyB;IACzC,oCAAoC;IACpC,aAAa,EAAE,SAAS,CAAA;IACxB;;;;OAIG;IACH,YAAY,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,QAAQ,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,MAAM,CAAA;IAC9D;;;OAGG;IACH,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;IACpD,wBAAwB;IACxB,WAAW,EAAE,MAAM,CAAA;IACnB,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,oGAAoG;IACpG,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,2CAA2C;IAC3C,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B;;;OAGG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,OAAO,KAAK,EAAE,MAAM,GAAG,CAAC,OAAO,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,CAAA;IAC5E;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;CAC5C;AAED,MAAM,WAAW,YAAY;IAC5B,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,YAAY,CAAC,CAAA;IAClE,0EAA0E;IAC1E,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CACnD;AAKD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,YAAY,CAmLnF"}
|
package/dist/ssg/index.cjs
CHANGED
|
@@ -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 prerender = require("../prerender-
|
|
25
|
+
const prerender = require("../prerender-yrgljW5F.cjs");
|
|
26
26
|
const ssg_client = require("./client.cjs");
|
|
27
27
|
const pinia = require("pinia");
|
|
28
28
|
const vue = require("vue");
|
|
@@ -163,13 +163,18 @@ function createBloxSSREntry(options) {
|
|
|
163
163
|
return { app, router, dataRegistry };
|
|
164
164
|
}
|
|
165
165
|
async function render(url, ctx) {
|
|
166
|
+
var _a2;
|
|
166
167
|
const { locale: pageLocale, slug } = detectLocale(url);
|
|
167
168
|
routes.setActiveLocale(pageLocale);
|
|
168
169
|
let resolvedData = null;
|
|
169
|
-
|
|
170
|
-
resolvedData =
|
|
171
|
-
}
|
|
172
|
-
|
|
170
|
+
if ((_a2 = ctx.resolveCache) == null ? void 0 : _a2.has(url)) {
|
|
171
|
+
resolvedData = ctx.resolveCache.get(url) ?? null;
|
|
172
|
+
} else {
|
|
173
|
+
try {
|
|
174
|
+
resolvedData = await fetchResolvedPage(slug, pageLocale);
|
|
175
|
+
} catch (e) {
|
|
176
|
+
console.warn(`[prerender] Could not resolve: ${url} — ${e.message}`);
|
|
177
|
+
}
|
|
173
178
|
}
|
|
174
179
|
const { renderToString } = await import("vue/server-renderer");
|
|
175
180
|
return renderBloxSsgPage({
|
|
@@ -188,7 +193,15 @@ function createBloxSSREntry(options) {
|
|
|
188
193
|
collections: ctx.collections
|
|
189
194
|
});
|
|
190
195
|
}
|
|
191
|
-
|
|
196
|
+
async function prefetchResolve(url) {
|
|
197
|
+
const { locale: pageLocale, slug } = detectLocale(url);
|
|
198
|
+
try {
|
|
199
|
+
return await fetchResolvedPage(slug, pageLocale);
|
|
200
|
+
} catch {
|
|
201
|
+
return null;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return { render, prefetchResolve };
|
|
192
205
|
}
|
|
193
206
|
exports.buildPageHead = prerender.buildPageHead;
|
|
194
207
|
exports.buildSiteHead = prerender.buildSiteHead;
|
package/dist/ssg/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { b as buildPageHead } from "../prerender-
|
|
2
|
-
import { c, d, f, g, e, h, i, p, a } from "../prerender-
|
|
1
|
+
import { b as buildPageHead } from "../prerender-uiciCJgS.js";
|
|
2
|
+
import { c, d, f, g, e, h, i, p, a } from "../prerender-uiciCJgS.js";
|
|
3
3
|
import { BLOX_STATE_WINDOW_KEY, BLOX_COLLECTIONS_WINDOW_KEY, BLOX_WEBSITE_ID_WINDOW_KEY } from "./client.mjs";
|
|
4
4
|
import { BLOX_DATA_WINDOW_KEY, BLOX_PAGE_SEO_WINDOW_KEY, getCollectionCache, getEmbeddedWebsiteId, installBloxStateCache, installCollectionCache } from "./client.mjs";
|
|
5
5
|
import { createPinia } from "pinia";
|
|
@@ -141,13 +141,18 @@ function createBloxSSREntry(options) {
|
|
|
141
141
|
return { app, router, dataRegistry };
|
|
142
142
|
}
|
|
143
143
|
async function render(url, ctx) {
|
|
144
|
+
var _a2;
|
|
144
145
|
const { locale: pageLocale, slug } = detectLocale(url);
|
|
145
146
|
setActiveLocale(pageLocale);
|
|
146
147
|
let resolvedData = null;
|
|
147
|
-
|
|
148
|
-
resolvedData =
|
|
149
|
-
}
|
|
150
|
-
|
|
148
|
+
if ((_a2 = ctx.resolveCache) == null ? void 0 : _a2.has(url)) {
|
|
149
|
+
resolvedData = ctx.resolveCache.get(url) ?? null;
|
|
150
|
+
} else {
|
|
151
|
+
try {
|
|
152
|
+
resolvedData = await fetchResolvedPage(slug, pageLocale);
|
|
153
|
+
} catch (e2) {
|
|
154
|
+
console.warn(`[prerender] Could not resolve: ${url} — ${e2.message}`);
|
|
155
|
+
}
|
|
151
156
|
}
|
|
152
157
|
const { renderToString } = await import("vue/server-renderer");
|
|
153
158
|
return renderBloxSsgPage({
|
|
@@ -166,7 +171,15 @@ function createBloxSSREntry(options) {
|
|
|
166
171
|
collections: ctx.collections
|
|
167
172
|
});
|
|
168
173
|
}
|
|
169
|
-
|
|
174
|
+
async function prefetchResolve(url) {
|
|
175
|
+
const { locale: pageLocale, slug } = detectLocale(url);
|
|
176
|
+
try {
|
|
177
|
+
return await fetchResolvedPage(slug, pageLocale);
|
|
178
|
+
} catch {
|
|
179
|
+
return null;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
return { render, prefetchResolve };
|
|
170
183
|
}
|
|
171
184
|
export {
|
|
172
185
|
BLOX_COLLECTIONS_WINDOW_KEY,
|
package/dist/ssg/prerender.d.ts
CHANGED
|
@@ -18,6 +18,8 @@ export interface PrerenderOptions {
|
|
|
18
18
|
* against the same `dist`, so they don't race/clobber these single files.
|
|
19
19
|
*/
|
|
20
20
|
writeSharedAssets?: boolean;
|
|
21
|
+
/** Parallel `/resolve-path` prefetches ahead of the render pool (default 24; 0 disables). */
|
|
22
|
+
resolvePrefetchConcurrency?: number;
|
|
21
23
|
mode?: 'dir' | 'file';
|
|
22
24
|
/** Website settings for SEO injection. */
|
|
23
25
|
website?: WebsiteRead | null;
|
|
@@ -37,6 +39,13 @@ export interface RenderContext {
|
|
|
37
39
|
websiteId?: string;
|
|
38
40
|
/** Pre-fetched datastore collections keyed by "store/collection". */
|
|
39
41
|
collections?: Record<string, unknown[]>;
|
|
42
|
+
/**
|
|
43
|
+
* Pre-resolved page data keyed by render URL. When the prerender producer has
|
|
44
|
+
* already fetched a URL's `/resolve-path` result, the SSR entry reads it from
|
|
45
|
+
* here instead of making a per-page network round-trip. `null` = a resolve
|
|
46
|
+
* that 404'd (non-CMS route) — cached as a negative to avoid refetching.
|
|
47
|
+
*/
|
|
48
|
+
resolveCache?: Map<string, unknown>;
|
|
40
49
|
}
|
|
41
50
|
export interface RenderResult {
|
|
42
51
|
html: string;
|
|
@@ -67,6 +76,17 @@ export interface PrerenderResult {
|
|
|
67
76
|
* - Generates sitemap.xml, robots.txt, and _redirects post-render.
|
|
68
77
|
* - Strips hardcoded SEO tags from template and injects per-page equivalents.
|
|
69
78
|
*/
|
|
70
|
-
export declare function prerender({ root, clientOutDir, serverEntry, paths, crawl, excludePaths, failFast, maxPages, concurrency, writeSharedAssets,
|
|
79
|
+
export declare function prerender({ root, clientOutDir, serverEntry, paths, crawl, excludePaths, failFast, maxPages, concurrency, writeSharedAssets,
|
|
80
|
+
/**
|
|
81
|
+
* How many `/resolve-path` prefetches to run in parallel, ahead of the render
|
|
82
|
+
* pool. Decouples the (I/O-bound) resolve latency from the (CPU-bound) render
|
|
83
|
+
* so pages render from an in-memory cache with no per-page round-trip.
|
|
84
|
+
*
|
|
85
|
+
* NOTE: this is PER PROCESS. When running N shards, the *total* load on the
|
|
86
|
+
* API is `N × this`, so keep it modest (a small API saturates ~5-wide). The
|
|
87
|
+
* sharded runner divides a global budget by the shard count. 0 disables
|
|
88
|
+
* prefetch (render resolves inline). Default 8.
|
|
89
|
+
*/
|
|
90
|
+
resolvePrefetchConcurrency, mode, website, websiteId, redirects, collections, }?: PrerenderOptions): Promise<PrerenderResult>;
|
|
71
91
|
export {};
|
|
72
92
|
//# sourceMappingURL=prerender.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prerender.d.ts","sourceRoot":"","sources":["../../src/ssg/prerender.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAe1C,KAAK,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,CAAA;AAEhE,MAAM,WAAW,gBAAgB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,YAAY,CAAC,EAAE,WAAW,GAAG,WAAW,EAAE,CAAA;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,IAAI,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;IACrB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;IAC5B,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,kDAAkD;IAClD,SAAS,CAAC,EAAE,aAAa,EAAE,CAAA;IAC3B,qEAAqE;IACrE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;CACvC;AAED,MAAM,WAAW,aAAa;IAC7B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAA;IACzC,QAAQ,EAAE,MAAM,CAAA;IAChB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;IAC5B,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,qEAAqE;IACrE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"prerender.d.ts","sourceRoot":"","sources":["../../src/ssg/prerender.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAe1C,KAAK,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,CAAA;AAEhE,MAAM,WAAW,gBAAgB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,YAAY,CAAC,EAAE,WAAW,GAAG,WAAW,EAAE,CAAA;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,6FAA6F;IAC7F,0BAA0B,CAAC,EAAE,MAAM,CAAA;IACnC,IAAI,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;IACrB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;IAC5B,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,kDAAkD;IAClD,SAAS,CAAC,EAAE,aAAa,EAAE,CAAA;IAC3B,qEAAqE;IACrE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;CACvC;AAED,MAAM,WAAW,aAAa;IAC7B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAA;IACzC,QAAQ,EAAE,MAAM,CAAA;IAChB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;IAC5B,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,qEAAqE;IACrE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;IACvC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC;AAED,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAA;CAChB;AAQD,MAAM,WAAW,eAAe;IAC/B,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;IAC7D,eAAe,EAAE,MAAM,CAAA;IACvB,eAAe,EAAE,MAAM,CAAA;CACvB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,SAAS,CAAC,EAC/B,IAAoB,EACpB,YAA4B,EAC5B,WAA0C,EAC1C,KAAU,EACV,KAAY,EACZ,YAAiB,EACjB,QAAgB,EAChB,QAAe,EACf,WAAe,EACf,iBAAwB;AACxB;;;;;;;;;GASG;AACH,0BAA8B,EAC9B,IAAY,EACZ,OAAc,EACd,SAAc,EACd,SAAc,EACd,WAAgB,GAChB,GAAE,gBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC,CA6MlD"}
|
package/package.json
CHANGED