@rsc-kit/core 0.1.1 → 0.3.0

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/README.md CHANGED
@@ -40,8 +40,10 @@ does nothing.
40
40
  **And the framework itself is small, because most of what ships is React.**
41
41
  Measured on the example app: 74.7 kB gzipped of JavaScript, of which this
42
42
  framework's own runtime is 17 kB — 7.3%. React, react-dom, the Flight client
43
- and the scheduler are 90%. A frozen page is served in 27 µs and the host
44
- adapter costs about 9 µs per request.
43
+ and the scheduler are 90%. Serving a page frozen at build time costs the
44
+ server about 25 µs, because it renders nothing; the host adapter costs about
45
+ 9 µs per request. Both are handler time, not what a browser sees — the network
46
+ dominates that.
45
47
 
46
48
  **It compiles to a single binary.** `bun build --compile` with the assets and
47
49
  frozen pages inside it.
package/dist/cli.js CHANGED
@@ -15,7 +15,7 @@ import { rm } from 'node:fs/promises';
15
15
  import { existsSync } from 'node:fs';
16
16
  import { join, resolve } from 'node:path';
17
17
  import { cwd, exit, stdout } from 'node:process';
18
- import { prerender } from './prerender.js';
18
+ import { legend, prerender, summary } from './prerender.js';
19
19
  import { writeTo } from './files.js';
20
20
  const HELP = `
21
21
  rsc-kit — commands for an app built with @rsc-kit/core
@@ -63,7 +63,7 @@ async function prerenderWith(flag) {
63
63
  // otherwise leaves its old shell on disk and the host goes on serving it.
64
64
  // Nothing warns — the page loads, with content from the previous build.
65
65
  await rm(staticDir, { recursive: true, force: true });
66
- const mark = { frozen: '○', shell: '◔', error: '✗' };
66
+ const mark = { frozen: '○', shell: '◐', blocked: 'ƒ', error: '✗' };
67
67
  const results = await prerender({
68
68
  engine,
69
69
  write: writeTo(staticDir),
@@ -75,10 +75,9 @@ async function prerenderWith(flag) {
75
75
  });
76
76
  const count = (type) => results.filter((r) => r.type === type).length;
77
77
  stdout.write(`
78
- ○ the whole page is stored
79
- ◔ the chrome is stored; the rest is rendered per request
78
+ ${legend(results)}
80
79
 
81
- ${count('frozen')} stored, ${count('shell')} shells\n`);
80
+ ${summary(results)}\n`);
82
81
  if (count('error') > 0)
83
82
  exit(1);
84
83
  }
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,EAAE;AACF,+EAA+E;AAC/E,6EAA6E;AAC7E,4EAA4E;AAC5E,uCAAuC;AACvC,EAAE;AACF,2EAA2E;AAC3E,6EAA6E;AAC7E,EAAE;AACF,+EAA+E;AAC/E,+EAA+E;AAC/E,oCAAoC;AAEpC,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAQ,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAEtD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpC,MAAM,IAAI,GAAG;;;;;;;;;;;;;;CAcZ,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAc;IAC/C,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAElB,OAAM;IACR,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,IAAY,EAAsB,EAAE;QAChD,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;QAEnC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IAC3C,CAAC,CAAA;IAED,MAAM,aAAa,CAAC,IAAI,CAAC,CAAA;AAC3B,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,IAA0C;IACrE,2EAA2E;IAC3E,0EAA0E;IAC1E,2EAA2E;IAC3E,iCAAiC;IACjC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAA;IAErC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAA;IACjD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAA;IACvE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAA;IAE7C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,KAAK,CACV,mBAAmB,MAAM,KAAK;YAC5B,uEAAuE,CAC1E,CAAA;QACD,IAAI,CAAC,CAAC,CAAC,CAAA;IACT,CAAC;IAED,sEAAsE;IACtE,MAAM,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,CAAU,CAAA;IAE9C,oEAAoE;IACpE,0EAA0E;IAC1E,wEAAwE;IACxE,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IAErD,MAAM,IAAI,GAA2B,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;IAE1F,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC;QAC9B,MAAM;QACN,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC;QACzB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;YACd,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;YAExF,IAAI,CAAC,CAAC,OAAO;gBAAE,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,OAAO,IAAI,CAAC,CAAA;QACvD,CAAC;KACF,CAAC,CAAA;IAEF,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,MAAM,CAAA;IAE7E,MAAM,CAAC,KAAK,CAAC;EACb,MAAM,CAAC,OAAO,CAAC;;EAEf,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAErB,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,IAAI,CAAC,CAAC,CAAC,CAAA;AACjC,CAAC"}
package/dist/headers.d.ts CHANGED
@@ -44,6 +44,10 @@ export declare const HEADER: {
44
44
  * unconditionally.
45
45
  */
46
46
  readonly actionPath: '/_rsc/action';
47
+ /** Build-time shell for a PPR route, for an edge cache to hold. */
48
+ readonly pprShellPath: '/_rsc/ppr-shell';
49
+ /** Finish a shell an edge cache is already serving. */
50
+ readonly pprResumePath: '/_rsc/ppr-resume';
47
51
  };
48
52
  /** Flight payload. */
49
53
  export declare const FLIGHT_TYPE = "text/x-component; charset=utf-8";
@@ -1 +1 @@
1
- {"version":3,"file":"headers.d.ts","sourceRoot":"","sources":["../src/headers.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,MAAM;IACjB;;;OAGG;aACH,GAAG,EAAE,OAAO;IAEZ,iFAAiF;aACjF,QAAQ,EAAE,gBAAgB;IAE1B,kEAAkE;aAClE,YAAY,EAAE,qBAAqB;IAEnC,wCAAwC;aACxC,OAAO,EAAE,eAAe;IAExB,gFAAgF;aAChF,OAAO,EAAE,eAAe;IAExB,uDAAuD;aACvD,SAAS,EAAE,iBAAiB;IAE5B,gDAAgD;aAChD,OAAO,EAAE,eAAe;IAExB,uEAAuE;aACvE,UAAU,EAAE,kBAAkB;IAE9B,0CAA0C;aAC1C,MAAM,EAAE,cAAc;IAEtB;;;;;;;OAOG;aACH,QAAQ,EAAE,gBAAgB;IAE1B;;;;;;OAMG;aACH,WAAW,EAAE,oBAAoB;IAEjC;;;;;OAKG;aACH,UAAU,EAAE,cAAc;CAClB,CAAA;AAEV,sBAAsB;AACtB,eAAO,MAAM,WAAW,oCAAoC,CAAA;AAE5D,2BAA2B;AAC3B,eAAO,MAAM,SAAS,6BAA6B,CAAA;AAEnD;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,QAMZ,CAAA;AAEZ;;;;;;;;;GASG;AACH,eAAO,MAAM,UAAU,sBAAsB,CAAA;AAE7C;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,uCAAuC,CAAA"}
1
+ {"version":3,"file":"headers.d.ts","sourceRoot":"","sources":["../src/headers.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,MAAM;IACjB;;;OAGG;aACH,GAAG,EAAE,OAAO;IAEZ,iFAAiF;aACjF,QAAQ,EAAE,gBAAgB;IAE1B,kEAAkE;aAClE,YAAY,EAAE,qBAAqB;IAEnC,wCAAwC;aACxC,OAAO,EAAE,eAAe;IAExB,gFAAgF;aAChF,OAAO,EAAE,eAAe;IAExB,uDAAuD;aACvD,SAAS,EAAE,iBAAiB;IAE5B,gDAAgD;aAChD,OAAO,EAAE,eAAe;IAExB,uEAAuE;aACvE,UAAU,EAAE,kBAAkB;IAE9B,0CAA0C;aAC1C,MAAM,EAAE,cAAc;IAEtB;;;;;;;OAOG;aACH,QAAQ,EAAE,gBAAgB;IAE1B;;;;;;OAMG;aACH,WAAW,EAAE,oBAAoB;IAEjC;;;;;OAKG;aACH,UAAU,EAAE,cAAc;IAC1B,mEAAmE;aACnE,YAAY,EAAE,iBAAiB;IAC/B,uDAAuD;aACvD,aAAa,EAAE,kBAAkB;CACzB,CAAA;AAEV,sBAAsB;AACtB,eAAO,MAAM,WAAW,oCAAoC,CAAA;AAE5D,2BAA2B;AAC3B,eAAO,MAAM,SAAS,6BAA6B,CAAA;AAEnD;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,QAMZ,CAAA;AAEZ;;;;;;;;;GASG;AACH,eAAO,MAAM,UAAU,sBAAsB,CAAA;AAE7C;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,uCAAuC,CAAA"}
package/dist/headers.js CHANGED
@@ -53,6 +53,10 @@ export const HEADER = {
53
53
  * unconditionally.
54
54
  */
55
55
  actionPath: '/_rsc/action',
56
+ /** Build-time shell for a PPR route, for an edge cache to hold. */
57
+ pprShellPath: '/_rsc/ppr-shell',
58
+ /** Finish a shell an edge cache is already serving. */
59
+ pprResumePath: '/_rsc/ppr-resume',
56
60
  };
57
61
  /** Flight payload. */
58
62
  export const FLIGHT_TYPE = 'text/x-component; charset=utf-8';
@@ -1 +1 @@
1
- {"version":3,"file":"headers.js","sourceRoot":"","sources":["../src/headers.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,EAAE;AACF,0EAA0E;AAC1E,sEAAsE;AACtE,wEAAwE;AACxE,2EAA2E;AAC3E,gCAAgC;AAChC,EAAE;AACF,gFAAgF;AAEhF,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB;;;OAGG;IACH,GAAG,EAAE,OAAO;IAEZ,iFAAiF;IACjF,QAAQ,EAAE,gBAAgB;IAE1B,kEAAkE;IAClE,YAAY,EAAE,qBAAqB;IAEnC,wCAAwC;IACxC,OAAO,EAAE,eAAe;IAExB,gFAAgF;IAChF,OAAO,EAAE,eAAe;IAExB,uDAAuD;IACvD,SAAS,EAAE,iBAAiB;IAE5B,gDAAgD;IAChD,OAAO,EAAE,eAAe;IAExB,uEAAuE;IACvE,UAAU,EAAE,kBAAkB;IAE9B,0CAA0C;IAC1C,MAAM,EAAE,cAAc;IAEtB;;;;;;;OAOG;IACH,QAAQ,EAAE,gBAAgB;IAE1B;;;;;;OAMG;IACH,WAAW,EAAE,oBAAoB;IAEjC;;;;;OAKG;IACH,UAAU,EAAE,cAAc;CAClB,CAAA;AAEV,sBAAsB;AACtB,MAAM,CAAC,MAAM,WAAW,GAAG,iCAAiC,CAAA;AAE5D,2BAA2B;AAC3B,MAAM,CAAC,MAAM,SAAS,GAAG,0BAA0B,CAAA;AAEnD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM,CAAC,GAAG;IACV,MAAM,CAAC,QAAQ;IACf,MAAM,CAAC,UAAU;IACjB,MAAM,CAAC,SAAS;IAChB,MAAM,CAAC,OAAO;CACf,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAEZ;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,mBAAmB,CAAA;AAE7C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,oCAAoC,CAAA"}
1
+ {"version":3,"file":"headers.js","sourceRoot":"","sources":["../src/headers.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,EAAE;AACF,0EAA0E;AAC1E,sEAAsE;AACtE,wEAAwE;AACxE,2EAA2E;AAC3E,gCAAgC;AAChC,EAAE;AACF,gFAAgF;AAEhF,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB;;;OAGG;IACH,GAAG,EAAE,OAAO;IAEZ,iFAAiF;IACjF,QAAQ,EAAE,gBAAgB;IAE1B,kEAAkE;IAClE,YAAY,EAAE,qBAAqB;IAEnC,wCAAwC;IACxC,OAAO,EAAE,eAAe;IAExB,gFAAgF;IAChF,OAAO,EAAE,eAAe;IAExB,uDAAuD;IACvD,SAAS,EAAE,iBAAiB;IAE5B,gDAAgD;IAChD,OAAO,EAAE,eAAe;IAExB,uEAAuE;IACvE,UAAU,EAAE,kBAAkB;IAE9B,0CAA0C;IAC1C,MAAM,EAAE,cAAc;IAEtB;;;;;;;OAOG;IACH,QAAQ,EAAE,gBAAgB;IAE1B;;;;;;OAMG;IACH,WAAW,EAAE,oBAAoB;IAEjC;;;;;OAKG;IACH,UAAU,EAAE,cAAc;IAC1B,mEAAmE;IACnE,YAAY,EAAE,iBAAiB;IAC/B,uDAAuD;IACvD,aAAa,EAAE,kBAAkB;CACzB,CAAA;AAEV,sBAAsB;AACtB,MAAM,CAAC,MAAM,WAAW,GAAG,iCAAiC,CAAA;AAE5D,2BAA2B;AAC3B,MAAM,CAAC,MAAM,SAAS,GAAG,0BAA0B,CAAA;AAEnD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM,CAAC,GAAG;IACV,MAAM,CAAC,QAAQ;IACf,MAAM,CAAC,UAAU;IACjB,MAAM,CAAC,SAAS;IAChB,MAAM,CAAC,OAAO;CACf,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAEZ;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,mBAAmB,CAAA;AAE7C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,oCAAoC,CAAA"}
package/dist/host.d.ts CHANGED
@@ -22,6 +22,20 @@ export interface RscEngine {
22
22
  }[], loadings?: string[], parallelSlots?: Record<string, string>, slotOverrides?: Record<string, unknown>, nonce?: string, pageKey?: string, bootstrap?: boolean): Promise<{
23
23
  htmlStream: ReadableStream;
24
24
  }>;
25
+ /**
26
+ * Finish a shell frozen at build time, against data that exists now.
27
+ *
28
+ * Emits only the boundaries the shell left unfinished, meant to be written
29
+ * straight after it. Optional so a host can be pointed at an engine built
30
+ * before resuming existed; without it a shell has no way to be completed and
31
+ * the page is rendered whole instead.
32
+ */
33
+ handleRscResume?(component: string, props?: Record<string, unknown>, layouts?: {
34
+ component: string;
35
+ props: Record<string, unknown>;
36
+ }[], loadings?: string[], parallelSlots?: Record<string, string>, slotOverrides?: Record<string, unknown>, postponed?: unknown, nonce?: string, pageKey?: string): Promise<{
37
+ htmlStream: ReadableStream;
38
+ }>;
25
39
  handleRscRevalidate?(target: string, page: unknown): Promise<{
26
40
  rscPayload: string;
27
41
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"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"}
package/dist/host.js CHANGED
@@ -226,6 +226,16 @@ export function createRscHandler(options) {
226
226
  if (request.method === 'POST' && url.pathname === HEADER.actionPath) {
227
227
  return await handleAction(request, url);
228
228
  }
229
+ // The two halves an edge cache needs: hand it a shell it may keep, and
230
+ // finish that shell for a visitor it cannot answer for itself.
231
+ if (options.prerendered && url.pathname === HEADER.pprShellPath) {
232
+ return await servePprShell(request, url, options.prerendered);
233
+ }
234
+ if (request.method === 'POST' &&
235
+ options.prerendered &&
236
+ url.pathname === HEADER.pprResumePath) {
237
+ return await servePprResume(request, url, options.prerendered);
238
+ }
229
239
  if (request.method !== 'GET' && request.method !== 'HEAD')
230
240
  return null;
231
241
  // One named region of this page, asked for without mutating anything to
@@ -357,6 +367,112 @@ export function createRscHandler(options) {
357
367
  * replaces the root — and replacing the root unmounts everything retained
358
368
  * behind it, so going back stops restoring what you had.
359
369
  */
370
+ /**
371
+ * The shell an edge cache may hold, for a route named by `?url=`.
372
+ *
373
+ * Only ever a build artifact, so there is nothing here that belongs to
374
+ * whoever asked. What it deliberately does NOT return is the postponed
375
+ * state. Next's protocol hands that to the CDN and takes it back on the
376
+ * resume, which makes the resume endpoint parse a blob an attacker can write
377
+ * — the shape of a known denial-of-service against it. Our origin has the
378
+ * file already, so the state never needs to leave.
379
+ *
380
+ * A guarded route is refused outright rather than guarded here. Its shell is
381
+ * not cacheable by a shared cache at all, so handing one to an edge that
382
+ * exists to cache things is an invitation to a mistake nobody would see.
383
+ */
384
+ async function servePprShell(request, url, read) {
385
+ if (request.method !== 'GET' && request.method !== 'HEAD')
386
+ return null;
387
+ const target = url.searchParams.get('url');
388
+ if (!target || !target.startsWith('/')) {
389
+ return new Response('A url is required', { status: 400 });
390
+ }
391
+ // Matched from the url asked for, never from anything else the caller sent.
392
+ const route = matchRoute(routes, new URL(target, url.origin).pathname);
393
+ if (!route)
394
+ return new Response('No such page', { status: 404 });
395
+ if (route.route.middleware?.length) {
396
+ return new Response('This route is not edge-cacheable', { status: 404 });
397
+ }
398
+ const key = pathKey(new URL(target, url.origin).pathname);
399
+ const shell = (await read(`${key}.ppr.html`)) ?? (await read(`${patternKey(route.route)}.ppr.html`));
400
+ if (shell === null)
401
+ return new Response('No shell for this page', { status: 404 });
402
+ return new Response(JSON.stringify({ shell, version: version ?? null }), {
403
+ headers: withVersion({
404
+ 'Content-Type': 'application/json',
405
+ // Deliberately NOT the REVALIDATE the rest of the host sends. That is
406
+ // `max-age=0, must-revalidate`, which a cache honours by treating the
407
+ // entry as stale the moment it arrives — an edge would store this and
408
+ // never once serve it, so the whole thing would quietly do nothing
409
+ // while looking like it worked, because the miss path serves correct
410
+ // pages.
411
+ //
412
+ // This is build output with nothing of the caller in it, and a guarded
413
+ // route never reaches here at all, so it is genuinely cacheable. An
414
+ // hour bounds how long a deploy can be served against a stale shell;
415
+ // the version below catches it sooner than that.
416
+ 'Cache-Control': 'public, max-age=3600',
417
+ }),
418
+ });
419
+ }
420
+ /**
421
+ * Finish a shell for the visitor this request belongs to.
422
+ *
423
+ * The whole security question lives here, because the holes are the part a
424
+ * guard exists to protect — the shell is chrome, and everything private is
425
+ * behind the boundaries this fills in. So it runs exactly the guard chain the
426
+ * page itself would, derived from the url and nothing else, against the
427
+ * cookies and headers the caller actually sent.
428
+ *
429
+ * Which means an edge worker must forward the visitor's request, not make one
430
+ * of its own. A resume asked for with no cookies is an anonymous visitor and
431
+ * gets an anonymous answer.
432
+ */
433
+ async function servePprResume(request, url, read) {
434
+ const target = url.searchParams.get('url');
435
+ if (!target || !target.startsWith('/')) {
436
+ return new Response('A url is required', { status: 400 });
437
+ }
438
+ const pathname = new URL(target, url.origin).pathname;
439
+ const route = matchRoute(routes, pathname);
440
+ if (!route)
441
+ return new Response('No such page', { status: 404 });
442
+ // The same refusal the document would get, before a byte of the holes is
443
+ // rendered. Nothing below runs for a caller this turns away.
444
+ const refusal = await refuseUnlessAllowed(request, route);
445
+ if (refusal)
446
+ return refusal;
447
+ if (!engine.handleRscResume) {
448
+ return new Response('This engine cannot resume', { status: 500 });
449
+ }
450
+ const key = pathKey(pathname);
451
+ const pattern = patternKey(route.route);
452
+ let shellKey = null;
453
+ if ((await read(`${key}.ppr.html`)) !== null)
454
+ shellKey = key;
455
+ else if ((await read(`${pattern}.ppr.html`)) !== null)
456
+ shellKey = pattern;
457
+ // Read from our own artifacts. Never from the request body — that is the
458
+ // difference between this and the protocol it is modelled on.
459
+ const state = shellKey === null ? null : await read(`${shellKey}.postponed.json`);
460
+ if (state === null)
461
+ return new Response('Nothing to resume', { status: 404 });
462
+ const { htmlStream } = await engine.handleRscResume(route.route.component, route.params, route.route.layouts.map((component) => ({ component, props: {} })), route.route.loadings, route.route.slots, {}, JSON.parse(state), undefined, shellKey === key ? pathname : '');
463
+ // Carries the build version so a caller holding a cached shell can tell
464
+ // that it no longer belongs to this origin. A shell from an older build
465
+ // does not make the resume fail — it replays against slots that have moved
466
+ // and React falls back to client rendering, silently and for good. Nothing
467
+ // else would ever report it.
468
+ return new Response(htmlStream, {
469
+ headers: withVersion({
470
+ 'Content-Type': HTML_TYPE,
471
+ // Rendered for whoever asked. Never cacheable.
472
+ 'Cache-Control': PER_CLIENT,
473
+ }),
474
+ });
475
+ }
360
476
  async function servePrerendered(request, url, source) {
361
477
  const key = pathKey(url.pathname);
362
478
  const read = async (name) => await source(name);
@@ -373,18 +489,80 @@ export function createRscHandler(options) {
373
489
  // url its route matches — which is the only way a route whose urls were
374
490
  // never listed gets anything frozen at all.
375
491
  const route = matchRoute(routes, url.pathname);
376
- const html = (await read(`${key}.html`)) ??
377
- (await read(`${key}.ppr.html`)) ??
378
- (route ? await read(`${patternKey(route.route)}.ppr.html`) : null);
379
- return html === null
380
- ? null
381
- : new Response(html, {
492
+ const whole = await read(`${key}.html`);
493
+ // A whole page is finished. Nothing to resume, nothing to render.
494
+ if (whole !== null) {
495
+ return new Response(whole, {
382
496
  headers: withVersion({
383
497
  'Content-Type': HTML_TYPE,
384
498
  Vary: VARY_ON_RSC,
385
499
  'Cache-Control': route?.route.middleware?.length ? PER_CLIENT : REVALIDATE,
386
500
  }),
387
501
  });
502
+ }
503
+ // Then a shell, under this url or under the route's pattern. Which of the
504
+ // two answered is tracked, because the state that resumes it sits beside
505
+ // the file that was found rather than beside the url that was asked for.
506
+ let shellKey = null;
507
+ let shell = await read(`${key}.ppr.html`);
508
+ if (shell !== null) {
509
+ shellKey = key;
510
+ }
511
+ else if (route) {
512
+ const pattern = patternKey(route.route);
513
+ shell = await read(`${pattern}.ppr.html`);
514
+ if (shell !== null)
515
+ shellKey = pattern;
516
+ }
517
+ if (shell === null || shellKey === null)
518
+ return null;
519
+ const state = await read(`${shellKey}.postponed.json`);
520
+ // A shell with no state cannot be finished by anyone. It was frozen with
521
+ // its fallbacks showing and there is no record of what came next, so
522
+ // serving it would be serving a page that stays on its loading state for
523
+ // good. Fall through and render the page now instead.
524
+ if (state === null || !engine.handleRscResume || !route)
525
+ return null;
526
+ const { htmlStream } = await engine.handleRscResume(route.route.component, route.params,
527
+ // Empty props, because that is what the build passed. Resuming replays
528
+ // the tree against the slots the shell left, and React matches those by
529
+ // key — so an argument that differs from the frozen render at all is a
530
+ // tree that "doesn't match", and every boundary falls back to the
531
+ // client instead of being filled here.
532
+ route.route.layouts.map((component) => ({ component, props: {} })), route.route.loadings, route.route.slots, {}, JSON.parse(state), undefined,
533
+ // A shell found under the route's pattern was frozen for no particular
534
+ // url, so it was rendered with no page key. Handing one over now would
535
+ // key the tree differently from the one being resumed.
536
+ shellKey === key ? url.pathname : '');
537
+ // The shell first, then whatever the resume writes. React's own script
538
+ // travels with the resumed segments and moves them into place, so this is
539
+ // a plain concatenation and the holes land without hydration.
540
+ const body = new ReadableStream({
541
+ async start(controller) {
542
+ controller.enqueue(new TextEncoder().encode(shell));
543
+ const reader = htmlStream.getReader();
544
+ try {
545
+ while (true) {
546
+ const { done, value } = await reader.read();
547
+ if (done)
548
+ break;
549
+ controller.enqueue(value);
550
+ }
551
+ }
552
+ finally {
553
+ controller.close();
554
+ }
555
+ },
556
+ });
557
+ return new Response(body, {
558
+ headers: withVersion({
559
+ 'Content-Type': HTML_TYPE,
560
+ Vary: VARY_ON_RSC,
561
+ // The shell is cacheable; this response is not. It carries the holes,
562
+ // which were rendered for whoever asked.
563
+ 'Cache-Control': PER_CLIENT,
564
+ }),
565
+ });
388
566
  }
389
567
  // Only the document is ever served frozen for a shell. The payload is what
390
568
  // fills it in, and it has to be rendered now — answering with a frozen one
package/dist/host.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"host.js","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"host.js","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /** What each of the watched globals is called, for the message. */
2
+ declare const WATCHED: readonly ['new Date()', 'Date.now()', 'Math.random()', 'crypto.randomUUID()'];
3
+ /**
4
+ * Watch the non-deterministic globals for the duration of a prerender.
5
+ *
6
+ * Patched once around the whole run rather than per route, because the routes
7
+ * render concurrently and a global cannot be swapped per render. Attribution
8
+ * comes from the async context instead, which is exact: React's own render does
9
+ * not call any of these, so a recorded call came from application code.
10
+ */
11
+ export declare function watchNondeterminism(): () => void;
12
+ /** Run a route's render, collecting what it reached for. */
13
+ export declare function whileRendering<T>(run: () => Promise<T>): Promise<[T, string[]]>;
14
+ export { WATCHED };
15
+ //# sourceMappingURL=nondeterminism.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nondeterminism.d.ts","sourceRoot":"","sources":["../src/nondeterminism.ts"],"names":[],"mappings":"AAoBA,mEAAmE;AACnE,QAAA,MAAM,OAAO,YAAI,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,qBAAqB,CAAU,CAAA;AAK7F;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,IAAI,CA4DhD;AAED,4DAA4D;AAC5D,wBAAgB,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAI/E;AAED,OAAO,EAAE,OAAO,EAAE,CAAA"}
@@ -0,0 +1,86 @@
1
+ // Catching a value that will not be the same tomorrow.
2
+ //
3
+ // A page frozen at build time keeps whatever it rendered. If that render called
4
+ // `new Date()` or `Math.random()`, the frozen page keeps *that* date and *that*
5
+ // number, and serves them to everyone until the next build — a "3 minutes ago"
6
+ // that is three minutes past a moment in the deployment pipeline.
7
+ //
8
+ // Nothing warns, because nothing failed. The page rendered perfectly.
9
+ //
10
+ // This is the same trick the prerenderer already plays on the host call: watch
11
+ // what the render reaches for. The difference is that a host call can be stubbed
12
+ // into a promise that never resolves, so its boundary becomes a hole — and there
13
+ // is nothing to hang on a synchronous `new Date()`. So this can report, and
14
+ // cannot repair.
15
+ import { AsyncLocalStorage } from 'node:async_hooks';
16
+ /** Which route is rendering, so a call can be attributed under concurrency. */
17
+ const rendering = new AsyncLocalStorage();
18
+ /** What each of the watched globals is called, for the message. */
19
+ const WATCHED = ['new Date()', 'Date.now()', 'Math.random()', 'crypto.randomUUID()'];
20
+ let installed = 0;
21
+ let restore = null;
22
+ /**
23
+ * Watch the non-deterministic globals for the duration of a prerender.
24
+ *
25
+ * Patched once around the whole run rather than per route, because the routes
26
+ * render concurrently and a global cannot be swapped per render. Attribution
27
+ * comes from the async context instead, which is exact: React's own render does
28
+ * not call any of these, so a recorded call came from application code.
29
+ */
30
+ export function watchNondeterminism() {
31
+ if (installed++ === 0) {
32
+ const realDate = globalThis.Date;
33
+ const realRandom = Math.random;
34
+ const realUUID = globalThis.crypto?.randomUUID?.bind(globalThis.crypto);
35
+ const note = (what) => {
36
+ rendering.getStore()?.add(what);
37
+ };
38
+ // A subclass rather than a Proxy: `new Date()` has to keep working, and
39
+ // instanceof has to keep answering true for anything the app does with it.
40
+ class WatchedDate extends realDate {
41
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
42
+ constructor(...args) {
43
+ // Only a no-argument call reads the clock. `new Date('2020-01-01')` is
44
+ // as deterministic as a string literal.
45
+ if (args.length === 0)
46
+ note('new Date()');
47
+ // @ts-expect-error - forwarding Date's overloads verbatim
48
+ super(...args);
49
+ }
50
+ static now() {
51
+ note('Date.now()');
52
+ return realDate.now();
53
+ }
54
+ }
55
+ globalThis.Date = WatchedDate;
56
+ Math.random = function random() {
57
+ note('Math.random()');
58
+ return realRandom.call(Math);
59
+ };
60
+ if (realUUID && globalThis.crypto) {
61
+ globalThis.crypto.randomUUID = function randomUUID() {
62
+ note('crypto.randomUUID()');
63
+ return realUUID();
64
+ };
65
+ }
66
+ restore = () => {
67
+ globalThis.Date = realDate;
68
+ Math.random = realRandom;
69
+ if (realUUID && globalThis.crypto)
70
+ globalThis.crypto.randomUUID = realUUID;
71
+ };
72
+ }
73
+ return () => {
74
+ if (--installed === 0) {
75
+ restore?.();
76
+ restore = null;
77
+ }
78
+ };
79
+ }
80
+ /** Run a route's render, collecting what it reached for. */
81
+ export function whileRendering(run) {
82
+ const found = new Set();
83
+ return rendering.run(found, run).then((value) => [value, [...found]]);
84
+ }
85
+ export { WATCHED };
86
+ //# sourceMappingURL=nondeterminism.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nondeterminism.js","sourceRoot":"","sources":["../src/nondeterminism.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,25 @@ export interface PrerenderEngine {
12
12
  timedOut: boolean;
13
13
  usedDynamicApis: boolean;
14
14
  error?: string;
15
+ /**
16
+ * Where the render stopped, when it stopped — React's own resumable state.
17
+ *
18
+ * Null when the page finished, which is the same thing as `timedOut` being
19
+ * false. An engine built before this existed returns undefined, and the
20
+ * shell is then served the way it always was: holes filled by the client
21
+ * after hydration rather than resumed at the origin.
22
+ */
23
+ postponed?: unknown;
24
+ /**
25
+ * Anything that failed while producing the shell, including a rejection a
26
+ * Suspense boundary caught.
27
+ *
28
+ * Such a rejection never reaches the caller: React keeps the fallback and
29
+ * the render finishes, so without this a page whose data source was
30
+ * unreachable looked complete and its loading state was frozen as a
31
+ * finished page.
32
+ */
33
+ renderFailure?: string;
15
34
  }>;
16
35
  handleRsc(component: string, props?: Record<string, unknown>, callbackSocket?: string | null, layouts?: {
17
36
  component: string;
@@ -120,6 +139,22 @@ export declare function closeDocument(html: string): string;
120
139
  * host: `writeTo` on disk does the obvious thing, but a KV or edge binding has
121
140
  * no notion of a parent directory and no reason to look for one.
122
141
  */
142
+ /**
143
+ * The key, showing only the marks that actually appear above it.
144
+ *
145
+ * Wording follows Next's build output deliberately. Most people arriving here
146
+ * have read that legend already, and inventing a second vocabulary for the same
147
+ * three states costs them a translation for nothing.
148
+ */
149
+ export declare function legend(results: {
150
+ type: string;
151
+ }[]): string;
152
+ /**
153
+ * The one-line tally under the legend, in the legend's own words.
154
+ */
155
+ export declare function summary(results: {
156
+ type: string;
157
+ }[]): string;
123
158
  export declare function pathKey(url: string): string;
124
159
  /**
125
160
  * Substitute params into a route's segments to get a concrete url.