@timber-js/app 0.2.0-alpha.203 → 0.2.0-alpha.205
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/_chunks/{actions-HUdJADAD.js → actions-jNrXdzgs.js} +4 -3
- package/dist/_chunks/{actions-HUdJADAD.js.map → actions-jNrXdzgs.js.map} +1 -1
- package/dist/_chunks/als-registry-C6kcfprT.js.map +1 -1
- package/dist/_chunks/{build-manifest-DWppEdLB.js → build-manifest-DTmSGLRz.js} +51 -2
- package/dist/_chunks/build-manifest-DTmSGLRz.js.map +1 -0
- package/dist/_chunks/{cache-api-CAPbZTga.js → cache-api-CUD9Ezaq.js} +3 -2
- package/dist/_chunks/{cache-api-CAPbZTga.js.map → cache-api-CUD9Ezaq.js.map} +1 -1
- package/dist/_chunks/{chains-CBNA0Ozj.js → chains-BjGKq9Je.js} +7 -6
- package/dist/_chunks/chains-BjGKq9Je.js.map +1 -0
- package/dist/_chunks/{cli-check-BzMGuIH6.js → cli-check-3WE_GyoL.js} +3 -3
- package/dist/_chunks/{cli-check-BzMGuIH6.js.map → cli-check-3WE_GyoL.js.map} +1 -1
- package/dist/_chunks/{cli-schema-sync-DnXqcIIj.js → cli-schema-sync-D3iIZjku.js} +2 -2
- package/dist/_chunks/{cli-schema-sync-DnXqcIIj.js.map → cli-schema-sync-D3iIZjku.js.map} +1 -1
- package/dist/_chunks/{cloudflare-DxX1SU0g.js → cloudflare-BFb__LYG.js} +3 -3
- package/dist/_chunks/{cloudflare-DxX1SU0g.js.map → cloudflare-BFb__LYG.js.map} +1 -1
- package/dist/_chunks/{convention-lint-DHOFvX5s.js → convention-lint-BnO5TyHD.js} +2 -2
- package/dist/_chunks/{convention-lint-DHOFvX5s.js.map → convention-lint-BnO5TyHD.js.map} +1 -1
- package/dist/_chunks/{dev-server-DioP7tkQ.js → dev-server-Dbdgx2dD.js} +8 -195
- package/dist/_chunks/dev-server-Dbdgx2dD.js.map +1 -0
- package/dist/_chunks/{error-boundary-BQKxl6EX.js → error-boundary-BndF-3Td.js} +2 -2
- package/dist/_chunks/{error-boundary-BQKxl6EX.js.map → error-boundary-BndF-3Td.js.map} +1 -1
- package/dist/_chunks/{graph-cache-Cv3njEH8.js → graph-cache-CP4GEmf9.js} +2 -2
- package/dist/_chunks/{graph-cache-Cv3njEH8.js.map → graph-cache-CP4GEmf9.js.map} +1 -1
- package/dist/_chunks/{live-graph-VjHFF5EV.js → live-graph-BM2UbbNx.js} +3 -3
- package/dist/_chunks/{live-graph-VjHFF5EV.js.map → live-graph-BM2UbbNx.js.map} +1 -1
- package/dist/_chunks/logger-k2DQ4EUf.js +506 -0
- package/dist/_chunks/logger-k2DQ4EUf.js.map +1 -0
- package/dist/_chunks/{poison-scan-lEbz4pQE.js → poison-scan-g83aAXhs.js} +2 -2
- package/dist/_chunks/{poison-scan-lEbz4pQE.js.map → poison-scan-g83aAXhs.js.map} +1 -1
- package/dist/_chunks/{logger-DqJ2VoAY.js → primitives-DLAnvsrk.js} +17 -518
- package/dist/_chunks/primitives-DLAnvsrk.js.map +1 -0
- package/dist/_chunks/{scanner-B_tnqFcF.js → scanner-BhNruzv0.js} +3 -3
- package/dist/_chunks/{scanner-B_tnqFcF.js.map → scanner-BhNruzv0.js.map} +1 -1
- package/dist/_chunks/{walkers-Cm3PC5JT.js → walkers-BNsswm-h.js} +2 -2
- package/dist/_chunks/{walkers-Cm3PC5JT.js.map → walkers-BNsswm-h.js.map} +1 -1
- package/dist/adapters/cloudflare-dev.js +1 -1
- package/dist/adapters/cloudflare-kv-cache.js +1 -1
- package/dist/adapters/cloudflare.js +1 -1
- package/dist/analyze/classify.d.ts +5 -4
- package/dist/analyze/classify.d.ts.map +1 -1
- package/dist/analyze/crawl-entry.js +2 -2
- package/dist/analyze/graph-command.js +3 -3
- package/dist/cache/index.js +1 -1
- package/dist/cli.js +3 -3
- package/dist/client/browser-entry/rsc-stream.d.ts.map +1 -1
- package/dist/client/error-boundary.js +1 -1
- package/dist/client/internal.js +1 -1
- package/dist/dev-tools/index.d.ts +1 -1
- package/dist/dev-tools/index.d.ts.map +1 -1
- package/dist/dev-tools/overlay.d.ts +1 -21
- package/dist/dev-tools/overlay.d.ts.map +1 -1
- package/dist/index.js +6 -7
- package/dist/index.js.map +1 -1
- package/dist/plugins/dev-server.d.ts.map +1 -1
- package/dist/routing/index.js +2 -2
- package/dist/server/als-registry.d.ts +0 -7
- package/dist/server/als-registry.d.ts.map +1 -1
- package/dist/server/deny-renderer.d.ts +2 -6
- package/dist/server/deny-renderer.d.ts.map +1 -1
- package/dist/server/index.js +3 -2
- package/dist/server/index.js.map +1 -1
- package/dist/server/internal.js +180 -7
- package/dist/server/internal.js.map +1 -1
- package/dist/server/pipeline.d.ts +1 -13
- package/dist/server/pipeline.d.ts.map +1 -1
- package/dist/server/rsc-entry/deny-fallback.d.ts.map +1 -1
- package/dist/server/rsc-entry/error-renderer.d.ts.map +1 -1
- package/dist/server/rsc-entry/helpers.d.ts +0 -38
- package/dist/server/rsc-entry/helpers.d.ts.map +1 -1
- package/dist/server/rsc-entry/index.d.ts.map +1 -1
- package/dist/server/rsc-entry/render-route.d.ts +0 -1
- package/dist/server/rsc-entry/render-route.d.ts.map +1 -1
- package/dist/server/rsc-entry/rsc-payload.d.ts.map +1 -1
- package/dist/server/rsc-entry/rsc-stream.d.ts +1 -7
- package/dist/server/rsc-entry/rsc-stream.d.ts.map +1 -1
- package/dist/server/rsc-entry/ssr-renderer.d.ts +0 -1
- package/dist/server/rsc-entry/ssr-renderer.d.ts.map +1 -1
- package/dist/server/slot-resolver.d.ts.map +1 -1
- package/dist/server/slot-subtree-contain.d.ts +1 -1
- package/dist/server/slot-subtree-contain.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/analyze/classify.ts +5 -4
- package/src/client/browser-entry/rsc-stream.ts +1 -82
- package/src/dev-tools/index.ts +0 -2
- package/src/dev-tools/overlay.ts +1 -65
- package/src/plugins/dev-server.ts +4 -45
- package/src/server/als-registry.ts +0 -8
- package/src/server/deny-renderer.ts +0 -7
- package/src/server/pipeline.ts +1 -14
- package/src/server/rsc-entry/deny-fallback.ts +1 -10
- package/src/server/rsc-entry/error-renderer.ts +1 -11
- package/src/server/rsc-entry/helpers.ts +0 -92
- package/src/server/rsc-entry/index.ts +1 -14
- package/src/server/rsc-entry/render-route.ts +2 -23
- package/src/server/rsc-entry/rsc-payload.ts +1 -2
- package/src/server/rsc-entry/rsc-stream.ts +3 -29
- package/src/server/rsc-entry/ssr-renderer.ts +2 -15
- package/src/server/slot-resolver.ts +7 -29
- package/src/server/slot-subtree-contain.ts +22 -14
- package/dist/_chunks/build-manifest-DWppEdLB.js.map +0 -1
- package/dist/_chunks/chains-CBNA0Ozj.js.map +0 -1
- package/dist/_chunks/csp-nonce-hOGniaG4.js +0 -227
- package/dist/_chunks/csp-nonce-hOGniaG4.js.map +0 -1
- package/dist/_chunks/dev-server-DioP7tkQ.js.map +0 -1
- package/dist/_chunks/logger-DqJ2VoAY.js.map +0 -1
- package/dist/dev-tools/debug-channel.d.ts +0 -55
- package/dist/dev-tools/debug-channel.d.ts.map +0 -1
- package/src/dev-tools/debug-channel.ts +0 -151
|
@@ -157,11 +157,7 @@ export interface PipelineConfig {
|
|
|
157
157
|
*
|
|
158
158
|
* Undefined in production — zero overhead.
|
|
159
159
|
*/
|
|
160
|
-
devPipelineErrorHandler?: (error: Error, phase: string
|
|
161
|
-
name: string;
|
|
162
|
-
env: string | null;
|
|
163
|
-
stack: unknown[] | null;
|
|
164
|
-
}>) => void;
|
|
160
|
+
devPipelineErrorHandler?: (error: Error, phase: string) => void;
|
|
165
161
|
/**
|
|
166
162
|
* HMR connection options for dev-only HTML pages (dev 404 page, fallback
|
|
167
163
|
* error page) — set by the dev server after the RSC entry module is
|
|
@@ -173,14 +169,6 @@ export interface PipelineConfig {
|
|
|
173
169
|
* Undefined in production — zero overhead.
|
|
174
170
|
*/
|
|
175
171
|
devHmrOptions?: import('../dev-tools/dev-page-shell.ts').DevErrorHmrOptions;
|
|
176
|
-
/**
|
|
177
|
-
* Dev debug channel transport — sends RSC Flight debug data to the
|
|
178
|
-
* browser via HMR WebSocket for owner stack resolution in console
|
|
179
|
-
* warnings. Set by the dev server. Undefined in production.
|
|
180
|
-
*
|
|
181
|
-
* See TIM-1507, design/13-security.md §7.
|
|
182
|
-
*/
|
|
183
|
-
devDebugRegistry?: import('../dev-tools/debug-channel.ts').DebugChannelRegistry;
|
|
184
172
|
/**
|
|
185
173
|
* Fallback error renderer — called when a catastrophic error escapes the
|
|
186
174
|
* render phase. Produces an HTML Response instead of a bare empty 500.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/server/pipeline.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/server/pipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deny-fallback.d.ts","sourceRoot":"","sources":["../../../src/server/rsc-entry/deny-fallback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAElE,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,gBAAgB,CAAC;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"deny-fallback.d.ts","sourceRoot":"","sources":["../../../src/server/rsc-entry/deny-fallback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAElE,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,gBAAgB,CAAC;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAK/D;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE;IAClD,WAAW,EAAE,mBAAmB,CAAC;IACjC,eAAe,EAAE,qBAAqB,CAAC;CACxC,GAAG,WAAW,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC,CAgDpD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-renderer.d.ts","sourceRoot":"","sources":["../../../src/server/rsc-entry/error-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAIjD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAIlE,OAAO,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"error-renderer.d.ts","sourceRoot":"","sources":["../../../src/server/rsc-entry/error-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAIjD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAIlE,OAAO,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAe5E;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;CAClB;AA6GD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,mBAAmB,EAAE,EAC/B,gBAAgB,EAAE,WAAW,EAAE,EAC/B,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,UAAU,EACjB,eAAe,EAAE,OAAO,EACxB,eAAe,EAAE,qBAAqB,EACtC,WAAW,CAAC,EAAE,eAAe,EAC7B,gBAAgB,SAAW,GAC1B,OAAO,CAAC,QAAQ,CAAC,CA4DnB;AA2HD;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,OAAO,EACZ,WAAW,EAAE,mBAAmB,EAChC,eAAe,EAAE,OAAO,EACxB,eAAe,EAAE,qBAAqB,EACtC,WAAW,CAAC,EAAE,mBAAmB,GAChC,OAAO,CAAC,QAAQ,CAAC,CAmCnB"}
|
|
@@ -6,44 +6,6 @@
|
|
|
6
6
|
import type { ManifestSegmentNode } from '../route-matcher.ts';
|
|
7
7
|
import type { SegmentInfo } from '../../shared/segment-info.ts';
|
|
8
8
|
import type { SlotSkipEntry } from '../slot-resolver.ts';
|
|
9
|
-
/**
|
|
10
|
-
* No-op — returns undefined so no debugChannel is passed to Flight.
|
|
11
|
-
* Debug rows ride the main stream inline (React's default behavior).
|
|
12
|
-
*
|
|
13
|
-
* Production Flight emits no debug rows. In dev, inline debug rows
|
|
14
|
-
* are handled by the Flight client for owner stack resolution.
|
|
15
|
-
*
|
|
16
|
-
* A writable-only debugChannel triggers a react-server-dom-webpack
|
|
17
|
-
* >=19.3.0 Flight client regression (owner/stack refs parsed after
|
|
18
|
-
* stream close produce "Connection closed" errors).
|
|
19
|
-
*/
|
|
20
|
-
export declare function createDebugChannelSink(): undefined;
|
|
21
|
-
/**
|
|
22
|
-
* Parsed component debug info extracted from the Flight debug channel.
|
|
23
|
-
*
|
|
24
|
-
* Contains only component names, environment labels, and stack frames —
|
|
25
|
-
* never source code or props. See design/13-security.md §"Server source
|
|
26
|
-
* never reaches the client".
|
|
27
|
-
*/
|
|
28
|
-
export interface DebugComponentEntry {
|
|
29
|
-
name: string;
|
|
30
|
-
env: string | null;
|
|
31
|
-
key: string | null;
|
|
32
|
-
stack: unknown[] | null;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Parse React Flight debug rows into component entries.
|
|
36
|
-
*
|
|
37
|
-
* The Flight debug channel writes rows in `hexId:json\n` format. Each row
|
|
38
|
-
* with a JSON object containing a `name` field is a component debug info
|
|
39
|
-
* entry. Rows without `name` (timing rows, reference rows like `D"$id"`)
|
|
40
|
-
* are skipped.
|
|
41
|
-
*
|
|
42
|
-
* Security: `props` are explicitly stripped from parsed entries — they may
|
|
43
|
-
* contain rendered output or user data. Only `name`, `env`, `key`, and
|
|
44
|
-
* `stack` are retained.
|
|
45
|
-
*/
|
|
46
|
-
export declare function parseDebugRows(text: string): DebugComponentEntry[];
|
|
47
9
|
/**
|
|
48
10
|
* Build segment metadata for the X-Timber-Segments response header.
|
|
49
11
|
* Describes the rendered segment chain with request-dependency status,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/server/rsc-entry/helpers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/server/rsc-entry/helpers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIzD;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,mBAAmB,EAAE,EAC/B,gBAAgB,EAAE,KAAK,CAAC;IACtB,SAAS,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;IAC3C,OAAO,EAAE,mBAAmB,CAAC;CAC9B,CAAC,EACF,YAAY,CAAC,EAAE,aAAa,EAAE,EAC9B,kBAAkB,CAAC,EAAE,MAAM,EAAE,EAC7B,gBAAgB,SAAW,GAC1B,WAAW,EAAE,CAsEf;AAMD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/rsc-entry/index.ts"],"names":[],"mappings":"AA+CA,OAAO,KAAK,EAAuB,cAAc,EAAc,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/rsc-entry/index.ts"],"names":[],"mappings":"AA+CA,OAAO,KAAK,EAAuB,cAAc,EAAc,MAAM,gBAAgB,CAAC;AAqCtF;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI,CAE5E;AA8UD,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAInE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAItE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,OAAO,wBAAwB,EAAE,cAAc,GACvD,OAAO,CAAC,OAAO,wBAAwB,EAAE,cAAc,CAAC,CAE1D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,OAAO,wBAAwB,EAAE,uBAAuB,GAChE,OAAO,CAAC,OAAO,wBAAwB,EAAE,uBAAuB,CAAC,CAQnE;AAgDD;;;GAGG;AACH,eAAO,MAAM,cAAc,gBAAmB,CAAC;8BAb1B,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC"}
|
|
@@ -36,7 +36,6 @@ export interface RenderRouteDeps {
|
|
|
36
36
|
load: () => Promise<unknown>;
|
|
37
37
|
filePath: string;
|
|
38
38
|
};
|
|
39
|
-
devDebugRegistry?: import('../../dev-tools/debug-channel.ts').DebugChannelRegistry;
|
|
40
39
|
}
|
|
41
40
|
/**
|
|
42
41
|
* Render a matched route to an HTML Response via RSC → SSR pipeline,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-route.d.ts","sourceRoot":"","sources":["../../../src/server/rsc-entry/render-route.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAW1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGtE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"render-route.d.ts","sourceRoot":"","sources":["../../../src/server/rsc-entry/render-route.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAW1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGtE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAc/D;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,qBAAqB,CAAC;IACvC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,WAAW,EAAE,mBAAmB,CAAC;IACjC,aAAa,EAAE,aAAa,CAAC;IAC7B,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CAClE;AAED;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,UAAU,EACjB,eAAe,EAAE,OAAO,EACxB,IAAI,EAAE,eAAe,EACrB,YAAY,CAAC,EAAE,mBAAmB,GACjC,OAAO,CAAC,QAAQ,CAAC,CAsNnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rsc-payload.d.ts","sourceRoot":"","sources":["../../../src/server/rsc-entry/rsc-payload.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAOzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAWrD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,OAAO,EACZ,SAAS,EAAE,cAAc,CAAC,UAAU,CAAC,EACrC,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,mBAAmB,EAAE,EAC/B,gBAAgB,EAAE,oBAAoB,EAAE,EACxC,eAAe,EAAE,OAAO,EACxB,eAAe,CAAC,EAAE,MAAM,EAAE,EAC1B,YAAY,CAAC,EAAE,aAAa,EAAE,GAC7B,OAAO,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"rsc-payload.d.ts","sourceRoot":"","sources":["../../../src/server/rsc-entry/rsc-payload.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAOzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAWrD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,OAAO,EACZ,SAAS,EAAE,cAAc,CAAC,UAAU,CAAC,EACrC,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,mBAAmB,EAAE,EAC/B,gBAAgB,EAAE,oBAAoB,EAAE,EACxC,eAAe,EAAE,OAAO,EACxB,eAAe,CAAC,EAAE,MAAM,EAAE,EAC1B,YAAY,CAAC,EAAE,aAAa,EAAE,GAC7B,OAAO,CAAC,QAAQ,CAAC,CAwPnB"}
|
|
@@ -12,8 +12,6 @@
|
|
|
12
12
|
import type { RscPayloadRoot } from '../../shared/payload-root.ts';
|
|
13
13
|
import { type DenyPageEntry } from '../deny-boundary.ts';
|
|
14
14
|
import { DenySignal, RedirectSignal } from '../primitives.ts';
|
|
15
|
-
import { type DebugComponentEntry } from './helpers.ts';
|
|
16
|
-
import type { DebugChannelRegistry } from '../../dev-tools/debug-channel.ts';
|
|
17
15
|
/**
|
|
18
16
|
* Mutable signal state captured during RSC rendering.
|
|
19
17
|
*
|
|
@@ -62,10 +60,6 @@ export interface RenderSignals {
|
|
|
62
60
|
export interface RscStreamResult {
|
|
63
61
|
rscStream: ReadableStream<Uint8Array> | undefined;
|
|
64
62
|
signals: RenderSignals;
|
|
65
|
-
/** Dev-only: server component debug info from the Flight debug channel. */
|
|
66
|
-
getDebugComponents?: () => DebugComponentEntry[];
|
|
67
|
-
/** Dev-only: request ID for the debug channel HMR transport. */
|
|
68
|
-
debugRequestId?: string;
|
|
69
63
|
}
|
|
70
64
|
/**
|
|
71
65
|
* Render a payload root (tree plus its params) to an RSC Flight stream.
|
|
@@ -78,5 +72,5 @@ export interface RscStreamResult {
|
|
|
78
72
|
* fires onError during stream consumption. Signals are captured in the
|
|
79
73
|
* returned `signals` object for the caller to handle.
|
|
80
74
|
*/
|
|
81
|
-
export declare function renderRscStream(payload: RscPayloadRoot, req: Request, leafDenyChain?: DenyPageEntry[]
|
|
75
|
+
export declare function renderRscStream(payload: RscPayloadRoot, req: Request, leafDenyChain?: DenyPageEntry[]): RscStreamResult;
|
|
82
76
|
//# sourceMappingURL=rsc-stream.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rsc-stream.d.ts","sourceRoot":"","sources":["../../../src/server/rsc-entry/rsc-stream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAInE,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAE3E,OAAO,EAIL,UAAU,EACV,cAAc,EAEf,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"rsc-stream.d.ts","sourceRoot":"","sources":["../../../src/server/rsc-entry/rsc-stream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAInE,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAE3E,OAAO,EAIL,UAAU,EACV,cAAc,EAEf,MAAM,kBAAkB,CAAC;AAO1B;;;;;;;;;GASG;AACH,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B;;;;;;;;;;OAUG;IACH,YAAY,EAAE,UAAU,GAAG,IAAI,CAAC;IAChC,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,WAAW,EAAE;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACvD;;;;;;;;OAQG;IACH,kBAAkB,EAAE,OAAO,GAAG,IAAI,CAAC;IACnC,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB;gEAC4D;IAC5D,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC;IAClD,OAAO,EAAE,aAAa,CAAC;CACxB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,cAAc,EACvB,GAAG,EAAE,OAAO,EACZ,aAAa,CAAC,EAAE,aAAa,EAAE,GAC9B,eAAe,CAoKjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssr-renderer.d.ts","sourceRoot":"","sources":["../../../src/server/rsc-entry/ssr-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAOlE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"ssr-renderer.d.ts","sourceRoot":"","sources":["../../../src/server/rsc-entry/ssr-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAOlE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAOzD,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AA4BrD;;;;;;;;GAQG;AACH,eAAO,MAAM,gCAAgC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAiB,CAAC;AAEhF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iCAAiC,EAAE;IAAE,KAAK,EAAE,OAAO,CAAA;CAAqB,CAAC;AAEtF,UAAU,gBAAgB;IACxB,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IACtC,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,gBAAgB,EAAE,oBAAoB,EAAE,CAAC;IACzC,KAAK,EAAE,UAAU,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,qBAAqB,CAAC;IACvC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,wDAAwD;IACxD,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,YAAY,CAAC,EAAE,aAAa,EAAE,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAkWjF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slot-resolver.d.ts","sourceRoot":"","sources":["../../src/server/slot-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AASH,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGrE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAQ9D,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAI5E,KAAK,eAAe,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,KAAK,CAAC,YAAY,CAAC;AAgClE;;;;;;;;;;;;GAYG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,mBAAmB,EAC7B,KAAK,EAAE,UAAU,EACjB,CAAC,EAAE,eAAe,EAClB,YAAY,CAAC,EAAE,mBAAmB,EAClC,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"slot-resolver.d.ts","sourceRoot":"","sources":["../../src/server/slot-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -50,5 +50,5 @@ import { type ReactNode } from 'react';
|
|
|
50
50
|
* the walk must leave alone: a slot layout passes the `children` element it
|
|
51
51
|
* received, so the page beneath it is not wrapped a second time.
|
|
52
52
|
*/
|
|
53
|
-
export declare function containSlotSubtree(tree: ReactNode, fallback: ReactNode, opaque?: ReactNode
|
|
53
|
+
export declare function containSlotSubtree(tree: ReactNode, fallback: ReactNode, opaque?: ReactNode): ReactNode;
|
|
54
54
|
//# sourceMappingURL=slot-subtree-contain.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slot-subtree-contain.d.ts","sourceRoot":"","sources":["../../src/server/slot-subtree-contain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,EAAsD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"slot-subtree-contain.d.ts","sourceRoot":"","sources":["../../src/server/slot-subtree-contain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,EAAsD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAqN3F;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,SAAS,EACnB,MAAM,CAAC,EAAE,SAAS,GACjB,SAAS,CAEX"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@timber-js/app",
|
|
3
|
-
"version": "0.2.0-alpha.
|
|
3
|
+
"version": "0.2.0-alpha.205",
|
|
4
4
|
"description": "Vite-native React framework built for Servers and Serverless Platforms — correct HTTP semantics, real status codes, pages that work without JavaScript",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cloudflare-workers",
|
|
@@ -163,7 +163,7 @@
|
|
|
163
163
|
"@content-collections/vite": "^0.2.0 || ^0.3.0",
|
|
164
164
|
"@typescript/native-preview": "^7.0.0-dev.0",
|
|
165
165
|
"@vitejs/plugin-react": "^6.1.0",
|
|
166
|
-
"@vitejs/plugin-rsc": ">=0.5.
|
|
166
|
+
"@vitejs/plugin-rsc": ">=0.5.35",
|
|
167
167
|
"nuqs": "^2.0.0",
|
|
168
168
|
"react": "19.3.0",
|
|
169
169
|
"react-dom": "19.3.0",
|
package/src/analyze/classify.ts
CHANGED
|
@@ -126,10 +126,11 @@ export function langForFile(file: string): 'ts' | 'tsx' | 'jsx' {
|
|
|
126
126
|
* Detect the first directive of a module's original source.
|
|
127
127
|
*
|
|
128
128
|
* Never string-match or regex directives (design/43): `hasDirective`
|
|
129
|
-
* from @vitejs/plugin-rsc
|
|
130
|
-
* check the RSC plugin runs to decide
|
|
131
|
-
* agrees with what the framework actually
|
|
132
|
-
*
|
|
129
|
+
* from @vitejs/plugin-rsc checks for the `directive` property on
|
|
130
|
+
* ExpressionStatements — the same check the RSC plugin runs to decide
|
|
131
|
+
* boundaries, so classification agrees with what the framework actually
|
|
132
|
+
* does with the file. The directive must be in prologue position (before
|
|
133
|
+
* any import or statement) per the ECMAScript spec. Non-JS sources
|
|
133
134
|
* (CSS, MDX, assets) and sources that fail to parse return null — no
|
|
134
135
|
* directive is a safe default; classification then falls back to graph
|
|
135
136
|
* membership.
|
|
@@ -95,12 +95,6 @@ export function createRscPayloadStream(): RscStreamResult | null {
|
|
|
95
95
|
},
|
|
96
96
|
});
|
|
97
97
|
|
|
98
|
-
// No debug channel — debug rows ride the main stream inline.
|
|
99
|
-
// A readable debug channel causes "Connection closed" when HMR
|
|
100
|
-
// messages are lost or sessions expire. React handles inline
|
|
101
|
-
// debug rows natively for owner stack resolution.
|
|
102
|
-
const debugChannel = null;
|
|
103
|
-
|
|
104
98
|
// Close the stream when the document finishes loading.
|
|
105
99
|
// DOMContentLoaded fires after the HTML parser has processed all
|
|
106
100
|
// inline scripts (including streamed Suspense replacements and
|
|
@@ -145,82 +139,7 @@ export function createRscPayloadStream(): RscStreamResult | null {
|
|
|
145
139
|
queueMicrotask(onDOMContentLoaded);
|
|
146
140
|
}
|
|
147
141
|
|
|
148
|
-
const
|
|
149
|
-
|
|
150
|
-
const { tree, params } = splitPayloadRoot(createFromReadableStream(rscPayload, options));
|
|
142
|
+
const { tree, params } = splitPayloadRoot(createFromReadableStream(rscPayload));
|
|
151
143
|
// The stream is a thenable, so the split is asynchronous on both halves.
|
|
152
144
|
return { element: tree, params: params as Promise<PublishedParams> };
|
|
153
145
|
}
|
|
154
|
-
|
|
155
|
-
/**
|
|
156
|
-
* Create a ReadableStream that receives RSC debug channel data via HMR.
|
|
157
|
-
*
|
|
158
|
-
* The server sends debug data (owner stacks, component info) over the
|
|
159
|
-
* Vite HMR WebSocket as 'timber:debug-data' events, tagged with a
|
|
160
|
-
* request ID embedded in the HTML as `self.__timber_debug_id`.
|
|
161
|
-
*
|
|
162
|
-
* Returns null in production or when no debug ID is present.
|
|
163
|
-
*/
|
|
164
|
-
function createHmrDebugChannel(): ReadableStream<Uint8Array> | null {
|
|
165
|
-
if (process.env.NODE_ENV === 'production') return null;
|
|
166
|
-
|
|
167
|
-
const debugId = (self as unknown as Record<string, string | undefined>).__timber_debug_id;
|
|
168
|
-
if (!debugId) return null;
|
|
169
|
-
|
|
170
|
-
const hot = (
|
|
171
|
-
import.meta as unknown as {
|
|
172
|
-
hot?: {
|
|
173
|
-
on(event: string, cb: (...args: unknown[]) => void): void;
|
|
174
|
-
send(event: string, data: unknown): void;
|
|
175
|
-
};
|
|
176
|
-
}
|
|
177
|
-
).hot;
|
|
178
|
-
if (!hot) return null;
|
|
179
|
-
|
|
180
|
-
let controller: ReadableStreamDefaultController<Uint8Array> | null = null;
|
|
181
|
-
const pending: Uint8Array[] = [];
|
|
182
|
-
let done = false;
|
|
183
|
-
|
|
184
|
-
hot.on('timber:debug-data', (data: unknown) => {
|
|
185
|
-
const msg = data as { id: string; chunk?: string; done?: boolean };
|
|
186
|
-
if (msg.id !== debugId) return;
|
|
187
|
-
|
|
188
|
-
if (msg.done) {
|
|
189
|
-
done = true;
|
|
190
|
-
try {
|
|
191
|
-
controller?.close();
|
|
192
|
-
} catch {
|
|
193
|
-
/* already closed */
|
|
194
|
-
}
|
|
195
|
-
return;
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
if (msg.chunk && !done) {
|
|
199
|
-
const bytes = Uint8Array.from(atob(msg.chunk), (c) => c.charCodeAt(0));
|
|
200
|
-
if (controller) {
|
|
201
|
-
try {
|
|
202
|
-
controller.enqueue(bytes);
|
|
203
|
-
} catch {
|
|
204
|
-
/* stream closed */
|
|
205
|
-
}
|
|
206
|
-
} else {
|
|
207
|
-
pending.push(bytes);
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
});
|
|
211
|
-
|
|
212
|
-
// Subscribe to trigger replay of buffered debug chunks. The server
|
|
213
|
-
// buffers chunks during RSC render (before the browser connects) and
|
|
214
|
-
// replays them when this subscribe arrives. Vite's client.send()
|
|
215
|
-
// awaits the WebSocket connect promise, so this is safe at init time.
|
|
216
|
-
hot.send('timber:debug-subscribe', { id: debugId });
|
|
217
|
-
|
|
218
|
-
return new ReadableStream<Uint8Array>({
|
|
219
|
-
start(ctrl) {
|
|
220
|
-
controller = ctrl;
|
|
221
|
-
for (const chunk of pending) ctrl.enqueue(chunk);
|
|
222
|
-
pending.length = 0;
|
|
223
|
-
if (done) ctrl.close();
|
|
224
|
-
},
|
|
225
|
-
});
|
|
226
|
-
}
|
package/src/dev-tools/index.ts
CHANGED
|
@@ -33,11 +33,9 @@ export {
|
|
|
33
33
|
extractComponentStack,
|
|
34
34
|
parseFirstAppFrame,
|
|
35
35
|
calculateModuleRunnerOffset,
|
|
36
|
-
formatRscDebugContext,
|
|
37
36
|
formatTerminalError,
|
|
38
37
|
PHASE_LABELS,
|
|
39
38
|
type ErrorPhase,
|
|
40
|
-
type RscDebugComponentInfo,
|
|
41
39
|
} from './overlay.ts';
|
|
42
40
|
|
|
43
41
|
// HTML error pages
|
package/src/dev-tools/overlay.ts
CHANGED
|
@@ -164,63 +164,6 @@ export function classifyErrorPhase(error: Error, projectRoot: string): ErrorPhas
|
|
|
164
164
|
import { formatTerminalError as _formatTerminalError } from './terminal.ts';
|
|
165
165
|
export const formatTerminalError = _formatTerminalError;
|
|
166
166
|
|
|
167
|
-
// ─── RSC Debug Context ──────────────────────────────────────────────────────
|
|
168
|
-
|
|
169
|
-
/**
|
|
170
|
-
* Component info extracted from the RSC debug channel.
|
|
171
|
-
* Contains only names, environments, and stack frames — never source code.
|
|
172
|
-
*/
|
|
173
|
-
export interface RscDebugComponentInfo {
|
|
174
|
-
name: string;
|
|
175
|
-
env: string | null;
|
|
176
|
-
stack: unknown[] | null;
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
/**
|
|
180
|
-
* Format RSC debug component info into a readable string for the overlay.
|
|
181
|
-
*
|
|
182
|
-
* Renders the server component tree that was active when an error occurred,
|
|
183
|
-
* including component names and source locations from stack frames. This
|
|
184
|
-
* gives developers visibility into which server components were rendering
|
|
185
|
-
* without exposing source code.
|
|
186
|
-
*
|
|
187
|
-
* Returns an empty string if no components are provided.
|
|
188
|
-
*/
|
|
189
|
-
export function formatRscDebugContext(components: RscDebugComponentInfo[]): string {
|
|
190
|
-
if (!components || components.length === 0) return '';
|
|
191
|
-
|
|
192
|
-
// Deduplicate by name — the debug channel may emit the same component
|
|
193
|
-
// multiple times (e.g., when re-rendered or when multiple instances exist).
|
|
194
|
-
const seen = new Set<string>();
|
|
195
|
-
const unique: RscDebugComponentInfo[] = [];
|
|
196
|
-
for (const c of components) {
|
|
197
|
-
if (!seen.has(c.name)) {
|
|
198
|
-
seen.add(c.name);
|
|
199
|
-
unique.push(c);
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
const lines: string[] = ['Server Component Tree:'];
|
|
204
|
-
for (let i = 0; i < unique.length; i++) {
|
|
205
|
-
const c = unique[i]!;
|
|
206
|
-
const indent = ' '.repeat(i + 1);
|
|
207
|
-
const envLabel = c.env ? ` [${c.env}]` : '';
|
|
208
|
-
|
|
209
|
-
// Extract file location from stack frames if available
|
|
210
|
-
let locStr = '';
|
|
211
|
-
if (c.stack && c.stack.length > 0) {
|
|
212
|
-
const frame = c.stack[0] as [string, string, number, number] | undefined;
|
|
213
|
-
if (Array.isArray(frame) && frame.length >= 3) {
|
|
214
|
-
locStr = ` (${frame[1]}:${frame[2]})`;
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
lines.push(`${indent}${c.name}${envLabel}${locStr}`);
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
return lines.join('\n');
|
|
222
|
-
}
|
|
223
|
-
|
|
224
167
|
// ─── Module Runner Offset ───────────────────────────────────────────────────
|
|
225
168
|
|
|
226
169
|
/**
|
|
@@ -422,8 +365,7 @@ export function sendErrorToOverlay(
|
|
|
422
365
|
server: ViteDevServer,
|
|
423
366
|
error: Error,
|
|
424
367
|
phase: ErrorPhase,
|
|
425
|
-
projectRoot: string
|
|
426
|
-
rscDebugComponents?: RscDebugComponentInfo[]
|
|
368
|
+
projectRoot: string
|
|
427
369
|
): void {
|
|
428
370
|
// Fix stack trace to use source-mapped positions.
|
|
429
371
|
// Use the RSC environment's module graph for render/access/middleware errors
|
|
@@ -445,12 +387,6 @@ export function sendErrorToOverlay(
|
|
|
445
387
|
message = `${error.message}\n\nComponent Stack:\n${componentStack.trim()}`;
|
|
446
388
|
}
|
|
447
389
|
|
|
448
|
-
// Append RSC debug context if available (dev mode only)
|
|
449
|
-
const debugContext = formatRscDebugContext(rscDebugComponents ?? []);
|
|
450
|
-
if (debugContext) {
|
|
451
|
-
message = `${message}\n\n${debugContext}`;
|
|
452
|
-
}
|
|
453
|
-
|
|
454
390
|
// Send to browser via Vite's error overlay protocol
|
|
455
391
|
try {
|
|
456
392
|
server.hot.send({
|
|
@@ -29,7 +29,6 @@ import {
|
|
|
29
29
|
import { generateDevErrorPage } from '../dev-tools/error-page.ts';
|
|
30
30
|
import { extractHmrOptions, type DevErrorHmrOptions } from '../dev-tools/dev-page-shell.ts';
|
|
31
31
|
import { addVirtualModuleContext } from '../config-validation.ts';
|
|
32
|
-
import { DebugChannelRegistry, DEBUG_SUBSCRIBE_EVENT } from '../dev-tools/debug-channel.ts';
|
|
33
32
|
import { registerDevDiscovery } from './dev-discovery.ts';
|
|
34
33
|
import {
|
|
35
34
|
createGraphEndpointMiddleware,
|
|
@@ -262,26 +261,6 @@ function createTimberMiddleware(server: ViteDevServer, ctx: PluginContext) {
|
|
|
262
261
|
const hmrOptions = extractHmrOptions(server.config);
|
|
263
262
|
|
|
264
263
|
// Debug channel registry: buffers RSC debug rows per request and replays
|
|
265
|
-
// them when the browser subscribes via HMR. Created ONCE per server, not
|
|
266
|
-
// per request — the middleware below re-imports the RSC entry on every
|
|
267
|
-
// request, and a per-request registry + listener would leak a stale
|
|
268
|
-
// listener per request. Each stale listener answers a subscribe with
|
|
269
|
-
// `done: true` (unknown ID), closing the browser's debug readable before
|
|
270
|
-
// the real replay arrives, which blocks Flight's root on unresolved owner
|
|
271
|
-
// refs and prevents hydration entirely. See TIM-1507.
|
|
272
|
-
const debugRegistry = new DebugChannelRegistry();
|
|
273
|
-
server.hot.on(
|
|
274
|
-
DEBUG_SUBSCRIBE_EVENT,
|
|
275
|
-
(data: unknown, client: { send: (event: string, payload: unknown) => void }) => {
|
|
276
|
-
const msg = data as { id?: string };
|
|
277
|
-
if (msg?.id) {
|
|
278
|
-
debugRegistry.subscribe(msg.id, (event, payload) => {
|
|
279
|
-
client.send(event, payload);
|
|
280
|
-
});
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
);
|
|
284
|
-
|
|
285
264
|
return async (req: IncomingMessage, res: ServerResponse, next: () => void): Promise<void> => {
|
|
286
265
|
const url = req.url;
|
|
287
266
|
if (!url) {
|
|
@@ -340,42 +319,22 @@ function createTimberMiddleware(server: ViteDevServer, ctx: PluginContext) {
|
|
|
340
319
|
|
|
341
320
|
// Wire pipeline errors into the browser error overlay.
|
|
342
321
|
// Set devPipelineErrorHandler directly on the pipeline config —
|
|
343
|
-
// no module-level singleton.
|
|
344
|
-
// component data (component names, environments, stack frames) from
|
|
345
|
-
// the Flight debug channel for render errors.
|
|
322
|
+
// no module-level singleton.
|
|
346
323
|
const config = rscModule.pipelineConfig as
|
|
347
324
|
| {
|
|
348
|
-
devPipelineErrorHandler?: (
|
|
349
|
-
error: Error,
|
|
350
|
-
phase: string,
|
|
351
|
-
debugComponents?: Array<{
|
|
352
|
-
name: string;
|
|
353
|
-
env: string | null;
|
|
354
|
-
stack: unknown[] | null;
|
|
355
|
-
}>
|
|
356
|
-
) => void;
|
|
325
|
+
devPipelineErrorHandler?: (error: Error, phase: string) => void;
|
|
357
326
|
devHmrOptions?: DevErrorHmrOptions;
|
|
358
|
-
devDebugRegistry?: DebugChannelRegistry;
|
|
359
327
|
}
|
|
360
328
|
| undefined;
|
|
361
329
|
if (config) {
|
|
362
|
-
config.devPipelineErrorHandler = (error
|
|
363
|
-
sendErrorToOverlay(
|
|
364
|
-
server,
|
|
365
|
-
error,
|
|
366
|
-
classifyErrorPhase(error, projectRoot),
|
|
367
|
-
projectRoot,
|
|
368
|
-
debugComponents
|
|
369
|
-
);
|
|
330
|
+
config.devPipelineErrorHandler = (error) => {
|
|
331
|
+
sendErrorToOverlay(server, error, classifyErrorPhase(error, projectRoot), projectRoot);
|
|
370
332
|
};
|
|
371
333
|
// Plumb the resolved HMR options into the RSC environment. The RSC
|
|
372
334
|
// entry can't read the Vite server config (separate module graph),
|
|
373
335
|
// but its dev 404 page and fallback error page need the HMR endpoint
|
|
374
336
|
// (including Vite 8's required WS token) for auto-reload (TIM-1067).
|
|
375
337
|
config.devHmrOptions = hmrOptions;
|
|
376
|
-
// Server-lifetime debug channel registry (created above). Re-assigned
|
|
377
|
-
// per request because the RSC module may be re-evaluated on HMR.
|
|
378
|
-
config.devDebugRegistry = debugRegistry;
|
|
379
338
|
}
|
|
380
339
|
|
|
381
340
|
// Wire source-map handler so error pages show original positions.
|
|
@@ -35,8 +35,6 @@ import '#server-only-guard';
|
|
|
35
35
|
import type { CoercedParams } from '../shared/param-value.ts';
|
|
36
36
|
import type { SlotParamsRecord } from '../shared/slot-params.ts';
|
|
37
37
|
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
38
|
-
import type { DebugComponentEntry } from './rsc-entry/helpers.ts';
|
|
39
|
-
|
|
40
38
|
/**
|
|
41
39
|
* Return a process-wide singleton `AsyncLocalStorage` keyed by `symbol`.
|
|
42
40
|
*
|
|
@@ -136,12 +134,6 @@ export interface RequestContextStore {
|
|
|
136
134
|
* See TIM-666, TIM-1495.
|
|
137
135
|
*/
|
|
138
136
|
denyStatus?: number;
|
|
139
|
-
/**
|
|
140
|
-
* Dev-only: getter for the current request's RSC debug components.
|
|
141
|
-
* Set by renderRoute() so onPipelineError can include component tree
|
|
142
|
-
* context for render-phase errors without module-level shared state.
|
|
143
|
-
*/
|
|
144
|
-
debugComponentsGetter?: () => DebugComponentEntry[];
|
|
145
137
|
/**
|
|
146
138
|
* Index of the first segment whose AccessGate denied during render.
|
|
147
139
|
* Recorded by AccessGate when it catches a DenySignal so post-render
|
|
@@ -48,9 +48,6 @@ export interface LayoutEntry {
|
|
|
48
48
|
segment: ManifestSegmentNode;
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
/** Callback to create a debug channel sink for RSC rendering. */
|
|
52
|
-
export type DebugChannelFactory = () => { writable: WritableStream } | undefined;
|
|
53
|
-
|
|
54
51
|
/** Callback to pass RSC stream to SSR for HTML rendering. */
|
|
55
52
|
export type CallSsrFn = (
|
|
56
53
|
rscStream: ReadableStream<Uint8Array>,
|
|
@@ -113,7 +110,6 @@ export async function renderDenyPage(
|
|
|
113
110
|
match: RouteMatch,
|
|
114
111
|
responseHeaders: Headers,
|
|
115
112
|
clientBootstrap: ClientBootstrapConfig,
|
|
116
|
-
createDebugChannelSink: DebugChannelFactory,
|
|
117
113
|
callSsr: CallSsrFn,
|
|
118
114
|
defaultPage?: DefaultPageRenderer,
|
|
119
115
|
firstDeniedIndex = Infinity
|
|
@@ -215,7 +211,6 @@ export async function renderDenyPage(
|
|
|
215
211
|
onError(error: unknown) {
|
|
216
212
|
logRenderError({ method: req.method, path: new URL(req.url).pathname, error });
|
|
217
213
|
},
|
|
218
|
-
debugChannel: createDebugChannelSink(),
|
|
219
214
|
});
|
|
220
215
|
|
|
221
216
|
const [ssrStream, inlineStream] = teeWithErrorPropagation(rscStream);
|
|
@@ -279,7 +274,6 @@ export async function renderDenyPageAsRsc(
|
|
|
279
274
|
layoutComponents: LayoutEntry[],
|
|
280
275
|
req: Request,
|
|
281
276
|
responseHeaders: Headers,
|
|
282
|
-
createDebugChannelSink: DebugChannelFactory,
|
|
283
277
|
firstDeniedIndex = Infinity
|
|
284
278
|
): Promise<Response> {
|
|
285
279
|
const maxIndex = firstDeniedIndex < Infinity ? firstDeniedIndex : undefined;
|
|
@@ -318,7 +312,6 @@ export async function renderDenyPageAsRsc(
|
|
|
318
312
|
onError(error: unknown) {
|
|
319
313
|
console.error('[timber] Error page RSC render error:', error);
|
|
320
314
|
},
|
|
321
|
-
debugChannel: createDebugChannelSink(),
|
|
322
315
|
});
|
|
323
316
|
|
|
324
317
|
responseHeaders.set('content-type', `${RSC_CONTENT_TYPE}; charset=utf-8`);
|
package/src/server/pipeline.ts
CHANGED
|
@@ -197,11 +197,7 @@ export interface PipelineConfig {
|
|
|
197
197
|
*
|
|
198
198
|
* Undefined in production — zero overhead.
|
|
199
199
|
*/
|
|
200
|
-
devPipelineErrorHandler?: (
|
|
201
|
-
error: Error,
|
|
202
|
-
phase: string,
|
|
203
|
-
debugComponents?: Array<{ name: string; env: string | null; stack: unknown[] | null }>
|
|
204
|
-
) => void;
|
|
200
|
+
devPipelineErrorHandler?: (error: Error, phase: string) => void;
|
|
205
201
|
|
|
206
202
|
/**
|
|
207
203
|
* HMR connection options for dev-only HTML pages (dev 404 page, fallback
|
|
@@ -215,15 +211,6 @@ export interface PipelineConfig {
|
|
|
215
211
|
*/
|
|
216
212
|
devHmrOptions?: import('../dev-tools/dev-page-shell.ts').DevErrorHmrOptions;
|
|
217
213
|
|
|
218
|
-
/**
|
|
219
|
-
* Dev debug channel transport — sends RSC Flight debug data to the
|
|
220
|
-
* browser via HMR WebSocket for owner stack resolution in console
|
|
221
|
-
* warnings. Set by the dev server. Undefined in production.
|
|
222
|
-
*
|
|
223
|
-
* See TIM-1507, design/13-security.md §7.
|
|
224
|
-
*/
|
|
225
|
-
devDebugRegistry?: import('../dev-tools/debug-channel.ts').DebugChannelRegistry;
|
|
226
|
-
|
|
227
214
|
/**
|
|
228
215
|
* Fallback error renderer — called when a catastrophic error escapes the
|
|
229
216
|
* render phase. Produces an HTML Response instead of a bare empty 500.
|